Difference between revisions of "User:DollarStoreBa'al/common.js"
(nothin'? okay. I'll just leave this here just in case I want to put something on it...) |
|||
| 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"); | ||
Revision as of 01:27, 19 September 2025
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");
