Bug 7825: Changed OPACItemHolds syspref to be no|yes|force choice - bootstrap
authorJonathan Druart <jonathan.druart@biblibre.com>
Wed, 18 Dec 2013 13:48:53 +0000 (14:48 +0100)
committerGalen Charlton <gmc@esilibrary.com>
Mon, 26 May 2014 00:57:20 +0000 (00:57 +0000)
Same test plan as previous patch but with the bootstrap theme set.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-reserve.tt

index 66fd0c7..5b1e313 100644 (file)
                                                             </li>
                                                         [% END # / IF OpacHoldNotes %]
 
-                                                        [% IF ( OPACItemHolds ) %]
+                                                        [% IF OPACItemHolds == '1' or OPACItemHolds == 'force' %]
                                                             <!-- ITEM HOLDS -->
-                                                            <li class="lradio">
+                                                            <li class="lradio place_on_type" style="display:none;">
                                                                 <label class="radio inline" for="reqany_[% bibitemloo.biblionumber %]">Next available item</label>
-                                                                [% UNLESS ( bibitemloo.holdable ) %]
-                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]" id="reqany_[% bibitemloo.biblionumber %]" class="selectany" value="Any" disabled="disabled" />
+                                                                [% IF OPACItemHolds == "1" %]
+                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                                                            id="reqany_[% bibitemloo.biblionumber %]"
+                                                                            class="selectany"
+                                                                            value="Any"
+                                                                            checked="checked"
+                                                                    />
                                                                 [% ELSE %]
-                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]" id="reqany_[% bibitemloo.biblionumber %]" class="selectany" value="Any" checked="checked" />
+                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                                                            id="reqany_[% bibitemloo.biblionumber %]"
+                                                                            class="selectany"
+                                                                            value="Any"
+                                                                     />
                                                                 [% END %]
-
                                                                 <label class="radio inline" for="reqspecific_[% bibitemloo.biblionumber %]">A specific item</label>
-                                                                [% UNLESS ( bibitemloo.holdable ) %]
-                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]" id="reqspecific_[% bibitemloo.biblionumber %]" class="selectspecific" disabled="disabled" value="Specific" />
+                                                                [% IF OPACItemHolds == "force" %]
+                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                                                           id="reqspecific_[% bibitemloo.biblionumber %]"
+                                                                           class="selectspecific"
+                                                                           value="Specific"
+                                                                           checked="checked"
+                                                                    />
                                                                 [% ELSE %]
-                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]" id="reqspecific_[% bibitemloo.biblionumber %]" class="selectspecific" value="Specific" />
+                                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                                                           id="reqspecific_[% bibitemloo.biblionumber %]"
+                                                                           class="selectspecific"
+                                                                           value="Specific"
+                                                                    />
                                                                 [% END %]
                                                             </li>
                                                         [% END # / IF OPACItemHolds %]
                                                     </ul>
 
-                                                    [% IF ( OPACItemHolds ) %]
+                                                    [% IF OPACItemHolds == '1' || OPACItemHolds == 'force' %]
                                                         <table class="copiesrow table table-bordered table-striped" id="copiesrow_[% bibitemloo.biblionumber %]">
                                                             <caption>Select a specific item:</caption>
                                                             <tr>
                                                                         [% IF ( itemLoo.available ) %]
                                                                             <input type="radio" class="checkitem checkitem_[% bibitemloo.biblionumber %]" name="checkitem_[% bibitemloo.biblionumber %]" value="[% itemLoo.itemnumber %]" />
                                                                         [% ELSE %]
-                                                                            <input disabled="disabled" type="radio" class="checkitem" name="checkitem" value="[% itemLoo.itemnumber %]" />
+                                                                            <input disabled="disabled" type="radio" class="checkitem" name="checkitem" value="[% itemLoo.itemnumber %]"
+                                                                                   style="display:none;" />
                                                                             <img src="[% interface %]/lib/famfamfam/silk/cross.png" alt="Cannot be put on hold" title="Cannot be put on hold" />
                                                                         [% END %]
 
             $(this).closest("td").find("input").val("");
             e.preventDefault();
         });
+
+    // Select the first item available
+    function select_first_available(id){
+        var radios = $("input:radio[name='checkitem_" + id + "']");
+        $(radios).first().attr("checked", "checked");
+    }
+
     $(document).ready(function() {
         $("#hold-request-form").preventDoubleFormSubmit();
         var copiesRowId = null;
         $(".checkitem").parent().click(function(e){
             if(e.target.tagName.toLowerCase() == 'td'){
                 $(this).find("input.checkitem").each( function() {
-                    $(this).attr('checked', !$(this).attr('checked'));
+                    $(this).attr('checked', 'checked');
                 });
             }
         });
+
+        [% FOREACH bibitemloo IN bibitemloop %]
+          [% IF bibitemloo.holdable %]
+            [% IF OPACItemHolds == 'force' %]
+              $("#copiesrow_[% bibitemloo.biblionumber %]").show();
+            [% END %]
+          [% END %]
+        [% END %]
+
+
+        // click on a first td check the confirmjs checkbox
+        $("td.hold").click(function(e){
+          if(e.target.tagName.toLowerCase() == 'td'){
+            $(this).find("input.confirmjs").each( function() {
+               $(this).attr('checked', !$(this).attr('checked'));
+               $(this).change();
+            });
+          }
+        });
+
         // Hides all 'specific copy' table rows on load.
         $(".copiesrow").hide();
 
             }
         });
 
