Bug 5002: Display messages on adding/deleting patron category

There are no messages on adding and deleting patron category.
If an error occurs and the data is not inserted, the interface does not
alert the user.

This patch adds a message block to alert the user if something wrong
happened.

Test plan:
1/ Create a patron category PATCAT. You should get a confirmation
message.
2/ Try to create another patron category with the same code. You should
get an error message
3/ Delete the patron category PATCAT. You should get a confirmation
message.

Confirm there is no regression on this form (try update an existing
patron category too).

Followed test plan, works as expected.
Signed-off-by: Marc Veron <veron@veron.ch>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Jonathan Druart 2015-03-24 12:35:56 +01:00 committed by Tomas Cohen Arazi
parent 7fa67b2f83
commit 886d02d8b7
2 changed files with 47 additions and 39 deletions

View file

@ -71,8 +71,9 @@ my $input = new CGI;
my $searchfield = $input->param('description');
my $script_name = "/cgi-bin/koha/admin/categorie.pl";
my $categorycode = $input->param('categorycode');
my $op = $input->param('op') // '';
my $op = $input->param('op') // 'list';
my $block_expired = $input->param("block_expired");
my @messages;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
@ -85,12 +86,6 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
}
);
$template->param(
script_name => $script_name,
categorycode => $categorycode,
searchfield => $searchfield
);
################## ADD_FORM ##################################
# called by default. Used to create form to add or modify a record
if ( $op eq 'add_form' ) {
@ -171,7 +166,6 @@ if ( $op eq 'add_form' ) {
# called by add_form, used to insert/modify data in DB
}
elsif ( $op eq 'add_validate' ) {
$template->param( add_validate => 1 );
my $is_a_modif = $input->param("is_a_modif");
@ -249,7 +243,7 @@ elsif ( $op eq 'add_validate' ) {
default_privacy
)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)" );
$sth->execute(
my $inserted = $sth->execute(
map { $input->param($_) } (
'categorycode', 'description',
'enrolmentperiod', 'enrolmentperioddate',
@ -260,15 +254,20 @@ elsif ( $op eq 'add_validate' ) {
'default_privacy',
)
);
$sth->finish;
if ( $inserted ) {
push @messages, { type => 'message', code => 'success_on_insert' };
} else {
$searchfield = q||;
push @messages, { type => 'error', code => 'error_on_insert' };
}
}
if ( C4::Context->preference('EnhancedMessagingPreferences') ) {
C4::Form::MessagingPreferences::handle_form_action( $input,
{ categorycode => $input->param('categorycode') }, $template );
}
print $input->redirect("/cgi-bin/koha/admin/categorie.pl");
exit;
$op = 'list';
# END $OP eq ADD_VALIDATE
################## DELETE_CONFIRM ##################################
@ -301,15 +300,20 @@ elsif ( $op eq 'delete_confirmed' ) {
my $sth = $dbh->prepare("delete from categories where categorycode=?");
$sth->execute($categorycode);
$sth->finish;
my $deleted = $sth->execute($categorycode);
print $input->redirect("/cgi-bin/koha/admin/categorie.pl");
exit;
if ( $deleted ) {
push @messages, { type => 'message', code => 'success_on_delete' };
} else {
push @messages, { type => 'error', code => 'error_on_delete' };
}
$op = 'list';
# END $OP eq DELETE_CONFIRMED
}
else { # DEFAULT
if ( $op eq 'list' ) {
$template->param( else => 1 );
my @loop;
my ( $count, $results ) = StringSearch( $searchfield, 'web' );
@ -378,6 +382,14 @@ else { # DEFAULT
$sth->finish;
} #---- END $OP eq DEFAULT
$template->param(
script_name => $script_name,
categorycode => $categorycode,
searchfield => $searchfield,
messages => \@messages,
);
output_html_with_http_headers $input, $cookie, $template->output;
exit 0;

View file

@ -1,9 +1,8 @@
[% USE KohaDates -%]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Administration &rsaquo; Patron categories &rsaquo; [% IF ( add_form ) %][% IF ( categorycode ) %]Modify category '[% categorycode |html %]'[% ELSE %]New category[% END %][% END %]
[% IF ( add_validate ) %]Data recorded[% END %]
[% IF ( delete_confirm ) %][% IF ( patrons_in_category > 0 ) %]Cannot delete: category [% categorycode |html %] in use[% ELSE %]Confirm deletion of category '[% categorycode |html %]'[% END %][% END %]
[% IF ( delete_confirmed ) %]Category deleted[% END %]</title>
</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'calendar.inc' %]
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
@ -98,7 +97,6 @@
[% INCLUDE 'patrons-admin-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF ( add_form ) %] <a href="/cgi-bin/koha/admin/categorie.pl">Patron categories</a> &rsaquo; [% IF ( categorycode ) %]Modify category '[% categorycode |html %]'[% ELSE %]New category[% END %][% END %]
[% IF ( add_validate ) %] <a href="/cgi-bin/koha/admin/categorie.pl">Patron categories</a> &rsaquo; Data recorded[% END %]
[% IF ( delete_confirm ) %] <a href="/cgi-bin/koha/admin/categorie.pl">Patron categories</a> &rsaquo; [% IF ( patrons_in_category > 0 ) %]Cannot delete: Category [% categorycode |html %] in use[% ELSE %]Confirm deletion of category '[% categorycode |html %]'[% END %][% END %]
[% IF ( delete_confirmed ) %] <a href="/cgi-bin/koha/admin/categorie.pl">Patron categories</a> &rsaquo; Category deleted[% END %]
[% IF ( else ) %]Patron categories[% END %]</div>
@ -109,11 +107,24 @@
<div id="yui-main">
<div class="yui-b">
[% FOR m IN messages %]
<div class="dialog [% m.type %]">
[% SWITCH m.code %]
[% CASE 'error_on_insert' %]
An error occurred when inserting this patron category. Perhaps the category code already exists.
[% CASE 'error_on_delete' %]
An error occurred when deleteing this patron category. Check the logs.
[% CASE 'success_on_insert' %]
Patron category inserted with success.
[% CASE 'success_on_delete' %]
Patron category deleted with success.
[% CASE %]
[% m.code %]
[% END %]
</div>
[% END %]
[% IF ( add_form ) %]
<form name="Aform" action="[% script_name %]" method="post">
<input type="hidden" name="op" value="add_validate" />
<input type="hidden" name="checked" value="0" />
@ -258,13 +269,6 @@
[% END %]
[% IF ( add_validate ) %]
<h3>Data recorded</h3>
<form action="[% script_name %]" method="post">
<input type="submit" value="OK" />
</form>
[% END %]
[% IF ( delete_confirm ) %]
<form action="[% script_name %]" method="post">
<fieldset>
@ -317,14 +321,6 @@
[% END %]</fieldset></fieldset></form>
[% END %]
[% IF ( delete_confirmed ) %]
<h3>Category deleted</h3>
<form action="[% script_name %]" method="post">
<input type="submit" value="OK" />
</form>
[% END %]
[% IF ( else ) %]
<div id="toolbar" class="btn-toolbar">