app/models/element.rb in alchemy_cms-2.0.rc6 vs app/models/element.rb in alchemy_cms-2.0

- old
+ new

@@ -50,13 +50,15 @@ end end # nullifies the page_id aka. trashs it. def trash - self.page_id = nil - self.folded = true - self.save(false) + self.update_attributes({ + :page_id => nil, + :folded => true, + :public => false + }) end def trashed? page_id.nil? end @@ -75,13 +77,43 @@ def all_contents_by_type(essence_type) self.contents.find_all_by_essence_type(essence_type) end + # Returns the content that is marked as rss title. + # + # Mark a content as rss title in your +elements.yml+ file: + # + # - name: news + # contents: + # - name: headline + # type: EssenceText + # rss_title: true + # + def content_for_rss_title + rss_title = content_descriptions.detect { |c| c['rss_title'] } + contents.find_by_name(rss_title['name']) + end + + # Returns the content that is marked as rss description. + # + # Mark a content as rss description in your +elements.yml+ file: + # + # - name: news + # contents: + # - name: body + # type: EssenceRichtext + # rss_description: true + # + def content_for_rss_description + rss_title = content_descriptions.detect { |c| c['rss_description'] } + contents.find_by_name(rss_title['name']) + end + # Inits a new element for page as described in /config/alchemy/elements.yml from element_name def self.new_from_scratch(attributes) - attributes.stringify_keys! + attributes.stringify_keys! return Element.new if attributes['name'].blank? element_descriptions = Element.descriptions return if element_descriptions.blank? element_scratch = element_descriptions.select{ |m| m["name"] == attributes['name'].split('#').first }.first element = Element.new( @@ -160,12 +192,13 @@ available_content_descriptions.detect { |d| d['name'] == content_name } end # returns the description of the element with my name in element.yml def description - Element.descriptions.detect{ |d| d['name'] == self.name } + self.class.descriptions.detect{ |d| d['name'] == self.name } end + alias_method :definition, :description # Human name for displaying in selectboxes and element editor views. # The name is beeing translated from elements name value as described in config/alchemy/elements.yml # # Translate the name in your config/locales language file. Example: @@ -377,9 +410,10 @@ private # List all elements for page_layout def self.all_for_page(page) + raise TypeError if page.class != Page # if page_layout has cells, collect elements from cells and group them by cellname page_layout = Alchemy::PageLayout.get(page.page_layout) if page_layout.blank? logger.warn "\n++++++\nWARNING! Could not find page_layout description for page: #{page.name}\n++++++++\n" return []