Unterteilbare Onlineliste - Eigene Listen in der Onlineliste

Fragen zu HTML, CSS, eigenen Erweiterungen etc.
Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 20.02.2012, 20:07

Script:Zeigen

Code: Alles auswählen

  this.olPicsBefore = [
   
    ["server4.webkicks.de/hauptchat/replacer/admin.gif", "lieblich", "USER2"],
    ["server4.webkicks.de/hauptchat/replacer/bot.gif", "TeeneBot", "USER4", "USER5", "USER6"]
    ["server4.webkicks.de/hauptchat/replacer/stern.gif", "BigMac", "USER2"]
  
  ];
 
Immer noch ein Kommafehler. Siehe immer noch Bilder vor oder nach einem Nick in der Onlineliste und Beispiel 1! Tipp: Es fehlt ein Komma.

Wegen deinem Wunsch, eine "Stammiliste" zu machen, siehe Das Erstellen bzw. Editieren von Gruppen, Beispiel 2 und Beispiel 3.

Um die Leute, die away gegangen sind, durchzustreichen und kursiv zu schreiben, ändere folgende zeile so um:
Script:Zeigen

Code: Alles auswählen

    ["away", "Away-Liste", "color: #FF0000;", []]
in

Code: Alles auswählen

    ["away", "Away-Liste", "color: #FF0000; font-style: italic; text-decoration: line-through;", []]
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

lieblich
Beiträge: 155
Registriert: 01.05.2010, 09:40
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von lieblich » 20.02.2012, 20:19

So richtig:

// Version 1.3

