ecm_cms2 1.1.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
-