[Koha-patches] [PATCH] Bug 5692: new 210c plugin
Jonathan Druart
jonathan.druart at biblibre.com
Wed Apr 6 12:04:01 CEST 2011
---
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 = "
+ <script type=\"text/javascript\">
+ function Focus$function_name(subfield_managed) {
+ return 1;
+ }
+
+ function Blur$function_name(subfield_managed) {
+ return 1;
+ }
+
+ function Clic$function_name(index) {
+ window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_210c_bis.pl&index=\"+index,\"unimarc210c\",'width=500,height=400,toolbar=false,scrollbars=no');
+ }
+ </script>
+";
+
+ 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>UNIMARC_Field 225a builder</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/utilities/utilities.js"></script>
+ <script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/datasource/datasource.js"></script>
+ <script type="text/javascript" src="<!-- TMPL_VAR NAME="yuipath" -->/autocomplete/autocomplete-min.js"></script>
+ <link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR NAME="themelang" -->/css/staff-global.css" />
+
+</head>
+<body>
+<div id="header_search">
+<script type="text/javascript">
+//<![CDATA[
+YAHOO.util.Event.onContentReady("header_search", function() {
+ new function() {
+ // Define a custom formatter function
+ this.fnCustomFormatter = function(oResultItem, sQuery) {
+ var name = oResultItem[0];
+ var aMarkup = [
+ "<div class=\"sample-result\">",
+ name,
+ "<\/div>"];
+ return (aMarkup.join(""));
+ };
+
+ // Instantiate one XHR DataSource and define schema as an array:
+ // ["Record Delimiter",
+ // "Field Delimiter"]
+ this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/cataloguing/ysearch.pl", ["\n", "\t"]);
+ this.oACDS.scriptQueryAppend = "table=biblioitems&field=publishercode";
+ this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
+ this.oACDS.maxCacheEntries = 60;
+ this.oACDS.queryMatchSubset = false;
+
+ // Instantiate first AutoComplete
+ var myInput = document.getElementById('findvalue');
+ var myContainer = document.getElementById('yvaluecontainer');
+ this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
+ //this.oAutoComp.delimChar = ";";
+ this.oAutoComp.queryDelay = 1;
+ this.oAutoComp.formatResult = this.fnCustomFormatter;
+ this.oAutoComp.maxResultsDisplayed = 1000;
+}
+});
+//]]>
+</script>
+ <div id="mainbloc">
+
+<div id="plugin">
+<div class="autocomplete">
+ <form name="f_pop" onsubmit="javascript:report()" action="">
+ <div id="borrowerautocomplete" class="autocomplete">
+ <input autocomplete="off" id="findvalue" name="findvalue" size="40" class="focus" type="text" /><br /><br />
+ <input id="ysearchsubmit" type="submit" class="submit" value="Submit" />
+ <div id="yvaluecontainer"></div>
+ </div>
+ </form>
+ </div>
+</div>
+</div>
+ <script type="text/javascript">
+ function report() {
+ var doc = opener.document;
+ var field = doc.getElementById("<!-- TMPL_VAR NAME='index'-->");
+ field.value = document.f_pop.findvalue.value;
+
+ window.close();
+ return false;
+ }
+ </script>
+</body>
+</html>
--
1.7.1
More information about the Koha-patches
mailing list