Bug 41060: Add a cataloguing plugin to check ISSN
Test plan: - without patch login to Koha - edit a biblio and put a wrong ISSN in 022a (011a for unimarc). - leave the input field (looses focus), no warning - apply patch and do "reset_all" to make a full re-install. - edit the biblio again and put an invalid ISSN in 022a (011a for unimarc). - when you leave the input field you should have a warning saying "invalid ISSN". - the input field should turn yellow - you can still save the biblio with a wrong issn, it is just a warning. - if you apply the patch on an existing install, you must manually link the value builder to your existing frameworks to get it working. Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
b86095ffe7
commit
110f7d8030
|
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# Copyright 2025 BibLibre SARL
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Koha; if not, see <https://www.gnu.org/licenses>.
|
||||
|
||||
use Modern::Perl;
|
||||
use CGI qw ( -utf8 );
|
||||
|
||||
use C4::Auth qw( get_template_and_user );
|
||||
use C4::Output qw( output_html_with_http_headers );
|
||||
use Business::ISSN qw( is_valid_checksum );
|
||||
|
||||
my $builder = sub {
|
||||
my $params = shift;
|
||||
my $id = $params->{id};
|
||||
|
||||
return qq|
|
||||
<script>
|
||||
function Blur$id(event) {
|
||||
field = \$('#'+event.data.id);
|
||||
issn = field.val();
|
||||
var url = '../cataloguing/plugin_launcher.pl?plugin_name=validate_issn.pl&issn=' + issn;
|
||||
var req = \$.get(url);
|
||||
req.done(function(resp){
|
||||
if ( resp != 1 ) {
|
||||
field.addClass("subfield_not_filled");
|
||||
alert("Invalid ISSN : " + issn);
|
||||
return;
|
||||
}
|
||||
field.removeClass("subfield_not_filled");
|
||||
});
|
||||
}
|
||||
</script>|;
|
||||
};
|
||||
|
||||
my $launcher = sub {
|
||||
my $params = shift;
|
||||
my $cgi = $params->{cgi};
|
||||
my $issn = $cgi->param('issn');
|
||||
|
||||
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
||||
{
|
||||
template_name => "cataloguing/value_builder/ajax.tt",
|
||||
query => $cgi,
|
||||
type => "intranet",
|
||||
flagsrequired => { editcatalogue => '*' },
|
||||
}
|
||||
);
|
||||
my $is_valid = is_valid_checksum($issn);
|
||||
$template->param( return => $is_valid );
|
||||
output_html_with_http_headers $cgi, $cookie, $template->output;
|
||||
};
|
||||
|
||||
return { builder => $builder, launcher => $launcher };
|
||||
|
|
@ -4790,7 +4790,7 @@ tables:
|
|||
tab: 0
|
||||
authorised_value: ""
|
||||
authtypecode: ""
|
||||
value_builder: ""
|
||||
value_builder: validate_issn.pl
|
||||
isurl: 0
|
||||
hidden: 0
|
||||
frameworkcode: ""
|
||||
|
|
|
|||
|
|
@ -3230,7 +3230,7 @@ tables:
|
|||
tab: 0
|
||||
authorised_value:
|
||||
authtypecode: ""
|
||||
value_builder: ""
|
||||
value_builder: validate_issn.pl
|
||||
isurl: 0
|
||||
hidden: 0
|
||||
frameworkcode: ""
|
||||
|
|
|
|||
Loading…
Reference in New Issue