幫助:小工具

来自WikiFur
跳转至: 导航搜索
MediiaWiki.png

本文章是一篇個人文章,故可能不合WikiFur的標準格式,觀點也可能不夠中立。為了禮貌,如想大幅更改內容時,請先联系作者碳酸氢狗DgHCo3,詢問過意見。


小工具(Gadget)让用户可以自由选择管理员提供的基于JavaScript或CSS的辅助性小工具。

小工具由位于MediaWiki命名空间页面中的JavaScript和CSS片段组成。 每个小工具由MediaWiki:Gadgets-definition中的一行所定义,并提供了小工具的名称及描述,以及JS和CSS代码片段的列表。

由于小工具位于MediaWiki命名空间,且JavaScript能轻松地劫持账号和监控他人,因此只有管理员才能编辑代码。

使用方法[编辑]

将一个新的小工具(Gadget)添加到WikiFur,需要编辑以下3个页面:

MediaWiki:Gadgets-definition
MediaWiki:Gadget-AAA
MediaWiki:Gadget-AAA.js

编辑并清除缓存后,一个新的“小工具”立刻在 特殊:参数设置 上显示给所有用户,用户可以在那里启用他们想使用的小工具。

当前由 MediaWiki:Gadgets-definition 定义的小工具的概述也在 特殊:参数设置 上显示,并带上指向相关系统消息和脚本/样式页的有用链接,以便于创建或编辑。

定义格式[编辑]

MediaWiki:Gadgets-definition 中每个以一个以上“*”(星号)字符开头的行定义一个小工具。 行必须是以下的格式,注意 *”后面有一个空格

* AAA [参数] | 页面名称.js | 页面名称</code>.css | ...

第一个字段(示例中的“AAA”)是小工具的内部名称,你还需要额外创建一个(MediaWiki:Gadget-AAA),相当于一本说明书,说明小工具的名称、简介、使用方法、兼容性、源码等。

参数格式:

[ResourceLoader | 参数 | 参数 | ... 参数N]

ResourceLoader参数是必需的,除非小工具仅包含样式。

属于“参数”的选项只需写上名称即可开启。 需要值的选项后跟一个等号和一个逗号分隔的值列表。

示例:

* AAA[ResourceLoader]|Gadget-AAA.js|Gadget-AAA.css

* AAA[ResourceLoader|package]| Gadget-AAA.js | Gadget-AAA-Foo.js | Gadget-AAA-data.json | Gadget-AAA-template.vue | Gadget-AAA.css

* AAA[ ResourceLoader | rights=foo, bar ] | AAA.js | AAA.css

设置好后该小工具会在说明页特殊:小工具展示。

参数[编辑]

WikiFur使用MediaWiki 1.23版本,高于此版本的参数可能无法运行。

选项 名称 参数 描述 Mediawiki版本
ResourceLoader 标记小工具脚本与资源加载器兼容。 1.17 (r76527)
dependencies 逗点隔开的模块名称 这些模块将在该小工具的脚本执行前加载。 参见默认模块列表。 1.17 (r76639)
rights 逗点隔开的权限名称 标记小工具仅对拥有特定权限的用户有效且在参数设置中可见。 1.18 (r85268)
hidden 从参数设置页面中隐藏小工具。 这可以以两种方式使用:
  • 默认激活小工具并不允许关闭(作为Common.js的模块化替代方案)。 注意您需要同时加入:hidden | default以对所有用户加载此模块。
  • 小工具不是给最终用户所用,而是让其他小工具加载。 例如允许两个小工具重用相同的内部代码,或对仅在特定页面加载的小工具注册“核心”部分。
