Jonathan Druart
c9a7b6742b
This patch adds the same feature as bug 10858 for the OPAC interface: after a search, librarians will be able to browse selected results. The results can be selected from several pages. By extension it is possible to add results from several pages to a list or the cart. When at least one result is selected, a new "Browse selected records" button becomes usable and change the behaviour of the existing browser. The whole feature can be turned off with the pref BrowseResultSelection. Test plan: - Launch a search (on the staff interface) - Check some biblios - Go on another page - Check some biblios - Come back to a page you already check results and confirm that they are still checked - Click on the "Browse selected records" button - Check that you are able to browse results you had checked. You can also: - add them to the cart - add them to a list QA note: the browsers at the OPAC and the one at the staff interface are completely different That's why the code is not mimicking what has been done on bug 10858. The behaviour must stay the same anyway. Signed-off-by: Séverine QUEUNE <severine.queune@bulac.fr> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
// Extends jQuery API
|
|
jQuery.extend({uniqueArray:function(array){
|
|
return $.grep(array, function(el, index) {
|
|
return index === $.inArray(el, array);
|
|
});
|
|
}});
|
|
|
|
function removeByValue(arr, val) {
|
|
for(var i=0; i<arr.length; i++) {
|
|
if(arr[i] == val) {
|
|
arr.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function paramOfUrl( url, param ) {
|
|
param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
|
var regexS = "[\\?&]"+param+"=([^&#]*)";
|
|
var regex = new RegExp( regexS );
|
|
var results = regex.exec( url );
|
|
if( results == null ) {
|
|
return "";
|
|
} else {
|
|
return results[1];
|
|
}
|
|
}
|
|
|
|
function addBibToContext( bibnum ) {
|
|
bibnum = parseInt(bibnum, 10);
|
|
var bibnums = getContextBiblioNumbers();
|
|
bibnums.push(bibnum);
|
|
setContextBiblioNumbers( bibnums );
|
|
setContextBiblioNumbers( $.uniqueArray( bibnums ) );
|
|
}
|
|
|
|
function delBibToContext( bibnum ) {
|
|
var bibnums = getContextBiblioNumbers();
|
|
removeByValue( bibnums, bibnum );
|
|
setContextBiblioNumbers( $.uniqueArray( bibnums ) );
|
|
}
|
|
|
|
function setContextBiblioNumbers( bibnums ) {
|
|
$.cookie('bibs_selected', JSON.stringify( bibnums ));
|
|
}
|
|
|
|
function getContextBiblioNumbers() {
|
|
var r = $.cookie('bibs_selected');
|
|
if ( r ) {
|
|
return JSON.parse(r);
|
|
}
|
|
r = new Array();
|
|
return r;
|
|
}
|
|
|
|
function resetSearchContext() {
|
|
setContextBiblioNumbers( new Array() );
|
|
}
|
|
|
|
$(document).ready(function(){
|
|
// forms with action leading to search
|
|
$("form[action*='search.pl']").submit(function(){
|
|
resetSearchContext();
|
|
});
|
|
// any link to launch a search except navigation links
|
|
$("[href*='search.pl?']").not(".nav").not('.searchwithcontext').click(function(){
|
|
resetSearchContext();
|
|
});
|
|
// any link to a detail page from the results page.
|
|
$("#bookbag_form a[href*='detail.pl?']").click(function(){
|
|
resetSearchContext();
|
|
});
|
|
});
|