ecm_cms2 1.1.1 → 2.0.2

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +19 -1
  3. data/{lib/ecm/cms/active_admin → app/admin}/ecm_cms_content_box.rb +5 -5
  4. data/{lib/ecm/cms/active_admin → app/admin}/ecm_cms_navigation_items.rb +6 -6
  5. data/{lib/ecm/cms/active_admin → app/admin}/ecm_cms_navigations.rb +11 -12
  6. data/{lib/ecm/cms/active_admin → app/admin}/ecm_cms_pages.rb +20 -22
  7. data/{lib/ecm/cms/active_admin → app/admin}/ecm_cms_partials.rb +6 -7
  8. data/{lib/ecm/cms/active_admin → app/admin}/ecm_cms_templates.rb +7 -8
  9. data/app/controllers/ecm/cms/page_controller.rb +13 -8
  10. data/app/helpers/ecm/cms_helper.rb +8 -4
  11. data/app/models/concerns/model/ecm/cms/navigation_item/properties_concern.rb +25 -0
  12. data/app/models/ecm/cms/content_box.rb +5 -8
  13. data/app/models/ecm/cms/folder.rb +11 -12
  14. data/app/models/ecm/cms/navigation.rb +10 -9
  15. data/app/models/ecm/cms/navigation_item.rb +21 -20
  16. data/app/models/ecm/cms/page/content_block.rb +7 -8
  17. data/app/models/ecm/cms/page.rb +11 -11
  18. data/app/models/ecm/cms/partial.rb +2 -3
  19. data/app/models/ecm/cms/template.rb +4 -5
  20. data/app/services/ecm/cms/add_homepages_service.rb +61 -0
  21. data/app/services/ecm/cms/import_partials_service.rb +37 -32
  22. data/config/locales/ecm.cms.de.yml +3 -0
  23. data/config/locales/ecm.cms.navigation.de.yml +1 -0
  24. data/config/locales/ecm.cms.navigation.en.yml +1 -0
  25. data/config/locales/ecm.cms.page.de.yml +1 -0
  26. data/config/locales/ecm.cms.page.en.yml +1 -0
  27. data/db/migrate/001_create_ecm_cms_folders.rb +2 -2
  28. data/db/migrate/004_create_ecm_cms_partials.rb +1 -1
  29. data/db/migrate/006_create_ecm_cms_navigation_items.rb +1 -1
  30. data/lib/ecm/cms/action_view/template/handlers/textile.rb +0 -3
  31. data/lib/ecm/cms/action_view/template_patch.rb +2 -3
  32. data/lib/ecm/cms/action_view/template_renderer_patch.rb +4 -6
  33. data/lib/ecm/cms/configuration.rb +1 -1
  34. data/lib/ecm/cms/controller_extensions/page_resolver.rb +0 -1
  35. data/lib/ecm/cms/controller_extensions/partial_resolver.rb +0 -1
  36. data/lib/ecm/cms/controller_extensions/template_resolver.rb +0 -1
  37. data/lib/ecm/cms/database_resolver.rb +21 -22
  38. data/lib/ecm/cms/database_template.rb +17 -18
  39. data/lib/ecm/cms/engine.rb +5 -7
  40. data/lib/ecm/cms/importers/navigation.rb +2 -5
  41. data/lib/ecm/cms/importers/navigation_item.rb +6 -9
  42. data/lib/ecm/cms/importers/page.rb +4 -7
  43. data/lib/ecm/cms/resolvers/ecm/cms/page_resolver.rb +3 -6
  44. data/lib/ecm/cms/resolvers/ecm/cms/partial_resolver.rb +0 -1
  45. data/lib/ecm/cms/resolvers/ecm/cms/template_resolver.rb +0 -1
  46. data/lib/ecm/cms/routing.rb +2 -3
  47. data/lib/ecm/cms/version.rb +1 -1
  48. data/lib/ecm_cms2.rb +1 -2
  49. data/lib/generators/ecm/cms/install/install_generator.rb +6 -6
  50. data/lib/generators/ecm/cms/install/templates/ecm_cms.rb +6 -6
  51. data/lib/generators/ecm/cms/locales/locales_generator.rb +19 -18
  52. data/lib/tasks/ecm_cms_tasks.rake +2 -3
  53. metadata +33 -25
  54. data/app/models/concerns/ecm/cms/navigation_item/properties.rb +0 -29
