Bug 19103: Fix Stored XSS in patron-attr-types.pl
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / catalogue / results.tt
index 5543288..fc212d9 100644 (file)
@@ -1,8 +1,20 @@
 [% USE Koha %]
+[% USE Biblio %]
+[% USE KohaDates %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Catalog &rsaquo; [% IF ( searchdesc ) %]Results of search [% IF ( query_desc ) %]for '[% query_desc | html %]'[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s):&nbsp;'[% limit_desc | html %]'[% END %][% ELSE %]You did not specify any search criteria[% END %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
 [% INCLUDE 'browser-strings.inc' %]
+[% IF BiblioDefaultViewmarc %]
+    [% SET DetailPage="MARCdetail.pl" %]
+[% ELSIF BiblioDefaultViewlabeled_marc %]
+    [% SET DetailPage="labeledMARCdetail.pl" %]
+[% ELSIF BiblioDefaultViewisbd %]
+    [% SET DetailPage="ISBDdetail.pl" %]
+[% ELSE %]
+    [% SET DetailPage="detail.pl" %]
+[% END %]
+
 <!--[if lt IE 9]>
 <script type="text/javascript" src="[% interface %]/lib/shims/json2.min.js"></script>
 <![endif]-->
@@ -16,7 +28,7 @@ var q_array = new Array();  // will hold search terms, if present
 // http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
 function verify_images() {
     $("img").each(function(i){
-        if ((this.src.indexOf('images.amazon.com') >= 0) || (this.src.indexOf('g-images.amazon.com') >=0)) {
+        if ((this.src.indexOf('images-amazon.com') >= 0) || (this.src.indexOf('images.amazon.com') >=0)) {
             w = this.width;
             h = this.height;
             if ((w == 1) || (h == 1)) {
@@ -91,17 +103,38 @@ $('#sort_by').change(function() {
     });
         var param1 = "<label for=\"addto\">"+_("Add to:")+"<\/label><select name=\"addto\" id=\"addto\"><option value=\"\"><\/option>";
         [% IF ( intranetbookbag ) %]     param1 += "<option value=\"addtocart\">"+_("Cart")+"<\/option>"; [% END %]
-        [% IF ( virtualshelves ) %][% IF ( addbarshelves ) %]
-        param1 += "<optgroup label=\""+_("Your lists:")+"\">";[% FOREACH addbarshelvesloo IN addbarshelvesloop %]
-        param1 += "<option id=\"s[% addbarshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addbarshelvesloo.shelfname |html %]<\/option>";[% END %]
-        param1 += "<\/optgroup>";[% END %]
-        [% IF ( addpubshelves ) %]param1 += "<optgroup label=\""+_("Public lists:")+"\">"[% FOREACH addpubshelvesloo IN addpubshelvesloop %]+"<option id=\"s[% addpubshelvesloo.shelfnumber %]\" value=\"addtolist\">[% addpubshelvesloo.shelfname |html %]<\/option>"[% END %]
-        param1 += "<\/optgroup>";[% END %]
-        [% IF ( ( addbarshelvesloop && addbarshelvesloop.size>9 ) || (addpubshelvesloop && addpubshelvesloop.size>9 )) %]
-            param1 += "<option value=\"morelists\">[ "+_("More lists")+" ]<\/option>";
-        [% END %]
-        param1 +="<option value=\"newlist\">"+_("[ New list ]")+"<\/option>"
+
+        [% IF Koha.Preference('virtualshelves') %]
+            [% IF add_to_some_private_shelves.count %]
+                param1 += "<optgroup label=\""+_("Your lists:")+"\">";
+                [% SET number_of_private_shelves = 0 %]
+                [% FOREACH s IN add_to_some_private_shelves %]
+                    [% IF shelfnumber != s.shelfnumber %]
+                        param1 += "<option id=\"s[% s.shelfnumber %]\" value=\"addtolist\">[% s.shelfname |html %]<\/option>";
+                        [% SET number_of_private_shelves = number_of_private_shelves + 1 %]
+                        [% IF number_of_private_shelves == 10 %][% LAST %][% END %]
+                    [% END %]
+                [% END %]
+                param1 += "<\/optgroup>";
+            [% END %]
+            [% IF add_to_some_public_shelves.count %]
+                param1 += "<optgroup label=\""+_("Public lists:")+"\">";
+                [% SET number_of_public_shelves = 0 %]
+                [% FOREACH s IN add_to_some_public_shelves %]
+                    [% IF shelfnumber != s.shelfnumber %]
+                        param1 += "<option id=\"s[% s.shelfnumber %]\" value=\"addtolist\">[% s.shelfname |html %]<\/option>";
+                        [% SET number_of_public_shelves = number_of_public_shelves + 1 %]
+                        [% IF number_of_public_shelves == 10 %][% LAST %][% END %]
+                    [% END %]
+                [% END %]
+                param1 += "<\/optgroup>";
+            [% END %]
+            [% IF ( add_to_some_private_shelves and add_to_some_private_shelves.count > 10 ) or ( add_to_some_public_shelves and add_to_some_public_shelves.count > 10 ) %]
+                param1 += "<option value=\"morelists\">[ "+_("More lists")+" ]<\/option>";
+            [% END %]
+            param1 +="<option value=\"newlist\">"+_("[ New list ]")+"<\/option>"
         [% END %]
+
         param1 += "<\/select> <input id=\"cartsubmit\" type=\"submit\" class=\"submit\" value=\""+_("Save")+"\" />";
  $('#sortsubmit').hide();
         $("span.clearall").html("<a id=\"CheckNone\" href=\"#\">"+_("Clear all")+"<\/a>");
@@ -121,7 +154,7 @@ $('#sort_by').change(function() {
     $(".selection").show();
     [% IF ( query_desc ) %]
     toHighlight = $("p,span.results_summary,a.title");
-        var query_desc = "[% query_desc |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]";
+        var query_desc = "[% query_desc |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') | html %]";
         q_array = query_desc.split(" ");
         // ensure that we don't have "" at the end of the array, which can
         // break the highlighter
@@ -140,7 +173,7 @@ $('#sort_by').change(function() {
             [%- END -%]
         ];
         var browser = KOHA.browser('[% searchid %]', parseInt('[% biblionumber %]', 10));
-        browser.create([% SEARCH_RESULTS.first.result_number %], '[% query_cgi | uri %]', '[% limit_cgi | uri %]','[% sort_cgi | uri %]',
+        browser.create([% SEARCH_RESULTS.first.result_number %], '[% query_cgi %]', '[% limit_cgi | uri %]','[% sort_cgi | uri %]',
                newresults, '[% total %]');
     [% END %]
     [% IF (gotoPage && gotoNumber) %]
@@ -151,7 +184,32 @@ $('#sort_by').change(function() {
         [% END %]
     [% END %]
 
-[% IF LocalCoverImages %]KOHA.LocalCover.GetCoverFromBibnumber(false);[% END %]
+    [% IF LocalCoverImages %]
+        KOHA.LocalCover.LoadResultsCovers();
+    [% END %]
+
+    $("#select_all").on("click",function(e){
+        e.preventDefault();
+        selectAll();
+    });
+    $("#clear_all").on("click",function(e){
+        e.preventDefault();
+        clearAll();
+    });
+
+    $("#searchresults").on("click",".addtocart",function(e){
+        e.preventDefault();
+        var selection_id = this.id;
+        var biblionumber = selection_id.replace("cart","");
+        addRecord(biblionumber);
+    });
+
+    $("#searchresults").on("click",".cartRemove",function(e){
+        e.preventDefault();
+        var selection_id = this.id;
+        var biblionumber = selection_id.replace("cartR","");
+        delSingleRecord(biblionumber);
+    });
 
 });
 
@@ -164,7 +222,7 @@ function highlightOn() {
     var x;
     for (x in q_array) {
         q_array[x] = q_array[x].toLowerCase();
-        var myStopwords = "[% Koha.Preference('OpacHighlightedStopWords') %]".toLowerCase().split('|');
+        var myStopwords = "[% Koha.Preference('NotHighlightedWords') %]".toLowerCase().split('|');
         if ( (q_array[x].length > 0) && ($.inArray(q_array[x], myStopwords) == -1) ) {
             toHighlight.highlight(q_array[x]);
         }
@@ -173,10 +231,10 @@ function highlightOn() {
 }[% END %]
 
 function selectAll () {
-    $(".selection").attr("checked", "checked");
+    $(".selection").prop("checked", true);
 }
 function clearAll () {
-    $(".selection").removeAttr("checked");
+    $(".selection").prop("checked", false);
 }
 function placeHold () {
     var checkedItems = $(".selection:checked");
@@ -204,9 +262,9 @@ function placeHold () {
 }
 
 function forgetPatron(){
-    $.cookie("holdfor",null, { path: "/", expires: 0 });
+    $.removeCookie("holdfor", { path: '/' });
     $(".holdforlink").remove();
-    $("#placeholdc").html("<a class=\"btn btn-mini placehold\" href=\"#\"><i class=\"icon-hold\"></i> "+_("Place hold")+"</a>");
+    $("#placeholdc").html("<a class=\"btn btn-default btn-xs placehold\" href=\"#\"><i class=\"fa fa-sticky-note-o\"></i> "+_("Place hold")+"</a>");
 }
 
 function addToList () {
@@ -259,7 +317,7 @@ var holdForPatron = function () {
 <div id="breadcrumbs">
          <a href="/cgi-bin/koha/mainpage.pl">Home</a>
 &rsaquo; <a href="/cgi-bin/koha/catalogue/search.pl">Catalog</a>
-&rsaquo; Search [% IF ( query_desc ) %]for '[% query_desc |html %]'[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s):&nbsp;'[% limit_desc %]'[% END %]
+&rsaquo; Search [% IF ( query_desc ) %]for '[% query_desc |html %]'[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s):&nbsp;'[% limit_desc | html %]'[% END %]
 </div>
 
 <div id="doc3" class="yui-t1">
@@ -304,12 +362,12 @@ var holdForPatron = function () {
                 <!-- RESORT END -->
             </form>
             <h3>
-                [% total %] result(s) found [% IF ( query_desc ) %]for <span style="font-weight: bold;">'[% query_desc |html %]'</span>[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s): <span style="font-weight: bold;">'[% limit_desc %]'</span>[% END %][% IF ( LibraryName ) %] in [% LibraryName %] Catalog[% END %].<br />&nbsp;
+                [% total %] result(s) found [% IF ( query_desc ) %]for <span style="font-weight: bold;">'[% query_desc |html %]'</span>[% END %][% IF limit_desc  %]&nbsp;with limit(s): <span style="font-weight: bold;">'[% limit_desc | html %]'</span>[% END %][% IF ( LibraryName ) %] in [% LibraryName %] Catalog[% END %].<br />&nbsp;
             </h3>
             <div id="selection_ops" class="cartlist" style="display:none">
-                <a href="#" onclick="selectAll(); return false;">Select all</a>
+                <a href="#" id="select_all"><i class="fa fa-check"></i> Select all</a>
                 |
-                <a href="#" onclick="clearAll(); return false;">Clear all</a>
+                <a href="#" id="clear_all"><i class="fa fa-remove"></i> Clear all</a>
                 |
                 <a href="#" class="highlight_toggle" id="highlight_toggle_off">Unhighlight</a>
                 <a href="#" class="highlight_toggle" id="highlight_toggle_on">Highlight</a>
@@ -318,8 +376,8 @@ var holdForPatron = function () {
                 [% IF ( CAN_user_reserveforothers && DisplayMultiPlaceHold ) %]
                 [% IF ( holdfor ) %]
                     <div id="placeholdc" class="btn-group">
-                        <button class="btn btn-mini placehold"><i class="icon-hold"></i> Place hold</button>
-                        <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">
+                        <button class="btn btn-default btn-xs placehold"><i class="fa fa-sticky-note-o"></i> Place hold</button>
+                        <button class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown">
                         <span class="caret"></span>
                         </button>
                         <ul class="dropdown-menu">
@@ -330,23 +388,22 @@ var holdForPatron = function () {
                         </ul>
                     </div>
                 [% ELSE %]
-                    <div id="placeholdc" class="btn-group"><a class="btn btn-mini placehold" href="#"><i class="icon-hold"></i> Place hold</a></div>
+                    <div id="placeholdc" class="btn-group"><a class="btn btn-default btn-xs placehold" href="#"><i class="fa fa-sticky-note-o"></i> Place hold</a></div>
                 [% END %]
                 [% END %]
 
-                [% IF ( CAN_user_editcatalogue_edit_catalogue ) %] <div class="btn-group"><a class="btn btn-mini" id="z3950submit" href="#"><i class="icon-search"></i> Z39.50/SRU search</a></div>[% END %]
+                [% IF ( CAN_user_editcatalogue_edit_catalogue ) %] <div class="btn-group"><a class="btn btn-default btn-xs" id="z3950submit" href="#"><i class="fa fa-search"></i> Z39.50/SRU search</a></div>[% END %]
             </div>
         </div>
-    [% IF ( stopwords_removed ) %]<div><p class="tip">Ignored the following common words: "[% stopwords_removed %]"<p></div>[% END %]
     [% ELSE %]
         <div id="searchheader">
                        <form method="post" name="fz3950" class="fz3950bigrpad">
-                               <span id="z3950searchc"><input type="button" id="z3950search" value="Z39.50 Search" onclick="PopupZ3950(); return false;" /></span>
+                <button class="btn btn-default" type="button" id="z3950submit"><i class="fa fa-search"></i> Z39.50/SRU search</button>
                        </form>
             <h3>No results found</h3>
         [% IF ( searchdesc ) %]
             <p>
-                No results match your search [% IF ( query_desc ) %]for <span style="font-weight: bold;">'[% query_desc |html %]'</span>[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s): <span style="font-weight: bold;">'[% limit_desc %]'</span>[% END %][% IF ( LibraryName ) %] in [% LibraryName %] Catalog[% END %].
+                No results match your search [% IF ( query_desc ) %]for <span style="font-weight: bold;">'[% query_desc |html %]'</span>[% END %][% IF ( limit_desc ) %]&nbsp;with limit(s): <span style="font-weight: bold;">'[% limit_desc | html %]'</span>[% END %][% IF ( LibraryName ) %] in [% LibraryName %] Catalog[% END %].
             </p>
         [% ELSE %]
             <p>You did not specify any search criteria.</p>
@@ -366,7 +423,11 @@ var holdForPatron = function () {
             <table>
                 <tr>
                     <td>
-                        Scan Index for: <input type="text" name="q" id="scan-index" size="35" value="" />
+                        [% IF ( scan_search_term_to_use ) %]
+                            Scan Index for: <input type="text" name="q" id="scan-index" size="35" value="[% scan_search_term_to_use | html %]" />
+                        [% ELSE %]
+                            Scan Index for: <input type="text" name="q" id="scan-index" size="35" value="" />
+                        [% END %]
                     </td>
                 </tr>
                 <tr>
@@ -410,9 +471,9 @@ var holdForPatron = function () {
                     <th>Count</th>
                 </tr>
                 [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
-                    [% IF ( loop.odd ) %]<tr>[% ELSE %]<tr class="highlight">[% END %]
+                    <tr>
                         <td>
-                            <a href="/cgi-bin/koha/catalogue/search.pl?idx=[% SEARCH_RESULT.scan_index_to_use %]&amp;q=[% SEARCH_RESULT.scan_use |url %]&quot;[% SEARCH_RESULT.title %]&quot;">[% SEARCH_RESULT.title |html %]</a>
+                            <a href="/cgi-bin/koha/catalogue/search.pl?idx=[% scan_index_to_use %]&amp;q=[% SEARCH_RESULT.scan_use |url %]&quot;[% SEARCH_RESULT.title %]&quot;">[% SEARCH_RESULT.title |html %]</a>
                         </td>
                         <td>
                             [% SEARCH_RESULT.author %]
@@ -442,16 +503,24 @@ var holdForPatron = function () {
                         <th>Location</th>
                     </tr>
                         <!-- Actual Search Results -->
+                        [% SET MaxSearchResultsItemsPerRecordStatusCheck = Koha.Preference('MaxSearchResultsItemsPerRecordStatusCheck') %]
                         [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
-                         [% IF ( loop.odd ) %]<tr>[% ELSE %]<tr class="highlight">[% END %]
+                            <tr>
                             [% IF ( AmazonCoverImages || LocalCoverImages ) %]
                                 <td>
-                                    [% IF ( LocalCoverImages ) %]
+                                    [% IF ( LocalCoverImages) %]
+                                        <a class="p1" href="/cgi-bin/koha/catalogue/[% DetailPage %]?biblionumber=[% SEARCH_RESULT.biblionumber |url %]">
                                         <span title="[% SEARCH_RESULT.biblionumber |url %]" class="[% SEARCH_RESULT.biblionumber %]" id="local-thumbnail[% loop.count %]"></span>
+                                        </a>
                                     [% END %]
                                     [% IF ( AmazonCoverImages ) %]
-                                        <a class="p1" href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber |url %]">
-                                            <img src="[% IF ( SEARCH_RESULT.normalized_isbn ) %]https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn %].01.TZZZZZZZ.jpg[% ELSE %]https://images-na.ssl-images-amazon.com/images/G/01/x-site/icons/no-img-sm.gif[% END %]" alt="" class="thumbnail" />
+                                        [% IF ( SEARCH_RESULT.normalized_isbn ) %]
+                                            <a class="p1" href="/cgi-bin/koha/catalogue/[% DetailPage %]?biblionumber=[% SEARCH_RESULT.biblionumber |url %]">
+                                            <img src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn %].01.TZZZZZZZ.jpg" alt="" class="thumbnail" />
+                                        [% ELSIF ( !LocalCoverImages ) %]
+                                            <a class="p1 no-amazon-cover" href="/cgi-bin/koha/catalogue/[% DetailPage %]?biblionumber=[% SEARCH_RESULT.biblionumber |url %]">
+                                            <img src="https://images-na.ssl-images-amazon.com/images/G/01/x-site/icons/no-img-sm.gif" alt="" class="thumbnail" />
+                                        [% END %]
                                         </a>
                                     [% END %]
                                 </td>
@@ -509,37 +578,62 @@ var holdForPatron = function () {
                                         [% IF ( SEARCH_RESULT.size ) %] ; [% SEARCH_RESULT.size %][% END %]</span> [% IF ( SEARCH_RESULT.isbn ) %]<span class="results_isbn">ISBN: [% SEARCH_RESULT.isbn | replace('\s\|', ', ')%]</span>[% END %]
                                         <span class="results_itemtype">[% SEARCH_RESULT.description %]</span>
                                         [% IF ( SEARCH_RESULT.timestamp ) %] <i>(modified on [% SEARCH_RESULT.timestamp %])</i>[% END %]
-                                        [% IF ( SEARCH_RESULT.cn_class ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=[% SEARCH_RESULT.cn_class |url %]">[% SEARCH_RESULT.cn_class %]</a>][% END %]
+                                        [% IF ( SEARCH_RESULT.cn_class ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=%22[% SEARCH_RESULT.cn_class |uri %]%22">[% SEARCH_RESULT.cn_class %]</a>][% END %]
                                     </p>
                                     [% IF ( SEARCH_RESULT.searchhighlightblob ) %]<p class="searchhighlightblob">[% SEARCH_RESULT.searchhighlightblob %]</p>[% END %]
 
-                                    [% IF ( SEARCH_RESULT.authorised_value_images ) %]
-                                <p>
-                                  [% FOREACH authorised_value_image IN SEARCH_RESULT.authorised_value_images %]
-                                  <img src="[% authorised_value_image.imageurl %]" alt="[% authorised_value_image.description %]" />
-                                  [% END %]
-                                </p>
-                                [% END %]
-
                                 [% END %]
                                 [% END %]
-                                  <p class="hold">[% IF ( SEARCH_RESULT.norequests ) %]
-                                  <span class="noholdstext">No holds allowed</span>
-                              [% ELSE %]
-                                  <a id="reserve_[% SEARCH_RESULT.biblionumber %]" href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Holds</a>
-                                  [% IF ( holdfor ) %] <span class="holdforlink">| <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]&amp;findborrower=[% holdfor_cardnumber %]">Place hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])</a></span>[% END %]
-                              [% END %]
+                                  <p class="hold">
+
+                            [% IF ( SEARCH_RESULT.norequests ) %]
+                                <span class="noholdstext">No holds allowed</span>
+                            [% ELSE %]
+                                <a id="reserve_[% SEARCH_RESULT.biblionumber %]" href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Holds ([% Biblio.HoldsCount( SEARCH_RESULT.biblionumber ) %])</a>
+                                [% IF ( holdfor ) %] <span class="holdforlink">| <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]&amp;findborrower=[% holdfor_cardnumber %]">Place hold for [% holdfor_firstname %] [% holdfor_surname %] ([% holdfor_cardnumber %])</a></span>[% END %]
+                            [% END %]
+
+                                [% IF Koha.Preference('intranetbookbag') == 1 %]
+                                    [% IF ( SEARCH_RESULT.incart ) %]
+                                        | <a class="addtocart" id="cart[% SEARCH_RESULT.biblionumber %]" href="#">In your cart</a> <a class="cartRemove" id="cartR[% SEARCH_RESULT.biblionumber %]" href="#">(remove)</a>
+                                    [% ELSE %]
+                                        | <a class="addtocart" id="cart[% SEARCH_RESULT.biblionumber %]" href="#">Add to cart</a> <a style="display:none;" class="cartRemove" id="cartR[% SEARCH_RESULT.biblionumber %]" href="#">(remove)</a>
+                                    [% END %]
+                                [% END # / IF intranetbookbag %]
+
+                          [% IF Koha.Preference('ArticleRequests') %]
+                              | <a id="requst_article_[% SEARCH_RESULT.biblionumber %]" href="/cgi-bin/koha/circ/request-article.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Request article</a>
+                          [% END %]
+
                           [% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
                           | <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Edit record</a>
                           [% END %]
                           [% IF ( CAN_user_editcatalogue_edit_items ) %]
                           | <a href="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]">Edit items</a>
-                          [% END %]</p>
+                          [% END %]
+
+                          [% IF ( OPACBaseURL ) %]
+                              <span class="view-in-opac">
+                                | <a href="[% Koha.Preference('OPACBaseURL') %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber %]" target="_blank">OPAC view</a>
+                              </span>
+                          [% END %]
+
+                                </p>
                                 </td>
 
                                 <td><div class="availability">
-                                    [% IF ( SEARCH_RESULT.items_count ) %]<strong>[% SEARCH_RESULT.items_count %]
-                                    [% IF ( SEARCH_RESULT.itemsplural ) %]items[% ELSE %]item[% END %][% IF ( SEARCH_RESULT.availablecount ) %], [% SEARCH_RESULT.availablecount %] available:[% ELSE %], None available[% END %]</strong>
+                                    [% IF ( SEARCH_RESULT.items_count ) %]
+                                        <strong>
+                                            [% IF MaxSearchResultsItemsPerRecordStatusCheck && SEARCH_RESULT.items_count > MaxSearchResultsItemsPerRecordStatusCheck %]
+                                                <span class="blocker inaccurate-item-statuses" title="Item statuses may be inaccurate. Please view the record details for accurate item statuses">
+                                            [% END %]
+
+                                            [% SEARCH_RESULT.items_count %] [% IF ( SEARCH_RESULT.itemsplural ) %]items[% ELSE %]item[% END %][% IF ( SEARCH_RESULT.availablecount ) %], [% SEARCH_RESULT.availablecount %] available:[% ELSE %], None available[% END %]
+
+                                            [% IF MaxSearchResultsItemsPerRecordStatusCheck && SEARCH_RESULT.items_count > MaxSearchResultsItemsPerRecordStatusCheck %]
+                                                </span>
+                                            [% END %]
+                                        </strong>
 
                                     [% IF ( SEARCH_RESULT.availablecount ) %]
                                     <ul>
@@ -553,7 +647,7 @@ var holdForPatron = function () {
                                         [% END %]
                                         [% IF ( available_items_loo.branchname ) %][% available_items_loo.branchname %][% END %]
                                         [% IF ( available_items_loo.location ) %][% available_items_loo.location %][% END %]
-                                        [% IF ( available_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=[% available_items_loo.itemcallnumber |url %]">[% available_items_loo.itemcallnumber %]</a>][% END %]
+                                        [% IF ( available_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=%22[% available_items_loo.itemcallnumber |uri %]%22">[% available_items_loo.itemcallnumber %]</a>][% END %]
                                         ([% available_items_loo.count %])
                                         [% IF item_level_itypes && available_items_loo.description %]
                                         <br/>[% available_items_loo.description %]
@@ -575,8 +669,8 @@ var holdForPatron = function () {
                                         [% END %]
                                         [% IF ( onloan_items_loo.branchname ) %][% onloan_items_loo.branchname %][% END %]
                                         [% IF ( onloan_items_loo.location ) %][% onloan_items_loo.location %][% END %]
-                                        [% IF ( onloan_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=[% onloan_items_loo.itemcallnumber |url %]">[% onloan_items_loo.itemcallnumber %]</a>][% END %]
-                                        ([% onloan_items_loo.count %][% IF ( onloan_items_loo.longoverdue ) %], [% onloan_items_loo.longoverdue %] long overdue[% END %]) date due: [% onloan_items_loo.due_date %]
+                                        [% IF ( onloan_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=%22[% onloan_items_loo.itemcallnumber |uri %]%22">[% onloan_items_loo.itemcallnumber %]</a>][% END %]
+                                        ([% onloan_items_loo.count %][% IF ( onloan_items_loo.longoverdue ) %], [% onloan_items_loo.longoverdue %] long overdue[% END %]) date due: [% onloan_items_loo.due_date | $KohaDates %]
                                         [% IF item_level_itypes && onloan_items_loo.description %]
                                         <br/>[% onloan_items_loo.description %]
                                         [% END %]
@@ -597,7 +691,7 @@ var holdForPatron = function () {
                                         [% END %]
                                         [% IF ( other_items_loo.branchname ) %][% other_items_loo.branchname %][% END %]
                                         [% IF ( other_items_loo.location ) %][% other_items_loo.location %][% END %]
-                                        [% IF ( other_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=[% other_items_loo.itemcallnumber |url %]">[% other_items_loo.itemcallnumber %]</a>][% END %]
+                                        [% IF ( other_items_loo.itemcallnumber ) %][<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=%22[% other_items_loo.itemcallnumber |uri %]%22">[% other_items_loo.itemcallnumber %]</a>][% END %]
                                         [% IF ( other_items_loo.withdrawn ) %](Withdrawn)[% END %]
                                         [% IF ( other_items_loo.itemlost ) %](Lost)[% END %]
                                         [% IF ( other_items_loo.damaged ) %](Damaged)[% END %]