User:Opencooper/collapseBots.js: Difference between revisions
Appearance
Content deleted Content added
Opencooper (talk | contribs) maybe this will work |
Opencooper (talk | contribs) not exactly |
||
Line 55: | Line 55: | ||
} |
} |
||
setup(); |
// setup(); |
Revision as of 21:11, 28 April 2020
function setup() {
// If we're not reading a talk page, do nothing
if (!(mw.config.get('wgAction') === 'view'
&& mw.config.get('wgIsArticle')
&& !location.search.split('oldid=')[1] // Old revision
&& mw.config.get('wgNamespaceNumber') % 2 == 1)) { // talk namespaces have odd numbers
return;
}
mw.loader.load("jquery.makeCollapsible.styles");
$("#bodyContent h2").each(tryCollapse);
}
function tryCollapse() {
var talkNodes = $(this).nextUntil("h2");
var lastSignature = $(talkNodes).find("a[href^='/wiki/User:']").last();
if (lastSignature.length) {
console.log("User:Opencooper/collapseBots.js: " + lastSignature.text());
checkBotStatus($(this), lastSignature.text());
}
}
function checkBotStatus(header, username) {
// API docs: https://www.mediawiki.org/wiki/API:Users
$.ajax({
url: "https://en.wikipedia.org/w/api.php",
data: {
action: "query",
list: "users",
format: "json",
ususers: username,
usprop: "groups"
},
success: function(response) {
var user = response.query.users[0];
if (user.groups && user.groups.includes("bot")) {
console.log("User:Opencooper/collapseBots.js: " + username + " is a bot.");
collapseSection($(header));
}
}
});
}
// In-house method: https://www.mediawiki.org/wiki/Manual:Collapsible_elements
function collapseSection(header) {
var siblings = $(header).nextUntil("h2");
$(siblings).wrapAll("<div class='mw-collapsible-content'></div>");
siblings = $(header).nextUntil("h2"); // recompute b/c of collapsible
var section = $().add(header).add(siblings);
$(section).wrapAll("<div class='collapseBots mw-collapsed'></div>"); // mw-collapsed
$(".collapseBots").makeCollapsible();
}
// setup();