@@ -, +, @@
instead of cookies
---
koha-tmpl/intranet-tmpl/js/browser.js | 80 +++++++++++++++++----------------
1 file changed, 41 insertions(+), 39 deletions(-)
--- a/koha-tmpl/intranet-tmpl/js/browser.js
+++ a/koha-tmpl/intranet-tmpl/js/browser.js
@@ -7,58 +7,60 @@ KOHA.browser = function (searchid, biblionumber) {
// We are generating a clean numeric datetime representation so we can easily compare them using the default javascript lexigraphic sorter.
searchid = 'scs_' + (new Date()).getTime(); // scs for Staff Client Search
}
- this.searchid = searchid;
+ me.searchid = searchid;
- var cookie = $.cookie(me.searchid)
- if (cookie) {
- me.searchCookie = JSON.parse(cookie);
+ var searches_stored = sessionStorage.getItem('searches');
+ var current_search;
+ var searches = {};
+ if ( searches_stored ) {
+ searches = JSON.parse(searches_stored);
+ current_search = searches[me.searchid];
+
+ // Remove old entries
+ var searchids = Object.keys(searches);
+ var nb_searches = searchids.length;
+ if ( nb_searches > 20 ) { // No need to keep more than 20 searches
+ searchids = searchids.sort();
+ for ( var i = 0 ; i < nb_searches - 20 ; i++ ) {
+ delete searches[searchids[i]];
+ }
+ }
}
var browseRecords = function (movement) {
var newSearchPos = me.curPos + movement;
- if (newSearchPos > me.searchCookie.results.length - 1) {
- window.location = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(me.searchCookie.query) + '&limit=' + decodeURIComponent(me.searchCookie.limit) + '&sort=' + me.searchCookie.sort + '&gotoPage=detail.pl&gotoNumber=first&searchid=' + me.searchid + '&offset=' + newSearchPos;
+ if (newSearchPos > current_search.results.length - 1) {
+ window.location = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(current_search.query) + '&limit=' + decodeURIComponent(current_search.limit) + '&sort=' + current_search.sort + '&gotoPage=detail.pl&gotoNumber=first&searchid=' + me.searchid + '&offset=' + newSearchPos;
} else if (newSearchPos < 0) {
- window.location = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(me.searchCookie.query) + '&limit=' + decodeURIComponent(me.searchCookie.limit) + '&sort=' + me.searchCookie.sort + '&gotoPage=detail.pl&gotoNumber=last&searchid=' + me.searchid + '&offset=' + (me.offset - me.searchCookie.pagelen);
+ window.location = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(current_search.query) + '&limit=' + decodeURIComponent(current_search.limit) + '&sort=' + current_search.sort + '&gotoPage=detail.pl&gotoNumber=last&searchid=' + me.searchid + '&offset=' + (me.offset - current_search.pagelen);
} else {
- window.location = window.location.href.replace('biblionumber=' + biblionumber, 'biblionumber=' + me.searchCookie.results[newSearchPos]);
+ window.location = window.location.href.replace('biblionumber=' + biblionumber, 'biblionumber=' + current_search.results[newSearchPos]);
}
}
- this.create = function (offset, query, limit, sort, newresults, total) {
- if (me.searchCookie) {
- if (offset === me.searchCookie.offset - newresults.length) {
- me.searchCookie.results = newresults.concat(me.searchCookie.results);
- } else if (searchOffset = me.searchCookie.offset + newresults.length) {
- me.searchCookie.results = me.searchCookie.results.concat(newresults);
+ me.create = function (offset, query, limit, sort, newresults, total) {
+ if (current_search) {
+ if (offset === current_search.offset - newresults.length) {
+ current_search.results = newresults.concat(current_search.results);
+ } else if (searchOffset = current_search.offset + newresults.length) {
+ current_search.results = current_search.results.concat(newresults);
} else {
- delete me.searchCookie;
+ delete current_search;
}
}
- if (!me.searchCookie) {
- me.searchCookie = { offset: offset,
+ if (!current_search) {
+ current_search = { offset: offset,
query: query,
limit: limit,
sort: sort,
pagelen: newresults.length,
results: newresults,
- total: total
+ total: total,
+ searchid: searchid
};
-
- //Bug_11369 Cleaning up excess searchCookies to prevent cookie overflow in the browser memory.
- var allVisibleCookieKeys = Object.keys( $.cookie() );
- var scsCookieKeys = $.grep( allVisibleCookieKeys,
- function(elementOfArray, indexInArray) {
- return ( elementOfArray.search(/^scs_\d/) != -1 ); //We are looking for specifically staff client searchCookies.
- }
- );
- if (scsCookieKeys.length >= 10) {
- scsCookieKeys.sort(); //Make sure they are in order, oldest first!
- $.removeCookie( scsCookieKeys[0], { path: '/' } );
- }
- //EO Bug_11369
}
- $.cookie(me.searchid, JSON.stringify(me.searchCookie), { path: '/' });
+ searches[me.searchid] = current_search;
+ sessionStorage.setItem('searches', JSON.stringify(searches));
$(document).ready(function () {
//FIXME It's not a good idea to modify the click events
$('#searchresults table tr a[href*="detail.pl"]').on('click', function (ev) {
@@ -80,22 +82,22 @@ KOHA.browser = function (searchid, biblionumber) {
});
};
- this.show = function () {
- if (me.searchCookie) {
- me.curPos = $.inArray(biblionumber, me.searchCookie.results);
- me.offset = Math.floor((me.searchCookie.offset + me.curPos - 1) / me.searchCookie.pagelen) * me.searchCookie.pagelen;
+ me.show = function () {
+ if (current_search) {
+ me.curPos = $.inArray(biblionumber, current_search.results);
+ me.offset = Math.floor((current_search.offset + me.curPos - 1) / current_search.pagelen) * current_search.pagelen;
$(document).ready(function () {
if (me.curPos > -1) {
- var searchURL = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(me.searchCookie.query) + '&limit=' + decodeURIComponent(me.searchCookie.limit) + '&sort=' + me.searchCookie.sort + '&searchid=' + me.searchid + '&offset=' + me.offset;
+ var searchURL = '/cgi-bin/koha/catalogue/search.pl?' + decodeURIComponent(current_search.query) + '&limit=' + decodeURIComponent(current_search.limit) + '&sort=' + current_search.sort + '&searchid=' + me.searchid + '&offset=' + me.offset;
var prevbutton;
var nextbutton;
- if (me.curPos === 0 && me.searchCookie.offset === 1) {
+ if (me.curPos === 0 && current_search.offset === 1) {
prevbutton = '« ' + BROWSER_PREVIOUS + '';
} else {
prevbutton = '« ' + BROWSER_PREVIOUS + '';
}
- if (me.searchCookie.offset + me.curPos == me.searchCookie.total) {
+ if (current_search.offset + me.curPos == current_search.total) {
nextbutton = '' + BROWSER_NEXT + ' »';
} else {
nextbutton = '' + BROWSER_NEXT + ' »';
--