3 if ( KOHA === undefined ) var KOHA = {};
5 KOHA.browser = function (searchid, biblionumber) {
9 // We are generating a clean numeric datetime representation so we can easily compare them using the default javascript lexigraphic sorter.
10 searchid = 'scs_' + (new Date()).getTime(); // scs for Staff Client Search
12 me.searchid = searchid;
14 var searches_stored = localStorage.getItem('searches');
17 if ( searches_stored ) {
18 searches = JSON.parse(searches_stored);
19 current_search = searches[me.searchid];
22 var searchids = Object.keys(searches);
23 var nb_searches = searchids.length;
24 if ( nb_searches > 20 ) { // No need to keep more than 20 searches
25 searchids = searchids.sort();
26 for ( var i = 0 ; i < nb_searches - 20 ; i++ ) {
27 delete searches[searchids[i]];
32 var browseRecords = function (movement) {
33 var newSearchPos = me.curPos + movement;
34 if (newSearchPos > current_search.results.length - 1) {
35 window.location = '/cgi-bin/koha/catalogue/search.pl?' + current_search.query + '&limit=' + current_search.limit + '&sort_by=' + current_search.sort + '&gotoPage=detail.pl&gotoNumber=first&searchid=' + me.searchid + '&offset=' + newSearchPos;
36 } else if (newSearchPos < 0) {
37 window.location = '/cgi-bin/koha/catalogue/search.pl?' + current_search.query + '&limit=' + current_search.limit + '&sort_by=' + current_search.sort + '&gotoPage=detail.pl&gotoNumber=last&searchid=' + me.searchid + '&offset=' + (me.offset - current_search.pagelen);
39 window.location = window.location.href.replace('biblionumber=' + biblionumber, 'biblionumber=' + current_search.results[newSearchPos]);
43 me.create = function (offset, query, limit, sort, newresults, total) {
45 if (offset === parseInt(current_search.offset) - newresults.length) {
46 current_search.results = newresults.concat(current_search.results);
47 } else if (searchOffset = parseInt(current_search.offset) + newresults.length) {
48 current_search.results = current_search.results.concat(newresults);
50 delete current_search;
53 if (!current_search) {
54 current_search = { offset: offset,
58 pagelen: newresults.length,
64 searches[me.searchid] = current_search;
65 localStorage.setItem('searches', JSON.stringify(searches));
66 $(document).ready(function () {
67 $('#searchresults table tr a[href*="/detail.pl"]').each(function(){
68 $(this).attr('href', $(this).attr('href') + '&searchid=' + me.searchid );
73 me.show = function () {
75 me.curPos = $.inArray(biblionumber, current_search.results);
76 if ( parseInt(current_search.offset ) + me.curPos <= current_search.pagelen ) { // First page
79 me.offset = parseInt(current_search.offset) - 1;
82 $(document).ready(function () {
84 var searchURL = '/cgi-bin/koha/catalogue/search.pl?' + current_search.query + '&limit=' + current_search.limit + '&sort_by=' + current_search.sort + '&searchid=' + me.searchid + '&offset=' + me.offset;
87 if (me.curPos === 0 && parseInt(current_search.offset) === 1) {
88 prevbutton = '<span id="browse-previous" class="browse-button" title="' + __("Previous") + '"><i class="fa fa-arrow-left"></i></span>';
90 prevbutton = '<a href="#" id="browse-previous" class="browse-button" title="' + __("Previous") + '"><i class="fa fa-arrow-left"></i></a>';
92 if (parseInt(current_search.offset) + me.curPos == current_search.total) {
93 nextbutton = '<span id="browse-next" class="browse-button" title="' + __("Next") + '"><i class="fa fa-arrow-right"></i></span>';
95 nextbutton = '<a href="#" id="browse-next" class="browse-button" title="' + __("Next") + '"><i class="fa fa-arrow-right"></i></a>';
97 $('#menu').before('<div class="browse-controls"><div class="browse-controls-inner"><div class="browse-label"><a href="' + searchURL + '" id="browse-return-to-results" class="searchwithcontext"><i class="fa fa-list"></i> ' + __("Results") + '</a></div><div class="browse-prev-next">' + prevbutton + nextbutton + '</div></div></div>');
98 $('a#browse-previous').click(function (ev) {
102 $('a#browse-next').click(function (ev) {
106 $('a[href*="biblionumber="]').not('a[target="_blank"]').click(function (ev) {
108 window.location = $(this).attr('href') + '&searchid=' + me.searchid;
110 $('form[name="f"]').append('<input type="hidden" name="searchid" value="' + me.searchid + '"></input>');
116 me.show_back_link = function () {
117 if (current_search) {
118 $(document).ready(function () {
119 var searchURL = '/cgi-bin/koha/catalogue/search.pl?' + current_search.query + '&limit=' + current_search.limit + '&sort_by=' + current_search.sort + '&searchid=' + me.searchid;
120 $('#previous_search_link').replaceWith('<div><div class="browse-label"><a href="' + searchURL + '"><i class="fa fa-list"></i> ' + __("Go back to the results") + '</a></div></div>');