summaryrefslogtreecommitdiffstats
path: root/lib/redmine/field_format.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/redmine/field_format.rb')
-rw-r--r--lib/redmine/field_format.rb29
1 files changed, 22 insertions, 7 deletions
diff --git a/lib/redmine/field_format.rb b/lib/redmine/field_format.rb
index c4fd1b592..39b21c874 100644
--- a/lib/redmine/field_format.rb
+++ b/lib/redmine/field_format.rb
@@ -110,8 +110,8 @@ module Redmine
end
private_class_method :add
- def self.field_attributes(*args)
- CustomField.store_accessor :format_store, *args
+ def self.field_attributes(*)
+ CustomField.store_accessor(:format_store, *)
end
field_attributes :url_pattern, :full_width_layout
@@ -1086,8 +1086,15 @@ module Redmine
class ProgressbarFormat < Numeric
add 'progressbar'
- self.form_partial = nil
+ self.form_partial = 'custom_fields/formats/progressbar'
self.totalable_supported = false
+ field_attributes :ratio_interval
+
+ # Take the default value from Setting.issue_done_ratio_interval.to_i
+ # in order to have a consistent behaviour for default ratio interval.
+ def self.default_ratio_interval
+ Setting.issue_done_ratio_interval.to_i
+ end
def label
"label_progressbar"
@@ -1112,11 +1119,19 @@ module Redmine
order_statement(custom_field)
end
+ def before_custom_field_save(custom_field)
+ super
+
+ if custom_field.ratio_interval.blank?
+ custom_field.ratio_interval = self.class.default_ratio_interval
+ end
+ end
+
def edit_tag(view, tag_id, tag_name, custom_value, options={})
view.select_tag(
tag_name,
view.options_for_select(
- (0..100).step(Setting.issue_done_ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]},
+ (0..100).step(custom_value.custom_field.ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]},
custom_value.value
),
options.merge(id: tag_id, style: "width: 75px;")
@@ -1124,17 +1139,17 @@ module Redmine
end
def bulk_edit_tag(view, tag_id, tag_name, custom_field, objects, value, options={})
- opts = view.options_for_select([[l(:label_no_change_option), '']] + (0..100).step(Setting.issue_done_ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]})
+ opts = view.options_for_select([[l(:label_no_change_option), '']] + (0..100).step(custom_field.ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]})
view.select_tag(tag_name, opts, options.merge(id: tag_id, style: "width: 75px;")) +
bulk_clear_tag(view, tag_id, tag_name, custom_field, value)
end
def formatted_value(view, custom_field, value, customized=nil, html=false)
- text = "#{value}%"
if html
+ text = "#{value}%"
view.progress_bar(value.to_i, legend: (text if view.action_name == 'show'))
else
- text
+ value.to_s
end
end
end