app/models/alchemy/page.rb in alchemy_cms-2.1.6 vs app/models/alchemy/page.rb in alchemy_cms-2.1.7
- old
+ new
@@ -15,11 +15,11 @@
validates_presence_of :name, :message => '^' + I18n.t("please enter a name")
validates_presence_of :page_layout, :message => '^' + I18n.t("Please choose a page layout."), :unless => :systempage?
validates_presence_of :parent_id, :message => '^' + I18n.t("No parent page was given."), :if => proc { Page.count > 1 }
validates_length_of :urlname, :minimum => 3, :too_short => I18n.t("urlname_to_short"), :if => :urlname_entered?
- validates_uniqueness_of :urlname, :message => '^' + I18n.t("URL-Name already token"), :scope => 'language_id', :if => :urlname_entered?
+ validates_uniqueness_of :urlname, :message => '^' + I18n.t("URL-Name already token"), :scope => [:language_id, :layoutpage], :if => :urlname_entered?
validates :urlname, :exclusion => { :in => RESERVED_URLNAMES, :message => '^' + I18n.t("This urlname is reserved.") }
attr_accessor :do_not_autogenerate
attr_accessor :do_not_sweep
attr_accessor :do_not_validate_language
@@ -61,25 +61,28 @@
# :only => Array of element names # Returns only elements with given names
# :except => Array of element names # Returns all elements except the ones with given names
# :count => Integer # Limit the count of returned elements
# :offset => Integer # Starts with an offset while returning elements
# :random => Boolean # Returning elements randomly shuffled
- # :from_cell => Cell # Returning elements from given cell
+ # :from_cell => Cell or String # Returning elements from given cell
#
# Returns only public elements by default.
# Pass true as second argument to get all elements.
#
def find_selected_elements(options = {}, show_non_public = false)
if options[:from_cell].class.name == 'Alchemy::Cell'
elements = options[:from_cell].elements
+ elsif !options[:from_cell].blank? && options[:from_cell].class.name == 'String'
+ cell = cells.find_by_name(options[:from_cell])
+ elements = cell ? cell.elements : nil
else
elements = self.elements.not_in_cell
end
if !options[:only].blank?
- elements = self.elements.named(options[:only])
+ elements = elements.named(options[:only])
elsif !options[:except].blank?
- elements = self.elements.excluded(options[:except])
+ elements = elements.excluded(options[:except])
end
elements = elements.offset(options[:offset]).limit(options[:count])
elements = elements.order("RAND()") if options[:random]
if show_non_public
elements
@@ -324,10 +327,10 @@
# Returns translated name of the pages page_layout value.
# Page layout names are defined inside the config/alchemy/page_layouts.yml file.
# Translate the name in your config/locales language yml file.
def layout_display_name
- I18n.t("alchemy.page_layout_names.#{page_layout}", :default => page_layout.camelize)
+ I18n.t(self.page_layout, :scope => :page_layout_names)
end
def renamed?
self.name_was != self.name || self.urlname_was != self.urlname
end