From b030ef9f4f4f0e82ca5bf2e31d012084b466071b Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Wed, 13 Apr 2011 15:02:58 +1200 Subject: [PATCH] Bug 5692 : Adds an alternative cataloguing plugin for 210$c Signed-off-by: Chris Cormack --- .../value_builder/unimarc_field_210c_bis.pl | 110 ++++++++++++++++++ cataloguing/ysearch.pl | 78 +++++++++++++ .../value_builder/unimarc_field_210c_bis.tt | 75 ++++++++++++ 3 files changed, 263 insertions(+) create mode 100755 cataloguing/value_builder/unimarc_field_210c_bis.pl create mode 100755 cataloguing/ysearch.pl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tt diff --git a/cataloguing/value_builder/unimarc_field_210c_bis.pl b/cataloguing/value_builder/unimarc_field_210c_bis.pl new file mode 100755 index 0000000000..420fa8f8d9 --- /dev/null +++ b/cataloguing/value_builder/unimarc_field_210c_bis.pl @@ -0,0 +1,110 @@ +#!/usr/bin/perl + +# Copyright 2000-2002 Katipo Communications +# +# 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 2 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +=head1 SYNOPSIS + +This plugin is used to map isbn/editor with collection. +It need : + in thesaurus, a category named EDITORS + in this category, datas must be entered like following : + isbn separator editor separator collection. + for example : + 2204 -- Cerf -- Cogitatio fidei + 2204 -- Cerf -- Le Magistere de l'Eglise + 2204 -- Cerf -- Lectio divina + 2204 -- Cerf -- Lire la Bible + 2204 -- Cerf -- Pour lire + 2204 -- Cerf -- Sources chretiennes + + when the user clic on ... on 225a line, the popup shows the list of collections from the selected editor + if the biblio has no isbn, then the search if done on editor only + If the biblio ha an isbn, the search is done on isbn and editor. It's faster. + +=over 2 + +=cut + +use strict; + +#use warnings; FIXME - Bug 2505 +use C4::Auth; +use CGI; +use C4::Context; + +use C4::AuthoritiesMarc; +use C4::Output; + +=head1 + +plugin_parameters : other parameters added when the plugin is called by the dopop function + +=cut + +sub plugin_parameters { + my ( $dbh, $record, $tagslib, $i, $tabloop ) = @_; + return ""; +} + +sub plugin_javascript { + my ( $dbh, $record, $tagslib, $field_number, $tabloop ) = @_; + my $function_name = $field_number; + my $res = " + +"; + + return ( $function_name, $res ); +} + +sub plugin { + my ($input) = @_; + my $index = $input->param('index'); + my $result = $input->param('result'); + my $editor_found = $input->param('editor_found'); + my $authoritysep = C4::Context->preference("authoritysep"); + warn Data::Dumper::Dumper $index; + + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "cataloguing/value_builder/unimarc_field_210c_bis.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { editcatalogue => '*' }, + debug => 1, + } + ); + + $template->param( + index => $index, + ); + output_html_with_http_headers $input, $cookie, $template->output; +} + +1; diff --git a/cataloguing/ysearch.pl b/cataloguing/ysearch.pl new file mode 100755 index 0000000000..5cd0205a23 --- /dev/null +++ b/cataloguing/ysearch.pl @@ -0,0 +1,78 @@ +#!/usr/bin/perl + +# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) + +# Copyright 2007 Tamil s.a.r.l. +# +# 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 2 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +=head1 ysearch.pl + + +=cut + +use strict; + +#use warnings; FIXME - Bug 2505 +use CGI; +use C4::Context; +use C4::Auth qw/check_cookie_auth/; + +my $input = new CGI; +my $query = $input->param('query'); +my $table = $input->param('table'); +my $field = $input->param('field'); + +# Prevent from disclosing data +die() unless ($table eq "biblioitems"); + +binmode STDOUT, ":utf8"; +print $input->header( -type => 'text/plain', -charset => 'UTF-8' ); + +my ( $auth_status, $sessionID ) = check_cookie_auth( $input->cookie('CGISESSID'), { cataloguing => '*' } ); +if ( $auth_status ne "ok" ) { + exit 0; +} + +my $dbh = C4::Context->dbh; +my $sql = qq(SELECT distinct $field + FROM $table + WHERE $field LIKE ? OR $field LIKE ? or $field LIKE ?); +$sql .= qq( ORDER BY $field); +my $sth = $dbh->prepare($sql); +$sth->execute("$query%", "% $query%", "%-$query%"); + +while ( my $rec = $sth->fetchrow_hashref ) { + print nsb_clean($rec->{$field}) . "\n"; +} + +sub nsb_clean { + my $NSB = '\x88' ; # NSB : begin Non Sorting Block + my $NSE = '\x89' ; # NSE : Non Sorting Block end + my $NSB2 = '\x98' ; # NSB : begin Non Sorting Block + my $NSE2 = '\x9C' ; # NSE : Non Sorting Block end + # handles non sorting blocks + my ($string) = @_ ; + $_ = $string ; + s/$NSB//g ; + s/$NSE//g ; + s/$NSB2//g ; + s/$NSE2//g ; + $string = $_ ; + + return($string) ; +} + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tt new file mode 100644 index 0000000000..2a68566e2b --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tt @@ -0,0 +1,75 @@ + + + + UNIMARC_Field 225a builder + + + + + + + + +