<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://test.zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-GadgetsDefinition.js</id>
	<title>MediaWiki:Gadget-GadgetsDefinition.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://test.zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-GadgetsDefinition.js"/>
	<link rel="alternate" type="text/html" href="https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;action=history"/>
	<updated>2026-07-18T03:22:38Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=265&amp;oldid=prev</id>
		<title>鹿野耕云：​鹿野耕云移动页面MediaWiki:BetterGadgetsDefinition.js至MediaWiki:Gadget-GadgetsDefinition.js，不留重定向</title>
		<link rel="alternate" type="text/html" href="https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=265&amp;oldid=prev"/>
		<updated>2026-06-14T04:34:23Z</updated>

		<summary type="html">&lt;p&gt;鹿野耕云移动页面&lt;a href=&quot;/w/index.php?title=MediaWiki:BetterGadgetsDefinition.js&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;MediaWiki:BetterGadgetsDefinition.js（页面不存在）&quot;&gt;MediaWiki:BetterGadgetsDefinition.js&lt;/a&gt;至&lt;a href=&quot;/wiki/MediaWiki:Gadget-GadgetsDefinition.js&quot; title=&quot;MediaWiki:Gadget-GadgetsDefinition.js&quot;&gt;MediaWiki:Gadget-GadgetsDefinition.js&lt;/a&gt;，不留重定向&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年6月14日 (日) 12:34的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh-Hans&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key zybkcn_com:diff:1.41:old-264:rev-265 --&gt;
&lt;/table&gt;</summary>
		<author><name>鹿野耕云</name></author>
	</entry>
	<entry>
		<id>https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=264&amp;oldid=prev</id>
		<title>2026年6月14日 (日) 04:33 鹿野耕云</title>
		<link rel="alternate" type="text/html" href="https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=264&amp;oldid=prev"/>
		<updated>2026-06-14T04:33:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;amp;diff=264&amp;amp;oldid=157&quot;&gt;显示更改&lt;/a&gt;</summary>
		<author><name>鹿野耕云</name></author>
	</entry>
	<entry>
		<id>https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=157&amp;oldid=prev</id>
		<title>WikiBot：​WikiBot移动页面MediaWiki:Gadget-GadgetsDefinition.js至MediaWiki:BetterGadgetsDefinition.js，不留重定向：​Migrating to SiteJS dispatcher pattern</title>
		<link rel="alternate" type="text/html" href="https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=157&amp;oldid=prev"/>
		<updated>2026-06-13T03:03:10Z</updated>

		<summary type="html">&lt;p&gt;WikiBot移动页面&lt;a href=&quot;/wiki/MediaWiki:Gadget-GadgetsDefinition.js&quot; title=&quot;MediaWiki:Gadget-GadgetsDefinition.js&quot;&gt;MediaWiki:Gadget-GadgetsDefinition.js&lt;/a&gt;至&lt;a href=&quot;/w/index.php?title=MediaWiki:BetterGadgetsDefinition.js&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;MediaWiki:BetterGadgetsDefinition.js（页面不存在）&quot;&gt;MediaWiki:BetterGadgetsDefinition.js&lt;/a&gt;，不留重定向：​Migrating to SiteJS dispatcher pattern&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年6月13日 (六) 11:03的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh-Hans&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key zybkcn_com:diff:1.41:old-142:rev-157 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
	<entry>
		<id>https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=142&amp;oldid=prev</id>
		<title>WikiBot：​创建 GadgetsDefinition 小工具</title>
		<link rel="alternate" type="text/html" href="https://test.zybkcn.com/w/index.php?title=MediaWiki:Gadget-GadgetsDefinition.js&amp;diff=142&amp;oldid=prev"/>
		<updated>2026-06-12T16:30:04Z</updated>

		<summary type="html">&lt;p&gt;创建 GadgetsDefinition 小工具&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&lt;br /&gt;
 * Adds links to gadget definitions in [[MediaWiki:Gadgets-definition]] and&lt;br /&gt;
 * prettifies them by adding whitespace.&lt;br /&gt;
 * Adds anchors to gadget definitions as well as CSS to highlight them when we&lt;br /&gt;
 * click a link to them.&lt;br /&gt;
 *&lt;br /&gt;
 * Can be loaded with the following code:&lt;br /&gt;