@@ -1,19 +1,19 @@
1
1
  module Ecm::Cms
2
2
  class Page::ContentBlock < ActiveRecord::Base
3
3
  # associations
4
- belongs_to :ecm_cms_content_box, :class_name => 'ContentBox',
5
- :foreign_key => 'ecm_cms_content_box_id'
6
- belongs_to :ecm_cms_page, :class_name => 'Ecm::Cms::Page',
7
- :foreign_key => 'ecm_cms_page_id'
4
+ belongs_to :ecm_cms_content_box, class_name: 'ContentBox',
5
+ foreign_key: 'ecm_cms_content_box_id'
6
+ belongs_to :ecm_cms_page, class_name: 'Ecm::Cms::Page',
7
+ foreign_key: 'ecm_cms_page_id'
8
8
 
9
9
  # attributes
10
10
  attr_accessible(:body,
11
11
  :ecm_cms_content_box_id) if Rails.version < '4.0.0'
12
12
 
13
13
  # validations
14
- validates :body, :presence => true
15
- validates :ecm_cms_content_box, :presence => true
16
- validates :ecm_cms_page, :presence => true
14
+ validates :body, presence: true
15
+ validates :ecm_cms_content_box, presence: true
16
+ validates :ecm_cms_page, presence: true
17
17
  # validates :ecm_cms_page, :existence => true
18
18
 
19
19
  def content_box_name
@@ -21,4 +21,3 @@ module Ecm::Cms
21
21
  end
22
22
  end
23
23
  end
24
-
@@ -5,29 +5,29 @@ module Ecm::Cms
5
5
 
6
6
  # associations
7
7
  has_many :ecm_cms_navigation_items,
8
- :class_name => 'NavigationItem',
9
- :dependent => :nullify,
10
- :foreign_key => 'ecm_cms_page_id'
8
+ class_name: 'NavigationItem',
9
+ dependent: :nullify,
10
+ foreign_key: 'ecm_cms_page_id'
11
11
  has_many :ecm_cms_page_content_blocks,
12
- :class_name => 'Ecm::Cms::Page::ContentBlock',
13
- :dependent => :destroy,
14
- :foreign_key => 'ecm_cms_page_id',
15
- :inverse_of => :ecm_cms_page
12
+ class_name: 'Ecm::Cms::Page::ContentBlock',
13
+ dependent: :destroy,
14
+ foreign_key: 'ecm_cms_page_id',
15
+ inverse_of: :ecm_cms_page
16
16
 
17
- accepts_nested_attributes_for :ecm_cms_page_content_blocks, :allow_destroy => true
17
+ accepts_nested_attributes_for :ecm_cms_page_content_blocks, allow_destroy: true
18
18
 
19
19
  # callbacks
20
20
  after_save :touch_navigation_items # , :if => Proc.new { |page| page.locale_changed? || page.pathname_changed? || page.basename_changed? }
21
21
 
22
22
  # validations
23
- validates :title, :presence => true
23
+ validates :title, presence: true
24
24
 
25
25
  def home_page?
26
- return self.pathname == '/' && self.basename == 'home'
26
+ pathname == '/' && basename == 'home'
27
27
  end
28
28
 
29
29
  def touch_navigation_items
30
- self.ecm_cms_navigation_items.map(&:update_url_form_page!)
30
+ ecm_cms_navigation_items.map(&:update_url_form_page!)
31
31
  end
32
32
  end
33
33
  end
@@ -5,12 +5,11 @@ class Ecm::Cms::Partial < ActiveRecord::Base
5
5
  include Ecm::Cms::DatabaseTemplate
6
6
 
7
7
  # callbacks
8
- before_validation :ensure_basename_starts_with_underscore, :if => Proc.new { |t| t.basename.present? }
8
+ before_validation :ensure_basename_starts_with_underscore, if: proc { |t| t.basename.present? }
9
9
 
10
10
  private
11
11
 
12
12
  def ensure_basename_starts_with_underscore
13
- self.basename.insert(0, '_') unless self.basename.start_with?('_')
13
+ basename.insert(0, '_') unless basename.start_with?('_')
14
14
  end
15
15
  end
16
-
@@ -4,16 +4,15 @@ class Ecm::Cms::Template < ActiveRecord::Base
4
4
 
5
5
  # associations
6
6
  belongs_to :ecm_cms_folder,
