[Koha-patches] [PATCH] [bug #2829][Replace Previous] add a plugin for 010$a field and 210$c

Nahuel Angelinetti nahuel.angelinetti at biblibre.com
Tue Dec 2 13:00:22 CET 2008


This plugin use the 'ISBN' field(010$a) to search the "publishercode"(editor) and set it in as 210$c.
---
 cataloguing/value_builder/unimarc_field_010.pl     |  117 ++++++++++++++++++++
 .../en/modules/cataloguing/value_builder/ajax.tmpl |    1 +
 2 files changed, 118 insertions(+), 0 deletions(-)
 create mode 100644 cataloguing/value_builder/unimarc_field_010.pl
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ajax.tmpl

diff --git a/cataloguing/value_builder/unimarc_field_010.pl b/cataloguing/value_builder/unimarc_field_010.pl
new file mode 100644
index 0000000..07b8045
--- /dev/null
+++ b/cataloguing/value_builder/unimarc_field_010.pl
@@ -0,0 +1,117 @@
+#!/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., 59 Temple Place,
+# Suite 330, Boston, MA  02111-1307 USA
+
+use strict;
+use C4::Auth;
+use CGI;
+use C4::Context;
+
+
+=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 $res="
+    <script type='text/javascript'>
+        function Focus$field_number() {
+            return 1;
+        }
+
+        function Blur$field_number() {
+                var isbn = document.getElementById('$field_number');
+                var url = '../cataloguing/plugin_launcher.pl?plugin_name=unimarc_field_010.pl&isbn=' + isbn.value;
+                var blurcallback010 =
+                {
+                    success: function(o){
+                        var elems = document.getElementsByTagName('input');
+                        for( i = 0 ; elems[i] ; i++ )
+                        {
+                            if(elems[i].id.match(/^tag_210_subfield_c/)) {
+                                elems[i].value = o.responseText;
+                                return 1;
+                            }
+                        }
+                    }
+                }
+                var transaction = YAHOO.util.Connect.asyncRequest('GET',url, blurcallback010, null);
+                return 1;
+        }
+
+        function Clic$field_number() {
+            return 1;
+        }
+    </script>
+    ";
+
+    return ($field_number,$res);
+}
+
+sub plugin {
+    my ($input) = @_;
+    my $isbn = $input->param('isbn');
+
+    my ($template, $loggedinuser, $cookie)
+            = get_template_and_user({template_name => "cataloguing/value_builder/ajax.tmpl",
+                                    query => $input,
+                                    type => "intranet",
+                                    authnotrequired => 0,
+                                    flagsrequired => {editcatalogue => 1},
+                                    debug => 1,
+                                    });
+
+
+    my $dbh = C4::Context->dbh;
+    my $seg1;
+
+    if (length ($isbn)<13){
+        if ( substr( $isbn, 0, 1 ) <= 7 ) {
+            $seg1 = substr( $isbn, 0, 1 );
+        }elsif ( substr( $isbn, 0, 2 ) <= 94 ) {
+            $seg1 = substr( $isbn, 0, 2 );
+        }elsif ( substr( $isbn, 0, 3 ) <= 995 ) {
+            $seg1 = substr( $isbn, 0, 3 );
+        }elsif ( substr( $isbn, 0, 4 ) <= 9989 ) {
+            $seg1 = substr( $isbn, 0, 4 );
+        }else {
+            $seg1 = substr( $isbn, 0, 5 );
+        }
+    }
+
+    $seg1 .= "%";
+    my $sth = $dbh->prepare('SELECT publishercode FROM biblioitems WHERE isbn LIKE ? LIMIT 1');
+    $sth->execute($seg1);
+
+    if( (my $publishercode) = $sth->fetchrow )
+    {
+        warn $publishercode;
+        $template->param(return => $publishercode);
+    }
+    output_html_with_http_headers $input, $cookie, $template->output;
+}
+1;
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ajax.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ajax.tmpl
new file mode 100644
index 0000000..fa44f11
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ajax.tmpl
@@ -0,0 +1 @@
+<!-- TMPL_IF name="return" --><!-- TMPL_VAR name="return" --><!--/TMPL_IF-->
\ No newline at end of file
-- 
1.5.6.3




More information about the Koha-patches mailing list