This button lets you replace existing authorities using a Z39.50 search.
http://bugs.koha-community.org/show_bug.cgi?id=11961
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
All tests pass
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
my $subject= $pars->{subject};
my $subjectsubdiv= $pars->{subjectsubdiv};
my $srchany= $pars->{srchany};
+ my $authid= $pars->{authid};
my $show_next = 0;
my $total_pages = 0;
$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
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 ) = @_;
$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)){
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');
subject => $subject,
subjectsubdiv => $subjectsubdiv,
srchany => $srchany,
+ authid => $authid,
);
if ( $op ne "do_search" ) {
subject => $subject,
subjectsubdiv => $subjectsubdiv,
srchany => $srchany,
+ authid => $authid,
};
Z3950SearchAuth($pars, $template);
output_html_with_http_headers $input, $cookie, $template->output;
});
$("#z3950submit").click(function(){
- window.open("/cgi-bin/koha/cataloguing/z3950_auth_search.pl","z3950search",'width=800,height=500,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;
});
$("#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(){
<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">
[% 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;
}
<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">
<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>
+ <div class="yui-u">
+ <fieldset class="rows">
+ <ol>
<li><label for="subject">Subject heading: </label> <input type="text" id="subject" name="subject" value="" /></li>
<li><label for="subjectsubdiv">Subject sub-division: </label> <input type="text" id="subjectsubdiv" name="subjectsubdiv" value="" /></li>
- <li><label for="title">Title (any): </label> <input type="text" id="title" name="title" value="[% title |html %]" /></li>
- <li><label for="uniformtitle">Title (uniform): </label> <input type="text" id="uniformtitle" name="uniformtitle" value="[% uniformtitle |html %]" /></li>
+ <li><label for="title">Title (any): </label> <input type="text" id="title" name="title" value="[% title | html %]" /></li>
+ <li><label for="uniformtitle">Title (uniform): </label> <input type="text" id="uniformtitle" name="uniformtitle" value="[% uniformtitle | html %]" /></li>
</ol>
</fieldset>
</div>
<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>
<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 %]" />
<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">
</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 %]