orbit4-5/app/models/page.rb

47 lines
1.2 KiB
Ruby
Raw Normal View History

2014-04-01 07:10:21 +00:00
class Page
include Mongoid::Document
include Mongoid::Timestamps
2014-05-15 11:32:51 +00:00
include OrbitModel::Impression
2014-04-01 07:10:21 +00:00
field :name, localize: true
field :number, type: Integer
field :module
field :url
field :page_id
field :data_count, type: Integer, default: 10
field :enabled_for, type: Array, default: []
field :menu_enabled_for, type: Array, default: []
2014-05-15 11:32:51 +00:00
field :categories, type: Array, :default => []
field :enabled_for_sitemap, type: Array, :default => []
2014-04-01 07:10:21 +00:00
has_many :page_parts, :autosave => true, :dependent => :destroy
2014-05-06 09:18:41 +00:00
has_many :page_contexts, :autosave => true, :dependent => :destroy
has_many :child_page, :class_name => 'Page', :inverse_of => :parent_page, :dependent => :destroy
2014-04-01 07:10:21 +00:00
belongs_to :parent_page, :class_name => 'Page', :inverse_of => :child_page
2014-05-06 09:18:41 +00:00
2014-04-01 07:10:21 +00:00
def to_param
page_id.parameterize
end
def self.find_by_param(input)
self.find_by(page_id: input) rescue nil
end
def self.root
self.where(:parent_page_id.ne => "" , :parent_page_id.exists => false).first
end
2014-04-01 07:10:21 +00:00
def root?
self.parent_page_id.nil?
end
def sorted_published_child_pages
self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number)
end
def published_child_pages
self.child_page.where(:menu_enabled_for => I18n.locale)
end
2014-04-01 07:10:21 +00:00
end