Bug 14699: Fix intranet search history issues due to pagination
DataTables removes hidden rows from the DOM. Because of that, "Select all", "Clear all" and the form submission don't work correctly (basically they act only on the currently displayed page). This patch fixes just that. Test plan: 1/ Go to your search history page 2/ Make you sure you have at least 21 entries in your search history. If not, do some searches and come back here. 3/ Click "Select all" and change page. The checkboxes on the new page should be checked. 4/ Check some checkboxes on this new page and click "Clear all". Go back to the previous page, checkboxes shouldn't be checked. 5/ Check some checkboxes on at least 2 different pages and click "Delete". All selected search history entries should be deleted. Followed test plan. Works as expected. Signed-off-by: Marc Véron <veron@veron.ch> Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
6f4cbc8dad
commit
ce87a89374
1 changed files with 42 additions and 14 deletions
|
@ -23,33 +23,60 @@ $(document).ready(function() {
|
|||
|
||||
$('#tabs').tabs();
|
||||
|
||||
// DataTables removes hidden rows from the DOM, so we can't expect a
|
||||
// "regular" submit to work and we need to build another form containing
|
||||
// all form elements, and then submit this form.
|
||||
$('form').submit(function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var form = $(this);
|
||||
var table = form.find('table').dataTable();
|
||||
|
||||
var new_form = $('<form>')
|
||||
.attr('action', form.attr('action'))
|
||||
.attr('method', form.attr('method'));
|
||||
form.find('input[type="hidden"]')
|
||||
.add(table.$('input:checkbox:checked'))
|
||||
.each(function() {
|
||||
var input = $('<input type="hidden">')
|
||||
.attr('name', $(this).attr('name'))
|
||||
.attr('value', $(this).attr('value'));
|
||||
new_form.append(input);
|
||||
});
|
||||
$(document.body).append(new_form);
|
||||
new_form.submit();
|
||||
});
|
||||
|
||||
$(".CheckNone").click(function(e){
|
||||
e.preventDefault();
|
||||
var form = $(this).parents("form").get(0);
|
||||
$(form).unCheckCheckboxes();
|
||||
var form = $(this).parents("form").first();
|
||||
var table = form.find('table').dataTable();
|
||||
table.$('input[type="checkbox"]').attr('checked', false);
|
||||
enableCheckboxActions(form);
|
||||
});
|
||||
$(".CheckAll").click(function(e){
|
||||
e.preventDefault();
|
||||
var form = $(this).parents("form").get(0);
|
||||
$(form).checkCheckboxes();
|
||||
var form = $(this).parents("form").first();
|
||||
var table = form.find('table').dataTable();
|
||||
table.$('input[type="checkbox"]').attr('checked', true);
|
||||
enableCheckboxActions(form);
|
||||
});
|
||||
|
||||
$("input:checkbox").click(function(){
|
||||
var form = $(this).parents("form").get(0);
|
||||
var form = $(this).parents("form").first();
|
||||
enableCheckboxActions(form);
|
||||
});
|
||||
|
||||
$(".action_delete").click(function(e){
|
||||
e.preventDefault();
|
||||
var form = $(this).parents("form").get(0);
|
||||
var ids = $(form).find("input:checkbox:checked");
|
||||
var form = $(this).parents("form").first();
|
||||
var table = form.find('table').dataTable();
|
||||
var ids = table.$("input:checkbox:checked");
|
||||
if ( $(ids).length < 1 ) {
|
||||
return false;
|
||||
}
|
||||
if ( confirm(MSG_CONFIRM_DELETE_HISTORY) ) {
|
||||
$(form).submit();
|
||||
form.submit();
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
@ -58,13 +85,14 @@ $(document).ready(function() {
|
|||
|
||||
function enableCheckboxActions(form){
|
||||
// Enable/disable controls if checkboxes are checked
|
||||
var checkedBoxes = $(form).find("input:checkbox:checked");
|
||||
if ($(checkedBoxes).size()) {
|
||||
$(form).find(".selections").html(_("With selected searches: "));
|
||||
$(form).find(".selections-toolbar .links a").removeClass("disabled");
|
||||
var table = form.find('table').dataTable();
|
||||
var checkedBoxes = table.$("input:checkbox:checked");
|
||||
if (checkedBoxes.size()) {
|
||||
form.find(".selections").html(_("With selected searches: "));
|
||||
form.find(".selections-toolbar .links a").removeClass("disabled");
|
||||
} else {
|
||||
$(form).find(".selections").html(_("Select searches to: "));
|
||||
$(form).find(".selections-toolbar .links a").addClass("disabled");
|
||||
form.find(".selections").html(_("Select searches to: "));
|
||||
form.find(".selections-toolbar .links a").addClass("disabled");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue