Merge remote branch 'kc/new/enh/bug_3659' into kcmaster
authorChris Cormack <chrisc@catalyst.net.nz>
Tue, 15 Mar 2011 02:58:26 +0000 (15:58 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Tue, 15 Mar 2011 02:58:26 +0000 (15:58 +1300)
1  2 
catalogue/MARCdetail.pl
catalogue/moredetail.pl
catalogue/search.pl
koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
koha-tmpl/intranet-tmpl/prog/en/includes/cat-toolbar.inc
koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc
koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tmpl
koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl

diff --combined catalogue/MARCdetail.pl
@@@ -54,6 -54,7 +54,7 @@@ use MARC::Record
  use C4::Biblio;
  use C4::Items;
  use C4::Acquisition;
+ use C4::Members; # to use GetMember
  use C4::Serials;    #uses getsubscriptionsfrombiblionumber GetSubscriptionsFromBiblionumber
  use C4::Search;               # enabled_staff_search_views
  
@@@ -84,6 -85,16 +85,16 @@@ my ( $template, $loggedinuser, $cookie 
      }
  );
  
+ if($query->cookie("holdfor")){ 
+     my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+     $template->param(
+         holdfor => $query->cookie("holdfor"),
+         holdfor_surname => $holdfor_patron->{'surname'},
+         holdfor_firstname => $holdfor_patron->{'firstname'},
+         holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+     );
+ }
  #count of item linked
  my $itemcount = GetItemsCount($biblionumber);
  $template->param( count => $itemcount,
@@@ -227,7 -238,7 +238,7 @@@ for ( my $tabloop = 0 ; $tabloop <= 10 
              undef @subfields_data;
          }
      }
 -    $template->param( $tabloop . "XX" => \@loop_data );
 +    $template->param( "tab" . $tabloop . "XX" => \@loop_data );
  }
  
  # now, build item tab !
diff --combined catalogue/moredetail.pl
@@@ -31,6 -31,7 +31,7 @@@ use C4::Auth
  use C4::Serials;
  use C4::Dates qw/format_date/;
  use C4::Circulation;  # to use itemissues
+ use C4::Members; # to use GetMember
  use C4::Search;               # enabled_staff_search_views
  
  my $query=new CGI;
@@@ -48,6 -49,16 +49,16 @@@ my ($template, $loggedinuser, $cookie) 
      flagsrequired   => {catalogue => 1},
      });
  
+ if($query->cookie("holdfor")){ 
+     my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor"));
+     $template->param(
+         holdfor => $query->cookie("holdfor"),
+         holdfor_surname => $holdfor_patron->{'surname'},
+         holdfor_firstname => $holdfor_patron->{'firstname'},
+         holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+     );
+ }
  # get variables
  
  my $biblionumber=$query->param('biblionumber');
