Pagination for history and latest changes. (#1396)
* Pagination for history and latest changes * New footer for historical pages * Fix pagination on history view. * Do not directly use git adapter * History view: allow selecting from different pages * Use log_pagination_options to determine latest changes parameters * Fix JS pageFullPath
This commit is contained in:
@@ -97,91 +97,6 @@ $(document).ready(function() {
|
||||
e.preventDefault();
|
||||
} );
|
||||
|
||||
|
||||
var nodeSelector = {
|
||||
node1: null,
|
||||
node2: null,
|
||||
|
||||
selectNodeRange: function( n1, n2 ) {
|
||||
if ( nodeSelector.node1 && nodeSelector.node2 ) {
|
||||
$('#wiki-history td.selected').removeClass('selected');
|
||||
nodeSelector.node1.addClass('selected');
|
||||
nodeSelector.node2.addClass('selected');
|
||||
|
||||
// swap the nodes around if they went in reverse
|
||||
if ( nodeSelector.nodeComesAfter( nodeSelector.node1,
|
||||
nodeSelector.node2 ) ) {
|
||||
var n = nodeSelector.node1;
|
||||
nodeSelector.node1 = nodeSelector.node2;
|
||||
nodeSelector.node2 = n;
|
||||
}
|
||||
|
||||
var s = true;
|
||||
var $nextNode = nodeSelector.node1.next();
|
||||
while ( $nextNode ) {
|
||||
$nextNode.addClass('selected');
|
||||
if ( $nextNode[0] == nodeSelector.node2[0] ) {
|
||||
break;
|
||||
}
|
||||
$nextNode = $nextNode.next();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
nodeComesAfter: function ( n1, n2 ) {
|
||||
var s = false;
|
||||
$(n1).prevAll().each(function() {
|
||||
if ( $(this)[0] == $(n2)[0] ) {
|
||||
s = true;
|
||||
}
|
||||
});
|
||||
return s;
|
||||
},
|
||||
|
||||
checkNode: function( nodeCheckbox ) {
|
||||
var $nodeCheckbox = nodeCheckbox;
|
||||
var $node = $(nodeCheckbox).parent().parent();
|
||||
// if we're unchecking
|
||||
if ( !$nodeCheckbox.is(':checked') ) {
|
||||
|
||||
// remove the range, since we're breaking it
|
||||
$('#wiki-history tr.selected').each(function() {
|
||||
if ( $(this).find('td.checkbox input').is(':checked') ) {
|
||||
return;
|
||||
}
|
||||
$(this).removeClass('selected');
|
||||
});
|
||||
|
||||
// no longer track this
|
||||
if ( $node[0] == nodeSelector.node1[0] ) {
|
||||
nodeSelector.node1 = null;
|
||||
if ( nodeSelector.node2 ) {
|
||||
nodeSelector.node1 = nodeSelector.node2;
|
||||
nodeSelector.node2 = null;
|
||||
}
|
||||
} else if ( $node[0] == nodeSelector.node2[0] ) {
|
||||
nodeSelector.node2 = null;
|
||||
}
|
||||
|
||||
} else {
|
||||
if ( !nodeSelector.node1 ) {
|
||||
nodeSelector.node1 = $node;
|
||||
nodeSelector.node1.addClass('selected');
|
||||
} else if ( !nodeSelector.node2 ) {
|
||||
// okay, we don't have a node 2 but have a node1
|
||||
nodeSelector.node2 = $node;
|
||||
nodeSelector.node2.addClass('selected');
|
||||
nodeSelector.selectNodeRange( nodeSelector.node1,
|
||||
nodeSelector.node2 );
|
||||
} else {
|
||||
// we have two selected already
|
||||
$nodeCheckbox[0].checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// ua detection
|
||||
if ($.browser.mozilla) {
|
||||
$('body').addClass('ff');
|
||||
@@ -351,7 +266,7 @@ $(document).ready(function() {
|
||||
|
||||
if ($('.history button.action-compare-revision').length) {
|
||||
$('.history button.action-compare-revision').click(function() {
|
||||
$("#version-form").submit();
|
||||
$("#selection-form").submit();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -445,6 +360,99 @@ $(document).ready(function() {
|
||||
});
|
||||
}
|
||||
|
||||
if( $("#page-history").length) {
|
||||
if( $("#page-history #pagination").length) {
|
||||
|
||||
var maxSelected = 2;
|
||||
var selectionColors = ["bg-green-light", "bg-red-light"];
|
||||
|
||||
var toggleInputs = function () {
|
||||
var numSelected = 0;
|
||||
$("#selection-form input").each(function (index, element) {
|
||||
var value = $(element).val();
|
||||
var input = $('#version-form input[value="' + value + '"]');
|
||||
input.prop('checked', true);
|
||||
if (index == 0) {
|
||||
input.closest("li").removeClass(selectionColors[1]).addClass(selectionColors[index]);
|
||||
} else if (index == 1) {
|
||||
input.closest("li").addClass(selectionColors[index]);
|
||||
}
|
||||
numSelected = numSelected + 1;
|
||||
});
|
||||
if (numSelected == maxSelected) {
|
||||
$('#version-form input:not(:checked)').prop('disabled', true);
|
||||
$('.history button.action-compare-revision').prop('disabled', false);
|
||||
} else if (numSelected < maxSelected) {
|
||||
$('#version-form input').prop('disabled', false);
|
||||
$('.history button.action-compare-revision').prop('disabled', true);
|
||||
}
|
||||
};
|
||||
|
||||
var onCheckboxSelect = function ( box ) {
|
||||
$('<input>').attr({
|
||||
type: 'hidden',
|
||||
id: $(box).val(),
|
||||
name: 'versions[]',
|
||||
value: $(box).val()
|
||||
}).appendTo($("#selection-form"));
|
||||
toggleInputs();
|
||||
};
|
||||
|
||||
var onCheckboxUnselect = function( box ) {
|
||||
$('#selection-form #' + $(box).val()).remove();
|
||||
$(box).closest("li").removeClass(selectionColors.join(" "));
|
||||
toggleInputs();
|
||||
};
|
||||
|
||||
var setCheckboxEvents = function () {
|
||||
$("#version-form input").on('change', function () {
|
||||
if (this.checked) {
|
||||
onCheckboxSelect(this);
|
||||
} else {
|
||||
onCheckboxUnselect(this);
|
||||
}
|
||||
});
|
||||
};
|
||||
setCheckboxEvents();
|
||||
toggleInputs();
|
||||
|
||||
var clickPageNav = function (e) {
|
||||
e.preventDefault();
|
||||
$.ajax({
|
||||
url: $(this).attr('href'),
|
||||
type: 'GET',
|
||||
success: function(data) {
|
||||
var rowDiv = $('#page-history-list', data);
|
||||
var new_pagination = $('#pagination', data);
|
||||
|
||||
next = $('#pagination #next');
|
||||
prev = $('#pagination #prev');
|
||||
new_next = new_pagination.find('#next');
|
||||
new_prev = new_pagination.find('#prev');
|
||||
|
||||
next[0].hidden = new_next[0].hidden;
|
||||
prev[0].hidden = new_prev[0].hidden;
|
||||
|
||||
next.children('a').attr('href', new_next.children('a').attr('href'));
|
||||
prev.children('a').attr('href', new_prev.children('a').attr('href'));
|
||||
|
||||
$('#page-history-list').replaceWith(rowDiv);
|
||||
|
||||
setCheckboxEvents();
|
||||
toggleInputs();
|
||||
},
|
||||
error: function(data, textStatus, errorThrown) {
|
||||
console.log('something went wrong: ' + textStatus + errorThrown)
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$("#pagination #next a, #pagination #prev a").each(function(index, element) {
|
||||
$(element).on("click", clickPageNav);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if( $("#last-edit").length ) {
|
||||
$("#page-info-toggle").click ( function () {
|
||||
$.ajax({
|
||||
|
||||
@@ -726,4 +726,4 @@ a {
|
||||
color: #A31515;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user