diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-01-03 11:47:25 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-01-03 11:47:25 +0000 |
commit | 9d2474c234d74983e70374870f52ea1bf74ef92a (patch) | |
tree | 8035577193d455712268217e52352f884f5580d1 | |
parent | 7193817deabe2ac2e5a067fa3674b2d1d3973450 (diff) | |
download | redmine-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.rb | 2 | ||||
-rw-r--r-- | app/helpers/custom_fields_helper.rb | 20 | ||||
-rw-r--r-- | app/views/issues/bulk_edit.rhtml | 76 | ||||
-rw-r--r-- | test/fixtures/custom_fields.yml | 14 | ||||
-rw-r--r-- | test/fixtures/custom_fields_projects.yml | 6 | ||||
-rw-r--r-- | test/functional/issues_controller_test.rb | 10 |
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 |