User:2257/common.js: Difference between revisions
From the Super Mario Wiki, the Mario encyclopedia
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 102: | Line 102: | ||
if (matches) { | if (matches) { | ||
var itemData = logdata.getNext(); | var itemData = logdata.getNext(); | ||
if (itemData.logtype == "block") { | if (itemData.logtype == "block") { | ||
processBlockLog(item, itemData); | processBlockLog(item, itemData); |
Revision as of 22:46, May 28, 2015
function fixRecentChangesLink() {
var link = document.getElementById('n-recentchanges').getElementsByTagName( 'a' );
link[0].href = link[0].href + "?hidemyself=1";
}
addOnloadHook( fixRecentChangesLink );
function addInfoTab() {
//do things
mw.util.addPortletLink(
'p-cactions',
wgScript + "?title=" + wgPageName + "&action=info",
'info',
'ca-info',
'tooltip',
'i',
document.getElementById('ca-history').nextSibling
);
//fix the excessively stupid visual bug
document.getElementById('ca-info').parentNode.insertBefore(document.createTextNode("\n"), document.getElementById('ca-info'));
//if this is the info page, highlight it
if (wgAction == "info") {
document.getElementById('ca-info').className += "selected";
}
}
addOnloadHook( addInfoTab );
function addWorkLink() {
//do things
mw.util.addPortletLink(
'p-personal',
wgScript + "?title=Twentytwofiftyseven/test2",
'work page',
'pt-workpage',
'tooltip',
'w',
document.getElementById('pt-mytalk').nextSibling
);
//fix the excessively stupid visual bug
document.getElementById('pt-workpage').parentNode.insertBefore(document.createTextNode("\n"), document.getElementById('pt-workpage'));
}
addOnloadHook( addWorkLink );
// ==UserScript==
// @name phoenixthing
// @namespace http://userscripts.org/users/useridnumber
// @include http://www.mariowiki.com/*
// @version 1
// @grant none
// ==/UserScript==
var rclogs = new XMLHttpRequest();
rclogs.open("GET", "http://www.mariowiki.com/api.php?action=query&list=recentchanges&rclimit=500&rctype=log&rcprop=loginfo|user|title|timestamp&format=json", true);
rclogs.setRequestHeader('Api-User-Agent', 'Test/1.0');
rclogs.onreadystatechange = function() {
if (!(this.readyState == 4 && this.status == 200)) {
return;
}
var parsedRCLogs = JSON.parse(this.responseText);
parsedRCLogs.getNext = function() {
this.index++;
return this.query.recentchanges[this.index - 1];
}
parsedRCLogs.index = 0;
var lists = document.getElementsByClassName("mw-special-Recentchanges")[0] .getElementsByClassName("special");
for (var i = 0; i < lists.length; i++) {
var listitems = lists[i].getElementsByTagName("li");
for (var j = 0; j < listitems.length; j++) {
processListItem(listitems[j], parsedRCLogs);
}
}
}
if (document.getElementsByClassName("mw-special-Recentchanges").length != 0) {
rclogs.send();
}
function processListItem (item, logdata) {
var firstLinkRef = item.getElementsByTagName("a")[0].getAttribute("href");
var matches = firstLinkRef.match(/Special:Log\/(.*)/);
if (matches) {
var itemData = logdata.getNext();
if (itemData.logtype == "block") {
processBlockLog(item, itemData);
} else if (itemData.logtype == "delete") {
processDeleteLog(item, itemData);
} else if (itemData.logtype == "move") {
processMoveLog(item, itemData);
} else if (itemData.logtype == "protect") {
processProtectLog(item, itemData);
}
}
}
function processBlockLog(item, itemData) {
if (itemData.logaction == "unblock") {
return;
}
var username = itemData.title.substring(5);
item.appendChild(createLogeventActionlink([{text:"unblock",
title: "Special:Unblock/" + username,
href: "/Special:Unblock/" + username},
{text:"change block",
title: "Special:Block/" + username,
href: "/Special:Block/" + username}]));
}
function processDeleteLog(item, itemData) {
if (itemData.logaction == "restore") {
return;
} else if (itemData.logaction == "revision") {
if (!itemData[1].match(/,/)) {
item.appendChild(createLogeventActionlink([{text:"diff",
title: itemData.title,
href: "/index.php?title=" + itemData.title + "&diff=" + itemData[1] + "&unhide=1"},
{text:"change visibility",
title: "Special:Undelete",
href: "/index.php?title=Special:RevisionDelete&target=" + mediawikiURIEncode(itemData.title) + "&type=revision&ids=" + itemData[1]}]));
} else {
item.appendChild(createLogeventActionlink([{text:"change visibility",
title: "Special:Undelete",
href: "/index.php?title=Special:RevisionDelete&target=" + mediawikiURIEncode(itemData.title) + "&type=revision&ids=" + itemData[1]}]));
}
} else if (itemData.logaction == "event") {
item.appendChild(createLogeventActionlink([{text:"change visibility",
title: "Special:Undelete",
href: "/index.php?title=Special:RevisionDelete&target=" + mediawikiURIEncode(itemData.title) + "&type=logging&ids=" + itemData[0]}]));
} else if (itemData.logaction == "delete") {
item.appendChild(createLogeventActionlink([{text:"view/restore",
title: "Special:Undelete",
href: "/index.php?title=Special:Undelete&target=" + mediawikiURIEncode(itemData.title)}]));
}
}
function processMoveLog(item, itemData) {
if (itemData.logaction == "move_redir") {
return;
}
item.appendChild(createLogeventActionlink([{text:"revert",
title: "Special:MovePage",
href: "/index.php?title=Special:MovePage&wpOldTitle=" + mediawikiURIEncode(itemData.move.new_title) + "&wpNewTitle=" + mediawikiURIEncode(itemData.title) + "&wpReason=revert&wpMovetalk=0"}]));
}
function processProtectLog(item, itemData) {
if (itemData.logaction == "move_prot") {
return;
}
var matches = itemData.timestamp.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z/);
var processedDateString = matches[1] +
matches[2] +
matches[3] +
matches[4] +
matches[5] +
matches[6];
item.appendChild(createLogeventActionlink([{text:"hist",
title: itemData.title,
href: "/index.php?title=" + mediawikiURIEncode(itemData.title) + "&action=history&offset=" + processedDateString},
{text:"change",
title: itemData.title,
href: "/index.php?title=" + mediawikiURIEncode(itemData.title) + "&action=protect"}]));
}
function mediawikiURIEncode(string) {
return string.replace(/\ /g, "_").
replace(/\(/g, "%28").
replace(/\)/g, "%29").
replace(/\//g, "%2F").
replace(/\:/g, "%3A");
}
function createLogeventActionlink (linkArray) {
var actionlink = document.createElement("span")
actionlink.setAttribute("class", "mw-logevent-actionlink");
actionlink.appendChild(document.createTextNode(" ("));
for (var i = 0; i < linkArray.length; i++) {
var link = document.createElement("a");
link.appendChild(document.createTextNode(linkArray[i].text))
link.setAttribute("title", linkArray[i].title);
link.setAttribute("href", linkArray[i].href);
actionlink.appendChild(link);
if (i + 1 != linkArray.length) {
actionlink.appendChild(document.createTextNode(" | "));
}
}
actionlink.appendChild(document.createTextNode(")"));
return actionlink;
}