-        $("#place_on_hdr").show();
-        $(".place_on_type").show();
-        $("#place_on_hdr,.place_on_type,.toggle-hold-options").show();
+        $(".toggle-hold-options").show();
         $(".hold-options").hide();
         $(".holddatefrom,.holddateto").prop("readOnly", true);
 
         $(".confirmjs_hold").each(function(){
             var bib = $(this).attr("title");
             var html = "<label><input type =\"checkbox\" class=\"confirmjs\" checked=\"checked\"";
-            html += "value=\"" + bib + "\"/> " + _("Place a hold on") + " </label> ";
+            html += "value=\"" + bib + "\" id=\"" + bib + "\" /> " + _("Place a hold on") + " </label> ";
             $(this).html(html);
         });
         $(".confirmjs_nohold").each(function(){
             var bib = $(this).attr("title");
             var html = "<label><input type =\"checkbox\" class=\"confirmjs\" disabled=\"disabled\"";
-            html += "value=\"" + bib + "\"/>" + _("Place a hold on: ") + "</label>";
+            html += "value=\"" + bib + "\" id=\"" + bib + "\" />" + _("Place a hold on: ") + "</label>";
             $(this).html(html);
         });
 
-        // Make sure a specific item was selected where specified
-        // before moving on to a new item.
-        function changeSelection (newCopiesRowId, isSpecific) {
-            if (copiesRowId && ((copiesRowId != newCopiesRowId) || (wasSpecific != isSpecific))) {
-                var biblioNum = suffixOf(copiesRowId, "_");
+        // expand or collapse the copiesrow tr
+        function toggle_copiesrow(biblioNum) {
+            var checkbox = $("input:checkbox[value='"+biblioNum+"']");
+            newCopiesRowId = "#copiesrow_" + biblioNum;
+            var select_specific = $("#reqspecific_"+biblioNum).is(":checked");
+            // If the checkbox is checked AND we want a specific item, we display the items block
+            if ( $(checkbox).is(":checked") && select_specific ) {
+                $(newCopiesRowId).show();
+            } else {
+                $(newCopiesRowId).hide();
+             }
+        };
 
-                // If the 'specific copy' radio button was checked
-                  if (wasSpecific && (copiesRowId != newCopiesRowId)) {
-                    // Find the selected copy
-                    var item = $(".checkitem_" + biblioNum + ":checked");
-                    if ($(item).size() == 0) {
-                        alert(MSG_NO_ITEM_SELECTED);
-                        return false;
-                    }
-                }
-            }
-            copiesRowId = newCopiesRowId;
-            wasSpecific = isSpecific;
-            return true;
-        }
+        $("#place_on_hdr").show();
 
-        // When 'specific copy' radio button is clicked
-        $(".selectspecific").click(function() {
+        [% IF OPACItemHolds == '1' %]
+            $(".place_on_type").show();
+            // onload, selectany is checked
+            $(".selectany").attr("checked", "checked");
+        [% END %]
 
-            // Make sure all other specific copy table rows are hidden
-            biblioNum = suffixOf($(this).attr("id"), "_");
-            newCopiesRowId = "#copiesrow_" + biblioNum;
+        // If we can choose a specific item, we preselect the first one
+        [% IF OPACItemHolds =="1" or OPACItemHolds == 'force' %]
+            $("table.copiesrow").each(function(){
+                var id = suffixOf($(this).attr("id"), "_");
+                select_first_available(id);
+            });
+        [% END %]
 
-            if (!changeSelection(newCopiesRowId, true)) {
-                return false;
+        // On confirmsjs change
+        $(".confirmjs").change(function(){
+            var id = suffixOf($(this).attr("id"), "_");
+            // If I m checked, I enable radio buttons
+            if ( $(this).is(":checked") ) {
+                $("#reqspecific_" + id).attr("disabled", false);
+                $("#reqany_" + id).attr("disabled", false);
+            }
+            // Else its are disabled
+            else {
+                $("#reqspecific_" + id).attr("disabled", "disabled");
+                $("#reqany_" + id).attr("disabled", "disabled");
             }
+            // expand or collaspe the items block
+            toggle_copiesrow(id);
+        });
 
-            // Show the specific copy table for this radio button.
-            $(newCopiesRowId).show();
+        // When 'specific copy' or 'first available' radio button is clicked
+        $(".selectspecific, .selectany").click(function() {
+            var id = suffixOf($(this).attr("id"), "_");
+            toggle_copiesrow(id);
         });
 
-        // When 'first available' radion button is clicked
-        $(".selectany").click(function() {
-            // Make sure all other specific copy table rows are hidden
+        // Show or hide holds notes
+        $(".shownotes").click(function(){
             biblioNum = suffixOf($(this).attr("id"), "_");
-            newCopiesRowId = "#copiesrow_" + biblioNum;
-
-            if (!changeSelection(newCopiesRowId, false)) {
-                return false;
-            }
-
-            // Hide the copies table row
-            $(newCopiesRowId).hide();
+            $("#notesrow_"+biblioNum).toggle();
         });
 
         // When 'Place Hold' button is clicked