<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.kubu.fi/index.php?action=history&amp;feed=atom&amp;title=User%3AErland%2Fcommon.js</id>
	<title>User:Erland/common.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kubu.fi/index.php?action=history&amp;feed=atom&amp;title=User%3AErland%2Fcommon.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.kubu.fi/index.php?title=User:Erland/common.js&amp;action=history"/>
	<updated>2026-06-17T19:13:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.kubu.fi/index.php?title=User:Erland/common.js&amp;diff=56&amp;oldid=prev</id>
		<title>Erland: Created page with &quot;// &lt;nowiki&gt;  /* Purger */  (function() { 	/** Configuration */ 	var config = { 		debug: false, 		namespace: &#039;purger&#039;, 		portletGroup: &#039;p-cactions&#039;, 		portletId: &#039;ca-purger&#039;, 		portletAccessKey: null, 		i18n: { 			portletText: &#039;Purger&#039;, 			portletTooltip: &#039;Purge this page&#039;, 			specialPage: { 				url: &#039;Special:Purger&#039;, 				documentTitle: &#039;Purger - Wikipedia&#039;, 				title: &#039;Purger: &#039;, 				forcelinkupdate: &#039;forcelinkupdate&#039;, 				forcerecursivelinkupdate: &#039;forcerecursivelinkupd...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.kubu.fi/index.php?title=User:Erland/common.js&amp;diff=56&amp;oldid=prev"/>
		<updated>2024-07-24T10:41:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;// &amp;lt;nowiki&amp;gt;  &lt;span class=&quot;autocomment&quot;&gt;Purger: &lt;/span&gt;  (function() { 	&lt;span class=&quot;autocomment&quot;&gt;* Configuration: &lt;/span&gt; 	var config = { 		debug: false, 		namespace: &amp;#039;purger&amp;#039;, 		portletGroup: &amp;#039;p-cactions&amp;#039;, 		portletId: &amp;#039;ca-purger&amp;#039;, 		portletAccessKey: null, 		i18n: { 			portletText: &amp;#039;Purger&amp;#039;, 			portletTooltip: &amp;#039;Purge this page&amp;#039;, 			specialPage: { 				url: &amp;#039;Special:Purger&amp;#039;, 				documentTitle: &amp;#039;Purger - Wikipedia&amp;#039;, 				title: &amp;#039;Purger: &amp;#039;, 				forcelinkupdate: &amp;#039;forcelinkupdate&amp;#039;, 				forcerecursivelinkupdate: &amp;#039;forcerecursivelinkupd...&amp;quot;&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;
