Class: RedmineExtensions::EasySettingPresenter
Instance Attribute Summary collapse
#model, #options
Class Method Summary
collapse
Instance Method Summary
collapse
#h, present, presenter_for, register, registered_presenters, #update_options
Constructor Details
#initialize(settings_params = {}, project = nil) ⇒ EasySettingPresenter
Returns a new instance of EasySettingPresenter.
10
11
12
13
14
15
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 10
def initialize(settings_params={}, project = nil)
@settings = settings_params || {}
@settings = @settings.dup.symbolize_keys
self.project = project
super(EasySetting.new, nil)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *attrs) ⇒ Object
119
120
121
122
123
124
125
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 119
def method_missing(meth, *attrs)
if @plugin && @plugin.settings[:easy_settings] && @plugin.settings[:easy_settings].keys.include?(meth.to_sym)
EasySetting.value(prefix+meth.to_s, project_id)
else
super
end
end
|
Instance Attribute Details
Returns the value of attribute plugin.
4
5
6
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 4
def plugin
@plugin
end
|
#project_id ⇒ Object
Returns the value of attribute project_id.
4
5
6
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 4
def project_id
@project_id
end
|
Class Method Details
.boolean_keys ⇒ Object
6
7
8
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 6
def self.boolean_keys
@boolean_keys ||= []
end
|
Instance Method Details
#boolean_keys ⇒ Object
TODO - more dynamic solution?
78
79
80
81
82
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 78
def boolean_keys
from_easy_setting = EasySetting.boolean_keys
ActiveSupport::Deprecation.warn("EasySetting.boolean_keys has been deprecated, use EasySettingPresenter#boolean_keys instead") if from_easy_setting.any?
from_easy_setting.concat(self.class.boolean_keys)
end
|
#easy_settings ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 37
def easy_settings
@easy_settings ||= @settings.collect do |name, value|
value.delete_if{|v| v.blank? } if value.is_a?(Array)
name = prefix+name.to_s
set = EasySetting.where(name: name.to_s, project_id: project_id).first || EasySetting.new(name: name.to_s, project_id: project_id)
set.value = format_value(name, value)
set
end
end
|
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 93
def format_value(name, value)
case name.to_sym
when *boolean_keys
value.to_boolean
when :attachment_description
esa = EasySetting.where(:name => 'attachment_description_required', :project_id => nil).first
case value
when 'required'
esa.update_attribute(:value, true)
true
when '1'
esa.update_attribute(:value, false)
true
else
esa.update_attribute(:value, false)
false
end
when :agile_board_statuses
value[:progress] = value.delete('progress') if value["progress"]
value[:done] = value.delete('done') if value["done"]
value
else
value
end
end
|
55
56
57
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 55
def id
@plugin && @plugin.id
end
|
#model_name ⇒ Object
67
68
69
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 67
def model_name
EasySetting.model_name
end
|
#param_key ⇒ Object
70
71
72
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 70
def param_key
EasySetting.param_key
end
|
#persisted? ⇒ Boolean
51
52
53
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 51
def persisted?
!!@plugin
end
|
59
60
61
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 59
def prefix
@plugin && (@plugin.id.to_s + '_') || ''
end
|
#project=(project_or_project_id) ⇒ Object
17
18
19
20
21
22
23
24
25
26
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 17
def project=(project_or_project_id)
if project_or_project_id.is_a?(Project)
@project_id = project_or_project_id.id
elsif !project_or_project_id.nil?
@project_id = project_or_project_id.to_i
else
@project_id = nil
end
@easy_settings = nil
end
|
84
85
86
87
88
89
90
91
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 84
def save
unsaved_settings.clear
easy_settings.each do |setting|
setting.save
unsaved_settings << setting unless setting.persisted?
end
unsaved_settings.empty?
end
|
73
74
75
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 73
def to_key
@plugin && [@plugin.id]
end
|
TODO: form rendering methods. Maybe push them to the parent?
64
65
66
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 64
def to_model
self
end
|
#unsaved_settings ⇒ Object
33
34
35
|
# File 'app/presenters/redmine_extensions/easy_setting_presenter.rb', line 33
def unsaved_settings
@unsaved_settings ||= []
end
|