newOL = new (function () {


/* Konfiguration */


// Hier werden die einzelnen Gruppen für die Onlineliste angegeben
// Die Syntax ist:

// ["ID", "NAME", "CSS-STYLE", [USERLISTE]],
// ID = Hier musst du eine ID für die Gruppe angeben. Diese muss einzigartig sein und darf insgesamt nur einmal vorkommen!
// NAME = Hier kommt der Gruppenname hin, also die Überschrift der Gruppe. HTML darf benutzt werden!
// CSS-STYLE = Hier kannst du beliebig viele CSS-Befehle auflisten. Diese ändern den Style (z.B. Farbe) der User in dieser Gruppe. Übersicht der CSS-Befehle findest du z.B. hier: http://www.html-seminar.de/css-definiti ... rsicht.htm
// [USERLISTE] = Hier werden die User aufgezählt, die auf jeden Fall in diese Gruppe müssen. Syntax: ["USER1", "USER2", "USER3", "USER4"]

// Die Reihenfolge der Gruppen kann beliebig geändert werden. Sie erscheinen in der Onlineliste in genau der gleichen Reihenfolge wie hier angegeben,
// BEACHTE: Nach der letzten Gruppe darf KEIN Komma stehen, aber die vorherigen Gruppen benötigen unbedingt eins danach!

this.olBlocks = [

["team", "Team-Liste", "color: #ff0000;", []],
["bots", "Bot-Liste", "font-weight: bold; color: #0000FF; font-family: Times New Roman;", ["wkQB", "TeeneBot", "chatbot"]],
["user", "User-Liste", "", []],
["guest", "Gäste-Liste", "", []],
["away", "Away-Liste", "color: #FF0000;", []]

];


// Hier können Bilder vor oder nach den Nicks angefügt werden
// this.olPicsBefore fügt Bilder VOR den Nicks ein und this.olPicsBefore NACH den Nicks
// Die Syntax ist:
// URL-ZUM-BILD = Hier muss die URL zum Bild angegeben werden
// USER = Hier können die User angegeben werden, die das Bild erhalten sollen. Es können beliebig viele User angegeben werden, diese müssen nur immer durch ein Komma abgetrennt werden und in Anführungszeichen gesetzt werden. Nach dem letzten User kommt kein Komma!

// Es können beliebig viele Gruppen (Bilder mit ihren Usern) angegeben werden.
// BEACHTE: Nach der letzten Gruppe darf wie immer KEIN Komma stehen, aber die vorherigen Gruppen benötigen unbedingt eins danach!

this.olPicsBefore = [

["server4.webkicks.de/hauptchat/replacer/admin.gif", "lieblich", "USER2"],
["server4.webkicks.de/hauptchat/replacer/bot.gif", "TeeneBot", "USER4", "USER5", "USER6"],
["server4.webkicks.de/hauptchat/replacer/stern.gif", "BigMac", "USER2"]

];

this.olPicsAfter = [

];


// Hier kann man Usern einen bestimmten CSS-Sytle einrichten, der den jeweiligen Gruppenstyle "überschreibt"
// Die Syntax ist:

// ["USER", "CSS-STYLE"],
// USER = Hier kommt der Username des Nicks hinein, der einen eigenen CSS-Style bekommen soll
// CSS-Style = Hier kannst du beliebig viele CSS-Befehle auflisten. Diese ändern den Style (z.B. Farbe) des Users. Übersicht der CSS-Befehle findest du z.B. hier: http://www.html-seminar.de/css-definiti ... rsicht.htm

// Es können beliebig viele User einen eigenen CSS-Style bekommen
// BEACHTE: Nach der letzten Gruppe darf wie immer KEIN Komma stehen, aber die vorherigen Gruppen benötigen unbedingt eins danach!

this.userStyle = [

];


// Hier wird eingestellt, ob die einzelnen User in den Gruppen alphabetisch sortiert werden sollen
// 1 = Aktiviert; 0 = Deaktiviert

this.olSortActivated = 1;



/* Ende der Konfiguration */
/* Ab hier bitte nichts mehr ändern! */



var that = this;

// user - speichert in einem Array alle User im Chatraum
// Pro User ein Array mit 6 Strings
// 1. String: Name; 2. String: Profil; 3. String: Rang; 4. String: Away; 5. String: Raum; 6. String: Awaygrund

this.user = [];


// createBlocks - erstellt die Gruppen in der OL und startet das Script

this.createBlocks = function () {
if (olIsLoad()) {
var prFd = parent.rightFrame.document;
var vOL = (!myBrowser.IE || navigator.userAgent.match(/MSIE ((\d\d)|9)\.[0-9]+/)) ? ((prFd.getElementsByTagName("body")[0].childNodes[2].nodeName == "TABLE") ? true : false) : false;
// Die 2. Überprüfung verhindert unsichtbare OL
if (!prFd.getElementById("newOL") || vOL) {
prFd.getElementById("bd:").style.display = "none";
that.overwriteAdds();
that.delNewOL();
var newTD = document.createElement("td");
newTD.id = "newOL";
prFd.getElementsByTagName("tr")[0].appendChild(newTD);
for (var i = 0; i < that.olBlocks.length; i++) {
var olBid = that.olBlocks[0];
var newOLBlock = document.createElement("div");
with (newOLBlock) {
id = olBid + "wrapper";
innerHTML = "<div id='" + olBid + "headline' style='margin-top:10px; margin-bottom:1px;'><a id='" + olBid + "link' onclick=\"parent.mainframe.newOL.switchStatus('" + olBid + "')\">-</a> " + that.olBlocks[1] + "</div>";
innerHTML += "<ul id='" + olBid + "list' style='list-style-type:none; margin-top:5px; margin-bottom:1px;" + that.olBlocks[2] + "'></ul>";
}
prFd.getElementById("newOL").appendChild(newOLBlock);
}
getXML("GET", "/"+chatData[1]+"/api/get_onlinelist?" + new Date().getTime(), 0, that.getUser);
}
} else {
window.setTimeout("parent.mainframe.newOL.createBlocks()", 50);
}
}

// delNewOl - löscht die neue Onlineliste

this.delNewOL = function () {
var delOL;
if (delOL = parent.rightFrame.document.getElementById("newOL")) {
delOL.parentNode.removeChild(delOL);
}
}

// switchStatus - blendet einen Block ein und aus
// id: ID des Blocks

this.switchStatus = function (id) {
var prFd = parent.rightFrame.document;
if (prFd.getElementById(id + "link").innerHTML == "-") {
prFd.getElementById(id + "link").innerHTML = "+";
prFd.getElementById(id + "list").style.display = "none";
} else {
prFd.getElementById(id + "link").innerHTML = "-";
prFd.getElementById(id + "list").style.display = "block";
}
}


// getOnlineUser - füllt das Array user
// r: auszuwertendes Request

this.getUser = function (r) {
if (r.readyState == 4) {
// Wenn Status 200 ist, ist alles korrekt gelaufen
if (r.status != 200) {
console.log(r);
} else {
var c = r.responseXML.documentElement;
that.user = [];
for (var i = 0; i < c.getElementsByTagName("onlineuser").length; i++) {
var u = c.getElementsByTagName("onlineuser");
that.user = [];
with (that.user) {
push(u.getElementsByTagName("name")[0].firstChild.data);
push(u.getElementsByTagName("profil")[0].firstChild.data);
push(u.getElementsByTagName("rang")[0].firstChild.data);
push(u.getElementsByTagName("away")[0].firstChild.data);
push(u.getElementsByTagName("channel")[0].firstChild.data);
}
if (u.getElementsByTagName("awayreason")[0].firstChild) {
that.user.push(u.getElementsByTagName("awayreason")[0].firstChild.data);
}
}
that.firstAdds();
}
}
}


// firstAdds - schreibt die User in die Onlineliste, die schon online sind und per getUser geladen wurden

this.firstAdds = function () {
for (var j = 0; j < that.user.length; j++) {
if (that.user[j][0] == myNick) {
break;
}
}
for (var i = 0; i < that.user.length; i++) {
if (that.user[j][4] == that.user[4]) {
var away = (that.user[3] == "0") ? 0 : 1;
var awayr = (that.user[5] == "undefined") ? "" : that.user[i][5];
var server = (that.user[i][1] == 1) ? "server" + chatData[0] : "";
var chat = (that.user[i][1] == 1) ? chatData[1] : "";
var rank = that.getRankException(that.user[i][0]);
rank = (rank == 0) ? that.user[i][2] : rank;
if (rank.match(/list$/) == null) {
switch (rank) {
case "gast":
rank = "guestlist";
break;
case "admin":
rank = "teamlist";
break;
case "mod":
rank = "teamlist";
break;
default:
rank = "userlist";
break;
}
}
that.add(that.user[i][0], away, awayr, server, chat, rank);
}
}
}


// getRankException - durchsucht alle Elemente in olBlocks nach Usern und gibt den jeweiligen Blocknamen zurück
// chatter: User, nach dem gesucht werden soll

this.getRankException = function (chatter) {
for (var i = 0; i < that.olBlocks.length; i++) {
var list = that.olBlocks[i][3];
var t = typeof list;
if (t != undefined && ((t == "object" && list.inArray(chatter)) || (t == "string" && list == chatter))) {
return that.olBlocks[i][0] + "list";
}
}
return 0;
}


// getBlock - checkt die Loginnachricht findet heraus, in welchen Block der User muss
// user: User; profil: hat der User ein Profil (1 oder 0)

this.getBlock = function (user, profil) {
var tds = parent.mainframe.document.getElementsByTagName("td");
var rank = that.getRankException(user);
if (rank == 0) {
var howlong = (tds.length > 5) ? 5 : tds.length;
var clD;
for (var i = 1; i <= howlong; i++) {
clD = lineData(tds[tds.length - i]);
if (clD != null && clD[2] == user && clD[4] == 0) {
rank = "guestlist";
break;
}
}
if (rank == 0) {
howlong = (chatTeam[0].length > chatTeam[1].length) ? chatTeam[0].length : chatTeam[1].length;
howlong = (1 > howlong) ? 1 : howlong;
for (var i = 0; i < howlong; i++) {
if (chatTeam[0][i] == user || chatTeam[1][i] == user || chatTeam[2] == user) {
rank = "teamlist";
break;
}
}
}
if (rank == 0) {
rank = "userlist";
}
}
for (var i = 0; i < that.user.length; i++) {
if (that.user[i][0] == user) {
return rank;
}
}
var j = that.user.length;
that.user[j] = [];
with (that.user[j]) {
push(user);
push(profil);
push(rank);
push("0");
push(getRoom());
}
return rank;
}


// olSort - sortiert die einzelnen User alphabetisch
// chatter: User, der in der Liste alphabetisch sortiert werden soll; block: Liste, in der sich der User befindet

this.olSort = function (chatter, block) {
var prFd = parent.rightFrame.document;
var b = prFd.getElementById(block);
var s = b.getElementsByTagName("span");
if (s.length != 0) {
for (var i = 0; i < s.length; i++) {
var c = chatter.toLowerCase();
var span = s[i].innerHTML.replace(/\s$/, "");
var sortArray = [span.toLowerCase(), c].sort();
if (sortArray[0] == c && sortArray[1] != c) {
b.insertBefore(prFd.getElementById("new" + chatter), prFd.getElementById("new" + span));
break;
}
}
} else {
return;
}
}


// addPics - fügt dem User ein Bild vor oder nach dem Nick ein Bild ein
// chatter: User, dem das Bild angehängt werden soll, loc: Ort (0 = vor dem Nick; 1 = nach dem Nick); profil: Besitzt der User ein Profil (0 oder 1)

this.addPics = function (chatter, loc, profil) {
picloc = (loc) ? that.olPicsAfter : that.olPicsBefore;
for (var i = 0; i < picloc.length; i++) {
if (picloc[i].inArray(chatter)) {
return ((loc && profil) ? " " : "") + "<img src='" + picloc[i][0] + "' />" + ((!loc) ? " " : "");
}
}
return "";
}


// getUserStyle - durchsucht userStyle und gibt bei Erfolg den Style des Users zurück
// chatter: User, dessen Style gesucht wird

this.getUserStyle = function (chatter) {
for (var i = 0; i < that.userStyle.length; i++) {
var s = that.userStyle[i];
if (s[0] == chatter) {
return s[1];
}
}
return "";
}


// add - fügt den User in die Onlineliste ein
// chatter: User, der eingefügt werden soll; away: Abwesend (0 oder 1); reason: Abwesendheitsgrund; server: Falls Profil - "server" + Nummer; chat: Falls Profil - Chatname; rank: Falls angegeben - in welche Liste er kommt

this.add = function (chatter, away, reason, server, chat, rank) {
var prFd = parent.rightFrame.document;
that.del(chatter, 1);
if (!prFd.getElementById("new" + chatter)) {
var ownsprofil = (server && chat) ? 1 : 0;
var block = (away) ? "awaylist" : ((rank) ? rank : that.getBlock(chatter, ownsprofil));
var newChatter = document.createElement("li");
with (newChatter) {
id = "new" + chatter;
title = (away) ? chatter + " ist abwesend" + ((reason) ? ": " + reason : "") : chatter;
innerHTML = that.addPics(chatter, 0) + "<span style='" + that.getUserStyle(chatter) + "' onclick=\"fluester('" + chatter + "');\">" + chatter + " </span>";
innerHTML += (ownsprofil) ? "<a id='profil" + chatter + "' title='Profil von " + chatter + "' href=\"Javascript:wopen(\'http://" + server + ".webkicks.de/" + chat + "/pv/" + chatter + "/open\',510,600)\;\">(P)</a>" : "";
innerHTML += that.addPics(chatter, 1, ownsprofil);
}
prFd.getElementById(block).appendChild(newChatter);
if (that.olSortActivated) {
that.olSort(chatter, block);
}
}
}


// del - löscht einen User aus der Onlineliste und von this.user
// id: Nickname; fromadd: Kommt die Anfrage von add (0 oder 1)

this.del = function (id, fromadd) {
var prFd = parent.rightFrame.document;
var delUser;
if (delUser = prFd.getElementById("new" + id)) {
delUser.parentNode.removeChild(delUser);
}
if (!fromadd) {
for (var i = 0; i < that.user.length; i++) {
if (that.user[i][0] == id) {
that.user.splice(i, 1);
break;
}
}
}
}


// overwriteAdds - überschreibt die add- und del-Funktionen der alten Onlineliste

this.overwriteAdds = function () {
var rf = parent.rightFrame;
rf.add = function (chatter, away, reason) {
rf.del(chatter);
that.add(chatter, away, reason);
if (rf.document.getElementById(chatter) == null) {
var y3 = document.createElement("div");
y3.id = chatter;
y3.innerHTML += ((away) ? "<i>" : "") + "<span title=" + ((away && reason) ? chatter + "ist abwesend: " + reason : chatter) + "><span onClick=\"fluester('" + chatter + "')\">" + chatter + " </span></span>" + ((away) ? "</i>" : "");
rf.document.getElementById("bd:").appendChild(y3);
}
}

rf.addp = function (chatter, server, chat, away, reason) {
rf.del(chatter);
that.add(chatter, away, reason, server, chat);
if (rf.document.getElementById(chatter) == null) {
var y3 = document.createElement("div");
y3.id = chatter;
y3.innerHTML = ((away) ? "<i>" : "") + "<span title=" + ((away && reason) ? chatter + "ist abwesend: " + reason : chatter) + "><span onClick=\"fluester('" + chatter + "')\">" + chatter + " </span></span>" + ((away) ? "</i>" : "");
y3.innerHTML += "<font title=\"Profil von " + chatter + "\"><a href=\"Javascript:wopen(\'http://" + server + ".webkicks.de/" + chat + "/pv/" + chatter + "/open\',510,600)\;\">(P)</a></font>";
rf.document.getElementById("bd:").appendChild(y3);
}
}

rf.del = function (user) {
that.del(user, 0);
var xy = rf.document.getElementById(user);
if(xy != null) {
rf.document.getElementById("bd:").removeChild(xy);
}
}
}

});

