ecm_cms 0.0.1.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +55 -0
  3. data/Rakefile +27 -0
  4. data/app/assets/stylesheets/ecm_cms.css.less +3 -0
  5. data/app/controllers/ecm/cms/page_controller.rb +11 -0
  6. data/app/helpers/ecm/cms_helper.rb +42 -0
  7. data/app/models/ecm/cms.rb +5 -0
  8. data/app/models/ecm/cms/folder.rb +31 -0
  9. data/app/models/ecm/cms/navigation.rb +24 -0
  10. data/app/models/ecm/cms/navigation_item.rb +93 -0
  11. data/app/models/ecm/cms/page.rb +42 -0
  12. data/app/models/ecm/cms/partial.rb +31 -0
  13. data/app/models/ecm/cms/template.rb +31 -0
  14. data/config/locales/ecm.cms.de.yml +17 -0
  15. data/config/locales/ecm.cms.en.yml +17 -0
  16. data/config/locales/ecm.cms.navigation.de.yml +16 -0
  17. data/config/locales/ecm.cms.navigation.en.yml +16 -0
  18. data/config/locales/ecm.cms.navigation_item.de.yml +23 -0
  19. data/config/locales/ecm.cms.navigation_item.en.yml +23 -0
  20. data/config/locales/ecm.cms.page.de.yml +26 -0
  21. data/config/locales/ecm.cms.page.en.yml +26 -0
  22. data/config/locales/ecm.cms.partial.de.yml +22 -0
  23. data/config/locales/ecm.cms.partial.en.yml +22 -0
  24. data/config/locales/ecm.cms.template.de.yml +22 -0
  25. data/config/locales/ecm.cms.template.en.yml +22 -0
  26. data/db/migrate/001_create_ecm_cms_folders.rb +21 -0
  27. data/db/migrate/002_create_ecm_cms_pages.rb +19 -0
  28. data/db/migrate/003_create_ecm_cms_templates.rb +18 -0
  29. data/db/migrate/004_create_ecm_cms_partials.rb +19 -0
  30. data/db/migrate/005_create_ecm_cms_navigations.rb +13 -0
  31. data/db/migrate/006_create_ecm_cms_navigation_items.rb +28 -0
  32. data/lib/ecm/cms/action_view/template/handlers/textile.rb +18 -0
  33. data/lib/ecm/cms/action_view/template_patch.rb +19 -0
  34. data/lib/ecm/cms/action_view/template_renderer_patch.rb +30 -0
  35. data/lib/ecm/cms/active_admin/ecm_cms_navigation_items.rb +45 -0
  36. data/lib/ecm/cms/active_admin/ecm_cms_navigations.rb +61 -0
  37. data/lib/ecm/cms/active_admin/ecm_cms_pages.rb +70 -0
  38. data/lib/ecm/cms/active_admin/ecm_cms_partials.rb +47 -0
  39. data/lib/ecm/cms/active_admin/ecm_cms_templates.rb +46 -0
  40. data/lib/ecm/cms/configuration.rb +22 -0
  41. data/lib/ecm/cms/database_resolver.rb +101 -0
  42. data/lib/ecm/cms/database_template.rb +67 -0
  43. data/lib/ecm/cms/engine.rb +22 -0
  44. data/lib/ecm/cms/resolvers/ecm/cms/page_resolver.rb +37 -0
  45. data/lib/ecm/cms/resolvers/ecm/cms/partial_resolver.rb +30 -0
  46. data/lib/ecm/cms/resolvers/ecm/cms/template_resolver.rb +30 -0
  47. data/lib/ecm/cms/routing.rb +13 -0
  48. data/lib/ecm/cms/version.rb +5 -0
  49. data/lib/ecm_cms.rb +30 -0
  50. data/lib/generators/ecm/cms/install/install_generator.rb +15 -0
  51. data/lib/generators/ecm/cms/install/templates/ecm_cms.rb +7 -0
  52. data/lib/generators/ecm/cms/locales/locales_generator.rb +32 -0
  53. data/lib/rails_tools/i18n_controller.rb +24 -0
  54. data/lib/tasks/ecm_cms_tasks.rake +171 -0
  55. metadata +463 -0
