Bug 17118: (follow-up 15381) Fix regression when clearing a linked authority
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 19 Aug 2016 15:09:55 +0000 (16:09 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 2 Sep 2016 14:01:34 +0000 (14:01 +0000)
Changes made on bug 15381 assumed that the authid was always set.
But if the user wants to clear the field of the authority, the script is
called with authid=0 (FIXME...)

To fix this issue, it's better to move the new calls to
  Koha::Authorities->find($authid)->authtypecode
and
  Koha::Authority::Types->find($authtypecode);
at the correct place

Test plan:
1. Edit a record which has a field linked to an
   authority record (100a for instance).
2. Click the link which triggers the tag editor.
   A pop-up window should be displayed.
3. In the pop-up window, click the "Clear field"
   button.
=> Without this patch A second pop-up window opens and displays an error:
  Can't call method "authtypecode" on an undefined value at /authorities/blinddetail-biblio-search.pl line 61.
=> With this patch applied the field is correctly cleared.

Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

authorities/blinddetail-biblio-search.pl

index cab9c74..33b7ef0 100755 (executable)
@@ -58,14 +58,6 @@ my $authid       = $query->param('authid');
 my $index        = $query->param('index');
 my $tagid        = $query->param('tagid');
 my $relationship = $query->param('relationship');
-my $authtypecode = Koha::Authorities->find($authid)->authtypecode;
-my $tagslib      = &GetTagsLabels( 1, $authtypecode );
-
-my $auth_type = Koha::Authority::Types->find($authtypecode);
-my $record;
-if ($authid) {
-    $record = GetAuthority($authid);
-}
 
 # open template
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@@ -82,6 +74,9 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 my @subfield_loop;
 my ($indicator1, $indicator2);
 if ($authid) {
+    my $authtypecode = Koha::Authorities->find($authid)->authtypecode;
+    my $auth_type = Koha::Authority::Types->find($authtypecode);
+    my $record = GetAuthority($authid);
     my @fields = $record->field( $auth_type->auth_tag_to_report );
     my $repet = ($query->param('repet') || 1) - 1;
     my $field = $fields[$repet];