User:Thisisborin9/assessmenttag.js

//

// If AssessConfig aint exist.

if( typeof( AssessConfig ) == 'undefined' ) {

AssessConfig = function() {};

}

/**

AssessConfig.summaryAd (string)

If ad should be added or not to summary, default Quick Assessment

*/

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

AssessConfig.summaryAd = " using Quick Assessment";

}

function quickassessment() {

if( wgCanonicalNamespace == "User" || wgCanonicalNamespace == "User_talk" || wgNamespaceNumber == -1 ||wgCanonicalNamespace == "Main") {

return;

}

if( userIsInGroup( 'sysop' ) ) {

mw.util.addPortletLink( 'p-cactions', "javascript:quickassessment.callback()", "assess", "q-assess", "Assess page", "");

} else if (assessConfigExists) {

mw.util.addPortletLink( 'p-cactions', "javascript:quickassessment.callback()", "assess", "q-assess", "Assess page", "");

}

else

{

mw.util.addPortletLink('p-cactions', 'javascript:alert("Your account is too new to use Quick Assessment.");', 'assess', 'q-assess', 'Assess page', '');

}

}

$(quickassessment);

quickassessment.callback = function quickassessmentCallback() {

var Window = new SimpleWindow( 600, 400 );

Window.setTitle( "WikiProject Assessment" );

var form = new QuickForm( quickassessment.callback.evaluate );

form.append( {

type: 'select',

name: 'category',

label: 'Select a class: ',

event: quickassessment.callback.disabledefaults,

list: [

{

label: 'Class',

list: [

{ label: 'NA-Class', value: 'na' },

{ label: 'Template-Class', value: 'template' },

{ label: 'List-Class', value: 'list' },

{ label: 'Stub-Class', value: 'stub' },

{ label: 'Start-Class', value: 'start' },

{ label: 'B-Class', value: 'b' },

{ label: 'GA-Class', value: 'ga' },

{ label: 'A-Class', value: 'a' },

{ label: 'FA-Class', value: 'fa' },

{ label: 'FL-Class', value: 'fl' },

{ label: , selected: true, value: }

]

}

]

} );

form.append( {

type:'input',

name:'wikiproject',

label:'WikiProject Name',

tooltip:'Enter the exact template name for the WikiProject, such as (NBA Project) or (WikiProject California)'

} );

var flags = form.append( {

type: 'field',

label: 'Select importance'

} );

flags.append( {

type: 'checkbox',

list: [

{

name: 'low',

label: 'Low-importance',

},

{

name: 'mid',

label: 'Mid-importance',

},

{

name: 'high',

label: 'High-importance',

},

{

name: 'top',

label: 'Top-importance',

}

]

} );

var flags = form.append( {

type: 'field',

label: 'Options'

} );

flags.append( {

type: 'checkbox',

list: [

{

name: 'bannershell',

label: 'Wrap inside the template {{WikiProjectBannerShell}}',

tooltip: 'Will wrap inside WikiProjectBannerShell for 3 or more templates',

},

{

name: 'nested',

label: 'Add |nested=yes tags',

tooltip: 'Will use the |nested=yes feature of the template, therefore enabling WikiProjectBannerShell',

}

]

} );

form.append( { type:'submit' } );

var result = form.render();

Window.setContent( result );

Window.display();

}

twinkleprotect.callback.disabledefaults = function twinkleprotectCallbackDisableDefaults(e) {

var root = e.target.form;

if( e.target.value == 'na' ) {

root.low.disabled = true;

root.mid.disabled = true;

root.high.disabled = true;

root.top.disabled = true;

root.bannershell.disabled = true;

root.nested.disabled = true;

} else {

root.low.disabled = false;

root.mid.disabled = false;

root.high.disabled = false;

root.top.disabled = false;

root.bannershell.disabled = false;

root.nested.disabled = false;

if( userIsInGroup( 'sysop' ) && root.request_only.checked ){

root.small.disabled = true;

root.noinclude.disabled = true;

}

}

if( /template/.test( e.target.value ) ) {

root.noinclude.checked = true;

root.expiry.disabled = true;

} else {

root.noinclude.checked = false;

}

}

