Commit 0fbc5250 authored by jplang's avatar jplang

Fixed: Custom field is rendered, even if its value is empty (for multiple) (#18654).

git-svn-id: https://svn.redmine.org/redmine/trunk@13864 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent d04576fd
......@@ -117,6 +117,17 @@ module CustomFieldsHelper
Redmine::FieldFormat.as_select(custom_field.class.customized_class.name)
end
# Yields the given block for each custom field value of object that should be
# displayed, with the custom field and the formatted value as arguments
def render_custom_field_values(object, &block)
object.visible_custom_field_values.each do |custom_value|
formatted = show_value(custom_value)
if formatted.present?
yield custom_value.custom_field, formatted
end
end
end
# Renders the custom_values in api views
def render_api_custom_values(custom_values, api)
api.array :custom_fields do
......
......@@ -31,10 +31,8 @@
<li><span class="label"><%=l(:label_subproject_plural)%>:</span>
<%= @subprojects.collect{|p| link_to p, project_path(p)}.join(", ").html_safe %></li>
<% end %>
<% @project.visible_custom_field_values.each do |custom_value| %>
<% if !custom_value.value.blank? %>
<li><span class="label"><%=h custom_value.custom_field.name %>:</span> <%=h show_value(custom_value) %></li>
<% end %>
<% render_custom_field_values(@project) do |custom_field, formatted| %>
<li><span class="label"><%= custom_field.name %>:</span> <%= formatted %></li>
<% end %>
</ul>
......
......@@ -7,10 +7,8 @@
<p><%=h version.description %></p>
<% if version.custom_field_values.any? %>
<ul>
<% version.custom_field_values.each do |custom_value| %>
<% if custom_value.value.present? %>
<li><%=h custom_value.custom_field.name %>: <%=h show_value(custom_value) %></li>
<% end %>
<% render_custom_field_values(version) do |custom_field, formatted| %>
<li><span class="label"><%= custom_field.name %>:</span> <%= formatted %></li>
<% end %>
</ul>
<% end %>
......
......@@ -351,6 +351,18 @@ class ProjectsControllerTest < ActionController::TestCase
assert_select 'li', :text => /Development status/, :count => 0
end
def test_show_should_not_display_blank_custom_fields_with_multiple_values
f1 = ProjectCustomField.generate! :field_format => 'list', :possible_values => %w(Foo Bar), :multiple => true
f2 = ProjectCustomField.generate! :field_format => 'list', :possible_values => %w(Baz Qux), :multiple => true
project = Project.generate!(:custom_field_values => {f2.id.to_s => %w(Qux)})
get :show, :id => project.id
assert_response :success
assert_select 'li', :text => /#{f1.name}/, :count => 0
assert_select 'li', :text => /#{f2.name}/
end
def test_show_should_not_fail_when_custom_values_are_nil
project = Project.find_by_identifier('ecookbook')
project.custom_values.first.update_attribute(:value, nil)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment