[MOD] Neue Shoutbox

Started by Deep, February 28, 2006, 09:58:53 AM

Previous topic - Next topic

Deep

Liebe Gemeinde,

ich hab mir mal die "Ultimate Shoutbox" von Grudge angeschaut. Dabei bin ich zu dem Schluss gekommen, dass sie nicht so recht das ist, was ich eigentlich suche. Ich möchte eine Shoutbox haben, die oberhalb der Bretterübersicht angezeigt wird, die einem Chat ähnelt und die über ein paar nette Smilies verfügt. Außerdem soll sie sich einigermaßen harmonisch in die vorhandene Optik einfügen.

Vermutlich hab ich mich nicht intensiv genug mit der "Ultimate Shoutbox" beschäftigt. Vermutlich kann man alles so konfigurieren, wie ich es gern hätte. Aber, naja, ich wollte mich eh in die Struktur von SMF ein wenig einarbeiten und deswegen habe ich beschlossen, eine eigene Shoutbox zu basteln, die mir genau das gibt, was ich mir so vorstelle.

Ich möchte dabei nicht unerwähnt lassen, dass ich mich grad mal einen knappen Monat mit SMF beschäftige und darüberhinaus dies meine ersten Berührungen mit PHP sind. Daher fürchte ich durchaus, dass da noch einige "dicke Dinger" drin sind.
Ich möchte also diejenigen, die das interessiert bitten, sich das ganze einmal anzuschauen. Ein Feedback wäre toll!

Hier mal ein Bild von der Shoutbox:


Das MOD findet Ihr unter: http://deep23.de.funpic.de/sbox_v1.00.zip.

Die Installation ist ausschließlich für Version 1.1 RC2 gedacht. Kann sein, dass es unter anderen Versionen funktioniert, getestet hab ich Installation und Deinstallation jedoch ausschließlich unter 1.1 RC2.

Implementiert ist auch nur die Basisfunktion des Shoutens selbst. Es gibt keine Bann-Möglichkeit und keine Option zum Löschen einzelner oder aller Shoutings. Ich woll erstmal prinzipiell wissen, wie das funktioniert.
Die Administration erfolgt über die Forum-Einstellungen. Hier kann festgelegt werden, ob die Shoutbox sichtbar ist, ob Gäste shouten dürfen sowie die Höhe der Shoutbox und die Anzahl der angezeigten Zeilen. Nicht viel also, halt das Wesentliche.

Ein Problem gibt es bereits:
Bei bzw. nach der Installation wird automatisch sbox_setup.php aufgerufen. Im Prinzip eine praktische Sache, aaaaaaber es funktioniert nicht in diesem automatischen Modus. In diesem Script wird versucht, Settings.php zu includen, was offenbar schiefgeht, denn die Variablen $db_server, $db_user, $db_passwd und $db_name sind leer.
Ihr müsst also das sbox_setup.php manuell aufrufen, dann funktioniert es (hm, jedenfalls bei mir). Hat jemand eine Ahnung, wo hier das Problem ist?

Die Shoutbox funktioniert nur in englischer und deutscher Sprache.
Sie wird ausserdem nur in das Standard-Theme eingebaut. Wer andere Themes bevorzugt, der müsste die entsprechenden Änderungen manuell nachziehen.

Da wär gleich noch eine Frage: Gibt es eine Möglichkeit, während der Installation festzustellen, welche Themes installiert sind um dann die Änderungen gleich in allen Themes durchzuführen? Oder: Was passiert, wenn man Änderungen für Themes einbaut, die gar nicht im Forum installiert sind?

Achja, meine englischen Übersetzungen sind vermutlich nicht wirklich so der Hit. Sorry.

Zu guter letzt möchte ich einen Dank an Grudge loswerden, dem ich so den einen oder anderen Code geklaut hab.  ;D

