<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ml.sayahna.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-twinkleprod.js</id>
	<title>MediaWiki:Gadget-twinkleprod.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://ml.sayahna.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-twinkleprod.js"/>
	<link rel="alternate" type="text/html" href="http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-twinkleprod.js&amp;action=history"/>
	<updated>2026-04-30T21:10:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.5</generator>
	<entry>
		<id>http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-twinkleprod.js&amp;diff=8125&amp;oldid=prev</id>
		<title>Cvr: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-twinkleprod.js&amp;diff=8125&amp;oldid=prev"/>
		<updated>2014-05-03T06:14:33Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:14, 3 May 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Cvr</name></author>
		
	</entry>
	<entry>
		<id>http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-twinkleprod.js&amp;diff=8124&amp;oldid=prev</id>
		<title>Amalthea: v2.0-624-ged31b2a: speedy, xfd, prod, tag: Add {{unreviewed}} to list of auto-removed templates; speedy: sync F10 wording with WP:CSD</title>
		<link rel="alternate" type="text/html" href="http://ml.sayahna.org/index.php?title=MediaWiki:Gadget-twinkleprod.js&amp;diff=8124&amp;oldid=prev"/>
		<updated>2013-10-24T11:23:20Z</updated>

		<summary type="html">&lt;p&gt;v2.0-624-ged31b2a: speedy, xfd, prod, tag: Add {{&lt;a href=&quot;/index.php?title=Template:Unreviewed&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Template:Unreviewed (page does not exist)&quot;&gt;unreviewed&lt;/a&gt;}} to list of auto-removed templates; speedy: sync F10 wording with &lt;a href=&quot;/index.php?title=WP:CSD&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:CSD (page does not exist)&quot;&gt;WP:CSD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;//&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(function($){&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 ****************************************&lt;br /&gt;
 *** twinkleprod.js: PROD module&lt;br /&gt;
 ****************************************&lt;br /&gt;
 * Mode of invocation:     Tab (&amp;quot;PROD&amp;quot;)&lt;br /&gt;
 * Active on:              Existing articles which are not redirects&lt;br /&gt;
 * Config directives in:   TwinkleConfig&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