newOLint = window.setInterval('newOL.createBlocks();', 1000);
Lebe dein Leben und denke nicht an morgen!

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 20.02.2012, 20:19

Jap, richtig. Du hast es geschafft. :wink:

((Bis auf das, dass es mit den [ script ]- und [ code ]-Tags immer noch nicht so klappt.))
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

lieblich
Beiträge: 155
Registriert: 01.05.2010, 09:40
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von lieblich » 20.02.2012, 20:22

Bin über ipod und hatte keine zeit dafür. Ein Problem: statt Grafik steht da ein ? Oder sagen wir escso es ist eine fehlerhafte datei. Kannst ja in meinen chat gehen und es dir angucken. Bot ist ja drin. Und wenn geht das mit dem away testen.
Danke! :)
Lebe dein Leben und denke nicht an morgen!

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 20.02.2012, 20:26

Ja, weil es die Grafik wahrscheinlich unter dem Link nicht gibt.
Away geht bei dir nicht, weil du, wenn man bei dir /away eingibt, in einen anderen Raum verschoben wird. Also wirst du auch nie in die Awayliste kommen.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Benutzeravatar
ZischDings
Moderator
Beiträge: 672
Registriert: 22.12.2004, 16:01
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von ZischDings » 20.02.2012, 20:29

