summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2010-01-03 11:47:25 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2010-01-03 11:47:25 +0000
commit9d2474c234d74983e70374870f52ea1bf74ef92a (patch)
tree8035577193d455712268217e52352f884f5580d1
parent7193817deabe2ac2e5a067fa3674b2d1d3973450 (diff)
downloadredmine-9d2474c234d74983e70374870f52ea1bf74ef92a.tar.gz
redmine-9d2474c234d74983e70374870f52ea1bf74ef92a.zip
Merged r3277 to r3279 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3280 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/issues_controller.rb2
-rw-r--r--app/helpers/custom_fields_helper.rb20
-rw-r--r--app/views/issues/bulk_edit.rhtml76
-rw-r--r--test/fixtures/custom_fields.yml14
-rw-r--r--test/fixtures/custom_fields_projects.yml6
-rw-r--r--test/functional/issues_controller_test.rb10
6 files changed, 94 insertions, 34 deletions
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 2e0ed6fb3..cd435ebe7 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -273,7 +273,7 @@ class IssuesController < ApplicationController
return
end
@available_statuses = Workflow.available_statuses(@project)
- @custom_fields = @project.issue_custom_fields.select {|f| f.field_format == 'list'}
+ @custom_fields = @project.all_issue_custom_fields
end
def move
diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb
index e11f7ccfe..330b1aa93 100644
--- a/app/helpers/custom_fields_helper.rb
+++ b/app/helpers/custom_fields_helper.rb
@@ -66,6 +66,26 @@ module CustomFieldsHelper
def custom_field_tag_with_label(name, custom_value)
custom_field_label_tag(name, custom_value) + custom_field_tag(name, custom_value)
end
+
+ def custom_field_tag_for_bulk_edit(custom_field)
+ field_name = "custom_field_values[#{custom_field.id}]"
+ field_id = "custom_field_values_#{custom_field.id}"
+ case custom_field.field_format
+ when "date"
+ text_field_tag(field_name, '', :id => field_id, :size => 10) +
+ calendar_for(field_id)
+ when "text"
+ text_area_tag(field_name, '', :id => field_id, :rows => 3, :style => 'width:90%')
+ when "bool"
+ select_tag(field_name, options_for_select([[l(:label_no_change_option), ''],
+ [l(:general_text_yes), '1'],
+ [l(:general_text_no), '0']]), :id => field_id)
+ when "list"
+ select_tag(field_name, options_for_select([[l(:label_no_change_option), '']] + custom_field.possible_values), :id => field_id)
+ else
+ text_field_tag(field_name, '', :id => field_id)
+ end
+ end
# Return a string used to display a custom value
def show_value(custom_value)
diff --git a/app/views/issues/bulk_edit.rhtml b/app/views/issues/bulk_edit.rhtml
index b298c3c46..b120f23c4 100644
--- a/app/views/issues/bulk_edit.rhtml
+++ b/app/views/issues/bulk_edit.rhtml
@@ -4,54 +4,68 @@
<% form_tag() do %>
<%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
-<div class="box">
+<div class="box tabular">
<fieldset>
<legend><%= l(:label_change_properties) %></legend>
+
+<div class="splitcontentleft">
<p>
-<label><%= l(:field_tracker) %>:
-<%= select_tag('tracker_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@project.trackers, :id, :name)) %></label>
+ <label><%= l(:field_tracker) %></label>
+ <%= select_tag('tracker_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@project.trackers, :id, :name)) %>
+</p>
<% if @available_statuses.any? %>
-<label><%= l(:field_status) %>:
-<%= select_tag('status_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %></label>
+<p>
+ <label><%= l(:field_status) %></label>
+ <%= select_tag('status_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(@available_statuses, :id, :name)) %>
+</p>
<% end %>
+<p>
+ <label><%= l(:field_priority) %></label>
+ <%= select_tag('priority_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.all, :id, :name)) %>
</p>
<p>
-<label><%= l(:field_priority) %>:
-<%= select_tag('priority_id', "<option value=\"\">#{l(:label_no_change_option)}</option>" + options_from_collection_for_select(IssuePriority.all, :id, :name)) %></label>
-<label><%= l(:field_category) %>:
-<%= select_tag('category_id', content_tag('option', l(:label_no_change_option), :value => '') +
+ <label><%= l(:field_assigned_to) %></label>
+ <%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') +
+ content_tag('option', l(:label_nobody), :value => 'none') +
+ options_from_collection_for_select(@project.assignable_users, :id, :name)) %>
+</p>
+<p>
+ <label><%= l(:field_category) %></label>
+ <%= select_tag('category_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_none), :value => 'none') +
- options_from_collection_for_select(@project.issue_categories, :id, :name)) %></label>
+ options_from_collection_for_select(@project.issue_categories, :id, :name)) %>
</p>
<p>
-<label><%= l(:field_assigned_to) %>:
-<%= select_tag('assigned_to_id', content_tag('option', l(:label_no_change_option), :value => '') +
- content_tag('option', l(:label_nobody), :value => 'none') +
- options_from_collection_for_select(@project.assignable_users, :id, :name)) %></label>
-<label><%= l(:field_fixed_version) %>:
-<%= select_tag('fixed_version_id', content_tag('option', l(:label_no_change_option), :value => '') +
+ <label><%= l(:field_fixed_version) %></label>
+ <%= select_tag('fixed_version_id', content_tag('option', l(:label_no_change_option), :value => '') +
content_tag('option', l(:label_none), :value => 'none') +
- version_options_for_select(@project.shared_versions.open)) %></label>
+ version_options_for_select(@project.shared_versions.open)) %>
</p>
-<p>
-<label><%= l(:field_start_date) %>:
-<%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %></label>
-<label><%= l(:field_due_date) %>:
-<%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %></label>
-<% if Issue.use_field_for_done_ratio? %>
-<label><%= l(:field_done_ratio) %>:
-<%= select_tag 'done_ratio', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></label>
+<% @custom_fields.each do |custom_field| %>
+ <p><label><%= h(custom_field.name) %></label> <%= custom_field_tag_for_bulk_edit(custom_field) %></p>
<% end %>
-</p>
-<% @custom_fields.each do |custom_field| %>
-<p><label><%= h(custom_field.name) %></label>
-<%= select_tag "custom_field_values[#{custom_field.id}]", options_for_select([[l(:label_no_change_option), '']] + custom_field.possible_values) %></label>
+<%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
+</div>
+
+<div class="splitcontentright">
+<p>
+ <label><%= l(:field_start_date) %></label>
+ <%= text_field_tag 'start_date', '', :size => 10 %><%= calendar_for('start_date') %>
+</p>
+<p>
+ <label><%= l(:field_due_date) %></label>
+ <%= text_field_tag 'due_date', '', :size => 10 %><%= calendar_for('due_date') %>
+</p>
+<% if Issue.use_field_for_done_ratio? %>
+<p>
+ <label><%= l(:field_done_ratio) %></label>
+ <%= select_tag 'done_ratio', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %>
</p>
<% end %>
+</div>
-<%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
</fieldset>
<fieldset><legend><%= l(:field_notes) %></legend>
@@ -60,5 +74,5 @@
</fieldset>
</div>
-<p><%= submit_tag l(:button_submit) %>
+<p><%= submit_tag l(:button_submit) %></p>
<% end %>
diff --git a/test/fixtures/custom_fields.yml b/test/fixtures/custom_fields.yml
index 70577176e..4400f1dae 100644
--- a/test/fixtures/custom_fields.yml
+++ b/test/fixtures/custom_fields.yml
@@ -115,3 +115,17 @@ custom_fields_008:
field_format: date
default_value: ""
editable: true
+custom_fields_009:
+ name: Project 1 cf
+ min_length: 0
+ regexp: ""
+ is_for_all: false
+ is_filter: true
+ type: IssueCustomField
+ max_length: 0
+ possible_values: ""
+ id: 9
+ is_required: false
+ field_format: date
+ default_value: ""
+ editable: true
diff --git a/test/fixtures/custom_fields_projects.yml b/test/fixtures/custom_fields_projects.yml
index 20670d5f5..bb9788bc0 100644
--- a/test/fixtures/custom_fields_projects.yml
+++ b/test/fixtures/custom_fields_projects.yml
@@ -1,2 +1,4 @@
---- {}
-
+---
+custom_fields_projects_001:
+ custom_field_id: 9
+ project_id: 1
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index e73e24a05..4b806de89 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -946,6 +946,16 @@ class IssuesControllerTest < ActionController::TestCase
get :bulk_edit, :ids => [1, 2]
assert_response :success
assert_template 'bulk_edit'
+
+ # Project specific custom field, date type
+ field = CustomField.find(9)
+ assert !field.is_for_all?
+ assert_equal 'date', field.field_format
+ assert_tag :input, :attributes => {:name => 'custom_field_values[9]'}
+
+ # System wide custom field
+ assert CustomField.find(1).is_for_all?
+ assert_tag :select, :attributes => {:name => 'custom_field_values[1]'}
end
def test_bulk_edit