Module: Cmtool::Includes::Page

Included in:
Page
Defined in:
lib/cmtool/includes/page.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ 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
30
31
32
33
34
35
36
37
# File 'lib/cmtool/includes/page.rb', line 4

def self.included(klass)
  klass.send :include, SimplyStored::Couch
  klass.send :include, InstanceMethods
  klass.send :extend, ClassMethods

  # PROPERTIES
  klass.property :name
  klass.property :menu_text
  klass.property :title
  klass.property :body
  klass.property :body_template
  klass.property :sidebar
  klass.property :sidebar_template
  klass.property :footer
  klass.property :footer_template
  klass.property :wysiwyg, type: :boolean, default: false
  klass.property :priority, type: Float, default: 0.5
  klass.property :active, type: :boolean, default: true
  klass.property :layout
  klass.property :in_menu, type: :boolean, default: true

  klass.has_ancestry by_property: :locale

  klass.validates :name, presence: true
  klass.validates :locale, presence: true
  klass.validate :parent_locale_match

  # RELATIONS
  klass.has_and_belongs_to_many :keywords, storing_keys: true, class_name: 'Cmtool::Keyword'

  # DEFAULT ORDER
  klass.view :all_documents, key: [:position, :name, :title]
  klass.view :by_name_and_locale, key: [:name, :locale]
end