From 76b380739af597729867325845543f6179e79d56 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 24 Mar 2015 12:35:56 +0100 Subject: [PATCH] [PASSED QA] 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 Signed-off-by: Kyle M Hall --- admin/categorie.pl | 46 ++++++++++++------- .../prog/en/modules/admin/categorie.tt | 40 ++++++++--------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/admin/categorie.pl b/admin/categorie.pl index 75cee49..60d2c84 100755 --- a/admin/categorie.pl +++ b/admin/categorie.pl @@ -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; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt index a2ad329..281d24a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt @@ -1,9 +1,8 @@ [% USE KohaDates -%] [% INCLUDE 'doc-head-open.inc' %] Koha › Administration › Patron categories › [% 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 %] + [% INCLUDE 'doc-head-close.inc' %] [% INCLUDE 'calendar.inc' %] @@ -98,7 +97,6 @@ [% INCLUDE 'patrons-admin-search.inc' %] @@ -109,11 +107,24 @@
-[% IF ( add_form ) %] - - +[% FOR m IN messages %] +
+ [% 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 %] +
+[% END %] - +[% IF ( add_form ) %]
@@ -258,13 +269,6 @@ [% END %] -[% IF ( add_validate ) %] -

Data recorded

- - -
-[% END %] - [% IF ( delete_confirm ) %]
@@ -317,14 +321,6 @@ [% END %]
[% END %] -[% IF ( delete_confirmed ) %] -

Category deleted

- -
- -
-[% END %] - [% IF ( else ) %]
-- 1.7.2.5