So, und nun bin ich gespannt, ob es Feedback gibt. Aber vielleicht hab ich ja das Thema völlig verfehlt?

Deep

dieter4

Quote from: Deep on February 28, 2006, 09:58:53 AM
Zu guter letzt möchte ich einen Dank an Grudge loswerden, dem ich so den einen oder anderen Code geklaut hab.  ;D

fieser eimer, aber wenigstes stehst du dazu.

Zwar kein Feedback,  aber eine antwort zu einer deiner Fragen:
Quote from: Deep on February 28, 2006, 09:58:53 AM
Da wär gleich noch eine Frage: Gibt es eine Möglichkeit, während der Installation festzustellen, welche Themes installiert sind um dann die Änderungen gleich in allen Themes durchzuführen?

Vergiss es ;D
Jedes Theme ist anders, deshalb kannst du keinen Standard einfügen, der in jedes Theme gesetzt wird. Ausnahmen sind Themes, die nur eine eigene index.template.php besitzen, die du wahrscheinlich nicht verändert hat.


Ich werde die Shoutbox so schnell wie möglich mal testen.

Deep

Moin!

Ich hab selbst schon ein paar Fehler entdeckt. Oberpeinlich: Ich hab das Teil nebenbei unter Windows entwickelt. Nun hab ichs in meinem Testforum installiert, welches unter Linux läuft. Das Linux-Filesystem ist case-sensitive - und bei den Pfadangaben hatte ich geschlampt.
Fast noch peinlicher ist, dass ich vergessen hatte, das automatische Refresh des IFRAMEs einzubauen.

Mit anderen Worten: Es gibt nun die Version 1.01, erreichbar unter: http://deep23.de.funpic.de/sbox_v1.01.zip

Was mich wundert - in meinem Linux-Testforum gab es keine Probleme bzw. Fehler beim automatischen Installieren der Datenbanktabelle und der zusätzlichen Settings über das sbox_setup.php. In meinem Entwicklungsforum unter Windows gab es ja die erwähnten Probleme.
Naja, liegt vielleicht an der PHP-Version oder sowas. Hauptsache, es funzt..

Deep

Draufdrücker

#3
Salü,

erstmal netten Dank für Deine Arbeit. Die Box habe ich mir mal eingebaut, läuft auch. Unter Opera z. B. (8.5) klappt das mit den Smilies nicht. Wenn man einen leeren Shout sendet, wird der Hintergrund blau und die vorherigen Shouts sind verschwunden. Nur als Anregung für updates. Achja, es wär stark wenn man die Smilie ausblenden / deaktivieren könnte.


Danke, Holger

http://draufdrücker.com [nofollow]

Deep

Hallo Draufdrücker!

Danke für Deine Hinweise. Netter Nick übrigens.. ;-)

Hast recht, das mit Opera lag daran, dass ich eine Javascript-Variable mit einem kleinen statt mit einem großen Buchstaben versehen hatte und Opera daraufhin die Variable nicht erkannt hat. Und den Fehler mit dem leeren Shout hab ich in der letzten Version eingebaut, es war nun bei einem leeren Shout ein Refresh zuviel, so dass es im Ergebnis gar keinen gab. Paradox, gell? Naja, wie auch immer, beides ist korrigiert, dafür gibt es bestimmt neue und andere Probleme.

Smilies ausblenden, also wie die Shoutbox selbst ausblenden, das ist mir im Moment zu kompliziert zu programmieren. Ich mach das ja alles nur nebenbei undso. Aber man kann jetzt über die Admin-Oberfläche einstellen, ob die Smilies - für alle - sichtbar sind oder nicht. Wenn sie es nicht sind, dann ist das Shoutfenster entsprechend breiter.

Admins können nun einzelne Shouts löschen, dazu klickt man auf das [X] am Beginn jeder Zeile.