@@@ -87,7 -98,7 +98,7 @@@ my $itemnumber
  foreach my $item (@items){
      $item->{itemlostloop}= GetAuthorisedValues(GetAuthValCode('items.itemlost',$fw),$item->{itemlost}) if GetAuthValCode('items.itemlost',$fw);
      $item->{itemdamagedloop}= GetAuthorisedValues(GetAuthValCode('items.damaged',$fw),$item->{damaged}) if GetAuthValCode('items.damaged',$fw);
 -    $item->{'collection'}              = $ccodes->{ $item->{ccode} };
 +    $item->{'collection'}              = $ccodes->{ $item->{ccode} } if ($ccodes);
      $item->{'itype'}                   = $itemtypes->{ $item->{'itype'} }->{'description'};
      $item->{'replacementprice'}        = sprintf( "%.2f", $item->{'replacementprice'} );
      $item->{'datelastborrowed'}        = format_date( $item->{'datelastborrowed'} );
diff --combined catalogue/search.pl
@@@ -145,6 -145,7 +145,7 @@@ use C4::Auth qw(:DEFAULT get_session)
  use C4::Search;
  use C4::Languages qw(getAllLanguages);
  use C4::Koha;
+ use C4::Members qw(GetMember);
  use C4::VirtualShelves qw(GetRecentShelves);
  use POSIX qw(ceil floor);
  use C4::Branch; # GetBranches
@@@ -181,6 -182,16 +182,16 @@@ if (C4::Context->preference("marcflavou
      $template->param('UNIMARC' => 1);
  }
  
+ if($cgi->cookie("holdfor")){ 
+     my $holdfor_patron = GetMember('borrowernumber' => $cgi->cookie("holdfor"));
+     $template->param(
+         holdfor => $cgi->cookie("holdfor"),
+         holdfor_surname => $holdfor_patron->{'surname'},
+         holdfor_firstname => $holdfor_patron->{'firstname'},
+         holdfor_cardnumber => $holdfor_patron->{'cardnumber'},
+     );
+ }
  ## URI Re-Writing
  # Deprecated, but preserved because it's interesting :-)
  # The same thing can be accomplished with mod_rewrite in
  
  # load the branches
  my $branches = GetBranches();
 -my @branch_loop;
  
 -# we need to know the borrower branch code to set a default branch
 -my $borrowerbranchcode = C4::Context->userenv->{'branch'};
 -
 -for my $branch_hash (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %$branches) {
 -    # if independantbranches is activated, set the default branch to the borrower branch
 -    my $selected = (C4::Context->preference("independantbranches") and ($borrowerbranchcode eq $branch_hash)) ? 1 : undef;
 -    push @branch_loop, {value => "$branch_hash" , branchname => $branches->{$branch_hash}->{'branchname'}, selected => $selected};
 -}
 +# Populate branch_loop with all branches sorted by their name.  If
 +# independantbranches is activated, set the default branch to the borrower
 +# branch, except for superlibrarian who need to search all libraries.
 +my $user = C4::Context->userenv;
 +my @branch_loop = map {
 +     {
 +        value      => $_,
 +        branchname => $branches->{$_}->{branchname},
 +        selected   => $user->{branch} eq $_ && C4::Branch::onlymine(),
 +     }
 +} sort {
 +    $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname}
 +} keys %$branches;
  
  my $categories = GetBranchCategories(undef,'searchdomain');
  
@@@ -237,11 -237,11 +237,11 @@@ table 
        border-right : 1px solid #BCBCBC;
  }
  
 -table.invis{
 -      border : white;
 -}
 -table.invis tr,table.invis td {
 -      border : white;
 +table.invis,
 +table.invis tr,
 +table.invis td,
 +tr.highlight table.invis td {
 +      border : none;
  }
  
  td, th {
@@@ -304,7 -304,7 +304,7 @@@ tr.onissue td 
        background-color: #FFFFCC;
  }
  
 -tr.highlight.onissue td {
 +tr.odd.onissue td {
        background-color: #FFFFE1;
  }
  
@@@ -439,6 -439,7 +439,7 @@@ ul.toolbar 
  
  ul.toolbar button {
        padding-bottom : 2px;
+       font-family: arial, verdana, helvetica, sans-serif;
  }
  .yui-menu-button  {
        
@@@ -927,13 -928,16 +928,16 @@@ fieldset.rows .inputnote 
  }
  
  #placehold a,
- #placehold button {
+ #placehold button,
+ #holdfor .first-child {
        padding-left : 34px;
        background-image: url("../../img/toolbar-hold.gif");
        background-position : center left;
        background-repeat : no-repeat;
  }
  
+ #holdfor .first-child { padding-left : 17px; }
  #editmenuc .first-child, #deleteshelf .first-child,#newmenuc .first-child, #addbiblio .first-child, #z3950search .first-child, #printmenuc .first-child, #newsupplier .first-child, #savemenuc .first-child, #budgets_menuc .first-child, #periods_menuc .first-child {
        padding-left : 15px;
  }
