From d1bb450ff69c021bf0cb65b538251470e424753a Mon Sep 17 00:00:00 2001 From: Arthur Suzuki Date: Mon, 8 Sep 2025 15:14:47 +0000 Subject: [PATCH] Bug 29980: [alternative patch] Add a cataloguing plugin to check ISBN --- cataloguing/value_builder/validate_isbn.pl | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 cataloguing/value_builder/validate_isbn.pl diff --git a/cataloguing/value_builder/validate_isbn.pl b/cataloguing/value_builder/validate_isbn.pl new file mode 100644 index 00000000000..9f74c27eaaf --- /dev/null +++ b/cataloguing/value_builder/validate_isbn.pl @@ -0,0 +1,69 @@ +#!/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 . + +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::ISBN qw( valid_isbn_checksum ); + +my $builder = sub { + my $params = shift; + my $id = $params->{id}; + + return qq| +|; +}; + +my $launcher = sub { + my $params = shift; + my $cgi = $params->{cgi}; + my $isbn = $cgi->param('isbn'); + + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "cataloguing/value_builder/ajax.tt", + query => $cgi, + type => "intranet", + flagsrequired => { editcatalogue => '*' }, + } + ); + my $is_valid = valid_isbn_checksum($isbn); + $template->param( return => $is_valid ); + output_html_with_http_headers $cgi, $cookie, $template->output; +}; + +return { builder => $builder, launcher => $launcher }; -- 2.39.5