Misplaced Pages

User:AzaToth/twinklewarn.js: Difference between revisions

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
< User:AzaToth Browse history interactively← Previous editNext edit →Content deleted Content added
Revision as of 15:13, 24 February 2011 view sourceTcncv (talk | contribs)Edit filter managers, Administrators18,014 edits Per request at WT:Twinkle/Bugs#TW-B-441 (new), copy updated script from User:UncleDouggie/twinklewarn.js to use API.← Previous edit Revision as of 15:30, 24 February 2011 view source Tcncv (talk | contribs)Edit filter managers, Administrators18,014 edits Insert extra newline between warningsNext edit →
Line 1,425: Line 1,425:


if( text.length > 0 ) { if( text.length > 0 ) {
text += "\n"; text += "\n\n";
} }



Revision as of 15:30, 24 February 2011

// 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 ])
 */
if( typeof( TwinkleConfig.blankTalkpageOnIndefBlock ) == 'undefined' ) {
    TwinkleConfig.blankTalkpageOnIndefBlock = false;
}

/**
 TwinkleConfig.summaryAd (string)
 If ad should be added or not to summary, default ]
 */
if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {
    TwinkleConfig.summaryAd = " using ]";
}

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 ) } );
    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: Nonconstructive editing"
        },
        "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-ics1": {
            label:"Uploading files missing copyright status",
            summary:"General note: Uploading files missing copyright status"
        },
        "uw-idt1": {
            label:"Removing file deletion tags",
            summary:"General note: Removing file deletion tags"
        },
        "uw-spam1": {
            label:"Adding spam links",
            summary:"General note: Adding spam links"
        },
        "uw-advert1": {
            label:"Using Misplaced Pages for advertising or promotion",
            summary:"General note: Using Misplaced Pages 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-blpprod1": {
            label:"Removing \{\{blp prod\}\} templates",
            summary:"General note: Removing \{\{blp prod\}\} 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:"General note: Improper use of warning or blocking template"
        },
        "uw-genre1": {
            label:"Frequent or mass changes to genres without consensus or references",
            summary:"General note: Frequent or mass changes to genres without consensus or references"
        }
    },
    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-ics2": {
            label:"Uploading files missing copyright status",
            summary:"Caution: Uploading files missing copyright status"
        },
        "uw-idt2": {
            label:"Removing file deletion tags",
            summary:"Caution: Removing file deletion tags"
        },
        "uw-spam2": {
            label:"Adding spam links",
            summary:"Caution: Adding spam links"
        },
        "uw-advert2": {
            label:"Using Misplaced Pages for advertising or promotion",
            summary:"Caution: Using Misplaced Pages 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-blpprod2": {
            label:"Removing \{\{blp prod\}\} templates",
            summary:"Caution: Removing \{\{blp prod\}\} 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:"Caution: Improper use of warning or blocking template"
        },
        "uw-genre2": {
            label:"Frequent or mass changes to genres without consensus or references",
            summary:"Caution: Frequent or mass changes to genres without consensus or references"
        }
    },
    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-ics3": {
            label:"Uploading files missing copyright status",
            summary:"Warning: Uploading files missing copyright status"
        },
        "uw-idt3": {
            label:"Removing file deletion tags",
            summary:"Warning: Removing file deletion tags"
        },
        "uw-spam3": {
            label:"Adding spam links",
            summary:"Warning: Adding spam links"
        },
        "uw-advert3": {
            label:"Using Misplaced Pages for advertising or promotion",
            summary:"Warning: Using Misplaced Pages 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-blpprod3": {
            label:"Removing \{\{blpprod\}\} templates",
            summary:"Warning: Removing \{\{blpprod\}\} 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"
        },
        "uw-genre3": {
            label:"Frequent or mass changes to genres without consensus or reference",
            summary:"Warning: Frequent or mass changes to genres without consensus or reference"
        }

    },
    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-ics4": {
            label:"Uploading files missing copyright status",
            summary:"Final warning: Uploading files missing copyright status"
        },
        "uw-idt4": {
            label:"Removing file deletion tags",
            summary:"Final warning: Removing file deletion tags"
        },
        "uw-spam4": {
            label:"Adding spam links",
            summary:"Final warning: Adding spam links"
        },
        "uw-advert4": {
            label:"Using Misplaced Pages for advertising or promotion",
            summary:"Final warning: Using Misplaced Pages 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-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-mos4": {
            label:"Manual of style",
            summary:"Final warning: Formatting, date, language, etc (Manual of style)"
        },
        "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-tpv4": {
            label:"Refactoring others' talk page comments",
            summary:"Final warning: Refactoring others' talk page comments"
        },
        "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-blpprod4": {
            label:"Removing \{\{blpprod\}\} templates",
            summary:"Final warning: Removing \{\{blpprod\}\} 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-advert4im": {
            label:"Using Misplaced Pages for advertising or promotion",
            summary:"Only warning: Using Misplaced Pages for advertising or promotion"
        },
        "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-badlistentry": {
            label:"Adding inappropriate entries to lists",
            summary:"Notice: Adding inappropriate entries to lists"
        },
        "uw-bite": {
            label:"\"Biting\" newcomers",
            summary:"Notice: \"Biting\" newcomers"
        },
        "uw-coi": {
            label:"Conflict of Interest",
            summary:"Notice: Conflict of Interest"
        },
        "uw-copying": {
            label:"Copying text to another page",
            summary:"Notice: Copying text to another page"
        },
        "uw-crystal": {
            label:"Adding speculative or unconfirmed information",
            summary:"Notice: Adding speculative or unconfirmed information"
        },
        "uw-csd": {
            label:"Speedy deletion declined",
            summary:"Notice: Speedy deletion declined"
        },
        "uw-c&pmove": {
            label:"Cut and paste moves",
            summary:"Notice: Cut and paste moves"
        },
        "uw-dab": {
            label:"Incorrect edit to a disambiguation page",
            summary:"Notice: Incorrect edit to a disambiguation page"
        },
        "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 ]"
        },
        "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-hasty": {
            label:"Hasty addition of speedy deletiontags",
            summary:"Notice: Allow creators time to improve their articles before tagging them for deletion"
        },
        "uw-imageuse": {
            label:"Incorrect image linking",
            summary:"Notice: Incorrect image linking"
        },
        "uw-incompleteAFD": {
            label:"Incomplete AFD",
            summary:"Notice: Incomplete AFD"
        },
        "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:"Excessive addition of redlinks or repeated blue links",
            summary:"Notice: 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-notenglish": {
            label:"Creating non-English articles",
            summary:"Notice: Creating non-English articles"
        },
        "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-refimprove": {
            label:"Creating unverifiable articles",
            summary:"Notice: Creating unverifiable articles"
        },
        "uw-removevandalism": {
            label:"Incorrect vandalism removal",
            summary:"Notice: Incorrect vandalism removal"
        },
        "uw-repost": {
            label:"Recreating material previously deleted via XfD process",
            summary:"Notice: Recreating previously deleted material"
        },
        "uw-salt": {
            label:"Recreating salted articles under a different title",
            summary:"Notice: Recreating salted articles under a different title"
        },
        "uw-samename": {
            label:"Rename request impossible",
            summary:"Notice: Rename request impossible"
        },
        "uw-selfrevert": {
            label:"Reverting self tests",
            summary:"Notice: Reverting self tests"
        },
        "uw-skype": {
            label:"Skype interfering with editing",
            summary:"Notice: Skype interfering with editing"
        },
        "uw-socialnetwork": {
            label:"Misplaced Pages is not a social network",
            summary:"Notice: Misplaced Pages is not a social network"
        },
        "uw-sofixit": {
            label:"Be bold and fix things yourself",
            summary:"Notice: You can be bold and fix things yourself"
        },
        "uw-spoiler": {
            label:"Censoring spoiler alerts",
            summary:"Notice: Don't remove spoilers or add spoiler alerts"
        },
        "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-userspacenoindex": {
            label:"User page isn't appropriate for search engine indexing",
            summary:"Notice: User page isn't appropriate for search engine indexing"
        },
        "uw-vgscope": {
            label:"Adding video game walkthroughs, cheats or instructions",
            summary:"Notice: Adding video game walkthroughs, cheats or instructions"
        },
        "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-affiliate": {
            label:"Affiliate marketing",
            summary:"Warning: Affiliate marketing"
        },
        "attack": {
            label:"Personal attacks",
            summary:"Warning: Personal attacks"
        },
        "uw-attempt": {
            label:"Triggering the edit filter",
            summary:"Warning: Triggering the edit filter"
        },
        "uw-bizlist": {
            label:"Business promotion",
            summary:"Warning: Promoting a business"
        },
        "uw-botun": {
            label:"Bot username",
            summary:"Warning: Bot username"
        },
        "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-efsummary": {
            label:"Edit summary triggering the edit filter",
            summary:"Warning: Edit summary triggering the edit filter"
        },
        "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-socksuspect": {
            label:"Sockpuppetry",
            summary:"Warning: Sockpuppetry"
        },
        "uw-upv": {
            label:"Userpage vandalism",
            summary:"Warning: Userpage vandalism"
        },
        "uw-username": {
            label:"Username is against policy",
            summary:"Warning: Your username might be against policy"
                },
        "uw-coi-username": {
            label:"Username is against policy, and conflict of interest",
            summary:"Warning: Username and conflict of interest policy"
        },
        "uw-userpage": {
            label:"Userpage or subpage is against policy",
            summary:"Warning: Userpage or subpage is against policy"
        },
        "uw-wrongsummary": {
            label:"Using inaccurate or inappropriate edit summaries",
            summary:"Warning: Using inaccurate or inappropriate edit summaries"
        }
    },
    block: {
        "uw-block": {
            'label':"Block",
            'summary':"You have been blocked from editing"
        },
        "uw-blocknotalk": {
            'label':"Block (talk page disabled)",
            'summary':"You have been blocked from editing and your user talk page has been disabled"
        },
        "uw-blockindef": {
            'label':"Block (indefinite)",
            'summary':"You have been indefinitely blocked from editing"
        },
        "uw-ablock": {
            'label':"Anonymous block",
            'summary':"Your IP address has been blocked from editing"
        },
        "uw-aeblock": {
            'label':"Arbitration enforcement block",
            'summary':"You have been blocked from editing for violating an ] with your edits"
        },
        "uw-adblock": {
            'label':"Advertising block",
            'summary':"You have been blocked from editing for ]"
        },
        "uw-sblock": {
            'label':"Spam block",
            'summary':"You have been blocked from editing for continuing to add ]"
        },
        "uw-soablock": {
            'label':"Spam/advertising-only account block",
            'summary':"You have been indefinitely blocked from editing because your account is being used only for ]"
        },
        "uw-vblock": {
            'label':"Vandalism block",
            'summary':"You have been blocked from editing for persistent ]"
        },
        "uw-voablock": {
            'label':"Vandalism-only account block",
            'summary':"You have been indefinitely blocked from editing because your account is being ]"
        },
        "uw-bioblock": {
            'label':"BLP violations",
            'summary':"You have been blocked from editing for violations of Misplaced Pages's ]"
        },
        "uw-npblock": {
            'label':"Creating nonsense pages block",
            'summary':"You have been blocked from editing for creating ]"
        },
        "uw-myblock": {
            'label':"Social networking block",
            'summary':"You have been blocked from editing for using user and/or article pages as a ]"
        },
        "uw-copyrightblock": {
            'label':"Copyright violation block",
            'summary':"You have been blocked from editing for continued ]"
        },
        "uw-dblock": {
            'label':"Deletion/removal of content block",
            'summary':"You have been blocked from editing for continued ]"
        },
        "uw-efblock": {
            'label':"Edit filter-related block",
            'summary':"You have been blocked from editing for making disruptive edits that repeatedly triggered the ]"
        },
        "uw-ewblock": {
            'label':"Edit warring block",
            'summary':"You have been blocked from editing to prevent further ] caused by your engagement in an ]"
        },
        "uw-3block": {
            'label':"Three-revert rule violation block",
            'summary':"You have been blocked from editing for your ] caused by ] and violation of the ]"
        },
        "uw-botblock": {
            'label':"Unapproved bot block",
            'summary':"You have been blocked from editing because it appears you are running a ] without ]"
        },
        "uw-ublock": {
            'label':"Username soft block",
            'summary':"You have been indefinitely blocked from editing because your username is a violation of the ]"
        },
        "uw-uhblock": {
            'label':"Username hard block",
            'summary':"You have been indefinitely blocked from editing because your username is a blatant violation of the ]"
        },
        "uw-softerblock": {
            'label':"Promotional username soft block",
            'summary':"You have been indefinitely blocked from editing because your ] gives the impression that the account represents a group, organization or website"
        },
        "uw-causeblock": {
            'label':"Promotional username soft block, for charitable causes and social service organizations",
            'summary':"You have been indefinitely blocked from editing because your ] gives the impression that the account represents a group, organization or website"
        },
        "uw-botublock": {
            'label':"Bot username soft block",
            'summary':"You have been indefinitely blocked from editing because your ] indicates this is a ] account, which is currently not approved"
        },
        "uw-memorialblock": {
            'label':"Memorial username soft block",
            'summary':"You have been indefinitely blocked from editing because your ] indicates this account may be used as a memorial or tribute to someone"
        },
        "uw-ublock-famous": {
            'label':"Famous username soft block",
            'summary':"You have been indefinitely blocked from editing because your ] matches the name of a well-known living individual"
        },
        "uw-ublock-double": {
            'label':"Similar username soft block",
            'summary':"You have been indefinitely blocked from editing because your ] is too similar to the username of another Misplaced Pages user"
        },
        "uw-uhblock-double": {
            'label':"Username impersonation hard block",
            'summary':"You have been indefinitely blocked from editing because your ] appears to impersonate another Misplaced Pages user"
        },
        "uw-vaublock": {
            'label':"Vandalism-only account and username hard block",
            'summary':"You have been indefinitely blocked from editing because your account is being ] and your username is a blatant violation of the ]"
        },
        "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 ] and your username is a violation of the ]"
        },
        "uw-compblock": {
            'label':"Possible compromised account block",
            'summary':"You have been indefinitely blocked from editing because it is believed that your ]"
        },
        "uw-lblock": {
            'label':"Legal threat block",
            'summary':"You have been blocked from editing for making ]"
        },
        "uw-hblock": {
            'label':"Harassment block",
            'summary':"You have been blocked from editing for attempting to ] other users"
        },
        "uw-pinfoblock": {
            'label':"Personal information exposure block",
            'summary':"You have been blocked from editing for ] of another editor"
        },
        "uw-deoablock": {
            'label':"Disruption/trolling only account block",
            'summary':"You have been indefinitely blocked from editing because your account is being used only for ]"
        },
        "uw-block-onlyfor": {
            'label':"Bad-faith single purpose account",
            'summary':"You have been indefinitely blocked from editing because your account is a ] being ]"
        },
        "uw-spoablock": {
            'label':"Sockpuppet account block",
            'summary':"You have been indefinitely blocked from editing because your account is being used only for ]"
        }
    }
};

