Benutzer:J*/vector.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
J* (Diskussion | Beiträge) K |
J* (Diskussion | Beiträge) K (-debug, +Formatierung) |
||
Zeile 57: | Zeile 57: | ||
/* Zeug für die Buschtrommel */ | /* Zeug für die Buschtrommel */ | ||
+ | |||
function serialize (obj) | function serialize (obj) | ||
{ | { | ||
− | + | if (obj == null) | |
− | + | return "z"; | |
− | + | switch (typeof obj) | |
− | + | { | |
− | + | case "string": | |
− | + | return "s"+escape(obj); | |
− | + | break; | |
− | + | case "number": | |
− | + | return "n"+escape(String(obj)); | |
− | + | break; | |
− | + | case "object": | |
− | + | var arr = []; | |
− | + | for (var k in obj) | |
− | + | { | |
− | + | arr.push(serialize(k) + "=" + serialize(obj[k])); | |
− | + | } | |
− | + | if (obj instanceof Array) | |
− | + | return "a"+escape(arr.join("&")); | |
− | + | else | |
− | + | return "o"+escape(arr.join("&")); | |
− | + | break; | |
− | + | default: | |
− | + | throw "Cannot serialize " + (typeof obj) + " type."; | |
− | + | } | |
} | } | ||
function deserialize (str) | function deserialize (str) | ||
{ | { | ||
− | + | var type = str[0]; | |
− | + | var data = str.substr(1); | |
− | + | switch(type) | |
− | + | { | |
− | + | case "z": | |
− | + | return null; | |
− | + | break; | |
− | + | case "s": //string | |
− | + | return unescape(data); | |
− | + | break; | |
− | + | case "n": //number | |
− | + | if (data == "Infinity") | |
− | + | return Infinity; | |
− | + | else if (data == "-Infinity") | |
− | + | return -Infinity; | |
− | + | else | |
− | + | return parseInt(unescape(data)); | |
− | + | break; | |
− | + | case "a": // Array | |
+ | case "o": //Object | ||
+ | var ret = {}; | ||
+ | if (type == "a") | ||
+ | ret = []; | ||
− | + | var pairs = unescape(data).split("&"); | |
− | + | for (var i=0; i<pairs.length; i++) | |
− | + | { | |
− | + | var kv = pairs[i].split("="); | |
− | + | ret[deserialize(kv[0])] = deserialize(kv[1]); | |
− | + | } | |
− | + | return ret; | |
− | + | break; | |
− | + | default: | |
− | + | throw "Cannot deserialize " + type + " type." | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
if (wgPageName=="Spezial:KamelBox") | if (wgPageName=="Spezial:KamelBox") | ||
{ | { | ||
− | + | addOnloadHook( function () { | |
− | + | jQuery("#buschtrommel").append("<div id='buschtrommel-log'/>"); | |
− | + | var oldPrepare = prepare; | |
− | + | prepare = function (j) | |
− | + | { | |
− | + | if (window.log) | |
− | + | window.log(j); | |
− | + | return oldPrepare(j); | |
− | + | } | |
− | + | }); | |
− | |||
− | |||
} | } | ||
Zeile 148: | Zeile 146: | ||
function saveChatLog () | function saveChatLog () | ||
{ | { | ||
− | + | document.cookie = "kpChatLog="+serialize(chatLog.log); | |
} | } | ||
function loadChatLog () | function loadChatLog () | ||
{ | { | ||
− | + | chatLog.current = null; | |
− | + | var cookie = document.cookie.match(/(^|;)\s*kpChatLog=([^;]+);/); | |
− | + | try | |
− | + | { | |
− | + | if (cookie != null) | |
− | + | chatLog.log = deserialize(cookie[2]); | |
− | + | else | |
− | + | throw 1; | |
− | + | } | |
− | + | catch (e) | |
− | + | { | |
− | + | chatLog.log = []; | |
− | + | } | |
} | } | ||
function log (d) | function log (d) | ||
{ | { | ||
− | + | if (chatLog.log.length > 0 && parseInt(chatLog.log[chatLog.log.length-1].last_ts) >= parseInt(d.time) ) | |
− | + | { | |
− | + | // do not log as it is already logged | |
− | + | // switch to append mode | |
− | + | chatLog.current = chatLog.log[chatLog.log.length-1]; | |
− | + | listChatLogs(); | |
− | + | return; | |
− | + | } | |
− | + | else if (chatLog.current == null || chatLog.log.length == 0) | |
− | + | { | |
− | + | // init | |
− | + | chatLog.current = {data: []}; | |
− | + | chatLog.log.push(chatLog.current); | |
− | + | } | |
− | |||
− | |||
− | + | chatLog.current.last_ts = d.time; | |
− | + | chatLog.current.data.push(d); | |
− | + | saveChatLog(); | |
− | + | listChatLogs(); | |
} | } | ||
function showChatLog(idx) | function showChatLog(idx) | ||
{ | { | ||
− | + | str = ""; | |
− | + | var entries = chatLog.log[idx].data; | |
− | + | for (var i in entries) | |
− | + | { | |
− | + | str += prepareLog(entries[i]); | |
− | + | } | |
− | + | newwin = window.open(); | |
− | + | newwin.document.write(str); | |
} | } | ||
function listChatLogs () | function listChatLogs () | ||
{ | { | ||
− | + | jQuery("#buschtrommel-log").empty(); | |
− | + | for(var i in chatLog.log) | |
− | + | { | |
− | + | var time = new Date(); | |
− | + | time.setTime(chatLog.log[i].data[0].time); | |
− | + | var showButton = jQuery("<input type='button' onclick='showChatLog("+parseInt(i)+")' value='Anzeigen'>"); | |
− | + | var deleteButton = jQuery("<input type='button' onclick='deleteChatLog("+parseInt(i)+")' value='Löschen'>"); | |
− | + | var container = jQuery("<div/>"); | |
− | + | container.append(time.toLocaleString()); | |
− | + | container.append(showButton); | |
− | + | container.append(deleteButton); | |
− | + | jQuery("#buschtrommel-log").append(container); | |
− | + | } | |
} | } | ||
function deleteChatLog(i) | function deleteChatLog(i) | ||
{ | { | ||
− | + | chatLog.log.splice(i,1); | |
− | + | saveChatLog(); | |
− | + | loadChatLog(); | |
− | + | listChatLogs(); | |
} | } | ||
− | + | // fast unverändert aus der Kamelbox kopiert | |
− | + | function prepareLog(response) | |
− | + | { | |
− | + | var d = new Date(); | |
− | + | d.setTime(response.time); | |
− | + | var currentHours = ( d.getHours() < 10 ? "0" : "" ) + d.getHours(); | |
− | + | var currentMinutes = ( d.getMinutes() < 10 ? "0" : "" ) + d.getMinutes(); | |
− | + | var mytime = currentHours+':'+currentMinutes; | |
− | + | if (mytime != oldmytime) { | |
− | + | oldmytime = mytime; | |
− | + | } else { | |
− | + | mytime = "<span style='color:#aaa;'>≀</span>" ; | |
− | + | }; | |
− | + | var tempnick = response.nickname; | |
− | + | var tempnick2 = " '@"+response.nickname+" '"; | |
− | + | if (tempnick.length > 16) { | |
− | + | tempnick = tempnick.substr(0, 16)+"~" | |
− | + | } | |
− | + | if ((tempnick != ' ') && (tempnick != wgUserName ) ){ | |
− | + | var nick = '<span style="color:#00137F; cursor:pointer;" onclick="document.Trommel.message.value += '+tempnick2+';document.Trommel.message.focus()" title="Nachricht an '+response.nickname+'">'+tempnick+'</span>'; | |
− | + | } else if (tempnick == wgUserName ){ | |
− | + | nick = '<span style="color:#7F0000;">'+tempnick+'</span>'; | |
− | + | } else { | |
− | + | var nick = ' ' ; | |
− | + | } | |
− | + | var checkkamel = response.message; | |
− | + | var kamel = wgUserName+" "; | |
− | + | var kamel2 = wgUserName+":"; | |
− | + | if ((checkkamel.indexOf (kamel) != -1 || checkkamel.indexOf (kamel2) != -1) && tempnick != ' ' ) { | |
− | + | var string = '<table width="100%" cellspacing="0" cellpadding="0" class="buschtrommel-list">' | |
− | + | + '<tr><td width="35px" class="buschtrommel-list-time" valign="top" align="right">'+mytime+'</td>' | |
− | + | + '<td width="115px" style="text-align:right;" class="buschtrommel-kamelname" valign="top">'+nick+'</td>' | |
− | + | + '<td class="buschtrommel-list-message" valign="top"><span style="background-color:#FFFF00;border:1px solid #FFFF00;border-radius:.5em;">'+response.message+'</span></td>' | |
− | + | +'</tr></table>'; | |
− | + | } else { | |
− | + | var string = '<table width="100%" cellspacing="0" cellpadding="0" class="buschtrommel-list">' | |
− | + | + '<tr><td width="35px" class="buschtrommel-list-time" valign="top" align="right">'+mytime+'</td>' | |
− | + | + '<td width="115px" style="text-align:right;" class="buschtrommel-kamelname" valign="top">'+nick+'</td>' | |
− | + | + '<td class="buschtrommel-list-message" style="padding-left:.3em;" valign="top">'+response.message+'</td>' | |
− | + | +'</tr></table>'; | |
− | + | } | |
− | + | if (tempnick == " ") { | |
− | + | tempnick=""; | |
− | + | }; | |
− | + | ||
− | + | if (tempnick.indexOf("&" != -1)) { | |
− | + | tempnick = tempnick.replace(/Ä/g, "Ä"); | |
− | + | tempnick = tempnick.replace(/ä/g, "ä"); | |
− | + | tempnick = tempnick.replace(/ö/g, "ö"); | |
− | + | tempnick = tempnick.replace(/Ö/g, "Ö"); | |
− | + | tempnick = tempnick.replace(/ü/g, "ü"); | |
− | + | tempnick = tempnick.replace(/Ü/g, "Ü"); | |
− | + | tempnick = tempnick.replace(/ß/g, "ß"); | |
− | + | } | |
+ | return string; | ||
+ | } |
Version vom 12. Dezember 2010, 14:19 Uhr
/* für's Bürokratenspiel */
function bksp ()
{
if (wgPageName.indexOf("Projekt:Bürokratenspiel") != -1 )
{
var t = wgTitle.split("/");
var e = (wgAction = "edit") ? "$ " : "";
document.title = t[t.length-1];
}
}
addOnloadHook(bksp);
/* Zusammenfassungs-Warnung */
addOnloadHook( function () {
jQuery("#wpSummary, #wpTextbox1").bind("keypress", function() {
jQuery("#wpSummary").css("background-color","#ffffff");
try {
clearInterval(summaryWarnInterval);
summaryWarnInterval = null;
}
catch (e) {}
summaryWarnState = -1;
});
jQuery("#editform").bind("submit", function (e) {
if ( e.originalEvent.explicitOriginalTarget != jQuery("#wpSave")[0] )
return true;
if (! jQuery("#wpSummary").val().replace(/^\s+/,"").replace(/\s+$/,"").replace(/\/\*.*?\*\//,"") && summaryWarnState == -1)
{
jQuery("#wpSummary").focus();
summaryWarnInterval = window.setInterval(summaryWarn,70);
return false;
}
return true;
});
});
summaryWarnState = -1;
summaryWarnInterval = null;
function summaryWarn()
{
summaryWarnState ++;
if (summaryWarnState % 2 == 0)
jQuery("#wpSummary").css("background-color","#ffff99");
else
jQuery("#wpSummary").css("background-color","#ffffff");
if (summaryWarnState > 11)
clearInterval(summaryWarnInterval);
}
/* Zeug für die Buschtrommel */
function serialize (obj)
{
if (obj == null)
return "z";
switch (typeof obj)
{
case "string":
return "s"+escape(obj);
break;
case "number":
return "n"+escape(String(obj));
break;
case "object":
var arr = [];
for (var k in obj)
{
arr.push(serialize(k) + "=" + serialize(obj[k]));
}
if (obj instanceof Array)
return "a"+escape(arr.join("&"));
else
return "o"+escape(arr.join("&"));
break;
default:
throw "Cannot serialize " + (typeof obj) + " type.";
}
}
function deserialize (str)
{
var type = str[0];
var data = str.substr(1);
switch(type)
{
case "z":
return null;
break;
case "s": //string
return unescape(data);
break;
case "n": //number
if (data == "Infinity")
return Infinity;
else if (data == "-Infinity")
return -Infinity;
else
return parseInt(unescape(data));
break;
case "a": // Array
case "o": //Object
var ret = {};
if (type == "a")
ret = [];
var pairs = unescape(data).split("&");
for (var i=0; i<pairs.length; i++)
{
var kv = pairs[i].split("=");
ret[deserialize(kv[0])] = deserialize(kv[1]);
}
return ret;
break;
default:
throw "Cannot deserialize " + type + " type."
}
}
if (wgPageName=="Spezial:KamelBox")
{
addOnloadHook( function () {
jQuery("#buschtrommel").append("<div id='buschtrommel-log'/>");
var oldPrepare = prepare;
prepare = function (j)
{
if (window.log)
window.log(j);
return oldPrepare(j);
}
});
}
chatLog = {log:[]};
loadChatLog();
function saveChatLog ()
{
document.cookie = "kpChatLog="+serialize(chatLog.log);
}
function loadChatLog ()
{
chatLog.current = null;
var cookie = document.cookie.match(/(^|;)\s*kpChatLog=([^;]+);/);
try
{
if (cookie != null)
chatLog.log = deserialize(cookie[2]);
else
throw 1;
}
catch (e)
{
chatLog.log = [];
}
}
function log (d)
{
if (chatLog.log.length > 0 && parseInt(chatLog.log[chatLog.log.length-1].last_ts) >= parseInt(d.time) )
{
// do not log as it is already logged
// switch to append mode
chatLog.current = chatLog.log[chatLog.log.length-1];
listChatLogs();
return;
}
else if (chatLog.current == null || chatLog.log.length == 0)
{
// init
chatLog.current = {data: []};
chatLog.log.push(chatLog.current);
}
chatLog.current.last_ts = d.time;
chatLog.current.data.push(d);
saveChatLog();
listChatLogs();
}
function showChatLog(idx)
{
str = "";
var entries = chatLog.log[idx].data;
for (var i in entries)
{
str += prepareLog(entries[i]);
}
newwin = window.open();
newwin.document.write(str);
}
function listChatLogs ()
{
jQuery("#buschtrommel-log").empty();
for(var i in chatLog.log)
{
var time = new Date();
time.setTime(chatLog.log[i].data[0].time);
var showButton = jQuery("<input type='button' onclick='showChatLog("+parseInt(i)+")' value='Anzeigen'>");
var deleteButton = jQuery("<input type='button' onclick='deleteChatLog("+parseInt(i)+")' value='Löschen'>");
var container = jQuery("<div/>");
container.append(time.toLocaleString());
container.append(showButton);
container.append(deleteButton);
jQuery("#buschtrommel-log").append(container);
}
}
function deleteChatLog(i)
{
chatLog.log.splice(i,1);
saveChatLog();
loadChatLog();
listChatLogs();
}
// fast unverändert aus der Kamelbox kopiert
function prepareLog(response)
{
var d = new Date();
d.setTime(response.time);
var currentHours = ( d.getHours() < 10 ? "0" : "" ) + d.getHours();
var currentMinutes = ( d.getMinutes() < 10 ? "0" : "" ) + d.getMinutes();
var mytime = currentHours+':'+currentMinutes;
if (mytime != oldmytime) {
oldmytime = mytime;
} else {
mytime = "<span style='color:#aaa;'>≀</span>" ;
};
var tempnick = response.nickname;
var tempnick2 = " '@"+response.nickname+" '";
if (tempnick.length > 16) {
tempnick = tempnick.substr(0, 16)+"~"
}
if ((tempnick != ' ') && (tempnick != wgUserName ) ){
var nick = '<span style="color:#00137F; cursor:pointer;" onclick="document.Trommel.message.value += '+tempnick2+';document.Trommel.message.focus()" title="Nachricht an '+response.nickname+'">'+tempnick+'</span>';
} else if (tempnick == wgUserName ){
nick = '<span style="color:#7F0000;">'+tempnick+'</span>';
} else {
var nick = ' ' ;
}
var checkkamel = response.message;
var kamel = wgUserName+" ";
var kamel2 = wgUserName+":";
if ((checkkamel.indexOf (kamel) != -1 || checkkamel.indexOf (kamel2) != -1) && tempnick != ' ' ) {
var string = '<table width="100%" cellspacing="0" cellpadding="0" class="buschtrommel-list">'
+ '<tr><td width="35px" class="buschtrommel-list-time" valign="top" align="right">'+mytime+'</td>'
+ '<td width="115px" style="text-align:right;" class="buschtrommel-kamelname" valign="top">'+nick+'</td>'
+ '<td class="buschtrommel-list-message" valign="top"><span style="background-color:#FFFF00;border:1px solid #FFFF00;border-radius:.5em;">'+response.message+'</span></td>'
+'</tr></table>';
} else {
var string = '<table width="100%" cellspacing="0" cellpadding="0" class="buschtrommel-list">'
+ '<tr><td width="35px" class="buschtrommel-list-time" valign="top" align="right">'+mytime+'</td>'
+ '<td width="115px" style="text-align:right;" class="buschtrommel-kamelname" valign="top">'+nick+'</td>'
+ '<td class="buschtrommel-list-message" style="padding-left:.3em;" valign="top">'+response.message+'</td>'
+'</tr></table>';
}
if (tempnick == " ") {
tempnick="";
};
if (tempnick.indexOf("&" != -1)) {
tempnick = tempnick.replace(/Ä/g, "Ä");
tempnick = tempnick.replace(/ä/g, "ä");
tempnick = tempnick.replace(/ö/g, "ö");
tempnick = tempnick.replace(/Ö/g, "Ö");
tempnick = tempnick.replace(/ü/g, "ü");
tempnick = tempnick.replace(/Ü/g, "Ü");
tempnick = tempnick.replace(/ß/g, "ß");
}
return string;
}