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