7
- :class_name => 'Ecm::Cms::Folder',
8
- :foreign_key => 'ecm_cms_folder_id'
7
+ class_name: 'Ecm::Cms::Folder',
8
+ foreign_key: 'ecm_cms_folder_id'
9
9
 
10
10
  # callbacks
11
- before_validation :ensure_basename_starts_without_underscore, :if => Proc.new { |t| t.basename.present? }
11
+ before_validation :ensure_basename_starts_without_underscore, if: proc { |t| t.basename.present? }
12
12
 
13
13
  private
14
14
 
15
15
  def ensure_basename_starts_without_underscore
16
- self.basename.slice!(0) if self.basename.start_with?('_')
16
+ basename.slice!(0) if basename.start_with?('_')
17
17
  end
18
18
  end
19
-
@@ -0,0 +1,61 @@
1
+ module Ecm::Cms
2
+ class AddHomepagesService < Itsf::Services::V2::Service::Base
3
+ attr_accessor :locales
4
+
5
+ validates :locales, presence: true
6
+
7
+ def initialize(attributes = {})
8
+ attributes.reverse_merge!({ locales: I18n.available_locales })
9
+ attributes[:locales].try(:reject!, &:blank?)
10
+
11
+ super(attributes)
12
+
13
+ @all_pages = []
14
+ @already_existent_pages = []
15
+ @failed_pages = []
16
+ @created_pages = []
17
+ end
18
+
19
+ def do_work
20
+ say "Environment: #{Rails.env}"
21
+ respond unless valid?
22
+ create_homepages
23
+ warn("Skipped #{@already_existent_pages.size} already existent pages for locales: #{@already_existent_pages.map(&:locale).join(', ')}", indent: 1) if @already_existent_pages.any?
24
+ info("Added #{@created_pages.size} new home pages for locales: #{@created_pages.map(&:locale).join(', ')}", indent: 1)
25
+ warn("Failed adding #{@failed_pages.size} new home pages for locales: #{@failed_pages.map(&:locale).join(', ')}", indent: 1) if @failed_pages.any?
26
+ respond
27
+ end
28
+
29
+ private
30
+
31
+ def create_homepages
32
+ @all_pages = @locales.collect do |locale|
33
+ say "Adding homepage for locale #{locale}", indent: 1
34
+ page = Ecm::Cms::Page.where(locale: locale, pathname: '/', basename: 'home', handler: 'textile').first_or_initialize
35
+ unless page.new_record?
36
+ @already_existent_pages << page
37
+ warn "already exists", indent: 2
38
+ next page
39
+ end
40
+ page.tap do |page|
41
+ page.title = "Homepage (#{locale})"
42
+ page.meta_description = 'home'
43
+ page.body = "h1. Homepage (#{locale})"
44
+ page.pathname = '/'
45
+ page.basename = 'home'
46
+ page.locale = locale
47
+ page.handler = 'textile'
48
+ end
49
+ if page.save
50
+ @created_pages << page
51
+ info "done", indent: 1
52
+ else
53
+ @failed_pages << page
54
+ errors << page.errors
55
+ warn "could not save page. errors: #{page.errors.full_messages.to_sentence}"
56
+ end
57
+ page
58
+ end
59
+ end
60
+ end
61
+ end
@@ -1,6 +1,5 @@
1
1
  module Ecm::Cms
2
- class ImportPartialsService
3
-
2
+ class ImportPartialsService < Itsf::Services::V2::Service::Base
4
3
  class PartialInFileSystem
5
4
  def initialize(filename, view_path)
6
5
  @filename = filename
@@ -8,7 +7,7 @@ module Ecm::Cms
8
7
  end
9
8
 
10
9
  def pathname
11
- @pathname ||= File.dirname(relative_filename)
10
+ @pathname ||= "#{File.dirname(relative_filename)}/"
12
11
  end
13
12
 
14
13
  def basename
@@ -19,26 +18,18 @@ module Ecm::Cms
19
18
  locale = File.basename(relative_filename).split('.')[-3]
20
19
  if I18n.available_locales.map(&:to_s).include?(locale)
21
20
  @locale ||= locale
22
- else
23
- nil
24
21
  end
25
22
  end
26
23
 
27
24
  def format
28
25
  format = File.basename(relative_filename).split('.')[-2]
