Feature #1358 » linkable_custom_fields.diff
app/helpers/queries_helper.rb (working copy) | ||
---|---|---|
30 | 30 |
def column_content(column, issue) |
31 | 31 |
if column.is_a?(QueryCustomFieldColumn) |
32 | 32 |
cv = issue.custom_values.detect {|v| v.custom_field_id == column.custom_field.id} |
33 |
show_value(cv) |
|
33 |
show_value_plain(cv)
|
|
34 | 34 |
else |
35 | 35 |
value = issue.send(column.name) |
36 | 36 |
if value.is_a?(Date) |
app/helpers/timelog_helper.rb (working copy) | ||
---|---|---|
93 | 93 |
entry.hours.to_s.gsub('.', decimal_separator), |
94 | 94 |
entry.comments |
95 | 95 |
] |
96 |
fields += custom_fields.collect {|f| show_value(entry.custom_value_for(f)) } |
|
96 |
fields += custom_fields.collect {|f| show_value_plain(entry.custom_value_for(f)) }
|
|
97 | 97 |
|
98 | 98 |
csv << fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end } |
99 | 99 |
end |
app/helpers/custom_fields_helper.rb (working copy) | ||
---|---|---|
61 | 61 |
def custom_field_tag_with_label(name, custom_value) |
62 | 62 |
custom_field_label_tag(name, custom_value) + custom_field_tag(name, custom_value) |
63 | 63 |
end |
64 |
|
|
65 |
# Return a clean URL for a given custom field value |
|
66 |
def url_format(custom_value) |
|
67 |
url = custom_value.custom_field.url.strip |
|
68 |
return false unless url.length > 0 |
|
64 | 69 | |
65 |
# Return a string used to display a custom value |
|
70 |
formatted_value = format_value(custom_value.value, custom_value.custom_field.field_format) |
|
71 |
while (url.sub!(/__VALUE__/, h(formatted_value.strip))) |
|
72 |
end |
|
73 |
return url |
|
74 |
end |
|
75 | ||
76 |
# Return a formatted string used to display a custom value (including link if URL defined on custom_field) |
|
66 | 77 |
def show_value(custom_value) |
67 | 78 |
return "" unless custom_value |
68 |
format_value(custom_value.value, custom_value.custom_field.field_format) |
|
79 |
formatted_value = format_value(custom_value.value, custom_value.custom_field.field_format) |
|
80 |
if (value = url_format(custom_value)) |
|
81 |
return link_to formatted_value, value, :target=>'_blank' |
|
82 |
else |
|
83 |
return h(format_value(custom_value.value, custom_value.custom_field.field_format)) |
|
84 |
end |
|
69 | 85 |
end |
86 | ||
87 |
# Return an escaped string used to display a custom value |
|
88 |
def show_value_plain(custom_value) |
|
89 |
return "" unless custom_value |
|
90 |
return h(format_value(custom_value.value, custom_value.custom_field.field_format)) |
|
91 |
end |
|
70 | 92 |
|
71 | 93 |
# Return a string used to display a custom value |
72 | 94 |
def format_value(value, field_format) |
app/views/custom_fields/_form.rhtml (working copy) | ||
---|---|---|
8 | 8 |
p_regexp = $("custom_field_regexp"); |
9 | 9 |
p_values = $("custom_field_possible_values"); |
10 | 10 |
p_searchable = $("custom_field_searchable"); |
11 |
p_url = $("custom_field_url"); |
|
11 | 12 |
p_default = $("custom_field_default_value"); |
12 | 13 |
|
13 | 14 |
p_default.setAttribute('type','text'); |
... | ... | |
65 | 66 |
:rows => 15 %> |
66 | 67 |
<br /><em><%= l(:text_custom_field_possible_values_info) %></em></p> |
67 | 68 |
<p><%= @custom_field.field_format == 'bool' ? f.check_box(:default_value) : f.text_field(:default_value) %></p> |
69 |
<p><%= f.text_field :url, :size => 60 %> |
|
70 |
<br /><%= l(:text_custom_field_url_info) %></p> |
|
68 | 71 |
</div> |
69 | 72 | |
70 | 73 |
<div class="box"> |
app/views/mailer/_issue_text_plain.rhtml (working copy) | ||
---|---|---|
7 | 7 |
<%=l(:field_assigned_to)%>: <%= issue.assigned_to %> |
8 | 8 |
<%=l(:field_category)%>: <%= issue.category %> |
9 | 9 |
<%=l(:field_fixed_version)%>: <%= issue.fixed_version %> |
10 |
<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> |
|
10 |
<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value_plain(c) %>
|
|
11 | 11 |
<% end %> |
12 | 12 | |
13 | 13 |
<%= issue.description %> |
app/views/projects/show.rhtml (working copy) | ||
---|---|---|
10 | 10 |
<% end %> |
11 | 11 |
<% @project.custom_values.each do |custom_value| %> |
12 | 12 |
<% if !custom_value.value.empty? %> |
13 |
<li><%= custom_value.custom_field.name%>: <%=h show_value(custom_value) %></li>
|
|
13 |
<li><%= custom_value.custom_field.name%>: <%= show_value(custom_value) %></li> |
|
14 | 14 |
<% end %> |
15 | 15 |
<% end %> |
16 | 16 |
</ul> |
app/views/account/show.rhtml (working copy) | ||
---|---|---|
11 | 11 |
<% end %> |
12 | 12 |
<% for custom_value in @custom_values %> |
13 | 13 |
<% if !custom_value.value.empty? %> |
14 |
<li><%= custom_value.custom_field.name%>: <%=h show_value(custom_value) %></li>
|
|
14 |
<li><%= custom_value.custom_field.name%>: <%= show_value(custom_value) %></li> |
|
15 | 15 |
<% end %> |
16 | 16 |
<% end %> |
17 | 17 |
<li><%=l(:label_registered_on)%>: <%= format_date(@user.created_on) %></li> |
app/views/issues/show.rhtml (working copy) | ||
---|---|---|
46 | 46 |
<tr> |
47 | 47 |
<% n = 0 -%> |
48 | 48 |
<% @issue.custom_values.each do |value| -%> |
49 |
<td valign="top"><b><%=h value.custom_field.name %>:</b></td><td valign="top"><%= simple_format(h(show_value(value))) %></td>
|
|
49 |
<td valign="top"><b><%=h value.custom_field.name %>:</b></td><td valign="top"><%= simple_format(show_value(value)) %></td>
|
|
50 | 50 |
<% n = n + 1 |
51 | 51 |
if (n > 1) |
52 | 52 |
n = 0 %> |
config/locales/en.yml (working copy) | ||
---|---|---|
755 | 755 |
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." |
756 | 756 |
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' |
757 | 757 |
text_custom_field_possible_values_info: 'One line for each value' |
758 |
text_custom_field_url_info: '(__VALUE__ is a placeholder for each of the field values, eg. http://www.google.com/search?q=__VALUE__)' |
|
758 | 759 |
|
759 | 760 |
default_role_manager: Manager |
760 | 761 |
default_role_developper: Developer |
db/migrate/20090304184821_add_custom_fields_url.rb (revision 0) | ||
---|---|---|
1 |
class AddCustomFieldsUrl < ActiveRecord::Migration |
|
2 |
def self.up |
|
3 |
add_column :custom_fields, :url, :string, :limit=>255, :default=>"", :null=>false |
|
4 |
end |
|
5 | ||
6 |
def self.down |
|
7 |
remove_column :custom_fields, :url |
|
8 |
end |
|
9 |
end |