MediaWiki:Gadget-Difflink.js

注意:垃拉保存之后,侬作兴要清除浏览器个缓存才好看见改变。

  • Firefox或Safari:揿牢“Shift”个同时点击“刷新”,或揿“Ctrl-F5”或“Ctrl-R”(Mac上是“⌘-R”)
  • Google Chrome:揿“Ctrl-Shift-R”(Mac上是“⌘-Shift-R”)
  • Internet Explorer / Edge:揿牢“Ctrl”个同时点击“刷新”,或揿“Ctrl-F5”
  • Opera:去到菜单 → 设置(Mac上是Opera → 偏好设定),再转到隐私&安全 → 清除浏览数据 → 缓存个图片搭文件
//从中文维基百科抄得来个
//Released under GPL v3 license

function ins(dec, link, display) {
	mw.loader.using(['mediawiki.util', 'mediawiki.widgets', 'oojs-ui-windows'], function () {
		var linkNode = document.getElementById('t-difflink');
		if (linkNode === null) {
			linkNode = mw.util.addPortletLink('p-tb', '#', '内部链接', 't-difflink', '获得' + dec);
			if (linkNode === null)
				return;
		}
		linkNode.onclick = function (e) {
			e.preventDefault();
			var $dom = $('<div>');
			new Array(link, '[[' + link + ']]', '[[' + link + '|' + display + ']]').forEach(function (v) {
				$dom.append(new mw.widgets.CopyTextLayout({copyText: v, align: 'top'}).$element);
			});
			OO.ui.alert($dom, {title: dec, size: 'medium'});
		};
	});
}

function run() {
	var diff = mw.config.get('wgDiffNewId');
	if (diff) {
		var oldid = mw.config.get('wgDiffOldId');
		var insDiff = function (oldid) {
			var link = 'Special:Diff/';
			if (oldid)
				link += oldid + '/';
			link += diff;
			ins('当前隻差别个内部链接', link, '版本差别');
		};
		insDiff(oldid);
		if (oldid)
			new mw.Api().get({
				action: 'compare',
				fromrev: diff,
				torelative: 'prev',
				prop: 'ids'
			}).done(function (data) {
				if (
					diff === mw.config.get('wgDiffNewId') &&
					data.compare && data.compare.fromrevid === mw.config.get('wgDiffOldId')
				)
					insDiff();
			});
	} else if ($('#contentSub').find('.mw-revision').length) {
		var revisionid = mw.config.get('wgRevisionId');
		if (revisionid)
			ins('当前隻修订版本个内部链接', 'Special:PermanentLink/' + revisionid, '固定版本');
	}
}

$(function () {
	mw.hook('wikipage.content').add(run);
});