Module: Ecm::Cms::DatabaseTemplate

Included in:
Page, Partial, Template
Defined in:
lib/ecm/cms/database_template.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/ecm/cms/database_template.rb', line 4

def self.included(base)
  base.extend(ClassMethods)

  # associations
  base.belongs_to :ecm_cms_folder,
                  class_name: 'Ecm::Cms::Folder',
                  foreign_key: 'ecm_cms_folder_id',
                  optional: true

  # callbacks
  base.after_initialize :set_defaults
  base.before_validation :assert_trailing_slash_on_pathname
  base.after_save :clear_resolver_cache

  # validations
  base.validates :basename, presence: true,
                            uniqueness: { scope: [:pathname, :locale, :format, :handler] }
  base.validates :handler, inclusion: ActionView::Template::Handlers.extensions.map(&:to_s)
  base.validates :locale, inclusion: I18n.available_locales.map(&:to_s),
                          allow_nil: true,
                          allow_blank: true
  base.validates :format, inclusion: Mime::SET.symbols.map(&:to_s),
                          allow_nil: true,
                          allow_blank: true
  base.validates :pathname, presence: true
end

Instance Method Details

#filenameObject



38
39
40
41
42
43
44
# File 'lib/ecm/cms/database_template.rb', line 38

def filename
  filename = basename.dup
  filename << ".#{locale}" if locale.present?
  filename << ".#{format}" if format.present?
  filename << ".#{handler}" if handler.present?
  filename
end

#humanObject



34
35
36
# File 'lib/ecm/cms/database_template.rb', line 34

def human
  "#{self.class.name}: #{path_and_filename}"
end

#path_and_filenameObject



46
47
48
# File 'lib/ecm/cms/database_template.rb', line 46

def path_and_filename
  "#{pathname}#{filename}"
end