// <nowiki>
// If AssessConfig aint exist.
if( typeof( AssessConfig ) == 'undefined' ) {
AssessConfig = function() {};
}
/**
AssessConfig.summaryAd (string)
If ad should be added or not to summary, default [[User:Thisisborin9/assessmenttag|Quick Assessment]]
*/
if( typeof( AssessConfig.summaryAd ) == 'undefined' ) {
AssessConfig.summaryAd = " using [[User:Thisisborin9/assessmenttag|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*(?:<noinclude>)?\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 = "<noinclude>\{\{" + self.params.tag + "\}\}</noinclude>" + 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 );
}
}
// </nowiki>