Content deleted Content added
MusikAnimal (talk | contribs) No edit summary |
MusikAnimal (talk | contribs) No edit summary |
||
Line 40:
e.preventDefault();
userName = $(this).parents('.plainlinks').find('a').eq(0).text();
permaLink = '[[Special:PermaLink/' + revisionId + '#User:' + userName + ']]';▼
showDialog();
});
Line 47 ⟶ 46:
function showDialog() {
Dialog = function(config) {
Dialog.super.call(this, config);
};
Line 60 ⟶ 58:
};
Dialog.prototype.getBodyHeight = function() {
return
};
Dialog.prototype.initialize = function() {
Line 72 ⟶ 70:
this.editPanel.$element.append( this.editFieldset.$element );
this.rightsChangeSummaryInput = new OO.ui.TextInputWidget({
value: 'Requested at [[WP:PERM]]
});
this.closingRemarksInput = new OO.ui.TextInputWidget({
value: '{{done}} ~~~~'
});▼
this.watchTalkPageCheckbox = new OO.ui.CheckboxInputWidget({
selected: false
});
this.editFieldset.addItems( [
new OO.ui.FieldLayout(
label: 'Summary'
}
new OO.ui.FieldLayout(
label: 'Closing remarks'
}
new OO.ui.FieldLayout(this.watchTalkPageCheckbox, {
label: 'Watch user talk page'
})▼
] );
this.submitPanel = new OO.ui.PanelLayout( {
Line 104 ⟶ 108:
} );
this.$body.append( this.stackLayout.$element );
data = data || {};▼
▲ }
}, this );▼
};
Dialog.prototype.onSubmit = function() {
var self = this, promiseCount = 3;
self.actions.setAbilities( { submit: false } );
assignPermission(this.rightsChangeSummaryInput.getValue() + tagLine),▼
markAsDone('\n::' + this.closingRemarksInput.getValue()),▼
▲ addField = function( field, label, promise ) {
if ( !promise ) return;▼
self.pushPending();
self.submitFieldset.addItems( [field] );▼
promise.done(function() {
field.$field.append( $( '<span>' )
Line 137 ⟶ 122:
.prop('style', 'position:relative; top:0.5em; color: #009000; font-weight: bold')
);
}).fail(function(
if ( obj && obj.error && obj.error.info ) {
field.$field.append( $( '<span>' )
Line 144 ⟶ 129:
);
} else {
field.$field.append( $( '<span>' )
.text('An unknown error occurred.') .prop('style', 'position:relative; top:0.5em; color: #cc0000; font-weight: bold')
}
}).always( function() {
promiseCount--; // FIXME: maybe we could use a self.isPending() or something
self.popPending();
if (promiseCount === 0) {
setTimeout(function() {▼
___location.reload(true);▼
}, 1000);
});
};
addField(▼
self.changeRightsProgressField,▼
self.submitFieldset.addItems( [self.changeRightsProgressField] );
self.issueTemplateProgressField.setLabel( 'Issuing template...' );
self.submitFieldset.addItems( [self.issueTemplateProgressField] );
addField(▼
self.markAsDoneProgressField,▼
▲ self.changeRightsProgressField,
assignPermission(
data.edit.newrevid
▲ );
self.issueTemplateProgressField,
issueTemplate(this.watchTalkPageCheckbox.isSelected())
'Issuing template...',▼
▲ self.markAsDoneProgressField,
▲ 'Marking request as done...',
);
▲ $.when(promises).done( function() {
▲ setTimeout(function() {
▲ ___location.reload(true);
▲ }, 2000);
▲ });
▲ } );
self.stackLayout.setItem( self.submitPanel );
};
Line 198 ⟶ 195:
}
function assignPermission(summary, revId) {
console.log('Assigning permission');
return api.postWithToken( 'userrights', {
action: 'userrights',
Line 204 ⟶ 203:
user: userName,
add: permissionNames[permission],
reason: summary + '; ' + permaLink
});
}
function markAsDone(closingRemarks) {
console.log('Marking as done');
var sectionNode = document.getElementById('User:' + userName),
sectionNumber = $(sectionNode).siblings('.mw-editsection').find('a').prop('href').match(/section=(\d)/)[1];
Line 218:
summary: 'done' + tagLine,
appendtext: closingRemarks
}
}
function issueTemplate(
var talkPage = 'User talk:' + userName;
return api.postWithToken( 'edit', {
format: 'json',
action: 'edit',
title:
section: 'new',
summary: permission + ' granted per ' + permaLink + tagLine,
text: '{{subst:' + templates[permission] + '}}',
sectiontitle: permission + ' granted',
watchlist:
}
}
})();
|