/* Purger */&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
	/** Configuration */&lt;br /&gt;
	var config = {&lt;br /&gt;
		debug: false,&lt;br /&gt;
		namespace: &amp;#039;purger&amp;#039;,&lt;br /&gt;
		portletGroup: &amp;#039;p-cactions&amp;#039;,&lt;br /&gt;
		portletId: &amp;#039;ca-purger&amp;#039;,&lt;br /&gt;
		portletAccessKey: null,&lt;br /&gt;
		i18n: {&lt;br /&gt;
			portletText: &amp;#039;Purger&amp;#039;,&lt;br /&gt;
			portletTooltip: &amp;#039;Purge this page&amp;#039;,&lt;br /&gt;
			specialPage: {&lt;br /&gt;
				url: &amp;#039;Special:Purger&amp;#039;,&lt;br /&gt;
				documentTitle: &amp;#039;Purger - Wikipedia&amp;#039;,&lt;br /&gt;
				title: &amp;#039;Purger: &amp;#039;,&lt;br /&gt;
				forcelinkupdate: &amp;#039;forcelinkupdate&amp;#039;,&lt;br /&gt;
				forcerecursivelinkupdate: &amp;#039;forcerecursivelinkupdate&amp;#039;,&lt;br /&gt;
				mathpurge: &amp;#039;mathpurge&amp;#039;,&lt;br /&gt;
				purgeButton: &amp;#039;Purge&amp;#039;,&lt;br /&gt;
				nullButton: &amp;#039;Null edit&amp;#039;,&lt;br /&gt;
 			},&lt;br /&gt;
			purgeSucceed: &amp;#039;Purge succeed&amp;#039;,&lt;br /&gt;
			purgeFailed: &amp;#039;Purge failed&amp;#039;,&lt;br /&gt;
			nullSucceed: &amp;#039;Null edit succeed&amp;#039;,&lt;br /&gt;
			nullFailed: &amp;#039;Null edit failed&amp;#039;,&lt;br /&gt;
			nullSummary: &amp;#039;[[User:Aseleste/Script/Purger|Purger]]: null edit&amp;#039;,&lt;br /&gt;
			nullBug: &amp;#039;(If you see this message, undo this edit, notify the editor, and then report to [[User:Aseleste|Aseleste]].)&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function namespaced(string) { return config.namespace + &amp;#039;-&amp;#039; + string }&lt;br /&gt;
	function formatMessage(message) { return &amp;#039;[&amp;#039; + config.namespace + &amp;#039;] &amp;#039; + message }&lt;br /&gt;
	&lt;br /&gt;
	/** Page source of special page.&lt;br /&gt;
	* Identifiers (without namespace):&lt;br /&gt;
	* - purge&lt;br /&gt;
	* - null&lt;br /&gt;
	* - forcelinkupdate&lt;br /&gt;
	* - forcerecursivelinkupdate&lt;br /&gt;
	* - mathpurge&lt;br /&gt;
	* Classes (without namespace):&lt;br /&gt;
	* - purge-options&lt;br /&gt;
	*/&lt;br /&gt;
	config.specialPageSource = (function() {&lt;br /&gt;
		function generatePurgeOption(name) {&lt;br /&gt;
			return &amp;#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;&amp;#039; + namespaced(name) + &amp;#039;&amp;quot; value=&amp;quot;&amp;#039; + name + &amp;#039;&amp;quot; class=&amp;quot;&amp;#039; + namespaced(&amp;#039;purge-options&amp;#039;) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
			&amp;#039;&amp;lt;label for=&amp;quot;&amp;#039; + namespaced(name) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + config.i18n.specialPage[name] + &amp;#039;&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&amp;#039;&lt;br /&gt;
		}&lt;br /&gt;
		return generatePurgeOption(&amp;#039;forcelinkupdate&amp;#039;)&lt;br /&gt;
			+ generatePurgeOption(&amp;#039;forcerecursivelinkupdate&amp;#039;)&lt;br /&gt;
			+ generatePurgeOption(&amp;#039;mathpurge&amp;#039;)&lt;br /&gt;
			+ &amp;#039;&amp;lt;button id=&amp;quot;&amp;#039; + namespaced(&amp;#039;purge&amp;#039;) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + config.i18n.specialPage.purgeButton + &amp;#039;&amp;lt;/button&amp;gt;&amp;#039;&lt;br /&gt;
			+ &amp;#039;&amp;lt;button id=&amp;quot;&amp;#039; + namespaced(&amp;#039;null&amp;#039;) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + config.i18n.specialPage.nullButton + &amp;#039;&amp;lt;/button&amp;gt;&amp;#039;&lt;br /&gt;
	})()&lt;br /&gt;
	&lt;br /&gt;
	/* Loading */&lt;br /&gt;
	$.when(&lt;br /&gt;
		mw.loader.using([&amp;#039;mediawiki.util&amp;#039;]),&lt;br /&gt;
		$.ready&lt;br /&gt;
	).then(function() {&lt;br /&gt;
		if (mw.config.get(&amp;#039;wgPageName&amp;#039;).startsWith(config.i18n.specialPage.url)) {&lt;br /&gt;
			// special page&lt;br /&gt;
 			writeSpecialPage()&lt;br /&gt;
		} else {&lt;br /&gt;
 			// add portlet link&lt;br /&gt;
 			mw.util.addPortletLink(config.portletGroup, mw.util.getUrl(config.i18n.specialPage.url + &amp;#039;/&amp;#039; + mw.config.get(&amp;#039;wgPageName&amp;#039;)), config.i18n.portletText, config.portletId, config.i18n.portletTooltip, config.portletAccessKey, null);&lt;br /&gt;
		}&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	function writeSpecialPage() {&lt;br /&gt;
		var page = mw.config.get(&amp;#039;wgPageName&amp;#039;).split(config.i18n.specialPage.url + &amp;#039;/&amp;#039;)[1]&lt;br /&gt;
		if (page === undefined) return // no page specified&lt;br /&gt;
		&lt;br /&gt;
		/* Initialization */&lt;br /&gt;
		function initialize() {&lt;br /&gt;
			document.title = config.i18n.specialPage.documentTitle&lt;br /&gt;
			$(&amp;#039;h1&amp;#039;).text(config.i18n.specialPage.title + page);&lt;br /&gt;
			$(&amp;#039;#mw-content-text&amp;#039;)&lt;br /&gt;
				.empty()&lt;br /&gt;
				.append(config.specialPageSource)&lt;br /&gt;
			&lt;br /&gt;
			$(&amp;#039;#&amp;#039; + namespaced(&amp;#039;purge&amp;#039;)).on(&amp;#039;click&amp;#039;, doPurge)&lt;br /&gt;
			$(&amp;#039;#&amp;#039; + namespaced(&amp;#039;null&amp;#039;)).on(&amp;#039;click&amp;#039;, doNullEdit)&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		/* Actions */&lt;br /&gt;
		function doNullEdit(event) {&lt;br /&gt;
			var parameters = {&lt;br /&gt;
				action: &amp;#039;edit&amp;#039;,&lt;br /&gt;
				title: page,&lt;br /&gt;
				summary: (function(){&lt;br /&gt;
					if (config.debug) return config.i18n.nullSummary&lt;br /&gt;
					else return config.i18n.nullSummary + &amp;#039; &amp;#039; + config.i18n.nullBug&lt;br /&gt;
				})(),&lt;br /&gt;
				minor: true,&lt;br /&gt;
				nocreate: true,&lt;br /&gt;
				watchlist: &amp;#039;nochange&amp;#039;,&lt;br /&gt;
				appendtext: &amp;#039;&amp;#039;,&lt;br /&gt;
			}&lt;br /&gt;
			console.log(formatMessage(&amp;#039;POST with CSRF token&amp;#039;))&lt;br /&gt;
			console.log(parameters)&lt;br /&gt;
			new mw.Api()&lt;br /&gt;
				.postWithToken(&amp;#039;csrf&amp;#039;, parameters)&lt;br /&gt;
				.then(function(result) {&lt;br /&gt;
					console.log(formatMessage(&amp;#039;Success result&amp;#039;))&lt;br /&gt;
					console.log(result)&lt;br /&gt;
					window.location.href = mw.util.getUrl(page)&lt;br /&gt;
                }, function(result) {&lt;br /&gt;
					console.log(formatMessage(&amp;#039;Failure result&amp;#039;))&lt;br /&gt;
					console.log(result)&lt;br /&gt;
					mw.notify(config.i18n.nullFailed, {type: &amp;#039;error&amp;#039;});&lt;br /&gt;
				});&lt;br /&gt;
			event.preventDefault()&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		function doPurge(event) {&lt;br /&gt;
			var parameters = {&lt;br /&gt;
				action: &amp;#039;purge&amp;#039;,&lt;br /&gt;
				titles: page,&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;#039;.&amp;#039; + namespaced(&amp;#039;purge-options&amp;#039;))&lt;br /&gt;
				.each(function(index, element) { parameters[element.value] = element.checked })&lt;br /&gt;
			console.log(formatMessage(&amp;#039;POST&amp;#039;))&lt;br /&gt;
			console.log(parameters)&lt;br /&gt;
			new mw.Api()&lt;br /&gt;
				.post(parameters)&lt;br /&gt;
				.then(function(result) {&lt;br /&gt;
					console.log(formatMessage(&amp;#039;Success result&amp;#039;))&lt;br /&gt;
					console.log(result)&lt;br /&gt;
					window.location.href = mw.util.getUrl(page)&lt;br /&gt;
                }, function(result) {&lt;br /&gt;
					console.log(formatMessage(&amp;#039;Failure result&amp;#039;))&lt;br /&gt;
					console.log(result)&lt;br /&gt;
					mw.notify(config.i18n.purgeFailed, {type: &amp;#039;error&amp;#039;});&lt;br /&gt;
				});&lt;br /&gt;
			event.preventDefault()&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		initialize()&lt;br /&gt;
	}&lt;br /&gt;
})()&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Erland</name></author>
	</entry>
</feed>