帮助:Gadget
说明[1]
- 该小工具扩展为用户提供了以JavaScript或CSS为基础的“小工具”,是一种引入页面小工具(小组件)的一种方法,定义好的小工具,可以在 特殊:参数设置 中选择启用或者不启用该工具。
- 小工具由位于MediaWiki命名空间中页面上的JavaScript和/或CSS代码段组成。 每个小工具均由 MediaWiki:Gadgets-definition 中的一行定义,提供该小工具的名称和说明,以及所使用的JS和CSS代码段的列表(请参见下面的“用法”部分)。
- 由于小工具位于MediaWiki命名空间(定义小工具以及实际代码段的列表)中,因此只有界面管理员可以编辑代码。 情况应该是这样:只有Wiki社区特别信任的用户才可以编辑其他用户使用的JavaScript代码,因为JavaScript可以轻松地用于劫持帐户或监视他人。
用法
- 定义:在 MediaWiki:Gadgets-definition 上定义可用小工具的列表。或者在 Gadget definition:mygadget 中自定义。
- 启用:一旦创建了有效的小工具,可以在 特殊:参数设置#mw-prefsection-gadgets 查看和启用
- 说明:在 特殊:小工具 页面则可以查询到对应小工具的说明。
- 官方文档:www.mediawiki
格式
MediaWiki:Gadgets-definition
MediaWiki:Gadgets-definition 中的每一行以一个或多个“ *”(星号)字符开头,定义了一个小工具;它必须具有以下形式:
* gadget_name [选项(可以省略)] | 页面名称
第一个字段(示例中为“ gadget_name ”)是小工具的内部名称,并使用Wiki语法引用系统消息(示例中为MediaWiki:Gadget- gadget_name),其中包含对小工具的简短描述。 选项格式:
[选项1 | option2 | ... optionN]
空格可以省略。单个选项可以由单个选项名称(在这种情况下为标志选项)组成,也可以包含逗号分隔的值列表:
选项=值1,值2,值3
例子
* mygadget | mygadget.js | mygadget.css
或者
* mygadget [ResourceLoader] | mygadget.js | mygadget.css
或者
* mygadget [rights = foo,bar] | mygadget.js | mygadget.css
或者
* mygadget [ResourceLoader | rights = foo,bar] | mygadget.js | mygadget.css
使用小工具定义命名空间(Gadget definition:)
创建 Gadget definition:mygadget 页面并在其中放入以下JSON代码,效果等同于 *mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css
。
{
"settings": {
"rights": [ "foo", "bar" ],
"default": false,
"hidden": false,
"skins": [],
"category": ""
},
"module": {
"scripts": [ "mygadget.js" ],
"styles": [ "mygadget.css" ],
"peers": [],
"dependencies": [],
"messages": [],
"type": ""
}
}
在上面的示例中,使用了Gadget:Mygadget.js和Gadget:mygadget.css。
请记住,该ResourceLoader
选项在小工具定义名称空间中始终为true
。
选项
名称 | 参数 | 描述 |
---|---|---|
ResourceLoader |
None | Marks gadget's scripts as compatible with ResourceLoader. |
dependencies |
Comma-separated module names | See list of default modules. Note that this option has no effect if current gadget has no ResourceLoader-compatible resources (i.e. no styles and scripts not marked as compatible). |
rights |
Comma-separated privilege names | Make the gadget available (and visible in preferences) only to users who have the specified privileges. |
hidden |
None | 在“特殊:参数设置”页面中隐藏小工具。有两种使用方法:
|
skins |
逗号分隔皮肤名称 | 使用指定皮肤的用户可用,可以在“特殊:参数设置”中禁用。 |
default |
None | 默认情况下为所有用户(包括未登录用户)启用该小工具,登陆用户可以通过“特殊:参数设置”页面根据喜好禁用。 |
targets |
desktop (默认),mobile 或desktop,mobile |
设置小工具的RL(ResourceLoader)目标。 |
type
|
styles or general
|
Use styles for modules that only modify styling for elements already on the page (e.g. when customizing the skin, layout, or article content). It will cause the CSS files of the module to be included from the page HTML instead of being loaded via JavaScript. For details, see ResourceLoader/Migration guide (users)#Gadget type.
Note: Using styles will not load in any specified JavaScript files. For gadgets that modify styling for elements through both JavaScript and CSS, two individual gadget definitions are required. |
peers
|
Comma-separated module names | Require CSS-only gadgets (which usually would be hidden). These gadgets will be loaded sooner than by dependencies, and will be loaded even if JavaScript is disabled. For details, see ResourceLoader/Migration guide (users)#Gadget peers. |
您可以为小工具指定额外的依赖关系,例如:
* mygadget [ResourceLoader | dependencies = jquery.ui,jquery.effects.clip] | mygadget.js | mygadget.css
在这里,我们要问的ResourceLoader
来加载模块jquery.ui
,并jquery.effects.clip
与mygadget
。请注意,小工具不能依赖页面,静态文件或外部URL中的脚本,而只能依赖已在ResourceLoader
中注册的模块。要使页面中的脚本依赖于页面中的另一个脚本,每个脚本都应该是一个小工具,该小工具将自己注册为ResourceLoader
中的模块,然后可以使用以下语法将它们具有依赖性:
* childgadget [ResourceLoader | dependencies = ext.gadget.parentgadget] | childgadget.js
要默认启用小工具,请使用“default
”:
* mygadget [ResourceLoader | default | dependencies = mediawiki.util] | mygadget.js | mygadget.css
要使小工具仅对具有适当权限的用户可用,请设置该rights
选项。例如:
* ImprovedDeletion [rights=delete] | ImprovedDeletion.js
makes the gadget available only to users who can actually delete pages. Note that restrictions are based on permissions, not user groups like administrators or bureaucrats. Here are some real examples:
* modrollback[ResourceLoader|rights=rollback]|modrollback.js * UTCLiveClock[ResourceLoader|rights=purge]|UTCLiveClock.js * Ajax_sysop[ResourceLoader|rights=patrol,rollback,markbotedits,delete]|Ajax_sysop.js
ResourceLoader支持
每个小工具的CSS总是通过ResourceLoader
加载。但是,较早的JavaScript通常与ResourceLoader
不兼容,因此必须将每个小工具明确标记为兼容,以便ResourceLoader
加载其脚本。否则,将使用普通的<script src="/w/index.php?title=MediaWiki:Gadget-gadget_name.js&action=raw&ctype=text/javascript">
。
每个至少部分使用ResourceLoader
的小工具(即具有样式或兼容脚本的小工具)都有其自己的ResourceLoader
模块。这些模块名为ext.gadget.<gadget name>
。
Pages
The remaining fields on the line refer to the JavaScript or CSS code that makes up the gadget, contained in system messages (MediaWiki:Gadget-mygadget.js and MediaWiki:Gadget-mygadget.css in the example); the names of those messages must end with ".js" or ".css", respectively. A gadget can use any number of code messages, specifically, common code can be put into a code message used by several gadgets, in addition to their own specific code, e.g:
* frobinator|commonStuff.js|frob.js|frob.css|pretty.css * l33t|commonStuff.js|tools.js|l33t.js
Please note that if your code contains strings that could be interpreted as wiki syntax (e.g. the signature code 9388102(讨论) 2021年2月2日 (二) 17:50 (CST)
), you may want to enclose your code into and and put these tags in JavaScript or CSS comments so they're not interpreted when actually used. See the first and last lines of MediaWiki:Gadget-externalsearch-bar.js for an example.
栏目
可以使用以下行将MediaWiki:Gadgets-definition中的小工具列表分成几部分,这两行以两个或多个“ =(等号)字符开头和结尾,并包含定义该部分名称的系统消息的名称-例如:
== interface-gadgets ==
这将定义一个新部分,其标题定义在MediaWiki:Gadget-section-interface-gadgets页面上。
工具
BWIKI批量页面编辑器(作者:逗比的马老师)
BWIKI快速插入模板按钮(作者:逗比的马老师)
Tooltip弹窗工具(作者:咻咪啾咪)
问题记录
- Gadget中对
let
用法不兼容。let是js es6的,但是MediaWiki比较老只支持旧的es5 的var
写法