29
- if Mime::SET.symbols.map(&:to_s).include?(format)
30
- @format ||= format
31
- else
32
- nil
33
- end
26
+ @format ||= format if Mime::SET.symbols.map(&:to_s).include?(format)
34
27
  end
35
28
 
36
29
  def handler
37
30
  handler = File.basename(relative_filename).split('.').last
38
31
  if ActionView::Template::Handlers.extensions.map(&:to_s).include?(handler)
39
32
  @handler ||= handler
40
- else
41
- nil
42
33
  end
43
34
  end
44
35
 
@@ -67,38 +58,56 @@ module Ecm::Cms
67
58
  @relative_filename ||= @filename.gsub(view_path.to_s, '')
68
59
  end
69
60
 
70
- def view_path
71
- @view_path
72
- end
61
+ attr_reader :view_path
73
62
  end
74
63
 
75
- def self.call(*args)
76
- new(*args).do_work
77
- end
64
+ attr_accessor :view_path, :force
78
65
 
79
- def initialize(options = {})
80
- options.reverse_merge!({ view_path: Rails.root.join(*%w(app views)) })
81
- @view_path = options[:view_path]
66
+ validates :view_path, presence: true
67
+
68
+ def initialize(attributes = {})
69
+ attributes.reverse_merge!(view_path: Rails.root.join(*%w(app views)), force: false)
70
+ super(attributes)
82
71
  end
83
72
 
84
- def do_work
85
- puts "Environment: #{Rails.env}"
73
+ def do_work
74
+ info "Environment: #{Rails.env}"
75
+ respond unless valid?
86
76
  @partials = load_partials
87
77
  partials_count = @partials.size
88
- puts "Processing #{partials_count} partials in #{view_path}:"
78
+ info "Processing #{partials_count} partials in #{view_path}:"
89
79
  @partials.each_with_index do |partial, index|
90
- puts " (#{index + 1}/#{partials_count}) #{partial.human}"
91
- partial = Partial.new(partial.to_partial_attributes_hash)
80
+ info " (#{index + 1}/#{partials_count}) #{partial.human}"
81
+ attributes_hash = partial.to_partial_attributes_hash
82
+ partial = force ? find_or_initialize_partial(attributes_hash) : initialize_partial(attributes_hash)
83
+ new_record = partial.new_record?
84
+ partial.attributes = attributes_hash
92
85
  if partial.save
93
- puts " Created #{partial.human}"
86
+ info " #{new_record ? 'Created' : 'Updated'} #{partial.human}"
94
87
  else
95
- puts " Could not create #{partial.human}. Errors: #{partial.errors.full_messages}"
88
+ info " Could not #{new_record ? 'create' : 'update'} #{partial.human}. Errors: #{partial.errors.full_messages.to_sentence}"
96
89
  end
97
90
  end
91
+
92
+ respond
93
+ end
94
+
95
+ def force=(value)
96
+ @force = ActiveRecord::Type::Boolean.new.type_cast_from_database(value)
98
97
  end
99
98
 
100
99
  private
101
100
 
101
+ def find_or_initialize_partial(attributes)
102
+ attributes = attributes.dup
103
+ attributes.compact!.delete(:body)
104
+ Partial.where(attributes).first_or_initialize
105
+ end
106
+
107
+ def initialize_partial(attributes)
108
+ Partial.new(attributes)
109
+ end
110
+
102
111
  def load_partials
103
112
  load_partials_absolute.collect { |file| PartialInFileSystem.new(file, view_path) }
104
113
  end
@@ -106,9 +115,5 @@ module Ecm::Cms
106
115
  def load_partials_absolute
107
116
  Dir.glob("#{view_path}/**/_*.*")
108
117
  end
109
-
110
- def view_path
111
- @view_path
112
- end
113
118
  end
114
119
  end
@@ -1,4 +1,7 @@
1
1
  de:
2
+ classes:
3
+ ecm/cms/add_homepages_service: 'Dienst zum hinzufügen von Homepages'
4
+ ecm/cms/import_partials_service: 'Dienst zum importieren von Fragmenten'
2
5
  ecm:
3
6
  cms:
4
7
  active_admin:
@@ -8,6 +8,7 @@ de:
8
8
  ecm/cms/navigation:
9
9
  created_at: Erstellt am
10
10
  ecm_cms_navigation_items: Navigationseinträge
11
+ ecm_cms_navigation_items_count: Navigationseinträge
11
12
  locale: Sprache
12
13
  name: Name