twinkleprotect.callback.evaluate = function twinkleprotectCallbackEvaluate(e) {

var form = e.target;

var params = {

noinclude: form.noinclude.checked,

cascade: form.cascade.checked,

small: form.small.checked,

reason: form.reason.value,

expiry: form.expiry.value,

type: form.category.value

}

Status.init( form );

if( userIsInGroup( 'sysop' ) && ! request_only ) {

var edit, move, tag = params.type, reason, create = '';

switch( tag ) {

case 'pp-dispute':

edit = 'sysop';

move = 'sysop';

reason = 'Full protection: Dispute';

break;

case 'pp-vandalism':

edit = 'sysop';

move = 'sysop';

reason = 'Full protection: Vandalism';

break;

case 'pp-template':

edit = 'sysop';

move = 'sysop';

reason = 'Full protection: High-visible template';

break;

case 'pp-usertalk':

edit = 'sysop';

move = 'sysop';

reason = 'Full protection: User talk of blocked user';

break;

case 'pp-protected':

edit = 'sysop';

move = 'sysop';

if( params.reason ) {

tag += '|reason=' + params.reason;

params.reason = undefined;

}

reason = 'Full protection';

break;

case 'pp-semi-vandalism':

edit = 'autoconfirmed';

move = 'autoconfirmed';

reason = 'Semi-protection: Vandalism';

break;

case 'pp-semi-usertalk':

edit = 'autoconfirmed';

move = 'autoconfirmed';

reason = 'Semi-protection: User talk of blocked user';

break;

case 'pp-semi-template':

edit = 'autoconfirmed';

move = 'autoconfirmed';

reason = 'Semi-protection: High-visible template';

break;

case 'pp-semi-spambot':

edit = 'autoconfirmed';

move = 'autoconfirmed';

reason = 'Semi-protection: Spambot target';

break;

case 'pp-semi-protected':

edit = 'autoconfirmed';

move = 'autoconfirmed';

if( params.reason ) {

tag += '|reason=' + params.reason;

params.reason = undefined;

}

reason = 'Semi-protection';

break;

case 'pp-move':

edit = '';

move = 'sysop';

reason = 'Move-protection';

break;

case 'pp-create':

edit = '';

move = '';

create = 'sysop';

reason = 'Create-protection: \{\{pp-create\}\}';

break;

case 'unprotect':

default:

edit = '';

move = '';

reason = 'Unprotection';

break;

}

if( params.reason ) {

reason += ', ' + params.reason;

}

reason += '.';

params.reason = reason;

params.tag = tag;

params.edit = edit;

params.move = move;

params.create = create;

var query = {

'title': wgPageName,

'action': 'submit'

};

// Updating data for the action completed event

Wikipedia.actionCompleted.redirect = query['title'];

Wikipedia.actionCompleted.notice = "Done...";

if( create == '' ) {

var wikipedia_wiki = new Wikipedia.wiki( 'Tagging page', query, twinkleprotect.callbacks.sysop.taggingPage );

wikipedia_wiki.params = params;

wikipedia_wiki.get();

}

var query = {

'title': wgPageName,

'action': 'protect'

};

var wikipedia_wiki = new Wikipedia.wiki( 'Protecting page', query, twinkleprotect.callbacks.sysop.protectingPage );

wikipedia_wiki.params = params;

wikipedia_wiki.get();

} else {

var typename, reason;

switch( params.type ) {

case 'pp-dispute':

case 'pp-vandalism':

case 'pp-template':

case 'pp-usertalk':

case 'pp-protected':

typename = 'full protection';

break;

case 'pp-semi-vandalism':

case 'pp-semi-usertalk':

case 'pp-semi-template':

case 'pp-semi-spambot':

case 'pp-semi-protected':

typename = 'semi-protection';

break;

case 'pp-move':

typename = 'move-protection';

break;

case 'pp-create':

typename = 'create-protection';

break;

case 'unprotect':

default:

typename = 'unprotection';

break;

}

switch( params.type ) {

case 'pp-dispute':

reason = 'Dispute';

break;

case 'pp-vandalism':

reason = 'Vandalism';

break;

case 'pp-template':

reason = 'High-visible template';

break;

case 'pp-usertalk':

reason = 'User talk of blocked user';

break;

case 'pp-protected':

reason = '';

break;

case 'pp-semi-vandalism':

reason = 'Vandalism';

break;

case 'pp-semi-usertalk':

reason = 'User talk of blocked user';

break;

case 'pp-semi-template':

reason = 'High-visible template';

break;

case 'pp-semi-spambot':

reason = 'Spambot target';

break;

case 'pp-semi-protected':

reason = '';

break;

case 'pp-move':

reason = '';

break;

case 'pp-create':

reason = '';

break;

case 'unprotect':

default:

reason = '';

break;

}

if( reason != '' ) {

reason = "" + reason + "";

}

if( params.reason ) {

reason += ', ' + params.reason;

}

if( reason != '' ) {

reason += '.';

}

params.reason = reason;

params.typename = typename;

var query = {

'title': 'Wikipedia:Requests for page protection',

'action': 'submit'

};

// Updating data for the action completed event

Wikipedia.actionCompleted.redirect = query['title'];

Wikipedia.actionCompleted.notice = "Nomination completed, redirecting now to the discussion page";

var wikipedia_wiki = new Wikipedia.wiki( 'Requesting protection of page', query, twinkleprotect.callbacks.user );

wikipedia_wiki.params = params;

wikipedia_wiki.get();

}

}