Twinkle.prod = function twinkleprod() {&lt;br /&gt;
	if( mw.config.get('wgNamespaceNumber') !== 0 || !mw.config.get('wgCurRevisionId') || Morebits.wiki.isPageRedirect() ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	Twinkle.addPortletLink( Twinkle.prod.callback, &amp;quot;PROD&amp;quot;, &amp;quot;tw-prod&amp;quot;, &amp;quot;Propose deletion via WP:PROD&amp;quot; );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.prod.callback = function twinkleprodCallback() {&lt;br /&gt;
	Twinkle.prod.defaultReason = Twinkle.getPref('prodReasonDefault');&lt;br /&gt;
&lt;br /&gt;
	var Window = new Morebits.simpleWindow( 800, 410 );&lt;br /&gt;
	Window.setTitle( &amp;quot;Proposed deletion (PROD)&amp;quot; );&lt;br /&gt;
	Window.setScriptName( &amp;quot;Twinkle&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Proposed deletion policy&amp;quot;, &amp;quot;WP:PROD&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;BLP PROD policy&amp;quot;, &amp;quot;WP:BLPPROD&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Twinkle help&amp;quot;, &amp;quot;WP:TW/DOC#prod&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
	var form = new Morebits.quickForm( Twinkle.prod.callback.evaluate );&lt;br /&gt;
	&lt;br /&gt;
	var field = form.append( {&lt;br /&gt;
			type: 'field',&lt;br /&gt;
			label: 'PROD type'&lt;br /&gt;
		} );&lt;br /&gt;
	field.append( {&lt;br /&gt;
			type: 'radio',&lt;br /&gt;
			name: 'prodtype',&lt;br /&gt;
			event: Twinkle.prod.callback.prodtypechanged,&lt;br /&gt;
			list: [&lt;br /&gt;
				{&lt;br /&gt;
					label: 'PROD (proposed deletion)',&lt;br /&gt;
					value: 'prod',&lt;br /&gt;
					checked: true,&lt;br /&gt;
					tooltip: 'Normal proposed deletion, per [[WP:PROD]]'&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					label: 'BLP PROD (proposed deletion of unsourced BLPs)',&lt;br /&gt;
					value: 'prodblp',&lt;br /&gt;
					tooltip: 'Proposed deletion of new, completely unsourced biographies of living persons, per [[WP:BLPPROD]]'&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
	form.append( {&lt;br /&gt;
			type: 'field',&lt;br /&gt;
			label:'Work area',&lt;br /&gt;
			name: 'work_area'&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
	form.append( { type:'submit', label:'Propose deletion' } );&lt;br /&gt;
&lt;br /&gt;
	var result = form.render();&lt;br /&gt;
	Window.setContent( result );&lt;br /&gt;
	Window.display();&lt;br /&gt;
	&lt;br /&gt;
	// fake a change event on the first prod type radio, to initialize the type-dependent controls&lt;br /&gt;
	var evt = document.createEvent( &amp;quot;Event&amp;quot; );&lt;br /&gt;
	evt.initEvent( 'change', true, true );&lt;br /&gt;
	result.prodtype[0].dispatchEvent( evt );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.prod.callback.prodtypechanged = function(event) {&lt;br /&gt;
	//prepare frame for prod type dependant controls&lt;br /&gt;
	var field = new Morebits.quickForm.element( {&lt;br /&gt;
			type: 'field',&lt;br /&gt;
			label: 'Parameters',&lt;br /&gt;
			name: 'work_area'&lt;br /&gt;
		} );&lt;br /&gt;
	// create prod type dependant controls&lt;br /&gt;
	switch( event.target.values ) {&lt;br /&gt;
		case 'prod':&lt;br /&gt;
			field.append( {&lt;br /&gt;
					type: 'checkbox',&lt;br /&gt;
					list: [&lt;br /&gt;
						{&lt;br /&gt;
							label: 'Notify page creator if possible',&lt;br /&gt;
							value: 'notify',&lt;br /&gt;
							name: 'notify',&lt;br /&gt;
							tooltip: &amp;quot;A notification template will be placed on the creator's talk page if this is true.&amp;quot;,&lt;br /&gt;
							checked: true&lt;br /&gt;
						}&lt;br /&gt;
					]&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			field.append( {&lt;br /&gt;
					type: 'textarea',&lt;br /&gt;
					name: 'reason',&lt;br /&gt;
					label: 'Reason for proposed deletion:',&lt;br /&gt;
					value: Twinkle.prod.defaultReason&lt;br /&gt;
				} );&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		case 'prodblp':&lt;br /&gt;
			// first, remember the prod value that the user entered in the textarea, in case he wants to switch back. We can abuse the config field for that.&lt;br /&gt;
			if (event.target.form.reason) {&lt;br /&gt;
				Twinkle.prod.defaultReason = event.target.form.reason.value;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			field.append( {&lt;br /&gt;
					type: 'checkbox',&lt;br /&gt;
					list: [&lt;br /&gt;
						{&lt;br /&gt;
							label: 'Notify page creator if possible',&lt;br /&gt;
							value: 'notify',&lt;br /&gt;
							name: 'notify',&lt;br /&gt;
							tooltip: 'Creator of article has to be notified.',&lt;br /&gt;
							checked: true,&lt;br /&gt;
							disabled: true&lt;br /&gt;
						}&lt;br /&gt;
					]&lt;br /&gt;
				}&lt;br /&gt;
			);&lt;br /&gt;
			//temp warning, can be removed down the line once BLPPROD is more established. Amalthea, May 2010.&lt;br /&gt;
			var boldtext = document.createElement('b');&lt;br /&gt;
			boldtext.appendChild(document.createTextNode('Please note that only unsourced biographies of living persons are eligible for this tag, narrowly construed.'));&lt;br /&gt;
			field.append({&lt;br /&gt;
				type: 'div',&lt;br /&gt;
				label: boldtext&lt;br /&gt;
			});&lt;br /&gt;
			if (mw.config.get('wgArticleId') &amp;lt; 26596183) {&lt;br /&gt;
				field.append({&lt;br /&gt;
					type: 'header',&lt;br /&gt;
					label: 'It appears that this article was created before March 18, 2010, and is thus ineligible for a BLP PROD. Please make sure that this is not the case, or use normal PROD instead.'&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		default:&lt;br /&gt;
			break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	event.target.form.replaceChild( field.render(), $(event.target.form).find('fieldset[name=&amp;quot;work_area&amp;quot;]')[0] );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.prod.callbacks = {&lt;br /&gt;
	main: function(pageobj) {&lt;br /&gt;
		var statelem = pageobj.getStatusElement();&lt;br /&gt;
&lt;br /&gt;
		if( !pageobj.exists() ) {&lt;br /&gt;
			statelem.error( &amp;quot;It seems that the page doesn't exist.  Perhaps it has already been deleted.&amp;quot; );&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var text = pageobj.getPageText();&lt;br /&gt;
		var params = pageobj.getCallbackParameters();&lt;br /&gt;
&lt;br /&gt;
		var tag_re = /(\{\{(?:db-?|delete|[aitcmrs]fd|md1)[^{}]*?\|?[^{}]*?\}\})/i;&lt;br /&gt;
		if( tag_re.test( text ) ) {&lt;br /&gt;
			statelem.warn( 'Page already tagged with a deletion template, aborting procedure' );&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Remove tags that become superfluous with this action&lt;br /&gt;
		text = text.replace(/\{\{\s*([Nn]ew unreviewed article|[Uu]nreviewed|[Uu]serspace draft)\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\}\s*/g, &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		var prod_re = /\{\{\s*(?:dated prod|dated prod blp|Prod blp\/dated|Proposed deletion\/dated)\s*\|(?:\{\{[^\{\}]*\}\}|[^\}\{])*\}\}/i;&lt;br /&gt;
		var summaryText;&lt;br /&gt;
		if( !prod_re.test( text ) ) {&lt;br /&gt;
			// Notification to first contributor&lt;br /&gt;
			if( params.usertalk ) {&lt;br /&gt;
				var thispage = new Morebits.wiki.page(mw.config.get('wgPageName'));&lt;br /&gt;
				thispage.setCallbackParameters(params);&lt;br /&gt;
				thispage.lookupCreator(Twinkle.prod.callbacks.userNotification);&lt;br /&gt;
			}&lt;br /&gt;
			// If not notifying, log this PROD&lt;br /&gt;
			else if( Twinkle.getPref('logProdPages') ) {&lt;br /&gt;
				Twinkle.prod.callbacks.addToLog(params);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			summaryText = &amp;quot;Proposing article for deletion per [[WP:&amp;quot; + (params.blp ? &amp;quot;BLP&amp;quot; : &amp;quot;&amp;quot;) + &amp;quot;PROD]].&amp;quot;;&lt;br /&gt;
			text = &amp;quot;{{subst:prod&amp;quot; + (params.blp ? &amp;quot; blp&amp;quot; : (&amp;quot;|1=&amp;quot; + Morebits.string.formatReasonText(params.reason))) + &amp;quot;}}\n&amp;quot; + text;&lt;br /&gt;
		}&lt;br /&gt;
		else {  // already tagged for PROD, so try endorsing it&lt;br /&gt;
			var prod2_re = /\{\{(?:Proposed deletion endorsed|prod-?2).*?\}\}/;&lt;br /&gt;
			if( prod2_re.test( text ) ) {&lt;br /&gt;
				statelem.warn( 'Page already tagged with {{prod}} and {{prod-2}} templates, aborting procedure' );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var confirmtext = &amp;quot;A {{prod}} tag was already found on this article. \nWould you like to add a {{prod-2}} (PROD endorsement) tag with your explanation?&amp;quot;;&lt;br /&gt;
			if (params.blp) {&lt;br /&gt;
				confirmtext = &amp;quot;A non-BLP {{prod}} tag was found on this article.  \nWould you like to add a {{prod-2}} (PROD endorsement) tag with explanation \&amp;quot;article is a biography of a living person with no sources\&amp;quot;?&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			if( !confirm( confirmtext ) ) {&lt;br /&gt;
				statelem.warn( 'Aborted per user request' );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			summaryText = &amp;quot;Endorsing proposed deletion per [[WP:&amp;quot; + (params.blp ? &amp;quot;BLP&amp;quot; : &amp;quot;&amp;quot;) + &amp;quot;PROD]].&amp;quot;;&lt;br /&gt;
			text = text.replace( prod_re, text.match( prod_re ) + &amp;quot;\n{{prod-2|1=&amp;quot; + (params.blp ?&lt;br /&gt;
				&amp;quot;article is a [[WP:BLPPROD|biography of a living person with no sources]]&amp;quot; :&lt;br /&gt;
				Morebits.string.formatReasonText(params.reason)) + &amp;quot;}}\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
			if( Twinkle.getPref('logProdPages') ) {&lt;br /&gt;
				params.logEndorsing = true;&lt;br /&gt;
				Twinkle.prod.callbacks.addToLog(params);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		pageobj.setPageText(text);&lt;br /&gt;
		pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd'));&lt;br /&gt;
		pageobj.setWatchlist(Twinkle.getPref('watchProdPages'));&lt;br /&gt;
		pageobj.setCreateOption('nocreate');&lt;br /&gt;
		pageobj.save();&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	userNotification: function(pageobj) {&lt;br /&gt;
		var params = pageobj.getCallbackParameters();&lt;br /&gt;
		var initialContrib = pageobj.getCreator();&lt;br /&gt;
&lt;br /&gt;
		// Disallow warning yourself&lt;br /&gt;
		if (initialContrib === mw.config.get(&amp;quot;wgUserName&amp;quot;)) {&lt;br /&gt;
			if (Twinkle.getPref(&amp;quot;logProdPages&amp;quot;)) {&lt;br /&gt;
				Twinkle.prod.callbacks.addToLog(params);&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, &amp;quot;Notifying initial contributor (&amp;quot; + initialContrib + &amp;quot;)&amp;quot;);&lt;br /&gt;
		var notifytext = &amp;quot;\n{{subst:prodwarning&amp;quot; + (params.blp ? &amp;quot;BLP&amp;quot; : &amp;quot;&amp;quot;) + &amp;quot;|1=&amp;quot; + Morebits.pageNameNorm + &amp;quot;|concern=&amp;quot; + params.reason + &amp;quot;}} ~~~~&amp;quot;;&lt;br /&gt;
		usertalkpage.setAppendText(notifytext);&lt;br /&gt;
		usertalkpage.setEditSummary(&amp;quot;Notification: proposed deletion of [[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]].&amp;quot; + Twinkle.getPref('summaryAd'));&lt;br /&gt;
		usertalkpage.setCreateOption('recreate');&lt;br /&gt;
		usertalkpage.setFollowRedirect(true);&lt;br /&gt;
		usertalkpage.append();&lt;br /&gt;
		if (Twinkle.getPref('logProdPages')) {&lt;br /&gt;
			params.logInitialContrib = initialContrib;&lt;br /&gt;
			Twinkle.prod.callbacks.addToLog(params);&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	addToLog: function(params) {&lt;br /&gt;
		var wikipedia_page = new Morebits.wiki.page(&amp;quot;User:&amp;quot; + mw.config.get('wgUserName') + &amp;quot;/&amp;quot; + Twinkle.getPref('prodLogPageName'), &amp;quot;Adding entry to userspace log&amp;quot;);&lt;br /&gt;
		wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
		wikipedia_page.load(Twinkle.prod.callbacks.saveLog);&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	saveLog: function(pageobj) {&lt;br /&gt;
		var text = pageobj.getPageText();&lt;br /&gt;
		var params = pageobj.getCallbackParameters();&lt;br /&gt;
&lt;br /&gt;
		// add blurb if log page doesn't exist&lt;br /&gt;
		if (!pageobj.exists()) {&lt;br /&gt;
			text =&lt;br /&gt;
				&amp;quot;This is a log of all [[WP:PROD|proposed deletion]] tags applied or endorsed by this user using [[WP:TW|Twinkle]]'s PROD module.\n\n&amp;quot; +&lt;br /&gt;
				&amp;quot;If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and &amp;quot; +&lt;br /&gt;
				&amp;quot;nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]].\n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// create monthly header&lt;br /&gt;
		var date = new Date();&lt;br /&gt;
		var headerRe = new RegExp(&amp;quot;^==+\\s*&amp;quot; + date.getUTCMonthName() + &amp;quot;\\s+&amp;quot; + date.getUTCFullYear() + &amp;quot;\\s*==+&amp;quot;, &amp;quot;m&amp;quot;);&lt;br /&gt;
		if (!headerRe.exec(text)) {&lt;br /&gt;
			text += &amp;quot;\n\n=== &amp;quot; + date.getUTCMonthName() + &amp;quot; &amp;quot; + date.getUTCFullYear() + &amp;quot; ===&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var summarytext;&lt;br /&gt;
		if (params.logEndorsing) {&lt;br /&gt;
			text += &amp;quot;\n# [[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]: endorsed &amp;quot; + (params.blp ? &amp;quot;BLP &amp;quot; : &amp;quot;&amp;quot;) + &amp;quot;PROD. ~~~~~&amp;quot;;&lt;br /&gt;
			if (params.reason) {&lt;br /&gt;
				text += &amp;quot;\n#* '''Reason''': &amp;quot; + params.reason + &amp;quot;\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			summarytext = &amp;quot;Logging endorsement of PROD nomination of [[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]].&amp;quot;;&lt;br /&gt;
		} else {&lt;br /&gt;
			text += &amp;quot;\n# [[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]]: &amp;quot; + (params.blp ? &amp;quot;BLP &amp;quot; : &amp;quot;&amp;quot;) + &amp;quot;PROD&amp;quot;;&lt;br /&gt;
			if (params.logInitialContrib) {&lt;br /&gt;
				text += &amp;quot;; notified {{user|&amp;quot; + params.logInitialContrib + &amp;quot;}}&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			text += &amp;quot; ~~~~~\n&amp;quot;;&lt;br /&gt;
			if (!params.blp) {&lt;br /&gt;
				text += &amp;quot;#* '''Reason''': &amp;quot; + params.reason + &amp;quot;\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			summarytext = &amp;quot;Logging PROD nomination of [[&amp;quot; + Morebits.pageNameNorm + &amp;quot;]].&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		pageobj.setPageText(text);&lt;br /&gt;
		pageobj.setEditSummary(summarytext + Twinkle.getPref('summaryAd'));&lt;br /&gt;
		pageobj.setCreateOption(&amp;quot;recreate&amp;quot;);&lt;br /&gt;
		pageobj.save();&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.prod.callback.evaluate = function twinkleprodCallbackEvaluate(e) {&lt;br /&gt;
	var form = e.target;&lt;br /&gt;
	var prodtype;&lt;br /&gt;
&lt;br /&gt;
	var prodtypes = form.prodtype;&lt;br /&gt;
	for( var i = 0; i &amp;lt; prodtypes.length; i++ ) {&lt;br /&gt;
		if( !prodtypes[i].checked ) {&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		prodtype = prodtypes[i].values;&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var params = {&lt;br /&gt;
		usertalk: form.notify.checked,&lt;br /&gt;
		blp: prodtype === 'prodblp',&lt;br /&gt;
		reason: prodtype === 'prodblp' ? '' : form.reason.value  // using an empty string here as fallback will help with prod-2.&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	Morebits.simpleWindow.setButtonsEnabled( false );&lt;br /&gt;
	Morebits.status.init( form );&lt;br /&gt;
&lt;br /&gt;
	if (prodtype === 'prodblp' &amp;amp;&amp;amp; mw.config.get('wgArticleId') &amp;lt; 26596183) {&lt;br /&gt;
		if (!confirm( &amp;quot;It appears that this article was created before March 18, 2010, and is thus ineligible for a BLP PROD. Do you want to continue tagging it?&amp;quot; )) {&lt;br /&gt;
			Morebits.status.warn( 'Notice', 'Aborting per user input.' );&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');&lt;br /&gt;
	Morebits.wiki.actionCompleted.notice = &amp;quot;Tagging complete&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), &amp;quot;Tagging page&amp;quot;);&lt;br /&gt;
	wikipedia_page.setFollowRedirect(true);  // for NPP, and also because redirects are ineligible for PROD&lt;br /&gt;
	wikipedia_page.setCallbackParameters(params);&lt;br /&gt;
	wikipedia_page.load(Twinkle.prod.callbacks.main);&lt;br /&gt;
};&lt;br /&gt;
})(jQuery);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Amalthea</name></author>
		
	</entry>
</feed>