[Koha-patches] [PATCH] Bug 10836 - New layout for placing holds in the OPAC

Owen Leonard oleonard at myacpl.org
Mon Sep 9 18:05:31 CEST 2013


This patch changes the layout of the OPAC's place hold screen,
eliminating the table in favor of a more flexible, open display.

To test, place single and multiple holds under various conditions:

- Items which are not available to be place on hold
- With OpacHoldNotes on and off
- With OPACItemHolds on and off
- With OPACAllowHoldDateInFuture on and off
- With IndependentBranches on and off
- With JavaScript disabled

Test setting hold notes, holding specific copies, and setting hold start
dates. When setting a hold start date and hold expiration date, the two
datepickers should work together to prevent invalid date combinations
(dates after today, expiration dates which precede the start date).
---
 koha-tmpl/opac-tmpl/prog/en/css/opac.css           |   36 +-
 .../opac-tmpl/prog/en/includes/date-format.inc     |    1 +
 .../opac-tmpl/prog/en/modules/opac-reserve.tt      |  422 ++++++++++----------
 3 files changed, 247 insertions(+), 212 deletions(-)
 create mode 100644 koha-tmpl/opac-tmpl/prog/en/includes/date-format.inc

diff --git a/koha-tmpl/opac-tmpl/prog/en/css/opac.css b/koha-tmpl/opac-tmpl/prog/en/css/opac.css
index 0311bdd..7d40ba9 100644
--- a/koha-tmpl/opac-tmpl/prog/en/css/opac.css
+++ b/koha-tmpl/opac-tmpl/prog/en/css/opac.css
@@ -104,7 +104,7 @@ fieldset.rows li.radio {
 fieldset.rows li.radio label {
 	float : none;
 	width : auto;
-	margin : 0 0 0 1em;
+    margin : 0 .5em;
 }
 
 fieldset.rows ol.radio label {
@@ -3016,15 +3016,6 @@ a.reviewlink,a.reviewlink:visited {
 float:left;
 padding: 0.1em 0;
 }
-.notesrow label {
-    font-weight: bold;
-}
-.notesrow span {
-    display: block;
-}
-.notesrow textarea {
-    width: 100%;
-}
 
 .thumbnail-shelfbrowser span {
     margin: 0px auto;
@@ -3063,3 +3054,28 @@ padding: 0.1em 0;
     display: block;
     overflow: auto;
 }
+
+.holdrow {
+    clear : both;
+    padding:1em;
+    border-bottom:1px solid #CCC;
+    margin-bottom:.5em;
+}
+.holdrow fieldset {
+    border : 0;
+    margin : 0;
+}
+.hold-options {
+    clear : both;
+}
+.toggle-hold-options {
+    background-color: #eee;
+    clear : both;
+    display : block;
+    font-weight : bold;
+    margin: 1em 0;
+    padding: .5em;
+}
+.copiesrow {
+    clear : both;
+}
diff --git a/koha-tmpl/opac-tmpl/prog/en/includes/date-format.inc b/koha-tmpl/opac-tmpl/prog/en/includes/date-format.inc
new file mode 100644
index 0000000..53dae71
--- /dev/null
+++ b/koha-tmpl/opac-tmpl/prog/en/includes/date-format.inc
@@ -0,0 +1 @@
+[% IF ( dateformat == "us" ) %](MM/DD/YYYY)[% ELSIF ( dateformat == "metric" ) %](DD/MM/YYYY)[% ELSE %](YYYY-MM-DD)[% END %]
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
index d1fdbc6..46005ed 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-reserve.tt
@@ -33,7 +33,6 @@
 	});
     // Hides all 'specific copy' table rows on load.
     $(".copiesrow").hide();
-    $(".notesrow").hide();
 
     // Insert reasons for forced hold notes
     $(".forcenotesreason").each(function(){
@@ -44,22 +43,37 @@
         }
     });
 
