MediaWiki:Common.js/Special:MovePage
/* this is just a quick and dirty script. makes a list of double redir on a move page (on MediaWiki:Movepage-moved messaage)
caveats
- only supports one level of double redirects - triple redirect won't work
- might break if title contains /
- /
//
mw.loader.load( '/w/index.php?title=' + 'user:Bawolff/mwapilib.js' + '&action=raw&ctype=text/javascript' ); //note: this loads on every page move, even if we don't always need it. causes some overhead - which is bad
var CheckForDoubleRedir = {};
CheckForDoubleRedir.do = function(pageName,container) {
//var pageName = 'Main Page';
var foo = new Bawolff.mwapi.Request({action:"query", rawcontinue: '', list: "backlinks", blfilterredir: "redirects", blredirect: "true", bllimit: "20", bltitle: pageName});
foo.send(function (doc) {
var out =document.createElement('ul');
var pages, li, a;
//var pages= doc.getElementsByTagName('redirlinks')[0].getElementsByTagName('bl')[0].getAttribute('title');
var redir = doc.getElementsByTagName('redirlinks');
for (var i=0;i < redir.length;i++) {
pages = redir[i].getElementsByTagName('bl');
for (var j=0;j < pages.length; j++) {
li = document.createElement('li')
a= document.createElement('a');
a.appendChild(document.createTextNode(pages[j].getAttribute('title')));
a.href= mw.config.get('wgScript') + "?redirect=no&action=edit&title=" + encodeURIComponent(pages[j].getAttribute('title'));
//FIXME undecode slashes, causes problems
li.appendChild(a)
out.appendChild(li);
}
}
if (i===0) {
li = document.createElement('li')
li.appendChild(document.createTextNode('No double redirects were detected'));
out.appendChild(li);
}
if (doc.getElementsByTagName('query-continue').length !==0) {
//>20 double redirects
li = document.createElement('li')
a= document.createElement('a');
a.appendChild(document.createTextNode('Please see [[special:whatlinksherere]] for more.'));
a.href= mw.config.get('wgScript') + "?hidelinks=1&hidetrans=1&title=" + encodeURIComponent(pageName);
li.appendChild(a)
out.appendChild(li);
}
var header =document.createElement('h2');
header.appendChild(document.createTextNode('Please fix the following double redirects so that they point directly to the article, instead of another redirect'));
container.appendChild(header);
container.appendChild(out);
//jsMsg(container); now it is in body as opposed to sitenotice
//doubleRedirInsertPoint
})
}
CheckForDoubleRedir.load = function() {
try {
var insert = document.getElementById('doubleRedirInsertPoint');
var page = document.getElementById('destinationPageName').firstChild.firstChild.firstChild.data;
if (insert && page && Bawolff && Bawolff.mwapi) {
CheckForDoubleRedir.do(page, insert);
} else if (insert && page && (!Bawolff && !Bawolff.mwapi)) {
window.setTimeout(CheckForDoubleRedir.load, 600) //if the lib hasn't loaded yet
}
} catch (e) {} //ignore errors. Will get an error on pre-move page
}
$(CheckForDoubleRedir.load);
//
/*
move comment page automatically
Hopefully this will work mostly. Can be disabled by setting
var doNotAutoMoveComments = true;
*/
function moveCommentsPage () {
//now hopefully this can't be abused...
if (window.doNotAutoMoveComments) return;
if (!document.getElementById('move-the-damn-comments-page') || location.search.indexOf('doNotMoveCommentsPage') !== -1) return
var initial = document.getElementById('initialPageName'); //unsafe(?) should be escaped by Bawolff.mwapi
var dest = document.getElementById('destinationPageName'); //unsafe(?)
if (!initial || !dest) return;
initial = initial.getElementsByTagName('a')[0].firstChild.data;
dest = dest.getElementsByTagName('a')[0].firstChild.data;
if (!initial || !dest) return;
initial = 'Comments:' + initial;
dest = 'Comments:' + dest;
if (!confirm('Automatically move associated Comments (Opinions) namespace page from "' + initial + '" to "' + dest + '"?')) return;
Bawolff.mwapi.getToken(function (t) {
var move = new Bawolff.mwapi.Request({action: 'move', token: t, from: initial, to: dest, reason: 'Automatically moving associated comments namespace page to new name, with [[user talk:Bawolff|JS assistance]]'}, 'POST');
move.send(function () {
document.getElementById('move-the-damn-comments-page').innerHTML = '<img height="16" width="16" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/16px-Yes_check.svg.png" alt=""/> <b>Done</b> Comments page moved.';
}, function (e) {alert('Comments page move failed: ' + e.message + ' (' + e.name + ')' );});
});
}
$(moveCommentsPage);
/*
- /