Koha/koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt
Owen Leonard 24729ff8f9 Bug 16477 - Improve staff client cart JavaScript and template
This patch makes several changes to the cart JavaScript and template. In
the template:

- Remove "onclick" attributes in favor of defining events in the
  JavaScript.
- Add a [% BLOCK %] section for some repeated markup.
- Add some Font Awesome icons (I didn't add icons to all controls
  because I thought it looked cluttered).
- Move the batch modification control out of the toolbar and into the
  group of controls which affects selected records. I think this is a
  logical grouping, and makes more sense than having a drop-down menu in
  the toolbar with a single menu item.

JavaScript:

- Created separate "cart.js" file so that JS could be moved out of the
  template without loading up basket.js with event functions which are
  not needed on every page in the staff client.
- Fix JSHint errors.

To test, apply the patch and clear your browser cache if necessary.

- Add multiple items to the cart in the staff client and open the cart.
- Confirm correct functionality of these toolbar buttons:
  - "More details" (and the corresponding "Show less")
  - "Send"
  - "Print"
  - "Empty and close"
- Confirm the correct functionality of all the selection controls:
  Select all, clear all, Remove, Add to a list, Place hold, Batch
  modify, and Batch delete.
- Confirm that clicking any title in the cart opens the correct detail
  page in the parent window.

Followed test plan, works as expected.
Signed-off-by: Marc Véron <veron@veron.ch>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

https://bugs.koha-community.org/show_bug.cgi?id=1647

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
2016-06-24 13:42:22 +00:00

293 lines
13 KiB
Text

