Bugzilla – Attachment 7036 Details for
Bug 7400
Add auto-completion on auth_finder
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
proposed patch
0001-Bug-7400-Add-auto-completion-on-auth_finder.patch (text/plain), 11.63 KB, created by
Matthias Meusburger
on 2012-01-04 14:44:13 UTC
(
hide
)
Description:
proposed patch
Filename:
MIME Type:
Creator:
Matthias Meusburger
Created:
2012-01-04 14:44:13 UTC
Size:
11.63 KB
patch
obsolete
>From f4bb77138a772eb1622457cbef672ecd118e2496 Mon Sep 17 00:00:00 2001 >From: Matthias Meusburger <matthias.meusburger@biblibre.com> >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 = "<br />"; >+ 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 @@ >+<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("")); >+ }; >+ >+ // marclist >+ this.marclistDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/authorities/ysearch.pl", ["\n", "\t"]); >+ this.marclistDS.scriptQueryAppend = "op=do_search&type=intranet&and_or=and&operator=contains&orderby=HeadingAsc&querytype=marclist"; >+ this.marclistDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT; >+ this.marclistDS.maxCacheEntries = 60; >+ this.marclistDS.queryMatchSubset = false; >+ >+ var myInput = document.getElementById('value_any'); >+ var myContainer = document.getElementById('yvaluecontainermarclist'); >+ this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.marclistDS); >+ this.oAutoComp.queryDelay = 1; >+ this.oAutoComp.formatResult = this.fnCustomFormatter; >+ this.oAutoComp.maxResultsDisplayed = 1000; >+ >+ >+ // mainentry >+ this.mainentryDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/authorities/ysearch.pl", ["\n", "\t"]); >+ this.mainentryDS.scriptQueryAppend = "op=do_search&type=intranet&and_or=and&operator=contains&orderby=HeadingAsc&querytype=mainentry"; >+ this.mainentryDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT; >+ this.mainentryDS.maxCacheEntries = 60; >+ this.mainentryDS.queryMatchSubset = false; >+ >+ var myInput = document.getElementById('value_main'); >+ var myContainer = document.getElementById('yvaluecontainermainentry'); >+ this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.mainentryDS); >+ this.oAutoComp.queryDelay = 1; >+ this.oAutoComp.formatResult = this.fnCustomFormatter; >+ this.oAutoComp.maxResultsDisplayed = 1000; >+ >+ >+ // mainmainentry >+ this.mainentryDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/authorities/ysearch.pl", ["\n", "\t"]); >+ this.mainentryDS.scriptQueryAppend = "op=do_search&type=intranet&and_or=and&operator=contains&orderby=HeadingAsc&querytype=mainmainentry"; >+ this.mainentryDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT; >+ this.mainentryDS.maxCacheEntries = 60; >+ this.mainentryDS.queryMatchSubset = false; >+ >+ var myInput = document.getElementById('value_mainstr'); >+ var myContainer = document.getElementById('yvaluecontainermainmainentry'); >+ this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.mainentryDS); >+ this.oAutoComp.queryDelay = 1; >+ this.oAutoComp.formatResult = this.fnCustomFormatter; >+ this.oAutoComp.maxResultsDisplayed = 1000; >+ >+ >+} >+}); >+//]]> >+</script> >+ >+ >+<span id="header_search"> > <form name="f" method="get" action="auth_finder.pl"> > <input type="hidden" name="op" value="do_search" /> > <input type="hidden" name="type" value="intranet" /> >@@ -17,8 +83,10 @@ > <option value="start">starts with</option> > <option value="is">is exactly</option> > </select> >- <input type="text" name="value_mainstr" value="[% value_mainstr |html %]" /> >+ <input id="value_mainstr" style="width:400px;" type="text" name="value_mainstr" value="[% value_mainstr |html %]" /> >+ <div id="yvaluecontainermainmainentry"></div> > </li> >+ > <li> > <label for="mainentry">Main entry</label> > <input type="hidden" name="marclist" value="mainentry" /> >@@ -29,8 +97,10 @@ > <option value="start">starts with</option> > <option value="is">is exactly</option> > </select> >- <input type="text" name="value_main" value="[% value_main |html %]" /> >+ <input id="value_main" style="width:400px;" type="text" name="value_main" value="[% value_main |html %]" /> >+ <div id="yvaluecontainermainentry"></div> > </li> >+ > <li> > <label for="marclist">Anywhere</label> > <input type="hidden" name="marclist" value="" /> >@@ -41,15 +111,18 @@ > <option value="start">starts with</option> > <option value="is">is exactly</option> > </select> >- <input type="text" name="value_any" value="[% value_any |html %]" /> >+ <input id="value_any" style="width:400px;" type="text" name="value_any" value="[% value_any |html %]" /> >+ <div id="yvaluecontainermarclist"></div> > </li> >- <li> >- <label for="orderby">Sort by </label> >- <select name="orderby" id="orderby"> >- <option value="">No order</option> >- <option value="HeadingAsc" selected="selected">Heading Ascendant</option> >- <option value="HeadingDsc">Heading Descendant</option> >- </select> >- </li></ol></fieldset> >+ >+ <li> >+ <label for="orderby">Sort by </label> >+ <select name="orderby" id="orderby"> >+ <option value="">No order</option> >+ <option value="HeadingAsc" selected="selected">Heading Ascendant</option> >+ <option value="HeadingDsc">Heading Descendant</option> >+ </select> >+ </li></ol></fieldset> > <fieldset class="action"> <input type="submit" value="Start search" class="submit" /> <a class="cancel close" href="#">Cancel</a></fieldset> > </form> >+</span> >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 @@ > <style type="text/css"> > #custom-doc { width:51.46em;*width:50.17em;min-width:675px; margin:auto; text-align:left; } > </style> >+ <script type="text/javascript" src="[% yuipath %]/utilities/utilities.js"></script> >+ <script type="text/javascript" src="[% yuipath %]/datasource/datasource.js"></script> >+ <script type="text/javascript" src="[% yuipath %]/autocomplete/autocomplete-min.js"></script> >+ >+ > </head> > <body> > <div id="custom-doc" class="yui-t7"> >-- >1.7.5.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 7400
:
7036
|
7082
|
7944
|
7993
|
8120
|
8142