twinkleprotect.callbacks = {

sysop: {

taggingPage: function( self ) {

var form = self.responseXML.getElementById( 'editform' );

var oldtag_re = /\s*(?:)?\s*\{\{\s*(pp-[^{}]*?|protected|(?:t|v|s|p-|usertalk-v|usertalk-s|sb|move)protected(?:2)?|protected template|privacy protection)\s*?\}\}\s*(?:<\/noinclude>)?\s*/gi;

var text = form.wpTextbox1.value;

text = text.replace( oldtag_re, '' );

if( self.params.type != 'unprotect' && self.params.expiry != 'indefinite' ) {

self.params.tag += '|expiry={{' + 'subst:#time:F j, Y|+' + self.params.expiry +'}}';

if( this.params.small ) {

self.params.tag += '|small=yes';

}

}

var summary;

if( self.params.type == 'unprotect' ) {

summary = 'removing protection template' + TwinkleConfig.summaryAd;

} else {

if( self.params.noinclude ) {

text = "\{\{" + self.params.tag + "\}\}" + text;

} else {

text = "\{\{" + self.params.tag + "\}\}\n" + text;

}

summary = "adding \{\{" + self.params.tag + "\}\}" + TwinkleConfig.summaryAd;

}

var postData = {

'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,

'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,

'wpStarttime': form.wpStarttime.value,

'wpEdittime': form.wpEdittime.value,

'wpAutoSummary': form.wpAutoSummary.value,

'wpEditToken': form.wpEditToken.value,

'wpSummary': summary,

'wpTextbox1': text

};

self.post( postData );

},

protectingPage: function( self ){

var form = self.responseXML.getElementById( 'mw-Protect-Form' );

var postData = {

'wpEditToken': form.wpEditToken.value,

'mwProtectWatch': form.mwProtectWatch.checked ? '' : undefined,

'mwProtectCascade': self.params.cascade ? '' : undefined,

'mwProtect-expiry': self.params.expiry != 'indefinite' ? self.params.expiry : undefined,

'mwProtect-level-edit': self.params.edit,

'mwProtect-level-move': self.params.move,

'mwProtect-level-create': self.params.create,

'mwProtect-reason': self.params.reason + TwinkleConfig.protectionSummaryAd

};

self.post( postData );

}

},

user: function( self ) {

var form = self.responseXML.getElementById( 'editform' );

var text = form.wpTextbox1.value;

var rppRe = new RegExp( '====.*?' + RegExp.escape( wgPageName, true ) + '.*?====', 'm' );

var tag = rppRe.exec( text );

if( tag ) {

self.statelem.warn( [ htmlNode( 'strong', tag[0] ) , " is alread placed on the page." ] )

return false;

}

var ns2tag = {

'0' : 'la',

'1' : 'lat',

'2' : 'lu',

'3' : 'lut',

'4' : 'lw',

'5' : 'lwt',

'6' : 'li',

'7' : 'lit',

'8' : 'lm',

'9' : 'lmt',

'10': 'lt',

'11': 'ltt',

'12': 'lh',

'13': 'lht',

'14': 'lc',

'15': 'lct',

'100': 'lp',

'101': 'lpt'

};

var newtag = '==== \{\{' + ns2tag[ wgNamespaceNumber ] + '|' + wgTitle + '\}\} ====' + "\n";

if( ( new RegExp( '^' + RegExp.escape( newtag ).replace( /\s+/g, '\\s*' ), 'm' ) ).test( text ) ) {

self.statelem.error( 'There are already a request available for this page, aborting.' );

return;

}

var words = [];

switch( self.params.expiry ) {

case 'temporary':

words.push( "temporary" );

break;

case 'indefinite':

words.push( "indefinite" );

break;

}

if( self.params.cascade ) {

words.push( "cascading" );

}

words.push( self.params.typename );

newtag += "" + words.join( ' ' ) + "" + ( self.params.reason != ? ' ' + self.params.reason : ) + "\~\~\~\~";

if( self.params.type == 'unprotect' ) {

var str = "==Current requests for unprotection==\n{{Wikipedia:Requests for page protection/URheading}}";

} else {

var str = "==Current requests for protection==\n{{Wikipedia:Requests for page protection/PRheading}}";

}

text = text.replace( str, str + "\n" + newtag + "\n" );

var postData = {

'wpMinoredit': undefined,

'wpWatchthis': form.wpWatchthis.checked ? '' : undefined,

'wpStarttime': form.wpStarttime.value,

'wpEdittime': form.wpEdittime.value,

'wpAutoSummary': form.wpAutoSummary.value,

'wpEditToken': form.wpEditToken.value,

'wpSummary': "Requesting " + self.params.typename + ' of ' + wgPageName.replace('_', ' ') + '.' + TwinkleConfig.summaryAd,

'wpTextbox1': text

};

self.post( postData );

}

}

//