LLWiki正在建设中,欢迎加入我们

MediaWiki:Gadget-HotDefaultSort.js

来自LLWiki
跳转到导航 跳转到搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 设置(Mac为Opera → Preferences),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件
//<nowiki>
// 引自[[wikipedia:User:BrandonXLF/HotDefaultSort.js]]
/*** Hot Default Sort ***/

// Adds an DEFAULTSORT key editor at the bottom of the page near the categories
// Documentation at [[wikipedia:User:BrandonXLF/HotDefaultSort]]
// By [[wikipedia:User:BrandonXLF]]

$(function() {
	if( ![0, 4, 6, 12, 14].includes( mw.config.get('wgNamespaceNumber') ) ||
		!mw.config.get('wgArticleId') ||
		mw.config.get("wgPageContentModel") !== "wikitext" ||
		mw.config.get('wgAction') != 'view' ||
		mw.config.get( 'wgIsRedirect' ) ||
		mw.config.get( 'wgRevisionId' ) < mw.config.get( 'wgCurRevisionId' )) {
		return;
	}

	var main = function() {
		$('#catlinks').append('<div id="mw-defaultsort">DEFAULTSORT: <ul><li></li></ul></div>');	
		var api = new mw.Api(),
			title = mw.config.get('wgPageName'),
			dsort = $('<span>').appendTo('#mw-defaultsort li'),
			hotlink = $('<span class="noprint">').insertAfter(dsort),
			edit = $('<input type="text" size=40>').appendTo(hotlink),
			add = $('<a href="#catlinks">(+)</a>').appendTo(hotlink),
			remove = $('<a href="#catlinks">(−)</a>').appendTo(hotlink),
			modify = $('<a href="#catlinks">(±)</a>').appendTo(hotlink),
			save = $('<input type="button" value="保存">').appendTo(hotlink),
			cancel = $('<input type="button" value="取消">').appendTo(hotlink),
			key = mw.config.get( 'wgDefaultSortKey' ) || '';

		var initialize = function() {
			if(key) {
				dsort.text(key);
				add.css('display', 'none');
				remove.css('display', 'inline');
				modify.css('display', 'inline');
			}
			else {
				remove.css('display', 'none');
				modify.css('display', 'none');
				add.css('display', 'inline');
			}
			edit.css('display', 'none');
			save.css('display', 'none');
			cancel.css('display', 'none');
		};
		initialize();
		cancel.on('click', initialize);
		var editStart = function() {
			dsort.text('');
			add.css('display', 'none');
			remove.css('display', 'none');
			modify.css('display', 'none');
			edit.css('display', 'inline').val(key);
			save.css('display', 'inline');
			cancel.css('display', 'inline');
		};
		add.on('click', editStart);
		modify.on('click', editStart);
		remove.on('click', function() {
			edit.val('');
			dsort.text('');
			remove.css('display', 'none');
			modify.css('display', 'none');
			save.css('display', 'inline');
			cancel.css('display', 'inline');
		});
		save.on('click', function () {
			if (key != edit.val()) {
				api.get({ action: 'query', prop: 'revisions', rvprop: 'ids|content', titles: title, formatversion: 2, rvslots: 'main' })
				.then(function(data){
					var revid = data.query.pages[0].revisions[0].revid,
						text = data.query.pages[0].revisions[0].slots.main.content;
					text = key ? text.replace(/{{DEFAULTSORT:.*?}}/g, '{{DEFAULTSORT:' + edit.val() + '}}') :
						text + '\n{{DEFAULTSORT:' + edit.val() + '}}';
					if(edit.val() === '') { text = text.replace(/{{DEFAULTSORT:.*?}}/g, ''); }
					api.postWithToken( 'csrf', {
						action: 'edit',
						title: title,
						text: text,
						baserevid: revid,
						summary: edit.val() ? '使用HotDefaultSort小工具' + wgULS('将默认排序关键词修改为“', '將預設排序方式修改為「') + edit.val() + wgULS('”', '」') : '使用HotDefaultSort小工具移除' + wgULS('默认排序关键词', '預設排序方式')
					}).then(function(){
						key = edit.val();
						   initialize();
					});
				});
			}
		});
	};
	
	mw.hook( 'gadget.hotcat.preloaded' ).add( main );
});
//</nowiki>