Mercurial > hg > soundsoftware-site
comparison plugins/redmine_checkout/lib/checkout/setting_patch.rb @ 1117:b4b72f1eb644 redmine-2.2-integration
Moved all the plugins from the vendor folder to the application root folder.
author | luisf <luis.figueira@eecs.qmul.ac.uk> |
---|---|
date | Tue, 08 Jan 2013 12:32:05 +0000 |
parents | vendor/plugins/redmine_checkout/lib/checkout/setting_patch.rb@020926a36823 |
children |
comparison
equal
deleted
inserted
replaced
1116:bb32da3bea34 | 1117:b4b72f1eb644 |
---|---|
1 require_dependency 'setting' | |
2 | |
3 module Checkout | |
4 module SettingPatch | |
5 def self.included(base) # :nodoc: | |
6 base.extend(ClassMethods) | |
7 | |
8 base.class_eval do | |
9 unloadable | |
10 | |
11 # Defines getter and setter for each setting | |
12 # Then setting values can be read using: Setting.some_setting_name | |
13 # or set using Setting.some_setting_name = "some value" | |
14 Redmine::Plugin.find(:redmine_checkout).settings[:default].keys.each do |name| | |
15 if name.start_with?('protocols_') | |
16 default = "[]" | |
17 else | |
18 default = <<-END_SRC | |
19 begin | |
20 default = Setting.available_settings['plugin_redmine_checkout']['default']['#{name}'] | |
21 # perform a deep copy of the default | |
22 Marshal::load(Marshal::dump(default)) | |
23 end | |
24 END_SRC | |
25 end | |
26 | |
27 src = <<-END_SRC | |
28 def self.checkout_#{name} | |
29 self.plugin_redmine_checkout[:#{name}] || #{default} | |
30 end | |
31 | |
32 def self.checkout_#{name}? | |
33 self.checkout_#{name}.to_i > 0 | |
34 end | |
35 | |
36 def self.checkout_#{name}=(value) | |
37 setting = Setting.plugin_redmine_checkout | |
38 setting[:#{name}] = value | |
39 Setting.plugin_redmine_checkout = setting | |
40 end | |
41 END_SRC | |
42 class_eval src, __FILE__, __LINE__ | |
43 end | |
44 | |
45 class <<self | |
46 alias_method :store_without_checkout, :[]= | |
47 alias_method :[]=, :store_with_checkout | |
48 | |
49 alias_method :retrieve_without_checkout, :[] | |
50 alias_method :[], :retrieve_with_checkout | |
51 end | |
52 end | |
53 end | |
54 | |
55 module ClassMethods | |
56 def store_with_checkout(name, value) | |
57 if name.to_s.starts_with? "checkout_" | |
58 self.send("#{name}=", value) | |
59 else | |
60 store_without_checkout(name, value) | |
61 end | |
62 end | |
63 | |
64 def retrieve_with_checkout(name) | |
65 if name.to_s.starts_with? "checkout_" | |
66 self.send("#{name}") | |
67 else | |
68 retrieve_without_checkout(name) | |
69 end | |
70 end | |
71 end | |
72 end | |
73 end | |
74 | |
75 Setting.send(:include, Checkout::SettingPatch) |