Bug 17380: [QA Follow-up] Report error to user instead of throwing exception
authorNick Clemens <nick@bywatersolutions.com>
Fri, 1 Sep 2017 14:39:25 +0000 (14:39 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 12 Sep 2017 15:07:48 +0000 (12:07 -0300)
Internal server errors are good, user feedback is better.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Tiny change: removed the obsolete 'use Koha::Exceptions'.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
authorities/merge.pl
koha-tmpl/intranet-tmpl/prog/en/modules/authorities/merge.tt

index b6a7b27..9f72541 100755 (executable)
@@ -27,7 +27,6 @@ use C4::Koha;
 use C4::Biblio;
 
 use Koha::Authority::Types;
-use Koha::Exceptions;
 use Koha::MetadataRecord::Authority;
 
 my $input  = new CGI;
@@ -108,7 +107,10 @@ else {
         push @errors, { code => 'DESTRUCTIVE_MERGE' };
     } else {
         my $recordObj1 = Koha::MetadataRecord::Authority->get_from_authid($authid[0]);
-        Koha::Exceptions::ObjectNotFound->throw( "No authority record found for authid $authid[0]\n" ) if !$recordObj1;
+        if (!$recordObj1) {
+            push @errors, { code => "MISSING_RECORD", value => $authid[0] };
+        }
+
 
         my $recordObj2;
         if (defined $mergereference && $mergereference eq 'breeding') {
@@ -116,9 +118,19 @@ else {
         } else {
             $recordObj2 =  Koha::MetadataRecord::Authority->get_from_authid($authid[1]);
         }
-        Koha::Exceptions::ObjectNotFound->throw( "No authority record found for authid $authid[1]\n" ) if !$recordObj2;
+        if (!$recordObj2) {
+            push @errors, { code => "MISSING_RECORD", value => $authid[1] };
+        }
+
+        unless ( $recordObj1 && $recordObj2 ) {
+            if (@errors) {
+                $template->param( errors => \@errors );
+            }
+            output_html_with_http_headers $input, $cookie, $template->output;
+            exit;
+        }
 
-        if ($mergereference) {
+        if ($mergereference ) {
 
             my $framework;
             if ( $recordObj1->authtypecode ne $recordObj2->authtypecode && $mergereference ne 'breeding' ) {
index 493bcbd..003e673 100644 (file)
@@ -67,6 +67,8 @@ function changeFramework(fw) {
                 The Default framework cannot be used, or the framework does not exist. Please select another framework for merging.
             [% ELSIF error.code == 'EMPTY_MARC' %]
                 Sorry, but we did not find any MARC tags in the reference record.
+            [% ELSIF error.code == 'MISSING_RECORD' %]
+                Sorry, but we did not find a record for number: [% error.value %].
             [% ELSE %]
                 [% error %]
             [% END %]