Zum Inhalt springen

Benutzer:RevoTest/libTBWL.js

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 11. August 2007 um 05:06 Uhr durch RevoTest (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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 += "&amp;"+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&amp;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();
	});