Graceful handling of validation errors in edit_web, and a friendly confirmation in case of success

This commit is contained in:
Alexey Verkhovsky 2005-02-10 22:05:30 +00:00
parent 533ef6a1cd
commit 2aa1aa8fad
2 changed files with 33 additions and 13 deletions

View file

@ -48,6 +48,7 @@ class AdminController < ApplicationController
if system_password if system_password
# form submitted # form submitted
if wiki.authenticate(system_password) if wiki.authenticate(system_password)
begin
wiki.edit_web( wiki.edit_web(
@web.address, @params['address'], @params['name'], @web.address, @params['address'], @params['name'],
@params['markup'].intern, @params['markup'].intern,
@ -60,7 +61,12 @@ class AdminController < ApplicationController
@params['allow_uploads'] ? true : false, @params['allow_uploads'] ? true : false,
@params['max_upload_size'] @params['max_upload_size']
) )
flash[:info] = "Web '#{@params['address']}' was successfully updated"
redirect_show('HomePage', @params['address']) redirect_show('HomePage', @params['address'])
rescue Instiki::ValidationError => e
flash[:error] = e.message
# and re-render the same template again
end
else else
flash[:error] = password_error(system_password) flash[:error] = password_error(system_password)
# and re-render the same template again # and re-render the same template again

View file

@ -164,6 +164,20 @@ class AdminControllerTest < Test::Unit::TestCase
assert_flash_has :error assert_flash_has :error
end end
def test_edit_web_rename_to_already_existing_web_name
@wiki.system[:password] = 'pswd'
@wiki.create_web('Another', 'another')
process('edit_web', 'system_password' => 'pswd',
'web' => 'wiki1', 'address' => 'another', 'name' => 'Renamed Wiki1',
'markup' => 'markdown', 'color' => 'blue', 'additional_style' => 'whatever',
'password' => 'new_password')
#returns to the same form
assert_success
assert_flash_has :error
end
def test_edit_web_empty_password def test_edit_web_empty_password
process('edit_web', 'system_password' => '', process('edit_web', 'system_password' => '',
'web' => 'wiki1', 'address' => 'renamed_wiki1', 'name' => 'Renamed Wiki1', 'web' => 'wiki1', 'address' => 'renamed_wiki1', 'name' => 'Renamed Wiki1',