13
14
  slug: Freundliche ID
@@ -8,6 +8,7 @@ en:
8
8
  ecm/cms/navigation:
9
9
  created_at: created at
10
10
  ecm_cms_navigation_items: navigation items
11
+ ecm_cms_navigation_items_count: navigation items
11
12
  locale: language
12
13
  name: name
13
14
  slug: friendly id
@@ -19,6 +19,7 @@ de:
19
19
  layout: Layout
20
20
  locale: Sprache
21
21
  meta_description: Meta Beschreibung
22
+ path_and_filename: Dateipfad
22
23
  pathname: Pfad
23
24
  title: Titel
24
25
  updated_at: Aktualisiert am
@@ -19,6 +19,7 @@ en:
19
19
  layout: layout
20
20
  locale: language
21
21
  meta_description: meta description
22
+ path_and_filename: filepath
22
23
  pathname: path
23
24
  title: title
24
25
  updated_at: updated at
@@ -5,8 +5,8 @@ class CreateEcmCmsFolders < ActiveRecord::Migration
5
5
  t.string :pathname
6
6
 
7
7
  # associations
8
- t.integer :children_count, :default => 0, :null => false
9
- t.integer :ecm_cms_templates_count, :default => 0, :null => false
8
+ t.integer :children_count, default: 0, null: false
9
+ t.integer :ecm_cms_templates_count, default: 0, null: false
10
10
 
11
11
  # awesome nested set
12
12
  t.references :parent
@@ -9,7 +9,7 @@ class CreateEcmCmsPartials < ActiveRecord::Migration
9
9
  t.string :format
10
10
  t.string :handler
11
11
 
12
- # associations
12
+ # associations
13
13
  t.references :ecm_cms_folder
14
14
 
15
15
  t.timestamps
@@ -5,7 +5,7 @@ class CreateEcmCmsNavigationItems < ActiveRecord::Migration
5
5
  t.string :url
6
6
  t.string :key
7
7
  t.string :options
8
- t.text :properties, null: true
8
+ t.text :properties, null: true
9
9
 
10
10
  # associations
11
11
  t.references :ecm_cms_navigation
@@ -1,6 +1,5 @@
1
1
  module ActionView::Template::Handlers
2
2
  class Textile
3
-
4
3
  class_attribute :default_format
5
4
  self.default_format = Mime::HTML
6
5
 
@@ -12,7 +11,5 @@ module ActionView::Template::Handlers
12
11
  compiled_source = erb_handler.call(template)
13
12
  "RedCloth.new(begin;#{compiled_source};end).to_html.html_safe"
14
13
  end
15
-
16
14
  end
17
15
  end
18
-
@@ -1,13 +1,13 @@
1
1
  module ActionView
2
2
  module TemplatePatch
3
- def self.included base
3
+ def self.included(base)
4
4
  base.class_eval do
5
5
  attr_accessor :layout
6
6
 
7
7
  alias_method :original_initialize, :initialize
8
8
 
9
9
  def initialize(source, identifier, handler, details)
10
- @layout = details[:layout] if details.has_key?(:layout)
10
+ @layout = details[:layout] if details.key?(:layout)
11
11
  original_initialize(source, identifier, handler, details)
12
12
  end
13
13
  end
@@ -16,4 +16,3 @@ module ActionView
16
16
  end
17
17
 
18
18
  ActionView::Template.send(:include, ActionView::TemplatePatch)
19
-
@@ -1,6 +1,6 @@
1
1
  module ActionView
2
2
  module TemplateRendererPatch
3
- def self.included base
3
+ def self.included(base)
4
4
  base.class_eval do
5
5
  alias_method :original_render, :render
6
6
  if Rails::VERSION::MAJOR < 4
@@ -26,14 +26,14 @@ module ActionView
26
26
  @view = context
27
27
  @details = extract_details(options)
28
28
  template = determine_template(options)
29
-
29
+
30
30
  prepend_formats(template.formats)
31
-
31
+
32
32
  @lookup_context.rendered_format ||= (template.formats.first || formats.first)
33
33
 
34
34
  layout = template.layout if template.respond_to?(:layout)
35
35
  layout ||= options[:layout]
36
-
36
+
37
37
  render_template(template, layout, options[:locals])
38
38
  end
39
39
  end
@@ -42,6 +42,4 @@ module ActionView
42
42
  end
43
43
  end
44
44
 
