Bug 29609: Centralized code to build the link to a biblio detail page
[srvgit] / koha-tmpl / opac-tmpl / bootstrap / en / modules / opac-basket.tt
index 7bff7c0..4e6219c 100644 (file)
@@ -2,53 +2,69 @@
 [% USE Koha %]
 [% USE KohaDates %]
 [% USE Asset %]
+[% SET is_popup = 1 %]
 [% SET TagsInputEnabled = ( ( Koha.Preference( 'opacuserlogin' ) == 1 ) && TagsEnabled && TagsInputOnList ) %]
 
 [% INCLUDE 'doc-head-open.inc' %]
-<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your cart</title>
+<title>Your cart &rsaquo; [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title>
 [% INCLUDE 'doc-head-close.inc' %]
 [% BLOCK cssinclude %]<style>.item-status, .dt-buttons { display: inline; } @media print { body { height: 99%; } }</style>[% END %]
 </head>
 [% INCLUDE 'bodytag.inc' bodyid='basket' %]
     <div class="main">
         <div class="container-fluid">
-            <div class="row-fluid">
-                <div class="span12">
-                    <div id="userbasket">
-                        <h2>Your cart</h2>
+            <div class="row">
+                <div class="col">
+                    <div id="userbasket" class="maincontent">
+                        <h1>Your cart</h1>
+                        <div id="floating">
                             <div id="toolbar" class="toolbar noprint">
                                 [% IF ( verbose ) %]
-                                    <a href="opac-basket.pl" class="brief">Brief display</a>
+                                    <a href="opac-basket.pl" class="btn btn-link btn-sm brief"><i class="fa fa-fw fa-search-minus" aria-hidden="true"></i> Brief display</a>
                                 [% ELSE %]
-                                    <a href="opac-basket.pl" class="detail">More details</a>
+                                    <a href="opac-basket.pl" class="btn btn-link btn-sm detail"><i class="fa fa-fw fa-search-plus" aria-hidden="true"></i> More details</a>
                                 [% END %]
                                 [% IF Koha.Preference( 'opacuserlogin' ) == 1 %]
-                                    <a class="send" href="opac-basket.pl">Send</a>
+                                    <a class="btn btn-link btn-sm send" href="opac-basket.pl"><i class="fa fa-fw fa-envelope" aria-hidden="true"></i> Send</a>
                                 [% END %]
-                                <a class="download" href="opac-basket.pl">Download</a>
-                                <a class="empty" href="opac-basket.pl">Empty and close</a>
-                                <a class="hide close" href="opac-basket.pl">Hide window</a>
+
+                                <div id="download-cart" class="btn-group dropdown">
+                                    <a id="format" class="btn btn-link dropdown-toggle" data-toggle="dropdown" role="button" href="#"><i class="fa fa-fw fa-download" aria-hidden="true"></i> Download <b class="caret"></b></a>
+                                    <div class="dropdown-menu" role="menu" aria-labelledby="format">
+                                        <a role="menuitem" class="dropdown-item download-cart" data-format="bibtex" href="#">BibTeX</a>
+                                        <a role="menuitem" class="dropdown-item download-cart" data-format="isbd" href="#">ISBD</a>
+                                        <a role="menuitem" class="dropdown-item download-cart" data-format="iso2709" href="#">MARC</a>
+                                        <a role="menuitem" class="dropdown-item download-cart" data-format="ris" href="#">RIS (Zotero, EndNote, others)</a>
+                                        [% FOREACH csv_profile IN csv_profiles %]
+                                            <a role="menuitem" class="dropdown-item download-cart" data-format="[% csv_profile.export_format_id | html %]" href="#">CSV - [% csv_profile.profile | html %]</a>
+                                        [% END %]
+                                    </div>
+                                </div>
+
+                                <a class="btn btn-link remove empty" href="opac-basket.pl"><i class="fa fa-fw fa-trash" aria-hidden="true"></i> Empty and close</a>
+                                <a class="btn btn-link close" href="opac-basket.pl"><i class="fa fa-fw fa-times-circle" aria-hidden="true"></i> Hide window</a>
                                 [% IF ( verbose ) %]
-                                    <a class="print-large" href="#">Print</a>
+                                    <a class="btn btn-link btn-sm print-large" href="#"><i class="fa fa-fw fa-print" aria-hidden="true"></i> Print</a>
                                 [% END %]
                             </div>
 
-                            <div id="selections-toolbar" class="toolbar noprint">
-                                <a id="CheckAll" href="#">Select all</a>
-                                <a id="CheckNone" href="#">Clear all</a>
-                                <span class="sep">|</span>
+                            <div class="selections-toolbar toolbar noprint">
+                                <div class="check_control">
+                                    <a id="CheckAll" class="btn btn-link btn-sm btn-sm" href="#">Select all</a>
+                                    <a id="CheckNone" class="btn btn-link btn-sm btn-sm" href="#">Clear all</a>
+                                </div>
                                 <span class="links" id="tag_hides">
-                                    <span id="selections">Select titles to: </span>
-                                    <a href="#" class="deleteshelf disabled">Remove</a>
+                                    <span class="selections">Select titles to: </span>
+                                    <a href="#" class="btn btn-link btn-sm remove deleteshelf disabled" aria-disabled="true"><i class="fa fa-remove" aria-hidden="true"></i> Remove</a>
                                     [% IF ( Koha.Preference( 'opacuserlogin' ) == 1 ) %]
                                         [% IF ( ( Koha.Preference( 'virtualshelves' ) == 1 ) && loggedinusername ) %]
-                                            <a href="#" class="newshelf disabled">Add to a list</a>
+                                            <a href="#" class="btn btn-link btn-sm newshelf disabled" aria-disabled="true"><i class="fa fa-fw fa-list" aria-hidden="true"></i> Add to a list</a>
                                         [% END %]
-                                        [% IF ( Koha.Preference( 'RequestOnOpac' ) == 1 ) %]
-                                            <a href="#" class="hold disabled">Place hold</a>
+                                        [% IF ( Koha.Preference( 'OPACHoldRequests' ) == 1 ) %]
+                                            <a href="#" class="btn btn-link btn-sm hold disabled" aria-disabled="true"><i class="fa fa-fw fa-bookmark" aria-hidden="true"></i> Place hold</a>
                                         [% END %]
                                         [% IF ( TagsInputEnabled && loggedinusername ) %]
-                                            <a href="#" id="tagsel_tag" class="disabled">Tag</a>
+                                            <a href="#" id="tagsel_tag" class="btn btn-link btn-sm disabled" aria-disabled="true"><i class="fa fa-fw fa-tag" aria-hidden="true"></i> Tag</a>
                                         [% END %]
                                     [% END # / IF opacuserlogin %]
                                 </span>
                                 </span>
                                 [% END %]
                             </div>
+                        </div> <!-- /#floating -->
 
                         [% IF ( verbose ) %]
-                            <form action="opac-basket.pl" method="get" name="bookbag_form" id="bookbag_form" class="checkboxed">
+                            <form action="opac-basket.pl" method="get" name="bookbag_form" id="bookbag_form">
                                 [% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
-                                    <h3>
+                                    [% IF BIBLIO_RESULT.title %]
+                                        [% check_title = BIBLIO_RESULT.title %]
+                                    [% ELSE %]
+                                        [% check_title = BIBLIO_RESULT.biblionumber %]
+                                    [% END %]
+                                    <label for="bib[% BIBLIO_RESULT.biblionumber | html %]" class="sr-only">[% check_title | html %]</label>
+                                    <h2>
                                                 <input type="checkbox" class="cb" value="[% BIBLIO_RESULT.biblionumber | html %]" name="bib[% BIBLIO_RESULT.biblionumber | html %]" id="bib[% BIBLIO_RESULT.biblionumber | html %]">
                                                 [% INCLUDE 'biblio-title.inc' biblio=BIBLIO_RESULT %]
                                                 [% IF ( BIBLIO_RESULT.author ) %] [% BIBLIO_RESULT.author | html %][% END %]
-                                    </h3>
+                                    </h2>
                                     <!-- 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 | html %]&amp;rft.btitle=[% BIBLIO_RESULT.title |url %]&amp;rft.date=[% BIBLIO_RESULT.publicationyear | html %]&amp;rft.tpages=[% BIBLIO_RESULT.item('size') | html %]&amp;rft.isbn=[% BIBLIO_RESULT.isbn |url %]&amp;rft.aucorp=&amp;rft.place=[% BIBLIO_RESULT.place | html %]&amp;rft.pub=[% BIBLIO_RESULT.publisher |url %]&amp;rft.edition=[% BIBLIO_RESULT.edition | html %]&amp;rft.series=[% BIBLIO_RESULT.series | html %]&amp;rft.genre="></span>
 
 
                         [% ELSE %]
 
-                            <form action="/cgi-bin/koha/opac-basket.pl" method="get" name="bookbag_form" id="bookbag_form" class="checkboxed">
+                            <form action="/cgi-bin/koha/opac-basket.pl" method="get" name="bookbag_form" id="bookbag_form">
                                 <table id="itemst" class="table table-bordered table-striped">
+                                    <caption class="sr-only">Items in your cart</caption>
                                     <thead>
                                         <tr>
                                             <th class="noprint">&nbsp;</th>
                                     <tbody>
                                     [% FOREACH BIBLIO_RESULT IN BIBLIO_RESULTS %]
                                         <tr>
-                                                <td class="noprint">
+                                                <td class="noprint selectcol">
+                                                    [% IF BIBLIO_RESULT.title %]
+                                                        [% check_title = BIBLIO_RESULT.title %]
+                                                    [% ELSE %]
+                                                        [% check_title = BIBLIO_RESULT.biblionumber %]
+                                                    [% END %]
+                                                    <label for="bib[% BIBLIO_RESULT.biblionumber | html %]" class="sr-only">[% check_title | html %]</label>
                                                 <input type="checkbox" class="cb" value="[% BIBLIO_RESULT.biblionumber | html %]" name="bib[% BIBLIO_RESULT.biblionumber | html %]" id="bib[% BIBLIO_RESULT.biblionumber | html %]">
                                                 </td>
                                             <td>
-                                                <a href="#" onclick="openBiblio('[% BIBLIO_RESULT.dest | html %]',[% BIBLIO_RESULT.biblionumber | html %])">[% INCLUDE 'biblio-title.inc' biblio=BIBLIO_RESULT %]</a>
+                                                <a href="#" onclick="openBiblio('[% PROCESS biblio_a_href biblionumber => BIBLIO_RESULT.biblionumber %]',[% BIBLIO_RESULT.biblionumber | html %])">[% INCLUDE 'biblio-title.inc' biblio=BIBLIO_RESULT %]</a>
                                                 <!-- 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 | html %]&amp;rft.btitle=[% BIBLIO_RESULT.title |url %]&amp;rft.date=[% BIBLIO_RESULT.publicationyear | html %]&amp;rft.tpages=[% BIBLIO_RESULT.item('size') | html %]&amp;rft.isbn=[% BIBLIO_RESULT.isbn |url %]&amp;rft.aucorp=&amp;rft.place=[% BIBLIO_RESULT.place | html %]&amp;rft.pub=[% BIBLIO_RESULT.publisher |url %]&amp;rft.edition=[% BIBLIO_RESULT.edition | html %]&amp;rft.series=[% BIBLIO_RESULT.series | html %]&amp;rft.genre="></span>
                                                 [% IF ( TagsInputEnabled && loggedinusername ) %]
                             <form name="myform" action="opac-basket.pl" method="get">
                                 <input type="hidden" name="records" id="records" />
                             </form>
+                            <form method="post" id="download_cart" action="/cgi-bin/koha/opac-downloadcart.pl">
+                                <input type="hidden" name="format" id="download_format" value="" />
+                                <input type="hidden" name="bib_list" value="[% bib_list | html %]" />
+                            </form>
 
                 </div> <!-- / #userbasket -->
-            </div> <!-- / .span10 -->
-        </div> <!-- / .row-fluid -->
+            </div> <!-- / .col -->
+        </div> <!-- / .row -->
     </div> <!-- / .container-fluid -->
 </div> <!-- / .main -->
 
 [% INCLUDE 'opac-bottom.inc' %]
 
 [% BLOCK jsinclude %]
-    [% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
+    [% Asset.js("lib/hc-sticky.js") | $raw %]
         [% INCLUDE 'datatables.inc' %]
         <script>
-            //<![CDATA[
-
             [% IF ( TagsInputEnabled && loggedinusername ) %]
                 function tagSelected() {
                     var bibs = document.getElementById('records').value;
                         $("#tag_hides").hide();
                         $("#tagsel_form").show();
                     } else {
-                        alert(MSG_NO_RECORD_SELECTED);
+                        alert( __("No item was selected") );
                     }
                 }
 
                 function tagAdded() {
                     var checkedBoxes = $("input:checkbox:checked");
                     if (!$(checkedBoxes).size()) {
-                        alert(MSG_NO_RECORD_SELECTED);
+                        alert( __("No item was selected") );
                         return false;
                     }
 
                     sendBasket();
                 });
 
