Difference between revisions of "User:4D4850/common.js"
(Created page with "crap crap crap crap crap") |
(changed to Jacky720's script) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | console.log("your JS loaded it didn't do anything"); | |
+ | /** | ||
+ | * 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"); |
Latest revision as of 22:27, 4 May 2022
console.log("your JS loaded it didn't do anything"); /** * 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");