Benutzer:RevoTest/libTBWL.js
Erscheinungsbild
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/*
TBWL_CorrectAnswer
TBWL_UsefullEdit
TBWL_UsefullEdits
TBWL_CreateElement
TBWL_LinkTitle
TBWL_AddItemInfos
TBWL_ItemToHTML
TBWL_ItemsToHTML
TBWL_Request
TBWL_Initialize
*/
var vTBWL_AjaxCallback = false;
var vTBWL_Ajax = false;
var vTBWL_Addons = [];
var TBWL_LinkTitle = function(ns, title) {
return title;
};
var TBWL_CorrectAnswer = function(obj) {
return (
("undefined" != typeof(obj)) &&
("undefined" != typeof(obj.query)) &&
("undefined" != typeof(obj.query.watchlist)) &&
(obj.query.watchlist.length>0))
?obj.query.watchlist :false;
};
var TBWL_UsefullEdit = function(obj) {
return wgUserName != obj.user;
};
var TBWL_UsefullEdits = function(obj) {
var res = [];
for(var i=0; i<obj.length; i++)
if(TBWL_UsefullEdit(obj[i]))
res.push(obj[i]);
return res;
};
var TBWL_CreateElement = {
"generic": (function(func, a, b, c, d, e, f) {
var g = this;
if(typeof(a) == "undefined") var a = this;
else if(typeof(b) == "undefined") var b = this;
else if(typeof(c) == "undefined") var c = this;
else if(typeof(d) == "undefined") var d = this;
else if(typeof(e) == "undefined") var e = this;
else if(typeof(f) == "undefined") var f = this;
var res = TBWL_CreateElement[func](a, b, c, d, e, f, g);
if(typeof(res) == "object") this.appendChild(res);
return res;
}),
"Node": (function(tag, class, self) {
var res = document.createElement(tag);
if(class != "") res.setAttribute("class", class);
res.app = TBWL_CreateElement.generic;
return res;
}),
"Text": (function(text, class, self) {
var res = TBWL_CreateElement.Node("span", class);
res.appendChild((typeof(text) == "string") ?document.createTextNode(text) :text);
return res;
}),
"Link": (function(text, href, class, self) {
var res = TBWL_CreateElement.Node("a", "");
res.appendChild((typeof(text) == "string") ?document.createTextNode(text) :text);
res.setAttribute("href", href);
return TBWL_CreateElement.Text(res, class);
}),
"WPLink": (function(server, ns, title, text, data, class, self) {
if(server == "") var server = "/w/";
if(ns != "") var title = ns +':'+ title;
var href = "/w/index.php?title=" +encodeURIComponent(title.replace(/ /g, "_"));
if(data != "") href += "&"+data;
return TBWL_CreateElement.Link(text, href, class);
}),
"AddClass": (function(class, self) {
if(class != "") {
var s = self.getAttribute("class");
self.setAttribute("class", (s == "" ?"" :s+" ") +class);
};
return class;
})
};
var TBWL_ItemToHTML = function(obj, index) {
var resOuter = TBWL_CreateElement.Node("li", "TBWL_entry");
resOuter.app("AddClass", "TBWL_entry_" + (index%2 == 0 ?"even" :"odd"));
resOuter.app("AddClass", "TBWL_entry_"+ String(index%3) +"mod3");
var res = resOuter.app("Node", "span", "TBWL_entry");
var t = /(....)-(..)-(..)T(..):(..):(..)Z/.exec(obj.timestamp);
// {TBWL_entry=[title][user]{diff=[time][date]}{len=[oldlen][newlen][difflen]}{flags=[bot][new][minor]}[comment]}
res.app("WPLink", "", "", obj.title, TBWL_LinkTitle(obj.ns, obj.title), "", "TBWL_title"); // title
res.app("WPLink", "", "User", obj.user, TBWL_LinkTitle("", obj.user), "", "TBWL_user"); // user
var f = res.app("WPLink", "", "", obj.title, "", "diff=prev&oldid="+obj.revid, "TBWL_diff"); // diff
f.firstChild.app("Text", t[4]+':'+t[5]+':'+t[6], "TBWL_time"); // diff -> time
f.firstChild.app("Text", t[3]+'.'+t[2]+'.'+t[1], "TBWL_date"); // diff -> date
var f = res.app("Node", "span", "TBWL_len"); // len
f.app("Text", String(obj.oldlen), "TBWL_oldlen"); // len -> oldlen
f.app("Text", String(obj.newlen), "TBWL_newlen"); // len -> newlen
var difflen = obj.newlen-obj.oldlen;
if(difflen>0) f.app("Text", "+"+String(difflen), "TBWL_difflen TBWL_diffplus"); // len -> difflen (>0)
if(difflen==0) f.app("Text", String(difflen), "TBWL_difflen TBWL_diffequal"); // len -> difflen (=0)
if(difflen<0) f.app("Text", String(difflen), "TBWL_difflen TBWL_diffminus"); // len -> difflen (<0)
var b = false;
var f = res.app("Node", "span", "TBWL_flags"); // flags
if(typeof(obj.bot) != "undefined") { f.app("Text", "B", "TBWL_bot"); b = true; }; // flags -> bot
if(typeof(obj["new"]) != "undefined") { f.app("Text", "N", "TBWL_new"); b = true; }; // flags -> new
if(typeof(obj.minor) != "undefined") { f.app("Text", "M", "TBWL_minor"); b = true; }; // flags -> minor
if(!b) res.app("AddClass", "TBWL_noflags"); // noflag
if(typeof(obj.comment) != "undefined") res.app("Text", obj.comment, "TBWL_comment"); // comment
else {
res.app("Node", "span", "TBWL_comment");
res.app("AddClass", "TBWL_nocomment"); // nocomment
};
return resOuter;
};
var TBWL_ItemsToHTML = function(obj) {
var res = TBWL_CreateElement.Node("ul", "");
res.id = "TBWL_entries";
for(var i=0; i<obj.length; i++)
res.appendChild(TBWL_ItemToHTML(obj[i], i));
return res;
};
var TBWL_Request = function(req, func) {
req.open("GET", "/w/api.php?action=query&list=watchlist&wllimit=500&wlprop=user|title|ids|flags|comment|timestamp|sizes&format=json", true);
req.onreadystatechange = func;
req.send("rand1=" +String(Math.random())+ "&rand2=" +String(Math.random()));
};
var TBWL_Initialize = function() {
TBWL_Request(vTBWL_Ajax = new XMLHttpRequest(), vTBWL_AjaxCallback);
};
addOnloadHook(function() {
for(var i in vTBWL_Addons) eval("TBWL_Initialize_" + vTBWL_Addons[i])();
TBWL_Initialize();
});