Neu hinzugekommen sind außerdem Möglichkeiten zum Einstellen des Refresh-Intervalls, der Schriftfarbe und -größe sowie der Hintergrundfarbe.
Letztere Layouteinstellungen scheinen bei Netscape 7.1 nicht zu funktionieren. Im Moment hab ich keine Ahnung, was dafür die Ursache sein könnte, vielleicht ein CSS-Problem oder so.
Und bei Opera 6.5 verliert das Shoutbox-Eingabefeld den Fokus nach dem Shouten. Ich hab versucht, den Fokus manuell zu setzen, hilft aber nix. Naja, die Version benutzt wohl eh niemand mehr.
Andere Browser und Browserversionen hab ich grad nicht da.

Oops, fast hätt ich vergessen, die neue Version 1.03 findet sich hier: http://deep23.de.funpic.de/sbox_v1.03.zip.

Winkend,
  Deep

Draufdrücker

Salü,

na super das Du weiter dran arbeitest. Schade nur das hier sonst keiner dankt :) Erst wenn alles ordentlich laufen wird, kommt das ein oder andere DANKE. Nie im vorhinein motivieren, ist nämlich böse! :)

Danke, nur bekomme ich die Shoutbox nicht mehr installiert. Fehler schicke ich Dir per Mail ...

Gruss, Holger

Deep

Hi Draufdrücker,

erstmal vielen Dank für Dein Lob.
Ich muss aber doch gestehen, dass ich die ShoutBox deswegen programmiert hab, weil sie mir persönlich einfach fehlte und ich mit der Ultimate Shoutbox nicht das realisieren konnte, was mir vorschwebte - nämlich eine Shoutbox, die oberhalb der Bretterübersicht angezeigt wird und die ein bisschen Chat-Feeling vermittelt. Es ging mir also nicht um den Dank der Community, sondern es liegen rein egoistische Motive vor.  ;D
Wenn ich dadurch einen Beitrag für die Gemeinschaft leisten kann - umso besser.
Ich wiederum wäre aber in der Tat der Community durchaus dankbar, wenn mir mal jemand sagen könnte, ob ich das denn überhaupt richtig gemacht habe. Die Integration in SMF scheint ja zu funzen, aber habe ich vielleicht irgendwelche Standards verletzt?

Du kannst Die Shoutbox nicht mehr installieren?
Hast Du vielleicht die vorhergehende Version vor der Installation der neuen Version nicht deinstalliert? Das ist zwingend erforderlich, da bei der Installation PHP-Prozeduren eingefügt werden, die doppelt vorhanden sind, wenn man den Vorgänger nicht erst deinstalliert.
Sollte dies doch geschehen sein, wäre es das einfachste, wenn folgende Dateien einfach mit dem Original überschrieben werden:

$languagedir/Modifications.english.php
$languagedir/Modifications.german.php
$languagedir/Help.english.php
$languagedir/Help.german.php
$sourcedir/ModSettings.php
$sourcedir/Subs.php
$themedir/BoardIndex.template.php
$themedir/index.template.php
$themedir/script.js

Die Standardpfade sind - ausgehend vom Verzeichnis, in dem sich das Forum befindet - folgende:

$languagedir = Themes/default/languages
$sourcedir = Sources
$themedir Themes/default

Das solltest Du aber nur dann machen, wenn Du ansonsten keinerlei MODs installiert hast, denn sonst könnte es sein, dass diese nicht mehr funktionieren. Falls Du andere MODs installiert hast, so bleibt Dir leider nur der mühsame Weg, Dir die .mod-Datei aus den Shoutbox-Archiv anzusehen und alle Änderungsschritte in den beschriebenen Dateien manuell rückgängig zu machen.

Aber vielleicht hast Du nur ein Testforum? In diesem Fall würde ich kurzerhand SMF neu installieren, das wäre echt das einfachste.

Auf Deine PNs antworte ich noch gesondert.

Deep

Tialk

also die idee ist gut, leider hab ich en paar probleme beim installiern.... :-/ irgendwas mach ich da wohl falsch!

