User:Alison22/twinklewarn.js

// 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 = true;

}

/**

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 TWINKLE

*/

if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {

TwinkleConfig.summaryAd = " using TW";

}

function twinklewarn() {

if( wgNamespaceNumber == 3 ) {

mw.util.addPortletLink( 'p-cactions', (twinkleConfigExists ? "javascript:twinklewarn.callback()" : 'javascript:alert("Your account is too new to use Twinkle.");'), "Warn", "tw-warn", "Warn/Notify user", "");

}

}

$(twinklewarn);

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 ) } );

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:readCookie("storedPageTitleFromRollback"),

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",

summary:"General note: Page blanking, removal of content"

},

"uw-redirect1": {

label:"Creating malicious redirects",

summary:"General note: Creating malicious redirects"

},

"uw-tdel1": {

label:"Removal of maintenance templates",

summary:"General note: Removal of maintenance templates"

},

"uw-joke1": {

label:"Using improper humor",

summary:"General note: Using improper humor"

},

"uw-create1": {

label:"Creating inappropriate pages",

summary:"General note: Creating inappropriate pages"

},

"uw-upload1": {

label:"Uploading inappropriate images",

summary:"General note: Uploading inappropriate images"

},

"uw-image1": {

label:"Image-related vandalism",

summary:"General note: Image-related vandalism"

},

"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 adhering to neutral point of view",

summary:"General note: Not adhering to neutral point of view"

},

"uw-unsourced1": {

label:"Addition of unsourced or improperly cited material",

summary:"General note: Addition of unsourced or improperly cited material"

},

"uw-error1": {

label:"Introducing deliberate factual errors",

summary:"General note: Introducing factual errors"

},

"uw-nor1": {

label:"Adding original research, including unpublished syntheses of sourced material",

summary:"General note: Adding original research, including unpublished syntheses of sourced material"

},

"uw-biog1": {

label:"Adding unreferenced controversial information about living persons",

summary:"General note: Adding unreferenced controversial information about living persons"

},

"uw-defam1": {

label:"Defamation not specifically directed",

summary:"General note: Defamation not specifically directed"

},

"uw-uncen1": {

label:"Censorship of material",

summary:"General note: Censorship of material"

},

"uw-mos1": {

label:"Manual of style",

summary:"General note: Formatting, date, language, etc (Manual of style)"

},

"uw-move1": {

label:"Page moves",

summary:"General note: Page moves"

},

"uw-chat1": {

label:"Using talk page as forum",

summary:"General note: Using talk page as forum"

},

"uw-tpv1": {

label:"Refactoring others' talk page comments",

summary:"General note: Refactoring others' talk page comments"

},

"uw-afd1": {

label:"Removing \{\{afd\}\} templates",

summary:"General note: Removing \{\{afd\}\} templates"

},

"uw-speedy1": {

label:"Removing \{\{speedy deletion\}\} templates",

summary:"General note: Removing \{\{speedy deletion\}\} templates"

},

"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-own1": {

label:"Ownership of articles",

summary:"General note: Ownership of articles"

},

"uw-tempabuse1": {

label:"Improper use of warning or blocking template",

summary:"Warning: Improper use of warning or blocking template"

}

},

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",

summary:"Caution: Page blanking, removal of content"

},

"uw-redirect2": {

label:"Creating malicious redirects",

summary:"Caution: Creating malicious redirects"

},

"uw-tdel2": {

label:"Removal of maintenance templates",

summary:"Caution: Removal of maintenance templates"

},

"uw-joke2": {

label:"Using improper humor",

summary:"Caution: Using improper humor"

},

"uw-create2": {

label:"Creating inappropriate pages",

summary:"Caution: Creating inappropriate pages"

},

"uw-upload2": {

label:"Uploading inappropriate images",

summary:"Caution: Uploading inappropriate images"

},

"uw-image2": {

label:"Image-related vandalism",

summary:"Caution: Image-related vandalism"

},

"uw-spam2": {

label:"Adding spam links",

summary:"Caution: Adding spam links"

},

