##// END OF EJS Templates
Adds support for links on values for various custom field formats (#1358)....
Jean-Philippe Lang -
r12167:4333a80bc1f9
parent child
Show More
@@ -1,2 +1,3
1 <p><%= f.select :default_value, [[]]+@custom_field.possible_values_options %></p>
1 <p><%= f.select :default_value, [[]]+@custom_field.possible_values_options %></p>
2 <p><%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %></p>
2 <p><%= edit_tag_style_tag f %></p>
3 <p><%= edit_tag_style_tag f %></p>
@@ -1,2 +1,3
1 <p><%= f.text_field(:default_value, :size => 10) %></p>
1 <p><%= f.text_field(:default_value, :size => 10) %></p>
2 <%= calendar_for('custom_field_default_value') %>
2 <%= calendar_for('custom_field_default_value') %>
3 <p><%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %></p>
@@ -3,4 +3,5
3 <em class="info"><%= l(:text_custom_field_possible_values_info) %></em>
3 <em class="info"><%= l(:text_custom_field_possible_values_info) %></em>
4 </p>
4 </p>
5 <p><%= f.text_field(:default_value) %></p>
5 <p><%= f.text_field(:default_value) %></p>
6 <p><%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %></p>
6 <p><%= edit_tag_style_tag f %></p>
7 <p><%= edit_tag_style_tag f %></p>
@@ -1,2 +1,3
1 <%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>
1 <%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>
2 <p><%= f.text_field(:default_value) %></p>
2 <p><%= f.text_field(:default_value) %></p>
3 <p><%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %></p>
@@ -1,3 +1,4
1 <%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>
1 <%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>
2 <p><%= f.check_box :text_formatting, {:label => :setting_text_formatting}, 'full', '' %></p>
2 <p><%= f.check_box :text_formatting, {:label => :setting_text_formatting, :data => {:disables => '#custom_field_url_pattern'}}, 'full', '' %></p>
3 <p><%= f.text_field(:default_value) %></p>
3 <p><%= f.text_field(:default_value) %></p>
4 <p><%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %></p>
@@ -1105,3 +1105,4 ar:
1105 label_only: only
1105 label_only: only
1106 label_drop_down_list: drop-down list
1106 label_drop_down_list: drop-down list
1107 label_checkboxes: checkboxes
1107 label_checkboxes: checkboxes
1108 label_link_values_to: Link values to URL
@@ -1202,3 +1202,4 az:
1202 label_only: only
1202 label_only: only
1203 label_drop_down_list: drop-down list
1203 label_drop_down_list: drop-down list
1204 label_checkboxes: checkboxes
1204 label_checkboxes: checkboxes
1205 label_link_values_to: Link values to URL
@@ -1102,3 +1102,4 bg:
1102 description_date_from: Π’ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ Π½Π°Ρ‡Π°Π»Π½Π° Π΄Π°Ρ‚Π°
1102 description_date_from: Π’ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ Π½Π°Ρ‡Π°Π»Π½Π° Π΄Π°Ρ‚Π°
1103 description_date_to: Π’ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΊΡ€Π°ΠΉΠ½Π° Π΄Π°Ρ‚Π°
1103 description_date_to: Π’ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΊΡ€Π°ΠΉΠ½Π° Π΄Π°Ρ‚Π°
1104 text_repository_identifier_info: 'ПозволСни са ΠΌΠ°Π»ΠΊΠΈ Π±ΡƒΠΊΠ²ΠΈ (a-z), Ρ†ΠΈΡ„Ρ€ΠΈ, Ρ‚ΠΈΡ€Π΅Ρ‚Π° ΠΈ _.<br />ΠŸΡ€ΠΎΠΌΡΠ½Π° слСд ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π½Π΅ Π΅ възмоТна.'
1104 text_repository_identifier_info: 'ПозволСни са ΠΌΠ°Π»ΠΊΠΈ Π±ΡƒΠΊΠ²ΠΈ (a-z), Ρ†ΠΈΡ„Ρ€ΠΈ, Ρ‚ΠΈΡ€Π΅Ρ‚Π° ΠΈ _.<br />ΠŸΡ€ΠΎΠΌΡΠ½Π° слСд ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π½Π΅ Π΅ възмоТна.'
1105 label_link_values_to: Link values to URL
@@ -1118,3 +1118,4 bs:
1118 label_only: only
1118 label_only: only
1119 label_drop_down_list: drop-down list
1119 label_drop_down_list: drop-down list
1120 label_checkboxes: checkboxes
1120 label_checkboxes: checkboxes
1121 label_link_values_to: Link values to URL
@@ -1107,3 +1107,4 ca:
1107 label_only: only
1107 label_only: only
1108 label_drop_down_list: drop-down list
1108 label_drop_down_list: drop-down list
1109 label_checkboxes: checkboxes
1109 label_checkboxes: checkboxes
1110 label_link_values_to: Link values to URL
@@ -1108,3 +1108,4 cs:
1108 label_only: only
1108 label_only: only
1109 label_drop_down_list: drop-down list
1109 label_drop_down_list: drop-down list
1110 label_checkboxes: checkboxes
1110 label_checkboxes: checkboxes
1111 label_link_values_to: Link values to URL
@@ -1122,3 +1122,4 da:
1122 label_only: only
1122 label_only: only
1123 label_drop_down_list: drop-down list
1123 label_drop_down_list: drop-down list
1124 label_checkboxes: checkboxes
1124 label_checkboxes: checkboxes
1125 label_link_values_to: Link values to URL
@@ -1117,3 +1117,4 de:
1117 label_only: only
1117 label_only: only
1118 label_drop_down_list: drop-down list
1118 label_drop_down_list: drop-down list
1119 label_checkboxes: checkboxes
1119 label_checkboxes: checkboxes
1120 label_link_values_to: Link values to URL
@@ -1105,3 +1105,4 el:
1105 label_only: only
1105 label_only: only
1106 label_drop_down_list: drop-down list
1106 label_drop_down_list: drop-down list
1107 label_checkboxes: checkboxes
1107 label_checkboxes: checkboxes
1108 label_link_values_to: Link values to URL
@@ -1107,3 +1107,4 en-GB:
1107 label_only: only
1107 label_only: only
1108 label_drop_down_list: drop-down list
1108 label_drop_down_list: drop-down list
1109 label_checkboxes: checkboxes
1109 label_checkboxes: checkboxes
1110 label_link_values_to: Link values to URL
@@ -907,6 +907,7 en:
907 label_only: only
907 label_only: only
908 label_drop_down_list: drop-down list
908 label_drop_down_list: drop-down list
909 label_checkboxes: checkboxes
909 label_checkboxes: checkboxes
910 label_link_values_to: Link values to URL
910
911
911 button_login: Login
912 button_login: Login
912 button_submit: Submit
913 button_submit: Submit
@@ -1140,3 +1140,4 es:
1140 label_only: only
1140 label_only: only
1141 label_drop_down_list: drop-down list
1141 label_drop_down_list: drop-down list
1142 label_checkboxes: checkboxes
1142 label_checkboxes: checkboxes
1143 label_link_values_to: Link values to URL
@@ -1118,3 +1118,4 et:
1118 label_only: only
1118 label_only: only
1119 label_drop_down_list: drop-down list
1119 label_drop_down_list: drop-down list
1120 label_checkboxes: checkboxes
1120 label_checkboxes: checkboxes
1121 label_link_values_to: Link values to URL
@@ -1106,3 +1106,4 eu:
1106 label_only: only
1106 label_only: only
1107 label_drop_down_list: drop-down list
1107 label_drop_down_list: drop-down list
1108 label_checkboxes: checkboxes
1108 label_checkboxes: checkboxes
1109 label_link_values_to: Link values to URL
@@ -1107,3 +1107,4 fa:
1107 label_only: only
1107 label_only: only
1108 label_drop_down_list: drop-down list
1108 label_drop_down_list: drop-down list
1109 label_checkboxes: checkboxes
1109 label_checkboxes: checkboxes
1110 label_link_values_to: Link values to URL
@@ -1126,3 +1126,4 fi:
1126 label_only: only
1126 label_only: only
1127 label_drop_down_list: drop-down list
1127 label_drop_down_list: drop-down list
1128 label_checkboxes: checkboxes
1128 label_checkboxes: checkboxes
1129 label_link_values_to: Link values to URL
@@ -883,6 +883,7 fr:
883 label_only: seulement
883 label_only: seulement
884 label_drop_down_list: liste dΓ©roulante
884 label_drop_down_list: liste dΓ©roulante
885 label_checkboxes: cases Γ  cocher
885 label_checkboxes: cases Γ  cocher
886 label_link_values_to: Lier les valeurs vers l'URL
886
887
887 button_login: Connexion
888 button_login: Connexion
888 button_submit: Soumettre
889 button_submit: Soumettre
@@ -1116,3 +1116,4 gl:
1116 label_only: only
1116 label_only: only
1117 label_drop_down_list: drop-down list
1117 label_drop_down_list: drop-down list
1118 label_checkboxes: checkboxes
1118 label_checkboxes: checkboxes
1119 label_link_values_to: Link values to URL
@@ -1110,3 +1110,4 he:
1110 label_only: only
1110 label_only: only
1111 label_drop_down_list: drop-down list
1111 label_drop_down_list: drop-down list
1112 label_checkboxes: checkboxes
1112 label_checkboxes: checkboxes
1113 label_link_values_to: Link values to URL
@@ -1106,3 +1106,4 hr:
1106 label_only: only
1106 label_only: only
1107 label_drop_down_list: drop-down list
1107 label_drop_down_list: drop-down list
1108 label_checkboxes: checkboxes
1108 label_checkboxes: checkboxes
1109 label_link_values_to: Link values to URL
@@ -1124,3 +1124,4
1124 label_only: only
1124 label_only: only
1125 label_drop_down_list: drop-down list
1125 label_drop_down_list: drop-down list
1126 label_checkboxes: checkboxes
1126 label_checkboxes: checkboxes
1127 label_link_values_to: Link values to URL
@@ -1109,3 +1109,4 id:
1109 label_only: only
1109 label_only: only
1110 label_drop_down_list: drop-down list
1110 label_drop_down_list: drop-down list
1111 label_checkboxes: checkboxes
1111 label_checkboxes: checkboxes
1112 label_link_values_to: Link values to URL
@@ -1104,3 +1104,4 it:
1104 label_only: only
1104 label_only: only
1105 label_drop_down_list: drop-down list
1105 label_drop_down_list: drop-down list
1106 label_checkboxes: checkboxes
1106 label_checkboxes: checkboxes
1107 label_link_values_to: Link values to URL
@@ -1132,3 +1132,4 ja:
1132 label_only: only
1132 label_only: only
1133 label_drop_down_list: drop-down list
1133 label_drop_down_list: drop-down list
1134 label_checkboxes: checkboxes
1134 label_checkboxes: checkboxes
1135 label_link_values_to: Link values to URL
@@ -1154,3 +1154,4 ko:
1154 label_only: only
1154 label_only: only
1155 label_drop_down_list: drop-down list
1155 label_drop_down_list: drop-down list
1156 label_checkboxes: checkboxes
1156 label_checkboxes: checkboxes
1157 label_link_values_to: Link values to URL
@@ -1164,3 +1164,4 lt:
1164 label_only: only
1164 label_only: only
1165 label_drop_down_list: drop-down list
1165 label_drop_down_list: drop-down list
1166 label_checkboxes: checkboxes
1166 label_checkboxes: checkboxes
1167 label_link_values_to: Link values to URL
@@ -1099,3 +1099,4 lv:
1099 label_only: only
1099 label_only: only
1100 label_drop_down_list: drop-down list
1100 label_drop_down_list: drop-down list
1101 label_checkboxes: checkboxes
1101 label_checkboxes: checkboxes
1102 label_link_values_to: Link values to URL
@@ -1105,3 +1105,4 mk:
1105 label_only: only
1105 label_only: only
1106 label_drop_down_list: drop-down list
1106 label_drop_down_list: drop-down list
1107 label_checkboxes: checkboxes
1107 label_checkboxes: checkboxes
1108 label_link_values_to: Link values to URL
@@ -1106,3 +1106,4 mn:
1106 label_only: only
1106 label_only: only
1107 label_drop_down_list: drop-down list
1107 label_drop_down_list: drop-down list
1108 label_checkboxes: checkboxes
1108 label_checkboxes: checkboxes
1109 label_link_values_to: Link values to URL
@@ -1084,3 +1084,4 nl:
1084 label_only: only
1084 label_only: only
1085 label_drop_down_list: drop-down list
1085 label_drop_down_list: drop-down list
1086 label_checkboxes: checkboxes
1086 label_checkboxes: checkboxes
1087 label_link_values_to: Link values to URL
@@ -1095,3 +1095,4
1095 label_only: only
1095 label_only: only
1096 label_drop_down_list: drop-down list
1096 label_drop_down_list: drop-down list
1097 label_checkboxes: checkboxes
1097 label_checkboxes: checkboxes
1098 label_link_values_to: Link values to URL
@@ -1127,3 +1127,4 pl:
1127 label_only: only
1127 label_only: only
1128 label_drop_down_list: drop-down list
1128 label_drop_down_list: drop-down list
1129 label_checkboxes: checkboxes
1129 label_checkboxes: checkboxes
1130 label_link_values_to: Link values to URL
@@ -1125,3 +1125,4 pt-BR:
1125 label_only: only
1125 label_only: only
1126 label_drop_down_list: drop-down list
1126 label_drop_down_list: drop-down list
1127 label_checkboxes: checkboxes
1127 label_checkboxes: checkboxes
1128 label_link_values_to: Link values to URL
@@ -1111,3 +1111,4 pt:
1111 label_only: only
1111 label_only: only
1112 label_drop_down_list: drop-down list
1112 label_drop_down_list: drop-down list
1113 label_checkboxes: checkboxes
1113 label_checkboxes: checkboxes
1114 label_link_values_to: Link values to URL
@@ -1100,3 +1100,4 ro:
1100 label_only: only
1100 label_only: only
1101 label_drop_down_list: drop-down list
1101 label_drop_down_list: drop-down list
1102 label_checkboxes: checkboxes
1102 label_checkboxes: checkboxes
1103 label_link_values_to: Link values to URL
@@ -1214,3 +1214,4 ru:
1214 label_only: only
1214 label_only: only
1215 label_drop_down_list: drop-down list
1215 label_drop_down_list: drop-down list
1216 label_checkboxes: checkboxes
1216 label_checkboxes: checkboxes
1217 label_link_values_to: Link values to URL
@@ -1095,3 +1095,4 sk:
1095 label_only: only
1095 label_only: only
1096 label_drop_down_list: drop-down list
1096 label_drop_down_list: drop-down list
1097 label_checkboxes: checkboxes
1097 label_checkboxes: checkboxes
1098 label_link_values_to: Link values to URL
@@ -1105,3 +1105,4 sl:
1105 label_only: only
1105 label_only: only
1106 label_drop_down_list: drop-down list
1106 label_drop_down_list: drop-down list
1107 label_checkboxes: checkboxes
1107 label_checkboxes: checkboxes
1108 label_link_values_to: Link values to URL
@@ -1101,3 +1101,4 sq:
1101 label_only: only
1101 label_only: only
1102 label_drop_down_list: drop-down list
1102 label_drop_down_list: drop-down list
1103 label_checkboxes: checkboxes
1103 label_checkboxes: checkboxes
1104 label_link_values_to: Link values to URL
@@ -1107,3 +1107,4 sr-YU:
1107 label_only: only
1107 label_only: only
1108 label_drop_down_list: drop-down list
1108 label_drop_down_list: drop-down list
1109 label_checkboxes: checkboxes
1109 label_checkboxes: checkboxes
1110 label_link_values_to: Link values to URL
@@ -1106,3 +1106,4 sr:
1106 label_only: only
1106 label_only: only
1107 label_drop_down_list: drop-down list
1107 label_drop_down_list: drop-down list
1108 label_checkboxes: checkboxes
1108 label_checkboxes: checkboxes
1109 label_link_values_to: Link values to URL
@@ -1143,3 +1143,4 sv:
1143 label_only: only
1143 label_only: only
1144 label_drop_down_list: drop-down list
1144 label_drop_down_list: drop-down list
1145 label_checkboxes: checkboxes
1145 label_checkboxes: checkboxes
1146 label_link_values_to: Link values to URL
@@ -1102,3 +1102,4 th:
1102 label_only: only
1102 label_only: only
1103 label_drop_down_list: drop-down list
1103 label_drop_down_list: drop-down list
1104 label_checkboxes: checkboxes
1104 label_checkboxes: checkboxes
1105 label_link_values_to: Link values to URL
@@ -1114,3 +1114,4 tr:
1114 label_only: only
1114 label_only: only
1115 label_drop_down_list: drop-down list
1115 label_drop_down_list: drop-down list
1116 label_checkboxes: checkboxes
1116 label_checkboxes: checkboxes
1117 label_link_values_to: Link values to URL
@@ -1100,3 +1100,4 uk:
1100 label_only: only
1100 label_only: only
1101 label_drop_down_list: drop-down list
1101 label_drop_down_list: drop-down list
1102 label_checkboxes: checkboxes
1102 label_checkboxes: checkboxes
1103 label_link_values_to: Link values to URL
@@ -1158,3 +1158,4 vi:
1158 label_only: only
1158 label_only: only
1159 label_drop_down_list: drop-down list
1159 label_drop_down_list: drop-down list
1160 label_checkboxes: checkboxes
1160 label_checkboxes: checkboxes
1161 label_link_values_to: Link values to URL
@@ -1185,3 +1185,4
1185 description_date_from: θΌΈε…₯θ΅·ε§‹ζ—₯期
1185 description_date_from: θΌΈε…₯θ΅·ε§‹ζ—₯期
1186 description_date_to: θΌΈε…₯硐束ζ—₯期
1186 description_date_to: θΌΈε…₯硐束ζ—₯期
1187 text_repository_identifier_info: '僅允許使用小寫英文字母 (a-z), ι˜Ώζ‹‰δΌ―ζ•Έε­—, θ™›η·šθˆ‡εΊ•η·šγ€‚<br />δΈ€ζ—¦ε„²ε­˜δΉ‹εΎŒ, 代璼便焑法再欑蒫更改。'
1187 text_repository_identifier_info: '僅允許使用小寫英文字母 (a-z), ι˜Ώζ‹‰δΌ―ζ•Έε­—, θ™›η·šθˆ‡εΊ•η·šγ€‚<br />δΈ€ζ—¦ε„²ε­˜δΉ‹εΎŒ, 代璼便焑法再欑蒫更改。'
1188 label_link_values_to: Link values to URL
@@ -1106,3 +1106,4 zh:
1106 label_only: only
1106 label_only: only
1107 label_drop_down_list: drop-down list
1107 label_drop_down_list: drop-down list
1108 label_checkboxes: checkboxes
1108 label_checkboxes: checkboxes
1109 label_link_values_to: Link values to URL
@@ -80,6 +80,8 module Redmine
80 CustomField.store_accessor :format_store, *args
80 CustomField.store_accessor :format_store, *args
81 end
81 end
82
82
83 field_attributes :url_pattern
84
83 def name
85 def name
84 self.class.format_name
86 self.class.format_name
85 end
87 end
@@ -144,9 +146,45 module Redmine
144 end
146 end
145
147
146 def formatted_value(view, custom_field, value, customized=nil, html=false)
148 def formatted_value(view, custom_field, value, customized=nil, html=false)
147 cast_value(custom_field, value, customized)
149 casted = cast_value(custom_field, value, customized)
150 if custom_field.url_pattern.present?
151 texts_and_urls = Array.wrap(casted).map do |single_value|
152 text = view.format_object(single_value, false).to_s
153 url = url_from_pattern(custom_field, single_value, customized)
154 [text, url]
155 end
156 links = texts_and_urls.sort_by(&:first).map {|text, url| view.link_to text, url}
157 links.join(', ').html_safe
158 else
159 casted
160 end
148 end
161 end
149
162
163 # Returns an URL generated with the custom field URL pattern
164 # and variables substitution:
165 # %value% => the custom field value
166 # %id% => id of the customized object
167 # %project_id% => id of the project of the customized object if defined
168 # %project_identifier% => identifier of the project of the customized object if defined
169 # %m1%, %m2%... => capture groups matches of the custom field regexp if defined
170 def url_from_pattern(custom_field, value, customized)
171 url = custom_field.url_pattern.to_s.dup
172 url.gsub!('%value%') {value.to_s}
173 url.gsub!('%id%') {customized.id.to_s}
174 url.gsub!('%project_id%') {(customized.respond_to?(:project) ? customized.project.try(:id) : nil).to_s}
175 url.gsub!('%project_identifier%') {(customized.respond_to?(:project) ? customized.project.try(:identifier) : nil).to_s}
176 if custom_field.regexp.present?
177 url.gsub!(%r{%m(\d+)%}) do
178 m = $1.to_i
179 if matches ||= value.to_s.match(Regexp.new(custom_field.regexp))
180 matches[m].to_s
181 end
182 end
183 end
184 url
185 end
186 protected :url_from_pattern
187
150 def edit_tag(view, tag_id, tag_name, custom_value, options={})
188 def edit_tag(view, tag_id, tag_name, custom_value, options={})
151 view.text_field_tag(tag_name, custom_value.value, options.merge(:id => tag_id))
189 view.text_field_tag(tag_name, custom_value.value, options.merge(:id => tag_id))
152 end
190 end
@@ -236,8 +274,14 module Redmine
236 field_attributes :text_formatting
274 field_attributes :text_formatting
237
275
238 def formatted_value(view, custom_field, value, customized=nil, html=false)
276 def formatted_value(view, custom_field, value, customized=nil, html=false)
239 if html && custom_field.text_formatting == 'full'
277 if html
240 view.textilizable(value, :object => customized)
278 if custom_field.url_pattern.present?
279 super
280 elsif custom_field.text_formatting == 'full'
281 view.textilizable(value, :object => customized)
282 else
283 value.to_s
284 end
241 else
285 else
242 value.to_s
286 value.to_s
243 end
287 end
@@ -280,23 +324,11 module Redmine
280 add 'link'
324 add 'link'
281 self.searchable_supported = false
325 self.searchable_supported = false
282 self.form_partial = 'custom_fields/formats/link'
326 self.form_partial = 'custom_fields/formats/link'
283 field_attributes :url_pattern
284
327
285 def formatted_value(view, custom_field, value, customized=nil, html=false)
328 def formatted_value(view, custom_field, value, customized=nil, html=false)
286 if html
329 if html
287 if custom_field.url_pattern.present?
330 if custom_field.url_pattern.present?
288 url = custom_field.url_pattern.to_s.dup
331 url = url_from_pattern(custom_field, value, customized)
289 url.gsub!('%value%') {value.to_s}
290 url.gsub!('%id%') {customized.id.to_s}
291 url.gsub!('%project_id%') {(customized.respond_to?(:project) ? customized.project.try(:id) : nil).to_s}
292 url.gsub!('%project_identifier%') {(customized.respond_to?(:project) ? customized.project.try(:identifier) : nil).to_s}
293 if custom_field.regexp.present?
294 url.gsub!(%r{%m(\d+)%}) do
295 m = $1.to_i
296 matches ||= value.to_s.match(Regexp.new(custom_field.regexp))
297 matches[m].to_s if matches
298 end
299 end
300 else
332 else
301 url = value.to_s
333 url = value.to_s
302 unless url =~ %r{\A[a-z]+://}i
334 unless url =~ %r{\A[a-z]+://}i
@@ -116,6 +116,27 class Redmine::ListFieldFormatTest < ActionView::TestCase
116 end
116 end
117 end
117 end
118
118
119 def test_field_with_url_pattern_should_link_value
120 field = IssueCustomField.new(:field_format => 'list', :url_pattern => 'http://localhost/%value%')
121 formatted = field.format.formatted_value(self, field, 'foo', Issue.new, true)
122 assert_equal '<a href="http://localhost/foo">foo</a>', formatted
123 assert formatted.html_safe?
124 end
125
126 def test_field_with_url_pattern_and_multiple_values_should_link_values
127 field = IssueCustomField.new(:field_format => 'list', :url_pattern => 'http://localhost/%value%')
128 formatted = field.format.formatted_value(self, field, ['foo', 'bar'], Issue.new, true)
129 assert_equal '<a href="http://localhost/bar">bar</a>, <a href="http://localhost/foo">foo</a>', formatted
130 assert formatted.html_safe?
131 end
132
133 def test_field_with_url_pattern_should_not_link_blank_value
134 field = IssueCustomField.new(:field_format => 'list', :url_pattern => 'http://localhost/%value%')
135 formatted = field.format.formatted_value(self, field, '', Issue.new, true)
136 assert_equal '', formatted
137 assert formatted.html_safe?
138 end
139
119 def test_edit_tag_with_check_box_style_and_multiple_should_select_current_values
140 def test_edit_tag_with_check_box_style_and_multiple_should_select_current_values
120 field = IssueCustomField.new(:field_format => 'list', :possible_values => ['Foo', 'Bar', 'Baz'], :is_required => false,
141 field = IssueCustomField.new(:field_format => 'list', :possible_values => ['Foo', 'Bar', 'Baz'], :is_required => false,
121 :multiple => true, :edit_tag_style => 'check_box')
142 :multiple => true, :edit_tag_style => 'check_box')
General Comments 0
You need to be logged in to leave comments. Login now