lieblich hat geschrieben:Bin über ipod und hatte keine zeit dafür...
Sorry, aber ist es dann nicht besser abzuwarten, bis Zeit vorhanden ist? Denk mal an die Leute die das lesen müssen und dabei ihre Freizeit opfern, um Dir zu helfen.

Ganz abgesehen davon dass es weniger sinnvoll ist, sich unter Zeitmangel mit so einem Mammut-Script zu befassen. Was dabei rauskommt sieht man ja...

Das ist nicht böse gemeint!


lieblich hat geschrieben:Ein Problem: statt Grafik steht da ein ? Oder sagen wir escso es ist eine fehlerhafte datei. Kannst ja in meinen chat gehen und es dir angucken.
Da braucht man nicht im Chat zu gucken, das sieht man gleich im Script:

Code: Alles auswählen

server4.webkicks.de/hauptchat/replacer/admin.gif
Weshalb lässt Du denn das http:// weg?
Meine Meinung steht fest, verwirren Sie mich nicht mit Tatsachen!

http://www.wasguckstu.de

Nervzwergela
Beiträge: 2
Registriert: 01.12.2009, 15:34

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Nervzwergela » 26.03.2012, 18:46

hallo zusammne

Ich habe das Script von Maxs, Unterteilbare Onlineliste - Eigene Listen in der Onlineliste eingebaut als js.datei und dann in die Ankündigung gemacht aber in der Onlineliste ist keinerlei änderung zusehen. Ich habe hier mal den Code bzw das Script angehängt:
Wo liegt da vieleicht der fehler ?

so habe ich es in der ankündigung stehen ,

vielen dank im vorraus

lg

<script type="text/javascript" src="http://www.crash-chaos-radio.com/upload ... "></script>
Script:Zeigen
// Version 1.3

