MediaWiki:Mobile.js

提供:Vikipedia
2019年6月23日 (日) 02:05時点における𩸽 (トーク | 投稿記録)による版

注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Internet Explore/Edger: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
  • Opera: Ctrl-F5を押してください
// @ts-check

(async () => {
    /**
     * @typedef {import("jquery")} JQuery
     */

    /**
     * @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();

    const menu = $(".menu");

    menu.find("ul").first().remove();

    if (config.wgArticleId > 1) {
        const hlist = $("<ul>")
            .addClass("hlist")
            .css("word-break", "break-all")
            .prependTo(menu);

        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);
    }

    const ul = $("<ul>").prependTo(menu);

    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);
    }
})();