mediaWiki高级用法:TemplateData和Cargo

mw-cover

不得不说mediawiki用来收集整理资料真的非常合适,除了后端需要PHP环境这一个缺点,几乎挑不出什么毛病,无论自用还是团队协作都很好上手。除了最基本的纯文本编辑,模板功能也是一大亮点。最近在阶段性地收集公众号文章,借助Cargo和TemplateData可以实现一个很cool的功能:每个条目按照预设的表单录入。这样既保证了录入效率和完整性,也方便后续查找。

用了一段时间发现一个小问题:每次用模板录入的时候只能手动输入文本,TemplateData不支持多选或者时间选择器。一番搜索,发现最新的TemplateData插件已经在开发版加入了这个功能,同时还需要更新VisualEditor。试着手动替换最新版插件,编辑模板时新增了建议值一栏,然而启动VE时却被告知master分支现在只支持1.37版本的Mediawiki。

mw1

纠结了半天,无奈下拉栏诱惑力实在太强,还是下狠心来个大更新。官网提供了两种安装开发版的方式,下载压缩包直接覆盖或者git拉取。考虑到可能要测试不同的低版本,还是选择了后者。因为是从最近的1.36升上去,需要改动的地方并不多,按照文档一步一步操作。首先扫一眼Release Note,然后是UPGRADE文件。要注意以下几点:

  1. 不要直接拉mediawiki全仓库,过程会慢的你想哭,我们只需要主分支和最新几个commit。拉取完先更新下子模块,此外还需要composer。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    git clone --depth 3 --branch master https://gerrit.wikimedia.org/r/mediawiki/core.git public
    cd public
    git submodule update --init --recursive
    ## 更新php插件
    cd ~
    curl -sS https://getcomposer.org/installer -o composer-setup.php
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer
    cd public
    composer update --no-dev
  2. 除了VE之外的所有插件文件夹中的内容都复制过来,然后是皮肤文件夹,LocalSettings.php文件。对于VE我们从git拉取。images文件夹复制过来后需要改下文件权限chown -R www-data:www-data images,最后去maintenance文件夹运行更新php update.php

  3. Timeless皮肤似乎有些不兼容,nginx一直记录warning,所以替换为git拉取的开发版。

  4. VE拉取完之后还有一个步骤,更新子模块:git submodule update --init

  5. 会出现各种奇奇怪怪的问题,比如前端报错,VE报错,总之一通重启,逐个排除,终于跑通了流程

mw2

很可惜还是TemplateData还是不支持Time picker等高级组件,不过也可以用下拉框曲线救国,预设成类似2021-09-这种,然后手动加上日份,机智如我~

9.13更新

事情比我想象的还是要复杂些,通过上述操作,只有当vitrualEditor可用的时候,页面没有刷新,切换到VE的master分支并原地刷新页面才能看到上面的截图,只要关闭页面重开或者点到其他页面再返回,VE就会报错Error contacting the Parsoid/RESTBase server (HTTP 404)。就这个问题又纠结了好久,各种方法试遍了都没用,只有切换回REL1_36才能顺利打开VE,然而这样的话多选框就没有了,白折腾。为了VE不至于废掉,只能很不爽地切换回旧版。

今天无意中瞟了一眼VE的安装文档,无意中发现这样一句话”You must follow the instructions on the Parsoid page to configure Parsoid if you are installing VisualEditor from git”,原文还加粗显示了,然鹅一直被我忽略。。。顺着文档拉取parsoid(我放在了extensions文件夹),在LocalSettings.php中做好相应配置,检查nginx配置(居然已经填好了rest.php的规则,之前复制粘贴没有去琢磨每条规则的作用),VE切换回master分支,运行。多选框又回来了!尝试切换页面,一切正常。

所以这件事告诉我们:仔细读文档是多么重要~~

参考

⚓ T53375 TemplateData: Add parameter type for selecting one of predefined values (like “” or ENUM) (wikimedia.org)

Download from Git - MediaWiki

/ - mediawiki/core - Gitiles (wikimedia.org)

Extension:VisualEditor - MediaWiki