"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-unsourced2": {

label:"Addition of unsourced or improperly cited material",

summary:"Caution: Addition of unsourced or improperly cited material"

},

"uw-error2": {

label:"Introducing deliberate factual errors",

summary:"Caution: Introducing factual errors"

},

"uw-nor2": {

label:"Adding original research, including unpublished syntheses of sourced material",

summary:"Caution: Adding original research, including unpublished syntheses of sourced material"

},

"uw-biog2": {

label:"Adding unreferenced controversial information about living persons",

summary:"Caution: Adding unreferenced controversial information about living persons"

},

"uw-defam2": {

label:"Defamation not specifically directed",

summary:"Caution: Defamation not specifically directed"

},

"uw-uncen2": {

label:"Censorship of material",

summary:"Caution: Censorship of material"

},

"uw-mos2": {

label:"Manual of style",

summary:"Caution: Formatting, date, language, etc (Manual of style)"

},

"uw-move2": {

label:"Page moves",

summary:"Caution: Page moves"

},

"uw-chat2": {

label:"Using talk page as forum",

summary:"Caution: Using talk page as forum"

},

"uw-tpv2": {

label:"Refactoring others' talk page comments",

summary:"Caution: Refactoring others' talk page comments"

},

"uw-afd2": {

label:"Removing \{\{afd\}\} templates",

summary:"Caution: Removing \{\{afd\}\} templates"

},

"uw-speedy2": {

label:"Removing \{\{speedy deletion\}\} templates",

summary:"Caution: Removing \{\{speedy deletion\}\} templates"

},

"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-own2": {

label:"Ownership of articles",

summary:"Caution: Ownership of articles"

},

"uw-tempabuse2": {

label:"Improper use of warning or blocking template",

summary:"Warning: Improper use of warning or blocking template"

}

},

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",

summary:"Warning: Page blanking, removal of content"

},

"uw-redirect3": {

label:"Creating malicious redirects",

summary:"Warning: Creating malicious redirects"

},

"uw-tdel3": {

label:"Removal of maintenance templates",

summary:"Warning: Removal of maintenance templates"

},

"uw-joke3": {

label:"Using improper humor",

summary:"Warning: Using improper humor"

},

"uw-create3": {

label:"Creating inappropriate pages",

summary:"Warning: Creating inappropriate pages"

},

"uw-upload3": {

label:"Uploading inappropriate images",

summary:"Warning: Uploading inappropriate images"

},

"uw-image3": {

label:"Image-related vandalism",

summary:"Warning: Image-related vandalism"

},

"uw-spam3": {

label:"Adding spam links",

summary:"Warning: Adding spam links"

},

"uw-advert3": {

label:"Using Wikipedia for advertising or promotion",

summary:"Warning: Using Wikipedia for advertising or promotion"

},

"uw-npov3": {

label:"Not adhering to neutral point of view",

summary:"Warning: Not adhering to neutral point of view"

},

"uw-unsourced3": {

label:"Addition of unsourced or improperly cited material",

summary:"Warning: Addition of unsourced or improperly cited material"

},

"uw-error3": {

label:"Introducing deliberate factual errors",

summary:"Warning: Introducing deliberate factual errors"

},

"uw-nor3": {

label:"Adding original research, including unpublished syntheses of sourced material",

summary:"Warning: Adding original research, including unpublished syntheses of sourced material"

},

"uw-biog3": {

label:"Adding unreferenced controversial or defamatory information about living persons",

summary:"Warning: Adding unreferenced controversial information about living persons"

},

"uw-defam3": {

label:"Defamation not specifically directed",

summary:"Warning: Defamation not specifically directed"

},

"uw-uncen3": {

label:"Censorship of material",

summary:"Warning: Censorship of material"

},

"uw-mos3": {

label:"Manual of style",

summary:"Warning: Formatting, date, language, etc (Manual of style)"

},

"uw-move3": {

label:"Page moves",

summary:"Warning: Page moves"

},

"uw-chat3": {

label:"Using talk page as forum",

summary:"Warning: Using talk page as forum"

},

