User:MC10/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.

// (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 = $("

", { "id": "stubtagtab" })

.css({

"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(" • ");

}

}

$("#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('__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 stubtagtab.js");

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

}

});

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

// Category:Wikipedia scripts