From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

// Stub tag tab. Original version by [[User:ais523]], on a request by [[User:thesublime514]].

// Enhancements made on requests by [[User:Alai]] and [[User:jj137]].

// ([[User:ais523/stubtagtab2.js]])

// Edited version [[User:MC10/stubtagtab.js]]



(function ($) { // Wrap with anonymous function

    function stubTagTab() {

        var $h, $hb, $newa,

            // A list of subpages of WikiProject Stub sorting/Stub types/ that are relevant to this

            a = 'General', 'Commerce', 'Culture', 'Education', 'Geography', 'Government, law, and politics',

                 'History', 'Leisure', 'Military and weaponry', 'Organizations', 'People',

                 'Religion, mythology, faiths, and beliefs', 'Science', 'Sports', 'Technology', 'Transport',

                 'Miscellaneous'];

        $h = $("<div></div>", { "id": "stubtagtab" })

                 .css({

                     "color": "#000000",

                     "background-color": "#fff8f8"

                 });

        for (var i = 0; i < a.length; i++) {

            $newa = $("<a href=\"#\"></a>");

            $newa.click(function (e) {

                e.preventDefault();

                stubTagMenu($(this).text());

            });

            $newa.text(ai]);

            $h.append($newa);

            if ((i + 1) < a.length) {

                $h.append(" &bull; ");

            }

        }

        $("#contentSub").append($h);



        $hb = $("<div></div>", {

                  "color": "#000000",

                  "background-color": "#fffff8"

              });

        $hb.attr("id", "stubtagmenu");

        $("#contentSub").append($hb);

    }



    function stubTagMenuRender(data) {

        var $parseData = $(data.parse.text"*"]);

        $parseData.find("a").each(function () {

            var link = $(this).attr("href"),

                index = link.indexOf("Template:");

            if (index === -1) {

                $(this).attr({

                    "href": null,

                    "title": null

                });

                $(this).css({

                    "color": "#000000",

                    "text-decoration": "none"

                });

            } else {

                $(this).attr("href", mw.config.get("wgServer") + mw.config.get("wgScript")

                    + "?title=" + encodeURIComponent(mw.config.get("wgPageName"))

                    + "&action=edit&autoaddstubtag=" + encodeURIComponent(link.slice(index + 9)));

            }

        });

        $("#stubtagmenu").html($parseData);

    }



    function stubTagMenuFail() {

        $("#stubtagmenu").html("Failed to load stub tags.");

    }



    function stubTagMenu(stubType) {

        // Add loading message

        $("#stubtagmenu").html("Loading stub tags, please wait...");



        // Fetch the relevant subpage of the WikiProject

        $.ajax({

            url: mw.config.get("wgServer") + mw.config.get("wgScriptPath") + '/api.php?action=parse&prop=text&text=' + encodeURIComponent('__NOTOC____NOEDITSECTION__\{\{Wikipedia:WikiProject Stub sorting/Stub types/' + stubType + '}}') + '&format=json',

            dataType: "json",

            success: stubTagMenuRender,

            error: stubTagMenuFail

        });

    }



    $(function () {

        if (mw.config.get("wgNamespaceNumber") === 0 && mw.config.get("wgAction") === "view"

                && $("#ca-edit").length !== 0) {

            var portletLink = mw.util.addPortletLink('p-cactions', '#', 'Stub', 'ca-stubtag', 'Add a stub tag to this page', '');

            $(portletLink).click(function (e) {

                e.preventDefault();

                if (!$("#stubtagtab").length) {

                    stubTagTab();

                }

            });

        }

        if (location.href.indexOf("&autoaddstubtag=") !== -1 && $("#wpTextbox1").length !== 0) {

            var x = decodeURIComponent(location.href.split("&autoaddstubtag=")[1]);

            if (x.indexOf("-stub") === -1) {

                x += "-stub";

            }

            $("#wpTextbox1").val($("#wpTextbox1").val() + "\n{" + "{" + x + "}}"); // add to the end of the article

            $("#wpSummary").val("Tagging with {" + "{" + x + "}} using [[User:MC10/stubtagtab.js|stubtagtab.js]]");

            $("#wpPreview").trigger("click");

        }

    });

} (jQuery)); // End wrap with anonymous function



// [[Category:Wikipedia scripts]]