From f60881518a7a1b12e0c604d1ae1ba3c0fc99944f 2010-01-14 23:33:48 From: Eric Davis Date: 2010-01-14 23:33:48 Subject: [PATCH] Merged r3315 from trunk. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3316 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index cd435eb..85789e2 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -202,7 +202,7 @@ class IssuesController < ApplicationController flash[:notice] = l(:notice_successful_update) end call_hook(:controller_issues_edit_after_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => journal}) - redirect_to(params[:back_to] || {:action => 'show', :id => @issue}) + redirect_back_or_default({:action => 'show', :id => @issue}) end end rescue ActiveRecord::StaleObjectError @@ -269,7 +269,7 @@ class IssuesController < ApplicationController :total => @issues.size, :ids => '#' + unsaved_issue_ids.join(', #')) end - redirect_to(params[:back_to] || {:controller => 'issues', :action => 'index', :project_id => @project}) + redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project}) return end @available_statuses = Workflow.available_statuses(@project) diff --git a/app/views/issues/context_menu.rhtml b/app/views/issues/context_menu.rhtml index 4a1d0c3..aff836c 100644 --- a/app/views/issues/context_menu.rhtml +++ b/app/views/issues/context_menu.rhtml @@ -8,7 +8,7 @@ <%= l(:field_status) %> @@ -23,7 +23,7 @@ <%= l(:field_tracker) %> @@ -33,7 +33,7 @@ <%= l(:field_priority) %> @@ -43,10 +43,10 @@ <%= l(:field_fixed_version) %> @@ -56,10 +56,10 @@ <%= l(:field_assigned_to) %> @@ -69,10 +69,10 @@ <%= l(:field_category) %> @@ -82,7 +82,7 @@ <%= l(:field_done_ratio) %> diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 4b806de..8a0c4e8 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -940,6 +940,36 @@ class IssuesControllerTest < ActionController::TestCase assert_equal 4, issue.fixed_version_id assert_not_equal issue.project_id, issue.fixed_version.project_id end + + def test_post_edit_should_redirect_back_using_the_back_url_parameter + issue = Issue.find(2) + @request.session[:user_id] = 2 + + post :edit, + :id => issue.id, + :issue => { + :fixed_version_id => 4 + }, + :back_url => '/issues' + + assert_response :redirect + assert_redirected_to '/issues' + end + + def test_post_edit_should_not_redirect_back_using_the_back_url_parameter_off_the_host + issue = Issue.find(2) + @request.session[:user_id] = 2 + + post :edit, + :id => issue.id, + :issue => { + :fixed_version_id => 4 + }, + :back_url => 'http://google.com' + + assert_response :redirect + assert_redirected_to :controller => 'issues', :action => 'show', :id => issue.id + end def test_get_bulk_edit @request.session[:user_id] = 2 @@ -1046,6 +1076,22 @@ class IssuesControllerTest < ActionController::TestCase end end + def test_post_bulk_edit_should_redirect_back_using_the_back_url_parameter + @request.session[:user_id] = 2 + post :bulk_edit, :ids => [1,2], :back_url => '/issues' + + assert_response :redirect + assert_redirected_to '/issues' + end + + def test_post_bulk_edit_should_not_redirect_back_using_the_back_url_parameter_off_the_host + @request.session[:user_id] = 2 + post :bulk_edit, :ids => [1,2], :back_url => 'http://google.com' + + assert_response :redirect + assert_redirected_to :controller => 'issues', :action => 'index', :project_id => Project.find(1).identifier + end + def test_move_routing assert_routing( {:method => :get, :path => '/issues/1/move'},