// Set to true if the template is always for an indef block
twinklewarn.indefBlockHash = {
    'uw-block': false,
    'uw-3block': false,
    'uw-ablock': false,
    'uw-adblock': false,
    'uw-aeblock': false,
    'uw-bioblock': false,
    'uw-blocknotalk': false,
    'uw-botblock': false,
    'uw-copyrightblock': false,
    'uw-dblock': false,
    'uw-efblock': false,
    'uw-ewblock': false,
    'uw-hblock': false,
    'uw-myblock': false,
    'uw-npblock': false,
    'uw-pinfoblock': false,
    'uw-sblock': false,
    'uw-pblock': false,
    'uw-blockindef': true,
    'uw-block-onlyfor': true,
    'uw-botublock': true,
    'uw-causeblock': true,
    'uw-compblock': true,
    'uw-deoablock': true,
    'uw-lblock': true,
    'uw-memorialblock': true,
    'uw-soablock': true,
    'uw-softerblock': true,
    'uw-spamublock': true,
    'uw-spoablock': true,
    'uw-ublock': true,
    'uw-ublock-famous': true,
    'uw-uhblock': true,
    'uw-uhblock-double': true,
    'uw-ublock-double': true,
    'uw-vaublock': true,
    'uw-voablock': true
};

// Set to true if the template supports the page parameter
twinklewarn.pageHash = {
    'uw-block': true,
    'uw-3block': true,
    'uw-ablock': true,
    'uw-adblock': true,
    'uw-aeblock': true,
    'uw-bioblock': true,
    'uw-blocknotalk': true,
    'uw-botblock': true,
    'uw-copyrightblock': true,
    'uw-dblock': true,
    'uw-efblock': true,
    'uw-ewblock': true,
    'uw-hblock': true,
    'uw-myblock': true,
    'uw-npblock': true,
    'uw-pinfoblock': true,
    'uw-sblock': true,
    'uw-vblock': true,
    'uw-blockindef': true,
    'uw-block-onlyfor': true,
    'uw-botublock': false,
    'uw-causeblock': false,
    'uw-compblock': true,
    'uw-deoablock': true,
    'uw-lblock': true,
    'uw-memorialblock': false,
    'uw-soablock': true,
    'uw-softerblock': false,
    'uw-spamublock': false,
    'uw-spoablock': true,
    'uw-ublock': false,
    'uw-ublock-famous': false,
    'uw-uhblock': false,
    'uw-uhblock-double': false,
    'uw-ublock-double': false,
    'uw-vaublock': true,
    'uw-voablock': true
};

