<?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-twinklebatchprotect.js</id>
	<title>MediaWiki:Gadget-twinklebatchprotect.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-twinklebatchprotect.js"/>
	<link rel="alternate" type="text/html" href="https://informatiestandaarden.test-nictiz.nl/index.php?title=MediaWiki:Gadget-twinklebatchprotect.js&amp;action=history"/>
	<updated>2026-04-23T18:45:34Z</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-twinklebatchprotect.js&amp;diff=3307&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-twinklebatchprotect.js&amp;diff=3307&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;
 *** twinklebatchprotect.js: Batch protect module (sysops only)&lt;br /&gt;
 ****************************************&lt;br /&gt;
 * Mode of invocation:     Tab (&amp;quot;P-batch&amp;quot;)&lt;br /&gt;
 * Active on:              Existing project pages and user pages; existing and&lt;br /&gt;
 *                         non-existing categories; Special:PrefixIndex&lt;br /&gt;
 * Config directives in:   TwinkleConfig&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Twinkle.batchprotect = function twinklebatchprotect() {&lt;br /&gt;
	if( Morebits.userIsInGroup( &amp;#039;sysop&amp;#039; ) &amp;amp;&amp;amp; ((mw.config.get( &amp;#039;wgArticleId&amp;#039; ) &amp;gt; 0 &amp;amp;&amp;amp; (mw.config.get( &amp;#039;wgNamespaceNumber&amp;#039; ) === 2 ||&lt;br /&gt;
		mw.config.get( &amp;#039;wgNamespaceNumber&amp;#039; ) === 4)) || mw.config.get( &amp;#039;wgNamespaceNumber&amp;#039; ) === 14 ||&lt;br /&gt;
		mw.config.get( &amp;#039;wgCanonicalSpecialPageName&amp;#039; ) === &amp;#039;Prefixindex&amp;#039;) ) {&lt;br /&gt;
		Twinkle.addPortletLink( Twinkle.batchprotect.callback, &amp;quot;P-batch&amp;quot;, &amp;quot;tw-pbatch&amp;quot;, &amp;quot;Protect pages linked from this page&amp;quot; );&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.batchprotect.unlinkCache = {};&lt;br /&gt;
Twinkle.batchprotect.callback = function twinklebatchprotectCallback() {&lt;br /&gt;
	var Window = new Morebits.simpleWindow( 800, 400 );&lt;br /&gt;
	Window.setTitle( &amp;quot;Batch protection&amp;quot; );&lt;br /&gt;
	Window.setScriptName( &amp;quot;Twinkle&amp;quot; );&lt;br /&gt;
	//Window.addFooterLink( &amp;quot;Protection templates&amp;quot;, &amp;quot;Template:Protection templates&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Protection policy&amp;quot;, &amp;quot;WP:PROT&amp;quot; );&lt;br /&gt;
	Window.addFooterLink( &amp;quot;Twinkle help&amp;quot;, &amp;quot;WP:TW/DOC#protect&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
	var form = new Morebits.quickForm( Twinkle.batchprotect.callback.evaluate );&lt;br /&gt;
	form.append({&lt;br /&gt;
			type: &amp;#039;checkbox&amp;#039;,&lt;br /&gt;
			name: &amp;#039;editmodify&amp;#039;,&lt;br /&gt;
			event: Twinkle.protect.formevents.editmodify,&lt;br /&gt;
			list: [&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;Modify edit protection&amp;#039;,&lt;br /&gt;
					value: &amp;#039;editmodify&amp;#039;,&lt;br /&gt;
					tooltip: &amp;#039;Only for existing pages.&amp;#039;,&lt;br /&gt;
					checked: true&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		});&lt;br /&gt;
	var editlevel = form.append({&lt;br /&gt;
			type: &amp;#039;select&amp;#039;,&lt;br /&gt;
			name: &amp;#039;editlevel&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Edit protection:&amp;#039;,&lt;br /&gt;
			event: Twinkle.protect.formevents.editlevel&lt;br /&gt;
		});&lt;br /&gt;
	editlevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;All&amp;#039;,&lt;br /&gt;
			value: &amp;#039;all&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	editlevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Autoconfirmed&amp;#039;,&lt;br /&gt;
			value: &amp;#039;autoconfirmed&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	editlevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Sysop&amp;#039;,&lt;br /&gt;
			value: &amp;#039;sysop&amp;#039;,&lt;br /&gt;
			selected: true&lt;br /&gt;
		});&lt;br /&gt;
	form.append({&lt;br /&gt;
			type: &amp;#039;select&amp;#039;,&lt;br /&gt;
			name: &amp;#039;editexpiry&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Expires:&amp;#039;,&lt;br /&gt;
			event: function(e) {&lt;br /&gt;
				if (e.target.value === &amp;#039;custom&amp;#039;) {&lt;br /&gt;
					Twinkle.protect.doCustomExpiry(e.target);&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			list: [&lt;br /&gt;
				{ label: &amp;#039;1 hour&amp;#039;, value: &amp;#039;1 hour&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 hours&amp;#039;, value: &amp;#039;2 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 hours&amp;#039;, value: &amp;#039;3 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;6 hours&amp;#039;, value: &amp;#039;6 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;12 hours&amp;#039;, value: &amp;#039;12 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 day&amp;#039;, value: &amp;#039;1 day&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 days&amp;#039;, selected: true, value: &amp;#039;2 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 days&amp;#039;, value: &amp;#039;3 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;4 days&amp;#039;, value: &amp;#039;4 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 week&amp;#039;, value: &amp;#039;1 week&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 weeks&amp;#039;, value: &amp;#039;2 weeks&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 month&amp;#039;, value: &amp;#039;1 month&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 months&amp;#039;, value: &amp;#039;2 months&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 months&amp;#039;, value: &amp;#039;3 months&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 year&amp;#039;, value: &amp;#039;1 year&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;indefinite&amp;#039;, value:&amp;#039;indefinite&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;Custom...&amp;#039;, value: &amp;#039;custom&amp;#039; }&lt;br /&gt;
			]&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
	form.append({&lt;br /&gt;
			type: &amp;#039;checkbox&amp;#039;,&lt;br /&gt;
			name: &amp;#039;movemodify&amp;#039;,&lt;br /&gt;
			event: Twinkle.protect.formevents.movemodify,&lt;br /&gt;
			list: [&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;Modify move protection&amp;#039;,&lt;br /&gt;
					value: &amp;#039;movemodify&amp;#039;,&lt;br /&gt;
					tooltip: &amp;#039;Only for existing pages.&amp;#039;,&lt;br /&gt;
					checked: true&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		});&lt;br /&gt;
	var movelevel = form.append({&lt;br /&gt;
			type: &amp;#039;select&amp;#039;,&lt;br /&gt;
			name: &amp;#039;movelevel&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Move protection:&amp;#039;,&lt;br /&gt;
			event: Twinkle.protect.formevents.movelevel&lt;br /&gt;
		});&lt;br /&gt;
	movelevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;All&amp;#039;,&lt;br /&gt;
			value: &amp;#039;all&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	movelevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Autoconfirmed&amp;#039;,&lt;br /&gt;
			value: &amp;#039;autoconfirmed&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	movelevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Sysop&amp;#039;,&lt;br /&gt;
			value: &amp;#039;sysop&amp;#039;,&lt;br /&gt;
			selected: true&lt;br /&gt;
		});&lt;br /&gt;
	form.append({&lt;br /&gt;
			type: &amp;#039;select&amp;#039;,&lt;br /&gt;
			name: &amp;#039;moveexpiry&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Expires:&amp;#039;,&lt;br /&gt;
			event: function(e) {&lt;br /&gt;
				if (e.target.value === &amp;#039;custom&amp;#039;) {&lt;br /&gt;
					Twinkle.protect.doCustomExpiry(e.target);&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			list: [&lt;br /&gt;
				{ label: &amp;#039;1 hour&amp;#039;, value: &amp;#039;1 hour&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 hours&amp;#039;, value: &amp;#039;2 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 hours&amp;#039;, value: &amp;#039;3 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;6 hours&amp;#039;, value: &amp;#039;6 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;12 hours&amp;#039;, value: &amp;#039;12 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 day&amp;#039;, value: &amp;#039;1 day&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 days&amp;#039;, selected: true, value: &amp;#039;2 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 days&amp;#039;, value: &amp;#039;3 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;4 days&amp;#039;, value: &amp;#039;4 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 week&amp;#039;, value: &amp;#039;1 week&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 weeks&amp;#039;, value: &amp;#039;2 weeks&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 month&amp;#039;, value: &amp;#039;1 month&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 months&amp;#039;, value: &amp;#039;2 months&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 months&amp;#039;, value: &amp;#039;3 months&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 year&amp;#039;, value: &amp;#039;1 year&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;indefinite&amp;#039;, value:&amp;#039;indefinite&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;Custom...&amp;#039;, value: &amp;#039;custom&amp;#039; }&lt;br /&gt;
			]&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
	form.append({&lt;br /&gt;
			type: &amp;#039;checkbox&amp;#039;,&lt;br /&gt;
			name: &amp;#039;createmodify&amp;#039;,&lt;br /&gt;
			event: function twinklebatchprotectFormCreatemodifyEvent(e) {&lt;br /&gt;
				e.target.form.createlevel.disabled = !e.target.checked;&lt;br /&gt;
				e.target.form.createexpiry.disabled = !e.target.checked || (e.target.form.createlevel.value === &amp;#039;all&amp;#039;);&lt;br /&gt;
				e.target.form.createlevel.style.color = e.target.form.createexpiry.style.color = (e.target.checked ? &amp;quot;&amp;quot; : &amp;quot;transparent&amp;quot;);&lt;br /&gt;
			},&lt;br /&gt;
			list: [&lt;br /&gt;
				{&lt;br /&gt;
					label: &amp;#039;Modify create protection&amp;#039;,&lt;br /&gt;
					value: &amp;#039;createmodify&amp;#039;,&lt;br /&gt;
					tooltip: &amp;#039;Only for pages that do not exist.&amp;#039;,&lt;br /&gt;
					checked: true&lt;br /&gt;
				}&lt;br /&gt;
			]&lt;br /&gt;
		});&lt;br /&gt;
	var createlevel = form.append({&lt;br /&gt;
			type: &amp;#039;select&amp;#039;,&lt;br /&gt;
			name: &amp;#039;createlevel&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Create protection:&amp;#039;,&lt;br /&gt;
			event: Twinkle.protect.formevents.createlevel&lt;br /&gt;
		});&lt;br /&gt;
	createlevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;All&amp;#039;,&lt;br /&gt;
			value: &amp;#039;all&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	createlevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Autoconfirmed&amp;#039;,&lt;br /&gt;
			value: &amp;#039;autoconfirmed&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	createlevel.append({&lt;br /&gt;
			type: &amp;#039;option&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Sysop&amp;#039;,&lt;br /&gt;
			value: &amp;#039;sysop&amp;#039;,&lt;br /&gt;
			selected: true&lt;br /&gt;
		});&lt;br /&gt;
	form.append({&lt;br /&gt;
			type: &amp;#039;select&amp;#039;,&lt;br /&gt;
			name: &amp;#039;createexpiry&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Expires:&amp;#039;,&lt;br /&gt;
			event: function(e) {&lt;br /&gt;
				if (e.target.value === &amp;#039;custom&amp;#039;) {&lt;br /&gt;
					Twinkle.protect.doCustomExpiry(e.target);&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			list: [&lt;br /&gt;
				{ label: &amp;#039;1 hour&amp;#039;, value: &amp;#039;1 hour&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 hours&amp;#039;, value: &amp;#039;2 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 hours&amp;#039;, value: &amp;#039;3 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;6 hours&amp;#039;, value: &amp;#039;6 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;12 hours&amp;#039;, value: &amp;#039;12 hours&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 day&amp;#039;, value: &amp;#039;1 day&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 days&amp;#039;, value: &amp;#039;2 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 days&amp;#039;, value: &amp;#039;3 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;4 days&amp;#039;, value: &amp;#039;4 days&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 week&amp;#039;, value: &amp;#039;1 week&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 weeks&amp;#039;, value: &amp;#039;2 weeks&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 month&amp;#039;, value: &amp;#039;1 month&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;2 months&amp;#039;, value: &amp;#039;2 months&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;3 months&amp;#039;, value: &amp;#039;3 months&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;1 year&amp;#039;, value: &amp;#039;1 year&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;indefinite&amp;#039;, selected: true, value: &amp;#039;indefinite&amp;#039; },&lt;br /&gt;
				{ label: &amp;#039;Custom...&amp;#039;, value: &amp;#039;custom&amp;#039; }&lt;br /&gt;
			]&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
	form.append( {&lt;br /&gt;
			type: &amp;#039;textarea&amp;#039;,&lt;br /&gt;
			name: &amp;#039;reason&amp;#039;,&lt;br /&gt;
			label: &amp;#039;Reason (for protection log): &amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
	var query;&lt;br /&gt;
&lt;br /&gt;
	if( mw.config.get( &amp;#039;wgNamespaceNumber&amp;#039; ) === 14 ) {  // categories&lt;br /&gt;
		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; : Twinkle.getPref(&amp;#039;batchMax&amp;#039;), // the max for sysops&lt;br /&gt;
			&amp;#039;prop&amp;#039;: &amp;#039;revisions&amp;#039;,&lt;br /&gt;
			&amp;#039;rvprop&amp;#039;: &amp;#039;size&amp;#039;&lt;br /&gt;
		};&lt;br /&gt;
	} else if( mw.config.get( &amp;#039;wgCanonicalSpecialPageName&amp;#039; ) === &amp;#039;Prefixindex&amp;#039; ) {&lt;br /&gt;
		query = {&lt;br /&gt;
			&amp;#039;action&amp;#039;: &amp;#039;query&amp;#039;,&lt;br /&gt;
			&amp;#039;generator&amp;#039;: &amp;#039;allpages&amp;#039;,&lt;br /&gt;
			&amp;#039;gapnamespace&amp;#039;: Morebits.queryString.exists(&amp;#039;namespace&amp;#039;) ? Morebits.queryString.get( &amp;#039;namespace&amp;#039; ) : document.getElementById(&amp;#039;namespace&amp;#039;).value,&lt;br /&gt;
			&amp;#039;gapprefix&amp;#039;: Morebits.queryString.exists(&amp;#039;from&amp;#039;) ? Morebits.string.toUpperCaseFirstChar(Morebits.queryString.get( &amp;#039;from&amp;#039; ).replace(&amp;#039;+&amp;#039;, &amp;#039; &amp;#039;)) :&lt;br /&gt;
				Morebits.string.toUpperCaseFirstChar(document.getElementById(&amp;#039;nsfrom&amp;#039;).value),&lt;br /&gt;
			&amp;#039;gaplimit&amp;#039; : Twinkle.getPref(&amp;#039;batchMax&amp;#039;), // the max for sysops&lt;br /&gt;
			&amp;#039;prop&amp;#039;: &amp;#039;revisions&amp;#039;,&lt;br /&gt;
			&amp;#039;rvprop&amp;#039;: &amp;#039;size&amp;#039;&lt;br /&gt;
		};&lt;br /&gt;
	} else {&lt;br /&gt;
		query = {&lt;br /&gt;
			&amp;#039;action&amp;#039;: &amp;#039;query&amp;#039;,&lt;br /&gt;
			&amp;#039;gpllimit&amp;#039; : Twinkle.getPref(&amp;#039;batchMax&amp;#039;), // the max for sysops&lt;br /&gt;
			&amp;#039;generator&amp;#039;: &amp;#039;links&amp;#039;,&lt;br /&gt;
			&amp;#039;titles&amp;#039;: mw.config.get( &amp;#039;wgPageName&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;size&amp;#039;&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var statusdiv = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	statusdiv.style.padding = &amp;#039;15px&amp;#039;;  // just so it doesn&amp;#039;t look broken&lt;br /&gt;
	Window.setContent(statusdiv);&lt;br /&gt;
	Morebits.status.init(statusdiv);&lt;br /&gt;
	Window.display();&lt;br /&gt;
&lt;br /&gt;
	var statelem = new Morebits.status(&amp;quot;Grabbing list of pages&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	var wikipedia_api = new Morebits.wiki.api( &amp;#039;loading...&amp;#039;, query, function(apiobj) {&lt;br /&gt;
			var xml = apiobj.responseXML;&lt;br /&gt;
			var $pages = $(xml).find(&amp;#039;page&amp;#039;);&lt;br /&gt;
			var list = [];&lt;br /&gt;
			$pages.each(function(index, page) {&lt;br /&gt;
				var $page = $(page);&lt;br /&gt;
				var title = $page.attr(&amp;#039;title&amp;#039;);&lt;br /&gt;
				var isRedir = $page.attr(&amp;#039;redirect&amp;#039;) === &amp;quot;&amp;quot;; // XXX ??&lt;br /&gt;
				var missing = $page.attr(&amp;#039;missing&amp;#039;) === &amp;quot;&amp;quot;; // XXX ??&lt;br /&gt;
				var size = $page.find(&amp;#039;rev&amp;#039;).attr(&amp;#039;size&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
				var metadata = [];&lt;br /&gt;
				if (missing) {&lt;br /&gt;
					metadata.push(&amp;quot;page does not exist&amp;quot;);&lt;br /&gt;
				} else {&lt;br /&gt;
					if (isRedir) {&lt;br /&gt;
						metadata.push(&amp;quot;redirect&amp;quot;);&lt;br /&gt;
					}&lt;br /&gt;
					metadata.push(size + &amp;quot; bytes&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
				list.push( { label: title + (metadata.length ? (&amp;#039; (&amp;#039; + metadata.join(&amp;#039;; &amp;#039;) + &amp;#039;)&amp;#039;) : &amp;#039;&amp;#039; ), value: title, checked: true });&lt;br /&gt;
			});&lt;br /&gt;
			form.append({ type: &amp;#039;header&amp;#039;, label: &amp;#039;Pages to protect&amp;#039; });&lt;br /&gt;
			form.append( {&lt;br /&gt;
					type: &amp;#039;checkbox&amp;#039;,&lt;br /&gt;
					name: &amp;#039;pages&amp;#039;,&lt;br /&gt;
					list: list&lt;br /&gt;
				} );&lt;br /&gt;
			form.append( { type:&amp;#039;submit&amp;#039; } );&lt;br /&gt;
&lt;br /&gt;
			var result = form.render();&lt;br /&gt;
			Window.setContent( result );&lt;br /&gt;
		}, statelem );&lt;br /&gt;
&lt;br /&gt;
	wikipedia_api.post();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.batchprotect.currentProtectCounter = 0;&lt;br /&gt;
Twinkle.batchprotect.currentprotector = 0;&lt;br /&gt;
Twinkle.batchprotect.callback.evaluate = function twinklebatchprotectCallbackEvaluate(event) {&lt;br /&gt;
	var pages = event.target.getChecked( &amp;#039;pages&amp;#039; );&lt;br /&gt;
	var reason = event.target.reason.value;&lt;br /&gt;
	var editmodify = event.target.editmodify.checked;&lt;br /&gt;
	var editlevel = event.target.editlevel.value;&lt;br /&gt;
	var editexpiry = event.target.editexpiry.value;&lt;br /&gt;
	var movemodify = event.target.movemodify.checked;&lt;br /&gt;
	var movelevel = event.target.movelevel.value;&lt;br /&gt;
	var moveexpiry = event.target.moveexpiry.value;&lt;br /&gt;
	var createmodify = event.target.createmodify.checked;&lt;br /&gt;
	var createlevel = event.target.createlevel.value;&lt;br /&gt;
	var createexpiry = event.target.createexpiry.value;&lt;br /&gt;
&lt;br /&gt;
	if( ! reason ) {&lt;br /&gt;
		alert(&amp;quot;You&amp;#039;ve got to give a reason, you rouge admin!&amp;quot;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	Morebits.simpleWindow.setButtonsEnabled(false);&lt;br /&gt;
	Morebits.status.init( event.target );&lt;br /&gt;
&lt;br /&gt;
	if( !pages ) {&lt;br /&gt;
		Morebits.status.error( &amp;#039;Error&amp;#039;, &amp;#039;Nothing to protect, aborting&amp;#039; );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var toCall = function twinklebatchprotectToCall( work ) {&lt;br /&gt;
		if( work.length === 0 &amp;amp;&amp;amp; Twinkle.batchprotect.currentProtectCounter &amp;lt;= 0 ) {&lt;br /&gt;
			Morebits.status.info( &amp;#039;work done&amp;#039; );&lt;br /&gt;
			window.clearInterval( Twinkle.batchprotect.currentprotector );&lt;br /&gt;
			Twinkle.batchprotect.currentprotector = Twinkle.batchprotect.currentProtectCounter = 0;&lt;br /&gt;
			Morebits.wiki.removeCheckpoint();&lt;br /&gt;
			return;&lt;br /&gt;
		} else if( work.length !== 0 &amp;amp;&amp;amp; Twinkle.batchprotect.currentProtectCounter &amp;lt;= Twinkle.getPref(&amp;#039;batchProtectMinCutOff&amp;#039;) ) {&lt;br /&gt;
			var pages = work.shift();&lt;br /&gt;
			Twinkle.batchprotect.currentProtectCounter += pages.length;&lt;br /&gt;
			for( var 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;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, Twinkle.batchprotect.callbacks.main );&lt;br /&gt;
				wikipedia_api.params = {&lt;br /&gt;
					page: page,&lt;br /&gt;
					reason: reason,&lt;br /&gt;
					editmodify: editmodify,&lt;br /&gt;
					editlevel: editlevel,&lt;br /&gt;
					editexpiry: editexpiry,&lt;br /&gt;
					movemodify: movemodify,&lt;br /&gt;
					movelevel: movelevel,&lt;br /&gt;
					moveexpiry: moveexpiry,&lt;br /&gt;
					createmodify: createmodify,&lt;br /&gt;
					createlevel: createlevel,&lt;br /&gt;
					createexpiry: createexpiry&lt;br /&gt;
				};&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;batchProtectChunks&amp;#039;) );&lt;br /&gt;
	Morebits.wiki.addCheckpoint();&lt;br /&gt;
	Twinkle.batchprotect.currentprotector = window.setInterval( toCall, 1000, work );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Twinkle.batchprotect.callbacks = {&lt;br /&gt;
	main: function( apiobj ) {&lt;br /&gt;
		var xml = apiobj.responseXML;&lt;br /&gt;
		var normal = $(xml).find(&amp;#039;normalized n&amp;#039;).attr(&amp;#039;to&amp;#039;);&lt;br /&gt;
		if( normal ) {&lt;br /&gt;
			apiobj.params.page = normal;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var exists = ($(xml).find(&amp;#039;page&amp;#039;).attr(&amp;#039;missing&amp;#039;) !== &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		var page = new Morebits.wiki.page(apiobj.params.page, &amp;quot;Protecting &amp;quot; + apiobj.params.page);&lt;br /&gt;
		var takenAction = false;&lt;br /&gt;
		if (exists &amp;amp;&amp;amp; apiobj.params.editmodify) {&lt;br /&gt;
			page.setEditProtection(apiobj.params.editlevel, apiobj.params.editexpiry);&lt;br /&gt;
			takenAction = true;&lt;br /&gt;
		}&lt;br /&gt;
		if (exists &amp;amp;&amp;amp; apiobj.params.movemodify) {&lt;br /&gt;
			page.setMoveProtection(apiobj.params.movelevel, apiobj.params.moveexpiry);&lt;br /&gt;
			takenAction = true;&lt;br /&gt;
		}&lt;br /&gt;
		if (!exists &amp;amp;&amp;amp; apiobj.params.createmodify) {&lt;br /&gt;
			page.setCreateProtection(apiobj.params.createlevel, apiobj.params.createexpiry);&lt;br /&gt;
			takenAction = true;&lt;br /&gt;
		}&lt;br /&gt;
		if (!takenAction) {&lt;br /&gt;
			Morebits.status.warn(&amp;quot;Protecting &amp;quot; + apiobj.params.page, &amp;quot;page &amp;quot; + (exists ? &amp;quot;exists&amp;quot; : &amp;quot;does not exist&amp;quot;) + &amp;quot;; nothing to do, skipping&amp;quot;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		page.setEditSummary(apiobj.params.reason);&lt;br /&gt;
&lt;br /&gt;
		page.protect(function(pageobj) {&lt;br /&gt;
			--Twinkle.batchprotect.currentProtectCounter;&lt;br /&gt;
			var link = document.createElement( &amp;#039;a&amp;#039; );&lt;br /&gt;
			link.setAttribute( &amp;#039;href&amp;#039;, mw.util.wikiGetlink( apiobj.params.page ) );&lt;br /&gt;
			link.appendChild( document.createTextNode( apiobj.params.page ) );&lt;br /&gt;
			pageobj.getStatusElement().info( [ &amp;#039;completed (&amp;#039; , link , &amp;#039;)&amp;#039; ] );&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>