]> source.dussan.org Git - redmine.git/commitdiff
Merged r3277 to r3279 from trunk.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 3 Jan 2010 11:47:25 +0000 (11:47 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 3 Jan 2010 11:47:25 +0000 (11:47 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3280 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issues_controller.rb
app/helpers/custom_fields_helper.rb
app/views/issues/bulk_edit.rhtml
test/fixtures/custom_fields.yml
test/fixtures/custom_fields_projects.yml
test/functional/issues_controller_test.rb

index 2e0ed6fb3d6a96b0c43f69a443da2f0312c513c0..cd435ebe7adcf70320156364fa4d7a4776954066 100644 (file)
@@ -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
index e11f7ccfe5f024cc52adc0d5233e0039996222d5..330b1aa93113de415b836788ee29c311304b99ec 100644 (file)
@@ -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)
index b298c3c4663b5275e7b8dbbeb672a399c0e4ee8c..b120f23c442327a42db3b706066a7ff87d11af5c 100644 (file)
@@ -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 %>
index 70577176e5276988450b02cb33ad76b2d2469e1d..4400f1daeff7adf1ce12d5226a70131eaeed00fd 100644 (file)
@@ -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
index 20670d5f5b9bd59c9e75479b7565b234e7439286..bb9788bc08843d70f3175fbab26b8bb5e92ff119 100644 (file)
@@ -1,2 +1,4 @@
---- {}
-
+--- 
+custom_fields_projects_001: 
+  custom_field_id: 9
+  project_id: 1
index e73e24a05e4d5f0821aa01cfa7e0a4d4cc1dd2aa..4b806de890d16237a66f94825241cdda100ae6b2 100644 (file)
@@ -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