Module: Skyline::Settings::KlassMethods
- Defined in:
- lib/skyline/settings.rb
Instance Method Summary collapse
-
#[](name) ⇒ Object
We have to make sure always the same object will be retrieved Do a forcefull reload if you want to get a new instance from the database.
-
#get(setting_identifier, field) ⇒ Object
- a safe way to get a value of a setting and report a warning if it can’t be found # instead of calling Setting.field directly use setting(:setting_identifier, :field) ==== Parameters setting_identifier<Symbol>
- the symbol of the settings page field<Symbol>
-
the name of the setting.
-
#get_page(setting_identifier, field) ⇒ Object
- a safe way to get a page from the settings ==== Parameters setting_identifier<Symbol>
- the symbol of the settings page field<Symbol>
-
the name of the setting that references a page_id.
-
#ordered_pages ⇒ Object
The pages in order of page_order, returns an array of page objects.
-
#page(name, options = {}) {|page| ... } ⇒ Object
Define a page in the object, see example below.
-
#page_order ⇒ Object
(also: #page_names)
Return the page order as an array of page names.
-
#pages ⇒ Object
The pages hash, access pages like this: Settings.pages to get the settingspage definition.
Instance Method Details
#[](name) ⇒ Object
We have to make sure always the same object will be retrieved Do a forcefull reload if you want to get a new instance from the database
59 60 61 62 63 |
# File 'lib/skyline/settings.rb', line 59 def [](name) f = self.find(:first, :conditions => {:page => name.to_s}) f ||= create(:page => name.to_s, :data => HashWithIndifferentAccess.new) f end |
#get(setting_identifier, field) ⇒ Object
a safe way to get a value of a setting and report a warning if it can’t be found #
instead of calling Setting[:setting_identifier].field directly use setting(:setting_identifier, :field)
Parameters
- setting_identifier<Symbol>
-
the symbol of the settings page
- field<Symbol>
-
the name of the setting
Returns
- Object
-
the value of the setting or nil if not found
–
74 75 76 77 78 79 80 81 82 |
# File 'lib/skyline/settings.rb', line 74 def get(setting_identifier, field) if s = self[setting_identifier] if s.respond_to?(field) return s.send(field) end end Rails.logger.warn "Couldn't find Setting[:#{setting_identifier}].#{field}" nil end |
#get_page(setting_identifier, field) ⇒ Object
a safe way to get a page from the settings
Parameters
- setting_identifier<Symbol>
-
the symbol of the settings page
- field<Symbol>
-
the name of the setting that references a page_id
Returns
- Page
-
the page if found or nil otherwise
–
92 93 94 95 96 97 |
# File 'lib/skyline/settings.rb', line 92 def get_page(setting_identifier, field) if page_id = self.get(setting_identifier, field) return Skyline::Page.find_by_id(page_id) if page_id.present? end nil end |
#ordered_pages ⇒ Object
The pages in order of page_order, returns an array of page objects.
47 48 49 |
# File 'lib/skyline/settings.rb', line 47 def ordered_pages page_order.map{|name| pages[name]} end |
#page(name, options = {}) {|page| ... } ⇒ Object
Define a page in the object, see example below
class DummyImplementation::Settings < DummyImplementation::ImplementationSettings
page :general do |p|
p.description "Here you can edit all your general settings"
p.field :address, :type => :text
p.field :newsletter, :type => :text
p.field :mission_statement, :type => :text
end
page :test do |p|
p.description "A test of all possible options"
p.field_group :name do |g|
g.field :firstname, :type => :string
g.field :lastname, :type => :string
end
p.field :birthdate, :type => :date
p.field :today, :type => :datetime
p.field :nr_of_kids, :type => :integer
p.field :price_of_favourite_food, :type => :float
p.field :loves_meat, :type => :boolean
end
end
32 33 34 35 36 37 38 39 |
# File 'lib/skyline/settings.rb', line 32 def page(name,={},&block) page = Skyline::Content::MetaData::FieldPage.new(self,name,) yield(page) create_proxy_method(name) pages.update(name => page) page_order << page.name page end |
#page_order ⇒ Object Also known as: page_names
Return the page order as an array of page names
52 53 54 |
# File 'lib/skyline/settings.rb', line 52 def page_order @page_order ||= [] end |
#pages ⇒ Object
The pages hash, access pages like this: Settings.pages to get the settingspage definition
42 43 44 |
# File 'lib/skyline/settings.rb', line 42 def pages @pages ||= {} end |