「MediaWiki:MobileUI.js」の版間の差分
表示
ページの作成:「// @ts-check (async () => { →* * @typedef {import("jquery")} JQuery: /** * @typedef MobileUIMenuItem * @prop {string} title * @prop…」 タグ: モバイル編集 モバイルウェブ編集 |
編集の要約なし タグ: モバイル編集 モバイルウェブ編集 |
||
| 3行目: | 3行目: | ||
(async () => { | (async () => { | ||
/** | /** | ||
* @typedef {import("jquery")} | * @typedef {import("jquery")} JQueryStatic | ||
*/ | */ | ||
| 36行目: | 36行目: | ||
const mobileUI = await response.json(); | const mobileUI = await response.json(); | ||
const | /** | ||
* @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) { | if (config.wgArticleId > 1) { | ||
const hlist = $("<ul>") | const hlist = $("<ul>") | ||
.addClass("hlist") | .addClass("hlist") | ||
.css("word-break", "break-all" | .css("word-break", "break-all"); | ||
const li = $("<li>").appendTo(hlist); | const li = $("<li>").appendTo(hlist); | ||
| 65行目: | 79行目: | ||
.attr("href", shortURL) | .attr("href", shortURL) | ||
.appendTo(dd); | .appendTo(dd); | ||
groups.push(hlist); | |||
} | } | ||
$(".menu").ready(() => { | |||
const menu = $(".menu"); | |||
menu.find("ul").first().remove(); | |||
const | menu.prepend(groups); | ||
}); | |||
} | |||
})(); | })(); | ||
2019年6月23日 (日) 23:45時点における版
// @ts-check
(async () => {
/**
* @typedef {import("jquery")} JQueryStatic
*/
/**
* @typedef MobileUIMenuItem
* @prop {string} title
* @prop {string} page
* @prop {string | string[]} [class]
*/
/**
* @typedef MobileUI
* @prop {MobileUIMenuItem[]} menu
*/
const config = {
wgArticleId: Number(),
wgServer: "",
wgScriptPath: String(),
};
Object.assign(config, mw.config.get(Object.keys(config)));
const wikiURL = `${config.wgServer}${config.wgScriptPath}`;
const mobileUIPath = `${wikiURL}/index.php?title=MediaWiki:MobileUI.json&action=raw&ctype=application/json`;
const response = await window.fetch(mobileUIPath);
/**
* @type {MobileUI}
*/
const mobileUI = await response.json();
/**
* @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);
});
})();