-    $("#place_on_hdr").show();
-    $(".place_on_type").show();
+    $("#place_on_hdr,.place_on_type,.toggle-hold-options").show();
+    $(".hold-options").hide();
+    $(".holddatefrom,.holddateto").prop("readOnly", true);
+
+    $(".date-format").each(function(){
+        if($(this).hasClass("to")){ var op = "to"; }
+        if($(this).hasClass("from")){ var op = "from"; }
+        var bibNum = $(this).data("biblionumber");
+        $(this).html("<a href=\"#\" class=\"clear-date\" data-op=\"" + op + "\" id=\"clear" + bibNum + "\">" + _("Clear date") + "</a>");
+    });
+
+    $(".clear-date").on("click",function(e){
+        e.preventDefault();
+        var fieldID = this.id.replace("clear","");
+        var op = $(this).data("op");
+        $("#" + op + fieldID).val("");
+    });
 
     // Replace non-JS single-selection with multi-selection capability.
     $(".reserve_mode").val("multi");
     $(".confirm_nonjs").remove();
     $(".confirmjs_hold").each(function(){
         var bib = $(this).attr("title");
-        var html = "<input type =\"checkbox\" class=\"confirmjs\" checked=\"checked\"";
-        html += "value=\"" + bib + "\"/>";
+        var html = "<label><input type =\"checkbox\" class=\"confirmjs\" checked=\"checked\"";
+        html += "value=\"" + bib + "\"/> " + _("Place a hold on") + " </label> ";
         $(this).html(html);
     });
     $(".confirmjs_nohold").each(function(){
         var bib = $(this).attr("title");
-        var html = "<input type =\"checkbox\" class=\"confirmjs\" disabled=\"disabled\"";
-        html += "value=\"" + bib + "\"/>";
+        var html = "<label><input type =\"checkbox\" class=\"confirmjs\" disabled=\"disabled\"";
+        html += "value=\"" + bib + "\"/>" + _("Place a hold on: ") + "</label>";
         $(this).html(html);
     });
 
@@ -115,12 +129,6 @@
         $(".copiesrow").hide();
     });
 
-    // Show or hide holds notes
-    $(".shownotes").click(function(){
-        biblioNum = suffixOf($(this).attr("id"), "_");
-        $("#notesrow_"+biblioNum).toggle();
-    });
-
     // When 'Place Hold' button is clicked
     $(".placehold").click(function(){
         var biblionumbers = "";
@@ -170,6 +178,43 @@
 
         return true;
     });
+    $(".toggle-hold-options").on("click",function(e){
+        e.preventDefault();
+        toggleLink = $(this);
+        var optionsID = this.id.replace("toggle-hold-options-","");
+        var copiesRow = $("#copiesrow_"+optionsID)
+        $("#hold-options-"+optionsID).toggle(0, function() {
+            if( copiesRow.is(':visible') ){
+                $("#reqany_"+optionsID).prop("checked",true);
+                copiesRow.hide();
+            }
+            toggleLink.text($(this).is(':visible') ? _("Hide options") : _("Show more options"));
+        });
+    });
+
+
+
+
+
+[% FOREACH bibitemloo IN bibitemloop %]
+    [% IF ( bibitemloo.holdable ) %]
+        // http://jqueryui.com/demos/datepicker/#date-range
+        var dates[% bibitemloo.biblionumber %] = $( "#from[% bibitemloo.biblionumber %], #to[% bibitemloo.biblionumber %]" ).datepicker({
+            minDate: 1,
+            changeMonth: true,
+            numberOfMonths: 1,
+            onSelect: function( selectedDate ) {
+                var option = this.id == "from[% bibitemloo.biblionumber %]" ? "minDate" : "maxDate",
+                    instance = $( this ).data( "datepicker" );
+                    date = $.datepicker.parseDate(
+                        instance.settings.dateFormat ||
+                        $.datepicker._defaults.dateFormat,
+                        selectedDate, instance.settings );
+                dates[% bibitemloo.biblionumber %].not( this ).datepicker( "option", option, date );
+            }
+        });
+    [% END %]
+[% END %]
 
  });
 // ]]>
@@ -255,209 +300,181 @@
             <input type="hidden" name="biblionumbers" id="biblionumbers"/>
             <input type="hidden" name="selecteditems" id="selections"/>
             <div id="bigloop">
-              <table id="bibitemloop">
-                [% UNLESS ( none_available ) %]<tr>
-                  <th>Hold</th>
-                  <th>Title</th>
-                  [% UNLESS ( item_level_itypes ) %]
-                    <th>Item type</th>
-                  [% END %]
-                  [% IF showholds && showpriority %]
-                  <th>Holds and priority</th>
-                  [% ELSIF showholds %]
-                  <th>Holds</th>
-                  [% ELSIF showpriority %]
-                  <th>Priority</th>
-                  [% END %]
-		  [% IF ( reserve_in_future ) %]
-        <th>Hold starts on date</th>
-		  [% END %]
-        <th>Hold not needed after</th>
-        [% IF ( OpacHoldNotes ) %]<th>Notes</th>[% END %]
-                  [% IF ( OPACItemHolds ) %]
-                    <th id="place_on_hdr" style="display:none">Place on</th>
-                  [% END %]
-                  [% UNLESS ( singleBranchMode ) %]
-		    [% IF ( choose_branch ) %]
-                        <th>Pickup location</th>
-		    [% END %]
-                  [% END %]
-                </tr>[% ELSE %]<tr><th colspan="[% itemtable_colspan + 1 %]">Title</th></tr>[% END %]
 
                 [% FOREACH bibitemloo IN bibitemloop %]
