module Fullstack module Cms class Configuration attr_writer :linkables, :localized def default_locale "#{I18n.default_locale}" || "en" end def localized @localized.nil? ? true : @localized end alias :localize :localized alias :localized? :localized def linkables @linkables || [] end def resources(&block) Fullstack::Admin.resources(&block) end # config.menu( 'main', :localized => true ) # # ... # menu( 'main', :locale => I18n.locale ) # menu_items( 'main', :locale => I18n.locale ) # # # def menu(uid, options = {}) return nil unless Menu.table_exists? options = options.reverse_merge({:localized => localized?}) localized_menu = options.delete(:localized) if localized_menu && localized? # ignores the option if CMS is not localized I18n.available_locales.each do |locale| m = Menu.find_or_create_by_uid_and_locale(uid.to_s, locale.to_s) raise m.errors.full_messages.join("\n") if m.errors.any? end else m = Menu.find_or_create_by_uid(uid.to_s) raise m.errors.full_messages.join("\n") if m.errors.any? end end # config.setting('description', :kind => :text, :localized => true, :group => group) # setting('website/description', :locale => I18n.locale) # def setting(key, options = {}) return nil unless Setting.table_exists? options = options.reverse_merge({ :localized => localized? }).merge({ :autocreate => true }) localized_setting = options.delete(:localized) if localized_setting && localized? # ignores the option if CMS is not localized I18n.available_locales.each do |locale| Setting.global(key.to_s, options.merge(:locale => locale.to_s)) end else Setting.global(key.to_s, options) end end end class << self def config @config ||= ::Fullstack::Cms::Configuration.new end def configure yield(config) config end delegate :linkables, :localized, :localized?, :resources, :to => :config end end end