@@@ -1119,10 -1123,6 +1123,10 @@@ div.first fieldset 
        margin : .4em;
        padding : .4em .4em .4em 25px;
   }
 +
 + .dialog input[type="submit"] {
 +      background : #FFF none;
 + }
   
  .dialog input.approve, td input.approve {
        background : #FFF url(../../img/approve.gif) no-repeat 4px center;
@@@ -1417,6 -1417,11 +1421,11 @@@ li.email 
        padding : .1em 0 .1em 1em;
  }
  
+ /* Hack just for Firefox */
+ html>/**/body #searchheader button, x:-moz-any-link, x:default {
+       padding-bottom : 3px;
+ }
  #searchheader h3 {
  }
  
@@@ -15,7 -15,7 +15,7 @@@
        function GetZ3950Terms(){
                var strQuery="&frameworkcode=";
                <!-- TMPL_LOOP NAME='z3950_search_params' -->
 -                      strQuery += "&" + "<!-- TMPL_VAR NAME="name" -->" + "=" + "<!-- TMPL_VAR NAME="encvalue" -->";
 +                      strQuery += "&" + "<!-- TMPL_VAR NAME="name" ESCAPE=HTML -->" + "=" + "<!-- TMPL_VAR NAME="encvalue" ESCAPE=HTML -->";
                <!-- /TMPL_LOOP -->
                return strQuery;
        }
@@@ -148,7 -148,31 +148,31 @@@ function confirm_items_deletion() 
                container: this,
                        onclick: {fn: printBiblio }
                });
+               <!-- TMPL_IF NAME="CAN_user_reserveforothers" --><!-- TMPL_UNLESS NAME="norequests" -->
+               <!-- TMPL_IF NAME="holdfor" -->
+               //      Create an array of YAHOO.widget.MenuItem configuration properties
+               var onButtonClick = function () { 
+                       location.href="/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->";
+               }
+               var HoldForButtonMenu = [
+                       { text: "Place hold", url: "/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->" },
+                       { text: "Place hold for <!-- TMPL_VAR NAME="holdfor_firstname" --> <!-- TMPL_VAR NAME="holdfor_surname" --> (<!-- TMPL_VAR NAME="holdfor_cardnumber" -->)", url: "/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&findborrower=<!-- TMPL_VAR NAME="holdfor_cardnumber" -->" }
+               ];
  
+               //      Instantiate a Split Button using the array of YAHOO.widget.MenuItem 
+               //      configuration properties as the value for the "menu" 
+               //      configuration attribute.
+               var HoldForButton = new YAHOO.widget.Button({
+                               id: "holdfor",
+                               type: "split",
+                               label: "Place hold",
+                               name: "holdfor",
+                               menu: HoldForButtonMenu,
+                               container: this,
+                               onclick: { fn: onButtonClick }
+               });
+           <!-- TMPL_ELSE -->
            new YAHOO.widget.Button({
                        id: "placehold",
                        type: "link",
                        container: this,
                        href: "/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"
             });
