module Decidim::HasSettings
Public Instance Methods
build_settings(manifest, settings_name, data, organization)
click to toggle source
Returns a Class with the attributes sanitized, coerced and filtered to the right type. See Decidim::SettingsManifest#schema
.
# File lib/decidim/has_settings.rb, line 16 def build_settings(manifest, settings_name, data, organization) manifest.settings(settings_name).schema.new(data, organization.default_locale) end
current_settings()
click to toggle source
# File lib/decidim/has_settings.rb, line 29 def current_settings if participatory_space.allows_steps? active_step_settings else default_step_settings end end
default_step_settings()
click to toggle source
# File lib/decidim/has_settings.rb, line 37 def default_step_settings new_settings_schema(:step, self[:settings]["default_step"]) end
default_step_settings=(data)
click to toggle source
# File lib/decidim/has_settings.rb, line 41 def default_step_settings=(data) self[:settings]["default_step"] = new_settings_schema(:step, data) end
settings()
click to toggle source
# File lib/decidim/has_settings.rb, line 21 def settings new_settings_schema(:global, self[:settings]["global"]) end
settings=(data)
click to toggle source
# File lib/decidim/has_settings.rb, line 25 def settings=(data) self[:settings]["global"] = new_settings_schema(:global, data) end
step_settings()
click to toggle source
# File lib/decidim/has_settings.rb, line 45 def step_settings return {} unless participatory_space.allows_steps? participatory_space.steps.each_with_object({}) do |step, result| result[step.id.to_s] = new_settings_schema(:step, self[:settings].dig("steps", step.id.to_s)) end end
step_settings=(data)
click to toggle source
# File lib/decidim/has_settings.rb, line 53 def step_settings=(data) self[:settings]["steps"] = data.each_with_object({}) do |(key, value), result| result[key.to_s] = new_settings_schema(:step, value) end end
Private Instance Methods
active_step_settings()
click to toggle source
# File lib/decidim/has_settings.rb, line 61 def active_step_settings return unless participatory_space.allows_steps? active_step = participatory_space.active_step return default_step_settings unless active_step step_settings.fetch(active_step.id.to_s) end
default_values()
click to toggle source
# File lib/decidim/has_settings.rb, line 76 def default_values self[:settings] ||= {} end
new_settings_schema(settings_name, data)
click to toggle source
# File lib/decidim/has_settings.rb, line 70 def new_settings_schema(settings_name, data) return {} unless manifest && participatory_space self.class.build_settings(manifest, settings_name, data, participatory_space.organization) end