From 113ec7809e6adaf51ab430745edfa8f916f1f30b Mon Sep 17 00:00:00 2001 From: simith Date: Fri, 29 Aug 2014 09:47:02 -0400 Subject: [PATCH] Bug 8609 - Add an URL validation plugin for authority and biblio frameworks This patch adds a new validation plugin to validate that a field/subfield contains a valid url. This plugin that can be used in biblio and authority frameworks. Testing: I) Before applying: 0) Go to the Cataloging module: menu->More->Cataloging; 1) Click < default framework>> bouton; 2) Click tab << 8 >>; 3) Insert a text (for example "test") in the 856->u input field; 4) Click out of the input field; 5) Validate no message; II) After Applying: i) field/subfield plugin attach 0) In Koha adminstration, click << MARC bibliographic framework >>; 1) In Default framework, click << MARC structure >>; 2) Search field 856 and click << Subfields >>; 3) Click << u >>; 4) In Other options -> Plugin, choose url.pl ii) Insert a text in the 856->u input field 0) Go to the Cataloging module: menu->More->Cataloging; 1) Click < default framework>> bouton; 2) Click tab << 8 >>; 3) Insert a text (for example "test") in the 856->u input field; 4) Click out of the input field; 5) Validate message: << The field 856$u must contain a valid URL! ex : http://www.google.com >> Squashed all previous commits into one as asked by comment #15. I did not see any changes made to the database so I didn't change anything related to that. Bug8609 - Removed useless plugin_parameters sub bug8609 fixes for comment #15 and #16 bug8609 Use Modern::Perl instead of strict and warnings --- C4/Installer/PerlDependencies.pm | 5 ++ cataloguing/value_builder/url.pl | 91 ++++++++++++++++++++++ install_misc/debian.packages | 1 + .../prog/en/modules/authorities/authorities.tt | 4 + .../prog/en/modules/cataloguing/addbiblio.tt | 4 + .../prog/en/modules/cataloguing/additem.tt | 11 +++ .../prog/en/modules/tools/batchMod-edit.tt | 5 ++ 7 files changed, 121 insertions(+) create mode 100644 cataloguing/value_builder/url.pl diff --git a/C4/Installer/PerlDependencies.pm b/C4/Installer/PerlDependencies.pm index b531e6c..9bb4dab 100644 --- a/C4/Installer/PerlDependencies.pm +++ b/C4/Installer/PerlDependencies.pm @@ -857,6 +857,11 @@ our $PERL_DEPS = { required => 1, min_ver => '0.058', }, + 'Regexp::Common::URI' => { + 'usage' => 'URL validation value_builder', + 'required' => '0', + 'min_ver' => '2010010201', + }, }; 1; diff --git a/cataloguing/value_builder/url.pl b/cataloguing/value_builder/url.pl new file mode 100644 index 0000000..5ca1844 --- /dev/null +++ b/cataloguing/value_builder/url.pl @@ -0,0 +1,91 @@ +#!/usr/bin/perl + + +# Copyright 2010 Frédérick Capovilla - Libéo +# +# 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; +# +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use Modern::Perl; + +use C4::Context; +use Regexp::Common qw( URI ); + + +=head1 DESCRIPTION + +plugin_javascript : the javascript function called when the user enters the subfield. +contain 3 javascript functions : +* one called when the field is entered (OnFocus). Named FocusXXX +* one called when the field is leaved (onBlur). Named BlurXXX +* one called when the ... link is clicked () named ClicXXX + +returns : +* XXX +* a variable containing the 3 scripts. +the 3 scripts are inserted after the in the html code + +=cut + +sub plugin_javascript { + my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; + my $function_name = $field_number; + my @split_field_name = split(/_/, $field_number); + my $field_name = $split_field_name[1] . '$' . $split_field_name[3]; + my $regex = $RE{URI}; + $regex =~ s/\//\\\//g; + + my $res = < +// + +END_OF_JS +return ($function_name,$res); +} + +=head1 DESCRIPTION + +plugin : the true value_builded. The screen that is open in the popup window. + +=cut + +sub plugin { + return ""; +} + +1; diff --git a/install_misc/debian.packages b/install_misc/debian.packages index 5d939dc..acb4cd7 100644 --- a/install_misc/debian.packages +++ b/install_misc/debian.packages @@ -93,6 +93,7 @@ libpdf-api2-simple-perl install libpdf-reuse-barcode-perl install libpdf-reuse-perl install libpdf-table-perl install +libregexp-common-perl install libschedule-at-perl install libsms-send-perl install libstring-random-perl install diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt index 260746d..094240f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt @@ -150,6 +150,10 @@ function confirmnotdup(redirect){ $("#confirm_not_duplicate").attr("value","1"); Check(); } +// For the url.pl value_builder validation +function invalid_url_alert(field_name) { + alert(_("The field ") + field_name + _(" must contain a valid URL!\nex : http://www.google.com")); +} //]]> 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 1aa98ed..de59f10 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt @@ -378,6 +378,10 @@ function Changefwk() { f.submit(); } +// For the url.pl value_builder validation +function invalid_url_alert(field_name) { + alert(_("The field ") + field_name + _(" must contain a valid URL!\nex : http://www.google.com")); +} //]]> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt index db83ef8..f499ee2 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt @@ -124,6 +124,17 @@ function confirm_deletion() { return confirm(_("Are you sure you want to delete this item?")); } +$(document).ready(function() { + $("#cataloguing_additem_itemlist tr").hover( + function () {$(this).addClass("highlight");}, + function () {$(this).removeClass("highlight");} + ); +}); + +// For the url.pl value_builder validation +function invalid_url_alert(field_name) { + alert(_("The field ") + field_name + _(" must contain a valid URL!\nex : http://www.google.com")); +} //]]> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt index 5eb138e..4d4ecf7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt @@ -36,6 +36,11 @@ $(document).ready(function(){ return submitBackgroundJob(this.form); }); }); + +// For the url.pl value_builder validation +function invalid_url_alert(field_name) { + alert(_("The field ") + field_name + _(" must contain a valid URL!\nex : http://www.google.com")); +} //]]>