[Koha-patches] [PATCH] Bug 5692 : Create 210c alternate plugin and use zebra instead of mysql

Chris Cormack chrisc at catalyst.net.nz
Sun Feb 6 21:33:04 CET 2011


Squashed commit of the following:

commit 84e05d48ca1b09a33509204251ee605d2bf8069d
Author: Matthias Meusburger <matthias.meusburger at biblibre.com>
Date:   Tue Oct 5 16:47:00 2010 +0200

    MT4586: Display fix

commit e7aa56ab53f362399663f4b2656832bb24d938cd
Author: Matthias Meusburger <matthias.meusburger at biblibre.com>
Date:   Fri Oct 1 17:33:03 2010 +0200

    MT4586: Fallback on mysql search for plugins

commit de28b079e27af9a41eb9772366722a0f39b78ca8
Author: Matthias Meusburger <matthias.meusburger at biblibre.com>
Date:   Wed Sep 29 14:59:29 2010 +0200

    MT4586: Use zebra instead of mysql for publisher and collectiontitle searches

commit f89afa98ba0eee9b41f06add34cf5621b4668bb8
Author: Matthias Meusburger <matthias.meusburger at biblibre.com>
Date:   Fri Sep 24 16:51:26 2010 +0200

    MT4586: Adjust query delay

commit d8d4d4ab111659ef70b82c35a45c1d23b09fab25
Author: Matthias Meusburger <matthias.meusburger at biblibre.com>
Date:   Fri Sep 24 11:43:12 2010 +0200

    MT4586: Adds an alternative cataloguing plugin for 210$c
---
 C4/Search.pm                                       |    3 +-
 .../value_builder/unimarc_field_210c_bis.pl        |  109 ++++++++++++++++++++
 cataloguing/value_builder/unimarc_field_225a.pl    |    2 +-
 cataloguing/ysearchzebra.pl                        |   52 +++++++++
 .../value_builder/unimarc_field_210c_bis.tmpl      |   73 +++++++++++++
 5 files changed, 237 insertions(+), 2 deletions(-)
 create mode 100755 cataloguing/value_builder/unimarc_field_210c_bis.pl
 create mode 100644 cataloguing/ysearchzebra.pl
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tmpl

diff --git a/C4/Search.pm b/C4/Search.pm
index a469948..fea5baf 100644
--- a/C4/Search.pm
+++ b/C4/Search.pm
@@ -2622,7 +2622,8 @@ sub GetDistinctValues {
 			return $elements;
    }
    else {
-		$string||= qq("");
+	    $string = "=" . $string if ($fieldname);
+	    $string||= qq("");
 		my @servers=qw<biblioserver authorityserver>;
 		my (@zconns, at results);
         for ( my $i = 0 ; $i < @servers ; $i++ ) {
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..5ecaf83
--- /dev/null
+++ b/cataloguing/value_builder/unimarc_field_210c_bis.pl
@@ -0,0 +1,109 @@
+#!/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");
+
+    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/value_builder/unimarc_field_225a.pl b/cataloguing/value_builder/unimarc_field_225a.pl
index acd02e1..daba32e 100755
--- a/cataloguing/value_builder/unimarc_field_225a.pl
+++ b/cataloguing/value_builder/unimarc_field_225a.pl
@@ -94,7 +94,7 @@ sub plugin_javascript {
             }
                     
             defaultvalue = document.getElementById(\"$field_number\").value;
-            window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_225a.pl&index=\"+index+\"&result=\"+defaultvalue+\"&editor_found=\"+editor_found,\"unimarc225a\",'width=500,height=200,toolbar=false,scrollbars=no');
+            window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_225a.pl&index=\"+index+\"&result=\"+defaultvalue+\"&editor_found=\"+editor_found,\"unimarc225a\",'width=500,height=400,toolbar=false,scrollbars=no');
     
         }
     </script>
diff --git a/cataloguing/ysearchzebra.pl b/cataloguing/ysearchzebra.pl
new file mode 100644
index 0000000..3a626fd
--- /dev/null
+++ b/cataloguing/ysearchzebra.pl
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
+
+# Copyright 2010 BibLibre
+#
+# 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 CGI;
+use C4::Context;
+use C4::Search;
+use C4::Auth qw/check_cookie_auth/;
+
+my $input = new CGI;
+my $query = $input->param('query');
+my $index = $input->param('index');
+
+#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 $results = GetDistinctValues($index, $query);
+
+foreach (@$results) {
+    print $_->{'value'} . "\n";
+
+}
+
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..93f986e
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/unimarc_field_210c_bis.tmpl
@@ -0,0 +1,73 @@
+<!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 = true;
+    
+        // 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;
+}
+});    
+//]]>
+</script>
+    <div id="mainbloc">
+
+
+<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>    
+    <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