Deep

Hi Tialk,

Dein Posting verwirrt mich ein klein wenig.
Welche Idee ist gut?
Wie äussern sich Deine Probleme beim Installieren?
Geht es überhaupt um die Shoutbox?

Fragen über Fragen.. ;)

Deep

HappyJack

so, nun werde ich auch mal was dazu schreiben !

Eines vorneweg - deine Shoutbox ist genau so wie ich mir eine vorgestellt habe - Danke für die Arbeit!

So und nun der Erfahrungsbericht von mir:

Bei der Install. zeigte er keine Probleme jedoch nach dem klick auf "fortsetzen" kam Fehler über die anzulegende Tabelle. Ich habe nachgesehen, er hat diese nicht angelegt. Ich habe die Tabelle nach nachträglich erzeugt und siehe da, es funktioniert alles - fast alles  ;D
Ich habe festgestellt das die Größenangaben bei mir unter Firefox nicht funktionieren (V1.5.0.1) der Text jedoch gut lesbar ist. Die Voreingestellte Größe von 8px ist unter Firefox normal groß würde ich sagen, unter IE jedoch kaum zu lesen. Ich habe diese dann auf 12px eingestellt und nun sind alle zufrieden.
So das war's ! ich hoffe geholfen zu haben :)

Ach ja, das mit der Möglichkeit der unterschiedlichen Textgrößen (Text1/Text2) finde ich persönlich nicht so berauschend, hier wäre für mich Sinnvoller wenn immer der letzte Eintag etwas größer/fetter/bunter usw. wäre und die älteren Einträge eben kleiner oder so was.

Deep

Hallo HappyJack,

danke für Dein Feedback!

Ich habe drei Testforen laufen. Eins auf einem Linux-VServer, eins auf einem Standard-Webpaket unter Linux und eins unter Windows mit Apache. Bei dem Forum unter Windows tritt dasselbe Problem auf - das Installationsscript für die Datenbank funktioniert nicht, genausowenig das Script für die Deinstallation. Ich vermute, dass hier irgendwelche Pfade nicht korrekt gesetzt sind, so dass das Settings.php nicht gefunden wird.
Das ist zwar nicht wirklich gut, aber in diesen Fällen kann man das sbox_setup.php bzw. das sbox_remove.php auf den Server laden und manuell ausführen.
Bei meinen Linuxsystemen funktionierte aber alles, daher machte ich mir an diesem Punkt keine großen Gedanken. Aber wenn Du sagst, dass es bei Dir ebenfalls nicht klappt, dann besorgt mich das doch schon ein wenig. Dein Forum läuft doch unter Linux, nicht wahr?
Leider habe ich im Moment keinen echten Ansatz, um diesem Fehler auf die Spur zu kommen. Hat irgendjemand eine Idee?

Ich geb zu, ich habs nicht mit Firefox getestet. Das hol ich bei Gelegenheit mal nach. Zunächst ging es mir darum, die Kernfunktionalität zu implementieren (und mit PHP und SMF klarzukommen).

Die Textgröße (und überhaupt das gesamte Font-Layout) läuft über CSS. Vermutlich gibts da von Browser zu Browser unterschiedliche Interpretierungen. Vermutlich wäre es sinnvoll, per Einstellung auswählen zu können, ob CSS oder alternativ ein HTML-Font-Tag benutzt wird.

Hm, stimmt. Die Möglichkeit, zwei unterschiedliche Textgrößen einzustellen, ist vermutlich einigermaßen bescheuert und macht nicht wirklich Sinn. Das gilt im übrigen auch für die Schriftart. Ich werd das mal ändern.
Aber welchen Sinn macht es, die letzte Zeile größer/fetter/bunter darzustellen? Ist denn immer die letzte Zeile die wichtigste?

