From 6f1d5f6abb9ee29912f97f0d6e338b63dba696a7 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 6 Apr 2011 11:37:36 +0200 Subject: [PATCH] Bug 5692: new 210c plugin --- cataloguing/plugin_launcher.pl | 16 ++-- .../value_builder/unimarc_field_210c_bis.pl | 110 ++++++++++++++++++++ cataloguing/ysearch.pl | 78 ++++++++++++++ .../value_builder/unimarc_field_210c_bis.tmpl | 75 +++++++++++++ 4 files changed, 271 insertions(+), 8 deletions(-) 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.tmpl diff --git a/cataloguing/plugin_launcher.pl b/cataloguing/plugin_launcher.pl index 9a264ab..f33ef3f 100755 --- a/cataloguing/plugin_launcher.pl +++ b/cataloguing/plugin_launcher.pl @@ -1,6 +1,5 @@ #!/usr/bin/perl - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. @@ -19,20 +18,21 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; + #use warnings; FIXME - Bug 2505 use CGI; use C4::Context; use C4::Output; -my $input = new CGI; -my $plugin_name="cataloguing/value_builder/".$input->param("plugin_name"); +my $input = new CGI; +my $plugin_name = "cataloguing/value_builder/" . $input->param("plugin_name"); # opening plugin. Just check wether we are on a developper computer on a production one # (the cgidir differs) -my $cgidir = C4::Context->intranetdir ."/cgi-bin"; -my $vbdir = "$cgidir/cataloguing/value_builder"; -unless (-r $vbdir and -d $vbdir) { - $cgidir = C4::Context->intranetdir; +my $cgidir = C4::Context->intranetdir . "/cgi-bin"; +my $vbdir = "$cgidir/cataloguing/value_builder"; +unless ( -r $vbdir and -d $vbdir ) { + $cgidir = C4::Context->intranetdir; } -do $cgidir."/".$plugin_name; +do $cgidir . "/" . $plugin_name; &plugin($input); 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 0000000..420fa8f --- /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 0000000..5cd0205 --- /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.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tmpl new file mode 100644 index 0000000..da95963 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tmpl @@ -0,0 +1,75 @@ + + + + UNIMARC_Field 225a builder + + + + + /css/staff-global.css" /> + + + +