summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-01-20 15:56:46 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-01-20 15:56:46 +0000
commit6e6ce7c08595fbc2b1562d89099a6d6bad769cd5 (patch)
treeb01d3eebe740cafa1ed8ee0d959950b7a0873709
parent8b23d41cf92e7d9304b61a91dbd8da2e9f77987d (diff)
downloadredmine-6e6ce7c08595fbc2b1562d89099a6d6bad769cd5.tar.gz
redmine-6e6ce7c08595fbc2b1562d89099a6d6bad769cd5.zip
Fixed that adding a blank/invalid block to my page renders a blank page (#12838).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11225 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/my_controller.rb19
-rw-r--r--test/functional/my_controller_test.rb5
2 files changed, 15 insertions, 9 deletions
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb
index ab7b1828e..84f5b20ca 100644
--- a/app/controllers/my_controller.rb
+++ b/app/controllers/my_controller.rb
@@ -147,15 +147,16 @@ class MyController < ApplicationController
# params[:block] : id of the block to add
def add_block
block = params[:block].to_s.underscore
- (render :nothing => true; return) unless block && (BLOCKS.keys.include? block)
- @user = User.current
- layout = @user.pref[:my_page_layout] || {}
- # remove if already present in a group
- %w(top left right).each {|f| (layout[f] ||= []).delete block }
- # add it on top
- layout['top'].unshift block
- @user.pref[:my_page_layout] = layout
- @user.pref.save
+ if block.present? && BLOCKS.key?(block)
+ @user = User.current
+ layout = @user.pref[:my_page_layout] || {}
+ # remove if already present in a group
+ %w(top left right).each {|f| (layout[f] ||= []).delete block }
+ # add it on top
+ layout['top'].unshift block
+ @user.pref[:my_page_layout] = layout
+ @user.pref.save
+ end
redirect_to my_page_layout_path
end
diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb
index b04219e9f..7e9677051 100644
--- a/test/functional/my_controller_test.rb
+++ b/test/functional/my_controller_test.rb
@@ -191,6 +191,11 @@ class MyControllerTest < ActionController::TestCase
assert User.find(2).pref[:my_page_layout]['top'].include?('issuesreportedbyme')
end
+ def test_add_invalid_block_should_redirect
+ post :add_block, :block => 'invalid'
+ assert_redirected_to '/my/page_layout'
+ end
+
def test_remove_block
post :remove_block, :block => 'issuesassignedtome'
assert_redirected_to '/my/page_layout'