<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://informatiestandaarden.test-nictiz.nl/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-twinkledeprod.js</id>
	<title>MediaWiki:Gadget-twinkledeprod.js - Bewerkingsoverzicht</title>
	<link rel="self" type="application/atom+xml" href="https://informatiestandaarden.test-nictiz.nl/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-twinkledeprod.js"/>
	<link rel="alternate" type="text/html" href="https://informatiestandaarden.test-nictiz.nl/index.php?title=MediaWiki:Gadget-twinkledeprod.js&amp;action=history"/>
	<updated>2026-04-23T18:49:28Z</updated>
	<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://informatiestandaarden.test-nictiz.nl/index.php?title=MediaWiki:Gadget-twinkledeprod.js&amp;diff=3299&amp;oldid=prev</id>
		<title>Ahenket: 1 versie: Twinkle</title>
		<link rel="alternate" type="text/html" href="https://informatiestandaarden.test-nictiz.nl/index.php?title=MediaWiki:Gadget-twinkledeprod.js&amp;diff=3299&amp;oldid=prev"/>
		<updated>2013-07-19T18:37:38Z</updated>

		<summary type="html">&lt;p&gt;1 versie: Twinkle&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&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;
*** twinkledeprod.js: Batch deletion of expired PRODs (sysops only)&lt;br /&gt;
****************************************&lt;br /&gt;
* Mode of invocation:     Tab (&amp;quot;Deprod&amp;quot;)&lt;br /&gt;
* Active on:              Categories whose name starts with &amp;quot;Category:Proposed deletion as of&amp;quot;&lt;br /&gt;
* Config directives in:   TwinkleConfig&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
Twinkle.deprod = function() {&lt;br /&gt;
	if( mw.config.get( &amp;#039;wgNamespaceNumber&amp;#039; ) !== 14 || ! Morebits.userIsInGroup( &amp;#039;sysop&amp;#039; ) || !((/^Category:Proposed_deletion_as_of/).test(mw.config.get( &amp;#039;wgPageName&amp;#039; ))) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	Twinkle.addPortletLink( callback, &amp;quot;Deprod&amp;quot;, &amp;quot;tw-deprod&amp;quot;, &amp;quot;Delete prod pages found in this category&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var unlinkCache = {},&lt;br /&gt;
concerns = {},&lt;br /&gt;
currentDeleteCounter = 0,&lt;br /&gt;
currentUnlinkCounter = 0,&lt;br /&gt;
currentDeletor = null,&lt;br /&gt;
&lt;br /&gt;
callback = function() {&lt;br /&gt;
	var Window = new Morebits.simpleWindow( 800, 400 );&lt;br /&gt;
	Window.setTitle( &amp;quot;PROD cleaning&amp;quot; );&lt;br /&gt;
	Window.setScriptName( &amp;quot;Twinkle&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Proposed deletion&amp;quot;, &amp;quot;WP:PROD&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Twinkle help&amp;quot;, &amp;quot;WP:TW/DOC#deprod&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
	var form = new Morebits.quickForm( callback_commit );&lt;br /&gt;
&lt;br /&gt;
	var query = {&lt;br /&gt;
		&amp;#039;action&amp;#039;: &amp;#039;query&amp;#039;,&lt;br /&gt;
		&amp;#039;generator&amp;#039;: &amp;#039;categorymembers&amp;#039;,&lt;br /&gt;
		&amp;#039;gcmtitle&amp;#039;: mw.config.get( &amp;#039;wgPageName&amp;#039; ),&lt;br /&gt;
		&amp;#039;gcmlimit&amp;#039; : 5000, // the max for sysops&lt;br /&gt;
		&amp;#039;prop&amp;#039;: [ &amp;#039;categories&amp;#039;, &amp;#039;revisions&amp;#039; ],&lt;br /&gt;
		&amp;#039;rvprop&amp;#039;: [ &amp;#039;content&amp;#039; ]&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	var wikipedia_api = new Morebits.wiki.api( &amp;#039;Grabbing pages&amp;#039;, query,&lt;br /&gt;
		function( self ) {&lt;br /&gt;
			var $doc = $(self.responseXML);&lt;br /&gt;
			var $pages = $doc.find(&amp;#039;page[ns!=&amp;quot;6&amp;quot;]&amp;#039;);  // all non-files&lt;br /&gt;
			var list = [];&lt;br /&gt;
			var re = /\{\{Proposed deletion/;&lt;br /&gt;
			$pages.each(function() {&lt;br /&gt;
				var $self = $(this);&lt;br /&gt;
				var page = $self.attr(&amp;#039;title&amp;#039;);&lt;br /&gt;
				var content = $self.find(&amp;#039;revisions rev&amp;#039;).text();&lt;br /&gt;
				var concern = &amp;#039;&amp;#039;;&lt;br /&gt;
				var res = re.exec(content);&lt;br /&gt;
				if( res ) {&lt;br /&gt;
					var parsed = Morebits.wikitext.template.parse( content, res.index );&lt;br /&gt;
					concern = parsed.parameters.concern || &amp;#039;&amp;#039;;&lt;br /&gt;
				}&lt;br /&gt;
				list.push( {label:page + &amp;#039; (&amp;#039; + concern + &amp;#039;)&amp;#039; , value:page, checked:concern !== &amp;#039;&amp;#039; });&lt;br /&gt;
				concerns[page] = concern;&lt;br /&gt;
&lt;br /&gt;
			});&lt;br /&gt;
			self.params.form.append({&lt;br /&gt;
				&amp;#039;type&amp;#039;: &amp;#039;checkbox&amp;#039;,&lt;br /&gt;
				&amp;#039;name&amp;#039;: &amp;#039;pages&amp;#039;,&lt;br /&gt;
				&amp;#039;list&amp;#039;: list&lt;br /&gt;
			});&lt;br /&gt;
			self.params.form.append({&lt;br /&gt;
				&amp;#039;type&amp;#039;: &amp;#039;submit&amp;#039;&lt;br /&gt;
			});&lt;br /&gt;
			self.params.Window.setContent(  self.params.form.render() );&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		wikipedia_api.params = { form:form, Window:Window };&lt;br /&gt;
		wikipedia_api.post();&lt;br /&gt;
		var root = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
		Morebits.simpleWindow.setButtonsEnabled( true );&lt;br /&gt;
&lt;br /&gt;
		Morebits.status.init( root );&lt;br /&gt;
		Window.setContent( root );&lt;br /&gt;
		Window.display();&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
callback_commit = function(event) {&lt;br /&gt;
	var pages = event.target.getChecked( &amp;#039;pages&amp;#039; );&lt;br /&gt;
	Morebits.status.init( event.target );&lt;br /&gt;
	function toCall( work ) {&lt;br /&gt;
		if( work.length === 0 ) {&lt;br /&gt;
			Morebits.status.info( &amp;#039;work done&amp;#039; );&lt;br /&gt;
			window.clearInterval( currentDeletor );&lt;br /&gt;
			Morebits.wiki.removeCheckpoint();&lt;br /&gt;
			return;&lt;br /&gt;
		} else if( currentDeleteCounter &amp;lt;= 0 || currentUnlinkCounter &amp;lt;= 0 ) {&lt;br /&gt;
			unlinkCache = []; // Clear the cache&lt;br /&gt;
			var pages = work.pop(), i;&lt;br /&gt;
			for( i = 0; i &amp;lt; pages.length; ++i ) {&lt;br /&gt;
				var page = pages[i];&lt;br /&gt;
				var query = {&lt;br /&gt;
					&amp;#039;action&amp;#039;: &amp;#039;query&amp;#039;,&lt;br /&gt;
					&amp;#039;prop&amp;#039;: &amp;#039;revisions&amp;#039;,&lt;br /&gt;
					&amp;#039;rvprop&amp;#039;: [ &amp;#039;content&amp;#039; ],&lt;br /&gt;
					&amp;#039;rvlimit&amp;#039;: 1,&lt;br /&gt;
					&amp;#039;titles&amp;#039;: page&lt;br /&gt;
				};&lt;br /&gt;
				var wikipedia_api = new Morebits.wiki.api( &amp;#039;Checking if page &amp;#039; + page + &amp;#039; exists&amp;#039;, query, callback_check );&lt;br /&gt;
				wikipedia_api.params = { page:page, reason: concerns[page] };&lt;br /&gt;
				wikipedia_api.post();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	var work = Morebits.array.chunk( pages, Twinkle.getPref(&amp;#039;proddeleteChunks&amp;#039;) );&lt;br /&gt;
	Morebits.wiki.addCheckpoint();&lt;br /&gt;
	currentDeletor = window.setInterval( toCall, 1000, work );&lt;br /&gt;
},&lt;br /&gt;
callback_check = function( self ) {&lt;br /&gt;
	var $doc  = $(self.responseXML);&lt;br /&gt;
	var normal = $doc.find(&amp;#039;normalized n&amp;#039;).attr(&amp;#039;to&amp;#039;);&lt;br /&gt;
	if( normal ) {&lt;br /&gt;
		self.params.page = normal;&lt;br /&gt;
	}&lt;br /&gt;
	var exists = $doc.find(&amp;#039;pages page:not([missing])&amp;#039;).size() &amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
	if( ! exists ) {&lt;br /&gt;
		self.statelem.error( &amp;quot;It seems that the page doesn&amp;#039;t exist, perhaps it has already been deleted&amp;quot; );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var query = {&lt;br /&gt;
		&amp;#039;action&amp;#039;: &amp;#039;query&amp;#039;,&lt;br /&gt;
		&amp;#039;list&amp;#039;: &amp;#039;backlinks&amp;#039;,&lt;br /&gt;
		&amp;#039;blfilterredir&amp;#039;: &amp;#039;redirects&amp;#039;,&lt;br /&gt;
		&amp;#039;bltitle&amp;#039;: self.params.page,&lt;br /&gt;
		&amp;#039;bllimit&amp;#039;: Morebits.userIsInGroup( &amp;#039;sysop&amp;#039; ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops&lt;br /&gt;
	};&lt;br /&gt;
	var wikipedia_api = new Morebits.wiki.api( &amp;#039;Grabbing redirects&amp;#039;, query, callback_deleteRedirects );&lt;br /&gt;
	wikipedia_api.params = self.params;&lt;br /&gt;
	wikipedia_api.post();&lt;br /&gt;
&lt;br /&gt;
	var page = new Morebits.wiki.page(&amp;#039;Talk:&amp;#039; + self.params.page, &amp;quot;Deleting talk page&amp;quot;);&lt;br /&gt;
	page.setEditSummary(&amp;quot;[[WP:CSD#G8|G8]]: [[Help:Talk page|Talk page]] of deleted page \&amp;quot;&amp;quot; + self.params.page + &amp;quot;\&amp;quot;&amp;quot; + Twinkle.getPref(&amp;#039;deletionSummaryAd&amp;#039;));&lt;br /&gt;
	page.deletePage();&lt;br /&gt;
&lt;br /&gt;
	page = new Morebits.wiki.page(self.params.page, &amp;quot;Deleting article&amp;quot;);&lt;br /&gt;
	page.setEditSummary(&amp;quot;Expired [[WP:PROD|PROD]], concern was: &amp;quot; + self.params.reason + Twinkle.getPref(&amp;#039;deletionSummaryAd&amp;#039;));&lt;br /&gt;
	page.deletePage();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
callback_deleteRedirects = function( self ) {&lt;br /&gt;
	$doc = $(self.responseXML);&lt;br /&gt;
	$doc.find(&amp;quot;backlinks bl&amp;quot;).each(function(){&lt;br /&gt;
		var title = $(this).attr(&amp;#039;title&amp;#039;);&lt;br /&gt;
		var page = new Morebits.wiki.page(title, &amp;quot;Deleting redirecting page &amp;quot; + title);&lt;br /&gt;
		page.setEditSummary(&amp;quot;[[WP:CSD#R1|R1]]: Redirect to deleted page \&amp;quot;&amp;quot; + self.params.page + &amp;quot;\&amp;quot;&amp;quot; + Twinkle.getPref(&amp;#039;deletionSummaryAd&amp;#039;));&lt;br /&gt;
		page.deletePage();&lt;br /&gt;
	});&lt;br /&gt;
};&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>Ahenket</name></author>
	</entry>
</feed>