@@ -1,68 +1,68 | |||
|
1 | 1 | class IssueMovesController < ApplicationController |
|
2 | 2 | default_search_scope :issues |
|
3 | 3 | before_filter :find_issues, :check_project_uniqueness |
|
4 | 4 | before_filter :authorize |
|
5 | ||
|
5 | ||
|
6 | 6 | def new |
|
7 | 7 | prepare_for_issue_move |
|
8 | 8 | render :layout => false if request.xhr? |
|
9 | 9 | end |
|
10 | 10 | |
|
11 | 11 | def create |
|
12 | 12 | prepare_for_issue_move |
|
13 | 13 | |
|
14 | 14 | if request.post? |
|
15 | 15 | new_tracker = params[:new_tracker_id].blank? ? nil : @target_project.trackers.find_by_id(params[:new_tracker_id]) |
|
16 | 16 | unsaved_issue_ids = [] |
|
17 | 17 | moved_issues = [] |
|
18 | 18 | @issues.each do |issue| |
|
19 | 19 | issue.reload |
|
20 | 20 | issue.init_journal(User.current) |
|
21 | 21 | issue.current_journal.notes = @notes if @notes.present? |
|
22 | 22 | call_hook(:controller_issues_move_before_save, { :params => params, :issue => issue, :target_project => @target_project, :copy => !!@copy }) |
|
23 | 23 | if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params)}) |
|
24 | 24 | moved_issues << r |
|
25 | 25 | else |
|
26 | 26 | unsaved_issue_ids << issue.id |
|
27 | 27 | end |
|
28 | 28 | end |
|
29 | 29 | set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids) |
|
30 | 30 | |
|
31 | 31 | if params[:follow] |
|
32 | 32 | if @issues.size == 1 && moved_issues.size == 1 |
|
33 | 33 | redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first |
|
34 | 34 | else |
|
35 | 35 | redirect_to :controller => 'issues', :action => 'index', :project_id => (@target_project || @project) |
|
36 | 36 | end |
|
37 | 37 | else |
|
38 | 38 | redirect_to :controller => 'issues', :action => 'index', :project_id => @project |
|
39 | 39 | end |
|
40 | 40 | return |
|
41 | 41 | end |
|
42 | 42 | end |
|
43 | 43 | |
|
44 | 44 | private |
|
45 | 45 | |
|
46 | 46 | def prepare_for_issue_move |
|
47 | 47 | @issues.sort! |
|
48 | 48 | @copy = params[:copy_options] && params[:copy_options][:copy] |
|
49 | 49 | @allowed_projects = Issue.allowed_target_projects_on_move |
|
50 | 50 | @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id] |
|
51 |
@target_project ||= @project |
|
|
51 | @target_project ||= @project | |
|
52 | 52 | @trackers = @target_project.trackers |
|
53 | 53 | @available_statuses = Workflow.available_statuses(@project) |
|
54 | 54 | @notes = params[:notes] |
|
55 | 55 | @notes ||= '' |
|
56 | 56 | end |
|
57 | 57 | |
|
58 | 58 | def extract_changed_attributes_for_move(params) |
|
59 | 59 | changed_attributes = {} |
|
60 | 60 | [:assigned_to_id, :status_id, :start_date, :due_date, :priority_id].each do |valid_attribute| |
|
61 | 61 | unless params[valid_attribute].blank? |
|
62 | 62 | changed_attributes[valid_attribute] = (params[valid_attribute] == 'none' ? nil : params[valid_attribute]) |
|
63 | 63 | end |
|
64 | 64 | end |
|
65 | 65 | changed_attributes |
|
66 | 66 | end |
|
67 | 67 | |
|
68 | 68 | end |
General Comments 0
You need to be logged in to leave comments.
Login now