Graceful handling of validation errors in edit_web, and a friendly confirmation in case of success
This commit is contained in:
parent
533ef6a1cd
commit
2aa1aa8fad
|
@ -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
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in a new issue