Bugzilla – Attachment 72061 Details for
Bug 11297
Add support for custom PQF attributes for Z39.50 server searches
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 11297 - Add support for custom PQF attributes for Z39.50 server searches.
Bug-11297---Add-support-for-custom-PQF-attributes-.patch (text/plain), 8.26 KB, created by
Charles Farmer
on 2018-02-21 20:15:33 UTC
(
hide
)
Description:
Bug 11297 - Add support for custom PQF attributes for Z39.50 server searches.
Filename:
MIME Type:
Creator:
Charles Farmer
Created:
2018-02-21 20:15:33 UTC
Size:
8.26 KB
patch
obsolete
>From 32adb3714be91f0d91e29fbee018f2d1848dc1ed Mon Sep 17 00:00:00 2001 >From: Charles Farmer <charles.farmer@inLibro.com> >Date: Wed, 21 Feb 2018 15:08:29 -0500 >Subject: [PATCH] Bug 11297 - Add support for custom PQF attributes for Z39.50 > server searches. > >Adds the "Attributes" field to z3950 servers. > >The feature here is not quite de same. > >In the old patches, the attributes were applied to individual query parts if the part already contains "@attr" and the additionnal attribute is not already in the query part. > >Here, the content of the new field is prepended to all PQF queries sent to the server. > >This new way of doing is simpler and works for the sponsor. > >Test plan: > I) Apply the patch >II) Run updatedatabase.pl > >1) Add a new z3950 server with the following parameters: >Hostname : catalogue.banq.qc.ca >Port : 210 >Database : IRIS >Syntax : Marc21 > >2) Perform a z3950 search on that server. > Keyword (Any) : egypt >2.1) Nothing Found. > >3) Add attributes on the server administration page > @attr 4=1 > >4) Perform the same z3950 search >4.1) A lot of results >--- > C4/Breeding.pm | 11 ++- > admin/z3950servers.pl | 2 +- > .../prog/en/modules/admin/z3950servers.tt | 78 +++++++++++++++++++++- > 3 files changed, 88 insertions(+), 3 deletions(-) > >diff --git a/C4/Breeding.pm b/C4/Breeding.pm >index a17406b..646ac11 100644 >--- a/C4/Breeding.pm >+++ b/C4/Breeding.pm >@@ -156,10 +156,14 @@ sub Z3950Search { > ); > my @servers = $rs->all; > foreach my $server ( @servers ) { >+ my $server_zquery = $zquery; >+ if(my $attributes = $server->{attributes}){ >+ $server_zquery = "$attributes $zquery"; >+ } > $oConnection[$s] = _create_connection( $server ); > $oResult[$s] = > $server->{servertype} eq 'zed'? >- $oConnection[$s]->search_pqf( $zquery ): >+ $oConnection[$s]->search_pqf( $server_zquery ): > $oConnection[$s]->search(new ZOOM::Query::CQL( > _translate_query( $server, $squery ))); > $s++; >@@ -532,6 +536,7 @@ sub Z3950SearchAuth { > my $record; > my @serverhost; > my @servername; >+ my @server_attributes = (); > my @breeding_loop = (); > > my @oConnection; >@@ -617,12 +622,16 @@ sub Z3950SearchAuth { > $serverhost[$s] = $server->{host}; > $servername[$s] = $server->{servername}; > $encoding[$s] = ($server->{encoding}?$server->{encoding}:"iso-5426"); >+ $server_attributes[$s] = $server->{attributes}; > $s++; > } ## while fetch > } # foreach > my $nremaining = $s; > > for ( my $z = 0 ; $z < $s ; $z++ ) { >+ if(my $attributes = $server_attributes[$z]){ >+ $query = "$attributes $query"; >+ } > $oResult[$z] = $oConnection[$z]->search_pqf($query); > } > >diff --git a/admin/z3950servers.pl b/admin/z3950servers.pl >index d1fe85b..8e085ed 100755 >--- a/admin/z3950servers.pl >+++ b/admin/z3950servers.pl >@@ -66,7 +66,7 @@ if( $op eq 'delete_confirmed' && $id ) { > $id = 0; > } elsif ( $op eq 'add_validated' ) { > my @fields=qw/host port db userid password rank syntax encoding timeout >- recordtype checked servername servertype sru_options sru_fields >+ recordtype checked servername servertype sru_options sru_fields attributes > add_xslt/; > my $formdata = _form_data_hashref( $input, \@fields ); > if( $id ) { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/z3950servers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/z3950servers.tt >index 8bf8483..1484ed5 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/z3950servers.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/z3950servers.tt >@@ -18,6 +18,76 @@ > [% IF op == 'list' %] > <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables_[% KOHA_VERSION %].css" /> > [% END %] >+ >+<script type="text/javascript"> >+//<![CDATA[ >+[% IF ( add_form ) %] >+ $(document).ready(function(){ >+ // Update selects for syntax, encoding and recordtype >+ [% IF server %] >+ $("#syntax").val('[% server.syntax %]'); >+ $("#encoding").val('[% server.encoding %]'); >+ $("#recordtype").val('[% server.recordtype %]'); >+ [% END %] >+ // Disable recordtype (and default to bib) for non-Z3950 servers until auth is supported >+ [% UNLESS (server.servertype||type) == 'zed' %] >+ $("#recordtype").prop('disabled',true); >+ [% END %] >+ $( "#serverentry" ).validate({ >+ rules: { >+ servername: { required: true }, >+ host: { required: true }, >+ port: { >+ required: true, >+ number: true >+ }, >+ db: { required: true }, >+ rank: { number: true }, >+ timeout: { number: true } >+ } >+ }); >+ $("#serverentry").submit(function( event ) { >+ // first test if show_sru_fields exists >+ if( $('#show_sru_fields').length && $('#show_sru_fields').val()=='' && !confirm( _("No SRU search field mappings have been defined. This means that all field searches will go through the whole record. Continue?"))) { >+ return false; >+ } >+ // copy show_sru_fields to hidden counterpart >+ $('#sru_fields').val( $('#show_sru_fields').val() ); >+ // enable recordtype to include field in post >+ $('#recordtype').prop('disabled',false); >+ }); >+ $("#servername").on("blur",function(){ >+ toUC(this); >+ }); >+ $("#modify_sru_fields").on("click",function(){ >+ ModMapping(); >+ }); >+ }); >+ function ModMapping () { >+ var map= $('#show_sru_fields').val(); >+ window.open('/cgi-bin/koha/admin/sru_modmapping.pl?mapping='+map,'popup','width=800,height=400,resizable=yes,toolbar=false,scrollbars=yes,top'); >+ } >+[% ELSE %] >+ $(document).ready(function() { >+ $("#serverst").dataTable($.extend(true, {}, dataTablesDefaults, { >+ "aoColumnDefs": [ >+ { "aTargets": [-1], "bSortable": false, "bSearchable": false }, >+ ], >+ "sPaginationType": "four_button" >+ })); >+ $(".delete").on("click",function(e){ >+ var servername = $(this).data("servername"); >+ if( confirm( _("Are you sure you want to delete server %s?").format(servername) ) ) { >+ return true; >+ } else { >+ e.preventDefault(); >+ } >+ }); >+ }); >+[% END %] >+//]]> >+</script> >+ > </head> > > <body id="admin_z3950servers" class="admin"> >@@ -83,6 +153,10 @@ > </li> > <li><label for="rank">Rank (display order): </label> <input type="text" name="rank" id="rank" size="4" value="[% server.rank %]" /> > </li> >+ [% IF (server.servertype||type) == 'zed' %] >+ <li><label for="attributes">Attributes (additional PQF attributes added to each query): </label><input type="text" name="attributes" id="attributes" size="30" value="[% server.attributes %]" /> >+ </li> >+ [% END %] > > <li><label for="syntax">Syntax (z3950 can send<br /> records in various format. Choose one): </label> > <select name="syntax" id="syntax"> >@@ -159,7 +233,8 @@ > You searched for [% searchfield |html %] > [% END %] > <table id="serverst"> >- <thead><tr><th>Target</th><th>Hostname/Port</th><th>Database</th><th>Userid</th><th>Password</th><th>Preselected</th><th>Rank</th><th>Syntax</th><th>Encoding</th><th>Timeout</th><th>Record type</th><th></th> >+ >+ <thead><tr><th>Target</th><th>Hostname/Port</th><th>Database</th><th>Userid</th><th>Password</th><th>Preselected</th><th>Rank</th><th>Syntax</th><th>Encoding</th><th>Timeout</th><th>Record type</th><th>Attributes</th><th>Options</th> > </tr></thead> > <tbody> > [% FOREACH loo IN loop %] >@@ -172,6 +247,7 @@ > <span>Authority</span> > [% END %] > </td> >+ <td>[% loo.attributes %]</td> > <td> > <div class="dropdown"> > <a class="btn btn-default btn-xs dropdown-toggle" id="reportactions[% savedreport.id %]" role="button" data-toggle="dropdown" href="#"> >-- >2.7.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 11297
:
23144
|
23145
|
40829
|
40889
|
48649
|
50415
|
50416
|
50420
|
50954
|
59448
|
62938
|
62939
|
70190
|
70191
|
70192
|
70193
|
70194
|
70195
|
70196
|
71992
|
71993
|
71994
|
72061
|
72062
|
72063
|
77718
|
77719
|
77720
|
77721
|
77722
|
77723
|
78294
|
78295
|
78296
|
78297
|
80372
|
80496
|
80497
|
80498
|
80499
|
81328
|
81342
|
81343
|
81344
|
81345
|
81346
|
92719
|
92720
|
92721
|
92722
|
98598
|
98599
|
98600
|
98601
|
99227
|
99228
|
99229
|
99230
|
99231