|
|
| Line 1: |
Line 1: |
| − | console.log("your JS loaded it didn't do anything");
| + | {{subst:iusc|User:Novem Linguae/Scripts/VisualEditorEverywhere.js}} |
| − | /**
| |
| − | * Rollback
| |
| − | * @description Perform rollbacks without needing to be in the usergroup
| |
| − | * @author Ozank
| |
| − | */
| |
| − | (function() {
| |
| − | 'use strict';
| |
| − | // Exit if normal rollback links are present or the wiki disabled the script
| |
| − | if ($('.mw-rollback-link').length || window.RollbackWikiDisable) {
| |
| − | return;
| |
| − | }
| |
| − | var Rollback = $.extend(window.Rollback, {
| |
| − | config: mw.config.get([
| |
| − | 'wgAction',
| |
| − | 'wgCanonicalSpecialPageName',
| |
| − | 'wgPageName'
| |
| − | ]),
| |
| − | user: 'Ex Kay Cee Dee',
| |
| − | _preload: 1,
| |
| − | preload: function() {
| |
| − | if (--this._preload === 0) {
| |
| − | this.init();
| |
| − | }
| |
| − | },
| |
| − | init: function() {
| |
| − | this.api = new mw.Api();
| |
| − | this.performRollbackCallback = this.performRollbackCallback
| |
| − | .bind(this);
| |
| − | this.getTop().then(function(data) {
| |
| − | const arr = data.query.usercontribs;
| |
| − | console.log(arr);
| |
| − | const interval = setInterval(function() {
| |
| − | const rev = arr.shift();
| |
| − | if (!rev) {
| |
| − | clearInterval(interval);
| |
| − | window.location.reload();
| |
| − | return;
| |
| − | }
| |
| − | this.getRevisionIdAndContent(rev.title, rev.user);
| |
| − | console.log(arr.length);
| |
| − | }.bind(this), 50);
| |
| − | }.bind(this));
| |
| − | },
| |
| − | getTop: function() {
| |
| − | return this.api.get({
| |
| − | action: 'query',
| |
| − | list: 'usercontribs',
| |
| − | ucuser: this.user,
| |
| − | uctoponly: 1,
| |
| − | uclimit: 'max'
| |
| − | });
| |
| − | },
| |
| − | getRevisionIdAndContent: function(title, target) {
| |
| − | this.api.get({
| |
| − | action: 'query',
| |
| − | cb: Date.now(),
| |
| − | indexpageids: 1,
| |
| − | prop: 'revisions',
| |
| − | rvlimit: 'max',
| |
| − | rvprop: 'user|ids',
| |
| − | titles: title
| |
| − | }).done(this.getRevisionIdCallback.bind(this, target)).fail(
| |
| − | this.outputError.bind(this, 'revisionFail')
| |
| − | );
| |
| − | },
| |
| − | getRevisionIdCallback: function(target, data) {
| |
| − | if (data.error) {
| |
| − | this.outputError('revisionFail', data.error.code);
| |
| − | return;
| |
| − | }
| |
| − | var revisions = data.query.pages[data.query.pageids[0]].revisions;
| |
| − | // Don't rollback if the page has been edited by somebody else
| |
| − | if (target !== revisions[0].user) {
| |
| − | console.log('edit conflict');
| |
| − | // this.outputError('editConflict');
| |
| − | return;
| |
| − | }
| |
| − | var lastUser, revId;
| |
| − | for (var i in revisions) {
| |
| − | if (revisions[i].user !== target) {
| |
| − | // Remember last author
| |
| − | lastUser = revisions[i].user;
| |
| − | // Get revision to revert to
| |
| − | revId = revisions[i].revid;
| |
| − | break;
| |
| − | }
| |
| − | }
| |
| − | if (!lastUser) {
| |
| − | this.outputError('singleEditor');
| |
| − | return;
| |
| − | }
| |
| − | this.api.get({
| |
| − | action: 'query',
| |
| − | cb: Date.now(),
| |
| − | indexpageids: 1,
| |
| − | prop: 'revisions',
| |
| − | revids: revId,
| |
| − | rvprop: 'content'
| |
| − | }).done(
| |
| − | this.getRevisionContentCallback.bind(this, target, lastUser)
| |
| − | ).fail(
| |
| − | this.outputError.bind(this, 'contentFail', undefined)
| |
| − | );
| |
| − | },
| |
| − | getRevisionContentCallback: function(target, lastUser, data) {
| |
| − | if (data.error) {
| |
| − | this.outputError('contentFail', data.error.code);
| |
| − | return;
| |
| − | }
| |
| − | // Can be no content on page
| |
| − | var page = data.query.pages[data.query.pageids[0]],
| |
| − | content = page.revisions ? page.revisions[0]['*'] : '';
| |
| − | this.performRollback(page.title, content, target, lastUser);
| |
| − | },
| |
| − | performRollback: function(page, text, user, user2) {
| |
| − | this.api.post({
| |
| − | action: 'edit',
| |
| − | bot: true,
| |
| − | minor: true,
| |
| − | summary: 'rv',
| |
| − | text: text,
| |
| − | title: page,
| |
| − | token: mw.user.tokens.get('editToken')
| |
| − | }).done(this.performRollbackCallback).fail(
| |
| − | this.outputError.bind(this, 'editFail')
| |
| − | );
| |
| − | },
| |
| − | performRollbackCallback: function(data) {
| |
| − | if (data.error) {
| |
| − | this.outputError('editFail', data.error.code);
| |
| − | } else {
| |
| − | // mw.notify('Reverted successfully');
| |
| − | }
| |
| − | },
| |
| − | outputError: function(message, code) {
| |
| − | mw.notify('error: ' + message + ' ' + code, {
| |
| − | type: 'error'
| |
| − | });
| |
| − | }
| |
| − | });
| |
| − | mw.loader.using([
| |
| − | 'mediawiki.api',
| |
| − | 'mediawiki.user',
| |
| − | 'mediawiki.util',
| |
| − | 'mediawiki.notification'
| |
| − | ], Rollback.preload.bind(Rollback));
| |
| − | })();
| |
| − | console.log("no of course it did something");
| |