class Publication include EditorialLogic::Base # Mongo Config =================================================================================== include Mongoid::Document include Mongoid::Timestamps field :name field :description field :slug field :content_type field :rss_feed_enabled, :type => Boolean field :pdf_enabled, :type => Boolean index :name, :unique => true index :slug, :unique => true index :state, :unique => false embeds_many :managed_contents # Constants ====================================================================================== CONTENT_TYPES = ['Articles', 'FAQs', 'Terms and Definitions', 'Documents'] # Scopes =================================================================================== scope :with_articles, :where => {:content_type => 'Articles'} scope :with_documents, :where => {:content_type => 'Documents'} scope :with_faqs, :where => {:content_type => 'FAQs'} scope :with_terms, :where => {:content_type => 'Terms and Definitions'} # Relationships ================================================================================== # Behavior ======================================================================================= attr_accessor :desired_slug has_slug :desired_slug # Callbacks ====================================================================================== # Validations ==================================================================================== validates_presence_of :name validates_uniqueness_of :name validates_uniqueness_of :slug validates_presence_of :desired_slug # Class methods ================================================================================== def self.matching_slug(slug) leading_and_trailing_slash = "/#{slug}/" leading_slash = "/#{slug}" Publication.any_in(:slug => [leading_and_trailing_slash, slug, leading_slash].flatten) end # Instance methods =============================================================================== def content_label label = "Content" label = "Answer" if self.has_faqs? label = "Definition" if self.has_terms? label = "Document" if self.has_documents? label end def has_articles? self.content_type == 'Articles' end def has_documents? self.content_type == 'Documents' end def has_faqs? self.content_type == 'FAQs' end def has_terms? self.content_type == 'Terms and Definitions' end def headline_label label = "Headline" label = "Question" if self.has_faqs? label = "Term" if self.has_terms? label = "Title" if self.has_documents? label end def humanize_path "/#{self.slug}/".gsub('//','/') end def rss_feed_url "#{self.humanize_path}feed" end end