+           <!-- /TMPL_IF -->
+           <!-- /TMPL_IF --><!-- /TMPL_IF -->
            <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_catalogue" -->
                new YAHOO.widget.Button({
                        id: "z3950search",
@@@ -34,11 -34,8 +34,8 @@@ function update_child() 
        // prepare DOM for YUI Toolbar
  
         $(document).ready(function() {
-           $("#printslip").parent().remove();
-               $("#patronflags").parent().remove();
-               $("#deletepatron").parent().remove();
-               $("#moremenuc").empty();
-           $("#printmenuc").empty();
+           $("#printslip,#patronflags,#deletepatron").parent().remove();
+               $("#moremenuc,#printmenuc,#searchtoholdc").empty();
            yuiToolbar();
         });
  
                window.open("/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;print=" + print_type, "printwindow");
                return false;
        }
+       function searchToHold(){
+               var date = new Date();
+               date.setTime(date.getTime() + (10 * 60 * 1000));
+           $.cookie("holdfor", "<!-- TMPL_VAR NAME="borrowernumber" -->", { path: "/", expires: date });
+           location.href="/cgi-bin/koha/catalogue/search.pl";
+       }
        function yuiToolbar() {
            var printmenu = [
                { text: _("Print Page"), onclick: {fn: function(){printx_window("page")}} },
                container: "printmenuc"
            });
  
+           new YAHOO.widget.Button({
+               id: "searchtohold",
+               type: "button",
+               label: _("Search to hold"),
+               container: "searchtoholdc",
+                       onclick: {fn: searchToHold }
+               });
            new YAHOO.widget.Button({
                type: "menu",
                label: _("More"),
@@@ -82,7 -92,6 +92,7 @@@
            new YAHOO.widget.Button("editpatron");
            new YAHOO.widget.Button("addnote");
            new YAHOO.widget.Button("changepassword");
 +          new YAHOO.widget.Button("duplicate");
            new YAHOO.widget.Button("printslip");
                new YAHOO.widget.Button("printpage");
            new YAHOO.widget.Button("renewpatron");
              <!-- /TMPL_IF -->
          <!-- /TMPL_IF -->
        <!-- TMPL_IF name="adultborrower" --><li><a id="addchild" href="/cgi-bin/koha/members/memberentry.pl?op=add&amp;guarantorid=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;category_type=C">Add child</a></li><!-- /TMPL_IF -->
- <!--  <li><a id="addnote" href="/cgi-bin/koha/members/addnotes.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->">Add Note</a></li> -->
        <li><a id="changepassword" href="/cgi-bin/koha/members/member-password.pl?member=<!-- TMPL_VAR NAME="borrowernumber" -->">Change Password</a></li>
 -      <li id="printmenuc"><a id="printpage" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;print=page">Print Page</a></li>
 +      <li><a id="duplicate" href="/cgi-bin/koha/members/memberentry.pl?op=duplicate&amp;borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;category_type=<!-- TMPL_VAR NAME="category_type"-->">Duplicate</a></li>
 +    <li id="printmenuc"><a id="printpage" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;print=page">Print Page</a></li>
        <li><a id="printslip" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;print=slip">Print Slip</a></li>
+       <li id="searchtoholdc"><a id="searchtohold" href="#">Search to hold</a></li>
        <li id="moremenuc"><a id="renewpatron" href="/cgi-bin/koha/members/moremember.pl?reregistration=y&amp;borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->">Renew Account</a></li><!-- TMPL_IF NAME="CAN_user_permissions" --><li><a id="patronflags" href="/cgi-bin/koha/members/member-flags.pl?member=<!-- TMPL_VAR NAME="borrowernumber" -->">Set Permissions</a></li><!-- /TMPL_IF --><li><a id="deletepatron" href="javascript:confirm_deletion();">Delete</a></li>
  </ul></div>
@@@ -5,7 -5,8 +5,8 @@@
  <script type="text/javascript">
  //<![CDATA[
  var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
- var MSG_NON_RESERVES_SELECTED = _("One or more selected items cannot be reserved.");
+ var MSG_NON_RESERVES_SELECTED = _("One or more selected items cannot be placed on hold.");
+ var q_array = new Array();  // will hold search terms, if present
  <!-- TMPL_IF NAME="AmazonEnabled" -->
  // http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
  function verify_images() {
@@@ -21,7 -22,6 +22,6 @@@
          }
      });
  }
