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:

Version 1.2

Ungelesener Beitrag von Maxs » 08.02.2012, 16:07

Version 1.2 wurde nun veröffentlicht. Bitte unbedingt aktualisieren!

__________________________________________


Hallo Klick0000,

danke für die Meldung! Der Bug war mir bis heute leider unbekannt. :)
Ich habe den Bug rekonstruieren, im Code finden und somit fixen können. Vielen Dank!

Außerdem konnte ich nun endlich einen weiteren schon länger bekannten Bug finden und fixen, denn er trat bei mir nun endlich auch mal auf (mit Firefox und Firebug). Die Onlineliste sollte nun nicht mehr verschwinden können, wenn man den Raum wechselt. Ich bitte euch, sobald der Bug nochmal mit der neuen Version 1.2 auftritt, ihn zu melden (am besten mit Link zu eurem Chat)!

Curuba hat geschrieben: Das einzige was jetzt noch übrig bleibt ist:
Wenn ich in einen anderen Raum wechsel werde ich in die Away-Liste verschoben, wenn ich wieder zurück in den Hauptchat wechsle ist die Liste ganz weg.
Tritt der Bug nun auch noch in der neuesten Version (also 1.2), die ich heute veröffentlicht habe, auf?


// EDIT 16:54 Uhr: Im Code hatte sich ein kleiner Kopierfehler eingeschlichen, der wurde nun ausgebessert. Bitte aktualisieren, die vor 16:54 Uhr den Code kopiert haben.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Klick0000
Beiträge: 50
Registriert: 04.02.2012, 02:11
Wohnort: Detmold
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Klick0000 » 08.02.2012, 17:16

Hallo Max,

Danke - das klappt !

Aber:

Der Fehler tritt beim Firefox nicht mehr auf, allerdings wird beim Internetexplorer die Onlineliste blinkend angezeigt, d.h die Liste blinkt im secunden Rhytmus :-)

ciao
Nicola

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

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Maxs » 08.02.2012, 17:31

Könntest du mir deine Chatadresse posten? Gerne auch per PN.

//Edit: Okay, das tritt im IE 9 nicht auf, aber in den früheren Versionen ... Ich schaue mal, was sich machen lässt.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Klick0000
Beiträge: 50
Registriert: 04.02.2012, 02:11
Wohnort: Detmold
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Klick0000 » 08.02.2012, 18:15

Hallo Max,

Ich habe den IE 8 - meine Adresse ist: citytalk-owl.de

Ciao
Nicola

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

Version 1.3

Ungelesener Beitrag von Maxs » 08.02.2012, 18:50

So, es gibt eine neue Version: 1.3
Bitte aktualisieren! Diese Version fixt das Blinkproblem, das bei älteren IE-Versionen mit Version 1.2 aufgetreten ist.

Danke für die Meldung, Klick0000! ;)
Zuletzt geändert von Maxs am 08.02.2012, 20:03, insgesamt 1-mal geändert.
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

Klick0000
Beiträge: 50
Registriert: 04.02.2012, 02:11
Wohnort: Detmold
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Klick0000 » 08.02.2012, 19:44

Alle guten Dinge sind 3 und das ist Version 1.3 8)

Funktioniert tadellos - thanks

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, 18:15

Hallo,

habe Probleme mit der Grafik hinter den Nicknamen. Kann sich das jemand angucken?
Script:Zeigen

Code: Alles auswählen

// 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-definitionen-uebersicht.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-definitionen-uebersicht.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[i][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[i][1] + "</div>";
            innerHTML += "<ul id='" + olBid + "list' style='list-style-type:none; margin-top:5px; margin-bottom:1px;" + that.olBlocks[i][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")[i];
          that.user[i] = [];
          with (that.user[i]) {
            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[i].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[i][4]) {
        var away = (that.user[i][3] == "0") ? 0 : 1;
        var awayr = (that.user[i][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);[/script]
Dann funktionieren folgende Scripts für die Onlineliste nicht mehr: Wenn Chatter abwesend ist, kursiv und durchgestrichen in der Onlineliste darstellen.
Eigener Nick fett funktioniert auch nicht.
Könnte man noch Stammys eintragen? Sie sollten dann gelb sein und natürlich noch die Grafik. Aber die Grafiken kriege ich nicht hin, obwohl ich die richtige Grafik-adresse eingegeben habe...
Wie würde dies klappen?
Zuletzt geändert von lieblich am 20.02.2012, 19:43, insgesamt 4-mal geändert.
Lebe dein Leben und denke nicht an morgen!

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, 18:27

lieblich hat geschrieben:...obwohl ich die richtige Grafoik-adresse eingegeben habe...
Das sieht aber nicht danach aus:

Code: Alles auswählen

server4.webkicks.de/huaptchat/replacer/stern.gif
Meine Meinung steht fest, verwirren Sie mich nicht mit Tatsachen!

http://www.wasguckstu.de

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Unterteilbare Onlineliste - Eigene Listen in der Onlinel

Ungelesener Beitrag von Linus » 20.02.2012, 18:30

Aus der Liste mit inkompatiblen Scripts:
- Die Scripts "Bei Away..." funktionieren nicht mehr, sind aber auch unnötig, da sie direkt in diesem Script in der Away-Liste eingestellt werden können
- Eigener Nick in der Onlineliste fettgedruckt (von 1. FC Keller) funktioniert auch nicht. Wenn gewünscht, einfach sagen
Kein Support per PN!

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, 18:39

Ist mir gar nicht aufgefallen. Aber die Grafik-Adresse für die Admin-Grafik ist richtig, wird aber trotzdem nicht angezeigt.
Lebe dein Leben und denke nicht an morgen!

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, 19:29

Aber nicht an der richtigen Stelle eingefügt. Die gehört nicht zwischen die Erläuterungen sondern ein paar Zeilen weiter nach unten. Wohin genau kommt darauf an, ob die Grafik vor oder nach dem Nick angezeigt werden soll. Lies Dir bitte die Anleitung noch einmal durch.
Meine Meinung steht fest, verwirren Sie mich nicht mit Tatsachen!

http://www.wasguckstu.de

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, 19:30

Nach dem Nicknamen ;)
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, 19:46

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"],
  
  ];
Kommasetzung ist falsch, siehe Beispiel 1 (im zweiten Beitrag).

Code: Alles auswählen

// [""],
   [""]
Lösche das.
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, 19:51

So richtig:
Script:Zeigen

Code: Alles auswählen

  // 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-definitionen-uebersicht.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-definitionen-uebersicht.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[i][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[i][1] + "</div>";
            innerHTML += "<ul id='" + olBid + "list' style='list-style-type:none; margin-top:5px; margin-bottom:1px;" + that.olBlocks[i][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")[i];
          that.user[i] = [];
          with (that.user[i]) {
            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[i].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[i][4]) {
        var away = (that.user[i][3] == "0") ? 0 : 1;
        var awayr = (that.user[i][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);
jetzt wird keiner in der OL angezeigt!
Lebe dein Leben und denke nicht an morgen!

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:00

Das wurde in der Anleitung extra noch betont:

Code: Alles auswählen

BEACHTE: Nach der letzten Gruppe darf wie immer KEIN Komma stehen, aber die vorherigen Gruppen benötigen unbedingt eins danach!
Ans Ende der zweiten Zeile gehört noch ein Komma hin,
in der letzten Zeile (bei Dir die dritte Zeile) darf am Ende kein Komma mehr stehen.
Meine Meinung steht fest, verwirren Sie mich nicht mit Tatsachen!

http://www.wasguckstu.de

Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 21 Gäste