"uw-tpv3": {

label:"Refactoring others' talk page comments",

summary:"Warning: Refactoring others' talk page comments"

},

"uw-afd3": {

label:"Removing \{\{afd\}\} templates",

summary:"Warning: Removing \{\{afd\}\} templates"

},

"uw-speedy3": {

label:"Removing \{\{speedy deletion\}\} templates",

summary:"Warning: Removing \{\{speedy deletion\}\} templates"

},

"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"

},

"uw-own3": {

label:"Ownership of articles",

summary:"Warning: Ownership of articles"

}

},

level4: {

"uw-vandalism4": {

label:"Vandalism",

summary:"Final warning: Vandalism"

},

"uw-test4": {

label:"Editing tests",

summary:"Final warning: Editing tests"

},

"uw-delete4": {

label:"Page blanking, removal of content",

summary:"Final warning: Page blanking, removal of content"

},

"uw-redirect4": {

label:"Creating malicious redirects",

summary:"Final warning: Creating malicious redirects"

},

"uw-tdel4": {

label:"Removal of maintenance templates",

summary:"Final warning: Removal of maintenance templates"

},

"uw-joke4": {

label:"Using improper humor",

summary:"Final warning: Using improper humor"

},

"uw-create4": {

label:"Creating inappropriate pages",

summary:"Final warning: Creating inappropriate pages"

},

"uw-upload4": {

label:"Uploading inappropriate images",

summary:"Final warning: Uploading inappropriate images"

},

"uw-image4": {

label:"Image-related vandalism",

summary:"Final warning: Image-related vandalism"

},

"uw-spam4": {

label:"Adding spam links",

summary:"Final warning: Adding spam links"

},

"uw-advert4": {

label:"Using Wikipedia for advertising or promotion",

summary:"Final warning: Using Wikipedia for advertising or promotion"

},

"uw-npov4": {

label:"Not adhering to neutral point of view",

summary:"Final warning: Not adhering to neutral point of view"

},

"uw-unsourced4": {

label:"Addition of unsourced or improperly cited material",

summary:"Final warning: Addition of unsourced or improperly cited material"

},

"uw-error4": {

label:"Introducing deliberate factual errors",

summary:"Final Warning: Introducing deliberate factual errors"

},

"uw-nor4": {

label:"Adding original research, including unpublished syntheses of sourced material",

summary:"Final Warning: Adding original research, including unpublished syntheses of sourced material"

},

"uw-biog4": {

label:"Adding unreferenced defamatory information about living persons",

summary:"Final warning: Adding unreferenced controversial information about living persons"

},

"uw-defam4": {

label:"Defamation not specifically directed",

summary:"Final warning: Defamation not specifically directed"

},

"uw-uncen4": {

label:"Censorship of material",

summary:"Final warning: Censorship of material"

},

"uw-move4": {

label:"Page moves",

summary:"Final warning: Page moves"

},

"uw-chat4": {

label:"Using talk page as forum",

summary:"Final warning: Using talk page as forum"

},

"uw-afd4": {

label:"Removing \{\{afd\}\} templates",

summary:"Final warning: Removing \{\{afd\}\} templates"

},

"uw-speedy4": {

label:"Removing \{\{speedy deletion\}\} templates",

summary:"Final warning: Removing \{\{speedy deletion\}\} templates"

},

"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-delete4im": {

label:"Page blanking, removal of content",

summary:"Only warning: Page blanking, removal of content"

},

"uw-redirect4im": {

label:"Creating malicious redirects",

summary:"Only warning: Creating malicious redirects"

},

"uw-joke4im": {

label:"Using improper humor",

summary:"Only warning: Using improper humor"

},

"uw-create4im": {

label:"Creating inappropriate pages",

summary:"Only warning: Creating inappropriate pages"

},

"uw-upload4im": {

label:"Uploading inappropriate images",

summary:"Only warning: Uploading inappropriate images"

},

"uw-image4im": {

label:"Image-related vandalism",

summary:"Only warning: Image-related vandalism"

},

"uw-spam4im": {

label:"Adding spam links",

summary:"Only warning: Adding spam links"

},

"uw-biog4im": {

label:"Adding unreferenced defamatory information about living persons",

summary:"Only warning: Adding unreferenced controversial information about living persons"

},

"uw-defam4im": {

label:"Defamation not specifically directed",

summary:"Only warning: Defamation not specifically directed"

},

"uw-move4im": {

label:"Page moves",

summary:"Only warning: Page moves"

},

"uw-npa4im": {

label:"Personal attack directed at a specific editor",

summary:"Only warning: Personal attack directed at a specific editor"

}

},

