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 []