newOL = new (function () {


/* Konfiguration */


// Hier werden die einzelnen Gruppen für die Onlineliste angegeben
// Die Syntax ist:

// ["ID", "NAME", "CSS-STYLE", [USERLISTE]],
// ID = Hier musst du eine ID für die Gruppe angeben. Diese muss einzigartig sein und darf insgesamt nur einmal vorkommen!
// NAME = Hier kommt der Gruppenname hin, also die Überschrift der Gruppe. HTML darf benutzt werden!
// CSS-STYLE = Hier kannst du beliebig viele CSS-Befehle auflisten. Diese ändern den Style (z.B. Farbe) der User in dieser Gruppe. Übersicht der CSS-Befehle findest du z.B. hier: http://www.html-seminar.de/css-definiti ... rsicht.htm
// [USERLISTE] = Hier werden die User aufgezählt, die auf jeden Fall in diese Gruppe müssen. Syntax: ["USER1", "USER2", "USER3", "USER4"]

// Die Reihenfolge der Gruppen kann beliebig geändert werden. Sie erscheinen in der Onlineliste in genau der gleichen Reihenfolge wie hier angegeben,
// BEACHTE: Nach der letzten Gruppe darf KEIN Komma stehen, aber die vorherigen Gruppen benötigen unbedingt eins danach!

this.olBlocks = [

["team", "Admin/Mods", "color: #0033FF;", ["nervzwergela"]],
["user", "User-Liste", "", []],
["djs", "DJs", "color: #33FFFF;", [ccr_djzwergnase]],
["away", "Away-Liste", "color: #0000FF;", []]

];


// Hier können Bilder vor oder nach den Nicks angefügt werden
// this.olPicsBefore fügt Bilder VOR den Nicks ein und this.olPicsBefore NACH den Nicks
// Die Syntax ist:

// ["URL-ZUM-BILD", "USER1", "USER2", "USER3"],
// URL-ZUM-BILD = Hier muss die URL zum Bild angegeben werden
// USER = Hier können die User angegeben werden, die das Bild erhalten sollen. Es können beliebig viele User angegeben werden, diese müssen nur immer durch ein Komma abgetrennt werden und in Anführungszeichen gesetzt werden. Nach dem letzten User kommt kein Komma!

// Es können beliebig viele Gruppen (Bilder mit ihren Usern) angegeben werden.
// BEACHTE: Nach der letzten Gruppe darf wie immer KEIN Komma stehen, aber die vorherigen Gruppen benötigen unbedingt eins danach!

this.olPicsBefore = [

["URL-ZUM-ZWEITEN-BILD", "USER1", "USER2"],
["URL-ZUM-ZWEITEN-BILD", "USER3", "USER4", "USER5", "USER6"]

];

this.olPicsAfter = [

["http://server4.webkicks.de/testccr/bg/bild3.jpg", "ccr_djzwergnase", "USER2"],
["URL-ZUM-ZWEITEN-BILD", "USER3", "USER4", "USER5", "USER6"]

];


// Hier kann man Usern einen bestimmten CSS-Sytle einrichten, der den jeweiligen Gruppenstyle "überschreibt"
// Die Syntax ist:

// ["USER", "CSS-STYLE"],
// USER = Hier kommt der Username des Nicks hinein, der einen eigenen CSS-Style bekommen soll
// CSS-Style = Hier kannst du beliebig viele CSS-Befehle auflisten. Diese ändern den Style (z.B. Farbe) des Users. Übersicht der CSS-Befehle findest du z.B. hier: http://www.html-seminar.de/css-definiti ... rsicht.htm

// Es können beliebig viele User einen eigenen CSS-Style bekommen
// BEACHTE: Nach der letzten Gruppe darf wie immer KEIN Komma stehen, aber die vorherigen Gruppen benötigen unbedingt eins danach!

this.userStyle = [

];


// Hier wird eingestellt, ob die einzelnen User in den Gruppen alphabetisch sortiert werden sollen
// 1 = Aktiviert; 0 = Deaktiviert

this.olSortActivated = 1;



/* Ende der Konfiguration */
/* Ab hier bitte nichts mehr ändern! */



var that = this;

// user - speichert in einem Array alle User im Chatraum
// Pro User ein Array mit 6 Strings
// 1. String: Name; 2. String: Profil; 3. String: Rang; 4. String: Away; 5. String: Raum; 6. String: Awaygrund

this.user = [];


// createBlocks - erstellt die Gruppen in der OL und startet das Script

this.createBlocks = function () {
if (olIsLoad()) {
var prFd = parent.rightFrame.document;
var vOL = (!myBrowser.IE || navigator.userAgent.match(/MSIE ((\d\d)|9)\.[0-9]+/)) ? ((prFd.getElementsByTagName("body")[0].childNodes[2].nodeName == "TABLE") ? true : false) : false;
// Die 2. Überprüfung verhindert unsichtbare OL
if (!prFd.getElementById("newOL") || vOL) {
prFd.getElementById("bd:").style.display = "none";
that.overwriteAdds();
that.delNewOL();
var newTD = document.createElement("td");
newTD.id = "newOL";
prFd.getElementsByTagName("tr")[0].appendChild(newTD);
for (var i = 0; i < that.olBlocks.length; i++) {
var olBid = that.olBlocks[0];
var newOLBlock = document.createElement("div");
with (newOLBlock) {
id = olBid + "wrapper";
innerHTML = "<div id='" + olBid + "headline' style='margin-top:10px; margin-bottom:1px;'><a id='" + olBid + "link' onclick=\"parent.mainframe.newOL.switchStatus('" + olBid + "')\">-</a> " + that.olBlocks[1] + "</div>";
innerHTML += "<ul id='" + olBid + "list' style='list-style-type:none; margin-top:5px; margin-bottom:1px;" + that.olBlocks[2] + "'></ul>";
}
prFd.getElementById("newOL").appendChild(newOLBlock);
}
getXML("GET", "/"+chatData[1]+"/api/get_onlinelist?" + new Date().getTime(), 0, that.getUser);
}
} else {
window.setTimeout("parent.mainframe.newOL.createBlocks()", 50);
}
}

// delNewOl - löscht die neue Onlineliste

this.delNewOL = function () {
var delOL;
if (delOL = parent.rightFrame.document.getElementById("newOL")) {
delOL.parentNode.removeChild(delOL);
}
}

// switchStatus - blendet einen Block ein und aus
// id: ID des Blocks

this.switchStatus = function (id) {
var prFd = parent.rightFrame.document;
if (prFd.getElementById(id + "link").innerHTML == "-") {
prFd.getElementById(id + "link").innerHTML = "+";
prFd.getElementById(id + "list").style.display = "none";
} else {
prFd.getElementById(id + "link").innerHTML = "-";
prFd.getElementById(id + "list").style.display = "block";
}
}


// getOnlineUser - füllt das Array user
// r: auszuwertendes Request

this.getUser = function (r) {
if (r.readyState == 4) {
// Wenn Status 200 ist, ist alles korrekt gelaufen
if (r.status != 200) {
console.log(r);
} else {
var c = r.responseXML.documentElement;
that.user = [];
for (var i = 0; i < c.getElementsByTagName("onlineuser").length; i++) {
var u = c.getElementsByTagName("onlineuser");
that.user = [];
with (that.user) {
push(u.getElementsByTagName("name")[0].firstChild.data);
push(u.getElementsByTagName("profil")[0].firstChild.data);
push(u.getElementsByTagName("rang")[0].firstChild.data);
push(u.getElementsByTagName("away")[0].firstChild.data);
push(u.getElementsByTagName("channel")[0].firstChild.data);
}
if (u.getElementsByTagName("awayreason")[0].firstChild) {
that.user.push(u.getElementsByTagName("awayreason")[0].firstChild.data);
}
}
that.firstAdds();
}
}
}


// firstAdds - schreibt die User in die Onlineliste, die schon online sind und per getUser geladen wurden

this.firstAdds = function () {
for (var j = 0; j < that.user.length; j++) {
if (that.user[j][0] == myNick) {
break;
}
}
for (var i = 0; i < that.user.length; i++) {
if (that.user[j][4] == that.user[4]) {
var away = (that.user[3] == "0") ? 0 : 1;
var awayr = (that.user[5] == "undefined") ? "" : that.user[i][5];
var server = (that.user[i][1] == 1) ? "server" + chatData[0] : "";
var chat = (that.user[i][1] == 1) ? chatData[1] : "";
var rank = that.getRankException(that.user[i][0]);
rank = (rank == 0) ? that.user[i][2] : rank;
if (rank.match(/list$/) == null) {
switch (rank) {
case "gast":
rank = "guestlist";
break;
case "admin":
rank = "teamlist";
break;
case "mod":
rank = "teamlist";
break;
default:
rank = "userlist";
break;
}
}
that.add(that.user[i][0], away, awayr, server, chat, rank);
}
}
}


// getRankException - durchsucht alle Elemente in olBlocks nach Usern und gibt den jeweiligen Blocknamen zurück
// chatter: User, nach dem gesucht werden soll

this.getRankException = function (chatter) {
for (var i = 0; i < that.olBlocks.length; i++) {
var list = that.olBlocks[i][3];
var t = typeof list;
if (t != undefined && ((t == "object" && list.inArray(chatter)) || (t == "string" && list == chatter))) {
return that.olBlocks[i][0] + "list";
}
}
return 0;
}


// getBlock - checkt die Loginnachricht findet heraus, in welchen Block der User muss
// user: User; profil: hat der User ein Profil (1 oder 0)

this.getBlock = function (user, profil) {
var tds = parent.mainframe.document.getElementsByTagName("td");
var rank = that.getRankException(user);
if (rank == 0) {
var howlong = (tds.length > 5) ? 5 : tds.length;
var clD;
for (var i = 1; i <= howlong; i++) {
clD = lineData(tds[tds.length - i]);
if (clD != null && clD[2] == user && clD[4] == 0) {
rank = "guestlist";
break;
}
}
if (rank == 0) {
howlong = (chatTeam[0].length > chatTeam[1].length) ? chatTeam[0].length : chatTeam[1].length;
howlong = (1 > howlong) ? 1 : howlong;
for (var i = 0; i < howlong; i++) {
if (chatTeam[0][i] == user || chatTeam[1][i] == user || chatTeam[2] == user) {
rank = "teamlist";
break;
}
}
}
if (rank == 0) {
rank = "userlist";
}
}
for (var i = 0; i < that.user.length; i++) {
if (that.user[i][0] == user) {
return rank;
}
}
var j = that.user.length;
that.user[j] = [];
with (that.user[j]) {
push(user);
push(profil);
push(rank);
push("0");
push(getRoom());
}
return rank;
}


// olSort - sortiert die einzelnen User alphabetisch
// chatter: User, der in der Liste alphabetisch sortiert werden soll; block: Liste, in der sich der User befindet

this.olSort = function (chatter, block) {
var prFd = parent.rightFrame.document;
var b = prFd.getElementById(block);
var s = b.getElementsByTagName("span");
if (s.length != 0) {
for (var i = 0; i < s.length; i++) {
var c = chatter.toLowerCase();
var span = s[i].innerHTML.replace(/\s$/, "");
var sortArray = [span.toLowerCase(), c].sort();
if (sortArray[0] == c && sortArray[1] != c) {
b.insertBefore(prFd.getElementById("new" + chatter), prFd.getElementById("new" + span));
break;
}
}
} else {
return;
}
}


// addPics - fügt dem User ein Bild vor oder nach dem Nick ein Bild ein
// chatter: User, dem das Bild angehängt werden soll, loc: Ort (0 = vor dem Nick; 1 = nach dem Nick); profil: Besitzt der User ein Profil (0 oder 1)

this.addPics = function (chatter, loc, profil) {
picloc = (loc) ? that.olPicsAfter : that.olPicsBefore;
for (var i = 0; i < picloc.length; i++) {
if (picloc[i].inArray(chatter)) {
return ((loc && profil) ? " " : "") + "<img src='" + picloc[i][0] + "' />" + ((!loc) ? " " : "");
}
}
return "";
}


// getUserStyle - durchsucht userStyle und gibt bei Erfolg den Style des Users zurück
// chatter: User, dessen Style gesucht wird

this.getUserStyle = function (chatter) {
for (var i = 0; i < that.userStyle.length; i++) {
var s = that.userStyle[i];
if (s[0] == chatter) {
return s[1];
}
}
return "";
}


// add - fügt den User in die Onlineliste ein
// chatter: User, der eingefügt werden soll; away: Abwesend (0 oder 1); reason: Abwesendheitsgrund; server: Falls Profil - "server" + Nummer; chat: Falls Profil - Chatname; rank: Falls angegeben - in welche Liste er kommt

this.add = function (chatter, away, reason, server, chat, rank) {
var prFd = parent.rightFrame.document;
that.del(chatter, 1);
if (!prFd.getElementById("new" + chatter)) {
var ownsprofil = (server && chat) ? 1 : 0;
var block = (away) ? "awaylist" : ((rank) ? rank : that.getBlock(chatter, ownsprofil));
var newChatter = document.createElement("li");
with (newChatter) {
id = "new" + chatter;
title = (away) ? chatter + " ist abwesend" + ((reason) ? ": " + reason : "") : chatter;
innerHTML = that.addPics(chatter, 0) + "<span style='" + that.getUserStyle(chatter) + "' onclick=\"fluester('" + chatter + "');\">" + chatter + " </span>";
innerHTML += (ownsprofil) ? "<a id='profil" + chatter + "' title='Profil von " + chatter + "' href=\"Javascript:wopen(\'http://" + server + ".webkicks.de/" + chat + "/pv/" + chatter + "/open\',510,600)\;\">(P)</a>" : "";
innerHTML += that.addPics(chatter, 1, ownsprofil);
}
prFd.getElementById(block).appendChild(newChatter);
if (that.olSortActivated) {
that.olSort(chatter, block);
}
}
}


// del - löscht einen User aus der Onlineliste und von this.user
// id: Nickname; fromadd: Kommt die Anfrage von add (0 oder 1)

this.del = function (id, fromadd) {
var prFd = parent.rightFrame.document;
var delUser;
if (delUser = prFd.getElementById("new" + id)) {
delUser.parentNode.removeChild(delUser);
}
if (!fromadd) {
for (var i = 0; i < that.user.length; i++) {
if (that.user[i][0] == id) {
that.user.splice(i, 1);
break;
}
}
}
}


// overwriteAdds - überschreibt die add- und del-Funktionen der alten Onlineliste

this.overwriteAdds = function () {
var rf = parent.rightFrame;
rf.add = function (chatter, away, reason) {
rf.del(chatter);
that.add(chatter, away, reason);
if (rf.document.getElementById(chatter) == null) {
var y3 = document.createElement("div");
y3.id = chatter;
y3.innerHTML += ((away) ? "<i>" : "") + "<span title=" + ((away && reason) ? chatter + "ist abwesend: " + reason : chatter) + "><span onClick=\"fluester('" + chatter + "')\">" + chatter + " </span></span>" + ((away) ? "</i>" : "");
rf.document.getElementById("bd:").appendChild(y3);
}
}

rf.addp = function (chatter, server, chat, away, reason) {
rf.del(chatter);
that.add(chatter, away, reason, server, chat);
if (rf.document.getElementById(chatter) == null) {
var y3 = document.createElement("div");
y3.id = chatter;
y3.innerHTML = ((away) ? "<i>" : "") + "<span title=" + ((away && reason) ? chatter + "ist abwesend: " + reason : chatter) + "><span onClick=\"fluester('" + chatter + "')\">" + chatter + " </span></span>" + ((away) ? "</i>" : "");
y3.innerHTML += "<font title=\"Profil von " + chatter + "\"><a href=\"Javascript:wopen(\'http://" + server + ".webkicks.de/" + chat + "/pv/" + chatter + "/open\',510,600)\;\">(P)</a></font>";
rf.document.getElementById("bd:").appendChild(y3);
}
}

rf.del = function (user) {
that.del(user, 0);
var xy = rf.document.getElementById(user);
if(xy != null) {
rf.document.getElementById("bd:").removeChild(xy);
}
}
}

});

