User:EhJJ/twinklewarn.js
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
// If TwinkleConfig aint exist.
if( typeof( TwinkleConfig ) == 'undefined' ) {
TwinkleConfig = {};
}
/**
TwinkleConfig.defaultGroup (int)
if true, watch the page which has been dispatched an warning or notice, if false, default applies
*/
if( typeof( TwinkleConfig.defaultWarningGroup ) == 'undefined' ) {
TwinkleConfig.defaultWarningGroup = 1;
}
/**
TwinkleConfig.showSharedIPNotice may take arguments:
true: to show shared ip notice if an IP address
false: to not print the notice
*/
if( typeof( TwinkleConfig.showSharedIPNotice ) == 'undefined' ) {
TwinkleConfig.showSharedIPNotice = false;
}
/**
TwinkleConfig.watchWarnings (boolean)
if true, watch the page which has been dispatched an warning or notice, if false, default applies
*/
if( typeof( TwinkleConfig.watchWarnings ) == 'undefined' ) {
TwinkleConfig.watchWarnings = true;
}
/**
TwinkleConfig.blankTalkpageOnIndefBlock (boolean)
if true, blank the talk page when issuing an indef block notice (per [[WP:UW#Indefinitely blocked users]])
*/
if( typeof( TwinkleConfig.blankTalkpageOnIndefBlock ) == 'undefined' ) {
TwinkleConfig.blankTalkpageOnIndefBlock = false;
}
/**
TwinkleConfig.summaryAd (string)
If ad should be added or not to summary, default [[WP:TWINKLE|TWINKLE]]
*/
if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {
TwinkleConfig.summaryAd = "([[WP:TW|TW]])";
}
function twinklewarn() {
if( wgNamespaceNumber == 3 ) {
twAddPortletLink( (twinkleConfigExists ? "javascript:twinklewarn.callback()" : 'javascript:alert("Your account is too new to use Twinkle.");'), "Warn", "tw-warn", "Warn/Notify user", "");
}
}
window.TwinkleInit = (window.TwinkleInit || []).concat( twinklewarn); //schedule initializer
twinklewarn.callback = function twinklewarnCallback() {
var Window = new SimpleWindow( 600, 400 );
Window.setTitle( "Warn/Notify user" );
var form = new QuickForm( twinklewarn.callback.evaluate );
var main_select = form.append( {
type:'field',
label:'Choose type of warning/notice to issue',
tooltip:'First choose a main warning group, then the specific warning to issue.'
} );
var main_group = main_select.append( {
type:'select',
name:'main_group',
event:twinklewarn.callback.change_category
} );
main_group.append( { type:'option', label:'General Note (1)', value:'level1', selected: ( TwinkleConfig.defaultWarningGroup == 1 || TwinkleConfig.defaultWarningGroup < 1 || ( userIsInGroup( 'sysop' ) ? TwinkleConfig.defaultWarningGroup > 8 : TwinkleConfig.defaultWarningGroup > 7 ) ) } );
main_group.append( { type:'option', label:'Caution (2)', value:'level2', selected: ( TwinkleConfig.defaultWarningGroup == 2 ) } );
main_group.append( { type:'option', label:'Warning (3)', value:'level3', selected: ( TwinkleConfig.defaultWarningGroup == 3 ) } );
main_group.append( { type:'option', label:'Final warning (4)', value:'level4', selected: ( TwinkleConfig.defaultWarningGroup == 4 ) } );
main_group.append( { type:'option', label:'Only warning (4im)', value:'level4im', selected: ( TwinkleConfig.defaultWarningGroup == 5 ) } );
main_group.append( { type:'option', label:'Single issue notices', value:'singlenotice', selected: ( TwinkleConfig.defaultWarningGroup == 6 ) } );
main_group.append( { type:'option', label:'Single issue warnings', value:'singlewarn', selected: ( TwinkleConfig.defaultWarningGroup == 7 ) } );
main_group.append( { type:'option', label:'Welcome messages', value:'welcome', selected: ( TwinkleConfig.defaultWarningGroup == 9 ) } );
if( userIsInGroup( 'sysop' ) ) {
main_group.append( { type:'option', label:'Blocking', value:'block', selected: ( TwinkleConfig.defaultWarningGroup == 8 ) } );
}
main_select.append( { type:'select', name:'sub_group', event:twinklewarn.callback.change_subcategory } ); //Will be empty to begin with.
form.append( {
type:'input',
name:'article',
label:'Linked article',
value:( QueryString.exists( 'vanarticle' ) ? QueryString.get( 'vanarticle' ) : '' ),
tooltip:'An article might be linked to the notice, either it was a revert to said article that dispatched this notice. Leave empty for no article to be linked'
} );
var more = form.append( { type:'field', label:'Fill in an optional reason and hit \"Submit\"' } );
more.append( { type:'textarea', label:'More:', name:'reason', tooltip:'Perhaps a reason, or that a more detailed notice must be appended' } );
more.append( { type:'submit', label:'Submit' } );
var result = form.render();
Window.setContent( result );
Window.display();
result.main_group.root = result;
// We must init the first choice (General Note);
var evt = document.createEvent( "Event" );
evt.initEvent( 'change', true, true );
result.main_group.dispatchEvent( evt );
}
// This is all the messages that might be dispatched by the code
twinklewarn.messages = {
level1: {
"uw-vandalism1": {
label:"Vandalism",
summary:"General note: Vandalism"
},
"uw-test1": {
label:"Editing tests",
summary:"General note: Editing tests"
},
"uw-delete1": {
label:"Page blanking, removal of content or templates",
summary:"General note: Page blanking, removal of content or templates"
},
"uw-create1": {
label:"Creating inappropriate pages",
summary:"General note: Creating inappropriate pages"
},
"uw-spam1": {
label:"Adding spam links",
summary:"General note: Adding spam links"
},
"uw-advert1": {
label:"Using Wikipedia for advertising or promotion",
summary:"General note: Using Wikipedia for advertising or promotion"
},
"uw-npov1": {
label:"Not writing from a neutral point of view",
summary:"General note: Not adhering to neutral point of view"
},
"uw-mos1": {
label:"Manual of style",
summary:"General note: Formatting, date, language, etc (Manual of style)"
},
"uw-npa1": {
label:"Personal attack directed at a specific editor",
summary:"General note: Personal attack directed at a specific editor"
},
"uw-agf1": {
label:"Not assuming good faith",
summary:"General note: Not assuming good faith"
},
"uw-copyright1": {
label:"Copyright violation",
summary:"General note: Violating copyright"
},
"uw-error1": {
label:"Adding incorrect information",
summary:"General note: Adding incorrect information"
}
},
level2: {
"uw-vandalism2": {
label:"Vandalism",
summary:"Caution: Vandalism"
},
"uw-test2": {
label:"Editing tests",
summary:"Caution: Editing tests"
},
"uw-delete2": {
label:"Page blanking, removal of content or templates",
summary:"Caution: Page blanking, removal of content or templates"
},
"uw-create2": {
label:"Creating inappropriate pages",
summary:"Caution: Creating inappropriate pages"
},
"uw-advert2": {
label:"Using Wikipedia for advertising or promotion",
summary:"Caution: Using Wikipedia for advertising or promotion"
},
"uw-npov2": {
label:"Not adhering to neutral point of view",
summary:"Caution: Not adhering to neutral point of view"
},
"uw-mos2": {
label:"Manual of style",
summary:"Caution: Formatting, date, language, etc (Manual of style)"
},
"uw-npa2": {
label:"Personal attack directed at a specific editor",
summary:"Caution: Personal attack directed at a specific editor"
},
"uw-agf2": {
label:"Not assuming good faith",
summary:"Caution: Not assuming good faith"
},
"uw-copyright2": {
label:"Copyright violation",
summary:"Caution: Violating copyright"
},
"uw-error2": {
label:"Adding incorrect information",
summary:"Caution: Adding incorrect information"
}
},
level3: {
"uw-vandalism3": {
label:"Vandalism",
summary:"Warning: Vandalism"
},
"uw-test3": {
label:"Editing tests",
summary:"Warning: Editing tests"
},
"uw-delete3": {
label:"Page blanking, removal of content or templates",
summary:"Warning: Page blanking, removal of content or templates"
},
"uw-create3": {
label:"Creating inappropriate pages",
summary:"Warning: Creating inappropriate pages"
},
"uw-npov3": {
label:"Not adhering to neutral point of view",
summary:"Warning: Not adhering to neutral point of view"
},
"uw-mos3": {
label:"Manual of style",
summary:"Warning: Formatting, date, language, etc (Manual of style)"
},
"uw-npa3": {
label:"Personal attack directed at a specific editor",
summary:"Warning: Personal attack directed at a specific editor"
},
"uw-agf3": {
label:"Not assuming good faith",
summary:"Warning: Not assuming good faith"
}
},
level4: {
"uw-vandalism4": {
label:"Vandalism",
summary:"Final warning: Vandalism"
},
"uw-test4": {
label:"Editing tests",
summary:"Final warning: Editing tests"
},
"uw-create4": {
label:"Creating inappropriate pages",
summary:"Final warning: Creating inappropriate pages"
},
"uw-npov4": {
label:"Not adhering to neutral point of view",
summary:"Final warning: Not adhering to neutral point of view"
},
"uw-mos4": {
label:"Manual of style",
summary:"Final warning: Formatting, date, language, etc (Manual of style)"
},
"uw-npa4": {
label:"Personal attack directed at a specific editor",
summary:"Final warning: Personal attack directed at a specific editor"
}
},
level4im: {
"uw-vandalism4im": {
label:"Vandalism",
summary:"Only warning: Vandalism"
},
"uw-test4im": {
label:"Editing tests",
summary:"Only warning: Editing tests"
},
"uw-npov4im": {
label:"Not adhering to neutral point of view",
summary:"Only warning: Not adhering to neutral point of view"
},
"uw-mos4im": {
label:"Manual of style",
summary:"Only warning: Formatting, date, language, etc (Manual of style)"
},
"uw-npa4im": {
label:"Personal attack directed at a specific editor",
summary:"Only warning: Personal attack directed at a specific editor"
}
},
welcome: {
"anon": {
label:"Welcomes and suggests getting username",
summary:"Welcome to the Simple English Wikipedia"
},
"welcome": {
label:"Plain text welcome",
summary:"Welcome to the Simple English Wikipedia"
},
"welcome2": {
label:"Welcome with graphic and orange background",
summary:"Welcome to the Simple English Wikipedia"
},
"welcomeg": {
label:"Welcome with blue background",
summary:"Welcome to the Simple English Wikipedia"
},
"welcomeq": {
label:"Like welcomeg but shorter",
summary:"Welcome to the Simple English Wikipedia"
},
"welcome-en": {
label:"Welcome from English Wikipedia",
summary:"Welcome to the Simple English Wikipedia"
},
"welcome-iw": {
label:"Welcome from another Wikipedia",
summary:"Welcome to the Simple English Wikipedia"
},
"welcomevandal": {
label:"Welcome with information about vandalism",
summary:"Welcome to the Simple English Wikipedia"
}
},
singlenotice: {
"uw-badcat": {
label:"Adding incorrect categories",
summary:"Notice: Adding incorrect categories"
},
"uw-bite": {
label:"\"Biting\" newcomers",
summary:"Notice: \"Biting\" newcomers"
},
"uw-emptycat": {
label:"Category created does not contain enough pages",
summary:"Notice: Creating empty categories"
},
"uw-encopypaste": {
label:"Direct copying of article from English Wikipedia",
summary:"Notice: Direct copying of article from English Wikipedia"
},
"uw-lang": {
label:"Changing between types of English without a good reason",
summary:"Notice: Unnecessarily changing between British and American English"
},
"uw-newarticle": {
label:"Tips on creating new articles",
summary:"Notice: How to make your articles better"
},
"uw-otherweb": {
label:"Use \"Other websites\", not \"External links\"",
summary:"Notice: Use \"Other websites\", not \"External links\""
},
"uw-selfrevert": {
label:"Undoing recent test",
summary:"Notice: Undoing recent test"
},
"uw-simple": {
label:"Not making changes in simple English",
summary:"Notice: Not making changes in simple English"
},
"uw-spellcheck": {
label:"Review spelling, etc.",
summary:"Notice: Review spelling, etc."
},
"uw-subst": {
label:"Remember to subst: templates",
summary:"Notice: Remember to subst: templates"
},
"uw-tilde": {
label:"Not signing posts",
summary:"Notice: Not signing posts"
},
"uw-upload": {
label:"Image uploads not allowed in Simple English Wikipedia",
summary:"Notice: Image uploads not allowed in Simple English Wikipedia"
}
},
singlewarn: {
"uw-attack": {
label:"Creating attack pages",
summary:"Warning: Creating attack pages"
},
"uw-disruption": {
label:"Project disruption",
summary:"Warning: Project disruption"
},
"uw-qd": {
label:"Removing quick deletion templates from articles",
summary:"Warning: Removing quick deletion templates from articles"
},
"uw-userpage": {
label:"Userpage or subpage is against policy",
summary:"Warning: Userpage or subpage is against policy"
},
"cyberbully warning": {
label:"Cyberbullying",
summary:"Warning: Cyberbullying"
}
},
block: {
"uw-block1": {
'label':"Block level 1",
'summary':"You have been temporarily blocked"
},
"uw-block2": {
'label':"Block level 2",
'summary':"You have been blocked"
},
"uw-block3": {
'label':"Block level 3",
'summary':"You have been indefinitely blocked"
},
"UsernameBlocked": {
'label':"Username block",
'summary':"You have been blocked for violation of the [[WP:U|username policy]]"
},
"UsernameHardBlocked": {
'label':"Username hard block",
'summary':"You have been blocked for a blatant violation of the [[WP:U|username policy]]"
},
"openproxy": {
'label':"Open proxy",
'summary':"You have been blocked because this IP is an [[open proxy]]"
}
}
};
twinklewarn.prev_block_timer = null;
twinklewarn.prev_article = null;
twinklewarn.prev_reason = null;
twinklewarn.callback.change_category = function twinklewarnCallbackChangeCategory(e) {
var value = e.target.value;
var sub_group = e.target.root.sub_group;
var messages = twinklewarn.messages[ value ];
sub_group.main_group = value;
var old_subvalue = sub_group.value;
if( old_subvalue ) {
old_subvalue = old_subvalue.replace(/\d*(im)?$/, '' );
var old_subvalue_re = new RegExp( RegExp.escape( old_subvalue ) + "(\\d*(?:im)?)$" );
}
while( sub_group.hasChildNodes() ){
sub_group.removeChild( sub_group.firstChild );
}
for( var i in messages ) {
var selected = false;
if( old_subvalue && old_subvalue_re.test( i ) ) {
selected = true;
}
var elem = new QuickForm.element( { type:'option', label:"[" + i + "]: " + messages[i].label, value:i, selected: selected } );
sub_group.appendChild( elem.render() );
}
if( value == 'block' ) {
var more = new QuickForm.element( {
type: 'input',
name: 'block_timer',
label: 'Period of blocking: ',
tooltip: 'The period the blocking is due for, for example 24 hours, 2 weeks, indefinite etc...'
} );
e.target.root.insertBefore( more.render(), e.target.root.lastChild );
if(!(twinklewarn.prev_block_timer === null)) {
e.target.root.block_timer.value = twinklewarn.prev_block_timer;
twinklewarn.prev_block_timer = null;
}
if(twinklewarn.prev_article === null) {
twinklewarn.prev_article = e.target.root.article.value;
}
e.target.root.article.disabled = true;
e.target.root.article.value = '';
} else if( e.target.root.block_timer ) {
if(!e.target.root.block_timer.disabled && twinklewarn.prev_block_timer === null) {
twinklewarn.prev_block_timer = e.target.root.block_timer.value;
}
e.target.root.removeChild( e.target.root.block_timer.parentNode );
if(e.target.root.article.disabled && !(twinklewarn.prev_article === null)) {
e.target.root.article.value = twinklewarn.prev_article;
twinklewarn.prev_article = null;
}
e.target.root.article.disabled = false;
if(e.target.root.reason.disabled && !(twinklewarn.prev_reason === null)) {
e.target.root.reason.value = twinklewarn.prev_reason;
twinklewarn.prev_reason = null;
}
e.target.root.reason.disabled = false;
}
}
twinklewarn.callback.change_subcategory = function twinklewarnCallbackChangeSubcategory(e) {
var main_group = e.target.main_group;
var value = e.target.value;
if( main_group == 'singlewarn' ) {
if( value == 'uw-username' ) {
if(twinklewarn.prev_article === null) {
twinklewarn.prev_article = e.target.form.article.value;
}
e.target.form.article.disabled = true;
e.target.form.article.value = '';
} else if( e.target.form.article.disabled ) {
if(!(twinklewarn.prev_article === null)) {
e.target.form.article.value = twinklewarn.prev_article;
twinklewarn.prev_article = null;
}
e.target.form.article.disabled = false;
}
} else if( main_group == 'block' ) {
if( value == 'uw-block3' || value == 'UsernameBlocked' || value == 'UsernameHardBlocked' || value == 'openproxy') {
if(twinklewarn.prev_block_timer === null) {
twinklewarn.prev_block_timer = e.target.form.block_timer.value;
}
e.target.form.block_timer.disabled = true;
e.target.form.block_timer.value = 'indef';
} else if( e.target.form.block_timer.disabled ) {
if(!(twinklewarn.prev_block_timer === null)) {
e.target.form.block_timer.value = twinklewarn.prev_block_timer;
twinklewarn.prev_block_timer = null;
}
e.target.form.block_timer.disabled = false;
}
if( value == 'uw-3block' ) {
if(!(twinklewarn.prev_article === null)) {
e.target.form.article.value = twinklewarn.prev_article;
twinklewarn.prev_article = null;
}
e.target.form.article.disabled = false;
} else if( !e.target.form.article.disabled ) {
if(twinklewarn.prev_article === null) {
twinklewarn.prev_article = e.target.form.article.value;
}
e.target.form.article.disabled = true;
e.target.form.article.value = '';
}
if( value == 'uw-block3') {
if(!(twinklewarn.prev_reason === null)) {
e.target.form.reason.value = twinklewarn.prev_reason;
twinklewarn.prev_reason = null;
}
e.target.form.reason.disabled = false;
} else if( !e.target.form.reason.disabled ) {
if(twinklewarn.prev_reason === null) {
twinklewarn.prev_reason = e.target.form.reason.value;
}
e.target.form.reason.disabled = true;
e.target.form.reason.value = '';
}
}
}
twinklewarn.callbacks = {
main: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
var history_re = /\<\!\-\-\ Template\:(uw\-.*?)\ \-\-\>.*?(\d{1,2}:\d{1,2}, \d{1,2} \w+ \d{4}) \(UTC\)/g;
var history = {};
var latest = { date:new Date( 0 ), type:'' };
var current;
while( ( current = history_re.exec( text ) ) != undefined ) {
var current_date = new Date( current[2] + ' UTC' );
if( !( current[1] in history ) || history[ current[1] ] < current_date ) {
history[ current[1] ] = current_date;
}
if( current_date > latest.date ) {
latest.date = current_date;
latest.type = current[1];
}
}
var date = new Date();
if( self.params.sub_group in history ) {
var temp_time = new Date( history[ self.params.sub_group ] );
temp_time.setUTCHours( temp_time.getUTCHours() + 24 );
if( temp_time > date ) {
Status.info( 'Info', "an identical " + self.params.sub_group + " has been issued in the last 24 hours" );
if( !confirm( "Would you still like to add a warning/notice?" ) ) {
self.statelem.info( 'aborted per user request' );
return;
}
}
}
latest.date.setUTCMinutes( latest.date.getUTCMinutes() + 1 ); // after long debate, one minute is max
if( latest.date > date ) {
Status.info('Info', "a " + latest.type + " has been issued in the last minute" );
if( !confirm( "Would you still like to add a warning/notice?" ) ) {
self.statelem.info( 'aborted per user request' );
return;
}
}
var mainheaderRe = /==+\\s*Warnings\\s*==+/;
var headerRe = new RegExp( "^==+\\s*(?:" + date.getUTCMonthName() + '|' + date.getUTCMonthNameAbbrev() + ")\\s+" + date.getUTCFullYear() + "\\s*==+", 'm' );
if( text.length > 0 ) {
text += "\n";
}
if( self.params.main_group == 'block' ) {
var article = '', reason = '', time = null;
if( TwinkleConfig.blankTalkpageOnIndefBlock && ( /indef|\*|max/.exec( self.params.block_timer ) || self.params.sub_group == 'uw-block3' || self.params.sub_group == 'uw-soablock' || self.params.sub_group == 'uw-voablock' || self.params.sub_group == 'uw-ublock' || self.params.sub_group == 'uw-uhblock' || self.params.sub_group == 'uw-softerblock' || self.params.sub_group == 'uw-causeblock' || self.params.sub_group == 'uw-botublock' || self.params.sub_group == 'uw-vaublock' || self.params.sub_group == 'uw-spamublock' || self.params.sub_group == 'uw-lblock' || self.params.sub_group == 'uw-toablock' ) ) {
Status.info( 'Info', 'Blanking talk page per preferences and createing a new level 2 heading for the date' );
text = "== " + date.getUTCMonthName() + " " + date.getUTCFullYear() + " ==\n";
} else if( !headerRe.exec( text ) ) {
Status.info( 'Info', 'Will create a new level 2 heading for the date, as none was found for this month' );
text += "== " + date.getUTCMonthName() + " " + date.getUTCFullYear() + " ==\n";
}
if( ( self.params.sub_group == 'uw-ewblock' || self.params.sub_group == 'uw-3block' ) && self.params.article ) {
article = '|1=' + self.params.article;
}
if( /te?mp|^\s*$|min/.exec( self.params.block_timer ) || self.params.sub_group == 'uw-block3' ) {
time = '';
} else if( /indef|\*|max/.exec( self.params.block_timer ) ) {
time = '|indef=yes';
} else {
time = '|time=' + self.params.block_timer;
}
if( self.params.sub_group == 'schoolblock' || self.params.sub_group == 'anonblock' ) {
text += "\{\{" + self.params.sub_group + (self.params.reason ? '|1=' + self.params.reason : '' ) + "|sig=\~\~\~\~\}\}";
} else {
text += "\{\{subst:" + self.params.sub_group + article + time + (self.params.reason ? '|reason=' + self.params.reason : '' ) + "|sig=true|subst=subst:\}\}";
}
} else {
if( !headerRe.exec( text ) ) {
Status.info( 'Info', 'Will create a new level 2 heading for the date, as none was found for this month' );
text += "== " + date.getUTCMonthName() + " " + date.getUTCFullYear() + " ==\n";
}
if( self.params.sub_group == 'uw-username' ) {
// ugly hack
text += "\{\{subst:" + self.params.sub_group + ( self.params.reason ? '|1=' + self.params.reason : '' ) + "|subst=subst:\}\} \~\~\~\~";
} else if( self.params.sub_group == 'welcomeg'||self.params.sub_group == 'welcomeq' ) {
text += "\{\{subst:" + self.params.sub_group + ( self.params.article ? '|1=' + self.params.article : '' ) + "|subst=subst:\}\}" + (self.params.reason ? " ''" + self.params.reason + "'' ": ' ' );
} else {
text += "\{\{subst:" + self.params.sub_group + ( self.params.article ? '|1=' + self.params.article : '' ) + "|subst=subst:\}\}" + (self.params.reason ? " ''" + self.params.reason + "'' ": ' ' ) + "\~\~\~\~";
}
}
if ( TwinkleConfig.showSharedIPNotice && isIPAddress( wgTitle ) ) {
Status.info( 'Info', 'Adding a shared ip notice' );
switch( QueryString.get( 'type' ) ) {
case 'vand':
text += "\n:''If this is a shared [[IP address]], and you didn't make any [[Wikipedia:vandalism|bad]] changes, you should think about [[Wikipedia:Why create an account?|making an account]] for yourself so you do not get future warnings meant for other people.'' ";
break;
default:
text += "\n:''If this is a shared [[IP address]], and you didn't make the change, you should think about [[Wikipedia:Why create an account?|making an account]] for yourself so you can do not get future messages meant for other people.'' ";
break;
}
}
var postData = {
'wpMinoredit': (typeof form.wpMinoredit == "undefined") ? undefined : (form.wpMinoredit.checked ? 1 : undefined),
'wpWatchthis': (form.wpWatchthis.checked || TwinkleConfig.watchWarnings) ? 1 : undefined,
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': '',
'wpSummary': twinklewarn.messages[self.params.main_group][self.params.sub_group].summary + ( self.params.article ? ' on [[' + self.params.article + ']]' : '' ) + '.' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
}
twinklewarn.callback.evaluate = function twinklewarnCallbackEvaluate(e) {
// First, check to make sure a reason was filled in if uw-username was selected
if(e.target.sub_group.value == 'uw-username' && e.target.reason.value.trim() == '') {
alert("You must supply a reason for the \{\{uw-username}} template");
return;
}
// Then, grab all the values provided by the form
var params = {
reason: e.target.reason.value,
main_group: e.target.main_group.value,
sub_group: e.target.sub_group.value,
article: e.target.article.value.replace( /^(Image|Category):/i, ':$1:' ),
block_timer: e.target.block_timer ? e.target.block_timer.value : null
}
Status.init( e.target );
var query = {
'title': wgPageName,
'action': 'submit'
};
Wikipedia.actionCompleted.redirect = wgPageName;
Wikipedia.actionCompleted.notice = "Warning complete, reloading talk page in a few seconds";
var wikipedia_wiki = new Wikipedia.wiki( 'User talk page modification', query, twinklewarn.callbacks.main );
wikipedia_wiki.params = params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
}