@@ -, +, @@
---
C4/Charset.pm | 35 ++++++++
authorities/auth_finder.pl | 4 +-
authorities/ysearch.pl | 71 ++++++++++++++++
cataloguing/ysearch.pl | 21 +----
.../prog/en/includes/auth-finder-search.inc | 88 ++++++++++++++++++--
.../prog/en/modules/authorities/auth_finder.tt | 5 +
6 files changed, 195 insertions(+), 29 deletions(-)
create mode 100755 authorities/ysearch.pl
--- a/C4/Charset.pm
+++ a/C4/Charset.pm
@@ -39,6 +39,7 @@ BEGIN {
SetUTF8Flag
SetMarcUnicodeFlag
StripNonXmlChars
+ nsb_clean
);
}
@@ -382,6 +383,40 @@ sub StripNonXmlChars {
return $str;
}
+
+
+=head2 nsb_clean
+
+=over 4
+
+nsb_clean($string);
+
+=back
+
+Removes Non Sorting Block characters
+
+=cut
+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
+ my $C2 = '\xC2' ; # What is this char ? It is sometimes left by the regexp after removing NSB / NSE
+
+ # handles non sorting blocks
+ my ($string) = @_ ;
+ $_ = $string ;
+ s/$NSB//g ;
+ s/$NSE//g ;
+ s/$NSB2//g ;
+ s/$NSE2//g ;
+ s/$C2//g ;
+ $string = $_ ;
+
+ return($string) ;
+}
+
+
=head1 INTERNAL FUNCTIONS
=head2 _default_marc21_charconv_to_utf8
--- a/authorities/auth_finder.pl
+++ a/authorities/auth_finder.pl
@@ -137,7 +137,7 @@ if ( $op eq "do_search" ) {
}
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
- template_name => "authorities/searchresultlist-auth.tmpl",
+ template_name => "authorities/searchresultlist-auth.tt",
query => $query,
type => 'intranet',
authnotrequired => 0,
@@ -168,7 +168,7 @@ if ( $op eq "do_search" ) {
} else {
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
- template_name => "authorities/auth_finder.tmpl",
+ template_name => "authorities/auth_finder.tt",
query => $query,
type => 'intranet',
authnotrequired => 0,
--- a/authorities/ysearch.pl
+++ a/authorities/ysearch.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+
+# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
+
+# Copyright 2011 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
+
+This script allows ajax call for dynamic authorities search
+(used in auth_finder.pl)
+
+=cut
+
+use CGI;
+use Modern::Perl;
+use C4::Context;
+use C4::Charset;
+use C4::AuthoritiesMarc;
+use C4::Auth qw/check_cookie_auth/;
+
+my $query = new CGI;
+
+binmode STDOUT, ":utf8";
+print $query->header( -type => 'text/plain', -charset => 'UTF-8' );
+
+my ( $auth_status, $sessionID ) = check_cookie_auth( $query->cookie('CGISESSID'), { } );
+if ( $auth_status ne "ok" ) {
+ exit 0;
+}
+
+ my $searchstr = $query->param('query');
+ my $searchtype = $query->param('querytype');
+ my @value;
+ given ($searchtype) {
+ when (/^marclist$/) { @value = (undef, undef, $searchstr); }
+ when (/^mainentry$/) { @value = (undef, $searchstr, undef); }
+ when (/^mainmainentry$/) { @value = ($searchstr, undef, undef); }
+ }
+ my @marclist = ($searchtype);
+ my $authtypecode = $query->param('authtypecode');
+ my @and_or = $query->param('and_or');
+ my @excluding = $query->param('excluding');
+ my @operator = $query->param('operator');
+ my $orderby = $query->param('orderby');
+
+ my $resultsperpage = 50;
+ my $startfrom = 0;
+
+ my ( $results, $total ) = SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value, $startfrom * $resultsperpage, $resultsperpage, $authtypecode, $orderby );
+ foreach (@$results) {
+ my ($value) = $_->{'summary'};
+ # Removes new lines
+ $value =~ s/
/ /g;
+ $value =~ s/\n//g;
+ print nsb_clean($value) . "\n";
+ }
--- a/cataloguing/ysearch.pl
+++ a/cataloguing/ysearch.pl
@@ -24,11 +24,10 @@
=cut
-use strict;
-
-#use warnings; FIXME - Bug 2505
+use Modern::Perl;
use CGI;
use C4::Context;
+use C4::Charset;
use C4::Auth qw/check_cookie_auth/;
my $input = new CGI;
@@ -59,20 +58,4 @@ 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) ;
-}
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc
@@ -1,3 +1,69 @@
+
+
+
+
+
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/auth_finder.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/auth_finder.tt
@@ -4,6 +4,11 @@
+
+
+
+
+