newOLint = window.setInterval('newOL.createBlocks();', 1000);

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 27.03.2012, 13:42

Zu aller erst einmal: Das Script unterstützt die neue Webkicksfunktion mit den Icons statt P nicht. Wann ich es einbauen kann, kann ich im Moment noch nicht sagen. Es kommt darauf an, wann ich wieder mehr Zeit und Lust habe.

@ Nervzwergla:
Du hast einen kleinen Fehler gemacht, indem du die Anführungszeichen bei einer Gruppe vergessen hast:

Code: Alles auswählen

  this.olBlocks = [
 
    ["team", "Admin/Mods", "color: #0033FF;", ["nervzwergela"]],
    ["user", "User-Liste", "", []],
    ["djs", "DJs", "color: #33FFFF;", ["ccr_djzwergnase"]],
    ["away", "Away-Liste", "color: #0000FF;", []]
   
  ];
Wenn du diesen Codeteil mit diesem ersetzt, dann sollte es funktionieren.

PS: Übrigens. wenn der Nick nervzwergela sowieso Admin oder Mod ist, dann muss er auch nicht in der Teamliste aufgelistet werden. ;)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Nervzwergela
Beiträge: 2
Registriert: 01.12.2009, 15:34

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Nervzwergela » 27.03.2012, 21:25