- var q_array = new Array();  // will hold search terms, if present
  
  $(window).load(function() {
          verify_images();
  function Dopop(link) {
          newin=window.open(link,'popup','width=500,height=500,toolbar=false,scrollbars=yes,resizeable=yes');
  }
+ function cartList(){
+     if($("#addto").find("option:selected").attr("value") == "addtolist"){
+         var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s","");
+         if (vShelfAdd()) {
+              Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?shelfnumber='+shelfnumber+'&confirm=1&' + vShelfAdd());
+         }
+         return false;
+     } else if($("#addto").find("option:selected").attr("value") == "newlist"){
+         if (vShelfAdd()) {
+             Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?newshelf=1&' + vShelfAdd());
+         }
+         return false;
+     }
+     if($("#addto").find("option:selected").attr("value") == "addtocart"){
+         addMultiple();
+         return false;
+     }
+ }
+ $(window).load(function() {
+         new YAHOO.widget.Button("cartsubmit", { onclick: { fn: cartList }});
+ });
  $(document).ready(function() {
+ $("#placeholdc").empty();
  $('#sortbyform').find("input:submit").hide();
  $('#sort_by').change(function() {
          $('#sortbyform').submit();
      });
  $(".addtocart").show();
          var param1 = "<label for=\"addto\">"+_("Add to:")+"<\/label><select name=\"addto\" id=\"addto\"><option value=\"\"><\/option>";
          <!-- TMPL_IF name="intranetbookbag" -->     param1 += "<option value=\"addtocart\">"+_("Cart")+"<\/option>"; <!-- /TMPL_IF -->
@@@ -48,7 -68,7 +68,7 @@@
          param1 +="<\/optgroup><option value=\"newlist\">"+_("[ New List ]")+"<\/option>"
  <!-- /TMPL_IF -->
          <!-- /TMPL_IF -->
-         param1 += "<\/select> <input type=\"submit\" class=\"submit\" value=\""+_("Save")+"\" />";
+         param1 += "<\/select> <input id=\"cartsubmit\" type=\"submit\" class=\"submit\" value=\""+_("Save")+"\" />";
   $('#sortsubmit').hide();
          $("span.clearall").html("<a id=\"CheckNone\" href=\"#\">"+_("Clear All")+"<\/a>");
          $("span.checkall").html("<a id=\"CheckAll\" href=\"#\">"+_("Select All")+"<\/a>");
  
   $("#tagsel_span").html("<input id=\"tagsel_tag\" class=\"submit\" type=\"submit\" value=\"Tag\"/>");
  
-         function cartList(){
-                         if($("#addto").find("option:selected").attr("value") == "addtolist"){
-                         var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s","");
-                         if (vShelfAdd()) {
-                           Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?shelfnumber='+shelfnumber+'&confirm=1&' + vShelfAdd());
-                         }
-                         return false;
-                 } else if($("#addto").find("option:selected").attr("value") == "newlist"){
-                         if (vShelfAdd()) {
-                           Dopop('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?newshelf=1&' + vShelfAdd());
-                         }
-                         return false;
-                 }
-               if($("#addto").find("option:selected").attr("value") == "addtocart"){
-                         addMultiple();
-                         return false;
-                  }
-         }
      $("#selection_ops").show();
      $(".selection").show();
      <!-- TMPL_IF NAME="query_desc" -->
@@@ -167,6 -167,41 +167,41 @@@ function GetZ3950Terms()
        <!-- /TMPL_LOOP -->
        return strQuery;
  }
+ YAHOO.util.Event.onContentReady("searchheader", function () {
+         new YAHOO.widget.Button( "z3950submit", { onclick: { fn: PopupZ3950 }});
+         <!-- TMPL_IF NAME="holdfor" -->
+         var holdFor = function (){
+             $("#holdFor").val("");
+             placeHold();
+         }
+         var holdForPatron = function () {
+             $("#holdFor").val("<!-- TMPL_VAR NAME="holdfor_cardnumber" -->");
+             placeHold();
+         }
+         var HoldForButtonMenu = [
+             { text: "Place hold", onclick: { fn: holdFor }},
+             { text: "Place hold for <!-- TMPL_VAR NAME="holdfor_firstname" --> <!-- TMPL_VAR NAME="holdfor_surname" --> (<!-- TMPL_VAR NAME="holdfor_cardnumber" -->)", onclick: { fn: holdForPatron }}
+         ];
+         var HoldForButton = new YAHOO.widget.Button({
+                 type: "split",
+                 label: "Place hold",
+                 name: "holdfor",
+                 menu: HoldForButtonMenu,
+                 container: "placeholdc",
+                 onclick: { fn: holdFor }
+         });
+         <!-- TMPL_ELSE -->
+         new YAHOO.widget.Button({
+             id: "placehold",
+             type: "link",
+             label: _("Place hold"),
+             container: "placeholdc",
+             onclick: { fn: placeHold }
+          });
+         <!-- /TMPL_IF -->
+ }); // YAHOO onContentReady
  //]]>
  </script>
  </head>
                  |
                  <a href="#" class="highlight_toggle" id="highlight_toggle_off">Unhighlight</a>
                  <a href="#" class="highlight_toggle" id="highlight_toggle_on">Highlight</a>
+                 |
+               <span class="addto"></span>
                  <!-- TMPL_IF NAME="CAN_user_reserveforothers" -->
-                       <!-- TMPL_IF NAME="DisplayMultiPlaceHold" -->
-                   <input type="button" onclick="placeHold(); return false;" value="Place Hold"/>
-                       <!-- /TMPL_IF -->
+                     <!-- TMPL_IF NAME="DisplayMultiPlaceHold" -->
+                   | <span id="placeholdc"><input type="button" id="placehold" onclick="placeHold(); return false;" value="Place Hold"/></span>
+                     <!-- /TMPL_IF -->
                  <!-- /TMPL_IF -->
-               <span class="addto"></span>
  
-                               <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_catalogue" --><input type="button" onclick="PopupZ3950(); return false;" value="Z39.50 Search"/><!-- /TMPL_IF -->
+                               <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_catalogue" --> | <input type="button" id="z3950submit" onclick="PopupZ3950(); return false;" value="Z39.50 Search"/><!-- /TMPL_IF -->
              </div>
          </div>
      <!-- TMPL_IF NAME="stopwords_removed" --><div><p class="tip">Ignored the following common words: "<!-- TMPL_VAR NAME="stopwords_removed" -->"<p></div><!-- /TMPL_IF -->
                                              &nbsp;
                                          <!-- /TMPL_IF -->
                                      <p>
 -                                    <!-- TMPL_UNLESS NAME="item-level_itypes" -->
 +                                    <!-- TMPL_UNLESS NAME="item_level_itypes" -->
                                      <!-- TMPL_UNLESS NAME="noItemTypeImages" --><!-- TMPL_IF name="imageurl" -->
                                      <img src="<!-- TMPL_VAR name="imageurl" -->" title="<!-- TMPL_VAR name="description" -->" style="float: left; margin: .1em;" alt="" />
                                      <!-- /TMPL_IF --><!-- /TMPL_UNLESS -->
                                      <!-- TMPL_VAR name="summary" --></p>
                                  <!-- TMPL_ELSE -->
                                      <p>
 -                                    <!-- TMPL_UNLESS NAME="item-level_itypes" -->
 +                                    <!-- TMPL_UNLESS NAME="item_level_itypes" -->
                                      <!-- TMPL_UNLESS NAME="noItemTypeImages" --><!-- TMPL_IF name="imageurl" -->
                                      <img src="<!-- TMPL_VAR name="imageurl" -->" title="<!-- TMPL_VAR name="description" -->" style="float: left; margin: .1em;" alt="" />
                                      <!-- /TMPL_IF --><!-- /TMPL_UNLESS -->
                                    <span class="noholdstext">No holds allowed</span>
                                <!-- TMPL_ELSE -->
                                    <a id="reserve_<!-- TMPL_VAR NAME="biblionumber" -->" href="/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->">Holds</a>
+                                   <!-- TMPL_IF NAME="holdfor" --> | <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&amp;findborrower=<!-- TMPL_VAR NAME="holdfor_cardnumber" -->">Hold for <!-- TMPL_VAR NAME="holdfor_firstname" --> <!-- TMPL_VAR NAME="holdfor_surname" --> (<!-- TMPL_VAR NAME="holdfor_cardnumber" -->)</a><!-- /TMPL_IF -->
                                <!-- /TMPL_IF -->
                            <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_catalogue" -->
                            | <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->">Edit record</a>
                                      <ul>
                                      <!-- TMPL_LOOP NAME="available_items_loop" -->
  
 -                                        <!-- TMPL_IF NAME="noItemTypeImages" --><li><!-- TMPL_ELSE --><!-- TMPL_IF NAME="item-level_itypes" --><!-- TMPL_IF name="imageurl" --><li style="list-style: none; list-style-type: none;"><img src="<!-- TMPL_VAR name="imageurl" -->" title="<!-- TMPL_VAR name="description" -->" alt="<!-- TMPL_VAR name="description" -->" /><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><!-- /TMPL_IF -->
 +                                        <!-- TMPL_IF NAME="noItemTypeImages" --><li><!-- TMPL_ELSE --><!-- TMPL_IF NAME="item_level_itypes" --><!-- TMPL_IF name="imageurl" --><li style="list-style: none; list-style-type: none;"><img src="<!-- TMPL_VAR name="imageurl" -->" title="<!-- TMPL_VAR name="description" -->" alt="<!-- TMPL_VAR name="description" -->" /><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><!-- TMPL_ELSE --><li><!-- /TMPL_IF --><!-- /TMPL_IF -->
                                          <!-- TMPL_IF NAME="branchname" --><!-- TMPL_VAR NAME="branchname" --><!-- /TMPL_IF -->
                                          <!-- TMPL_IF NAME="location" --><!-- TMPL_VAR NAME="location" --><!-- /TMPL_IF -->
                                          <!-- TMPL_IF NAME="itemcallnumber" -->[<a href="/cgi-bin/koha/catalogue/search.pl?q=callnum:<!-- TMPL_VAR NAME="itemcallnumber" ESCAPE="URL" -->"><!-- TMPL_VAR NAME="itemcallnumber" --></a>]<!-- /TMPL_IF -->
                                     <span class="status"><!-- TMPL_IF NAME="onloancount" --><!-- TMPL_VAR NAME="onloancount" --><!-- /TMPL_IF --> on loan:</span>
                                      <ul>
                                      <!-- TMPL_LOOP NAME="onloan_items_loop" -->
 -                                       <!-- TMPL_IF NAME="noItemTypeImages" --><li><!-- TMPL_ELSE --><!-- TMPL_IF NAME="item-level_itypes" -->
 +                                       <!-- TMPL_IF NAME="noItemTypeImages" --><li><!-- TMPL_ELSE --><!-- TMPL_IF NAME="item_level_itypes" -->
                                          <!-- TMPL_IF name="imageurl" -->
                                          <li style="list-style: none; list-style-type: none;"><img src="<!-- TMPL_VAR name="imageurl" -->" title="<!-- TMPL_VAR name="description" -->" alt="<!-- TMPL_VAR name="description" -->" />
                                          <!-- TMPL_ELSE --><li><!-- /TMPL_IF -->
                                      <span class="unavailable"><!-- TMPL_IF NAME="othercount" --><!-- TMPL_VAR NAME="othercount" --><!-- /TMPL_IF --> unavailable:</span>
                                      <ul>
                                      <!-- TMPL_LOOP NAME="other_items_loop" -->
 -                                        <!-- TMPL_IF NAME="noItemTypeImages" --><li><!-- TMPL_ELSE --><!-- TMPL_IF NAME="item-level_itypes" -->
 +                                        <!-- TMPL_IF NAME="noItemTypeImages" --><li><!-- TMPL_ELSE --><!-- TMPL_IF NAME="item_level_itypes" -->
                                          <!-- TMPL_IF name="imageurl" -->
                                          <li style="list-style: none; list-style-type: none;"><img src="<!-- TMPL_VAR name="imageurl" -->" title="<!-- TMPL_VAR name="description" -->" alt="<!-- TMPL_VAR name="description" -->" />
                                          <!-- TMPL_ELSE --><li><!-- /TMPL_IF -->
      <!-- TMPL_IF NAME="inner_sup_results_loop" -->
          <!-- TMPL_VAR NAME="servername" -->
          <!-- TMPL_LOOP NAME="inner_sup_results_loop" -->
 -        <div><a href="/cgi-bin/koha/catalogue/search.pl?<!-- TMPL_VAR NAME="query_cgi" --><!-- TMPL_VAR NAME="limit_cgi" --><!-- TMPL_VAR NAME="sort_by" --><!-- TMPL_VAR NAME="link" -->"><!-- TMPL_VAR NAME="title" ESCAPE="html" --></a></div>
 +        <div><a href="/cgi-bin/koha/catalogue/search.pl?<!-- TMPL_VAR NAME="query_cgi" --><!-- TMPL_VAR NAME="limit_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="sort_by" --><!-- TMPL_VAR NAME="link" -->"><!-- TMPL_VAR NAME="title" ESCAPE="html" --></a></div>
          <!-- /TMPL_LOOP -->
      <!-- /TMPL_IF -->
  <!-- </div> -->
  <form id="hold_form" method="get" action="/cgi-bin/koha/reserve/request.pl">
      <!-- Value will be set here by placeHold() -->
      <input id="hold_form_biblios" type="hidden" name="biblionumbers" value="" />
+     <input type="hidden" name="findborrower" id="holdFor" value="" />
      <input type="hidden" name="multi_hold" value="1"/>
  </form>
  
@@@ -9,6 -9,7 +9,7 @@@
  <script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
  <script type="text/javascript">
  //<![CDATA[
+ if($.cookie("holdfor") != <!-- TMPL_VAR NAME="borrowernumber" -->){ $.cookie("holdfor",null, { path: "/", expires: 0 }); }
  <!-- TMPL_IF NAME="UseTablesortForCirc" -->$.tablesorter.addParser({
      id: 'articles',
      is: function(s) {return false;  },
@@@ -301,11 -302,6 +302,11 @@@ function refocus(calendar) 
  
          <!-- TMPL_IF NAME="UNKNOWN_BARCODE" -->
              <li>The barcode was not found <!-- TMPL_VAR NAME="barcode" --></li>
 +          <!-- TMPL_IF NAME="fast_cataloging" -->
 +              <!-- TMPL_IF NAME="CAN_user_editcatalogue_fast_cataloging" -->
 +                    <li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?frameworkcode=FA">Fast cataloging</a></li>
 +              <!-- /TMPL_IF -->
 +          <!-- /TMPL_IF -->
          <!-- /TMPL_IF -->
  
          <!-- TMPL_IF NAME="NOT_FOR_LOAN" -->
@@@ -652,9 -648,7 +653,9 @@@ No patron matched <span class="ex"><!-
      <!-- TMPL_ELSE -->
      <tr class="highlight">
      <!-- /TMPL_IF -->
 -        <td><!-- TMPL_VAR NAME="dd" --></td>
 +        <!-- TMPL_IF NAME="od" --><td class="od"><!-- TMPL_ELSE --><td><!-- /TMPL_IF -->
 +        <!-- TMPL_VAR NAME="dd" -->
 +        </td>
          <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&amp;type=intra"><strong><!-- TMPL_VAR NAME="title" escape="html" --></strong></a><!-- TMPL_IF NAME="author" -->, by <!-- TMPL_VAR NAME="author" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="itemnotes" -->- <span class="circ-hlt"><!-- TMPL_VAR name="itemnotes" --></span><!-- /TMPL_IF --> <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&amp;itemnumber=<!-- TMPL_VAR NAME="itemnumber" -->#item<!-- TMPL_VAR NAME="itemnumber" -->"><!-- TMPL_VAR NAME="barcode" --></a></td>
          <td><!-- TMPL_UNLESS NAME="noItemTypeImages" --> <!-- TMPL_IF NAME="itemtype_image" --><img src="<!-- TMPL_VAR NAME="itemtype_image" -->" alt="" /><!-- /TMPL_IF --><!-- /TMPL_UNLESS --><!-- TMPL_VAR NAME="itemtype" --></td>
          <td><!-- TMPL_VAR NAME="checkoutdate" --></td>