3 module ApplicationHelper
5 Redmine::VERSION::MAJOR * 10 + Redmine::VERSION::MINOR
8 def editable(attribute_name, can, readonly_fields)
9 if readonly_fields.include?(attribute_name.to_s)
13 if redmine_version() >= 30
20 def editable_custom_field(custom_field, can, readonly_fields)
21 if readonly_fields.include?(custom_field.id.to_s)
25 if redmine_version() >= 30
32 def quick_edit_link_to(issue_ids, caption, attribute_name, additional_index, back_url, disabled)
33 target_specifier = build_target_specifier(attribute_name, additional_index)
35 ajax_url = quick_edit_issues_edit_path(:ids => issue_ids, :target_specifier => target_specifier, :back_url => back_url)
37 html_id = "quick_edit_context_#{attribute_name}"
38 html_id += "_#{additional_index}" unless additional_index.nil?
40 sprintf("<li id='#{html_id}'>%s</li>",
44 :class => 'quick_edit icon-edit',
45 :disabled => disabled,
51 def build_target_specifier(attribute_name, additional_index)
52 target = "issue[#{attribute_name}]"
53 target += "[#{additional_index}]" unless additional_index.nil?
57 def parse_target_specifier(target_specifier)
58 /^issue\[(.+?)\].*/ =~ target_specifier
59 if Regexp.last_match.nil?
63 attribute_name = Regexp.last_match(1)
65 /^issue\[.+?\]\[(\d+)\]$/ =~ target_specifier
66 if Regexp.last_match.nil?
67 additional_index = nil
68 result = [attribute_name]
70 additional_index = Regexp.last_match(1)
71 result = [attribute_name, additional_index]
77 def get_attribute_caption(attribute_name)
78 case attribute_name.to_sym
84 l(:field_parent_issue)
93 def get_attribute_type(attribute_name)
94 case attribute_name.to_sym
108 def parse_size(size, width_range, width_default, height_range, height_default)
109 size = size.split(",")
110 size[0] = width_default if size.length != 2 || !size[0].match(/\d{1,9}/)
111 size[1] = height_default if size.length != 2 || !size[1].match(/\d{1,9}/)
112 size[0] = size[0].to_i
113 size[1] = size[1].to_i
114 size[0] = width_default unless width_range.include?(size[0])
115 size[1] = height_default unless height_range.include?(size[1])