Extension:Gadgets/zh

小工具擴充功能提供了一種方式，能讓使用者選擇其他wiki使用者提供基於JavaScript和CSS的小工具.

小工具由位於MediaWiki命名空間頁面中的JavaScript和CSS組成. 每個小工具由MediaWiki:Gadgets-definition中的一行所定義，並提供了小工具的名稱及描述，以及JS和CSS程式碼片段的列表（參見底下的用法段落）.

由於小工具位於MediaWiki命名空間（定義小工具的列表和實際的程式碼判斷皆是），因此只有管理員（自1.32起為介面管理員）能編輯程式碼. 這是因為：只有受到wiki社群高度信任的使用者才能編輯JavaScript程式碼，因為它被其他使用者所用，且JavaScript能輕鬆地劫持帳號和監視他人.

用法
一旦用至少一个有效的小工具创建了 MediaWiki:Gadgets-definition，一个新的「小工具」部分将在 Special:Preferences 上显示给所有用户. 用户可以在那里启用他们想使用的小工具. 当前由 MediaWiki:Gadgets-definition 定义的小工具的概述也在 Special:Gadgets 上显示，并带上指向相关系统消息和脚本/样式页的有用链接，以便于创建或编辑. 小工具选项的统计在 Special:GadgetUsage.



定义格式
在MediaWiki:Gadgets-definition中每個以一個以上「*」（星號）字符開頭的行定义一个小工具. 行必須是以下的格式：

* mygadget [选项] | 頁面名稱

第一個欄位（範例中的「 mygadget 」）是小工具的內部名稱，选项页面的标签来自界面消息页面（MediaWiki:Gadget- mygadget ），可以在其中写入名称和简短描述，也允许使用wikitext语法.

選項格式：

[ResourceLoader | 選項1 | 選項2 | ... 選項N]

ResourceLoader标签是必须的，除非小工具仅包含样式. 标签选项只需要将其名称写上去就可以启用. 需要值的选项后跟一个等号和一个逗号分隔的值列表. 所有空格都是可选的，可以被省略.

[ResourceLoader | myflag | mykey = value1, value2, value3 ]

範例： * mygadget[ResourceLoader]|mygadget.js|mygadget.css 或 * mygadget[ResourceLoader|package]| mygadget.js | mygadget-Foo.js | mygadget-data.json | mygadget.css 或 * mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css



使用小工具定義命名空間
基於 ，有兩種方式可以定義小工具. 如果設定為 （預設值），則可用小工具的列表定義在MediaWiki:Gadgets-definition. 替代方式是當 設定為 時，小工具定義在Gadget definition命名空間中的頁面.

建立 頁面並放入以下的JSON程式碼與 有相同的效果.

在以上範例中，使用了 和.

选项
2023-09: For the new "namespaces" option, see T63007 and Gerrit 624517.

您可以對您的小工具指定額外的依賴項，例如：

* mygadget[ResourceLoader|dependencies=jquery.ui, jquery.effects.clip]|mygadget.js|mygadget.css

在這裡，我們要求ResourceLoader和mygadget一起載入模組 和. 注意小工具無法依賴於來自頁面、靜態文件或外部URL的腳本，只有已經在ResourceLoader註冊的模組可以使用. 要讓來自某頁面的腳本依賴來自另一頁面的腳本，兩個都必須作為小工具在ResourceLoader上註冊為模組，它們才能使用以下語法設定依賴關係：

* childgadget[ResourceLoader|dependencies=ext.gadget.parentgadget]|childgadget.js 要預設啟用小工具，使用「 」： * mygadget[ResourceLoader|default|dependencies=mediawiki.util]|mygadget.js|mygadget.css 要讓小工具僅對擁有適當權限的使用者可用，設定 選項，例如： * ImprovedDeletion [rights=delete] | ImprovedDeletion.js 讓小工具僅對擁有刪除權限的使用者可用.

注意此限制是基於權限，而不是例如管理員或行政員這樣的使用者群組. 這裡有一些實際例子；

* modrollback[ResourceLoader|rights=rollback]|modrollback.js * UTCLiveClock[ResourceLoader|rights=purge]|UTCLiveClock.js * Ajax_sysop[ResourceLoader|rights=patrol,rollback,markbotedits,delete]|Ajax_sysop.js

页面
定義行剩餘的欄位指向構成小工具模組的JavaScript、CSS或JSON源碼頁面. 它們作為系統訊息儲存在MediaWiki命名空間內（此範例中的MediaWiki:Gadget-mygadget.js和MediaWiki:Gadget-mygadget.css）. 這些頁面的名稱必須分別以「.css」、「.js」或「.json」結尾.

一個小工具可以使用任意數量的源代码页面，例如：

* frobinator[ResourceLoader]|frob.js|frob.css|pretty.css * l33t[ResourceLoader]|l33t.js * foobar[ResourceLoader|package]|foo.js|bar.js|foobar-data.json

請注意如果您的程式碼包含可被解析為wiki語法的字串（例如，簽名代碼 ），您可能想要將您的程式碼包含在內，將這些標籤放在JavaScript或CSS註解中，它們才不會在實際使用中被解析.

範例可參考MediaWiki:Gadget-externalsearch-bar.js的第一行和最後一行.

章節
MediaWiki:Gadgets-definition中的小工具列表可以透過以兩個以上的「=」（等號）字元開頭及結尾的行來分隔成多個段落，其中包含定義該段落的系統訊息名稱，例如：

== interface-gadgets ==

這定義了新段落，其中標題定義在MediaWiki:Gadget-section-interface-gadgets頁面中.

Popular gadgets
See Gadgets for gadgets which are popular in Wikimedia communities.



參閱

 * Special:Gadgets – lists all the gadgets and a brief description of each