[% BLOCK controls %]
<p style="padding: 7px 0; border-top : 1px solid #E8E8E8;">
<a id="CheckAll" href="#"><i class="fa fa-check"></i> Select all</a> <a id="CheckNone" href="#"><i class="fa fa-remove"></i> Clear all</a>
| <b>Selected items :</b>
<a href="#" id="remove_from_cart">Remove</a>
[% IF ( loggedinusername ) %]
| <a href="#" id="add_to_list">Add to a list</a>
[% END %]
[% IF ( CAN_user_reserveforothers ) %]
| <a href="#" id="place_hold">Place hold</a>
[% END %]
[% IF CAN_user_tools_records_batchmod %]
| <a href="#" id="batch_modify">Batch modify</a>
[% END %]
[% IF CAN_user_tools_records_batchdel %]
| <a href="#" id="batch_delete">Batch delete</a>
[% END %]
</p>
[% END %]
[% INCLUDE 'doc-head-open.inc' %]
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] Catalog &rsaquo; Your cart</title>
[% IF ( print_basket ) %]
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="[% IF ( IntranetFavicon ) %][% IntranetFavicon %][% ELSE %][% interface %]/[% theme %]/img/favicon.ico[% END %]" type="image/x-icon" />
<style type="text/css">
@import url([% interface %]/[% theme %]/css/print.css);
</style>
[% ELSE %][% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript" src="[% interface %]/[% theme %]/js/cart.js"></script>
<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
[% INCLUDE 'datatables.inc' %]
[% END %]
</head>
[% IF ( print_basket ) %]<body id="cart_basket" class="cart" onload="print();history.back();">[% ELSE %]<body id="cart_basket" class="cart">[% END %]
<div id="doc" class="yui-t7">
<div class="container">
[% UNLESS ( print_basket ) %]
<h1>Your cart</h1>
<div id="toolbar" class="btn-toolbar">
[% IF ( verbose ) %]
<a href="basket.pl" class="btn btn-small showdetails showless"><i class="fa fa-folder"></i> Brief display</a>
[% ELSE %]
<a href="basket.pl" class="btn btn-small showdetails showmore"><i class="fa fa-folder-open"></i> More details</a>
[% END %]
<a class="btn btn-small" href="basket.pl" id="send_cart"><i class="fa fa-envelope"></i> Send</a>
<div class="btn-group">
<a class="btn btn-small dropdown-toggle" data-toggle="dropdown" href="#" id="downloadcart"><i class="fa fa-download"></i> Download <span class="caret"></span> </a>
<ul class="dropdown-menu">
<li><a href="/cgi-bin/koha/basket/downloadcart.pl?format=iso2709&amp;bib_list=[% bib_list %]">iso2709</a></li>
<li><a href="/cgi-bin/koha/basket/downloadcart.pl?format=ris&amp;bib_list=[% bib_list %]">RIS</a></li>
<li><a href="/cgi-bin/koha/basket/downloadcart.pl?format=bibtex&amp;bib_list=[% bib_list %]">BibTex</a></li>
[% FOREACH csv_profile IN csv_profiles %]
<li><a href="/cgi-bin/koha/basket/downloadcart.pl?format=[% csv_profile.export_format_id %]&amp;bib_list=[% bib_list %]">CSV - [% csv_profile.profile %]</a></li>
[% END %]
</ul>
</div>
<a class="btn btn-small" href="basket.pl" id="print_cart"><i class="fa fa-print"></i> Print</a>
<a class="btn btn-small" href="basket.pl" id="empty_cart"><i class="fa fa-trash"></i> Empty and close</a>
<a class="btn btn-small close" href="basket.pl"><i class="fa fa-times-circle"></i> Hide window</a>
</div>
[% END %]
[% IF ( verbose ) %]
[% UNLESS ( print_basket ) %]
[% PROCESS controls %]
[% END %]
<form action="basket.pl" method="get" name="bookbag_form" id="bookbag_form">
[% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
<h3>
[% IF ( print_basket ) %]
[% BIBLIO_RESULT.title |html %]
[% IF ( BIBLIO_RESULT.subtitle ) %] [% BIBLIO_RESULT.subtitle %][% END %]
[% IF ( BIBLIO_RESULT.author ) %] [% BIBLIO_RESULT.author %][% END %]
[% ELSE %]
<input type="checkbox" class="select_record" value="[% BIBLIO_RESULT.biblionumber %]" name="bib[% BIBLIO_RESULT.biblionumber %]" id="bib[% BIBLIO_RESULT.biblionumber %]" />
[% BIBLIO_RESULT.title |html %]
[% IF ( BIBLIO_RESULT.subtitle ) %] [% BIBLIO_RESULT.subtitle %][% END %]
[% IF ( BIBLIO_RESULT.author ) %] [% BIBLIO_RESULT.author %][% END %]
[% END %]
</h3>
<!-- COinS / Openurl -->
<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.au=[% BIBLIO_RESULT.author %]&amp;rft.btitle=[% BIBLIO_RESULT.title |url %]&amp;rft.date=[% BIBLIO_RESULT.publicationyear %]&amp;rft.tpages=[% BIBLIO_RESULT.item('size') %]&amp;rft.isbn=[% BIBLIO_RESULT.isbn |url %]&amp;rft.aucorp=&amp;rft.place=[% BIBLIO_RESULT.place %]&amp;rft.pub=[% BIBLIO_RESULT.publisher |url %]&amp;rft.edition=[% BIBLIO_RESULT.edition %]&amp;rft.series=[% BIBLIO_RESULT.series %]&amp;rft.genre="></span>
<table>
[% IF ( BIBLIO_RESULT.isbn ) %]
<tr>
<th scope="row">ISBN</th>
<td>[% BIBLIO_RESULT.isbn %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.HASAUTHORS ) %]
<tr>
<th scope="row">Author(s)</th>
<td>
[% IF ( BIBLIO_RESULT.author ) %]
<p>[% BIBLIO_RESULT.author %]</p>
[% END %]
[% IF ( BIBLIO_RESULT.MARCAUTHORS ) %]
[% FOREACH MARCAUTHOR IN BIBLIO_RESULT.MARCAUTHORS %]
<p> [% FOREACH MARCAUTHOR_SUBFIELDS_LOO IN MARCAUTHOR.MARCAUTHOR_SUBFIELDS_LOOP %]
[% MARCAUTHOR_SUBFIELDS_LOO.separator %]
[% MARCAUTHOR_SUBFIELDS_LOO.value %]
[% END %]
</p>
[% END %]
[% END %]
</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.publishercode ) %]
<tr>
<th scope="row">Publisher</th>
<td>[% BIBLIO_RESULT.place %] [% BIBLIO_RESULT.publishercode %] [% BIBLIO_RESULT.publicationyear %]
</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.pages ) %]
<tr>
<th scope="row">Details</th>
<td>[% BIBLIO_RESULT.pages %] [% BIBLIO_RESULT.illus %] [% BIBLIO_RESULT.item('size') %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.seriestitle ) %]
<tr>
<th scope="row">Collection</th>
<td> [% BIBLIO_RESULT.seriestitle %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.MARCSUBJCTS ) %]
<tr>
<th scope="row">Subject(s)</th>
<td>[% FOREACH MARCSUBJCT IN BIBLIO_RESULT.MARCSUBJCTS %]
<p> [% FOREACH MARCSUBJECT_SUBFIELDS_LOO IN MARCSUBJCT.MARCSUBJECT_SUBFIELDS_LOOP %]
[% MARCSUBJECT_SUBFIELDS_LOO.separator %][% MARCSUBJECT_SUBFIELDS_LOO.value %][% END %]
</p>
[% END %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.copyrightdate ) %]
<tr><th scope="row">Copyright</th>
<td> [% BIBLIO_RESULT.copyrightdate %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.MARCNOTES ) %]
<tr>
<th scope="row">Notes</th>
<td>
[% FOREACH MARCNOTE IN BIBLIO_RESULT.MARCNOTES %]
<p>
[% IF MARCNOTE.marcnote.match('^https?://\S+$') %]
- <a href="[% MARCNOTE.marcnote %]">[% MARCNOTE.marcnote %]</a>
[% ELSE %]
- [% MARCNOTE.marcnote %]
[% END %]
[% END %]
</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.unititle ) %]
<tr>
<th scope="row">Unified title</th>
<td> [% BIBLIO_RESULT.unititle %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.serial ) %]
<tr>
<th scope="row">Serial</th>
<td>[% BIBLIO_RESULT.serial %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.dewey ) %]
<tr>
<th scope="row">Dewey</th>
<td>[% BIBLIO_RESULT.dewey %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.classification ) %]
<tr>
<th scope="row">Classification</th>
<td> [% BIBLIO_RESULT.classification %]</td>
</tr>
[% END %]
[% IF ( BIBLIO_RESULT.lccn ) %]
<tr>
<th scope="row">LCCN</th>
<td> [% BIBLIO_RESULT.lccn %]</td>
</tr>
[% END %]
[% IF BIBLIO_RESULT.MARCURLS.size %]
<tr>
<th scope="row">URL(s)</th>
<td>
[% FOREACH MARCurl IN BIBLIO_RESULT.MARCURLS %]
[% IF MARCurl.part %]<p>[% MARCurl.part %]</p>[% END %]
<a href="[% MARCurl.MARCURL %]" title="[% MARCurl.MARCURL %]">[% MARCurl.linktext %]</a>
[% IF MARCurl.notes %][% FOREACH note IN MARCurl.notes %]<p>[% note.note %]</p>[% END %][% END %]
[% END %]
</td>
</tr>
[% END %]
<tr>
<th scope="row">Location(s)</th>
<td>[% IF ( BIBLIO_RESULT.ITEM_RESULTS ) %][% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]
<p>
[% ITEM_RESULT.branchname %] [% ITEM_RESULT.location_description %]
[% IF ( ITEM_RESULT.itemcallnumber ) %]
([% ITEM_RESULT.itemcallnumber %])
[% END %]
</p>
[% END %][% ELSE %]This record has no items.[% END %]</td>
</tr>
</table>
[% END %]
</form>
[% ELSE %]
[% UNLESS ( print_basket ) %]
<form action="/cgi-bin/koha/basket/basket.pl" method="get" name="bookbag_form" id="bookbag_form">
[% PROCESS controls %]
[% END %]
<table id="itemst">
<thead><tr>
[% UNLESS ( print_basket ) %]<th class="NoSort">&nbsp;</th>[% END %]
<th class="anti-the">Title</th>
<th>Item type</th>
<th><a id="items-popover" href="#" data-trigger="hover" data-toggle="popover" data-placement="top" title="Item sorting" data-content="Items are sorted by the highest or lowest callnumber in a group of items respectively.">Items</a></th>
</tr></thead>
[% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
<tr>
[% UNLESS ( print_basket ) %]<td>
<input type="checkbox" class="select_record" value="[% BIBLIO_RESULT.biblionumber %]" name="bib[% BIBLIO_RESULT.biblionumber %]" id="bib[% BIBLIO_RESULT.biblionumber %]" />
</td> [% END %]
<td><a href="[% BIBLIO_RESULT.dest %]?biblionumber=[% BIBLIO_RESULT.biblionumber %]" class="open_title">
[% BIBLIO_RESULT.title |html %]
</a>
[% BIBLIO_RESULT.author %]
<p>[% IF ( BIBLIO_RESULT.publishercode ) %]- [% BIBLIO_RESULT.publishercode %]
[% IF ( BIBLIO_RESULT.place ) %] [% BIBLIO_RESULT.place %][% END %][% END %]
[% IF ( BIBLIO_RESULT.pages ) %] - [% BIBLIO_RESULT.pages %][% IF ( BIBLIO_RESULT.item('size') ) %] [% BIBLIO_RESULT.item('size') %]
[% END %]
[% END %]</p>
[% IF ( BIBLIO_RESULT.notes ) %]
<p>[% BIBLIO_RESULT.notes %]</p>
[% END %]
<!-- COinS / Openurl -->
<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.au=[% BIBLIO_RESULT.author %]&amp;rft.btitle=[% BIBLIO_RESULT.title |url %]&amp;rft.date=[% BIBLIO_RESULT.publicationyear %]&amp;rft.tpages=[% BIBLIO_RESULT.item('size') %]&amp;rft.isbn=[% BIBLIO_RESULT.isbn |url %]&amp;rft.aucorp=&amp;rft.place=[% BIBLIO_RESULT.place %]&amp;rft.pub=[% BIBLIO_RESULT.publisher |url %]&amp;rft.edition=[% BIBLIO_RESULT.edition %]&amp;rft.series=[% BIBLIO_RESULT.series %]&amp;rft.genre="></span>
</td>
<td>[% BIBLIO_RESULT.description %]</td>
<td class="callnumbers">
[% IF ( BIBLIO_RESULT.ITEM_RESULTS ) %]
[% FOREACH ITEM_RESULT IN BIBLIO_RESULT.ITEM_RESULTS %]
<div><span class="nowrap"><strong><span class="callnumber">[% ITEM_RESULT.itemcallnumber %]</span></strong> [% ITEM_RESULT.branchname %] <span class="shelvingloc inline">[% ITEM_RESULT.location_description %]</span></span></div>
[% END %]
[% ELSE %]
This record has no items.
[% END %]
</td>
</tr>
[% END %]
</table></form>
[% END %]
<form name="myform" action="basket/basket.pl" method="get">
<input type="hidden" name="records" id="records" />
</form>
</div>
</div>
</body>
</html>