singlenotice: {

"uw-2redirect": {

label:"Creating double redirects through bad page moves",

summary:"Notice: Creating double redirects through bad page moves"

},

"uw-aiv": {

label:"Bad AIV report",

summary:"Notice: Bad AIV report"

},

"uw-articlesig": {

label:"Adding signatures to article space",

summary:"Notice: Adding signatures to article space"

},

"uw-autobiography": {

label:"Creating autobiographies",

summary:"Notice: Creating autobiographies"

},

"uw-badcat": {

label:"Adding incorrect categories",

summary:"Notice: Adding incorrect categories"

},

"uw-bite": {

label:"\"Biting\" newcomers",

summary:"Notice: \"Biting\" newcomers"

},

"uw-c&pmove": {

label:"Cut and paste moves",

summary:"notice: Cut and paste moves"

},

"uw-coi": {

label:"Conflict of Interest",

summary:"Notice: Conflict of Interest"

},

"uw-date": {

label:"Unnecessarily changing date formats",

summary:"Notice: Unnecessarily changing date formats"

},

"uw-deadlink": {

label:"Removing proper sources containing dead links",

summary:"Notice: Removing proper sources containing dead links"

},

"uw-draftfirst": {

label:"Draft in userspace without the risk of speedy deletion",

summary:"Notice: Consider drafting your article in userspace"

},

"uw-editsummary": {

label:"Not using edit summary",

summary:"Notice: Not using edit summary"

},

"uw-english": {

label:"Not communicating in English",

summary:"Notice: Not communicating in English"

},

"uw-fuir": {

label:"Fair use image has been removed from your userpage",

summary:"Notice: A fair use image has been removed from your userpage"

},

"uw-hangon": {

label:"User forgets to place a hang-on reasoning to the talk page",

summary:"Notice: User forgets to place a hang-on reasoning to the talk page"

},

"uw-italicize": {

label:"Italicize books, films, albums, magazines, TV series, etc within articles",

summary:"Notice: Italicize books, films, albums, magazines, TV series, etc within articles"

},

"uw-lang": {

label:"Unnecessarily changing between British and American English",

summary:"Notice: Unnecessarily changing between British and American English"

},

"uw-linking": {

label:"For excessive addition of redlinks or repeated blue links",

summary:"Notice: For excessive addition of redlinks or repeated blue links"

},

"uw-minor": {

label:"Incorrect use of minor edits check box",

summary:"Notice: Incorrect use of minor edits check box"

},

"uw-nonfree": {

label:"Uploading replaceable non-free images",

summary:"Notice: Uploading replaceable non-free images"

},

"uw-notaiv": {

label:"Do not report complex abuse to AIV",

summary:"Notice: Do not report complex abuse to AIV"

},

"uw-notifysd": {

label:"Notify authors of speedy deletion tagged articles",

summary:"Notice: Please notify authors of articles tagged for speedy deletion"

},

"uw-notvote": {

label:"We use consensus, not voting",

summary:"Notice: We use consensus, not voting"

},

"uw-patrolled": {

label:"Mark newpages as patrolled when patrolling",

summary:"Notice: Mark newpages as patrolled when patrolling"

},

"uw-preview": {

label:"Use preview button to avoid mistakes",

summary:"Notice: Use preview button to avoid mistakes"

},

"uw-probation": {

label:"Article is on probation",

summary:"Notice: Article is on probation"

},

"uw-repost": {

label:"Recreating material previously deleted via XfD process",

summary:"Notice: Recreating previously deleted material"

},

"uw-samename": {

label:"Rename request impossible",

summary:"Notice: Rename request impossible"

},

"uw-sandbox": {

label:"Removal of the Sandbox header",

summary:"Notice: Removal of the Sandbox header"

},

"uw-selfrevert": {

label:"Reverting self tests",

summary:"Notice: Reverting self tests"

},

"uw-sofixit": {

label:"Be bold and fix things yourself",

summary:"Notice: You can be bold and fix things yourself"

},

"uw-socialnetwork": {

label:"Wikipedia is not a social network",

summary:"Notice: Wikipedia is not a social network"

},

"uw-subst": {

label:"Remember to subst: templates",

summary:"Notice: Remember to subst: templates"

},

"uw-talkinarticle": {

label:"Talk in article",

summary:"Notice: Talk in article"

},

"uw-tilde": {

label:"Not signing posts",

summary:"Notice: Not signing posts"

},

"uw-uaa": {

label:"Reporting of username to WP:UAA not accepted",

summary:"Notice: Reporting of username to WP:UAA not accepted"

},

"uw-warn": {

label:"Warning vandals",

summary:"Notice: Warning vandals"

}

},

