Koha/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/z3950_search.tt
Owen Leonard 84230fcd79 Bug 25702: Actions button on Search results from Z39.50 is displayed incorrectly
This patch modifies, again, the way the actions popup is implemented in
Z39.50 search results, whether it be in cataloging, authorities, or
acquisitions. The solution for Bug 25282 changed some markup which was
being referred to in JavaScript. This patch makes the markup more
consistent and unifies handling of the menu in one JavaScript file.

The solution changes the way a menu is generated when the user clicks
within the row of Z39.50 search results (not on the "Actions" button).
The script now creates a clone of the actions menu in that row and
appends it to the <td> the user clicked on.

To test, apply the patch and clear your browser cache if necessary. Test
these three areas in the same way:

1. Cataloging -> New from Z39.50 -> Search
2. Authorities -> New from Z39.50 -> Search
3. Acquisitions -> Vendor -> Add to Basket -> From an external source ->
Search.

In each case, test the functionality of the "Actions" menu button in the
last column ("Preview" in Acquisitions search results). The menu
should be positioned correctly and menu choice works correctly

Click anywhere else in the search results table. The same actions menu
should be triggered in that table cell. Confirm that these menu items
work correctly according to the row which was clicked.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2020-06-23 10:15:03 +02:00

246 lines
14 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[% USE raw %]
[% USE Asset %]
[% PROCESS 'i18n.inc' %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Acquisitions &rsaquo; [% IF ( opsearch ) %]Order from external source[% ELSE %]Order from external source &rsaquo; Search results[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
[% USE Koha %]
<style>
.linktools { background-color:#FFF;border-top:1px solid #DDD; border-left: 1px solid #DDD; border-right: 1px solid #666; border-bottom:1px solid #666;display: none; white-space: nowrap;}
.linktools a { font-size : 85%; text-decoration:none; padding:.3em;background-color:#FFF; display:block;float:left;border-right:1px solid #DDD;}
.linktools a:hover { background-color:#EEE;color:#CC3300;border-right:1px solid #CCC;}
tr.selected { background-color : #FFFFCC; } tr.selected td { background-color : transparent !important; } #dataPreview { width : 80%; } @media (max-width: 767px) { #dataPreview { margin: 0; width : auto; } }
</style>
</head>
<body id="acq_z3950_search" class="acq">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'acquisitions-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> &rsaquo; <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid | uri %]">[% name | html %]</a> &rsaquo; <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno | uri %]">Basket [% basketno | html %]</a> &rsaquo; [% IF ( opsearch ) %]Order from external source[% ELSE %]<a href="/cgi-bin/koha/acqui/z3950_search.pl?booksellerid=[% booksellerid | uri %]&amp;basketno=[% basketno | uri %]">Order from external source</a> &rsaquo; Search results[% END %]</div>
<div class="main container-fluid">
[% IF ( opsearch ) %]
<form method="post" action="z3950_search.pl" name="f" class="checkboxed">
<div class="row">
<div class="col-sm-6">
<h2>Order from external source</h2>
<input type="hidden" name="op" id="op" value="do_search" />
<fieldset class="rows">
<ol>
<li><label for="isbn">ISBN: </label> <input type="text" id="isbn" name="isbn" value="[% isbn | html %]" /></li>
<li><label for="issn">ISSN: </label> <input type="text" id="issn" name="issn" value="[% issn | html %]" /></li>
<li><label for="searchtitle">Title: </label> <input type="text" id="searchtitle" name="title" value="[% title | html %]" class="focus" /></li>
<li><label for="author">Author: </label> <input type="text" id="author" name="author" value="[% author | html %]" /></li>
<li><label for="publicationyear">Publication year: </label> <input type="text" id="publicationyear" name="publicationyear" value="[% publicationyear | html %]" /></li>
<li><label for="subject">Subject heading: </label> <input type="text" id="subject" name="subject" value="" /></li>
<li><label for="srchany">Keyword (any): </label> <input type="text" id="srchany" name="srchany" value="" /></li>
<li><label for="lccall">LC call number: </label> <input type="text" id="lccall" name="lccall" value="" /></li>
<li><label for="controlnumber">Control no.: </label> <input type="text" id="controlnumber" name="controlnumber" value="" /></li>
<li><label for="dewey">Dewey: </label> <input type="text" id="dewey" name="dewey" value="" /></li>
<li><label for="stdid">Standard ID: </label> <input type="text" id="stdid" name="stdid" value="" /></li>
<li><label for="frameworkcode" >Select MARC framework:</label>
<select id="frameworkcode" name="frameworkcode" >
<option value="">Default</option>
[% FOREACH framework IN frameworks %]
<option value="[% framework.frameworkcode | html %]" >[% framework.frameworktext | html %]</option>
[% END %]
</select>
</li>
<li><a id="resetZ3950Search" href="#"><i class="fa fa-trash"></i> Clear search form</a></li>
</ol>
</fieldset>
<input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
<input type="hidden" name="basketno" value="[% basketno | html %]" />
<input type="hidden" name="booksellerid" value="[% booksellerid | html %]" />
</div> <!-- /.col-sm-6 -->
<div class="col-sm-6">
<h2>Search targets</h2>
<div id="z3950_search_targets_acq">
<span class="z3950checks"><span class="checkall"><a id="CheckAll" href="#"><i class="fa fa-check"></i> Select all</a></span> | <span class="clearall"><a id="CheckNone" href="#"><i class="fa fa-remove"></i> Clear all</a></span></span>
[% FOREACH serverloo IN serverloop %]
<p>
[% IF ( serverloo.checked ) %]
<input type="checkbox" name="id" id="z3950_[% serverloo.id | html %]" value="[% serverloo.id | html %]" checked="checked" />
[% ELSE %]
<input type="checkbox" name="id" id="z3950_[% serverloo.id | html %]" value="[% serverloo.id | html %]" />
[% END %]
<label for="z3950_[% serverloo.id | html %]">[% serverloo.servername | html %] [[% serverloo.host | html %]]</label>
</p>
[% END %]
</div> <!-- /#z3950_search-targets_acq -->
</div> <!-- /.col-sm-6 -->
</div> <!-- /.row -->
<div class="row">
<div class="col-md-12">
<fieldset class="action"><input type="submit" class="submit" value="Search" /> <a class="cancel" href="/cgi-bin/koha/acqui/basket.pl?booksellerid=[% booksellerid | uri %]&amp;basketno=[% basketno | uri %]">Cancel</a></fieldset>
</div>
</div>
</form>
[% ELSE %]
<div class="row">
<div class="col-md-12">
<h2>Search results</h2>
<p>You searched for:
[% IF ( title ) %]<em>Title: </em><span class=term>[% title | html %]</span> [% END %]
[% IF ( author ) %]<em>Author: </em><span class=term>[% author | html %]</span> [% END %]
[% IF ( publicationyear ) %]<em>Publication year: </em><span class=term>[% publicationyear | html %]</span> [% END %]
[% IF ( isbn ) %]<em>ISBN: </em><span class=term>[% isbn | html %]</span> [% END %]
[% IF ( issn ) %]<em>ISSN: </em><span class=term>[% issn | html %]</span> [% END %]
[% IF ( lccall ) %]<em>LC call number: </em><span class=term>[% lccall | html %]</span> [% END %]
[% IF ( subject ) %]<em>Subject heading: </em><span class=term>[% subject | html %]</span> [% END %]
[% IF ( controlnumber ) %]<em>Control no: </em><span class=term>[% controlnumber | html %]</span> [% END %]
[% IF ( dewey ) %]<em>Dewey: </em><span class=term>[% dewey | html %]</span> [%END %]
</p>
[% IF ( breeding_loop ) %]
<table id="resultst">
<thead><tr>
<th>Server</th>
<th>Title</th>
<th>Author</th>
<th>ISBN</th>
<th>LCCN</th>
[% IF ( Koha.Preference('AdditionalFieldsInZ3950ResultSearch') != '' ) %]
<th>Additional fields</th>
[% END %]
<th>Preview</th>
<th>&nbsp;</th>
</tr></thead>
<tbody>[% FOREACH breeding_loo IN breeding_loop %]
[% IF ( breeding_loo.breedingid ) %]
<tr>
<td>[% breeding_loo.server | html %] <div class="linktools"><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=[% breeding_loo.breedingid | uri %]" class="previewData">Preview MARC</a> <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;importid=[% breeding_loo.breedingid | html %]" class="previewData">Preview card</a> <a href="/cgi-bin/koha/acqui/neworderempty.pl?frameworkcode=[% frameworkcode | uri %]&amp;breedingid=[% breeding_loo.breedingid | html %]&amp;booksellerid=[% booksellerid | uri %]&amp;basketno=[% basketno | uri %]">[% tp('verb', 'Order') | html %]</a> <a href="#" id="closemenu" title="Close this menu"> X </a></div></td>
<td>[% breeding_loo.title | html %]</td>
<td>[% breeding_loo.author | html %]</td>
<td>[% breeding_loo.isbn | html %]</td>
<td>[% breeding_loo.lccn | html %]</td>
[% IF ( Koha.Preference('AdditionalFieldsInZ3950ResultSearch') != '' ) %]
<td>
<dl>
[% FOREACH addnumberfield IN breeding_loo.addnumberfields %]
[% FOREACH string IN breeding_loo.$addnumberfield %]
<dt>[% addnumberfield | html %]:</dt>
<dd>[% string | html %]</dd>
[% END %]
[% END %]
</dl>
</td>
[% END %]
<td class="actions">
<div class="btn-group dropup">
<a class="btn btn-default btn-xs dropdown-toggle" id="z3950preview[% breeding_loo.breedingid | uri %]" role="button" data-toggle="dropdown" href="#">
Preview <b class="caret"></b>
</a>
<ul class="dropdown-menu pull-right" role="menu" aria-labelledby="z3950preview[% breeding_loo.breedingid | html %]">
<li><a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=[% breeding_loo.breedingid | uri %]" title="MARC" class="previewData"><i class="fa fa-eye"></i> MARC</a></li>
<li><a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;importid=[% breeding_loo.breedingid | uri %]" title="Card" class="previewData"><i class="fa fa-eye"></i> Card</a></li>
</ul>
</div>
</td>
<td class="actions"><a href="/cgi-bin/koha/acqui/neworderempty.pl?frameworkcode=[% frameworkcode | uri %]&amp;breedingid=[% breeding_loo.breedingid | uri %]&amp;booksellerid=[% booksellerid | uri %]&amp;basketno=[% basketno | uri %]" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> [% tp('verb', 'Order') | html %]</a></td>
</tr>
[% END %]
[% END %]</tbody>
</table>
<div id="dataPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="dataPreviewLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="dataPreviewLabel">MARC preview</h3>
</div>
<div class="modal-body">
<div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
</div>
<div class="modal-footer">
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
</div>
</div>
<form method="post" action="z3950_search.pl" id="page_form" name="page_form" class="checkboxed">
<input type="hidden" name="op" id="op" value="do_search" />
<input type="hidden" name="current_page" id="current_page" value="[% current_page | html %]" />
<input type="hidden" id="searchtitle" name="title" value="[% title | html %]" />
<input type="hidden" id="isbn" name="isbn" value="[% isbn | html %]" />
<input type="hidden" id="lccall" name="lccall" value="[% lccall | html %]" />
<input type="hidden" id="author" name="author" value="[% author | html %]" />
<input type="hidden" id="publicationyear" name="publicationyear" value="[% publicationyear | html %]" />
<input type="hidden" id="subject" name="subject" value="[% subject | html %]" />
<input type="hidden" id="dewey" name="dewey" value="[% dewey | html %]" />
<input type="hidden" name="frameworkcode" value="[% frameworkcode | html %]" />
<input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
<input type="hidden" name="controlnumber" value="[% controlnumber | html %]" />
<input type="hidden" name="basketno" value="[% basketno | html %]" />
<input type="hidden" name="booksellerid" value="[% booksellerid | html %]" />
[% FOREACH server IN servers %]
<input type="hidden" name="id" id="z3950_[% server.id | html %]" value="[% server.id | html %]" />
[% END %]
[% IF ( show_prevbutton ) %]
<input type="button" name="changepage_prev" value="Previous page" data-currentpage="[% current_page | html %]" />
[% END %]
Page [% current_page | html %] / [% total_pages | html %]
[% IF ( show_nextbutton ) %]
<input type="button" name="changepage_next" value="Next page" data-currentpage="[% current_page | html %]" />
[% END %]
<br />Go to page : <input id="goto_page" name="goto_page" value="[% current_page | html %]" size="4" type="text" /> <input type="submit" name="changepage_goto" value="Go" />
</form>
[% ELSE %]
[% IF ( emptyserverlist ) %]
<div class="dialog alert">You didn't select any external target.</div>
[% ELSE %]
[% IF ( errconn ) %]
<div class="dialog alert">
<ul>
[% FOREACH errcon IN errconn %]
<li>Connection failed to [% errcon.server | html %]</li>
[% END %]
</ul>
</div>
[% END %]
[% END %]
<div class="dialog message">Nothing found. <a href="javascript: history.back()">Try another search</a>.</div>
[% END %]
</div> <!-- /.col-md-12 -->
</div> <!-- /.row -->
[% END %]
[% IF ( numberpending ) %]<h3 align="center">Still [% numberpending | html %] servers to search</h3>[% END %]
[% MACRO jsinclude BLOCK %]
[% Asset.js("js/acquisitions-menu.js") | $raw %]
[% INCLUDE 'datatables.inc' %]
[% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
[% Asset.js("js/z3950_search.js") | $raw %]
<script>
$(document).ready(function(){
var resultst = $("#resultst").dataTable($.extend(true, {}, dataTablesDefaults, {
"aoColumnDefs": [
{ "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
{ "aTargets": [ 1 ], "sType": "nsb-nse" },
],
"aaSorting": [[ 1, "asc" ]],
"bPaginate": false
}));
});
</script>
[% INCLUDE 'z3950_search.inc' %]
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]