<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://agora.nasqueron.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Hotcatcheck.js</id>
	<title>MediaWiki:Gadget-Hotcatcheck.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://agora.nasqueron.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Hotcatcheck.js"/>
	<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=MediaWiki:Gadget-Hotcatcheck.js&amp;action=history"/>
	<updated>2026-04-20T03:03:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0-alpha</generator>
	<entry>
		<id>https://agora.nasqueron.org/index.php?title=MediaWiki:Gadget-Hotcatcheck.js&amp;diff=1903&amp;oldid=prev</id>
		<title>Dereckson: Import from Commons. Authors credit: https://commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-Hotcatcheck.js&amp;action=history</title>
		<link rel="alternate" type="text/html" href="https://agora.nasqueron.org/index.php?title=MediaWiki:Gadget-Hotcatcheck.js&amp;diff=1903&amp;oldid=prev"/>
		<updated>2024-11-21T20:19:00Z</updated>

		<summary type="html">&lt;p&gt;Import from Commons. Authors credit: https://commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-Hotcatcheck.js&amp;amp;action=history&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&lt;br /&gt;
* CheckCategories HotCat Extension –&lt;br /&gt;
* removes the template when categorizing (prompts before) with HotCat and&lt;br /&gt;
* adds a link &amp;quot;Categories are OK&amp;quot; to the category-section&lt;br /&gt;
*&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&lt;br /&gt;
*&lt;br /&gt;
* @rev 2 (2014-03-20)&lt;br /&gt;
* @author [[User:Rillke]], 2012&lt;br /&gt;
* @source User:Rillke/checkCat2.js @wikimedia Commons&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*global mw:false, $:false, alert:false */&lt;br /&gt;
/*jshint curly:false, smarttabs:true, nomen:false */&lt;br /&gt;
&lt;br /&gt;
mw.loader.using([&amp;#039;mediawiki.user&amp;#039;, &amp;#039;mediawiki.util&amp;#039;, &amp;#039;mediawiki.cookie&amp;#039;], function () {&lt;br /&gt;
&amp;#039;use strict&amp;#039;;&lt;br /&gt;
if (6 !== mw.config.get(&amp;#039;wgNamespaceNumber&amp;#039;) || window.HotCatAutoRemoveCheckCatOptOut || !$(&amp;#039;.checkcategories&amp;#039;)[0]) return;&lt;br /&gt;
&lt;br /&gt;
var chCatRE = /\{\{[Cc]heck[ _]categories[^\}\{]*\}\}/g,&lt;br /&gt;
	selfName = &amp;#039;([[MediaWiki:Gadget-Hotcatcheck.js|Script]]): &amp;#039;,&lt;br /&gt;
	cookieName = &amp;#039;checkCat&amp;#039;,&lt;br /&gt;
	cookie = mw.cookie.get(cookieName);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 ** A few styling helper functions&lt;br /&gt;
 **&lt;br /&gt;
 **/&lt;br /&gt;
var createjIcon = function (iconClass) {&lt;br /&gt;
	return $(&amp;#039;&amp;lt;span&amp;gt;&amp;#039;)&lt;br /&gt;
		.attr(&amp;#039;class&amp;#039;, &amp;#039;ui-icon &amp;#039; + iconClass + &amp;#039; catcheck-inline-icon&amp;#039;)&lt;br /&gt;
		.text(&amp;#039; &amp;#039;);&lt;br /&gt;
};&lt;br /&gt;
var createNotifyArea = function (textNode, icon, state) {&lt;br /&gt;
	return $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;)&lt;br /&gt;
		.attr(&amp;#039;class&amp;#039;, &amp;#039;ui-widget&amp;#039;)&lt;br /&gt;
		.append(&lt;br /&gt;
			$(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;)&lt;br /&gt;
			.attr({&lt;br /&gt;
				&amp;#039;class&amp;#039;: state + &amp;#039; ui-corner-all&amp;#039;,&lt;br /&gt;
				style: &amp;#039;margin-top: 20px; padding: 0.7em;&amp;#039;&lt;br /&gt;
			})&lt;br /&gt;
			.append(&lt;br /&gt;
				$(&amp;#039;&amp;lt;p&amp;gt;&amp;#039;).append(&lt;br /&gt;
				createjIcon(icon).css(&amp;#039;marginRight&amp;#039;, &amp;#039;0.3em&amp;#039;),&lt;br /&gt;
				textNode)));&lt;br /&gt;
};&lt;br /&gt;
mw.util.addCSS(&amp;#039;.catcheck-inline-icon { display: inline-block; position: relative; top: 2px; }&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
// Remove &amp;quot;check categories&amp;quot; when using HotCat&lt;br /&gt;
// Only executed on first submit&lt;br /&gt;
$(&amp;#039;body&amp;#039;).one(&amp;#039;submit.checkCatListener&amp;#039;, &amp;#039;#hotcatCommitForm&amp;#039;, function (e) {&lt;br /&gt;
	if (&amp;#039;disabled&amp;#039; === cookie) return true;&lt;br /&gt;
&lt;br /&gt;
	var hotCatForm = this,&lt;br /&gt;
		newVal = hotCatForm.wpTextbox1.value.replace(chCatRE, &amp;#039;&amp;#039;),&lt;br /&gt;
		dlgButtons = {},&lt;br /&gt;
		$dlgCheckCookie, $permaSaveHint, $textHintNode, $dlg;&lt;br /&gt;
&lt;br /&gt;
	var doRemove = function () {&lt;br /&gt;
		hotCatForm.wpSummary.value = &amp;#039;Removing [[Template:Check categories|{&amp;#039; + &amp;#039;{Check categories}}]] &amp;#039; + hotCatForm.wpSummary.value;&lt;br /&gt;
		hotCatForm.wpTextbox1.value = newVal;&lt;br /&gt;
	};&lt;br /&gt;
	var writeCookie = function (val) {&lt;br /&gt;
		mw.cookie.set(cookieName, val, {&lt;br /&gt;
			expires: 7,&lt;br /&gt;
			path: &amp;#039;/&amp;#039;&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
	dlgButtons[&amp;#039;Yes, Remove&amp;#039;] = function () {&lt;br /&gt;
		doRemove();&lt;br /&gt;
		if ($dlgCheckCookie[0].checked) writeCookie(&amp;#039;auto&amp;#039;);&lt;br /&gt;
		$(this).dialog(&amp;#039;close&amp;#039;);&lt;br /&gt;
	};&lt;br /&gt;
	dlgButtons[&amp;#039;No, keep it&amp;#039;] = function () {&lt;br /&gt;
		if ($dlgCheckCookie[0].checked) writeCookie(&amp;#039;disabled&amp;#039;);&lt;br /&gt;
		$(this).dialog(&amp;#039;close&amp;#039;);&lt;br /&gt;
	};&lt;br /&gt;
	var _addToJS = function (e) {&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
		if ($permaSaveHint.hasClass(&amp;#039;ui-state-disabled&amp;#039;)) return;&lt;br /&gt;
&lt;br /&gt;
		var $el = $(this);&lt;br /&gt;
&lt;br /&gt;
		$el.off(&amp;#039;click&amp;#039;).text(&amp;#039;Please wait.&amp;#039;);&lt;br /&gt;
		$permaSaveHint.addClass(&amp;#039;ui-state-disabled&amp;#039;);&lt;br /&gt;
		var params = {&lt;br /&gt;
			action: &amp;#039;edit&amp;#039;,&lt;br /&gt;
			title: &amp;#039;User:&amp;#039; + mw.config.get(&amp;#039;wgUserName&amp;#039;) + &amp;#039;/common.js&amp;#039;,&lt;br /&gt;
			summary: selfName + &amp;#039;Saving HotCat configuration.&amp;#039;,&lt;br /&gt;
			appendtext: $el.data(&amp;#039;addText&amp;#039;),&lt;br /&gt;
			token: (window[&amp;#039;wikilove-edittoken&amp;#039;] || mw.user.tokens.get(&amp;#039;csrfToken&amp;#039;)),&lt;br /&gt;
			format: &amp;#039;json&amp;#039;&lt;br /&gt;
		};&lt;br /&gt;
		var editDone = function (editStat) {&lt;br /&gt;
			if (!editStat) return;&lt;br /&gt;
			if (editStat.error) {&lt;br /&gt;
				alert(&amp;#039;Unable to save to your common.js using the API\n&amp;#039; + editStat.error.code + &amp;#039;\n&amp;#039; + editStat.error.info);&lt;br /&gt;
				$el.text(&amp;#039;Edit-Error!&amp;#039;);&lt;br /&gt;
			} else {&lt;br /&gt;
				$el.text(&amp;#039;Done.&amp;#039;);&lt;br /&gt;
				$permaSaveHint.fadeOut();&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		$.post(mw.util.wikiScript(&amp;#039;api&amp;#039;), params, editDone);&lt;br /&gt;
	};&lt;br /&gt;
	/**&lt;br /&gt;
	 ** On COM:VP there were people who said:&lt;br /&gt;
	 ** &amp;quot;Categorizing with HotCat does legit automated removal of the check-cat-message&amp;quot;&lt;br /&gt;
	 ** So we invented a dialog that should be readable by users even with very few English skills.&lt;br /&gt;
	 **/&lt;br /&gt;
	var prompt = function () {&lt;br /&gt;
		$dlgCheckCookie = $(&amp;#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; /&amp;gt;&amp;#039;).attr({&lt;br /&gt;
			id: &amp;#039;hotCatAutoRemoveCheckCatCookie&amp;#039;&lt;br /&gt;
		}).change(function () {&lt;br /&gt;
			if (this.checked) {&lt;br /&gt;
				$permaSaveHint.fadeIn();&lt;br /&gt;
			} else {&lt;br /&gt;
				$permaSaveHint.fadeOut();&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
		$textHintNode = $(&amp;#039;&amp;lt;ul&amp;gt;&amp;#039;);&lt;br /&gt;
		$(&amp;#039;&amp;lt;li&amp;gt;&amp;#039;).append($(&amp;#039;&amp;lt;a&amp;gt;&amp;#039;, {&lt;br /&gt;
			href: &amp;#039;#&amp;#039;,&lt;br /&gt;
			text: &amp;#039;Disable this feature.&amp;#039;&lt;br /&gt;
		}).data(&amp;#039;addText&amp;#039;, &amp;#039;\nwindow.HotCatAutoRemoveCheckCatOptOut = true;&amp;#039;).click(_addToJS))&lt;br /&gt;
			.appendTo($textHintNode);&lt;br /&gt;
		$(&amp;#039;&amp;lt;li&amp;gt;&amp;#039;).append($(&amp;#039;&amp;lt;a&amp;gt;&amp;#039;, {&lt;br /&gt;
			href: &amp;#039;#&amp;#039;,&lt;br /&gt;
			text: &amp;#039;Remove {{check categories}} when editing using HotCat without prompting.&amp;#039;&lt;br /&gt;
		}).data(&amp;#039;addText&amp;#039;, &amp;#039;\nwindow.HotCatAutoRemoveCheckCat = true;&amp;#039;).click(_addToJS))&lt;br /&gt;
			.appendTo($textHintNode);&lt;br /&gt;
&lt;br /&gt;
		$permaSaveHint = createNotifyArea($(&amp;#039;&amp;lt;span&amp;gt;&amp;#039;, {&lt;br /&gt;
			text: &amp;#039;Save these setting in your common.js: &amp;#039;&lt;br /&gt;
		}).append($textHintNode), &amp;#039;ui-icon-info&amp;#039;, &amp;#039;ui-state-highlight&amp;#039;);&lt;br /&gt;
		$dlg = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;).append($(&amp;#039;&amp;lt;span&amp;gt;&amp;#039;).attr({&lt;br /&gt;
			style: &amp;#039;font-size: 2em; line-height: 1.8em;&amp;#039;&lt;br /&gt;
		}).append(&lt;br /&gt;
			$(&amp;#039;&amp;lt;span&amp;gt;&amp;#039;).text(&amp;quot; {{check categories}} &amp;quot;).attr({&lt;br /&gt;
			style: &amp;#039;background-color:#F8CCB0; text-decoration:line-through !important; display:inline-block;&amp;#039;&lt;br /&gt;
		}),&lt;br /&gt;
			$(&amp;#039;&amp;lt;span&amp;gt;&amp;#039;).text(&amp;quot; ?&amp;quot;)))&lt;br /&gt;
			.append(&amp;#039;&amp;lt;br&amp;gt;&amp;#039;, $dlgCheckCookie, $(&amp;#039;&amp;lt;label&amp;gt;&amp;#039;).attr({&lt;br /&gt;
				&amp;#039;for&amp;#039;: &amp;#039;hotCatAutoRemoveCheckCatCookie&amp;#039;&lt;br /&gt;
			}).text(&amp;#039;Don\&amp;#039;t ask again&amp;#039;), &amp;#039;&amp;lt;br&amp;gt;&amp;#039;)&lt;br /&gt;
			.append(mw.user.isAnon() ? &amp;#039;&amp;#039; : $permaSaveHint.hide());&lt;br /&gt;
&lt;br /&gt;
		$dlg.dialog({&lt;br /&gt;
			modal: true,&lt;br /&gt;
			closeOnEscape: true,&lt;br /&gt;
			title: &amp;quot;{{check categories}} (−)?&amp;quot;,&lt;br /&gt;
			width: 450,&lt;br /&gt;
			buttons: dlgButtons,&lt;br /&gt;
			close: function () {&lt;br /&gt;
				$(&amp;#039;#hotcatCommitForm&amp;#039;).submit();&lt;br /&gt;
			},&lt;br /&gt;
			open: function () {&lt;br /&gt;
				var $buttons = $(this).parent().find(&amp;#039;.ui-dialog-buttonpane button&amp;#039;);&lt;br /&gt;
				$buttons.eq(0).button({&lt;br /&gt;
					icons: {&lt;br /&gt;
						primary: &amp;#039;ui-icon-circle-check&amp;#039;&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
				$buttons.eq(1).button({&lt;br /&gt;
					icons: {&lt;br /&gt;
						primary: &amp;#039;ui-icon-cancel&amp;#039;&lt;br /&gt;
					}&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	};&lt;br /&gt;
	if (newVal !== hotCatForm.wpTextbox1.value) {&lt;br /&gt;
		if (window.HotCatAutoRemoveCheckCat || cookie === &amp;#039;auto&amp;#039;) {&lt;br /&gt;
			doRemove();&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
		e.preventDefault();&lt;br /&gt;
		mw.loader.using([&amp;#039;jquery.ui&amp;#039;], function () {&lt;br /&gt;
			prompt();&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	return true;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Add OK-Link to the cats panel&lt;br /&gt;
var $okLink = $(&amp;#039;&amp;lt;a&amp;gt;&amp;#039;, {&lt;br /&gt;
	href: &amp;#039;#&amp;#039;,&lt;br /&gt;
	html: &amp;#039;&amp;lt;s&amp;gt;{{Check categories}}&amp;lt;/s&amp;gt;&amp;#039;,&lt;br /&gt;
	title: &amp;#039;Categories are OK! Immediately remove the template.&amp;#039;&lt;br /&gt;
}).click(function (e) {&lt;br /&gt;
	e.preventDefault();&lt;br /&gt;
	var $el = $(this);&lt;br /&gt;
	$el.off(&amp;#039;click&amp;#039;);&lt;br /&gt;
	var doEdit = function (result) {&lt;br /&gt;
		if (!result) return;&lt;br /&gt;
		$el.text(&amp;#039;Doing.&amp;#039;);&lt;br /&gt;
		var text = result.replace(chCatRE, &amp;#039;&amp;#039;);&lt;br /&gt;
		if (text === result) {&lt;br /&gt;
			$el.text(&amp;#039;Template not found!&amp;#039;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var params = {&lt;br /&gt;
			action: &amp;#039;edit&amp;#039;,&lt;br /&gt;
			title: mw.config.get(&amp;#039;wgPageName&amp;#039;),&lt;br /&gt;
			nocreate: 1,&lt;br /&gt;
			summary: selfName + &amp;#039;Categories are checked and OK. You can help [[Category:Media needing category review|reviewing]]!&amp;#039;,&lt;br /&gt;
			text: text,&lt;br /&gt;
			token: (window[&amp;#039;wikilove-edittoken&amp;#039;] || mw.user.tokens.get(&amp;#039;csrfToken&amp;#039;)),&lt;br /&gt;
			format: &amp;#039;json&amp;#039;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		var editDone = function (editStat) {&lt;br /&gt;
			if (!editStat) return;&lt;br /&gt;
			if (editStat.error) {&lt;br /&gt;
				alert(&amp;#039;Unable to remove &amp;quot;Check categories&amp;quot; with the API\n&amp;#039; + editStat.error.code + &amp;#039;\n&amp;#039; + editStat.error.info);&lt;br /&gt;
				$el.text(&amp;#039;Edit-Error!&amp;#039;);&lt;br /&gt;
			} else {&lt;br /&gt;
				$el.text(&amp;#039;Edit Done.&amp;#039;);&lt;br /&gt;
			}&lt;br /&gt;
			$(&amp;#039;.checkcategories&amp;#039;).fadeOut();&lt;br /&gt;
		};&lt;br /&gt;
		$el.text(&amp;#039;Doing..&amp;#039;);&lt;br /&gt;
		$.post(mw.util.wikiScript(&amp;#039;api&amp;#039;), params, editDone);&lt;br /&gt;
	};&lt;br /&gt;
	$el.text(&amp;#039;Doing&amp;#039;);&lt;br /&gt;
	$.ajax({&lt;br /&gt;
		url: mw.config.get(&amp;#039;wgScript&amp;#039;),&lt;br /&gt;
		data: {&lt;br /&gt;
			action: &amp;#039;raw&amp;#039;,&lt;br /&gt;
			title: mw.config.get(&amp;#039;wgPageName&amp;#039;).replace(/ /g, &amp;#039;_&amp;#039;),&lt;br /&gt;
			maxage: 0,&lt;br /&gt;
			smaxage: 0&lt;br /&gt;
		},&lt;br /&gt;
		dataType: &amp;#039;text&amp;#039;,&lt;br /&gt;
		error: function () {&lt;br /&gt;
			$el.text(&amp;#039;Error!&amp;#039;);&lt;br /&gt;
		},&lt;br /&gt;
		success: doEdit,&lt;br /&gt;
		type: &amp;#039;GET&amp;#039;,&lt;br /&gt;
		cache: false&lt;br /&gt;
	});&lt;br /&gt;
});&lt;br /&gt;
$(function () {&lt;br /&gt;
	$(&amp;#039;#catlinks&amp;#039;).find(&amp;#039;ul:first&amp;#039;).append($(&amp;#039;&amp;lt;li&amp;gt;&amp;#039;).append($okLink));&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dereckson</name></author>
	</entry>
</feed>