MediaWiki:Timeless.js

From The HOA
Revision as of 06:59, 7 March 2025 by TheFatherMind (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
mw.loader.using(['mediawiki.api']).then(function () {
    var category = "All_pages"; // Try using a category with known pages for debugging
    var sidebar = $("#mp-upper"); // Targeting the left sidebar in Timeless

    // Log if the sidebar is found
    if (sidebar.length === 0) {
        console.error("Sidebar container not found");
        return;
    }

    console.log("Sidebar container found, loading menu...");

    // Create a new menu using Timeless' built-in styling classes
    var $menu = $("<div>").addClass("portal").attr("id", "custom-category-menu"); // Using Timeless' portal class
    var $heading = $("<h3>").addClass("portal-heading").text("Pages in " + category);
    var $list = $("<ul>").addClass("portal-body");

    // Fetch category members from the API
    new mw.Api().get({
        action: "query",
        list: "categorymembers",
        cmtitle: "Category:" + category,
        cmlimit: 10,
        format: "json"
    }).done(function (data) {
        if (data.query && data.query.categorymembers.length > 0) {
            console.log("Category members found:", data.query.categorymembers);
            data.query.categorymembers.forEach(function (page) {
                $list.append($("<li>").append($("<a>").attr("href", mw.util.getUrl(page.title)).text(page.title)));
            });

            $menu.append($heading).append($list);
            sidebar.append($menu); // Append the menu to the Timeless left sidebar

            console.log("Menu added to sidebar.");
        } else {
            console.log("No pages found in the category.");
        }
    }).fail(function () {
        console.error("API request failed.");
    });
});