User:Ucucha/autofc.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. |
![]() | This user script seems to have a documentation page at User:Ucucha/autofc. |
/* autofc.js
* Provides automatic FAC nomination capacity. Based on [[User:AzaToth/twinklexfd.js]].
* Experimental.
*/
// If TwinkleConfig aint exist.
if( typeof( TwinkleConfig ) == 'undefined' ) {
TwinkleConfig = {};
}
/**
TwinkleConfig.xfdWatchDiscussion (string)
The watchlist setting of the newly created XfD page. Either "yes", "no", or "default". Default is "default" (Duh).
*/
if( typeof( TwinkleConfig.xfdWatchDiscussion ) == 'undefined' ) {
TwinkleConfig.xfdWatchDiscussion = "default";
}
/**
TwinkleConfig.xfdWatchPage (string)
The watchlist setting of the page listed for XfD. Either "yes", "no", or "default". Default is "default" (Duh).
*/
if( typeof( TwinkleConfig.xfdWatchPage) == 'undefined' ) {
TwinkleConfig.xfdWatchPage= "default";
}
/**
TwinkleConfig.xfdWatchList (string)
The watchlist setting of xfd list page, *if* the discussion is on a separate page. Either "yes", "no", or "default". Default is "no" (Hehe. Seriously though, who wants to watch it? Sorry in advance for any false positives.).
*/
if( typeof( TwinkleConfig.xfdWatchList ) == 'undefined' ) {
TwinkleConfig.xfdWatchList = "no";
}
/**
TwinkleConfig.summaryAd (string)
If ad should be added or not to summary, default [[WP:TWINKLE|TWINKLE]]
*/
if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {
TwinkleConfig.summaryAd = " using [[User:Ucucha/autofc|autofc]]";
}
function num2order( num ) {
switch( num ) {
case 1: return '1';
case 2: return '2nd';
case 3: return '3rd';
default: return num + 'th';
}
}
function autofc() {
if( wgNamespaceNumber < 0 || wgCurRevisionId == false ) {
return;
}
if (twinkleConfigExists)
{
twAddPortletLink( "javascript:autofc.callback()", "FC", "au-fc", "Featured content nomination", "");
}
else
{
twAddPortletLink( 'javascript:alert("Your account is too new to use Twinkle.");', 'FC', 'au-fc', 'Featured content nomination', '');
}
}
window.TwinkleInit = (window.TwinkleInit || []).concat(autofc); //schedule initializer
autofc.callback = function autofcCallback() {
var Window = new SimpleWindow( 600, 325 );
Window.setTitle( "Featured content nomination" );
var form = new QuickForm( autofc.callback.evaluate );
var categories = form.append( {
type: 'select',
name: 'category',
label: 'Select wanted type of category: ',
tooltip: 'When activated, a default choice is made, based on what namespace you are in. This default should be the most appropriate',
event: autofc.callback.change_category
} );
categories.append( {
type: 'option',
label: 'FAC',
selected: wgNamespaceNumber == Namespace.MAIN,
value: 'fac'
} );
categories.append( {
type: 'option',
label: 'FLC',
selected: false,
value: 'flc'
} );
categories.append( {
type: 'option',
label: 'FPC',
selected: wgNamespaceNumber == Namespace.IMAGE,
value: 'fpc'
} );
categories.append( {
type: 'option',
label: 'FSC',
selected: false,
value: 'fsc'
} );
categories.append( {
type: 'option',
label: 'FPOC',
selected: wgNamespaceNumber == Namespace.PORTAL ,
value: 'fpoc'
} );
form.append( {
type: 'field',
label:'Work area',
name: 'work_area'
} );
var result = form.render();
Window.setContent( result );
Window.display();
// We must init the
var evt = document.createEvent( "Event" );
evt.initEvent( 'change', true, true );
result.category.dispatchEvent( evt );
}
autofc.callback.change_category = function autofcCallbackChangeCategory(e) {
var value = e.target.value;
var root = e.target.form;
var old_area;
var childNodes = root.childNodes;
for( var i = 0; i < childNodes.length; ++i ) {
var node = childNodes[i];
if(
node instanceof Element &&
node.getAttribute( 'name' ) == 'work_area'
) {
old_area = node;
break;
}
}
var work_area = null;
switch( value ) {
case 'fac':
work_area = new QuickForm.element( {
type: 'field',
label: 'Featured article candidates',
name: 'work_area'
} );
work_area.append( {
type: 'textarea',
name: 'fcreason',
label: 'Reason: '
} );
work_area.append( { type:'submit' } );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
break;
case 'flc':
work_area = new QuickForm.element( {
type: 'field',
label: 'Featured list candidates',
name: 'work_area'
} );
work_area.append( {
type: 'textarea',
name: 'fcreason',
label: 'Reason: '
} );
work_area.append( { type:'submit' } );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
break;
case 'fpc':
work_area = new QuickForm.element( {
type: 'field',
label: 'Featured picture candidates',
name: 'work_area'
} );
work_area.append( {
type: 'textarea',
name: 'fcreason',
label: 'Reason: '
} );
work_area.append( { type:'submit' } );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
break;
case 'fsc':
work_area = new QuickForm.element( {
type: 'field',
label: 'Featured sound candidates',
name: 'work_area'
} );
work_area.append( {
type: 'textarea',
name: 'fcreason',
label: 'Reason: '
} );
work_area.append( { type:'submit' } );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
break;
case 'fpoc':
work_area = new QuickForm.element( {
type: 'field',
label: 'Featured portal candidates',
name: 'work_area'
} );
work_area.append( {
type: 'textarea',
name: 'fcreason',
label: 'Reason: '
} );
work_area.append( { type:'submit' } );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
break;
default:
work_area = new QuickForm.element( {
type: 'field',
label: 'Nothing for anything',
name: 'work_area'
} );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
break;
}
}
autofc.callbacks = {
fac: {
main: function ( self ) {
var xmlDoc = self.responseXML;
var titles = xmlDoc.evaluate( '//allpages/p/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );
// There has been no earlier entries with this prefix, just go on.
if( titles.snapshotLength <= 0 ) {
self.params.numbering = self.params.number = '';
numbering = number = '';
} else {
var number = 0;
for( var i = 0; i < titles.snapshotLength; ++i ) {
var title = titles.snapshotItem(i).value;
// First, simple test, is there an instance with this exact name?
if( title == 'Wikipedia:Featured article candidates/' + wgPageName + '/archive1') {
number = Math.max( number, 1 );
continue;
}
var order_re = new RegExp( '^' +
RegExp.escape( 'Wikipedia:Articles for deletion/' + wgPageName, true ) +
'/archive?'
);
var match = order_re.exec( title );
// No match; A non-good value
if( match == null ) {
continue;
}
// A match, set number to the max of current
number = Math.max( number, Number(match[1]) );
}
self.params.number = num2order( parseInt( number ) + 1);
self.params.numbering = number > 0 ? '/archive' + self.params.number : '/archive1';
}
Status.info( 'Next discussion page","[[Wikipedia:Featured article candidates/' + wgPageName + self.params.numbering + ']]' );
// Discussion page
var query = {
'title': 'Wikipedia:Featured article candidates/' + wgPageName + self.params.numbering,
'action': 'submit'
};
// Updating data for the action completed event
Wikipedia.actionCompleted.redirect = query['title'];
Wikipedia.actionCompleted.notice = "Nomination completed, now redirecting to the discussion page";
var wikipedia_wiki = new Wikipedia.wiki( 'Creating FAC nomination page', query, autofc.callbacks.fac.discussionPage );
wikipedia_wiki.params = self.params;
wikipedia_wiki.get();
// Tagging article
var query = {
'title': 'Talk:' + wgPageName,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Adding nomination tag to article talk page', query, autofc.callbacks.fac.article );
wikipedia_wiki.params = self.params;
wikipedia_wiki.get();
// Today's list
var date = new Date();
query = {
'title': 'Wikipedia:Featured article candidates',
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Adding discussion to list', query, autofc.callbacks.fac.todaysList );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
},
article: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': undefined, // Per memo
'wpWatchthis': (TwinkleConfig.xfdWatchPage=="yes" || (TwinkleConfig.xfdWatchPage=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Nominated as a featured article candidate; see [[Wikipedia:Featured article candidates/" + wgPageName + self.params.numbering + ']].'+ TwinkleConfig.summaryAd,
'wpTextbox1': ( self.params.noinclude ? "<noinclude>" : "" ) + "\{\{featured article candidates/wgPageName" + self.params.numbering + ( self.params.noinclude ? "</noinclude>" : "" ) + form.wpTextbox1.value
};
self.post( postData );
},
discussionPage: function( self ) {
var form = self.responseXML.getElementById('editform');
var nomtext = "===\[\[\{\{subst:#if:\{\{subst:#titleparts:\{\{subst:PAGENAME\}\}|-1|2\}\}|\{\{subst:#titleparts:\{\{subst:PAGENAME\}\}|-1|2\}\}|\{\{subst:SUBPAGENAME\}\}\}\}\]\]===\n" +
"\{\{subst:void|\[\[Category:Wikipedia featured content templates\]\]\}\}\n" +
"<noinclude>\{\{la|\{\{subst:SUBPAGENAME:Wikipedia:\{\{subst:BASEPAGENAME\}\}\}\}\}\}\n" +
"\{\{Wikipedia:Featured article tools|1=\{\{subst:#if:\{\{subst:#titleparts:\{\{subst:PAGENAME\}\}|-1|2\}\}|\{\{subst:#titleparts:\{\{subst:PAGENAME\}\}|-1|2\}\}|\{\{subst:SUBPAGENAME\}\}\}\}\}\}</noinclude>\n" +
"\n" +
"<!-- Please don't edit anything above here. Be sure to include your reasons for nominating below. -->\n"
":<small>''Nominator(s): [[User talk:Ucucha|Ucucha]] 15:47, 4 December 2010 (UTC)''</small>\n";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchDiscussion=="yes" || (TwinkleConfig.xfdWatchDiscussion=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Creating FAC nomination page for \[\[" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': nomtext + self.params.reason + " \~\~\~\~"
};
self.post( postData );
},
todaysList: function( self ) {
var form = self.responseXML.getElementById('editform');
var old_text = form.wpTextbox1.value;
var text = old_text.replace( /(<\!-- Add new nominations at the top of the list below this comment. Before nominating, please make sure the article meets the FA criteria. -->\n+)/, "$1\{\{Wikipedia:Featured article candidates/" + wgPageName + self.params.numbering + "\}\}\n");
if( text == old_text ) {
self.statelem.error( 'failed to find target spot for the discussion' );
return;
}
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchList=="yes" || (TwinkleConfig.xfdWatchList=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Adding \[\[WP:Featured article candidates/" + wgPageName + self.params.numbering + '\|FAC\]\] for \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
},
/* tfd: {
taggingTemplate: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': undefined, // Per memo
'wpWatchthis': (TwinkleConfig.xfdWatchPage=="yes" || (TwinkleConfig.xfdWatchPage=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Nominated for deletion; see \[\[Wikipedia:Templates for discussion#" + wgPageName + '\]\].'+ TwinkleConfig.summaryAd,
'wpTextbox1': "\{\{tfd"+(self.params.tfdinline?"|type=inline":"")+"|" + wgTitle + "\}\}\n" + form.wpTextbox1.value
};
self.post( postData );
},
todaysList: function( self ) {
var form = self.responseXML.getElementById('editform');
var old_text = form.wpTextbox1.value;
text = old_text.replace( '-->', "-->\n\{\{subst:tfd2|" + wgTitle + "|text=" + self.params.reason + " \~\~\~\~\}\}");
if( text == old_text ) {
self.statelem.error( 'failed to find target spot for the discussion' );
return;
}
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchDiscussion=="yes" || (TwinkleConfig.xfdWatchDiscussion=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Adding [[Template:" + wgTitle + ']].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
userNotification: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
text += "\n\{\{subst:tfdnotice|1=" + wgTitle + "\}\} \~\~\~\~";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUser=="yes" || (TwinkleConfig.xfdWatchUser=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'TfD nomination of \[\[Template:' + wgTitle + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
},
mfd: {
main: function( self ) {
var xmlDoc = self.responseXML;
var titles = xmlDoc.evaluate( '//allpages/p/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );
// There has been no earlier entries with this prefix, just go on.
if( titles.snapshotLength <= 0 ) {
self.params.numbering = self.params.number = '';
numbering = number = '';
} else {
var number = 0;
for( var i = 0; i < titles.snapshotLength; ++i ) {
var title = titles.snapshotItem(i).value;
// First, simple test, is there an instance with this exact name?
if( title == 'Wikipedia:Miscellany for deletion/' + wgPageName ) {
number = Math.max( number, 1 );
continue;
}
var order_re = new RegExp( '^' +
RegExp.escape( 'Wikipedia:Miscellany for deletion/' + wgPageName, true ) +
'\\s*\\(\\s*(\\d+)(?:(?:th|nd|rd|st) nom(?:ination)?)?\\s*\\)\\s*$'
);
var match = order_re.exec( title );
// No match; A non-good value
if( match == null ) {
continue;
}
// A match, set number to the max of current
number = Math.max( number, Number(match[1]) );
}
self.params.number = num2order( parseInt( number ) + 1);
self.params.numbering = number > 0 ? ' (' + self.params.number + ' nomination)' : '';
}
self.statelem.info( 'next in order is [[Wikipedia:Miscellany for deletion/' + wgPageName + self.params.numbering + ']]');
// Tagging article
var query = {
'title': wgPageName,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Tagging page with deletion tag', query, autofc.callbacks.mfd.taggingPage );
wikipedia_wiki.params = self.params;
wikipedia_wiki.get();
// Discussion page
var query = {
'title': 'Wikipedia:Miscellany for deletion/' + wgPageName + this.params.numbering,
'action': 'submit'
};
// Updating data for the action completed event
Wikipedia.actionCompleted.redirect = query['title'];
Wikipedia.actionCompleted.notice = "Nomination completed, now redirecting to the discussion page";
wikipedia_wiki = new Wikipedia.wiki( 'Creating page deletion discussion page', query, autofc.callbacks.mfd.discussionPage );
wikipedia_wiki.params = self.params;
wikipedia_wiki.get();
// Today's list
var query = {
'title': 'Wikipedia:Miscellany for deletion',
'action': 'submit',
'section': 2
};
wikipedia_wiki = new Wikipedia.wiki( 'Adding deletion discussion to today\'s list', query, autofc.callbacks.mfd.todaysList );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
// Notification to first contributor
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var callback = function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
var query = {
'title': 'User talk:' + user,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Notifying initial contributor (' + user + ')', query, autofc.callbacks.mfd.userNotification );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
}
if( self.params.usertalk ) {
var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, callback );
wikipedia_api.params = self.params;
wikipedia_api.post();
}
},
taggingPage: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': undefined, // Per memo
'wpWatchthis': (TwinkleConfig.xfdWatchPage=="yes" || (TwinkleConfig.xfdWatchPage=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Nominated for deletion; see [[Wikipedia:Miscellany for deletion/" + wgPageName + self.params.numbering + ']].'+ TwinkleConfig.summaryAd,
'wpTextbox1': ( self.params.noinclude ? "<noinclude>" : "" ) + "\{\{" + ( self.params.number == '' ? "mfd\}\}\n" : 'mfdx|' + self.params.number + "}}\n" ) + ( self.params.noinclude ? "</noinclude>" : "" ) + form.wpTextbox1.value
};
self.post( postData );
},
discussionPage: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchDiscussion=="yes" || (TwinkleConfig.xfdWatchDiscussion=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Creating deletion discussion page for \[\[" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': "\{\{subst:mfd2|pg=" + wgPageName + "|text=" + self.params.reason + " \~\~\~\~\}\}\n"
};
self.post( postData );
},
todaysList: function( self ) {
var form = self.responseXML.getElementById('editform');
var text = form.wpTextbox1.value;
var date = new Date();
var date_header = "==="+date.getUTCMonthName() + ' ' + date.getUTCDate()+', '+date.getUTCFullYear()+"===";
var date_header_regex = new RegExp( "(===\\s*" + date.getUTCMonthName() + '\\s+' + date.getUTCDate()+',\\s+'+date.getUTCFullYear() + "\\s*===)" );
var new_data = "\n\{\{subst:mfd3|pg=" + wgPageName + self.params.numbering + "\}\}";
if( date_header_regex.test( text ) ) { // we have a section already
self.statelem.info( 'Found today\'s section, proceeding to add new entry' );
text = text.replace( date_header_regex, "$1\n" + new_data );
} else { // we need to create a new section
self.statelem.info( 'No section for today found, proceeding to create one' );
text = date_header + new_data + "\n\n" + text;
}
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchList=="yes" || (TwinkleConfig.xfdWatchList=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Adding \[\[WP:Miscellany for deletion/" + wgPageName + self.params.numbering + '\|MfD\]\] for \[\['+wgPageName+'\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
userNotification: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
text += "\n\{\{subst:MFDWarning|1=" + wgPageName + ( self.params.numbering != '' ? '|order= ' + this.params.numbering : '' ) + "\}\} \~\~\~\~";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUser=="yes" || (TwinkleConfig.xfdWatchUser=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'MfD nomination of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
},
ifd: {
main: function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
self.params.uploader = user;
var query = {
'title': 'Wikipedia:Files for deletion/' + self.params.date,
'action': 'submit'
};
wikipedia_wiki = new Wikipedia.wiki( 'Adding deletion discussion to today\'s list', query, autofc.callbacks.ifd.todaysList );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
// Updating data for the action completed event
Wikipedia.actionCompleted.redirect = query['title'];
Wikipedia.actionCompleted.notice = "Nomination completed, now redirecting to the discussion page";
// Notification to first contributor
if( self.params.usertalk ) {
var query = {
'title': 'User talk:' + self.params.uploader,
'action': 'submit'
};
wikipedia_wiki = new Wikipedia.wiki( 'Notifying initial contributor (' + self.params.uploader + ')', query, autofc.callbacks.ifd.userNotification );
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
}
},
taggingImage: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': undefined, // Per
'wpWatchthis': (TwinkleConfig.xfdWatchPage=="yes" || (TwinkleConfig.xfdWatchPage=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "This file is being considered for deletion in accordance with Wikipedia's [[Wikipedia:Deletion policy|Deletion policy]]; See \[\[Wikipedia:Files for deletion#" + wgPageName + '\]\].'+ TwinkleConfig.summaryAd,
'wpTextbox1': "\{\{ifd|log=" + self.params.date + "\}\}\n" + form.wpTextbox1.value
};
self.post( postData );
},
todaysList: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchDiscussion=="yes" || (TwinkleConfig.xfdWatchDiscussion=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Adding discussion for \[\[:" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': form.wpTextbox1.value + "\n\{\{subst:ifd2|1=" + wgTitle + "|Uploader=" + self.params.uploader + "|Reason=" + self.params.reason + "\}\} \~\~\~\~"
};
self.post( postData );
},
userNotification: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
text += "\n\{\{subst:idw|1=" + wgTitle + "\}\}";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUser=="yes" || (TwinkleConfig.xfdWatchUser=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'Notification: FfD nomination of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
tagInstancesMain: function( self ) {
var xmlDoc = self.responseXML;
var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
var snapshot = xmlDoc.evaluate('//imageusage/iu/@title', xmlDoc, nsResolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );
if( snapshot.snapshotLength == 0 ) {
return;
}
var statusIndicator = new Status('Tagging file instances ', '0%');
var total = snapshot.snapshotLength * 2;
var date = new Date();
var dateString = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
imageTaggingCounter = 0;
var onsuccess = function( self ) {
var obj = self.params.obj;
var total = self.params.total;
var now = parseInt( 100 * ++imageTaggingCounter/total ) + '%';
obj.update( now );
self.statelem.unlink();
if( imageTaggingCounter == total ) {
obj.info( now + ' (completed)' );
Wikipedia.removeCheckpoint();
}
}
var onloaded = onsuccess;
var onloading = function( self ) {}
Wikipedia.addCheckpoint();
for ( var i = 0; i < snapshot.snapshotLength; ++i ) {
var title = snapshot.snapshotItem(i).value;
var query = {
'title': title,
'action': 'submit'
}
var wikipedia_wiki = new Wikipedia.wiki( "Tagging of " + title, query, autofc.callbacks.ifd.tagInstances );
wikipedia_wiki.params = { title:title, total:total, obj:statusIndicator, date:dateString };
wikipedia_wiki.onloading = onloading;
wikipedia_wiki.onloaded = onloaded;
wikipedia_wiki.onsuccess = onsuccess;
wikipedia_wiki.get();
}
},
tagInstances: function( self ) {
var form = self.responseXML.getElementById('editform');
var text = form.wpTextbox1.value;
var old_text = text;
var wikiPage = new Mediawiki.Page( text );
var tag = "\{\{ifdc|1=" + wgTitle + "|log=" + self.params.date + "\}\}";
wikiPage.addToImageComment( wgTitle, tag );
text = wikiPage.getText();
if( text == old_text ) {
// Nothing to do, return
self.onsuccess( self );
Wikipedia.actionCompleted();
return;
}
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUsages=="yes" || (TwinkleConfig.xfdWatchUsages=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'Tagging [[:File:' + wgTitle + "]] which is up for deletion at [[WP:FFD|Files for deletion]]" + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
},
puf: {
taggingImage: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': undefined, // Per
'wpWatchthis': (TwinkleConfig.xfdWatchPage=="yes" || (TwinkleConfig.xfdWatchPage=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "This file has been listed on [[Wikipedia:Possibly unfree files]] because the information on its source or copyright status is disputed; See \[\[Wikipedia:Possibly unfree files#" + wgPageName + '\]\].'+ TwinkleConfig.summaryAd,
'wpTextbox1': "\{\{puf|log=" + self.params.date + "\}\}\n" + form.wpTextbox1.value
};
self.post( postData );
},
todaysList: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchDiscussion=="yes" || (TwinkleConfig.xfdWatchDiscussion=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Adding discussion for \[\[:" + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': form.wpTextbox1.value + "\n\{\{subst:puf2|image=" + wgTitle + "|reason=" + self.params.reason + "\}\} \~\~\~\~"
};
self.post( postData );
},
userNotification: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
text += "\n\{\{subst:idw-puf|1=" + wgTitle + "\}\} --\~\~\~\~";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUser=="yes" || (TwinkleConfig.xfdWatchUser=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'Notification: PUF posting of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
tagInstancesMain: function( self ) {
var xmlDoc = self.responseXML;
var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
var snapshot = xmlDoc.evaluate('//imageusage/iu/@title', xmlDoc, nsResolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );
if( snapshot.snapshotLength == 0 ) {
return;
}
var statusIndicator = new Status('Tagging file instances', '0%');
var total = snapshot.snapshotLength * 2;
var date = new Date();
var dateString = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
imageTaggingCounter = 0;
var onsuccess = function( self ) {
var obj = self.params.obj;
var total = self.params.total;
var now = parseInt( 100 * ++imageTaggingCounter/total ) + '%';
obj.update( now );
self.statelem.unlink();
if( imageTaggingCounter == total ) {
obj.info( now + ' (completed)' );
Wikipedia.removeCheckpoint();
}
}
var onloaded = onsuccess;
var onloading = function( wikipedia_wiki ) {}
Wikipedia.addCheckpoint();
for ( var i = 0; i < snapshot.snapshotLength; ++i ) {
var title = snapshot.snapshotItem(i).value;
var query = {
'title': title,
'action': 'submit'
}
var wikipedia_wiki = new Wikipedia.wiki( "Tagging " + title, query, autofc.callbacks.puf.tagInstances );
wikipedia_wiki.params = { title:title, total:total, obj:statusIndicator, date:dateString };
wikipedia_wiki.onloading = onloading;
wikipedia_wiki.onloaded = onloaded;
wikipedia_wiki.onsuccess = onsuccess;
wikipedia_wiki.get();
}
},
tagInstances: function( self ) {
var form = self.responseXML.getElementById('editform');
var text = form.wpTextbox1.value;
var old_text = text;
var wikiPage = new Mediawiki.Page( text );
var tag = "\{\{pufc|1=" + wgTitle + "|log=" + self.params.date + "\}\}";
wikiPage.addToImageComment( wgTitle, tag );
text = wikiPage.getText();
if( text == old_text ) {
// Nothing to do, return
self.onsuccess( self );
Wikipedia.actionCompleted();
return;
}
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUsages=="yes" || (TwinkleConfig.xfdWatchUsages=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'Tagging [[:File:' + wgTitle + "]] which has been listed on [[WP:PUF|Possible unfree files]]" + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
},
cfd: {
taggingCategory: function( self ) {
var form = self.responseXML.getElementById('editform');
var added_data = "";
var summary = "";
switch( self.params.xfdcat ) {
case 'cfd':
added_data = "\{\{subst:cfd\}\}";
summary = "This category is being considered for deletion in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
break;
case 'cfm':
added_data = "\{\{subst:cfm|" + self.params.target.replace('Category:','') + "\}\}";
summary = "This category is being considered for merging in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
break;
case 'cfr':
added_data = "\{\{subst:cfr|" + self.params.target.replace('Category:','') + "\}\}";
summary = "This category is being considered for renaming in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
break;
case 'cfc':
added_data = "\{\{subst:cfc|" + self.params.target + "\}\}";
summary = "This category is being considered for conversion in accordance with [[WP:CDP|CDP]];" + TwinkleConfig.summaryAd;
break;
}
var postData = {
'wpMinoredit': undefined, // Per the cabal
'wpWatchthis': (TwinkleConfig.xfdWatchPage=="yes" || (TwinkleConfig.xfdWatchPage=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': summary,
'wpTextbox1': added_data + "\n" + form.wpTextbox1.value
};
self.post( postData );
},
todaysList: function( self ) {
var form = self.responseXML.getElementById('editform');
var added_data = "";
var summary = "";
switch( this.params.xfdcat ) {
case 'cfd':
added_data = "\{\{subst:cfd2|1=" + wgTitle + "|text=" + self.params.reason + " \~\~\~\~\}\}";
summary = "Added delete nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
break;
case 'cfm':
added_data = "\{\{subst:cfm2|1=" + wgTitle + "|2=" + self.params.target + "|text=" + self.params.reason + " \~\~\~\~\}\}";
summary = "Added merge nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
break;
case 'cfr':
added_data = "\{\{subst:cfr2|1=" + wgTitle + "|2=" + self.params.target + "|text=" + self.params.reason + " \~\~\~\~\}\}";
summary = "Added rename nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
break;
case 'cfc':
added_data = "\{\{subst:cfc2|1=" + wgTitle + "|2=" + self.params.target + "|text=" + self.params.reason + " \~\~\~\~\}\}";
summary = "Added convert nomination of [[:" + wgPageName + "]];" + TwinkleConfig.summaryAd;
break;
}
var old_text = form.wpTextbox1.value;
text = old_text.replace( '-->', "-->\n" + added_data );
if( text == old_text ) {
self.statelem.error( 'failed to find target spot for the discussion' );
return;
}
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchDiscussion=="yes" || (TwinkleConfig.xfdWatchDiscussion=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': summary,
'wpTextbox1': text
};
self.post( postData );
},
userNotification: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
var intext = "";
switch( self.params.xfdcat ) {
case 'cfd':
intext = 'for deletion';
break;
case 'cfm':
intext = 'for merging into \{\{lc|' + self.params.target + "\}\}" ;
break;
case 'cfr':
intext = 'for renaming to \{\{lc|' + self.params.target + "\}\}" ;
break;
case 'cfc':
intext = 'for converting into an article named \{\{lc|' + self.params.target + "\}\}" ;
break;
}
text += "\n\{\{subst:CFDNote|1=" + wgPageName + "\}\} \~\~\~\~";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUser=="yes" || (TwinkleConfig.xfdWatchUser=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'Notification: CfD nomination of \[\[:' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
},
rfd: {
main: function( self ) {
var xmlDoc = self.responseXML;
var target = xmlDoc.evaluate( '//redirects/r/@to', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
if( !target ) {
self.statelem.error( 'no target of this redirect, aborting' );
return;
}
self.params.target = target;
// Tagging redirect
var query = {
'title': wgPageName,
'action': 'submit'
};
wikipedia_wiki = new Wikipedia.wiki( 'Tagging redirect with rfd tag', query, autofc.callbacks.rfd.taggingRedirect );
wikipedia_wiki.followRedirect = false;
wikipedia_wiki.get();
var date = new Date();
var today = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
var query = {
'title': 'Wikipedia:Redirects for discussion/Log/' + today,
'action': 'submit'
};
wikipedia_wiki = new Wikipedia.wiki( 'Adding deletion discussion to today\'s list', query, autofc.callbacks.rfd.todaysList );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
// Updating data for the action completed event
Wikipedia.actionCompleted.redirect = query['title'];
Wikipedia.actionCompleted.notice = "Nomination completed, now redirecting to the discussion page";
self.params.todaysPage = query['title'];
// Notifying initial contributor
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var callback = function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
var query = {
'title': 'User talk:' + user,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Notifying initial contributor (' + user + ')', query, autofc.callbacks.rfd.userNotification );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
}
if( self.params.usertalk ) {
var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, callback );
wikipedia_api.params = self.params;
wikipedia_api.post();
}
},
taggingRedirect: function( self ) {
var form = self.responseXML.getElementById('editform');
var postData = {
'wpMinoredit': undefined, // Per
'wpWatchthis': (TwinkleConfig.xfdWatchPage=="yes" || (TwinkleConfig.xfdWatchPage=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "This redirect has been listed on \[\[Wikipedia:Redirects for discussion\]\]." + TwinkleConfig.summaryAd,
'wpTextbox1': "\{\{rfd\}\}\n" + form.wpTextbox1.value
};
self.post( postData );
},
todaysList: function( self ) {
var form = self.responseXML.getElementById('editform');
var old_text = form.wpTextbox1.value;
var text = old_text.replace( /(<\!-- Add new entries directly below this line -->\n+)/, "$1\{\{subst:rfd2|redirect="+ wgPageName + "|target=" + self.params.target + "|text=" + self.params.reason.toUpperCaseFirstChar() +"\}\} \~\~\~\~\n" );
if( text == old_text ) {
self.statelem.error( 'failed to find target spot for the discussion' );
return;
}
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchDiscussion=="yes" || (TwinkleConfig.xfdWatchDiscussion=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': "Adding [[" + wgPageName + ']].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
},
userNotification: function( self ) {
var form = self.responseXML.getElementById( 'editform' );
var text = form.wpTextbox1.value;
text += "\n\{\{subst:RFDNote|1=" + wgPageName + "\}\} \~\~\~\~";
var postData = {
'wpMinoredit': form.wpMinoredit.checked ? '' : undefined,
'wpWatchthis': (TwinkleConfig.xfdWatchUser=="yes" || (TwinkleConfig.xfdWatchUser=="default"&&form.wpWatchthis.checked) ? '' : undefined),
'wpStarttime': form.wpStarttime.value,
'wpEdittime': form.wpEdittime.value,
'wpAutoSummary': form.wpAutoSummary.value,
'wpEditToken': form.wpEditToken.value,
'wpSection': form.wpSection.value,
'wpSummary': 'Notification: RFD posting of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd,
'wpTextbox1': text
};
self.post( postData );
}
}*/
}
autofc.callback.evaluate = function(e) {
wgPageName = wgPageName.replace( /_/g, ' ' ); // for queen/king/whatever and country!
var type = e.target.category.value;
var usertalk = e.target.notify.checked;
var reason = e.target.xfdreason.value;
if( type in {'afd':'','cfd':''} ) {
var xfdcat = e.target.xfdcat.value;
}
if( type == 'ifd' ) {
var puf = e.target.puf.checked;
}
if( type in {'afd':'','mfd':''} ) {
var noinclude = e.target.noinclude.checked;
}
Status.init( e.target );
if( type == null ) {
Status.error( 'Error', 'no action given' );
return;
}
switch( type ) {
case 'fac': // FAC
var query = {
'action': 'query',
'list': 'allpages',
'apprefix': 'Featured article candidates/' + wgPageName,
'apnamespace': 4,
'apfilterredir': 'nonredirects',
'aplimit': userIsInGroup( 'sysop' ) ? 5000 : 500
};
var wikipedia_api = new Wikipedia.api( 'Tagging article with FAC talk tag', query, autofc.callbacks.afd.main );
wikipedia_api.params = { usertalk:usertalk, reason:reason, noinclude:noinclude, xfdcat:xfdcat };
wikipedia_api.post();
break;
/* case 'tfd': // TFD
Wikipedia.addCheckpoint();
// Tagging article
var query = {
'title': wgPageName,
'action': 'submit'
};
wikipedia_wiki = new Wikipedia.wiki( 'Tagging template with deletion tag', query, autofc.callbacks.tfd.taggingTemplate );
wikipedia_wiki.params = { tfdinline:tfdinline };
wikipedia_wiki.get();
// Adding discussion
var date = new Date();
query = {
'title': 'Wikipedia:Templates for discussion/Log/' + date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate(),
'action': 'submit',
'section': 1
};
// Updating data for the action completed event
Wikipedia.actionCompleted.redirect = query['title'];
Wikipedia.actionCompleted.notice = "Nomination completed, redirecting now to the list of today";
wikipedia_wiki = new Wikipedia.wiki( 'Adding discussion to today\'s list', query, autofc.callbacks.tfd.todaysList );
wikipedia_wiki.params = { reason:reason };
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var callback = function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
var query = {
'title': 'User talk:' + user,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Notifying initial contributor (' + user + ')', query, autofc.callbacks.tfd.userNotification );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
}
if( usertalk ) {
var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, callback );
wikipedia_api.params = self.params;
wikipedia_api.post();
}
Wikipedia.removeCheckpoint();
break;
case 'mfd': // MFD
var query = {
'action': 'query',
'list': 'allpages',
'apprefix': 'Miscellany for deletion/' + wgPageName,
'apnamespace': 4,
'apfilterredir': 'nonredirects',
'aplimit': userIsInGroup( 'sysop' ) ? 5000 : 500
};
var wikipedia_api = new Wikipedia.api( 'Querying allpages', query, autofc.callbacks.mfd.main );
wikipedia_api.params = { usertalk:usertalk, reason:reason, noinclude:noinclude, xfdcat:xfdcat };
wikipedia_api.post();
break;
case 'ifd': // IFD
var date = new Date();
var dateString = date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
var params = { usertalk: usertalk, reason: reason, date: dateString };
Wikipedia.addCheckpoint();
if( puf ) {
// Tagging file
var query = {
'title': wgPageName,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Tagging file with PUF tag', query, autofc.callbacks.puf.taggingImage );
wikipedia_wiki.params = params;
wikipedia_wiki.get();
// Adding discussion
query = {
'title': 'Wikipedia:Possibly unfree files/' + dateString,
'action': 'submit'
};
// Updating data for the action completed event
Wikipedia.actionCompleted.redirect = query['title'];
Wikipedia.actionCompleted.notice = "Nomination completed, now redirecting to today\'s list";
wikipedia_wiki = new Wikipedia.wiki( 'Adding discussion to today\'s list', query, autofc.callbacks.puf.todaysList );
wikipedia_wiki.params = params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var callback = function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
var query = {
'title': 'User talk:' + user,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Notifying initial contributor (' + user + ')', query, autofc.callbacks.puf.userNotification );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
}
if( usertalk ) {
var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, callback );
wikipedia_api.params = params;
wikipedia_api.post();
}
Wikipedia.removeCheckpoint();
// adding tag to captions
var query = {
'action': 'query',
'list': 'imageusage',
'iutitle': wgPageName,
'iulimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops
};
//Disabled, we let [[User:Sambot]] do that now. Also see [[WP:TW/BUG#333]] and [[WP:TW/BUG#285]]:
//var wikipedia_api = new Wikipedia.api( 'Grabbing file links', query, autofc.callbacks.puf.tagInstancesMain );
//wikipedia_api.post();
} else {
// Tagging file
var query = {
'title': wgPageName,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Tagging file with deletion tag', query, autofc.callbacks.ifd.taggingImage );
wikipedia_wiki.params = params;
wikipedia_wiki.get();
// Contributor specific edits
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, autofc.callbacks.ifd.main );
wikipedia_api.params = params;
wikipedia_api.post();
// adding tag to captions
var query = {
'action': 'query',
'list': 'imageusage',
'iutitle': wgPageName,
'iulimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops
};
//Disabled, we let [[User:Sambot]] do that now. Also see [[WP:TW/BUG#333]] and [[WP:TW/BUG#285]]:
//var wikipedia_api = new Wikipedia.api( 'Grabbing file links', query, autofc.callbacks.ifd.tagInstancesMain );
//wikipedia_api.post();
}
Wikipedia.removeCheckpoint();
break;
case 'cfd':
Wikipedia.addCheckpoint();
if( e.target.xfdtarget ) {
var target = e.target.xfdtarget.value.replace( /^\:?Category\:/, '' );
} else {
var target = '';
}
var date = new Date();
var todaysPage = 'Wikipedia:Categories for discussion/Log/' + date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate();
// Updating data for the action completed event
Wikipedia.actionCompleted.redirect = todaysPage;
Wikipedia.actionCompleted.notice = "Nomination completed, now redirecting to the discussion page";
// Tagging category
var query = {
'title': wgPageName,
'action': 'submit'
};
var params = { reason:reason, xfdcat:xfdcat, target:target };
var wikipedia_wiki = new Wikipedia.wiki( 'Tagging category with tag', query, autofc.callbacks.cfd.taggingCategory );
wikipedia_wiki.params = params;
wikipedia_wiki.get();
// Today's list
var query = {
'title': todaysPage,
'action': 'submit',
'section': 2
};
var wikipedia_wiki = new Wikipedia.wiki( 'Adding discussion to today\'s list', query, autofc.callbacks.cfd.todaysList );
wikipedia_wiki.params = params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
// Notification to first contributor
var query = {
'action': 'query',
'prop': 'revisions',
'titles': wgPageName,
'rvlimit': 1,
'rvprop': 'user',
'rvdir': 'newer'
}
var callback = function( self ) {
var xmlDoc = self.responseXML;
var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue;
var query = {
'title': 'User talk:' + user,
'action': 'submit'
};
var wikipedia_wiki = new Wikipedia.wiki( 'Notifying initial contributor (' + user + ')', query, autofc.callbacks.cfd.userNotification );
wikipedia_wiki.params = self.params;
wikipedia_wiki.followRedirect = true;
wikipedia_wiki.get();
}
if( usertalk ) {
var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, callback );
wikipedia_api.params = { xfdcat:xfdcat, target:target, todaysPage:todaysPage };
wikipedia_api.post();
}
Wikipedia.removeCheckpoint();
break;
case 'rfd':
var query = {
'action': 'query',
'titles': wgPageName,
'redirects': true
};
var wikipedia_api = new Wikipedia.api( 'Querying redirect', query, autofc.callbacks.rfd.main );
wikipedia_api.params = { usertalk:usertalk, reason:reason };
wikipedia_api.post();
break;
}*/
}