User:Alison22/twinklewarn.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
Documentation for this user script can be added at User:Alison22/twinklewarn. |
// 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 [[WP:TWINKLE|TWINKLE]]
*/
if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {
TwinkleConfig.summaryAd = " using [[WP:TW|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 [[Help:Userspace draft|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 [[WP:SOAP|advertising or self-promotion]]"
},
"uw-sblock": {
'label':"Spam block",
'summary':"You have been blocked from editing for continuing to add [[WP:SPAM|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 [[WP:SPAM|spam, advertising, or promotion]]"
},
"uw-vblock": {
'label':"Vandalism block",
'summary':"You have been blocked from editing for persistent [[WP:VAND|vandalism]]"
},
"uw-voablock": {
'label':"Vandalism-only account block",
'summary':"You have been indefinitely blocked from editing because your account is being [[WP:VOA|used only for vandalism]]"
},
"uw-npblock": {
'label':"Creating nonsense pages block",
'summary':"You have been blocked from editing for creating [[WP:PN|nonsense pages]]"
},
"uw-myblock": {
'label':"Social networking block",
'summary':"You have been blocked from editing for using user and/or article pages as a [[WP:NOTMYSPACE|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 [[WP:VAND|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 [[WP:EF|edit filter]]"
},
"uw-ewblock": {
'label':"Edit warring block",
'summary':"You have been blocked from editing to prevent further [[WP:DE|disruption]] caused by your engagement in an [[WP:EW|edit war]]"
},
"uw-3block": {
'label':"Three-revert rule violation block",
'summary':"You have been blocked from editing for your [[WP:DE|disruption]] caused by [[WP:EW|edit warring]] and violation of the [[WP:3RR|three-revert rule]]"
},
"uw-botblock": {
'label':"Unapproved bot block",
'summary':"You have been blocked from editing because it appears you are running a [[WP:BOT|bot script]] without [[WP:BRFA|approval]]"
},
"uw-ublock": {
'label':"Username soft block",
'summary':"This account has been indefinitely blocked from editing because your username is a violation of our [[WP:U|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 [[WP:U|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 [[WP:U|username policy]]"
},
"uw-botublock": {
'label':"Bot username soft block",
'summary':"You have been indefinitely blocked from editing because your [[WP:U|username]] indicates this is a [[WP:BOT|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 [[WP:VOA|used only for vandalism]] and your username is a blatant violation of our [[WP:U|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 [[WP:SPAM|spam, advertising, or promotion]] and your username is a violation of our [[WP:U|username policy]]"
},
"uw-lblock": {
'label':"Legal threat block",
'summary':"You have been blocked from editing for making [[WP:NLT|legal threats or taking legal action]]"
},
"uw-hblock": {
'label':"Harassment block",
'summary':"You have been blocked from editing for attempting to [[WP:HARASS|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 [[WP:DE|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 [[Wikipedia:vandalism|unconstructive]] edits, consider [[Wikipedia:Why create an account?|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 [[Wikipedia:Why create an account?|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();
}