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