User:Wolfgang42/stubtagtab.js

// 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 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 = $("  ", { "color": "#000000", "background-color": "#fff8f8" });       for (var i = 0; i < a.length; i++) {            $newa = $("");            $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 = $(" ", {                  "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('\{\{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  (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("","").replace(/\n\n+/g,"\n\n"));            $("#wpSummary").val("Tagging with {" + "{" + x + "}} using stubtagtab.js");        }    }); } (jQuery)); // End wrap with anonymous function

//