Mittlerweile gibt es die Version 1.04. Hier habe ich die deutschen Texte in ein Extra-Mod als "german language package" extrahiert. Dann können auch diejenigen die Shoutbox fehlerfrei installieren, die die deutsche Sprachversion nicht nutzen. Der Nachteil für uns Deutschsprachigen ist natürlich nun, dass wir zwei Dinge installieren müssen. Der Vorteil wiederum ist, dass andere Sprachversionen ganz leicht hinzugefügt werden könnten.
Die Shoutbox hab ich mitterweile in der aktuellen Version auch hier im Download-Bereich eingestellt und warte derzeit noch auf die Freigabe.

Deep

HappyJack

Hallo Deep,

richtig, bei mir läuft alles unter Linux!

Das mit der Schriftgröße (der letzte Eintrag größer) ist wohl auch nicht das gelbe vom Ein - vergiss es einfach  :)

So nach dem das ganze bei mir ein paar Tage läuft - habe ich folgende Fehlermeldungen (vielleicht wegen man. Install. der Tabelle ?)
Bei mir sind die Smilies ausgeschaltet !

8: Undefined index: sbox_SmiliesVisible
Datei: /www/htdocs/***/***/Themes/default/sbox.template.php (eval?)
Zeile: 38

und

8: Undefined index: sbox_GuestAllowed
Datei: /www/htdocs/***/***/Themes/default/sbox.template.php (eval?)
Zeile: 24

kannst du mir da weiterhelfen ?


P.S. und wenn 10 Testforen am laufen hast, die eine hast du nicht, bei der es Problem gibt ! :D :D

Deep

Moin HappyJack,

den Fehler finde ich maximal merkwürdig. Den Fehlern zufolge kennt das System $modSettings['sbox_GuestAllowed'] und $modSettings['sbox_SmiliesVisible'] nicht mehr. Klar, wenn die Datenbankinstallation nicht gelaufen ist, dann kommt es zu diesem Fehler. Aber: Der Fehler käme sofort und nicht erst nach einigen Tagen.

Schau bitte mal unter "Forum-Einstellungen"->"Shoutbox". Gibt es dort ebenfalls einen (oder mehrere) Fehler?
Falls nein, wirds noch merkürdiger. Denn ich wüsste keinen Grund, warum das System das an der einen Stelle kennt und an der anderen eben nicht.
Falls es hier aber einen Fehler gibt, müsstest Du mal direkt auf die Datenbank schauen und in der Tabelle smf_settings überprüfen, ob es Einträge für die Variablen sbox_SmiliesVisible und sbox_GuestAllowed gibt.

Aber das allereinfachste wird sowieso sein, wenn Du das sbox_setup.php erneut aufrufst. Das macht nix kaputt und etwaige Fehlermeldungen (etwa weil die Tabelle schon angelegt ist) kann man beherzt ignorieren.

Sag doch bitte, ob das geklappt hat.

Deep

HappyJack

Da habe ich mich wohl faslsch ausgedrückt, die Fehler waren von Anfang an, nur hatte ich nicht vorher mal nachgesehen, da es ja soweit funktioniert hat !

Also ich habe mal sbox_setup manuell im Forumsordner aufgerufen und bekam folgende Fehlermeldung:

Error Creating shoutbox table. SQL Error: Table 'shire_sbox_content' already exists
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.
Table: Table 'v072471.smf_settings' doesn't exist Allready Exists, Skipping.

There were 12 errors when upgrading your SQL.

Hierzu muß ich sagen, soweit ich das verstehe - kann dieses "v072471.smf_settings" nicht stimmen ! bei mir gibt es keine Tabelle mit diesem Namen. Ist aber in der setting.php richtig drin.

dieter4

"v072471" ist in dem falle der Datenbankname

HappyJack

#15
smile grins (ist ja deutsche Abteilung) - das weis ich ! oder warum ist wohl der eine Text in Fettschrift ;)

noex

