Jump to content

User:Wolfgang42/stubtagtab.js

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]].
// From [[User:ais523/stubtagtab2.js]] and [[User:MC10/stubtagtab.js]] (identical)

// This version (at [[User:Wolfgang42/stubtagtab.js]]) removes the automatic preview, as it was slowing down the process.
// It will also automatically delete any {{stub}} tags that are hanging about and collapse 3 or more newlines into just 2.

(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>", {
                 "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(a[i]);
            $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();
                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
            // Note: only the first {{stub}} (if there are more than 1) will be removed.
            // This will also collapse any sequence of 3 or more newlines down to just 2, since the extras are extraneous.
            $("#wpTextbox1").val($("#wpTextbox1").val().replace("{{stub}}","").replace(/\n\n+/g,"\n\n"));
            $("#wpSummary").val("Tagging with {" + "{" + x + "}} using [[User:MC10/stubtagtab.js|stubtagtab.js]]");
        }
    });
} (jQuery)); // End wrap with anonymous function

// [[Category:Wikipedia scripts]]