MediaWiki:Gadget-fixedWidthToggle.js

提供: Minecraft Wiki
ナビゲーションに移動 検索に移動
他言語版

注意: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

  • Firefox / Safari: ⇧ Shift を押しながら「再読み込み」をクリックするか、Ctrl + F5 または Ctrl + R を押してください(Macでは ⌘ Cmd + R
  • Google Chrome: Ctrl + ⇧ Shift + R を押してください(Macでは ⌘ Cmd + ⇧ Shift + R
  • Internet Explorer: Ctrl を押しながら「最新の情報に更新」をクリックするか、Ctrl + F5 を押してください
  • Opera: 「ツール → 設定」からキャッシュをクリアしてください。
$(function() {
	var i18n = {
		toggle: '固定幅のオン・オフを切り替える',
		toastTitle: '固定幅を有効にしました',
		failedToast: '固定幅の設定を保存できませんでした',
	};

	var isDefaultEnabled = mw.user.options.get('gadget-fixedWidth'),
	cookieOptions = {
		prefix: '',
		expires: 365 * 86400
	},
	portletLink = mw.util.addPortletLink(
		'p-personal',
		'',
		'',
		( isDefaultEnabled ? 'pt-fw-disable' : 'pt-fw-enable' ),
		i18n.toggle,
		null,
		$('#pt-dm-toggle, #pt-userpage, #pt-anonuserpage, #pt-createaccount')[0]
	);
	
	if ( mw.user.isAnon() ) {
		var useFixedWidth = mw.cookie.get('fixedWidth', cookieOptions.prefix, isDefaultEnabled && 'true') === 'true';
		if ( useFixedWidth != isDefaultEnabled ) { // bool != int
			toggleFixedWidth(isDefaultEnabled);
		}
	}
	
	$(portletLink).find('a').click(function(e) {
		e.preventDefault();
		
		var isEnabled = mw.user.options.get('gadget-fixedWidth');
		if ( mw.user.isAnon() ) {
			mw.cookie.set('fixedWidth', isEnabled ? 'false' : 'true', cookieOptions);
		}
		else {
			new mw.Api().saveOption('gadget-fixedWidth', isEnabled ? 0 : 1).fail(function() {
				mw.notify(i18n.failedToast, {
					title: i18n.toastTitle,
					type: 'warn',
					tag: 'fixedWidthToggle'
				});
			});
		}
		toggleFixedWidth(isEnabled);
	});
	
	function toggleFixedWidth(isEnabled) {
		if ( isEnabled ) {
			mw.user.options.set('gadget-fixedWidth', 0);
			document.documentElement.style.setProperty('--fixed-width', '100vw');
			portletLink.id = 'pt-fw-enable';
		}
		else {
			mw.user.options.set('gadget-fixedWidth', 1);
			document.documentElement.style.setProperty('--fixed-width', '');
			mw.loader.using(['ext.gadget.fixedWidth']).then(function() {
				portletLink.id = 'pt-fw-disable';
			});
		}
	}
});