danke euch ich hab das script jetzt soweit es geht am laufen nur irgend wie scheint das mit den bildchen vor dem nick nicht zu klappen zb admin, on air oder mod vieleicht hat da noch jemand eine idee
liebe gruesse :wink:

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 27.03.2012, 21:50

Das musst du nun direkt im Script einstellen und nicht mehr per anderem Script. ;)
Script:Zeigen

Code: Alles auswählen

this.olPicsBefore = [

["URL-ZUM-ZWEITEN-BILD", "USER1", "USER2"],
["URL-ZUM-ZWEITEN-BILD", "USER3", "USER4", "USER5", "USER6"]

];

this.olPicsAfter = [

["http://server4.webkicks.de/testccr/bg/bild3.jpg", "ccr_djzwergnase", "USER2"],
["URL-ZUM-ZWEITEN-BILD", "USER3", "USER4", "USER5", "USER6"]

];
So wie du es da schon gemacht hast.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Benutzeravatar
BlackDevilDSR
Beiträge: 18
Registriert: 12.11.2011, 11:19
Wohnort: Herne(NRW)

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von BlackDevilDSR » 02.04.2012, 13:49

Hallo liebe Scripter

Ich habe seit einiger Zeit die unterteilte Onlineliste bei mir im Chat.
Aus irgendeinen Grund landet jeder 2 de Chatter im away wenn er den raum betritt.
Erst nach reconnect ist er da wo er sein soll.
Habe auch schon alle scripte entfernt und nur das eine in die Ankündigungen gemacht...bleibt immer bestehen das Problem.

