全站通知:

帮助:Gadget

刷新 历史
编辑WIKI
来自bilibili游戏中心 - WIKI
跳到导航 跳到搜索

说明[1]

  • 该小工具扩展为用户提供了以JavaScript或CSS为基础的“小工具”,是一种引入页面小工具(小组件)的一种方法,定义好的小工具,可以在 特殊:参数设置 中选择启用或者不启用该工具。
  • 小工具由位于MediaWiki命名空间中页面上的JavaScript和/或CSS代码段组成。 每个小工具均由 MediaWiki:Gadgets-definition 中的一行定义,提供该小工具的名称和说明,以及所使用的JS和CSS代码段的列表(请参见下面的“用法”部分)。
  • 由于小工具位于MediaWiki命名空间(定义小工具以及实际代码段的列表)中,因此只有界面管理员可以编辑代码。 情况应该是这样:只有Wiki社区特别信任的用户才可以编辑其他用户使用的JavaScript代码,因为JavaScript可以轻松地用于劫持帐户或监视他人。

用法

格式

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.jsGadget: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 在“特殊:参数设置”页面中隐藏小工具。有两种使用方法:
  • 默认启用小工具,并且不能禁用它(作为Common.js的模块化替代方法,便于管理)。
  • 启用的小工具并非最终提供给用户使用的小工具,而是需要作为其他小工具前置进行加载的小工具。例如,允许两个小工具重新使用相同的内部代码,或者仅在某些页面上加载的小工具的“核心”部分。
skins 逗号分隔皮肤名称 使用指定皮肤的用户可用,可以在“特殊:参数设置”中禁用。
default None 默认情况下为所有用户(包括未登录用户)启用该小工具,登陆用户可以通过“特殊:参数设置”页面根据喜好禁用。
targets desktop(默认),mobiledesktop,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.clipmygadget。请注意,小工具不能依赖页面,静态文件或外部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写法

注释