mw.loader.load(&amp;quot;//en.wiktionary.org/w/index.php?title=User:Erutuon/scripts/gadgets-definition.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;quot;);&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/* jshint boss: true, undef: true, unused: true */&lt;br /&gt;
/* globals $, mw */&lt;br /&gt;
&lt;br /&gt;
(function gadgetsDefinitionIIFE () {&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Only operate on [[MediaWiki:Gadgets-definition]] when the text is visible.&lt;br /&gt;
if (!(mw.config.get(&amp;quot;wgCanonicalNamespace&amp;quot;) == &amp;quot;MediaWiki&amp;quot;&lt;br /&gt;
&amp;amp;&amp;amp; mw.config.get(&amp;quot;wgTitle&amp;quot;) === &amp;quot;Gadgets-definition&amp;quot;&lt;br /&gt;
&amp;amp;&amp;amp; document.querySelector(&amp;quot;.mw-parser-output&amp;quot;)))&lt;br /&gt;
	return;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Set window.gadgetsDefinitionWhitespaceUnchanged = true&lt;br /&gt;
 * in [[Special:MyPage/common.js]] to turn off the addition of spaces around&lt;br /&gt;
 * punctuation in [[MediaWiki:Gadgets-definition]].&lt;br /&gt;
 */&lt;br /&gt;
const addSpaces = !window.gadgetsDefinitionWhitespaceUnchanged;&lt;br /&gt;
mw.loader.using(&amp;quot;mediawiki.util&amp;quot;, function () {&lt;br /&gt;
	// Highlight a gadget&amp;#039;s definition when we follow a link to it.&lt;br /&gt;
	mw.util.addCSS(`.page-MediaWiki_Gadgets-definition li:target {&lt;br /&gt;
		background: var(--background-color-progressive-subtle, #eaf3ff);&lt;br /&gt;
	}`);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Technique gleaned from [[w:fr:Utilisateur:Od1n/AddLinksGadgetsDefinition.js]].&lt;br /&gt;
// This anchor element is used to generate links and is not attached to the document.&lt;br /&gt;
var link = document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
function makeLink(href, text) {&lt;br /&gt;
	link.href = href;&lt;br /&gt;
	link.textContent = text;&lt;br /&gt;
	return link.outerHTML;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeWikilink(page, text) {&lt;br /&gt;
	return makeLink(mw.util.getUrl(page), text || page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function linkGadgetSource(sourcePage) {&lt;br /&gt;
	return makeWikilink(&amp;quot;MediaWiki:Gadget-&amp;quot; + sourcePage, sourcePage);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function linkGadgetAnchor(gadgetName, text) {&lt;br /&gt;
	return makeLink(&amp;quot;#&amp;quot; + makeGadgetId(gadgetName), text || gadgetName);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var gadgetNameRegex = /^(\s*)([\w_-]+)\s*/;&lt;br /&gt;
function getGadgetName(innerHTML) {&lt;br /&gt;
	var match = gadgetNameRegex.exec(innerHTML);&lt;br /&gt;
	return match ? match[2] : null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeGadgetId(gadgetName) {&lt;br /&gt;
	return &amp;quot;Gadget-&amp;quot; + gadgetName;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function processGadgetDefinition(innerHTML) {&lt;br /&gt;
	return innerHTML&lt;br /&gt;
		// link gadget name to system message page and add space after it&lt;br /&gt;
		.replace(gadgetNameRegex,&lt;br /&gt;
			function (wholeMatch, whitespace, gadgetName) {&lt;br /&gt;
				return whitespace&lt;br /&gt;
					+ linkGadgetSource(gadgetName)&lt;br /&gt;
					+ (addSpaces ? &amp;quot; &amp;quot; : &amp;quot;&amp;quot;);&lt;br /&gt;
			})&lt;br /&gt;
		.replace(/([\w_\-\.]+\.(?:css|js(?:on)?))/g, linkGadgetSource) // link script names&lt;br /&gt;
		.replace(/(\s*)\|(\s*)/g, addSpaces ? &amp;quot; | &amp;quot; : &amp;quot;$1|$2&amp;quot;) // spaces around pipes&lt;br /&gt;
		&lt;br /&gt;
		/*&lt;br /&gt;
		 * process options&lt;br /&gt;
		 *&lt;br /&gt;
		 * Link dependencies: ext.gadget.name to entry on this page, others to&lt;br /&gt;
		 * [[mw:ResourceLoader/Core modules]] (even though not all have an entry&lt;br /&gt;
		 * there).&lt;br /&gt;
		 *&lt;br /&gt;
		 * Link peers to entry on this page.&lt;br /&gt;
		 *&lt;br /&gt;
		 * Link rights to [[mw:Manual:User_rights#List_of_permissions]]. There&lt;br /&gt;
		 * are unfortunately no anchors for individual rights.&lt;br /&gt;
		 *&lt;br /&gt;
		 * Link skin names to page in Skin namespace on MediaWiki.&lt;br /&gt;
		 *&lt;br /&gt;
		 * Add tooltip to namespace numbers showing local namespace name.&lt;br /&gt;
		 *&lt;br /&gt;
		 * Link category names to category pages.&lt;br /&gt;
		 */&lt;br /&gt;
		.replace(/([a-z]+)(\s*)=(\s*)(.+?)(?=\s*[|\]])/g,&lt;br /&gt;
			function (wholeMatch, key, whitespace1, whitespace2, value) {&lt;br /&gt;
				function mapValues(transformer) {&lt;br /&gt;
					return value.replace(/([^,\s](?:[^,]*[^,\s])*)(?=\s*(?:,|$))/g, transformer);&lt;br /&gt;
				}&lt;br /&gt;
				var formattedValue = value;&lt;br /&gt;
				switch (key) {&lt;br /&gt;
					case &amp;quot;dependencies&amp;quot;:&lt;br /&gt;
						formattedValue = mapValues(function (dependency) {&lt;br /&gt;
							var gadgetName = /^ext\.gadget\.(.+)$/.exec(dependency);&lt;br /&gt;
							if (gadgetName)&lt;br /&gt;
								return linkGadgetAnchor(gadgetName[1], dependency);&lt;br /&gt;
							else&lt;br /&gt;
								return makeWikilink(&amp;quot;mw:ResourceLoader/Core modules#&amp;quot; + dependency, dependency);&lt;br /&gt;
						});&lt;br /&gt;
						break;&lt;br /&gt;
					case &amp;quot;rights&amp;quot;:&lt;br /&gt;
						key = makeWikilink(&amp;quot;mw:Manual:User_rights#List_of_permissions&amp;quot;, key);&lt;br /&gt;
						break;&lt;br /&gt;
					case &amp;quot;skins&amp;quot;: {&lt;br /&gt;
						key = makeWikilink(&amp;quot;mw:Manual:Skins&amp;quot;, &amp;quot;skins&amp;quot;);&lt;br /&gt;
						formattedValue = mapValues(function(skin) {&lt;br /&gt;
							return makeWikilink(&amp;quot;mw:Skin:&amp;quot; + skin, skin);&lt;br /&gt;
						});&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
					case &amp;quot;peers&amp;quot;:&lt;br /&gt;
						formattedValue = mapValues(linkGadgetAnchor);&lt;br /&gt;
						break;&lt;br /&gt;
					case &amp;quot;namespaces&amp;quot;:&lt;br /&gt;
						const formattedNamespaces = mw.config.get(&amp;quot;wgFormattedNamespaces&amp;quot;);&lt;br /&gt;
						formattedValue = mapValues(function(namespaceId) {&lt;br /&gt;
							const namespaceNumber = parseInt(namespaceId);&lt;br /&gt;
							if (!isNaN(namespaceNumber)) {&lt;br /&gt;
								const namespaceName = formattedNamespaces[namespaceNumber];&lt;br /&gt;
								if (namespaceName != undefined) {&lt;br /&gt;
									const abbr = document.createElement(&amp;quot;abbr&amp;quot;);&lt;br /&gt;
									abbr.title = namespaceName === &amp;quot;&amp;quot; ? &amp;quot;(main)&amp;quot; : namespaceName;&lt;br /&gt;
									abbr.textContent = namespaceId;&lt;br /&gt;
									return abbr.outerHTML;&lt;br /&gt;
								}&lt;br /&gt;
							}&lt;br /&gt;
							return namespaceId;&lt;br /&gt;
						});&lt;br /&gt;
						break;&lt;br /&gt;
					case &amp;quot;categories&amp;quot;:&lt;br /&gt;
						formattedValue = mapValues(function(categoryName) {&lt;br /&gt;
							return makeWikilink(&amp;quot;Category:&amp;quot; + categoryName, categoryName);&lt;br /&gt;
						});&lt;br /&gt;
				}&lt;br /&gt;
				if (addSpaces) {&lt;br /&gt;
					whitespace1 = &amp;quot; &amp;quot;, whitespace2 = &amp;quot; &amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				return key + whitespace1 + &amp;quot;=&amp;quot; + whitespace2&lt;br /&gt;
					+ (addSpaces ? formattedValue.replace(/\s*,\s*/g, &amp;quot;, &amp;quot;) : formattedValue);&lt;br /&gt;
			});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(function () {&lt;br /&gt;
	var $parserOutput = $(&amp;quot;.mw-parser-output&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// :not(.gadgets-validation li) excludes elements under&lt;br /&gt;
	// class=&amp;quot;gadgets-definition&amp;quot; in output of Module:validate_gadgets on other wikis.&lt;br /&gt;
	&lt;br /&gt;
	// Process gadget definitions in lists.&lt;br /&gt;
	$parserOutput.find(&amp;quot;li:not(.gadgets-validation li)&amp;quot;).each(function (i, element) {&lt;br /&gt;
		// Add id so that gadget definitions can be highlighted when we click a link&lt;br /&gt;
		// to them.&lt;br /&gt;
		var gadgetName = getGadgetName(element.innerHTML);&lt;br /&gt;
		if (gadgetName)&lt;br /&gt;
			element.id = makeGadgetId(gadgetName);&lt;br /&gt;
		&lt;br /&gt;
		element.innerHTML = processGadgetDefinition(element.innerHTML);&lt;br /&gt;
	});&lt;br /&gt;
	&lt;br /&gt;
	// Process gadget definitions in pre tags.&lt;br /&gt;
	$parserOutput.find(&amp;quot;pre:not(.gadgets-validation pre)&amp;quot;).each(function (i, element) {&lt;br /&gt;
		element.innerHTML = element.innerHTML.replace(/[^\n]+/g, processGadgetDefinition);&lt;br /&gt;
	});&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
})(); // IIFE&lt;/div&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
</feed>