From c91ad3e4bba448fa8da4a74e101f6e9d48fd5711 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 12 Jun 2020 15:22:54 +0200 Subject: [PATCH] Bug 25728: Create AV when cataloguing a bibliographic record This whole patch set adds the ability to create a new authorised value directly from the cataloguing module. It will prevent the cataloger to leave and reload the page if they need a new one. Test plan: If you are logged in with a patron with the manage_authorised_values subpermission you will be able to: * Edit a bibliographic record * Search for a subfield linked to an authorised values (not the "fake" AV like itemtypes, branches, cn) * Click the dropdown list and start searching for a value that does not exist * Click enter * Fill the fields in the popup * Save => Your dropdown list has the new AV :) Note: This does not work for the advanced editor. It does not have select2 applied to the selects. I have hardly tried but failed. Sponsored-by: Orex Digital --- cataloguing/addbiblio.pl | 9 +- .../prog/en/modules/cataloguing/addbiblio.tt | 110 +++++++++++++++++- 2 files changed, 114 insertions(+), 5 deletions(-) diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl index 7d48842c6a..d8d376ea4f 100755 --- a/cataloguing/addbiblio.pl +++ b/cataloguing/addbiblio.pl @@ -170,14 +170,15 @@ sub build_authorized_values_list { # builds list, depending on authorised value... #---- branch - if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) { + my $category = $tagslib->{$tag}->{$subfield}->{authorised_value}; + if ( $category eq "branches" ) { my $libraries = Koha::Libraries->search_filtered({}, {order_by => ['branchname']}); while ( my $l = $libraries->next ) { push @authorised_values, $l->branchcode;; $authorised_lib{$l->branchcode} = $l->branchname; } } - elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes" ) { + elsif ( $category eq "itemtypes" ) { push @authorised_values, ""; my $itemtype; @@ -188,7 +189,7 @@ sub build_authorized_values_list { } $value = $itemtype unless ($value); } - elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "cn_source" ) { + elsif ( $category eq "cn_source" ) { push @authorised_values, ""; my $class_sources = GetClassSources(); @@ -219,6 +220,7 @@ sub build_authorized_values_list { } } $authorised_values_sth->finish; + return { type => 'select', id => "tag_".$tag."_subfield_".$subfield."_".$index_tag."_".$index_subfield, @@ -226,6 +228,7 @@ sub build_authorized_values_list { default => $value, values => \@authorised_values, labels => \%authorised_lib, + ( ( grep { $_ eq $category } ( qw(branches itemtypes cn_source) ) ) ? () : ( category => $category ) ), }; } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt index 66d253e363..d1f6f7d67c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt @@ -479,7 +479,70 @@ [% INCLUDE 'select2.inc' %] @@ -846,7 +909,7 @@ [% ELSIF ( mv.type == 'textarea' ) %] [% ELSIF ( mv.type == 'select' ) %] - [% FOREACH aval IN mv.values %] [% IF aval == mv.default %] @@ -891,6 +954,49 @@ [%# End of fields for fast cataloging %] + + + -- 2.20.1