From f4bb77138a772eb1622457cbef672ecd118e2496 Mon Sep 17 00:00:00 2001 From: Matthias Meusburger Date: Wed, 4 Jan 2012 15:11:03 +0100 Subject: [PATCH] Bug 7400: Add auto-completion on auth_finder - While typing an authority, will automatically propose authorities (similar to autocompletion for patron search if activated) --- authorities/auth_finder.pl | 4 +- authorities/ysearch.pl | 94 +++++++++++++++++++ .../prog/en/includes/auth-finder-search.inc | 95 +++++++++++++++++--- .../prog/en/modules/authorities/auth_finder.tt | 5 + 4 files changed, 185 insertions(+), 13 deletions(-) create mode 100755 authorities/ysearch.pl diff --git a/authorities/auth_finder.pl b/authorities/auth_finder.pl index 99ac2c1..a00d5ea 100755 --- a/authorities/auth_finder.pl +++ b/authorities/auth_finder.pl @@ -136,7 +136,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, @@ -166,7 +166,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, diff --git a/authorities/ysearch.pl b/authorities/ysearch.pl new file mode 100755 index 0000000..4647f10 --- /dev/null +++ b/authorities/ysearch.pl @@ -0,0 +1,94 @@ +#!/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 strict; + +#use warnings; FIXME - Bug 2505 +use CGI; +use C4::Context; +use C4::AuthoritiesMarc; +use C4::Auth qw/check_cookie_auth/; +use Switch; + +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; + switch ($searchtype) { + case "marclist" { @value = (undef, undef, $searchstr); } + case "mainentry" { @value = (undef, $searchstr, undef); } + case "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'}; + print nsb_clean($value) . "\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 + my $htmlnewline = "
"; + my $newline = "\n"; + # handles non sorting blocks + my ($string) = @_ ; + $_ = $string ; + s/$NSB//g ; + s/$NSE//g ; + s/$NSB2//g ; + s/$NSE2//g ; + s/$htmlnewline/ /g; + s/$newline//g; + $string = $_ ; + + return($string) ; +} + diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc index 895658a..1d5ed97 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/auth-finder-search.inc @@ -1,3 +1,69 @@ + + + +
@@ -17,8 +83,10 @@ - + +
+
  • @@ -29,8 +97,10 @@ - + +
  • +
  • @@ -41,15 +111,18 @@ - + +
  • -
  • - - -
  • + +
  • + + +
  • Cancel
    +
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/auth_finder.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/auth_finder.tt index 1c004ad..c76251c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/auth_finder.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/auth_finder.tt @@ -4,6 +4,11 @@ + + + + +
    -- 1.7.5.4