User:Awesome Aasim/infiniscroll.js

if (!infiniscroll) {

var infiniscroll = {};

// script that would add infinite scrolling to Special:Contribs, Special:Log, Special:NewPages, and a few other pages

infiniscroll.urlparams = (new URL(location.href)).searchParams;

infiniscroll.loading = false;

$(document).ready(function () {

if (!infiniscroll.urlparams.get("noinfiniscroll")) {

var $ul = $('.mw-pager-navigation-bar').parent().children('ul').eq(0);

$ul.before('

');

$('.mw-pager-body').eq(0).append($ul);

if ($('.mw-pager-body').length > 0 && (mw.config.get('wgAction') == 'history' || mw.config.get('wgNamespaceNumber') < 0)) {

var start = function () {

$.get(location.href).done(function (result) {

$(".mw-pager-body").eq(0).html($(result).find(".mw-pager-body").eq(0).html());

$("#mw-content-text").prepend('

Infinite scrolling enabled. Press ■ to disable.
');

}).fail(function () {

start();

});

};

start();

infiniscroll.load = function () {

if (!infiniscroll.loading) {

infiniscroll.loading = true;

var oldnexthtml = $(".mw-nextlink").eq(1).html();

var oldnexttext = $(".mw-nextlink").eq(1).text();

var nextlink = $(".mw-nextlink").eq(1).attr("href");

if (nextlink) {

$(".mw-nextlink").eq(1).html('Loading...');

var oldselected = [0, 0];

$(".mw-pager-body").find("li").each(function (i) {

if ($(this).find('input').eq(0).prop("checked")) {

oldselected[0] = i;

}

if ($(this).find('input').eq(1).prop("checked")) {

oldselected[1] = i;

}

});

$.get(nextlink).done(function (result) {

$(result).find(".mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", null).prop("disabled", false);

var $ul = $(result).find('.mw-pager-navigation-bar').parent().children('ul').eq(0);

$ul.before('

');

$(result).find('.mw-pager-body').eq(0).append($ul);

console.log($(result).find('.mw-pager-body').eq(0).html());

$(".mw-pager-body").eq(0).append($(result).find(".mw-pager-body").eq(0).html());

$(".mw-pager-body").find("li").each(function () {

if ($(this).find("input").eq(0).attr("style") || $(this).find("input").eq(0).attr("id")) {

$(this).find("input").eq(0).attr("style", null);

$(this).find("input").eq(0).attr("id", null);

$(this).find("input").eq(0).prop("disabled", false);

}

});

$(".mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", "visibility:hidden;");

$(".mw-pager-body").find("li").eq(oldselected[1]).find("input").eq(1).click();

$(".mw-pager-body").find("li").eq(oldselected[0]).find("input").eq(0).click();

if ($(result).find("a.mw-nextlink").eq(1).text()) {

$(".mw-nextlink").eq(1).html(oldnexthtml);

$(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

} else {

document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

infiniscroll.loadHistory = function () {

return false;

};

}

$('.mw-pager-body').find('.mw-history-compareselectedversions').remove();

infiniscroll.loading = false;

}).fail(function () {

$(".mw-nextlink").eq(1).html(oldnexthtml);

infiniscroll.loading = false;

});

}

}

};

$(".mw-nextlink").eq(0).after(' | ');

$(".mw-nextlink").eq(1).click(function (e) {

e.preventDefault();

infiniscroll.load();

});

window.onscroll = function (ev) {

if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

infiniscroll.load();

}

};

infiniscroll.load();

} else {

infiniscroll.loadSpecialPage = function () {

// user contributions

if ($(".mw-contributions-list, .mw-pager-body").length > 0) {

$("#mw-content-text").prepend('

Infinite scrolling enabled. Press ■ to disable.
');

infiniscroll.loadContribs = function () {

if (!infiniscroll.loading) {

infiniscroll.loading = true;

var oldnexthtml = $(".mw-nextlink").eq(1).html();

var oldnexttext = $(".mw-nextlink").eq(1).text();

var nextlink = $(".mw-nextlink").eq(1).attr("href");

if (nextlink) {

$(".mw-nextlink").eq(1).html('Loading...');

$.get(nextlink).done(function (result) {

$(".mw-contributions-list, .mw-pager-body").eq(0).append($(result).find(".mw-contributions-list, .mw-pager-body").eq(0).html());

if ($(result).find("a.mw-nextlink").eq(1).text()) {

$(".mw-nextlink").eq(1).html(oldnexthtml);

$(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

} else {

document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

infiniscroll.loadContribs = function () {

return false;

};

}

infiniscroll.loading = false;

}).fail(function () {

$(".mw-nextlink").eq(1).html(oldnexthtml);

infiniscroll.loading = false;

});

}

}

};

$(".mw-nextlink").eq(0).after(' | ');

$(".mw-nextlink").eq(1).click(function (e) {

e.preventDefault();

infiniscroll.loadContribs();

});

window.onscroll = function (ev) {

if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

infiniscroll.loadContribs();

}

};

}

// log pages

else if ($(".mw-logevent-loglines, .mw-pager-body").length > 0) {

$("#mw-content-text").prepend('

Infinite scrolling enabled. Press ■ to disable.
');

infiniscroll.loadLogs = function () {

if (!infiniscroll.loading) {

infiniscroll.loading = true;

var oldnexthtml = $(".mw-nextlink").eq(1).html();

var oldnexttext = $(".mw-nextlink").eq(1).text();

var nextlink = $(".mw-nextlink").eq(1).attr("href");

if (nextlink) {

$(".mw-nextlink").eq(1).html('Loading...');

$.get(nextlink).done(function (result) {

$(".mw-logevent-loglines, .mw-pager-body").eq(0).append($(result).find(".mw-logevent-loglines, .mw-pager-body").eq(0).html());

if ($(result).find("a.mw-nextlink").eq(1).text()) {

$(".mw-nextlink").eq(1).html(oldnexthtml);

$(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

} else {

document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

infiniscroll.loadLogs = function () {

return false;

};

}

infiniscroll.loading = false;

}).fail(function () {

$(".mw-nextlink").eq(1).html(oldnexthtml);

infiniscroll.loading = false;

});

}

}

};

$(".mw-nextlink").eq(0).after(' | ');

$(".mw-nextlink").eq(1).click(function (e) {

e.preventDefault();

infiniscroll.loadLogs();

});

window.onscroll = function (ev) {

if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

infiniscroll.loadLogs();

}

};

}

};

infiniscroll.loadHistoryPage = function () {

var start = function () {

$.get(location.href).done(function (result) {

$("#pagehistory, .mw-pager-body").eq(0).html($(result).find("#pagehistory, .mw-pager-body").eq(0).html());

$("#mw-content-text").prepend('

Infinite scrolling enabled. Press ■ to disable.
');

}).fail(function () {

start();

});

};

start();

infiniscroll.loadHistory = function () {

if (!infiniscroll.loading) {

infiniscroll.loading = true;

var oldnexthtml = $(".mw-nextlink").eq(1).html();

var oldnexttext = $(".mw-nextlink").eq(1).text();

var nextlink = $(".mw-nextlink").eq(1).attr("href");

if (nextlink) {

$(".mw-nextlink").eq(1).html('Loading...');

var oldselected = [0, 0];

$("#pagehistory, .mw-pager-body").find("li").each(function (i) {

if ($(this).find('input').eq(0).prop("checked")) {

oldselected[0] = i;

}

if ($(this).find('input').eq(1).prop("checked")) {

oldselected[1] = i;

}

});

$.get(nextlink).done(function (result) {

$(result).find("#pagehistory, .mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", null).prop("disabled", false);

$("#pagehistory, .mw-pager-body").eq(0).append($(result).find("#pagehistory, .mw-pager-body").eq(0).html());

$("#pagehistory, .mw-pager-body").find("li").each(function () {

if ($(this).find("input").eq(0).attr("style") || $(this).find("input").eq(0).attr("id")) {

$(this).find("input").eq(0).attr("style", null);

$(this).find("input").eq(0).attr("id", null);

$(this).find("input").eq(0).prop("disabled", false);

}

});

$("#pagehistory, .mw-pager-body").find("li").eq(0).find("input").eq(0).attr("style", "visibility:hidden;");

$("#pagehistory, .mw-pager-body").find("li").eq(oldselected[1]).find("input").eq(1).click();

$("#pagehistory, .mw-pager-body").find("li").eq(oldselected[0]).find("input").eq(0).click();

if ($(result).find("a.mw-nextlink").eq(1).text()) {

$(".mw-nextlink").eq(1).html(oldnexthtml);

$(".mw-nextlink").eq(1).attr("href", $(result).find(".mw-nextlink").eq(1).attr("href"));

} else {

document.getElementsByClassName("mw-nextlink")[1].outerHTML = oldnexttext;

infiniscroll.loadHistory = function () {

return false;

};

}

$('#pagehistory, .mw-pager-body').find('.mw-history-compareselectedversions').remove();

infiniscroll.loading = false;

}).fail(function () {

$(".mw-nextlink").eq(1).html(oldnexthtml);

infiniscroll.loading = false;

});

}

}

};

$(".mw-nextlink").eq(0).after(' | ');

$(".mw-nextlink").eq(1).click(function (e) {

e.preventDefault();

infiniscroll.loadHistory();

});

window.onscroll = function (ev) {

if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {

infiniscroll.loadHistory();

}

};

};

$(document).ready(function () {

if (!infiniscroll.urlparams.get("noinfiniscroll")) {

if (mw.config.get("wgNamespaceNumber") == -1) {

infiniscroll.loadSpecialPage();

} else if (mw.config.get("wgAction") == "history") {

infiniscroll.loadHistoryPage();

}

}

});

}

}

});

}