MediaWiki:MobileUI.js
表示
注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
- Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
- Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
- Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください。
// @ts-check
/**
* @typedef MobileUIMenuItem
* @prop {string} title
* @prop {string} page
* @prop {string | string[]} [class]
*/
/**
* @typedef MobileUI
* @prop {MobileUIMenuItem[]} menu
*/
/**
* @param {import("jquery")} $
* @param {any} mw
* @param {MobileUI} mobileUI
*/
function applyMobileUI($, mw, mobileUI) {
const config = {
wgArticleId: Number(),
wgServer: "",
wgScriptPath: String(),
};
Object.assign(config, mw.config.get(Object.keys(config)));
const wikiURL = `${config.wgServer}${config.wgScriptPath}`;
/**
* @type {JQuery<HTMLElement>[]}
*/
const groups = [];
const ul = $("<ul>");
groups.push(ul);
for (const menuItem of mobileUI.menu) {
const li = $("<li>").appendTo(ul);
$("<a>")
.text(menuItem.title)
.addClass(["mw-ui-icon", "mw-ui-icon-before"])
.attr("href", menuItem.page)
.appendTo(li);
}
if (config.wgArticleId > 1) {
const hlist = $("<ul>")
.addClass("hlist")
.css("word-break", "break-all");
const li = $("<li>").appendTo(hlist);
const dl = $("<dl>").appendTo(li);
$("<dt>")
.text("ページの短縮URL")
.css("display", "block")
.css("padding-left", "1em")
.appendTo(dl);
const dd = $("<dd>")
.css("display", "block")
.appendTo(dl);
const shortURL = `${wikiURL}/?curid=${config.wgArticleId}`;
$("<a>")
.text(shortURL)
.attr("href", shortURL)
.appendTo(dd);
groups.push(hlist);
}
$(".menu").ready($ => {
const menu = $(".menu");
menu.find("ul").first().remove();
menu.prepend(groups);
});
}