-                $(".download").click(function(e){
+                $(".download-cart").on("click", function(e){
                     e.preventDefault();
-                    downloadBasket();
+                    var format = $(this).data("format");
+                    $("#download_format").val( format );
+                    $("#download_cart").submit();
                 });
 
                 $(".empty").click(function(e){
                     tagCanceled();
                 });
 
-                $("#CheckAll").click(function(){
-                    var checked = [];
-                    $(".checkboxed").checkCheckboxes("*", true).each(
-                        function() {
-                            selRecord(this.value,true);
-                        }
-                    );
+                $("#CheckAll").click(function(e){
+                    e.preventDefault();
+                    $(".cb").each(function(){
+                        $(this).prop("checked", true);
+                        selRecord(this.value, true);
+                    });
                     enableCheckboxActions();
-                    return false;
                 });
 
-                $("#CheckNone").click(function(){
-                    var checked = [];
-                    $(".checkboxed").unCheckCheckboxes("*",true).each(
-                        function() {
-                            selRecord(this.value,false);
-                        }
-                    );
+                $("#CheckNone").click(function(e){
+                    e.preventDefault();
+                    $(".cb").each(function(){
+                        $(this).prop("checked", false);
+                        selRecord(this.value, false);
+                    });
                     enableCheckboxActions();
-                    return false;
                 });
 
-                var itemst = $("#itemst").dataTable($.extend(true, {}, dataTablesDefaults, {
-                    "order": [[ 1, "asc" ]],
-                    "columnDefs": [
-                      { "targets": [ 0,-1 ], "sortable": false, "searchable": false }
-                    ],
-                    "columns": [
-                        null,
-                        { "type": "anti-the" },
-                        null,
-                        null,
-                        null
-                    ],
-
-                }));
-
-                var buttons = new $.fn.dataTable.Buttons(itemst, {
-                     buttons: [
-                        'print'
-                    ]
-                }).container().appendTo($('#toolbar'));
+                if( $("#itemst").length > 0 ){
+                    var itemst = $("#itemst").dataTable($.extend(true, {}, dataTablesDefaults, {
+                        "order": [[ 1, "asc" ]],
+                        "columnDefs": [
+                          { "targets": [ 0,-1 ], "sortable": false, "searchable": false }
+                        ],
+                        "columns": [
+                            null,
+                            { "type": "anti-the" },
+                            null,
+                            null,
+                            null
+                        ],
+                    }));
+
+                    var buttons = new $.fn.dataTable.Buttons(itemst, {
+                         buttons: [
+                            'print'
+                        ]
+                    }).container().appendTo($('#toolbar'));
+                }
 
                 $(".cb").change(function(){
                     selRecord( $(this).val(), $(this).prop("checked") );
                     return false;
                 });
                 enableCheckboxActions();
+
+                Sticky = $("#floating");
+                Sticky.hcSticky({
+                    stickTo: "#userbasket",
+                    stickyClass: "floating"
+                });
             });
 
             function enableCheckboxActions(){
                 // Enable/disable controls if checkboxes are checked
-                var checkedBoxes = $(".checkboxed input:checkbox:checked");
-                if ($(checkedBoxes).size()) {
-                  $("#selections").html(_("With selected titles: "));
-                  $("#selections-toolbar .links a").removeClass("disabled");
+                var checkedBoxes = $(".cb:checked");
+                if ( checkedBoxes.length ) {
+                  $(".selections").html(_("With selected titles: "));
+                  $(".selections-toolbar .links a").removeClass("disabled").attr("aria-disabled", "false");
                 } else {
-                  $("#selections").html(_("Select titles to: "));
-                  $("#selections-toolbar .links a").addClass("disabled");
+                  $(".selections").html(_("Select titles to: "));
+                  $(".selections-toolbar .links a").addClass("disabled").attr("aria-disabled", "true");
                 }
             }
-            //]]>
         </script>
 [% END # / BLOCK jsinclude %]