什么是MediaWiki的Gadget(小部件)
译自MediaWiki的官网,URL: http://www.mediawiki.org/wiki/Extension:Gadgets Gadget简介: MediaWiki,为用户提供了一种方法,使用户方便使用其它用户基于Javascript或者CSS创建的小部件Gadget. Gadget是由Javascript或者CSS代码片断组成的,被放置在MediaWiki名字空间里(对于MediaWiki的名字空间的概念请参看其它文章)。每一个Gadget都在MediaWiki:Gadgets-definition中占用一行,用来定义这个gadget。定义包括这个Gadget的名字,和描述以及组成这个Gadget的Javascript和CSS代码。 因为Gadget被放置在MediaWiki名字空间里,只有系统管理员可以编辑Gadget。这很容易理解:只有充分被信任的用户才可以编辑被其它更多用户使用的Javascript代码。Javascript代码是把双刃剑,如果被用来做坏事,会很容易被用来实现劫持账号或者监视用户的功能。 下载Gadget: 从https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/Gadgets.git;a=tree 可以下载到Gadget,或者也可以用git工具clone一份gadget,如下: git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Gadgets.git 如何安装: 把Gadget目录复制到你安装MediaWiki的扩展目录(Extensions Folder)。然后在localSetting.php文件中,接近文件末尾的地方加上一行: require_once( "$IP/extensions/Gadgets/Gadgets.php" ); 使用Gadget: 可以使用的Gadget定义在MediaWiki:Gadgets-definion。只要有一个有效的Gadget在MediaWiki:Gadgets-define被定义,就能在每个用户的Special:Preference的Gadgets节选择是否启用这个Gadget(小部件)。在Special:Gadgets也能浏览Gadgets的列表,并有链接指向各自的系统消息(System Message),以方便编辑。 定义Gadget的格式: 在MediaWiki:Gadgets-definition中的每个Gadget的定义都以一个或者多个"*"开始,必须符合下面的格式定义。 * Gadget的名字 [ 选项(可以忽略) ] | 页名字 (* gadget_name [options (can be omitted)] | page names) 第一个域,Gadget的名字指的是gadget的内部名字。这隐含了一个系统消息的引用(System Message)。此例中,如果你定义了内部名为 my_gadget_name 这样一个gadget,则在MediaWiki:Gadget-my_gadget_name有一个使用wiki语法的关于这个gadget的简短描述。 注意,gadget的内部命令规则:必须以字母起头,后面可以接26个字母的大小写或者数字,以及连字符“-”,下划线“_”,冒号“:”,点号“.”。 选项的格式: [option1 | option2 | … optionN] 空格将被忽略。每一个选项可以包括一个选项名,或者选项名还能被赋值,这些值以逗号隔开。如: option = value1, value2, value3 举一些Gadget定义的例子: * mygadget|mygadget.js|mygadget.css or * mygadget[ResourceLoader]|mygadget.js|mygadget.css or * mygadget[rights=foo,bar]|mygadget.js|mygadget.css or * mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css 选项的说明: 选项名 <td style="width:150px;"> <p> 参数 </p> </td> <td style="width:359px;"> <p> 描述 </p> </td> </tr> <tr> <td style="width:68px;"> <p> ResourceLoader </p> </td> <td style="width:150px;"> <p> None </p> </td> <td style="width:359px;"> <p> 注明Gadget与ResourceLoader兼容。 </p> </td> </tr> <tr> <td style="width:68px;"> <p> dependencies </p> </td> <td style="width:150px;"> <p> 用逗号分隔开的ResourceLoader模块名 </p> </td> <td style="width:359px;"> <p> 这里有<a href="http://www.mediawiki.org/wiki/ResourceLoader/Default_modules">默认依赖的模块列表</a>.如果当前的gadget没有与ResourceLoader兼容的资源,这个选项将失效。 </p> </td> </tr> <tr> <td style="width:68px;"> <p> rights </p> </td> <td style="width:150px;"> <p> 用逗号分隔开的权限名 </p> </td> <td style="width:359px;"> <p> 权限名列表在这里 <a href="http://www.mediawiki.org/wiki/Manual:User_rights#List_of_permissions">privileges</a>. </p> </td> </tr> <tr> <td style="width:68px;"> <p> skins </p> </td> <td style="width:150px;"> <p> 用逗号分隔开的皮肤名 </p> </td> <td style="width:359px;"> <p> 皮肤名列表在这里 <a href="http://www.mediawiki.org/wiki/Manual:Skins">skins</a>. </p> </td> </tr> <tr> <td style="width:68px;"> <p> default </p> </td> <td style="width:150px;"> <p> 无 </p> </td> <td style="width:359px;"> <p> 注明对每个用户,包括匿名用名默认启用的gadget。不过注册用户仍然可以在它们的使用偏好设定中禁用gadget. </p> </td> </tr> 你可以为你的gadget指定额外的依赖,如: ...