Chris@16: require_dependency 'setting' Chris@16: Chris@16: module Checkout Chris@16: module SettingPatch Chris@16: def self.included(base) # :nodoc: Chris@16: base.extend(ClassMethods) Chris@16: Chris@16: base.class_eval do Chris@16: unloadable Chris@16: Chris@16: # Defines getter and setter for each setting Chris@16: # Then setting values can be read using: Setting.some_setting_name Chris@16: # or set using Setting.some_setting_name = "some value" Chris@16: Redmine::Plugin.find(:redmine_checkout).settings[:default].keys.each do |name| Chris@16: if name.start_with?('protocols_') Chris@16: default = "[]" Chris@16: else Chris@16: default = <<-END_SRC Chris@16: begin Chris@16: default = Setting.available_settings['plugin_redmine_checkout']['default']['#{name}'] Chris@16: # perform a deep copy of the default Chris@16: Marshal::load(Marshal::dump(default)) Chris@16: end Chris@16: END_SRC Chris@16: end Chris@16: Chris@16: src = <<-END_SRC Chris@16: def self.checkout_#{name} Chris@16: self.plugin_redmine_checkout[:#{name}] || #{default} Chris@16: end Chris@16: Chris@16: def self.checkout_#{name}? Chris@16: self.checkout_#{name}.to_i > 0 Chris@16: end Chris@16: Chris@16: def self.checkout_#{name}=(value) Chris@16: setting = Setting.plugin_redmine_checkout Chris@16: setting[:#{name}] = value Chris@16: Setting.plugin_redmine_checkout = setting Chris@16: end Chris@16: END_SRC Chris@16: class_eval src, __FILE__, __LINE__ Chris@16: end Chris@16: Chris@16: class <