singlewarn: {

"uw-3rr": {

label:"Potentially violating the three revert rule",

summary:"Warning: Potentially violating the three revert rule"

},

"uw-bv": {

label:"Blatant vandalism",

summary:"Warning: Blatant vandalism"

},

"uw-canvass": {

label:"Canvassing",

summary:"Warning: Canvassing"

},

"uw-copyright": {

label:"Copyright violation",

summary:"Warning: Copyright violation"

},

"uw-copyright-link": {

label:"Linking to copyrighted works violation",

summary:"Warning: Linking to copyrighted works violation"

},

"uw-hoax": {

label:"Creating hoaxes",

summary:"Warning: Creating hoaxes"

},

"uw-legal": {

label:"Making legal threats",

summary:"Warning: Making legal threats"

},

"uw-longterm": {

label:"Long term pattern of vandalism",

summary:"Warning: Long term pattern of vandalism"

},

"uw-multipleIPs": {

label:"Usage of multiple IPs",

summary:"Warning: Usage of multiple IPs"

},

"uw-pinfo": {

label:"Personal info",

summary:"Warning: Personal info"

},

"uw-upv": {

label:"Userpage vandalism",

summary:"Warning: Userpage vandalism"

},

"uw-wrongsummary": {

label:"Using inaccurate or inappropriate edit summaries",

summary:"Warning: Using inaccurate or inappropriate edit summaries"

},

"uw-username": {

label:"Username is against policy",

summary:"Warning: Username is against policy"

},

"uw-userpage": {

label:"Userpage or subpage is against policy",

summary:"Warning: Userpage or subpage is against policy"

}

},

