User:Cheeseskates/global.js

///Customized scripts.

/*
 * Rollback
 * Perform rollbacks without needing to be in the usergroup
 * @author Ozuzanna


 * (function($, mw) {

var main = { init: function { if ($('.mw-rollback-link a').length) return;

if (mw.config.get('wgAction') == "history" && $('#pagehistory li').length > 1) $('#pagehistory li:first .mw-history-undo a').before(' rollback | '); else if (mw.config.get('wgCanonicalSpecialPageName') == "Contributions") { $('#mw-content-text ul').find('li').each(function {                   $(this).append(' [rollback] ');                }); }           else if ($.getUrlVar('diff') || $.getUrlVar('oldid')) $('.mw-usertoollinks:last').after('   [rollback] ');

$('.mw-custom-rollback-link a').click(function {               main.getRevisionIdAndContent($(this).attr('data-id'));            }); },       getRevisionIdAndContent: function(title) { var API = new mw.Api; API.get({               action: 'query',                prop: 'revisions',                titles: title,                rvprop: 'user|ids',                rvlimit: 500,                cb: new Date.getTime            }) .done(function(d) {               if (!d.error) {                    var revisions;

for (var i in d.query.pages) { revisions = d.query.pages[i].revisions; }

var currentUser = revisions[0].user, //current user rollbacking from lastUser, revId;

for (var i in revisions) { if (revisions[i].user != currentUser) { lastUser = revisions[i].user; //remember last author revId = revisions[i].revid; //get revision to revert to                           break; }                   }

if (lastUser) { API.get({                           action: 'query',                            prop: 'revisions',                            rvprop: 'content',                            revids: revId,                            cb: new Date.getTime                        }) .done(function(d) {                           if (!d.error) {                                var content = ""; //can be no content on page so initialise empty as failsafe                                for (var i in d.query.pages) {                                    if (d.query.pages[i].revisions)                                        content = d.query.pages[i].revisions[0]["*"];                                }                                main.performRollback(title,content,currentUser,lastUser);                            }                            else                                new BannerNotification('Unable to rollback (failed to get page content): ' + d.error.code,'error').show;                        }) .fail(function {                           new BannerNotification('Unable to rollback: failed to get page content!','error').show;                        }); }                   else new BannerNotification('Unable to rollback: no different editor found!','error').show; }               else new BannerNotification('Unable to rollback (failed to get revisions): ' + d.error.code,'error').show; })               .fail(function { new BannerNotification('Unable to rollback: failed to get revisions!','error').show; });       },        performRollback: function(page,text,user,user2) {            var API = new mw.Api;            API.post({ action: 'edit', title: page, text: text, summary: 'Reverted edits by ' + user + ' (talk | block) to the last version by ' + user2 + '', token: mw.user.tokens.values.editToken })               .done(function(d) { if (!d.error) { new BannerNotification('Rollback successful!','confirm').show; }               else new BannerNotification('Unable to rollback (failed to publish edit): ' + d.error.code,'error').show; })               .fail(function { new BannerNotification('Unable to rollback: failed to publish edit!','error').show; });       }    };

main.init;

}) (this.jQuery, this.mediaWiki);

/** * Ajax Undo links * * Adds an Ajax undo link next to the normal undo link on page histories * and on diff pages * * @author Grunny * @version 0.2 * http://dev.wikia.com/wiki/MediaWiki:AjaxUndo/code.js */

jQuery(document).ready( function ( $ ) {   "use strict";

function createUndoLink( diffUndoUrl ) { var $ajaxUndoLink = $( '' ).text( 'AJAX Undo' ).attr( 'href', '#' ).click( function {            var	$ajaxUndoLinkob = $( this ),                undoIdRegex = /&undo=([^&]*)/,                undoId = undoIdRegex.exec( diffUndoUrl )[1],                summary = "Vandalism/Quick Undo.",                editToken,                etUrl = wgServer + wgScriptPath + '/api.php?action=query&prop=info|revisions&intoken=edit&titles=' + encodeURIComponent( wgPageName ) + '&format=json';            $ajaxUndoLinkob.html( ' ' );           $.getJSON( etUrl, function ( data ) { editToken = data.query.pages[wgArticleId].edittoken; $.ajax( {                   url: wgScriptPath + '/api.php?',                    data: 'action=edit&format=json&title=' + encodeURIComponent( wgPageName ) + '&undo=' + encodeURIComponent( undoId ) + '&bot=1&token=' + encodeURIComponent( editToken ) + '&summary=' + encodeURIComponent( summary ),                    dataType: 'json',                    type: 'POST',                    success: function ( data ) {                        if ( data.edit && data.edit.result === 'Success' ) {                            $ajaxUndoLinkob.text( '(undone)' );                        } else if ( data.error && data.error.code === 'undofailure' ) {                            $ajaxUndoLinkob.text( '(error)' );                            alert( data.error.info );                        } else {                            $ajaxUndoLinkob.text( '(error)' );                            alert( 'Error: Unknown result from API.' ); }                   },                    error: function  { $ajaxUndoLinkob.text( '(error)' ); }               } );            } );        } );        return $ajaxUndoLink;    }

if ( $( '.mw-history-undo > a' ).length && wgAction === 'history' ) { $( '.mw-history-undo > a' ).each( function {            var	diffUndoUrl = $( this ).attr( 'href' ),                $ajaxUndoLink = createUndoLink( diffUndoUrl );            $( this ).parent.after( ' | ', $ajaxUndoLink );        } ); } else if ( $( 'table.diff' ).length && typeof $.getUrlVar( 'diff' ) !== 'undefined' ) { var	$diffUndoLink = $( 'table.diff' ).find( '.diff-ntitle > #mw-diff-ntitle1 a:last' ), diffUndoUrl = $diffUndoLink.attr( 'href' ), $ajaxDiffUndoLink = createUndoLink( diffUndoUrl ); $diffUndoLink.parent.append( ' (', $ajaxDiffUndoLink, ')' ); } } );

/// Articles

importArticles({   type: "script",    articles: [        "u:dev:MediaWiki:AnchoredRollback/code.js",        'u:dev:FastDelete/code.js',        'u:dev:DisplayClock/code.js',        'u:kocka:MediaWiki:AjaxCommentDelete/code.js',        "u:dev:MediaWiki:CapsFirst/code.js",        'u:dev:Mediawiki:QuickToolsv2/code.js'    ] });

///Importscripts

importScriptPage('MediaWiki:AjaxPatrol/code.js', 'dev' ); window.ajaxRefresh = 1000; window.ajaxPages = ["Special:RecentChanges","Special:Watchlist","Special:Log","Special:WikiActivity",]; importScriptPage('MediaWiki:AjaxRC/code.js', 'dev'); importScriptPage('MediaWiki:ViewRemoved/code.js', 'dev'); WHAMDelay = 1000; importScriptPage('MediaWiki:WHAM/code.2.js', 'dev'); massCategorizationDelay = 1000; importScriptPage('MediaWiki:MassCategorization/code.js', 'dev'); importScriptPage('MediaWiki:Nuke/code.js', 'dev'); importScriptPage('MediaWiki:AjaxRedirect/code.js', 'dev');