Ich hoffe mir kann jemand weiter helfen.

Danke im vorraus :D

steve2604
Beiträge: 2
Registriert: 28.09.2011, 21:59

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von steve2604 » 09.04.2012, 17:50

Hallo,

Ist es möglich, dass man statt jedem einzelnen Benutzernamen auch eine Benutzergruppe für die Bilder in diesem Abschnitt zuordnet?

Code: Alles auswählen

  this.olPicsBefore = [
   
    ["http://server4.webkicks.de/empyria/icons/bild2.gif", "User1", "User2", "User3", "User4"],
    ["http://server4.webkicks.de/empyria/icons/bild1.gif", "User5", "User6"]

  ];
 
  this.olPicsAfter = [
   
  ];
P.S.: das vollständige Script findet man hier

Danke für eure Hilfe.

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 10.04.2012, 21:09

Hallo steve2604,

bis jetzt ist es noch nicht möglich, dies ohne JavaScript-Kenntnisse zu bewerkstelligen. Aber es ist ohnehin gerade eine neue Version von mir geplant, die möglichst bald erscheint, denn es gibt noch ein paar (neue) Probleme, die dringend behoben werden müssen.
Ich werde solch eine Funktion dann aber gerne einbauen. Bis dahin musst du die User leider noch manuell eingeben.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 13.04.2012, 23:48

Hallo Webkicksuser :D

Es wurde nun das neue Update 1.4 veröffentlicht

Die neuen Profiländerungen wurden übernommen (es werden nun auch Profilicons angezeigt) und der Bug, dass Profilnutzer in der Awayliste landeten, wurde behoben.

Außerdem wird das Profil jetzt standardmäßig vor dem Nicknamen angezeigt, so wie es auch in der normalen Onlineliste der Fall ist. Wer das aber nicht möchte, kann das an folgender Stelle ändern:
Script:Zeigen
Das geht an folgender Stelle:

Code: Alles auswählen

this.pPosition = 0;

Standardmäßig wird das P oder das Icon vor dem Nick angezeigt. Um das P oder das Icon nach dem Nicknamen anzuzeigen, ändere die Stelle wie folgt um:

Code: Alles auswählen

this.pPosition = 1;
Das mit den Bildern für bestimmte Gruppen wurde nocht nicht eingefügt. Ich muss noch schauen, wie ich das genau machen möchte.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Benutzeravatar
BlackDevilDSR
Beiträge: 18
Registriert: 12.11.2011, 11:19
Wohnort: Herne(NRW)

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von BlackDevilDSR » 14.04.2012, 09:35

Erst mal Grosses Lob das mit dem away ist behoben :D
Bei mir ist folgendes Problem bei allen die kein Profil haben steht....undefined....beim nick dabei.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 47 Gäste