45
-
46
45
  ActionView::TemplateRenderer.send(:include, ActionView::TemplateRendererPatch)
47
-
@@ -14,7 +14,7 @@ module Ecm
14
14
  end
15
15
 
16
16
  mattr_accessor :default_handlers do
17
- HashWithIndifferentAccess.new()
17
+ HashWithIndifferentAccess.new
18
18
  end
19
19
 
20
20
  mattr_accessor :site_title do
@@ -10,4 +10,3 @@ module Ecm
10
10
  end
11
11
  end
12
12
  end
13
-
@@ -10,4 +10,3 @@ module Ecm
10
10
  end
11
11
  end
12
12
  end
13
-
@@ -10,4 +10,3 @@ module Ecm
10
10
  end
11
11
  end
12
12
  end
13
-
@@ -15,29 +15,29 @@ module Ecm
15
15
  return [] unless resolve(partial)
16
16
 
17
17
  conditions = {
18
- :pathname => assert_slashs(prefix.to_s),
19
- :basename => normalize_basename(name),
20
- :locale => normalize_array(details[:locale]).first,
21
- :format => normalize_array(details[:formats]).first,
22
- :handler => normalize_array(details[:handlers])
18
+ pathname: assert_slashs(prefix.to_s),
19
+ basename: normalize_basename(name),
20
+ locale: normalize_array(details[:locale]).first,
21
+ format: normalize_array(details[:formats]).first,
22
+ handler: normalize_array(details[:handlers])
23
23
  }
24
24
 
25
25
  format = conditions.delete(:format)
26
26
  locale = conditions.delete(:locale)
27
-
28
- query = self.template_class.constantize.where(conditions)
27
+
28
+ query = template_class.constantize.where(conditions)
29
29
 
30
30
  # 2) Check for templates with the given format or format is nil
31
- query = query.where(["format = ? OR format = ''", format])
31
+ query = query.where(["format = ? OR format = '' OR format IS NULL", format])
32
32
 
33
33
  # 3) Ensure templates with format come first
34
- query = query.order("format DESC")
34
+ query = query.order('format DESC')
35
35
 
36
36
  # 4) Check for templates with the given locale or locale is nil
37
- query = query.where(["locale = ? OR locale = ''", locale])
37
+ query = query.where(["locale = ? OR locale = '' OR locale IS NULL", locale])
38
38
 
39
39
  # 5) Ensure templates with locale come first
40
- query = query.order("locale DESC")
40
+ query = query.order('locale DESC')
41
41
 
42
42
  # 6) Now trigger the query passing on conditions to initialization
43
43
  query.map do |record|
@@ -58,9 +58,9 @@ module Ecm
58
58
  format ||= details[:formats]
59
59
 
60
60
  details = {
61
- :format => format,
62
- :updated_at => record.updated_at,
63
- :virtual_path => "#{record.pathname}#{record.basename}"
61
+ format: format,
62
+ updated_at: record.updated_at,
63
+ virtual_path: "#{record.pathname}#{record.basename}"
64
64
  }
65
65
 
66
66
  details[:layout] = record.layout if record.respond_to?(:layout) && record.layout.present?
@@ -72,7 +72,7 @@ module Ecm
72
72
  output = prefix.dup
73
73
  output << '/' unless output.end_with?('/')
74
74
  output = '/' << output unless output.start_with?('/')
75
- return output
75
+ output
76
76
  end
77
77
 
78
78
  # Normalize arrays by converting all symbols to strings.
@@ -81,21 +81,20 @@ module Ecm
81
81
  end
82
82
 
83
83
  def build_source
84
- raise "call to abstract method #build_source"
84
+ fail 'call to abstract method #build_source'
85
85
  end
86
86
 
87
- def normalize_basename(basename)
88
- raise "call to abstract method #normalize_basename"
87
+ def normalize_basename(_basename)
88
+ fail 'call to abstract method #normalize_basename'
89
89
  end
90
90
 
91
- def resolve(partial_flag)
92
- raise "call to abstract method #resolve"
91
+ def resolve(_partial_flag)
92
+ fail 'call to abstract method #resolve'
93
93
  end
94
94
 
95
95
  def template_class
96
- raise "call to abstract method #template_class"
96
+ fail 'call to abstract method #template_class'
97
97
  end
98
98
  end
99
99
  end
100
100
  end