// Set to true if the template supports the reason parameter and isn't the same as its super-template when a reason is provided
twinklewarn.reasonHash = {
    'uw-block': true,
    'uw-3block': false,
    'uw-ablock': true,
    'uw-adblock': false,
    'uw-aeblock': true,
    'uw-bioblock': false,
    'uw-blocknotalk': true,
    'uw-botblock': false,
    'uw-copyrightblock': false,
    'uw-dblock': false,
    'uw-efblock': false,
    'uw-ewblock': false,
    'uw-hblock': false,
    'uw-myblock': false,
    'uw-npblock': false,
    'uw-pinfoblock': true,
    'uw-sblock': false,
    'uw-vblock': false,
    'uw-blockindef': true,
    'uw-block-onlyfor': true,
    'uw-botublock': true,
    'uw-causeblock': false,
    'uw-compblock': false,
    'uw-deoablock': false,
    'uw-lblock': false,
    'uw-memorialblock': false,
    'uw-soablock': false,
    'uw-softerblock': false,
    'uw-spamublock': false,
    'uw-spoablock': false,
    'uw-ublock': true,
    'uw-ublock-famous': false,
    'uw-uhblock': true,
    'uw-uhblock-double': false,
    'uw-ublock-double': false,
    'uw-vaublock': false,
    'uw-voablock': false
};

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;
    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:": " + messages.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( twinklewarn.indefBlockHash ) {
            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( twinklewarn.pageHash ) {
            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( twinklewarn.reasonHash ) {
            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 ) {

    $.ajax({
      type: 'GET',
      url: wgServer + wgScriptPath + '/api.php?action=query&prop=info|revisions&format=xml&intoken=edit&rvprop=content&titles=' + wgPageName,
      dataType: "xml",
      success: function(xml){
        var text = $(xml).find('rev').text();
        var edittoken = $(xml).find('page').attr('edittoken');
        var wikiobj = self;
        pageReady(text, edittoken, wikiobj, QueryString);
      },
      error: function(){
        document.getElementById('bodyContent').innerHTML += '<br />Error reading page: ' + wgPageName;
      }
    });
  }
}

function pageReady(text, edittoken, wikiobj, QueryString) {

        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 + ' UTC' );
            if( !( current in history ) ||  history ] < current_date ) {
                history ] = current_date;
            }
            if( current_date > latest.date ) {
                latest.date = current_date;
                latest.type = current;
            }
        }

        var date = new Date();

        if( wikiobj.params.sub_group in history ) {
            var temp_time = new Date( history );
            temp_time.setUTCHours( temp_time.getUTCHours() + 24 );

            if( temp_time > date ) {
                Status.info( 'Info', "an identical " + wikiobj.params.sub_group + " has been issued in the last 24 hours" );
                if( !confirm( "Would you still like to add a warning/notice?" ) ) {
                    wikiobj.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?" ) ) {
                    wikiobj.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\n";
        }

        if( wikiobj.params.main_group == 'block' ) {
            var article = '', reason = '', time = null;
            
            if( TwinkleConfig.blankTalkpageOnIndefBlock && wikiobj.params.sub_group != 'uw-lblock' && ( twinklewarn.indefBlockHash || /indef|\*|max/.exec( wikiobj.params.block_timer ) ) ) {
                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( wikiobj.params.article && twinklewarn.pageHash ) {
                article = '|page=' + wikiobj.params.article;
            }
            
            if( wikiobj.params.reason && twinklewarn.reasonHash ) {
                reason = '|reason=' + wikiobj.params.reason;
            }
            
            if( /te?mp|^\s*$|min/.exec( wikiobj.params.block_timer ) || twinklewarn.indefBlockHash ) {
                time = '';
            } else if( /indef|\*|max/.exec( wikiobj.params.block_timer ) ) {
                time = '|indef=yes';
            } else {
                time = '|time=' + wikiobj.params.block_timer;
            }

            text += "\{\{subst:" + wikiobj.params.sub_group + article + time + 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( wikiobj.params.sub_group == 'uw-username' ) {
                text += "\{\{subst:" + wikiobj.params.sub_group + ( wikiobj.params.reason ? '|1=' + wikiobj.params.reason : '' ) + "|subst=subst:\}\} \~\~\~\~";
            } else {
                text += "\{\{subst:" + wikiobj.params.sub_group + ( wikiobj.params.article ? '|1=' + wikiobj.params.article : '' ) + "|subst=subst:\}\}" + (wikiobj.params.reason ? " ''" + wikiobj.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 ], and you didn't make any ] edits, consider ] for yourself so you can avoid further irrelevant warnings.'' ";
                break;
            default:
                text +=  "\n:''If this is a shared ], and you didn't make the edit, consider ] for yourself so you can avoid further irrelevant notices.'' ";
                break;
            }
        }
        var postData = {
          action : 'edit',
          title : wgPageName,
          summary: twinklewarn.messages.summary + ( wikiobj.params.article ? ' on ]'  : '' ) + '.' + TwinkleConfig.summaryAd,
          minor : null,
          text : text,
          token : edittoken

//            'wpMinoredit': form.wpMinoredit.checked ? 1 : undefined,
//            'watchthis': (form.wpWatchthis.checked || TwinkleConfig.watchWarnings) ? 1 : undefined,
//            'wpStarttime': form.wpStarttime.value,
//            'wpEdittime': form.wpEdittime.value,
        };

        var xmlhttp = sajax_init_object();
        xmlhttp.overrideMimeType('application/json');
        xmlhttp.open( 'POST' , wgServer + wgScriptPath + '/api.php', true);
        xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        xmlhttp.send( encodeParams(postData) );

        Status.info('Info', "Action completed – you may close this window and reload the page" );

}

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'
    };
    Misplaced Pages.actionCompleted.redirect = wgPageName;
    Misplaced Pages.actionCompleted.notice = "Warning complete, reloading talk page in a few seconds";
    var wikipedia_wiki = new Misplaced Pages.wiki( 'User talk page modification', query, twinklewarn.callbacks.main );
    wikipedia_wiki.params = params;
    wikipedia_wiki.followRedirect = true;
    wikipedia_wiki.get();
}

function encodeParams( arr ) {
    var resarr = Array();
    for( var i in arr ) {
        if( typeof arr == 'undefined' ) {
            continue;
        }
        var res;
        if( arr instanceof Array ){
            var v =  Array();
            for(var j = 0; j < arr.length; ++j ) {
                v = encodeURIComponent( arr );
            }
            res = v.join('|');
        } else {
            res = encodeURIComponent( arr );
        }
        resarr.push( encodeURIComponent( i ) + '=' + res );
    }
    return resarr.join('&');
}