@@ -0,0 +1,17 @@
1
+ en:
2
+ ecm:
3
+ cms:
4
+ active_admin:
5
+ menu: CMS
6
+ navigation:
7
+ messages:
8
+ empty: Navigation %{name} (%{lang}) is empty
9
+ not_found: Could not find navigation %{name} (%{lang})
10
+ resources:
11
+ ecm_cms_folders: folders
12
+ ecm_cms_navigations: navigations
13
+ ecm_cms_navigation_items: navigation_items
14
+ ecm_cms_pages: pages
15
+ ecm_cms_partials: partials
16
+ ecm_cms_templates: templates
17
+
@@ -0,0 +1,16 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/navigation:
6
+ one: Navigation
7
+ other: Navigationen
8
+ attributes:
9
+ ecm/cms/navigation:
10
+ created_at: Erstellt am
11
+ ecm_cms_navigation_items: Navigationseinträge
12
+ locale: Sprache
13
+ name: Name
14
+ slug: Freundliche ID
15
+ updated_at: Aktualisiert am
16
+
@@ -0,0 +1,16 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/navigation:
6
+ one: navigation
7
+ other: navigations
8
+ attributes:
9
+ ecm/cms/navigation:
10
+ created_at: created at
11
+ ecm_cms_navigation_items: navigation items
12
+ locale: language
13
+ name: name
14
+ slug: friendly id
15
+ updated_at: updated at
16
+
@@ -0,0 +1,23 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/navigation_item:
6
+ one: Navigationseintrag
7
+ other: Navigationseinträge
8
+ attributes:
9
+ ecm/cms/navigation_item:
10
+ created_at: Erstellt am
11
+ depth: Baumtiefe
12
+ ecm_cms_navigation: Navigation
13
+ ecm_cms_page: Seite
14
+ key: Schlüssel
15
+ lft: Links
16
+ name: Name
17
+ options: Optionen
18
+ parent: Untereintrag von
19
+ rgt: Rechts
20
+ slug: Freundliche ID
21
+ updated_at: Aktualisiert am
22
+ url: Ziel-URL
23
+
@@ -0,0 +1,23 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/navigation_item:
6
+ one: navigation item
7
+ other: navigation items
8
+ attributes:
9
+ ecm/cms/navigation_item:
10
+ created_at: created at
11
+ depth: tree depth
12
+ ecm_cms_navigation: navigation
13
+ ecm_cms_page: page
14
+ key: key
15
+ lft: left
16
+ name: name
17
+ options: options
18
+ parent: parent
19
+ rgt: right
20
+ slug: friendly id
21
+ updated_at: updated at
22
+ url: target url
23
+
@@ -0,0 +1,26 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/page:
6
+ one: Seite
7
+ other: Seiten
8
+ attributes:
9
+ ecm/cms/page:
10
+ basename: Name
11
+ body: Inhalt
12
+ created_at: Erstellt am
13
+ ecm_cms_folder_id: Ordner
14
+ ecm_cms_folder: Ordner
15
+ ecm_cms_navigation_items: Verlinkt von
16
+ ecm_cms_navigation_item_ids: Verlinkt von
17
+ filename: Dateiname
18
+ format: Format
19
+ handler: Handler
20
+ layout: Layout
21
+ locale: Sprache
22
+ meta_description: Meta Beschreibung
23
+ pathname: Pfad
24
+ title: Titel
25
+ updated_at: Aktualisiert am
26
+
@@ -0,0 +1,26 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/page:
6
+ one: page
7
+ other: pages
8
+ attributes:
9
+ ecm/cms/page:
10
+ basename: name
11
+ body: body
12
+ created_at: created at
13
+ ecm_cms_folder_id: folder
14
+ ecm_cms_folder: folder
15
+ ecm_cms_navigation_items: navigation items
16
+ ecm_cms_navigation_item_ids: navigation items
17
+ filename: filename
18
+ format: format
19
+ handler: handler
20
+ layout: layout
21
+ locale: language
22
+ meta_description: meta description
23
+ pathname: path
24
+ title: title
25
+ updated_at: updated at
26
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/partial:
6
+ one: Fragment
7
+ other: Fragmente
8
+ attributes:
9
+ ecm/cms/partial:
10
+ basename: Name
11
+ body: Inhalt
12
+ created_at: Erstellt am
13
+ ecm_cms_folder_id: Ordner
14
+ ecm_cms_folder: Ordner
15
+ filename: Dateiname
16
+ format: Format
17
+ handler: Handler
18
+ layout: Layout
19
+ locale: Sprache
20
+ pathname: Pfad
21
+ updated_at: Aktualisiert am
22
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/partial:
6
+ one: partial
7
+ other: partials
8
+ attributes:
9
+ ecm/cms/partial:
10
+ basename: name
11
+ body: body
12
+ created_at: created at
13
+ ecm_cms_folder_id: folder
14
+ ecm_cms_folder: folder
15
+ filename: filename
16
+ format: format
17
+ handler: handler
18
+ layout: layout
19
+ locale: language
20
+ pathname: path
21
+ updated_at: updated at
22
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ de:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/template:
6
+ one: Vorlage
7
+ other: Vorlagen
8
+ attributes:
9
+ ecm/cms/template:
10
+ basename: Name
11
+ body: Inhalt
12
+ created_at: Erstellt am
13
+ ecm_cms_folder_id: Ordner
14
+ ecm_cms_folder: Ordner
15
+ filename: Dateiname
16
+ format: Format
17
+ handler: Handler
18
+ layout: Layout
19
+ locale: Sprache
20
+ pathname: Pfad
21
+ updated_at: Aktualsiert am
22
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ models:
5
+ ecm/cms/template:
6
+ one: template
7
+ other: templates
8
+ attributes:
9
+ ecm/cms/template:
10
+ basename: name
11
+ body: body
12
+ created_at: created at
13
+ ecm_cms_folder_id: folder
14
+ ecm_cms_folder: folder
15
+ filename: filename
16
+ format: format
17
+ handler: handler
18
+ layout: layout
19
+ locale: language
20
+ pathname: path
21
+ updated_at: updated at
22
+
@@ -0,0 +1,21 @@
1
+ class CreateEcmCmsFolders < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_cms_folders do |t|
4
+ t.string :basename
5
+ t.string :pathname
6
+
7
+ # associations
8
+ t.integer :children_count, :default => 0, :null => false
9
+ t.integer :ecm_cms_templates_count, :default => 0, :null => false
10
+
11
+ # awesome nested set
12
+ t.references :parent
13
+ t.integer :lft
14
+ t.integer :rgt
15
+ t.integer :depth
16
+
17
+ t.timestamps
18
+ end
19
+ add_index :ecm_cms_folders, :parent_id
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ class CreateEcmCmsPages < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_cms_pages do |t|
4
+ t.string :basename
5
+ t.string :pathname
6
+ t.string :title
7
+ t.text :meta_description
8
+ t.text :body
9
+ t.string :layout
10
+ t.string :locale
11
+ t.string :format
12
+ t.string :handler
13
+ t.references :ecm_cms_folder
14
+
15
+ t.timestamps
16
+ end
17
+ add_index :ecm_cms_pages, :ecm_cms_folder_id
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ class CreateEcmCmsTemplates < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_cms_templates do |t|
4
+ t.string :basename
5
+ t.string :pathname
6
+ t.text :body
7
+ t.string :locale
8
+ t.string :format
9
+ t.string :handler
10
+
11
+ # associations
12
+ t.references :ecm_cms_folder
13
+
14
+ t.timestamps
15
+ end
16
+ add_index :ecm_cms_templates, :ecm_cms_folder_id
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ class CreateEcmCmsPartials < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_cms_partials do |t|
4
+ t.string :basename
5
+ t.string :pathname
6
+ t.text :body
7
+ t.string :layout
8
+ t.string :locale
9
+ t.string :format
10
+ t.string :handler
11
+
12
+ # associations
13
+ t.references :ecm_cms_folder
14
+
15
+ t.timestamps
16
+ end
17
+ add_index :ecm_cms_partials, :ecm_cms_folder_id
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEcmCmsNavigations < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_cms_navigations do |t|
4
+ t.string :locale
5
+ t.string :name
6
+
7
+ # friendly id
8
+ t.string :slug
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ class CreateEcmCmsNavigationItems < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_cms_navigation_items do |t|
4
+ t.string :name
5
+ t.string :url
6
+ t.string :key
7
+ t.string :options
8
+
9
+ # associations
10
+ t.references :ecm_cms_navigation
11
+ t.references :ecm_cms_page
12
+
13
+ # awesome nested set
14
+ t.references :parent
15
+ t.integer :children_count, :default => 0, :null => false
16
+ t.integer :lft
17
+ t.integer :rgt
18
+ t.integer :depth
19
+
20
+ # friendly id
21
+ t.string :slug
22
+
23
+ t.timestamps
24
+ end
25
+ add_index :ecm_cms_navigation_items, :ecm_cms_navigation_id
26
+ add_index :ecm_cms_navigation_items, :parent_id
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ module ActionView::Template::Handlers
2
+ class Textile
3
+
4
+ class_attribute :default_format
5
+ self.default_format = Mime::HTML
6
+
7
+ def erb_handler
8
+ @@erb_handler ||= ActionView::Template.registered_template_handler(:erb)
9
+ end
10
+
11
+ def call(template)
12
+ compiled_source = erb_handler.call(template)
13
+ "RedCloth.new(begin;#{compiled_source};end).to_html.html_safe"
14
+ end
15
+
16
+ end
17
+ end
18
+
@@ -0,0 +1,19 @@
1
+ module ActionView
2
+ module TemplatePatch
3
+ def self.included base
4
+ base.class_eval do
5
+ attr_accessor :layout
6
+
7
+ alias_method :original_initialize, :initialize
8
+
9
+ def initialize(source, identifier, handler, details)
10
+ @layout = details[:layout] if details.has_key?(:layout)
11
+ original_initialize(source, identifier, handler, details)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ ActionView::Template.send(:include, ActionView::TemplatePatch)
19
+
@@ -0,0 +1,30 @@
1
+ module ActionView
2
+ module TemplateRendererPatch
3
+ def self.included base
4
+ base.class_eval do
5
+ alias_method :original_render, :render
6
+
7
+ def render(context, options)
8
+ @view = context
9
+ @details = extract_details(options)
10
+ extract_format(options[:file] || options[:template], @details)
11
+ template = determine_template(options)
12
+ context = @lookup_context
13
+
14
+ unless context.rendered_format
15
+ context.formats = template.formats unless template.formats.empty?
16
+ context.rendered_format = context.formats.first
17
+ end
18
+
19
+ layout = template.layout ||= options[:layout]
20
+
21
+ render_template(template, layout, options[:locals])
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+
29
+ ActionView::TemplateRenderer.send(:include, ActionView::TemplateRendererPatch)
30
+