101
-
@@ -6,8 +6,8 @@ module Ecm
6
6
 
7
7
  # associations
8
8
  base.belongs_to :ecm_cms_folder,
9
- :class_name => 'Ecm::Cms::Folder',
10
- :foreign_key => 'ecm_cms_folder_id'
9
+ class_name: 'Ecm::Cms::Folder',
10
+ foreign_key: 'ecm_cms_folder_id'
11
11
 
12
12
  # callbacks
13
13
  base.after_initialize :set_defaults
@@ -15,16 +15,16 @@ module Ecm
15
15
  base.after_save :clear_resolver_cache
16
16
 
17
17
  # validations
18
- base.validates :basename, :presence => true,
19
- :uniqueness => { :scope => [ :pathname, :locale, :format, :handler ] }
20
- base.validates :handler, :inclusion => ActionView::Template::Handlers.extensions.map(&:to_s)
21
- base.validates :locale, :inclusion => I18n.available_locales.map(&:to_s),
22
- :allow_nil => true,
23
- :allow_blank => true
24
- base.validates :format, :inclusion => Mime::SET.symbols.map(&:to_s),
25
- :allow_nil => true,
26
- :allow_blank => true
27
- base.validates :pathname, :presence => true
18
+ base.validates :basename, presence: true,
19
+ uniqueness: { scope: [:pathname, :locale, :format, :handler] }
20
+ base.validates :handler, inclusion: ActionView::Template::Handlers.extensions.map(&:to_s)
21
+ base.validates :locale, inclusion: I18n.available_locales.map(&:to_s),
22
+ allow_nil: true,
23
+ allow_blank: true
24
+ base.validates :format, inclusion: Mime::SET.symbols.map(&:to_s),
25
+ allow_nil: true,
26
+ allow_blank: true
27
+ base.validates :pathname, presence: true
28
28
  end
29
29
 
30
30
  module ClassMethods
@@ -49,8 +49,8 @@ module Ecm
49
49
  private
50
50
 
51
51
  def assert_trailing_slash_on_pathname
52
- self.pathname = '/' and return if self.pathname.blank?
53
- self.pathname << '/' unless self.pathname.end_with?('/')
52
+ self.pathname = '/' and return if pathname.blank?
53
+ pathname << '/' unless pathname.end_with?('/')
54
54
  end
55
55
 
56
56
  def clear_resolver_cache
@@ -59,12 +59,11 @@ module Ecm
59
59
  end
60
60
 
61
61
  def set_defaults
62
- if self.new_record?
63
- self.locale ||= I18n.default_locale.to_s
64
- self.handler ||= Ecm::Cms::Configuration.default_handlers[:page].to_s
62
+ if new_record?
63
+ self.locale ||= I18n.default_locale.to_s
64
+ self.handler ||= Ecm::Cms::Configuration.default_handlers[self.class.name.demodulize.underscore.to_sym].to_s
65
65
  end
66
66
  end
67
67
  end
68
68
  end
69
69
  end
70
-
@@ -2,27 +2,25 @@ module Ecm
2
2
  module Cms
3
3
  class Engine < ::Rails::Engine
4
4
  config.app_generators do |c|
5
- c.test_framework :rspec, :fixture => true,
6
- :fixture_replacement => nil
5
+ c.test_framework :rspec, fixture: true,
6
+ fixture_replacement: nil
7
7
 
8
8
  c.integration_tool :rspec
9
9
  c.performance_tool :rspec
10
10
  end
11
11
 
12
- # active admin
13
12
  initializer :ecm_cms_engine do
14
13
  ::ActiveAdmin.setup do |config|
15
- config.load_paths += Dir[File.dirname(__FILE__) + '/active_admin']
14
+ config.load_paths += Dir[root.join('app', 'admin')]
16
15
  config.register_stylesheet 'ecm_cms.css'
17
16
  config.register_javascript 'ecm_cms.js'
18
17
  end
19
- end if defined?(::ActiveAdmin)
18
+ end if Gem::Specification.find_all_by_name('activeadmin').any?
20
19
 
21
- initializer "ecm_cms.asset_pipeline" do |app|
20
+ initializer 'ecm_cms.asset_pipeline' do |app|
22
21
  app.config.assets.precompile << 'ecm_cms.js'
23
22
  app.config.assets.precompile << 'ecm_cms.css'
24
23
  end
25
24
  end
26
25
  end
27
26
  end
28
-