User:MusikAnimal/userRightsManager.js: Difference between revisions

Content deleted Content added
try again...
small fix to add a template that can be placed on a user's talk page when TAIV is granted (again should be relatively uncontroversial as a change, so actioning it on my own) -- folks (other intadmins or MusikAnimal) are welcomed to revert me if they disagree :)
 
(11 intermediate revisions by 3 users not shown)
Line 10:
'Autopatrolled': 'autoreviewer',
'Confirmed': 'confirmed',
'Event coordinator': 'eventcoordinator',
'Extended confirmed': 'extendedconfirmed',
'File mover': 'filemover',
Line 17 ⟶ 18:
'Pending changes reviewer': 'reviewer',
'Rollback': 'rollbacker',
'Template editor': 'templateeditor',
'Temporary account IP viewer': 'temporary-account-viewer',
};
 
Line 25 ⟶ 27:
'AutoWikiBrowser': '',
'Confirmed': '',
'Event coordinator': 'Event coordinator granted',
'Extended confirmed': '',
'File mover': 'Filemovergiven',
Line 31 ⟶ 34:
'Page mover': 'Page mover granted',
'Pending changes reviewer': 'Pending changes reviewer granted',
'Rollback': 'Rollbackgiven3Rollback granted 3',
'Template editor': 'Template editor granted',
'Temporary account IP viewer': 'Temporary account IP viewer granted',
};
 
var api = new mw.Api(),
permission = mw.config.get('wgTitle').split('/').slice(-1)[0],
revisionId = mw.config.get('wgRevisionId'),
Line 41 ⟶ 45:
permaLink, userName, dialog;
 
mw.loader.using(['oojs-ui', 'mediawiki.api', 'mediawiki.widgets.DateInputWidget'], function() {
api = new mw.Api();
$('.perm-assign-permissions a').on('click', function(e) {
if (permission === 'AutoWikiBrowser') return true;
Line 55 ⟶ 60:
};
OO.inheritClass(Dialog, OO.ui.ProcessDialog);
dialogDialog.static.name = { name: 'User user-rights -manager' };
Dialog.static.title = 'Grant ' + permission + ' to ' + userName;
Dialog.static.actions = [
Line 64 ⟶ 70:
};
Dialog.prototype.getBodyHeight = function() {
return 160208;
};
Dialog.prototype.initialize = function() {
Line 77 ⟶ 83:
this.rightsChangeSummaryInput = new OO.ui.TextInputWidget({
value: 'Requested at [[WP:PERM]]'
});
this.expiryInput = new mw.widgets.DateInputWidget({
$overlay: $('.oo-ui-window')
});
this.closingRemarksInput = new OO.ui.TextInputWidget({
Line 87 ⟶ 96:
new OO.ui.FieldLayout(this.rightsChangeSummaryInput, {
label: 'Summary'
}),
new OO.ui.FieldLayout(this.expiryInput, {
label: 'Expiry (optional)'
}),
new OO.ui.FieldLayout(this.closingRemarksInput, {
Line 119 ⟶ 131:
} );
this.$body.append( this.stackLayout.$element );
$( '.mw-widget-dateInputWidget' ).css( 'width', '100%' );
};
 
Line 171 ⟶ 184:
addPromise(
self.markAsDoneProgressField,
markAsDone('\n::' + this.closingRemarksInput.getValue())
).then(function(data) {
addPromise(
Line 177 ⟶ 190:
assignPermission(
this.rightsChangeSummaryInput.getValue(),
data.edit.newrevid,
this.expiryInput.getValue()
)
).then(function() {
// silently add user to MMS list
if (permission === 'New page reviewer') {
addToMMSList();
} else if (permission === 'Autopatrolled') {
updateWhiteList();
}
 
if (!!templates[permission]) {
addPromise(
self.issueTemplateProgressField,
issueTemplate(this.watchTalkPageCheckbox.isSelected(), this.expiryInput.getValue())
);
}
Line 208 ⟶ 226:
size: 'medium'
});
dialog.static = { name: 'User rights manager' };
 
var windowManager = new OO.ui.WindowManager();
Line 216 ⟶ 233:
}
 
function assignPermission(summary, revId, expiry) {
permaLink = '[[Special:PermaLink/' + revId + '#User:' + userName + '|permalink]]';
return api.postWithToken( 'userrights', {
action: 'userrights',
Line 223 ⟶ 240:
user: userName.replace(/ /g, '_'),
add: permissionNames[permission],
reason: '+' + permissionNames[permission] + '; ' + summary + '; ' + permaLink + tagLine,
expiry: expiry === '' ? 'infinity' : expiry
});
}
Line 240 ⟶ 258:
}
 
function issueTemplate(watch, expiry) {
var talkPage = 'User talk:' + userName.replace(/ /g, '_');
return api.postWithToken( 'edit', {
Line 248 ⟶ 266:
section: 'new',
summary: permission + ' granted per ' + permaLink + tagLine,
text: '{{subst:' + templates[permission] + (expiry === '' ? '' : '|expiry=' + expiry) + '}}',
sectiontitle: permission + ' granted',
watchlist: watch ? 'watch' : 'unwatch'
Line 260 ⟶ 278:
spamlist: 'Wikipedia:New pages patrol/Reviewers/Newsletter list',
add: 'User talk:' + userName
});
}
function updateWhiteList() {
api.edit( 'Wikipedia:New pages patrol/Redirect autopatrol list', function (revision) {
var newContent = revision.content.replace(
new RegExp('\\*\\s*{{\\s*user2\\s*\\|\\s*' + userName + '\\s*}}\\n'),
''
);
return {
text: newContent,
summary: 'Removing ' + userName + ' who is now autopatrolled' + tagLine,
minor: true
};
});
}