Sha256: f7c0292c87acafd46e4783e70e4acc53e1fcefcae7a0ed4a94a710d336836d77

Contents?: true

Size: 1.73 KB

Versions: 8

Compression:

Stored size: 1.73 KB

Contents

module Redmineup
  class Settings
    SECTIONS = {
      'money' => { id: :money, label: :label_redmineup_money, partial: 'money' }
    }.freeze

    class << self
      def initialize_gem_settings
        return if !Object.const_defined?('Setting') || Setting.respond_to?(:plugin_redmineup)

        if Setting.respond_to?(:define_setting)
          Setting.send(:define_setting, 'plugin_redmineup', 'default' => default_settings, 'serialized' => true)
        elsif Setting.respond_to?(:available_settings)
          Setting.available_settings['plugin_redmineup'] = { 'default' => default_settings, 'serialized' => true }
          Setting.class.send(:define_method, 'plugin_redmineup', -> { Setting['plugin_redmineup'] })
          Setting.class.send(:define_method, 'plugin_redmineup=', lambda do |val|
            setting = find_or_default('plugin_redmineup')
            setting.value = val || ''
            @cached_settings['plugin_redmineup'] = nil
            setting.save(validate: false)
            setting.value
          end)
        end
        @settings_initialized
      end

      # Use apply instead attrs assign because it can rewrite other attributes
      def apply=(values)
        initialize_gem_settings unless @settings_initialized

        Setting.plugin_redmineup = Setting.plugin_redmineup.merge(values)
      end

      def values
        initialize_gem_settings unless @settings_initialized
        Object.const_defined?('Setting') ? Setting.plugin_redmineup : {}
      end

      def [](value)
        initialize_gem_settings unless @settings_initialized
        return Setting.plugin_redmineup[value] if Object.const_defined?('Setting')

        nil
      end

      private

      def default_settings
        {}
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
redmineup-1.0.10 lib/redmineup/settings.rb
redmineup-1.0.9 lib/redmineup/settings.rb
redmineup-1.0.8 lib/redmineup/settings.rb
redmineup-1.0.7 lib/redmineup/settings.rb
redmineup-1.0.5 lib/redmineup/settings.rb
redmineup-1.0.4 lib/redmineup/settings.rb
redmineup-1.0.3 lib/redmineup/settings.rb
redmineup-1.0.2 lib/redmineup/settings.rb