Bugzilla – Attachment 26461 Details for
Bug 11961
Add a "Z39.50 search" button to the authority creation and modfication forms.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Add a "Z39.50 search" button to the authority creation and modification pages.
0001-Add-a-Z39.50-search-button-to-the-authority-creation.patch (text/plain), 14.08 KB, created by
Frédérick Capovilla
on 2014-03-19 16:22:00 UTC
(
hide
)
Description:
Add a "Z39.50 search" button to the authority creation and modification pages.
Filename:
MIME Type:
Creator:
Frédérick Capovilla
Created:
2014-03-19 16:22:00 UTC
Size:
14.08 KB
patch
obsolete
>From 3b72f140185fe51d0c4dc346fda2aba16ac461be Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Fr=C3=A9d=C3=A9rick?= <frederick.capovilla@libeo.com> >Date: Mon, 20 Jan 2014 11:04:52 -0500 >Subject: [PATCH] Add a "Z39.50 search" button to the authority creation and modification > pages. > >This button lets you replace existing authorities using a Z39.50 search. >--- > C4/Breeding.pm | 4 ++- > authorities/authorities.pl | 23 ++++++++++++++ > cataloguing/z3950_auth_search.pl | 3 ++ > .../prog/en/includes/authorities-toolbar.inc | 8 ++++- > .../prog/en/modules/authorities/authorities.tt | 31 ++++++++++++++++++++ > .../en/modules/cataloguing/z3950_auth_search.tt | 20 +++++++------ > 6 files changed, 78 insertions(+), 11 deletions(-) > >diff --git a/C4/Breeding.pm b/C4/Breeding.pm >index 69adcf4..bc48a31 100644 >--- a/C4/Breeding.pm >+++ b/C4/Breeding.pm >@@ -559,6 +559,7 @@ sub Z3950SearchAuth { > my $subject= $pars->{subject}; > my $subjectsubdiv= $pars->{subjectsubdiv}; > my $srchany= $pars->{srchany}; >+ my $authid= $pars->{authid}; > > my $show_next = 0; > my $total_pages = 0; >@@ -708,11 +709,12 @@ sub Z3950SearchAuth { > $row_data{server} = $servername[$k]; > $row_data{breedingid} = $breedingid; > $row_data{heading} = $heading; >+ $row_data{authid} = $authid; > $row_data{heading_code} = $heading_authtype_code; > push( @breeding_loop, \%row_data ); > } > else { >- push(@breeding_loop,{'server'=>$servername[$k],'title'=>join(': ',$oConnection[$k]->error_x()),'breedingid'=>-1}); >+ push(@breeding_loop,{'server'=>$servername[$k],'title'=>join(': ',$oConnection[$k]->error_x()),'breedingid'=>-1,'authid'=>-1}); > } > } > } #if $numresults >diff --git a/authorities/authorities.pl b/authorities/authorities.pl >index de8bbf8..7556f64 100755 >--- a/authorities/authorities.pl >+++ b/authorities/authorities.pl >@@ -344,6 +344,27 @@ sub CreateKey { > return int(rand(1000000)); > } > >+=item GetMandatoryFieldZ3950 >+ >+ This function return an hashref which containts all mandatory field >+ to search with z3950 server. >+ >+=cut >+ >+sub GetMandatoryFieldZ3950($){ >+ my $authtypecode = shift; >+ >+ #Tags guessed (see GuessAuthTypeCode from AuthoritiesMarc.pm) >+ >+ return { >+ '100'.'a' => 'authorpersonal', >+ '110'.'a' => 'authorcorp', >+ '111'.'a' => 'authormeetingcon', >+ '130'.'a' => 'uniformtitle', >+ '150'.'a' => 'topic', >+ }; >+} >+ > sub build_tabs { > my ( $template, $record, $dbh, $encoding,$input ) = @_; > >@@ -580,6 +601,8 @@ my ($template, $loggedinuser, $cookie) > $template->param(nonav => $nonav,index=>$myindex,authtypecode=>$authtypecode,breedingid=>$breedingid,); > > $tagslib = GetTagsLabels(1,$authtypecode); >+$mandatory_z3950 = GetMandatoryFieldZ3950($authtypecode); >+ > my $record=-1; > my $encoding=""; > if (($authid) && !($breedingid)){ >diff --git a/cataloguing/z3950_auth_search.pl b/cataloguing/z3950_auth_search.pl >index 3ab7666..ae59f82 100755 >--- a/cataloguing/z3950_auth_search.pl >+++ b/cataloguing/z3950_auth_search.pl >@@ -29,6 +29,7 @@ use C4::Koha; > my $input = new CGI; > my $dbh = C4::Context->dbh; > my $error = $input->param('error'); >+my $authid = $input->param('authid') || 0; > my $nameany = $input->param('nameany'); > my $authorany = $input->param('authorany'); > my $authorcorp = $input->param('authorcorp'); >@@ -62,6 +63,7 @@ $template->param( > subject => $subject, > subjectsubdiv => $subjectsubdiv, > srchany => $srchany, >+ authid => $authid, > ); > > if ( $op ne "do_search" ) { >@@ -98,6 +100,7 @@ my $pars= { > subject => $subject, > subjectsubdiv => $subjectsubdiv, > srchany => $srchany, >+ authid => $authid, > }; > Z3950SearchAuth($pars, $template); > output_html_with_http_headers $input, $cookie, $template->output; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc >index ff96505..b460cdc 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-toolbar.inc >@@ -7,7 +7,13 @@ > }); > > $("#z3950submit").click(function(){ >- window.open("/cgi-bin/koha/cataloguing/z3950_auth_search.pl","z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes'); >+ [% IF ( authid ) %] >+ if (confirm(_("Please note that this Z39.50 search could replace the current record."))){ >+ window.open("/cgi-bin/koha/cataloguing/z3950_auth_search.pl?authid=[% authid %]","z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes'); >+ } >+ [% ELSE %] >+ window.open("/cgi-bin/koha/cataloguing/z3950_auth_search.pl","z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes'); >+ [% END %] > return false; > }); > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt >index ae61553..4e0e6ae 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt >@@ -17,9 +17,37 @@ > $("#f").submit(); > } > }); >+ $("#z3950submit").click(function(){ >+ if (confirm(_("Please note that this Z39.50 search could replace the current record."))){ >+ var strQuery = GetZ3950Terms(); >+ if(strQuery){ >+ window.open("/cgi-bin/koha/cataloguing/z3950_auth_search.pl?authid=[% authid %]"+strQuery,"z3950search",'width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes'); >+ } >+ } >+ return false; >+ }); > }); > > /** >+ * check if z3950 mandatories are set or not >+ */ >+function GetZ3950Terms(){ >+ var strQuery="&authtypecode="+document.forms['f'].authtypecode.value; >+ var mandatories = new Array(); >+ var mandatories_label = new Array(); >+ [% FOREACH BIG_LOO IN BIG_LOOP %][% FOREACH innerloo IN BIG_LOO.innerloop %][% FOREACH subfield_loo IN innerloo.subfield_loop %][% IF ( subfield_loo.z3950_mandatory ) %]mandatories.push("[% subfield_loo.id %]"); >+ mandatories_label.push("[% subfield_loo.z3950_mandatory %]");[% END %][% END %][% END %][% END %] >+ >+ for(var i=0,len=mandatories.length; i<len ; i++){ >+ var field_value = document.getElementById(mandatories[i]).value; >+ if( field_value ){ >+ strQuery += "&"+mandatories_label[i]+"="+field_value; >+ } >+ } >+ return strQuery; >+} >+ >+/** > * check if mandatory subfields are written > */ > function AreMandatoriesNotOk(){ >@@ -177,6 +205,9 @@ function confirmnotdup(redirect){ > > <div id="toolbar" class="btn-toolbar"> > <div class="btn-group"><a href="#" id="addauth" class="btn btn-small" accesskey="w"><i class="icon-hdd"></i> Save</a></div> >+ <div class="btn-group"> >+ <a class="btn btn-small" id="z3950submit" href="#"><i class="icon-search"></i> Z39.50 search</a> >+ </div> > </div> > > <div id="authoritytabs" class="toptabs numbered"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt >index b6a0160..aad602d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt >@@ -7,8 +7,8 @@ > [% INCLUDE 'datatables.inc' %] > <script type="text/javascript"> > //<![CDATA[ >-function Import(Breeding,AuthType) { >- opener.document.location="../authorities/authorities.pl?breedingid="+Breeding+"&authtypecode="+AuthType; >+function Import(Breeding,AuthType,authid) { >+ opener.document.location="../authorities/authorities.pl?breedingid="+Breeding+"&authtypecode="+AuthType+"&authid="+authid; > window.close(); > return false; > } >@@ -103,6 +103,7 @@ tr.selected { background-color : #FFFFCC; } tr.selected td { background-color : > <h2>Z39.50 Authority search points</h2> > <form method="post" action="z3950_auth_search.pl" name="f" class="checkboxed"> > <input type="hidden" name="op" id="op" value="do_search" /> >+ <input type="hidden" name="authid" value="[% authid %]" /> > <div class="yui-g"> > <div class="yui-u first"> > <fieldset class="rows"> >@@ -110,9 +111,9 @@ tr.selected { background-color : #FFFFCC; } tr.selected td { background-color : > <li><label for="srchany">Keyword (any): </label> <input type="text" id="srchany" name="srchany" value="" /></li> > <li><label for="nameany">Name (any): </label> <input type="text" id="nameany" name="nameany" value="" /></li> > <li><label for="authorany">Author (any): </label> <input type="text" id="authorany" name="authorany" value="" /></li> >- <li><label for="authorpersonal">Author (personal): </label> <input type="text" id="authorpersonal" name="authorpersonal" value="" /></li> >- <li><label for="authorcorp">Author (corporate): </label> <input type="text" id="authorcorp" name="authorcorp" value="" /></li> >- <li><label for="authormeetingcon">Author (meeting/conference): </label> <input type="text" id="authormeetingcon" name="authormeetingcon" value="" /></li> >+ <li><label for="authorpersonal">Author (personal): </label> <input type="text" id="authorpersonal" name="authorpersonal" value="[% authorpersonal |html %]" /></li> >+ <li><label for="authorcorp">Author (corporate): </label> <input type="text" id="authorcorp" name="authorcorp" value="[% authorcorp |html %]" /></li> >+ <li><label for="authormeetingcon">Author (meeting/conference): </label> <input type="text" id="authormeetingcon" name="authormeetingcon" value="[% authormeetingcon |html %]" /></li> > </ol> > </fieldset> > </div> >@@ -159,12 +160,12 @@ tr.selected { background-color : #FFFFCC; } tr.selected td { background-color : > <tbody>[% FOREACH breeding_loo IN breeding_loop %] > [% IF ( breeding_loo.breedingid ) %] > <tr id="row[% breeding_loo.breedingid %]"> >- <td>[% breeding_loo.server %] <div class="linktools"><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=[% breeding_loo.breedingid %]" rel="gb_page_center[600,500]">Preview MARC</a> <a href="#" onclick="Import([% breeding_loo.breedingid %],'[% breeding_loo.heading_code %]'); return false">Import</a><a href="#" onclick="closemenu();return false;" title="Close this menu"> X </a></div> </td> >+ <td>[% breeding_loo.server %] <div class="linktools"><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=[% breeding_loo.breedingid %]" rel="gb_page_center[600,500]">Preview MARC</a> <a href="#" onclick="Import([% breeding_loo.breedingid %],'[% breeding_loo.heading_code %]','[% breeding_loo.authid %]'); return false">Import</a><a href="#" onclick="closemenu();return false;" title="Close this menu"> X </a></div> </td> > <td>[% breeding_loo.heading %]</td> > <td>[% breeding_loo.heading_code %]</td> > <td><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=[% breeding_loo.breedingid %]" title="MARC" rel="gb_page_center[600,500]">MARC</a></td> > <!-- <td><a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&importid=[% breeding_loo.breedingid %]" title="MARC" rel="gb_page_center[600,500]">Card</a></td> --> >- <td><a href="#" onclick="Import([% breeding_loo.breedingid %],'[% breeding_loo.heading_code %]'); return false">Import</a></td> >+ <td><a href="#" onclick="Import([% breeding_loo.breedingid %],'[% breeding_loo.heading_code %]','[% breeding_loo.authid %]'); return false">Import</a></td> > </tr> > [% END %] > [% END %]</tbody> >@@ -184,6 +185,7 @@ tr.selected { background-color : #FFFFCC; } tr.selected td { background-color : > <input type="hidden" id="subjectsubdiv" name="subjectsubdiv" value="[% subjectsubdiv %]" /> > <input type="hidden" id="heading" name="heading" value="[% heading %]" /> > <input type="hidden" id="srchany" name="srchany" value="[% srchany %]" /> >+ <input type="hidden" name="authid" value="[% authid %]" /> > > [% FOREACH server IN servers %] > <input type="hidden" name="id" id="z3950_[% server.id %]" value="[% server.id %]" /> >@@ -199,7 +201,7 @@ tr.selected { background-color : #FFFFCC; } tr.selected td { background-color : > <br />Go to page : <input id="goto_page" name="goto_page" value="[% current_page %]" size="4" /><input type="submit" name="changepage_goto" onclick="return validate_goto_page();" value="Go" /> > </form> > >-<p><form method="get" action="/cgi-bin/koha/cataloguing/z3950_auth_search.pl"><input type="submit" value="Try Another Search"/></form></p> >+<p><form method="get" action="/cgi-bin/koha/cataloguing/z3950_auth_search.pl"><input type="hidden" name="authid" value="[% authid %]" /><input type="submit" value="Try Another Search"/></form></p> > [% ELSE %] > [% IF ( errconn ) %] > <div class="dialog alert"> >@@ -212,7 +214,7 @@ tr.selected { background-color : #FFFFCC; } tr.selected td { background-color : > </div> > [% END %] > <div class="dialog message">Nothing found.</div> >- <p><form method="get" action="/cgi-bin/koha/cataloguing/z3950_auth_search.pl"><input type="submit" value="Try Another Search"/></form></p> >+ <p><form method="get" action="/cgi-bin/koha/cataloguing/z3950_auth_search.pl"><input type="hidden" name="authid" value="[% authid %]" /><input type="submit" value="Try Another Search"/></form></p> > [% END %] > > [% END %] >-- >1.7.2.5 >
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 11961
:
26461
|
26516
|
29867
|
30772
|
35418
|
35490
|
35491