Extension:Gadgets/zh

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

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

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

用法
一旦建立至少一個有效的小工具，所定義的小工具將在Special:Preferences的「小工具」章節顯示，使用者將能選擇他們想要使用的小工具. 由MediaWiki:Gadgets-definition定義的小工具總覽也顯示在Special:Gadgets，並附上指向對應系統訊息的連結以方便編輯. 非預設小工具的使用情況統計可在Special:GadgetUsage檢視.



格式
在MediaWiki:Gadgets-definition中每個以一個以上「*」（星號）字元開頭的行定義為小工具；它必須是以下的格式：

* mygadget [ 選項（可以省略） ] | 頁面名稱

第一個欄位（範例中的「 mygadget 」）是小工具的內部名稱，並引用一條系統訊息（此範例為MediaWiki:Gadget- mygadget ），其包含小工具的簡短描述，可使用wiki語法.

選項格式：

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

The ResourceLoader flag is required. Options that are "flags" only need to have their name written to be turned on. 每個選項可以是僅有選項名稱（在這種情況為flag選項）或包含以逗點隔開的值列表： 可以省略空格.

[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程式碼與 有相同的效果.

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

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

* 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:Gadget-mygadget.js和MediaWiki:Gadget-mygadget.css）；這些訊息的名稱必須分別是「.js」或「.css」結尾.

一個小工具可以使用任意數量的程式碼訊息，具體來說，除了自己的特定程式碼，共用程式碼可以放在一個程式碼訊息並由多個小工具使用，例如：

* frobinator[ResourceLoader]|commonStuff.js|frob.js|frob.css|pretty.css * l33t[ResourceLoader]|commonStuff.js|tools.js|l33t.js * foobar[ResourceLoader|package]|foo.js|bar.js|foobar.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.