block: {

"uw-block1": {

'label':"Block level 1 (first time)",

'summary':"You have been temporarily blocked from editing"

},

"uw-block2": {

'label':"Block level 2 (subsequent times)",

'summary':"You have been blocked from editing"

},

"uw-block3": {

'label':"Block level 3 (indefinite)",

'summary':"You have been indefinitely blocked from editing"

},

"uw-ablock": {

'label':"Anonymous block",

'summary':"Your IP address has been blocked from editing"

},

"uw-adblock": {

'label':"Advertising block",

'summary':"You have been blocked from editing for advertising or self-promotion"

},

"uw-sblock": {

'label':"Spam block",

'summary':"You have been blocked from editing for continuing to add spam links"

},

"uw-soablock": {

'label':"Spam/advertising-only account block",

'summary':"You have been indefinitely blocked from editing because your account is being used only for spam, advertising, or promotion"

},

"uw-vblock": {

'label':"Vandalism block",

'summary':"You have been blocked from editing for persistent vandalism"

},

"uw-voablock": {

'label':"Vandalism-only account block",

'summary':"You have been indefinitely blocked from editing because your account is being used only for vandalism"

},

"uw-npblock": {

'label':"Creating nonsense pages block",

'summary':"You have been blocked from editing for creating nonsense pages"

},

"uw-myblock": {

'label':"Social networking block",

'summary':"You have been blocked from editing for using user and/or article pages as a blog, web host, social networking site or forum"

},

"uw-dblock": {

'label':"Deletion/removal of content block",

'summary':"You have been blocked from editing for continued removal of material"

},

"uw-afblock": {

'label':"Abuse filter-related block",

'summary':"You have been blocked from editing for making disruptive edits that repeatedly triggered the edit filter"

},

"uw-ewblock": {

'label':"Edit warring block",

'summary':"You have been blocked from editing to prevent further disruption caused by your engagement in an edit war"

},

"uw-3block": {

'label':"Three-revert rule violation block",

'summary':"You have been blocked from editing for your disruption caused by edit warring and violation of the three-revert rule"

},

"uw-botblock": {

'label':"Unapproved bot block",

'summary':"You have been blocked from editing because it appears you are running a bot script without approval"

},

"uw-ublock": {

'label':"Username soft block",

'summary':"This account has been indefinitely blocked from editing because your username is a violation of our username policy"

},

"uw-uhblock": {

'label':"Username hard block",

'summary':"You have been indefinitely blocked from editing because your username is a blatant violation of our username policy"

},

"uw-softerblock": {

'label':"Promotional username soft block",

'summary':"You have been indefinitely blocked from editing because your username gives the impression that the account represents a group, organization or website in violation of our username policy"

},

"uw-botublock": {

'label':"Bot username soft block",

'summary':"You have been indefinitely blocked from editing because your username indicates this is a bot account, which is currently not approved"

},

"uw-vaublock": {

'label':"Vandalism-only account and username hard block",

'summary':"You have been indefinitely blocked from editing because your account is being used only for vandalism and your username is a blatant violation of our username policy"

},

"uw-spamublock": {

'label':"Spam/advertising-only account and promotional username hard block",

'summary':"You have been indefinitely blocked from editing because your account is being used only for spam, advertising, or promotion and your username is a violation of our username policy"

},

"uw-lblock": {

'label':"Legal threat block",

'summary':"You have been blocked from editing for making legal threats or taking legal action"

},

"uw-hblock": {

'label':"Harassment block",

'summary':"You have been blocked from editing for attempting to harass other users"

},

"uw-toablock": {

'label':"Trolling-only account block",

'summary':"You have been indefinitely blocked from editing because your account is being used only for trolling, disruption or harassment"

},

"anonblock": {

'label':"Anonymous (shared IP) block",

'summary':"This shared IP address has been blocked from editing"

},

"schoolblock": {

'label':"Anonymous (shared school IP) block",

'summary':"This educational institution IP address has been blocked from editing"

}

}

};

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 == 'uw-soablock' || value == 'uw-voablock' || value == 'uw-ublock' || value == 'uw-uhblock' || value == 'uw-softerblock' || value == 'uw-botublock' || value == 'uw-vaublock' || value == 'uw-spamublock' || value == 'uw-lblock' || value == 'uw-toablock' || value == 'anonblock' || value == 'schoolblock' ) {

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-ewblock' || 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-block1' || value == 'uw-block2' || value == 'uw-block3' || value == 'uw-ablock' || value == 'anonblock' || value == 'schoolblock' ) {

if(!(twinklewarn.prev_reason === null)) {

e.target.form.reason.value = twinklewarn.prev_reason;

twinlewarn.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 = '', 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-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' || 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-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' || self.params.sub_group == 'anonblock' || self.params.sub_group == 'schoolblock' ) {

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 {

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 unconstructive edits, consider creating an account for yourself so you can avoid further irrelevant warnings. ";

break;

default:

text += "\n:If this is a shared IP address, and you didn't make the edit, consider creating an account for yourself so you can avoid further irrelevant notices. ";

break;

}

}

var postData = {

'wpMinoredit': 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.get();

}