利用者:Yuukin0248/quickOptions.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/**
* quickOptions.js
* ベクター外装向け。個人用ツールバーの「個人設定」をホバーすると一部の設定を切り替えるメニューを表示
*/
mw.loader.using(['mediawiki.util', 'mediawiki.api', 'oojs-ui']).then(() => {
mw.util.addCSS('.oo-ui-fieldLayout-header .oo-ui-labelElement-label { white-space: nowrap; }');
const settings = {
livePreview: mw.user.options.get('uselivepreview'),
defaultMinor: mw.user.options.get('minordefault'),
};
// 設定変更のチェック用
const originalSettings = {};
$.extend(originalSettings, settings);
const ooFieldLivePreviewOption = new OO.ui.FieldLayout(
new OO.ui.ToggleSwitchWidget({
value: settings.livePreview,
}).on('change', (value) => (settings.livePreview = Number(value))),
{ label: 'ライブプレビュー' }
);
const ooFieldDefaultMinorOption = new OO.ui.FieldLayout(
new OO.ui.ToggleSwitchWidget({
value: settings.defaultMinor,
}).on('change', (value) => (settings.defaultMinor = Number(value))),
{ label: '細部の編集' }
);
const submitButton = new OO.ui.ButtonInputWidget({
flags: ['progressive', 'primary'],
label: '保存',
type: 'submit',
});
const ooForm = new OO.ui.FormLayout({
items: [
new OO.ui.FieldsetLayout({
items: [ooFieldLivePreviewOption, ooFieldDefaultMinorOption],
}),
new OO.ui.FieldsetLayout({
items: [submitButton],
}),
],
}).on('submit', () => {
// 保存ボタンクリック
// 設定に変更がない場合は何もしない
if (JSON.stringify(originalSettings) === JSON.stringify(settings)) {
OO.ui.alert('設定が変更されていません。');
return;
}
OO.ui.confirm('設定を保存しますか?').then((confirmed) => {
if (confirmed) {
// MediaWiki API で個人設定を変更
new mw.Api()
.saveOptions({
uselivepreview: settings.livePreview,
minordefault: settings.defaultMinor,
})
.then(() => OO.ui.confirm('設定を保存しました。変更を反映するためにページを更新しますか?'))
.then((confirmed) => {
// オリジナル設定更新
$.extend(originalSettings, settings);
if (confirmed) location.reload();
});
}
});
return false; // ページ遷移を防ぐ
});
const popupOptionMenu = new OO.ui.PopupWidget({
$content: ooForm.$element,
padded: true,
head: true,
autoClose: true,
}).toggle(false);
$('#pt-preferences')
.append(popupOptionMenu.$element)
.on('mouseenter', () => popupOptionMenu.toggle(true));
});