-                  <tr>
-                      [% IF ( bibitemloo.holdable ) %]
-                                    <td class="hold">
-                      <input class="reserve_mode" name="reserve_mode" type="hidden" value="single"/>
-                      <input class="single_bib" name="single_bib" type="hidden" value="[% bibitemloo.biblionumber %]"/>
-                        <span class="confirmjs_hold" title="[% bibitemloo.biblionumber %]"></span>
-                        <span class="confirm_nonjs">
-                          <input type="radio" class="confirmbox checkitem [% bibitemloo.checkitem_bib %]"
-                                 name="[% bibitemloo.checkitem_bib %]" checked="checked"
-                                 id="[% bibitemloo.checkitem_bib %]"
-                                 value="any" />
-                          <label class="confirm_label" for="[% bibitemloo.checkitem_bib %]">Next available copy</label>
-                        </span>
-					</td>
-                      [% ELSE %]
-                                      [% UNLESS ( none_available ) %]<td class="hold"> </td>[% END %]
-                      [% END %]
-                    [% IF ( bibitemloo.holdable ) %]<td class="title">[% ELSE %]<td class="title" colspan="[% itemtable_colspan + 1 %]">[% END %]
-                      <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% bibitemloo.biblionumber %]">[% bibitemloo.title |html %][% IF ( bibitemloo.subtitle ) %] [% FOREACH subtitl IN bibitemloo.subtitle %][% subtitl.subfield %][% END %][% END %]</a>
-                      [% IF ( bibitemloo.author ) %],  by [% bibitemloo.author %][% END %]
+                    <div class="holdrow">
 
-                      [% UNLESS ( bibitemloo.holdable ) %]
+                        <p>
 
-                        [% IF ( bibitemloo.already_reserved ) %]
-                          <div class="bibmessage">You have already requested this title.</div>
+                        [% IF ( bibitemloo.holdable ) %]
+                          <input class="reserve_mode" name="reserve_mode" type="hidden" value="single"/>
+                          <input class="single_bib" name="single_bib" type="hidden" value="[% bibitemloo.biblionumber %]"/>
+                            <span class="confirmjs_hold" title="[% bibitemloo.biblionumber %]" style="padding:.3em"></span>
+                            <span class="confirm_nonjs">
+                              <input type="radio" class="confirmbox checkitem [% bibitemloo.biblionumber %]"
+                                     name="[% bibitemloo.biblionumber %]" checked="checked"
+                                     id="single_[% bibitemloo.biblionumber %]"
+                                     value="any" />
+                              <label class="confirm_label" for="single_[% bibitemloo.biblionumber %]">Place a hold on </label>
+                            </span>
                         [% ELSE %]
-                          [% UNLESS ( bibitemloo.bib_available ) %]
-                            <div class="bibmessage">No available items.</div>
-                          [% ELSE %]
-                            [% IF ( bibitemloo.already_patron_possession ) %]
-                                <div class="bibmessage">This title cannot be requested because it's already in your possession.</div>
+                        [% END %]
+
+                            <a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% bibitemloo.biblionumber %]">[% bibitemloo.title |html %][% IF ( bibitemloo.subtitle ) %] [% FOREACH subtitl IN bibitemloo.subtitle %][% subtitl.subfield %][% END %][% END %]</a>
+                                            [% IF ( bibitemloo.author ) %],  by [% bibitemloo.author %][% END %]</p>
+
+
+
+
+                        [% UNLESS ( bibitemloo.holdable ) %]
+                            [% IF ( bibitemloo.already_reserved ) %]
+                                <div class="bibmessage">You have already requested this title.</div>
                             [% ELSE %]
