annotate app/controllers/issue_moves_controller.rb @ 45:65d9e2cabaa3 luisf

Added tipoftheday to the config/settings in order to correct previous issues. Tip of the day is now working correctly. Added the heading strings to the locales files.
author luisf
date Tue, 23 Nov 2010 11:50:01 +0000
parents 94944d00e43c
children cbce1fd3b1b7
rev   line source
Chris@14 1 class IssueMovesController < ApplicationController
Chris@14 2 default_search_scope :issues
chris@37 3 before_filter :find_issues, :check_project_uniqueness
Chris@14 4 before_filter :authorize
Chris@14 5
Chris@14 6 def new
Chris@14 7 prepare_for_issue_move
Chris@14 8 render :layout => false if request.xhr?
Chris@14 9 end
Chris@14 10
Chris@14 11 def create
Chris@14 12 prepare_for_issue_move
Chris@14 13
Chris@14 14 if request.post?
Chris@14 15 new_tracker = params[:new_tracker_id].blank? ? nil : @target_project.trackers.find_by_id(params[:new_tracker_id])
Chris@14 16 unsaved_issue_ids = []
Chris@14 17 moved_issues = []
Chris@14 18 @issues.each do |issue|
Chris@14 19 issue.reload
Chris@14 20 issue.init_journal(User.current)
chris@37 21 issue.current_journal.notes = @notes if @notes.present?
Chris@14 22 call_hook(:controller_issues_move_before_save, { :params => params, :issue => issue, :target_project => @target_project, :copy => !!@copy })
Chris@14 23 if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params)})
Chris@14 24 moved_issues << r
Chris@14 25 else
Chris@14 26 unsaved_issue_ids << issue.id
Chris@14 27 end
Chris@14 28 end
Chris@14 29 set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids)
Chris@14 30
Chris@14 31 if params[:follow]
Chris@14 32 if @issues.size == 1 && moved_issues.size == 1
Chris@14 33 redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first
Chris@14 34 else
Chris@14 35 redirect_to :controller => 'issues', :action => 'index', :project_id => (@target_project || @project)
Chris@14 36 end
Chris@14 37 else
Chris@14 38 redirect_to :controller => 'issues', :action => 'index', :project_id => @project
Chris@14 39 end
Chris@14 40 return
Chris@14 41 end
Chris@14 42 end
Chris@14 43
Chris@14 44 private
Chris@14 45
Chris@14 46 def prepare_for_issue_move
Chris@14 47 @issues.sort!
Chris@14 48 @copy = params[:copy_options] && params[:copy_options][:copy]
Chris@14 49 @allowed_projects = Issue.allowed_target_projects_on_move
Chris@14 50 @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id]
Chris@14 51 @target_project ||= @project
Chris@14 52 @trackers = @target_project.trackers
Chris@14 53 @available_statuses = Workflow.available_statuses(@project)
chris@37 54 @notes = params[:notes]
chris@37 55 @notes ||= ''
Chris@14 56 end
Chris@14 57
Chris@14 58 def extract_changed_attributes_for_move(params)
Chris@14 59 changed_attributes = {}
chris@37 60 [:assigned_to_id, :status_id, :start_date, :due_date, :priority_id].each do |valid_attribute|
Chris@14 61 unless params[valid_attribute].blank?
Chris@14 62 changed_attributes[valid_attribute] = (params[valid_attribute] == 'none' ? nil : params[valid_attribute])
Chris@14 63 end
Chris@14 64 end
Chris@14 65 changed_attributes
Chris@14 66 end
Chris@14 67
Chris@14 68 end