From f134e72fec4a8a479e1207bfc14d1d2ab72c817d Mon Sep 17 00:00:00 2001
From: Jean-Philippe Lang <jp_lang@yahoo.fr>
Date: Sun, 29 Nov 2009 20:00:21 +0000
Subject: [PATCH] Adds tracker update to context menu and bulk edit form
 (#2405).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3109 e93f8b46-1217-0410-a6f0-8f06a7374b81
---
 app/controllers/issues_controller.rb | 3 +++
 app/views/issues/bulk_edit.rhtml     | 4 ++++
 app/views/issues/context_menu.rhtml  | 9 +++++++++
 3 files changed, 16 insertions(+)

diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 02be772a2..cf54db445 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -234,6 +234,7 @@ class IssuesController < ApplicationController
   # Bulk edit a set of issues
   def bulk_edit
     if request.post?
+      tracker = params[:tracker_id].blank? ? nil : @project.trackers.find_by_id(params[:tracker_id])
       status = params[:status_id].blank? ? nil : IssueStatus.find_by_id(params[:status_id])
       priority = params[:priority_id].blank? ? nil : IssuePriority.find_by_id(params[:priority_id])
       assigned_to = (params[:assigned_to_id].blank? || params[:assigned_to_id] == 'none') ? nil : User.find_by_id(params[:assigned_to_id])
@@ -244,6 +245,7 @@ class IssuesController < ApplicationController
       unsaved_issue_ids = []      
       @issues.each do |issue|
         journal = issue.init_journal(User.current, params[:notes])
+        issue.tracker = tracker if tracker
         issue.priority = priority if priority
         issue.assigned_to = assigned_to if assigned_to || params[:assigned_to_id] == 'none'
         issue.category = category if category || params[:category_id] == 'none'
@@ -421,6 +423,7 @@ class IssuesController < ApplicationController
       @assignables << @issue.assigned_to if @issue && @issue.assigned_to && !@assignables.include?(@issue.assigned_to)
     end
     
+    @trackers = @project.trackers
     @priorities = IssuePriority.all.reverse
     @statuses = IssueStatus.find(:all, :order => 'position')
     @back = params[:back_url] || request.env['HTTP_REFERER']
diff --git a/app/views/issues/bulk_edit.rhtml b/app/views/issues/bulk_edit.rhtml
index 10a5bb5a2..de82e18ce 100644
--- a/app/views/issues/bulk_edit.rhtml
+++ b/app/views/issues/bulk_edit.rhtml
@@ -8,10 +8,14 @@
 <fieldset>
 <legend><%= l(:label_change_properties) %></legend>
 <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>
 <% 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>
 <% end %>
+</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) %>: 
diff --git a/app/views/issues/context_menu.rhtml b/app/views/issues/context_menu.rhtml
index 073f12bd6..3e22a17c9 100644
--- a/app/views/issues/context_menu.rhtml
+++ b/app/views/issues/context_menu.rhtml
@@ -18,6 +18,15 @@
 	        :class => 'icon-edit', :disabled => !@can[:edit] %></li>
 <% end %>
 
+	<li class="folder">			
+		<a href="#" class="submenu"><%= l(:field_tracker) %></a>
+		<ul>
+		<% @trackers.each do |t| -%>
+		    <li><%= context_menu_link t.name, {:controller => 'issues', :action => 'bulk_edit', :ids => @issues.collect(&:id), 'tracker_id' => t, :back_to => @back}, :method => :post,
+		                              :selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %></li>
+		<% end -%>
+		</ul>
+	</li>
 	<li class="folder">			
 		<a href="#" class="submenu"><%= l(:field_priority) %></a>
 		<ul>
-- 
GitLab