diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index a4f3de3..2fa465f 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -299,9 +299,14 @@ class IssuesController < ApplicationController if request.post? new_tracker = params[:new_tracker_id].blank? ? nil : @target_project.trackers.find_by_id(params[:new_tracker_id]) unsaved_issue_ids = [] + moved_issues = [] @issues.each do |issue| issue.init_journal(User.current) - unsaved_issue_ids << issue.id unless issue.move_to(@target_project, new_tracker, params[:copy_options]) + if r = issue.move_to(@target_project, new_tracker, params[:copy_options]) + moved_issues << r + else + unsaved_issue_ids << issue.id + end end if unsaved_issue_ids.empty? flash[:notice] = l(:notice_successful_update) unless @issues.empty? @@ -310,7 +315,15 @@ class IssuesController < ApplicationController :total => @issues.size, :ids => '#' + unsaved_issue_ids.join(', #')) end - redirect_to :controller => 'issues', :action => 'index', :project_id => @project + if params[:follow] + if @issues.size == 1 && moved_issues.size == 1 + redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first + else + redirect_to :controller => 'issues', :action => 'index', :project_id => (@target_project || @project) + end + else + redirect_to :controller => 'issues', :action => 'index', :project_id => @project + end return end render :layout => false if request.xhr? diff --git a/app/views/issues/move.rhtml b/app/views/issues/move.rhtml index b0602f6..0d4717f 100644 --- a/app/views/issues/move.rhtml +++ b/app/views/issues/move.rhtml @@ -25,5 +25,6 @@ <%= check_box_tag "copy_options[copy]", "1" %>

-<%= submit_tag l(:button_move) %> +<%= submit_tag l(:button_move) %> +<%= submit_tag l(:button_move_and_follow), :name => 'follow' %> <% end %> diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 56a14ad..69662db 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -832,3 +832,4 @@ bg: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/bs.yml b/config/locales/bs.yml index b23b2bb..716df43 100644 --- a/config/locales/bs.yml +++ b/config/locales/bs.yml @@ -856,3 +856,4 @@ bs: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/ca.yml b/config/locales/ca.yml index a7903ad..966df9a 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -835,3 +835,4 @@ ca: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/cs.yml b/config/locales/cs.yml index d65895e..c1533f6 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -838,3 +838,4 @@ cs: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/da.yml b/config/locales/da.yml index bb3a14c..4d433f4 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -858,3 +858,4 @@ da: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/de.yml b/config/locales/de.yml index 520284e..425bcb5 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -858,3 +858,4 @@ de: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/el.yml b/config/locales/el.yml index a54952d..032fa1c 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -838,3 +838,4 @@ el: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/en.yml b/config/locales/en.yml index 574ee9d..5bd70a4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -728,6 +728,7 @@ en: button_list: List button_view: View button_move: Move + button_move_and_follow: Move and follow button_back: Back button_cancel: Cancel button_activate: Activate diff --git a/config/locales/es.yml b/config/locales/es.yml index 8776faa..d03088d 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -879,3 +879,4 @@ es: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/fi.yml b/config/locales/fi.yml index ab677f8..acdee65 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -868,3 +868,4 @@ fi: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4d39724..aaa858a 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -745,6 +745,7 @@ fr: button_list: Lister button_view: Voir button_move: Déplacer + button_move_and_follow: Déplacer et suivre button_back: Retour button_cancel: Annuler button_activate: Activer diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 85b59e8..e6f260a 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -858,3 +858,4 @@ gl: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/he.yml b/config/locales/he.yml index f344e81..16d6800 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -842,3 +842,4 @@ he: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/hu.yml b/config/locales/hu.yml index f8e0f13..1c9f7f0 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -863,3 +863,4 @@ version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/it.yml b/config/locales/it.yml index 06fd50c..74132a6 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -845,3 +845,4 @@ it: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 99f8a4a..1cdb14f 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -867,3 +867,4 @@ ja: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/ko.yml b/config/locales/ko.yml index be3b871..a5b0860 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -898,3 +898,4 @@ ko: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 0213916..67e65a5 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -868,3 +868,4 @@ lt: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/nl.yml b/config/locales/nl.yml index ae5107d..191738f 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -820,3 +820,4 @@ nl: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/no.yml b/config/locales/no.yml index 39a9ac7..6fa2be0 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -833,3 +833,4 @@ version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/pl.yml b/config/locales/pl.yml index e569096..104a568 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -861,3 +861,4 @@ pl: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 1a90ded..10d43a6 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -864,3 +864,4 @@ pt-BR: version_status_open: aberto error_can_not_reopen_issue_on_closed_version: Uma tarefa atribuída a uma versão fechada não pode ser reaberta label_user_anonymous: Anônimo + button_move_and_follow: Move and follow diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 3f44627..c013311 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -850,3 +850,4 @@ pt: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 9f0cc87..9a97feb 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -835,3 +835,4 @@ ro: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/ru.yml b/config/locales/ru.yml index a331afc..84f06e8 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -946,3 +946,4 @@ ru: version_status_open: открыт error_can_not_reopen_issue_on_closed_version: Задача, назначенная к закрытой версии, не сможет быть открыта снова label_user_anonymous: Аноним + button_move_and_follow: Move and follow diff --git a/config/locales/sk.yml b/config/locales/sk.yml index b715533..8f79cb3 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -837,3 +837,4 @@ sk: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/sl.yml b/config/locales/sl.yml index a1d142c..9ebcb6c 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -834,3 +834,4 @@ sl: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/sr.yml b/config/locales/sr.yml index ff7bb91..dbd0c31 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -853,3 +853,4 @@ version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 3a2f82e..807db8d 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -886,3 +886,4 @@ sv: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/th.yml b/config/locales/th.yml index 890b10e..3ca9c46 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -835,3 +835,4 @@ th: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/tr.yml b/config/locales/tr.yml index a0f1977..01e2843 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -865,3 +865,4 @@ tr: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 4307c91..f7f2a66 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -834,3 +834,4 @@ uk: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/vi.yml b/config/locales/vi.yml index cdd04a4..b12cba7 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -897,3 +897,4 @@ vi: version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous + button_move_and_follow: Move and follow diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 88f4f5c..494e5c8 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -929,3 +929,4 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 + button_move_and_follow: Move and follow diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 29b7cbc..f1c772f 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -862,3 +862,4 @@ zh: enumeration_doc_categories: 文档类别 enumeration_activities: 活动(时间跟踪) enumeration_system_activity: 系统活动 + button_move_and_follow: Move and follow diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 1cff860..75da3c0 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -968,6 +968,12 @@ class IssuesControllerTest < ActionController::TestCase assert_equal 2, Issue.find(1).project_id end + def test_move_one_issue_to_another_project_should_follow_when_needed + @request.session[:user_id] = 2 + post :move, :id => 1, :new_project_id => 2, :follow => '1' + assert_redirected_to '/issues/1' + end + def test_bulk_move_to_another_project @request.session[:user_id] = 2 post :move, :ids => [1, 2], :new_project_id => 2 @@ -997,6 +1003,13 @@ class IssuesControllerTest < ActionController::TestCase end assert_redirected_to 'projects/ecookbook/issues' end + + def test_copy_to_another_project_should_follow_when_needed + @request.session[:user_id] = 2 + post :move, :ids => [1], :new_project_id => 2, :copy_options => {:copy => '1'}, :follow => '1' + issue = Issue.first(:order => 'id DESC') + assert_redirected_to :controller => 'issues', :action => 'show', :id => issue + end def test_context_menu_one_issue @request.session[:user_id] = 2