Skip to content

xiplus-mediawiki-programs/twinkle-szywiki

Repository files navigation

Twinkle

Twinkle是维基人用于快速执行常见维护工作(如提交删除候选及清理破坏)的JavaScript库和应用程式。

它构建于已被许多维基百科脚本和编辑工具使用的morebits.js库之上。

查看中文维基百科上的Wikipedia:Twinkle以获取更多信息。

AzaToth是本工具和morebits.js库的的最初作者和维护者。

此代码库的结构

  • morebits.js:Twinkle和许多其他脚本使用的中央库,包含与MediaWiki API进行交互、显示表单和对话框、生成状态日志及执行其他有用工作的代码。这当中大部分代码都不是Twinkle特有的。
  • morebits.cssmorebits.js所附带的样式表。在Modern皮肤中应用的一些样式是Twinkle特有的,或许这些应该被放进twinkle.css里。
  • sync.pl:用来更新维基上小工具、或用维基上的修改更新此代码库的Perl脚本。参见下方的完整文档。
  • twinkle.js:通用的Twinkle特有代码,大部分用于处理参数设置和在UI中显示Twinkle。此外,这个文件包含了Twinkle的默认参数。
  • modules:包含了单个Twinkle模块。相关说明可在头部注释或Twinkle文档中找到。模块twinkleconfig.js用于提供Twinkle参数设置

其他没有提到的文件大概已经过时了。

更新Wikipedia上的脚本

有两种方式将Twinkle脚本上传到维基百科或其他地方。

手工拼接

此处的指引已过时,请勿使用否则你很可能搞坏东西。

要生成拼接后的Twinkle脚本,请使用以下bash命令:

awk 'FNR==1{print ""}{print}' twinkle.js modules/*.js > alltwinkle.js

然后就可以把alltwinkle.js上传到MediaWiki:Gadget-Twinkle.js。这并未包含morebits.jsmorebits.css,它们需要被分开上传。

如果morebits.js和/或morebits.css需要更新,它们应当被同步到MediaWiki:Gadget-morebits.jsMediaWiki:Gadget-morebits.css

MediaWiki:Gadgets-definition应当包含这一行:

* Twinkle[ResourceLoader|dependencies=mediawiki.user,mediawiki.util,mediawiki.RegExp,mediawiki.Title,jquery.ui.dialog,jquery.tipsy|rights=autoconfirmed]|morebits.js|morebits.css|Twinkle.js|friendlyshared.js|friendlytag.js|friendlytalkback.js|twinklearv.js|twinklebatchdelete.js|twinklebatchundelete.js|twinkleblock.js|twinkleclose.js|twinkleconfig.js|twinklecopyvio.js|twinkledelimages.js|twinklediff.js|twinklefluff.js|twinkleimage.js|twinkleprotect.js|twinklespeedy.js|twinkleunlink.js|twinklewarn.js|twinklexfd.js

使用sync.pl同步

存在一个名为sync.pl的同步脚本,可用于向维基百科上拉取和推送文件。

这个程序依赖于Perl 5.10和模块Git::RepositoryMediaWiki::Bot,可轻易用App::cpanminus安装:

cpanm --sudo install Git::Repository MediaWiki::Bot

注意:在一些系统上,您可能需要安装附加的模块如File::SlurpGetopt::Long::Descriptive和其他依赖。建议您通过系统的包管理工具安装这些(如apt-get install libgetopt-long-descriptive-perl),但您也可以通过cpanm来安装。

在运行这个程序时,您可以在命令行中使用--username--password参数提供您的凭据,但更推荐将它们保存到~/.mwbotrc的文件中,采用以下格式:

username => "Username",
password => "password",
base     => "User::Username"

其中basepullpush文件时的wiki路径前缀。如果你不指定base参数,文件将会被推到MediaWiki名字空间。

留意您的工作目录不需要是干净的;亦可以stashcommit您的修改。

pull用户Foobar的修改(如User:Foobar/morebits.js),做:

./sync.pl --base User:Foobar --pull morebits.js

push您的修改到Foobar的wiki页,做:

./sync.pl --base User:Foobar --push morebits.js

也有一deploy命令来部署所有Twinkle文件。

./sync.pl --deploy twinkle.js
make deploy

请留意,要同步到一个自定义的维基,您也需要指定--lang和--family参数。比如,要同步文件到test.wmflabs.org,您应当指定--lang=test --family=wmflabs。如果您希望使用make deploy来部署所有文件,您也可能需要将相关参数通过Makefile传递给脚本,如:

make ARGS="--lang=test --family=wmflabs" deploy

编辑摘要会包含分支和上次提交的SHA。

格式指引

While old legacy code previously had many different and incoherent styles, it has been decided to utilize a more coherent style throughout the code, both for consistency and to cut down on potential errors. eslint can be used to check your code before submission and even repair many common issues. To install via npm, just run npm install from the main Twinkle directory in your terminal. You can then freely check your code by running npm run lint, and if you run npm run lint -- --fix then eslint will clean up some (but not all!) style differences. More information on specific style rules can be seen in issue #500 and in .eslintrc.json, but the best advice is to just follow the style of surrounding code!