-                                <div class="bibmessage">This title cannot be requested.</div>
+                                [% UNLESS ( bibitemloo.bib_available ) %]
+                                    <div class="bibmessage">No available items.</div>
+                                [% ELSE %]
+                                    [% IF ( bibitemloo.already_patron_possession ) %]
+                                        <div class="bibmessage">This title cannot be requested because it's already in your possession.</div>
+                                    [% ELSE %]
+                                        <div class="bibmessage">This title cannot be requested.</div>
+                                    [% END %]
+                                [% END %]
                             [% END %]
-                          [% END %]
                         [% END %]
 
+                        [% IF ( bibitemloo.holdable ) %]
+                            <fieldset class="rows">
+                            <ul>
+                            <!-- HOLDABLE -->
+                            [% UNLESS ( item_level_itypes ) %]
+                                <li class="itype">
+                                    <span class="label">Item type: </span>
+                                    [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
+                                    [% bibitemloo.description %]
+                                </li>
+                            [% END %]
+                            [% IF showholds || showpriority %]
+                                <li class="priority">
+                                    <span class="label">Holds and priority: </span>
+                                    [% IF showpriority %] [% bibitemloo.rank %] [% END %]
+                                    [% IF showholds && showpriority %] out of [% END %]
+                                    [% IF showholds %] [% bibitemloo.reservecount %] [% END %]
+                                </li>
+                            [% END %]
+
 
-                        [% END %]
 
-                    </td>
-                    [% IF ( bibitemloo.holdable ) %]
-            <!-- HOLDABLE -->
-                        [% UNLESS ( item_level_itypes ) %]
-                        <td class="itype">
-                            [% IF ( bibitemloo.imageurl ) %]<img src="[% bibitemloo.imageurl %]" alt="" />[% END %]
-                            [% bibitemloo.description %]
-                        </td>
+                            [% UNLESS ( singleBranchMode ) %]
+                                [% IF ( bibitemloo.holdable ) %]
+                                    [% IF ( choose_branch ) %]
+                                        <li class="branch">
+                                            <label for="branch_[% bibitemloo.biblionumber %]">Pick up location:</label>
+                                            [% UNLESS ( bibitemloo.holdable ) %]
+                                                <select name="branch" id="branch_[% bibitemloo.biblionumber %]" disabled="disabled">
+                                                    [% FOREACH branchloo IN bibitemloo.branchloop %]
+                                                        [% IF ( branchloo.selected ) %]
+                                                            <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
+                                                        [% ELSE %]
+                                                            <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
+                                                        [% END %]
+                                                    [% END %]
+                                                </select>
+                                            [% ELSE %]
+                                                <select name="branch" id="branch_[% bibitemloo.biblionumber %]">
+                                                    [% FOREACH branchloo IN bibitemloo.branchloop %]
+                                                        [% IF ( branchloo.selected ) %]
+                                                            <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
+                                                        [% ELSE %]
+                                                            <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
+                                                        [% END %]
+                                                    [% END %]
+                                                </select>
+                                            [% END %]
+                                        </li>
+                                    [% END %]
+                                [% END %]
+                            [% END %]
+                        </ul>
+                        <a class="toggle-hold-options" id="toggle-hold-options-[% bibitemloo.biblionumber %]" style="display:none;" href="#">Show more options</a>
+                        <div id="hold-options-[% bibitemloo.biblionumber %]" class="hold-options">
+                        <ul>
+                            [% IF ( reserve_in_future ) %]
+                                <li><label for="from[% bibitemloo.biblionumber %]">Hold starts on date:</label>
+                                    <input name="reserve_date_[% bibitemloo.biblionumber %]" id="from[% bibitemloo.biblionumber %]" size="10" class="holddatefrom"/>
+                                    <span class="date-format from" data-biblionumber="[% bibitemloo.biblionumber %]">[% INCLUDE 'date-format.inc' %]</span>
+                                </li>
+                            [% END %]
+
+                        [% END %]
+                        [% IF ( bibitemloo.holdable ) %]
+                            <li>
+                                <label for="to[% bibitemloo.biblionumber %]">Hold not needed after:</label>
+                                    <input name="expiration_date_[% bibitemloo.biblionumber %]" id="to[% bibitemloo.biblionumber %]" size="10" class="holddateto" />
+                                    <span class="date-format to" data-biblionumber="[% bibitemloo.biblionumber %]">[% INCLUDE 'date-format.inc' %]</span>
+                            </li>
                         [% END %]
-                        [% IF showholds || showpriority %]
-                        <td class="priority">
-                        [% IF showpriority %] [% bibitemloo.rank %] [% END %]
-                        [% IF showholds && showpriority %] out of [% END %]
-                        [% IF showholds %] [% bibitemloo.reservecount %] [% END %]
-                        </td>
+
+                        [% IF ( OpacHoldNotes && bibitemloo.holdable ) %]
+                            <li>
+                                <div class="notesrow" id="notesrow_[% bibitemloo.biblionumber %]">
+                                  <label for="holdnotes[% bibitemloo.biblionumber %]">Hold notes:</label>
+                                  <span id="forcenotesreason_[% bibitemloo.biblionumber %]" class="forcenotesreason"></span>
+                                  <textarea id="holdnotes[% bibitemloo.biblionumber %]" rows="2" cols="30" name="notes_[% bibitemloo.biblionumber %]">[% bibitemloo.holdnotes %]</textarea>
+                                  <input type="hidden" id="notesmandatory_[% bibitemloo.biblionumber %]" value="[% bibitemloo.mandatorynotes %]"/>
+                                </div>
+                            </li>
                         [% END %]
-                [% IF ( reserve_in_future ) %]
-                        <td class="reserve_date">
-              <input name="reserve_date_[% bibitemloo.biblionumber %]" id="from" size="10" class="datepickerfrom"/>
-              <script type="text/javascript">
-              //<![CDATA[
-              $("#reserve_date_[% bibitemloo.biblionumber %]").attr( 'readonly', 'readonly' );
-              //]]>
-              </script>
-      <p style="margin:.3em 2em;">
-      <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('reserve_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear date</a></p>
-                </td>[% END %]
-
-		    [% END %]
-        [% IF ( bibitemloo.holdable ) %]<td class="expiration_date">
-        <input name="expiration_date_[% bibitemloo.biblionumber %]" id="to" size="10" readonly="readonly" class="datepickerto" />
-      <p style="margin:.3em 2em;">
-      <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('expiration_date_[% bibitemloo.biblionumber %]').value='';return false;">Clear date</a></p>
-    </td>[% END %]
-
-    [% IF ( OpacHoldNotes ) %][% IF ( bibitemloo.holdable ) %]<td><input type="button" id="shownotes_[% bibitemloo.biblionumber %]" class="shownotes" value="Edit notes"/></td>[% END %][% END %]
-
-                    [% IF ( bibitemloo.holdable ) %]
-		    <!-- HOLD ABLE -->
-		    [% IF ( OPACItemHolds ) %]
-		    <!-- ITEM HOLDS -->
-                                          <td class="place_on_type" style="display:none">
-                                            <ul>
-                                                <li>
-                                                  [% UNLESS ( bibitemloo.holdable ) %]
-                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
-                                                           id="reqany_[% bibitemloo.biblionumber %]"
-                                                           class="selectany"
-                                                           value="Any"
-                                                           disabled="disabled"
-                                                    />
-                                                  [% ELSE %]
-                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
-                                                           id="reqany_[% bibitemloo.biblionumber %]"
-                                                           class="selectany"
-                                                           value="Any"
-                                                           checked="checked"
-                                                    />
-                                                  [% END %]
-                                                  <label for="reqany_[% bibitemloo.biblionumber %]">Next available copy</label>
-                                                </li>
-                                                <li>
-                                                  [% UNLESS ( bibitemloo.holdable ) %]
-                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
-                                                           id="reqspecific_[% bibitemloo.biblionumber %]"
-                                                           class="selectspecific"
-                                                           disabled="disabled"
-                                                           value="Specific"
-                                                    />
-                                                  [% ELSE %]
-                                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
-                                                           id="reqspecific_[% bibitemloo.biblionumber %]"
-                                                           class="selectspecific"
-                                                           value="Specific"
-                                                    />
-                                                  [% END %]
-                                                  <label for="reqspecific_[% bibitemloo.biblionumber %]">A specific copy</label>
-                                                </li>
-                                            </ul>
-                                          </td>
-                                        [% END %][% END %]
-
-                    [% UNLESS ( singleBranchMode ) %]
+
                         [% IF ( bibitemloo.holdable ) %]
-			    [% IF ( choose_branch ) %]
-                                          <td class="branch">
-                         [% UNLESS ( bibitemloo.holdable ) %]
-                            <select name="branch" id="branch_[% bibitemloo.biblionumber %]" disabled="disabled">
-                              [% FOREACH branchloo IN bibitemloo.branchloop %]
-                                [% IF ( branchloo.selected ) %]
-                                  <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
-                                [% ELSE %]
-                                  <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
-                                [% END %]
-                              [% END %]
-                          </select>
-                          [% ELSE %]
-                            <select name="branch" id="branch_[% bibitemloo.biblionumber %]">
-                              [% FOREACH branchloo IN bibitemloo.branchloop %]
-                                [% IF ( branchloo.selected ) %]
-                                  <option value="[% branchloo.branchcode %]" selected="selected">[% branchloo.branchname %]</option>
-                                [% ELSE %]
-                                  <option value="[% branchloo.branchcode %]">[% branchloo.branchname %]</option>
-                                [% END %]
-                              [% END %]
-                            </select>
-                          [% END %]
-                       </td>
-			    [% END %]
-		        [% END %]
-                    [% END %]
-                  </tr>
+                            <!-- HOLD ABLE -->
+                            [% IF ( OPACItemHolds ) %]
+                            <!-- ITEM HOLDS -->
+
+                                <li class="radio">
+                                  [% UNLESS ( bibitemloo.holdable ) %]
+                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                           id="reqany_[% bibitemloo.biblionumber %]"
+                                           class="selectany"
+                                           value="Any"
+                                           disabled="disabled"
+                                    />
+                                  [% ELSE %]
+                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                           id="reqany_[% bibitemloo.biblionumber %]"
+                                           class="selectany"
+                                           value="Any"
+                                           checked="checked"
+                                    />
+                                  [% END %]
 
-                  [% IF ( OpacHoldNotes ) %]
-                  [% IF ( bibitemloo.holdable ) %]
-                  <tr class="notesrow" id="notesrow_[% bibitemloo.biblionumber %]">
-                      <td> </td>
-                      <td colspan="[% itemtable_colspan %]">
-                          <label for="holdnotes">Hold notes:</label> 
-                          <span id="forcenotesreason_[% bibitemloo.biblionumber %]" class="forcenotesreason"></span>
-                          <textarea name="notes_[% bibitemloo.biblionumber %]">[% bibitemloo.holdnotes %]</textarea>
-                          <input type="hidden" id="notesmandatory_[% bibitemloo.biblionumber %]" value="[% bibitemloo.mandatorynotes %]"/>
-                      </td>
-                  </tr>
-                  [% END %]
-                  [% END %]
+                                  <label for="reqany_[% bibitemloo.biblionumber %]">Next available copy</label>
+                                  [% UNLESS ( bibitemloo.holdable ) %]
+                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                           id="reqspecific_[% bibitemloo.biblionumber %]"
+                                           class="selectspecific"
+                                           disabled="disabled"
+                                           value="Specific"
+                                    />
+                                  [% ELSE %]
+                                    <input type="radio" name="reqtype_[% bibitemloo.biblionumber %]"
+                                           id="reqspecific_[% bibitemloo.biblionumber %]"
+                                           class="selectspecific"
+                                           value="Specific"
+                                    />
+                                  [% END %]
+                                  <label for="reqspecific_[% bibitemloo.biblionumber %]">A specific copy</label>
+                                </li>
 
+                            [% END %]
+                        [% END %]
+                </ul>
+            </div>
+                </fieldset>
+                <br style="clear:both" />
                   [% IF ( OPACItemHolds ) %]
                   [% IF ( bibitemloo.holdable ) %]
-                    <tr class="copiesrow" id="copiesrow_[% bibitemloo.biblionumber %]">
-                      <td> </td>
-                      <td colspan="[% itemtable_colspan %]">
-                        <table>
+
+                        <table class="copiesrow" id="copiesrow_[% bibitemloo.biblionumber %]">
                           <caption>Select a specific copy:</caption>
                           <tr>
                             <th>Copy</th>
@@ -530,18 +547,19 @@
                             </tr>
                           [% END %]
                         </table>
-                      </td>
-                    </tr>
+                    </div>
+
                   [% END %]<!-- bib_available -->
+
                   [% END %]<!-- OPACItemHolds -->
                 [% END %]
-              </table><!-- bibitemloop -->
+
               [% END %] <!-- if message -->
             </div><!-- bigloop -->
 
             [% UNLESS ( message ) %]
             [% UNLESS ( none_available ) %]
-            <input type="submit" value="Place Hold" class="placehold" />
+            <input type="submit" value="Place hold" class="placehold" />
             [% END %]
             [% END %]
 
-- 
1.7.9.5


More information about the Koha-patches mailing list