Tja, aber wenn es die Tabelle smf_settings bei dir nicht gibt und smf_ dein Tabellenprefix ist, dann hast du sowieso ein Problem, denn wo denkst du speichert SMF die Settings? Also die Tabelle muss es fast geben, wenn nicht dann hast du auch xxx Seiten in deinem Fehlerprotokoll.

lg
noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

HappyJack

@noex
wenn mich nicht alles täuscht ist doch das Prefix frei wählbar oder ? und ich habe nicht geschrieben das "mein" prefix smf_ ist.Denn hier ist der Hund meiner Meinung nach begraben, da mein Prefix nicht smf_ ist, wo kommt dann dies her denn in der Fehlermeldung taucht dieses ja wiederrum auf. ;)

Deep

Hi HappyJack,

die Fehlereinträge bzgl. sbox_SmiliesVisible und sbox_GuestAllowed sind entstanden, weil der automatische Aufruf von sbox_setup.php während der Installation fehlschlug und die Shoutbox daher zunächst diese Settings nicht kannte.
Da das Setup aber manuell nachgestartet worden ist, gehe ich mal davon aus, dass derartige Fehlereinträge nun nicht mehr entstehen - oder?

Den anderen Fehler verstehe ich aber nicht so recht.
Denn: Im Script ist "smf_" als Datenbankpräfix nicht hardkodiert, sondern es wird {$db_prefix} referenziert und zwar sowohl beim Erstellen der Shoutbox-Tabelle aus auch beim Eintrag der neuen Werte in die Settings-Tabelle.
Von daher verstehe ich nicht, wieso bei der Tabellenerstellung "shire_" genommen wird und bei den Settings plötzlich "smf_".

Der Code sieht aus wie folgt:
$result = mysql_query("
  CREATE TABLE {$db_prefix}sbox_content
  (id int(11) NOT NULL auto_increment,
  time varchar(25) NOT NULL default '',
  name varchar(80) NOT NULL default '',
    content text NOT NULL,
    PRIMARY KEY (id)) TYPE=MyISAM;");
if (!$result)
{
    echo "<font color=red>Error creating shoutbox table. SQL Error: ".mysql_error()."</font><BR />";
$error++;
    }
else
echo "<font color=green>Shoutbox table created!</font><BR />";

$toSet = array();
$toSet['sbox_Visible'] = '1';
$toSet['sbox_GuestAllowed'] = '0';
$toSet['sbox_MaxLines'] = '30';
$toSet['sbox_Height'] = '180';
$toSet['sbox_SmiliesVisible'] = '1';
$toSet['sbox_TextSize1'] = 'x-small';
$toSet['sbox_TextColor1'] = '#123456';
$toSet['sbox_TextSize2'] = 'x-small';
$toSet['sbox_TextColor2'] = '#000000';
$toSet['sbox_RefreshTime'] = '20';
$toSet['sbox_BackgroundColor'] = '#E5E5E8';
$toSet['sbox_FontFamily1'] = 'Verdana, sans-serif';
$toSet['sbox_FontFamily2'] = 'Verdana, sans-serif';

// Insert settings
foreach ($toSet as $key => $value)
{
$result = mysql_query("INSERT INTO {$db_prefix}settings (`variable`, `value`) VALUES ('$key', '$value');");
if(!$result)
{
    echo "<font color=red>Table: ".mysql_error()." Already exists, skipping.</font><br />";
$error++;
}
else
echo "<font color=green>Data inserted correctly!</font><br />";
}


Grübelnd,
  Deep

mth

Quote from: Deep on February 28, 2006, 09:58:53 AM
Liebe Gemeinde,

So, und nun bin ich gespannt, ob es Feedback gibt. Aber vielleicht hab ich ja das Thema völlig verfehlt?

Deep


super arbeit von dir mach weiter so
danke und gruß Michael
Tim Mälzer Koch Club [nofollow]

Advertisement: