[RC] AJAX Chat

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
madblueimp
Mitglied
Beiträge: 62
Registriert: 14.08.2007 15:09
Kontaktdaten:

[RC] AJAX Chat

Beitrag von madblueimp »

AJAX Chat ist eine freie und quelloffene Web Chat Software.

Der Chat ist mit AJAX-Technik (Asynchronous JavaScript And XML) auf Client-Seite und PHP, MySQL und XML auf Server-Seite umgesetzt.

Download und Demo:
AJAX Chat

Liste der Funktionen und Möglichkeiten:
  • * Mehrere Kanäle
    * Private Nachrichten
    * Private Kanäle
    * Kick/Ban beleidigender Benutzer
    * Ignorieren beleidigender Benutzer
    * Online Benutzer Liste
    * Smilies
    * Hyperlinks
    * Trennung langer Wörter um das Chat-Layout zu bewahren
    * IRC ähnliche Befehle
    * Mehrere Sprachen (automatische Erkennung der ACCEPT_LANGUAGE Browser Einstellung)
    * Mehrere Stile
    * Integrierter persistenter Style-Switcher
    * Automatische Anpassung der angezeigten Uhrzeit an die lokale Client-Zeitzone
    * Einhaltung von Web-Standards (XHTML 1.0 strict)
    * Beliebiger Eingabetext (UTF-8), inklusive Programmier-Code und spezieller Zeichen
    * Bandbreite sparende Aktualisierungs-Aufrufe (nur aktualisierte Daten werden übertragen)
    * Überlebt Verbindungs-Abbrüche
    * Kleine Dateigrößen (siehe Download)
    * Aufzeichnung der Chat Nachrichten im XML Format
    * Betrachten der Aufzeichnungen mit Hilfe von XSTL und eines integrierten Viewers
    * Einfache Integration in bestehende Authentifizierungs-Systeme
    * Beispiel-Integration für phpBB 3 enthalten
    * Beispiel-Integration für phpBB 2 enthalten
    * Einfache Anpassung mit Hilfe von Stylesheets (CSS) und Templates
    * Trennung von Layout und Code
    * Gut kommentierter Quelltext
Wichtig:
Da der Support-Aufwand stark zugenommen hat werde ich ab sofort nur noch auf der offiziellen SourceForge Projektseite Anfragen beantworten.
Dieses Forum-Thema kann aber gerne als Benutzer-zu-Benutzer-Support weitergeführt werden.
Zuletzt geändert von madblueimp am 23.01.2008 13:58, insgesamt 5-mal geändert.
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Sieht recht vielversprechend aus auf deiner Seite, werde ich mal näher unter die Lupe nehmen :grin:


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Sorren
Mitglied
Beiträge: 115
Registriert: 02.04.2006 12:51
Kontaktdaten:

Beitrag von Sorren »

Wow ... ned schlecht ... der chat gefällt mir!
madblueimp
Mitglied
Beiträge: 62
Registriert: 14.08.2007 15:09
Kontaktdaten:

Beitrag von madblueimp »

Vielen Dank. :)

Es gibt mittlerweile schon eine neue Version mit einigen Änderungen und neuen Funktionen:
Version 0.2 (16.08.2007):
-------------------------------

New features:
- Integrated login page style with main style
- Added multiple styles (beige, black, grey)
- Added style settings to lib/config.php
- Integrated persistent style switcher
- Added custom JavaScript file supposed for overwriting client side functionality
- Added subSilver style for phpBB2 integration
- Added subsilver2 and prosilver style for phpBB3 integration
- Updated phpBB integration to set style from phpBB user style setting

Bugfixes:
- Adjusted paths in default templates to make the chat work if index.php is located on the document root ('/')

Other changes:
- Moved ajaxChatConfig['url'] from lib/template/loggedIn.php file to js/config.js
- Moved language settings from index.php to lib/config.php
- Moved phpBB root path setting from index.php to lib/config.php
https://blueimp.net/ajax/
nakor
Mitglied
Beiträge: 41
Registriert: 19.12.2005 14:22
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von nakor »

Es wäre schön wenn du die Config anpasst, so dass man die Daten nicht manuell eintragen muss. So müsste es funktionieren:

Code: Alles auswählen

global
	$dbhost, $dbuser, $dbpasswd, $dbname;

// Database connection values:
$params['dbConnection'] = array();
// Database hostname:
$params['dbConnection']['host'] = $dbhost;
// Database username:
$params['dbConnection']['user'] = $dbuser;
// Database password:
$params['dbConnection']['pass'] = $dbpasswd;
// Database name:
$params['dbConnection']['name'] = $dbname;
Desweiteren funktioniert das mit den Styles nicht.
http://www.arsfantasia.de
Verein für Rollenspiel und Fantasy
Stuttgart
John Doe
Mitglied
Beiträge: 684
Registriert: 30.03.2005 01:06

Beitrag von John Doe »

Desweiteren funktioniert das mit den Styles nicht.
Ich hab Probleme mit IE7 und den Styles bin mir aber nicht sicher, ob ich da was bei den Browsereinstelleungen vergrützt habe.

Ie7 zeigt mir im Stildropodown defaultmäßig <leer> an,
und nach Auswählen irgendeines anderen Styles wird ist die Ansicht total im Eimer, weil Ie7 offensichtlich die css Datei nicht lädt.

FF 2.06. und Opera 9.10 funktionieren einwandfrei.

Sehr schöner Chat-Mod :)
Kleopatras_Sister
Mitglied
Beiträge: 257
Registriert: 28.07.2007 18:44

Beitrag von Kleopatras_Sister »

Nun hier :

Code: Alles auswählen

Kleopatras_Sister
    <?php
    /*
    * Date:   05.06.2007
    *
    * File:   lib/class/CustomChat.php
    * Project:   PHP_AJAX_CHAT
    *
    * Author:   Sebastian Tschan
    * Website:   https://blueimp.net
    *
    * License:   GPL
    *
    */

    class CustomChat extends Chat {
       function login() {
             if($this->validateLogin()) {
                // Create logs:
                if($this->_params['logsCreateLogs'] && $this->isTimeToCreateLogFiles())   
                   $this->createLogFiles();

                // Log in:
                $this->setUserID($this->_requestVars['userID']);
                $this->setUserName($this->trimUserName($this->_requestVars['userName']));
                $this->setLoggedIn(true);   
                $this->setLoginTimeStamp(time());

                // Check the given channelID (get ID from Name if not present):
                if($this->_requestVars['channelID'] === null)
                   $this->_requestVars['channelID'] = $this->getChannelIDFromChannelName($this->_requestVars['channelName']);     
                if(!$this->validateChannel($this->_requestVars['channelID'])) {
                   $this->_requestVars['channelID'] = $this->_params['defaultChannelID'];
                }

                $this->setChannel($this->_requestVars['channelID']);     
                $this->addToOnlineList();
                
                // IP Security check variable:
                $_SESSION[$this->_params['sessionValuePrefix'].'IP'] = $_SERVER['REMOTE_ADDR'];
                
                // Login message:
                $text = '/login '.$this->getUserName();
                $this->insertCustomMessage($this->_params['chatBotUserID'],$this->_params['chatBotUserName'],4,$this->getChannel(),$text);

                // Welcome message for the user logging in:
                $text = 'Willkommen, ihr Wattwürmer!';
                $this->insertCustomMessage($this->_params['chatBotUserID'],$this->_params['chatBotUserName'],4,$this->getUserID()+$this->_params['privateChannelDiff'],$text);
             }
       }

       // Overwrite:
       // Return true if userID or userName is not already registered:
       function isValidGuestUser($userID, $userName) {
             global $db;
             
             // Check if userID or userName already exist in the phpBB users table:
             $sql = 'SELECT count(user_id) as numRows
                      FROM '.USERS_TABLE.'
                      WHERE
                         user_id = "'.$db->sql_escape($userID).'"
                         OR
                         username = "'.$db->sql_escape($userName).'";';
             $result = $db->sql_query($sql);
             $numRows = (int) $db->sql_fetchfield('numRows');
             $db->sql_freeresult($result);
             
             if($numRows === 0)
                return true;
             return false;
       }
       
       // Overwrite:
       // Return true if the given user is registered and logged in:
       function isValidRegisteredUser($userID, $userName) {
          global $user;
         
          if(   (isset($user->data['is_registered']) && $user->data['is_registered'] == 1) &&
                (isset($user->data['user_id']) && $user->data['user_id'] == $userID) &&
                (isset($user->data['username']) && $user->data['username'] == $userName)   )
             return true;
          return false;
       }
       
       // Overwrite:
       // Return true if the current user is a global moderator:
       function isModerator() {
          global $auth;
          if($auth->acl_get('m_'))
             return true;
          return false;
       }

       // Overwrite:
       // Return true if the current user is a global admin:
       function isAdmin() {
          global $auth;
          if($auth->acl_get('a_'))
             return true;
          return false;
       }

        // Overwrite:
           // Store the channels the current user has access to
           // Make sure channel names don't contain any whitespace
           function getChannels() {
              global $auth;
             
              if($this->_channels === null) {
                 $this->_channels = array();
                 
                 // Default channel, public to everyone:
                 $this->_channels[$this->_params['defaultChannelName']] = $this->_params['defaultChannelID'];

                 if($auth->acl_get('f_read', '29'))
                       $this->_channels[preg_replace('/\s/', '_', '3l!tE G4m!nG Clan')] = '29';

                 if($auth->acl_get('f_read', '93'))
                       $this->_channels[preg_replace('/\s/', '_', 'Eternity Clan')] = '93';

                 if($auth->acl_get('f_read', '3'))
                       $this->_channels[preg_replace('/\s/', '_', 'Intern Group')] = '3';

                 if($auth->acl_get('f_read', '31'))
                       $this->_channels[preg_replace('/\s/', '_', 'TNG Team')] = '31';
              }
              return $this->_channels;
           }
    }
    ?>
sollte ich in die custom nehmen. Habe ich getan, doch beim Aufruf erhalte ich

Code: Alles auswählen

    XML-Verarbeitungsfehler: XML-Deklaration nicht am Beginn von externer Entität
    Adresse: http://konsole360.de/phpBB3/chat/?userID=2&userName=tuxla
    Zeile Nr. 1, Spalte 5:    <?xml version="1.0" encoding="UTF-8"?>
    ----^
Könntest du nochmal ran bitte :)


Dann wegen dem Update, welche files sind diesmal zu überschreiben ?

Wichtig ist nur das ich weiß bzw. du weisst das ich

timout
chatfarben
db

angepasst hab. Also wenn die Files zu überschreiben sind, mir kurz nochmal das sagst, da ich wieder nicht mehr sicher bin wo welche Files sind (heißen)

Danke und LG

PS schreib dann nun hier wie von dir gewünscht und nicht im .com
John Doe
Mitglied
Beiträge: 684
Registriert: 30.03.2005 01:06

Umlautproblem

Beitrag von John Doe »

Es gibt auch ein Problem wenn die Kategoriennamen Umlaute oder Sonderzeichen enthalten.
Das führt nach der Auswahl zu

Code: Alles auswählen

Fehler: Ungültiger Raumname:
Benutzeravatar
kolja
Mitglied
Beiträge: 1546
Registriert: 13.05.2005 16:39
Wohnort: münster

Beitrag von kolja »

lässt dich der chat als shoutbox umbauen bzw ist sowas geplant ??

kolja
Das Leben ist unberechenbar - deshalb ist Improvisation wichtiger als Planung!

Es ist besser zu geben, als zu leihen, und kostet ungefähr gleichviel.

.: Münsters Reggae Forum :.
madblueimp
Mitglied
Beiträge: 62
Registriert: 14.08.2007 15:09
Kontaktdaten:

Beitrag von madblueimp »

nakor hat geschrieben:Es wäre schön wenn du die Config anpasst, so dass man die Daten nicht manuell eintragen muss.
How to use the phpBB database configuration settings (für den AJAX Chat)
nakor hat geschrieben:Desweiteren funktioniert das mit den Styles nicht.
Es funktionierte leider nicht mit dem Internet Explorer.
John Doe hat geschrieben:Ich hab Probleme mit IE7 und den Styles
Ich hatte leider versäumt, den Style Switcher mit dem IE zu testen.
John Doe hat geschrieben:Es gibt auch ein Problem wenn die Kategoriennamen Umlaute oder Sonderzeichen enthalten.
Das führt nach der Auswahl zu

Code: Alles auswählen

Fehler: Ungültiger Raumname:
Die Auswahl des Raumes funktionierte nicht mit dem IE, aus den gleichen Gründen wie auch der Style Switcher nicht mit diesem Browser funktionierte:
Falls die Möglichkeiten (options) einer Auswahl (selection) kein "value"-Attribut zugeordnet bekommen ist dieses Attribut mittels JavaScript-Zugriff im IE anscheinend immer null - obwohl beim Abschicken eines Formulars der Text als Wert auch im IE übertragen wird.
In der neuen Version 0.2.0.2 ist dieses Problem (in den Template-Dateien) gefixt:
Version 0.2.0.2 (19.08.2007):
-------------------------------

Bugfixes:
- Channel selector did not work with Internet Explorer - fixed.
- Style switcher did not work with Internet Explorer - fixed.
Das hatte übrigens nichts mit Umlauten oder Sonderzeichen zu tun - diese zeigen zumindest in meinen Tests mit Firefox, Opera und IE keinerlei Probleme - nur Leerzeichen darf man nicht in den Kanal-Namen verwenden.

Kleopatras_Sister hat geschrieben:beim Aufruf erhalte ich

Code: Alles auswählen

    XML-Verarbeitungsfehler: XML-Deklaration nicht am Beginn von externer Entität
    Adresse: http://konsole360.de/phpBB3/chat/?userID=2&userName=tuxla
    Zeile Nr. 1, Spalte 5:    <?xml version="1.0" encoding="UTF-8"?>
    ----^
Könntest du den Quelltext der Seite posten, wenn du diese Fehlermeldung bekommst? Der "XML-Verarbeitungsfehler" ist nämlich nur die Firefox Mitteilung das das XHTML-Dokument nicht valide ist weil wahrscheinlich eine Fehlermeldung ausgegeben wird die das XML-Format bricht.
Kleopatras_Sister hat geschrieben:Dann wegen dem Update, welche files sind diesmal zu überschreiben ?
Wichtig ist nur das ich weiß bzw. du weisst das ich
timout
chatfarben
db
angepasst hab.
Am besten du gehst folgendermaßen vor:
- Sichere deine angepasste CSS-Datei
- Installier die aktuelle Version 0.2.0.2 neu - die Datenbank-Tabellen haben sich allerdings nicht geändert.
- Übernimm deine Datenbank-Konfiguration in der lib/config.php
- Übernimm deine Timeout-Einstellung in der lib/config.php
- Füg deine Style-Datei gemäß dieser Anleitung hinzu:
How to add your own styles?
Falls du in der englischsprachigen Anleitung etwas nicht verstehst, frag hier einfach nochmal nach.

Leider haben sich in den letzten Versionen noch mal einige Sachen geändert.

Generell ist es aber relativ gut möglich Updates einzuspielen ohne die eigenen Anpassungen zu verlieren:
- lib/class/CustomChat.php wird sich nie ändern, und auch die vererbten Methoden aus lib/class/Chat.php möglichst nicht - daher kommen hier eigene Anpassungen hinein, was die Server-seitige Logik angeht
- js/custom.js wird sich nie ändern, aber es ist möglich hier Methoden aus js/chat.js zu überschreiben, die sich wiederum möglichst nicht ändern werden - hier kommen daher Anpassungen der Client-seitigen Logik rein
- lib/config.php (die Konfigurations-Datei) sollte sich weitgehend auch nicht ändern - bisher kamen seit dem ersten Release höchstens neue Optionen hinzu (die dann allerdings hinzugefügt werden müssen)
- lib/template/loggedIn.php und lib/template/loggedOut.php können auch weitgehend angepasst werden. Diese Dateien haben sich zwar in den letzten Versionen geändert, diese Änderungen waren aber nicht für die eigentliche Funktion des Chats erforderlich.
- Die Stylesheet-Dateien (z.B. css/beige.css) sind rein für das Layout des Chats verantwortlich - er funktioniert auch komplett ohne sie.
Seit Version 0.2 ist es aber auch sehr komfortabel möglich eigene Styles hinzuzufügen.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“