Bug 14660: Fix 3 other cataloguing plugins
[srvgit] / cataloguing / value_builder / callnumber.pl
index 2b56958..9d69f27 100755 (executable)
@@ -4,26 +4,27 @@
 #
 # 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 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 3 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.
+# 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.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use strict;
 use warnings;
 use C4::Auth;
-use CGI;
+use CGI qw ( -utf8 );
 use C4::Context;
+use C4::Output;
 
-=head1
+=head1 DESCRIPTION
 
 Is used for callnumber computation.
 
@@ -36,34 +37,21 @@ In this case, a callnumber has this form : "PREFIX 0009678570".
 
 =cut
 
-sub plugin_parameters {
-}
-
 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 code = document.getElementById('$field_number');
                 var url = '../cataloguing/plugin_launcher.pl?plugin_name=callnumber.pl&code=' + code.value;
-                var blurcallbackcallnumber = {
-                    success: function(o) {
-                        var field = document.getElementById('$field_number');
-                        field.value = o.responseText;
-                        return 1;
-                    }
-                }
-                var transaction = YAHOO.util.Connect.asyncRequest('GET',url, blurcallbackcallnumber, null);
+                var req = \$.get(url);
+                req.done(function(resp){
+                    code.value = resp;
+                    return 1;
+                });
                 return 1;
         }
 
-        function Clic$field_number() {
-            return 1;
-        }
     </script>
     ";
 
@@ -75,7 +63,7 @@ sub plugin {
     my $code = $input->param('code');
 
     my ($template, $loggedinuser, $cookie) = get_template_and_user({
-        template_name   => "cataloguing/value_builder/ajax.tmpl",
+        template_name   => "cataloguing/value_builder/ajax.tt",
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
@@ -95,7 +83,7 @@ sub plugin {
             );
         }
     # If a prefix is submited, we look for the highest itemcallnumber with this prefix, and return it incremented
-    } elsif ( $code =~ m/^[A-Z.\-]+$/ ) {
+    } elsif ( $code =~ m/^[A-Z.\-']+$/ ) {
         my $sth = $dbh->prepare("SELECT MAX(CAST(SUBSTRING_INDEX(itemcallnumber,' ',-1) AS SIGNED)) FROM items WHERE itemcallnumber LIKE ?");
         $sth->execute($code.' %');
         if ( my $max = $sth->fetchrow ) {
@@ -103,13 +91,17 @@ sub plugin {
                 return => $code.' '.($max+1)
             );
         }
+        else {
+            $template->param(
+                return => $code.' 1'
+            );
+        }
+
     # The user entered a custom value, we don't touch it, this could be handled in js
     } else {
         $template->param(
-            return => $code,
+            return => $code
         );
     }
     output_html_with_http_headers $input, $cookie, $template->output;
 }
-
-1;