User:Eithris/common.js
Jump to navigation
Jump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* Require confirmation on rollback */
$.when( mw.loader.using( ['mediawiki.util'] ), $.ready).then( function() {
$(".mw-rollback-link").on('click', function(e) {
var count = e.target.innerText.match(/\d/) ? e.target.innerText.match(/\d+/)[0] : null,
message = 'Rollback ' + (count ? count + ' edits' : 'edit') + ' by ' + mw.util.getParamValue('from',e.target.href) + '?';
if(!confirm(message)) return e.preventDefault();
});
}());
/* Mass patrol */
if ( mw.config.get('wgNamespaceNumber') >= 0 ) {
mw.loader.using( 'mediawiki.util', function () {
$( function ( $ ) {
var link = mw.util.addPortletLink( 'p-cactions', '#', 'Patrol all', 'Patrol all' );
$( link ).click( function ( e ) {
e.preventDefault();
mw.loader.using( [ 'mediawiki.api', 'oojs-ui' ], function () {
getAndProcessRevisions();
} );
} );
function getAndProcessRevisions( apicontinue ) {
var params = {
'action': 'query',
'format': 'json',
'prop': 'revisions',
'titles': mw.config.get( 'wgPageName' ),
'formatversion': 2,
'rvprop': 'ids',
'rvlimit': 50
};
if ( apicontinue ) {
$.extend( params, apicontinue );
}
new mw.Api()
.get( params )
.then( function ( data ) {
var revisions = data.query.pages[ 0 ].revisions;
markRevisionsAsPatrolled( revisions )
.then( function ( shouldContinue ) {
if ( shouldContinue && data[ 'continue' ] ) {
getAndProcessRevisions( data[ 'continue' ] );
} else {
window.location.reload();
}
} )
.fail( function ( error ) {
mw.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
} );
} )
.fail( function ( error ) {
mw.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
} );
}
function markRevisionsAsPatrolled( revisions ) {
var deferred = $.Deferred();
markOneAsPatrolled( revisions, 0, deferred );
return deferred.promise();
}
function markOneAsPatrolled( revisions, index, deferred ) {
var revid = revisions[ index ].revid;
new mw.Api()
.postWithToken( 'patrol', {
'action': 'patrol',
'revid': revid
} )
.then( function ( info ) {
console.log( 'Successfully patrolled: ' + revid );
if ( revisions[ index + 1 ] ) {
markOneAsPatrolled( revisions, index + 1, deferred );
} else {
deferred.resolve( true );
}
} )
.fail( function ( error ) {
if ( error === 'notpatrollable' ) {
console.log( "Can't be patrolled as it's too old: " + revid );
deferred.resolve( false );
} else {
deferred.reject( error );
}
} );
}
} );
} );
}
/* Sidebar customization */
function ModifySidebar( action, section, name, link ) {
try {
switch ( section ) {
case 'languages':
var target = 'p-lang';
break;
case 'toolbox':
var target = 'p-tb';
break;
case 'navigation':
var target = 'p-navigation';
break;
default:
var target = 'p-' + section;
break;
}
if ( action == 'add' ) {
var node = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var aNode = document.createElement( 'a' );
var liNode = document.createElement( 'li' );
aNode.appendChild( document.createTextNode( name ) );
aNode.setAttribute( 'href', link );
liNode.appendChild( aNode );
liNode.className = 'plainlinks';
node.appendChild( liNode );
}
if ( action == 'remove' ) {
var list = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var listelements = list.getElementsByTagName( 'li' );
for ( var i = 0; i < listelements.length; i++ ) {
if (
listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
listelements[i].getElementsByTagName( 'a' )[0].href == link
)
{
list.removeChild( listelements[i] );
}
}
}
} catch( e ) {
// let's just ignore what's happened
return;
}
}
function CustomizeModificationsOfSidebar() {
const tempurl = window.location.href.split("wiki/").pop();
const tempurl2 = tempurl.split("\_\(").shift();
const url = tempurl2.split("\?").shift();
// adds Special:PrefixIndex to toolbox
ModifySidebar( 'add', 'navigation', 'Prefix index', 'https://warcraft.wiki.gg/wiki/Special:PrefixIndex?prefix=' + url );
}
jQuery( CustomizeModificationsOfSidebar );