app/models/maglev/theme.rb in maglevcms-1.3.0 vs app/models/maglev/theme.rb in maglevcms-1.4.0

- old
+ new

@@ -10,7 +10,42 @@ ## validations ## validates :id, :name, presence: true ## methods ## + + def find_setting!(section_id, block_id, setting_id) + setting = find_setting(section_id, block_id, setting_id) + raise Maglev::Errors::UnknownSetting.new(section_id, block_id, setting_id) if setting.nil? + + setting + end + + def find_setting(section_id, block_id, setting_id) + key = [section_id, block_id, setting_id].compact.join('.') + section_setting_types[key] + end + + private + + def section_setting_types + @section_setting_types ||= build_section_setting_types + end + + def build_section_setting_types + hash = {} + sections.each do |section| + build_section_setting_types_from_settings(hash, section.id, section.settings) + section.blocks.each do |block| + build_section_setting_types_from_settings(hash, "#{section.id}.#{block.type}", block.settings) + end + end + hash + end + + def build_section_setting_types_from_settings(hash, parent_key, settings) + settings.each do |setting| + hash["#{parent_key}.#{setting.id}"] = setting + end + end end end