1.28
skins 逗点隔开的皮肤名称 标记小工具仅对使用特定皮肤的用户有效且在参数设置中可见。 在MediaWiki 1.32之前它采用用户在参数设置中设置的皮肤,而不是当前显示的皮肤(例如在URL中加入?useskin=monobook,。 自从1.39版起,因为ResourceLoader模块不会在小工具无法使用的皮肤上注册,因此小工具无法在这些皮肤上作为依赖而被加载,或是在使用mw.loader.load()时也会有相同的情形。 1.19 (r100509)
actions 逗点隔开的操作名称 标记小工具仅在特定页面操作时有效。 例如使用actions = edit, history让小工具仅在编辑页面时和历史页面上加载。

指定edit操作时也会在action=submit加载。 无效的操作将导致小工具停用,不会在任何地方执行。

1.38 (gerrit:747112)
categories 以逗号分隔的分类名称 让小工具只能在指定的分类上使用。 例如:categories = Archived, Maintenance只会在Category:ArchivedCategory:Maintenance的页面上加载小工具。 1.42 (gerrit:1005092)
namespaces 以逗号分隔的命名空间编号 使小工具只能在指定的命名空间中可用。 例如,namespaces = 0, 2只在主空间和用户命名空间内会去加载小工具。 1.41 (gerrit:624517)
contentModels 逗号分隔的内容模型 在具有给定内容模型的页面上提供小工具。

例如,contentModels = wikitext只在wikitext页面加载小工具。

1.41 (gerrit:922062)
default 默认对所有人(包含IP)激活小工具。 已注册用户仍然可以在他们的参数设置中停用它。 1.18 (r85902)
package 标记小工具为packaged。

在此模式中,仅有第一个JavaScript会被执行,其他页面可通过使用require()函数来引入。 此模式也允许使用JSON页面,在其他情况无法被引用。

1.38
type styles (针对CSS小工具的默认值) 或general (其他情况下的默认值) 模块仅会修改页面上已存在元素的样式(自定义外观、排版或条目内容),可使用styles。 这让模块的CSS文件直接包含在页面的HTML中,而非通过JavaScript加载。

使用styles将不会加载任何指定的JavaScript文件。 对于同时通过JavaScript和CSS修改元素样式的小工具,需要使用两个单独的小工具定义。

1.28
peers 逗点隔开的小工具名称 这些仅使用CSS的小工具将与此小工具一起加载。 这些小工具将会比使用dependencies还快加载,且就算JavaScript被停用也会加载。 1.29
supportsUrlLoad true | false 标记小工具可通过URL查询参数加载。 1.38

您可以对您的小工具指定额外的依赖项,例如:

* AAA[ResourceLoader|dependencies=jquery.ui, jquery.effects.clip]|gadget-AAA.js|gadget-AAA.css

在这里,我们要求ResourceLoaderAAA一起加载模块jquery.uijquery.effects.clip

注意小工具无法依赖于来自页面、静态文件或外部URL的脚本,只有已经在ResourceLoader注册的模块可以使用。

要让来自某页面的脚本依赖来自另一页面的脚本,两个都必须作为小工具在ResourceLoader上注册为模块,它们才能使用以下语法设置依赖关系:

* AAA[ResourceLoader|dependencies=ext.gadget.parentgadget]|gadget-AAA.js

要默认激活小工具,使用“default”:

* AAA[ResourceLoader|default|dependencies=mediawiki.util]|gadget-AAA.js|gadget-AAA.css

页面[编辑]

定义行剩余的字段指向构成小工具模块的JavaScript、CSS、JSON(1.38版以上)及Vue.js(1.45版以上)源码页面。 它们作为系统讯息存储在MediaWiki命名空间内(此示例中的MediaWiki:Gadget-AAA.js和MediaWiki:Gadget-AAA.css)。 这些页面的名称必须分别以.css, .js, .json, .vue结尾。

一个小工具可以使用任意数量的源代码页面,例如:

* frobinator[ResourceLoader]|frob.js|frob.css|pretty.css
* l33t[ResourceLoader]|l33t.js
* foobar[ResourceLoader|package]|foo.js|bar.js|foobar-data.json
* foo[ResourceLoader|package|dependencies=vue,@wikimedia/codex]|codextest.js|codextest-main.vue|codextest-ChangeNameDialog.vue


请注意如果您的代码包含可被解析为wiki语法的字符串(例如,签名代码碳酸氢狗DgHCo3讨论) 2025年11月24日 (一) 20:47 (HKT)),您可能想要将您的代码包含在‎...‎内,将这些标签放在JavaScript或CSS注解中,它们才不会在实际使用中被解析。


分类[编辑]

MediaWiki:Gadgets-definition中的小工具栏表可以通过以两个以上的“=”(等号)字符开头及结尾的行来分隔成多个段落,用来分类不同小工具的用途。

== Browsin-gadgets ==(浏览小工具)
== Editing-gadgets ==(编辑小工具)
== interface-gadgets ==(用户自定义小工具)
== Library-gadgets == (库与兼容性小工具)

对应的页面如下:

MediaWiki:Gadget-section-Browsin-gadgets
MediaWiki:Gadget-section-Editing-gadgets
MediaWiki:Gadget-section-interface-gadgets
MediaWiki:Gadget-section-Library-gadgets

这四个分类已由管理员预设好,无需任何改动。

兼容性[编辑]

默认情况下,小工具支持默认的MonoBook皮肤,在其他的皮肤不一定兼容,需要自行测试,并使用自定义JavaScript去适配。