1
10
2012
0

GM 脚本:MediaWiki 脚注 tooltip

MediaWiki 使用脚注插件后就多了脚注功能。可无奈这插件把网页当成纸质书了,脚注得点击跳转后才能看到内容。我不胜其烦,遂作此脚本。只对我自己的 wiki 和英文维基百科启用了,因为另一个常去的 MediaWiki 站点——中文维基百科有个导航Popup小工具更好用。我还是一如既往地没有使用 jQuery。

// ==UserScript==
// @name           MediaWiki 脚注 tip
// @namespace      http://lilydjwg.is-programmer.com/
// @include        http://localhost/wiki/*
// @include        https://en.wikipedia.org/wiki/*
// ==/UserScript==

var showTip = function(evt){
  var el = evt.target;
  var left = el.offsetLeft;
  var top = el.offsetTop;
  var tip = document.getElementById('gm-tip');
  //not el.href here; we need the original one
  var tipTextEl = document.getElementById(el.getAttribute('href').substring(1));
  tip.innerHTML = tipTextEl.textContent.substring(2);
  tip.style.top = (top+5) + 'px';
  tip.style.left = (left+25) + 'px';
  tip.style.display = 'block';
};

var hideTip = function(){
  var el = document.getElementById('gm-tip');
  if(el){
    el.style.display = "none";
  }
};

var cites = document.querySelectorAll('.reference > a');
// var cites = document.querySelectorAll('a[href^="#cite_note-"]');
for(var i=0, len=cites.length; i<len; i++){
  cites[i].addEventListener("mouseover", showTip, false);
  cites[i].addEventListener("mouseout", hideTip, false);
}

var setup = function(){
  el = document.createElement('div');
  el.setAttribute('id', 'gm-tip');
  el.style.display = 'none';
  el.style.position = 'absolute';
  el.style.zIndex = '100';
  el.style.border = '1px #1e90ff solid';
  el.style.backgroundColor = 'rgba(115, 201, 230, 0.75)';
  el.style.padding = '0.2em 0.5em';
  var parentEl = cites[0].offsetParent;
  parentEl.appendChild(el);
};
if(cites.length > 0){
  setup();
}
5
28
2011
5

MediaWiki迁移记

前天我正式切换到了 Arch 下,接下来是繁杂的配置迁移工作,以至于这篇日志现在才写。

虽然之前已经完成了大部分配置,但刚切换到 Arch 下不久,还是发现还有太多的东西要配置。于是像往常一样打开火狐,试图访问自己的维基,看到连接失败的错误页面,才想起我的 MediaWiki 还没迁移过来了。于是先把别的放在一边,装 httpd 和 mediawiki。然后准备迁移数据。这时我更郁闷了:我把相关资料记在了 wiki 里。。。。

于是开始 chroot,进到原先的 Ubuntu 系统中,Apache 启动了,然后是 MySQL。果然悲剧无处不在,因为没经历正常的启动过程,upstart 罢工了。折腾半天,终于手动把 mysqld 跑起来了。原来的 wiki 一切正常,很顺利地找到这个链接。我打算在新 wiki 里使用 SQLite 取代 MySQL,少一个进程,而且省得什么时候服务器跑不起来了。本来还打算使用 nginx 取代 Apache 的,但是在虚拟机里配置失败了。

首先是导出原 wiki 的数据。到 MediaWiki 安装目录下执行类似下边的命令:

php maintenance/dumpBackup.php --full --uploads > wiki-backup.xml
tar -czf wiki-images.tgz images

然后把新 wiki 配置好,再导入数据:

php maintenance/importDump.php wiki-backup.xml
 
mkdir temporary
cp wiki-images.tgz temporary
cd temporary/
tar -xzf wiki-images.tgz
cd ../
mkdir tempimages
cp temporary/images/*/*/* tempimages
php maintenance/importImages.php tempimages

导入页面数据时速度很慢,和导出时形成鲜明对比,不知道是什么原因。导入图片的过程很麻烦,但我不管了,反正有效。以上就是那篇文章上说的步骤。但是这个步骤是不完整的。尝试访问新 wiki,问题就出现了——

首先发现的是首页没改。这个在编辑历史里撒消下就可以了。

然后是统计数据被清零了。恢复后的首页赫然显示“目前已有0条目”。“最近更改”也没有了。在 maintenance 目录下可以找到很多脚本。我看名字选了几个运行:

php maintenance/initStats.php
php maintenance/initEditCount.php
php maintenance/rebuildrecentchanges.php

跑完之后那些统计数据就恢复了。

最后一个问题是:图片全部找不到了!我运行了几个维护脚本,都没效果。图片确实导入了,但是又找不到。无奈之下开始 Google。少顷,在 MediaWiki 官网上找到了答案

php maintenance/rebuildImages.php --missing

原来是要加个--missing参数。

至此,我的 wiki 终于恢复了。以前它一直正常时不觉得什么,这次没有在第一时间让其就绪,才终于知道,自己这两年的近 500 个页面的笔记实在是太有用了!

Category: Linux | Tags: mediawiki wiki

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com