MediaWiki:Timeless.js: Difference between revisions

From The HOA
No edit summary
No edit summary
Line 1: Line 1:
mw.loader.using(['mediawiki.api']).then(function () {
mw.loader.using(['mediawiki.api']).then(function () {
     var category = "Resources"; // The name of the category
     var category = "Resources"; // The name of the category
     var sidebar = $("div[id*='sidebar'], div[id*='p-navigation']"); // More general selector
     var sidebar = $("div#site-navigation"); // Target the site-navigation container


    // Log to ensure we're targeting the correct container
     if (sidebar.length === 0) {
     if (sidebar.length === 0) {
         console.error("Sidebar container not found");
         console.error("Sidebar container not found");
Line 10: Line 11:
     console.log("Sidebar container found, loading menu...");
     console.log("Sidebar container found, loading menu...");


     // Create a new block for the menu (with a unique ID)
     // Create a new wrapper for the custom menu
     var $menuBlock = $("<div>").addClass("portal").attr("id", "custom-category-menu");
    var $menuWrapper = $("<div>").addClass("portal").attr("id", "custom-category-wrapper");
   
    // Create a new block for the menu
     var $menuBlock = $("<div>").addClass("portal-body").attr("id", "custom-category-menu");
     var $heading = $("<h3>").addClass("portal-heading").text("Pages in " + category);
     var $heading = $("<h3>").addClass("portal-heading").text("Pages in " + category);
     var $list = $("<ul>").addClass("portal-body");
     var $list = $("<ul>").addClass("portal-body");
Line 26: Line 30:
                 $list.append($("<li>").append($("<a>").attr("href", mw.util.getUrl(page.title)).text(page.title)));
                 $list.append($("<li>").append($("<a>").attr("href", mw.util.getUrl(page.title)).text(page.title)));
             });
             });
            // Log to confirm we have data
            console.log("Category pages found:", data.query.categorymembers);


             // Append the heading and list to the new block
             // Append the heading and list to the new block
             $menuBlock.append($heading).append($list);
             $menuBlock.append($heading).append($list);


             // Insert the new block into the sidebar container
            // Append the new block to the wrapper
             sidebar.append($menuBlock); // Add the block to the sidebar
            $menuWrapper.append($menuBlock);
 
             // Insert the new wrapper into the site-navigation container
             sidebar.append($menuWrapper); // Add the block to the sidebar
             console.log("Menu added to sidebar.");
             console.log("Menu added to sidebar.");
         } else {
         } else {
Line 42: Line 46:
         console.error("API request failed.");
         console.error("API request failed.");
     });
     });
    // Optionally hide the old category menu (if it exists)
    $("#p-navigation").hide();
});
});

Revision as of 07:14, 7 March 2025

mw.loader.using(['mediawiki.api']).then(function () {
    var category = "Resources"; // The name of the category
    var sidebar = $("div#site-navigation"); // Target the site-navigation container

    // Log to ensure we're targeting the correct container
    if (sidebar.length === 0) {
        console.error("Sidebar container not found");
        return;
    }

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

    // Create a new wrapper for the custom menu
    var $menuWrapper = $("<div>").addClass("portal").attr("id", "custom-category-wrapper");
    
    // Create a new block for the menu
    var $menuBlock = $("<div>").addClass("portal-body").attr("id", "custom-category-menu");
    var $heading = $("<h3>").addClass("portal-heading").text("Pages in " + category);
    var $list = $("<ul>").addClass("portal-body");

    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) {
            data.query.categorymembers.forEach(function (page) {
                $list.append($("<li>").append($("<a>").attr("href", mw.util.getUrl(page.title)).text(page.title)));
            });

            // Append the heading and list to the new block
            $menuBlock.append($heading).append($list);

            // Append the new block to the wrapper
            $menuWrapper.append($menuBlock);

            // Insert the new wrapper into the site-navigation container
            sidebar.append($menuWrapper); // Add the block to the sidebar
            console.log("Menu added to sidebar.");
        } else {
            console.log("No pages found in the category.");
        }
    }).fail(function () {
        console.error("API request failed.");
    });

    // Optionally hide the old category menu (if it exists)
    $("#p-navigation").hide();
});