[MOD] Neue Shoutbox

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

Previous topic - Next topic

HappyJack

Also ich verstehe das auch nicht. Fakt ist erst mal nach dem manuellen Anlegen der fehlenden Einträge bekomme ich keine Fehlermeldungen mehr - es funktoniert nun Tadellos ! :D

Ich nochmals die sbox_setup.php in den Forumsordner kopiert und diese dann manuell aufgerufen und was soll ich sagen  - der gleiche Fehler wieder und wieder mit dem Prefix "smf_". Ich check es nicht mehr.Aber da die Shoutbox so einwandfrei läuft lasse ich das ganze mal, denn der Fehler muß ja wohl irgendwo bei meinem Server liegen und da ich im Moment nicht so viel Zeit habe wie ich gerne hätte werde ich mich später nochmal drüber machen.

uvely

Also ich habe versucht die box einzubauen ??? :'( - Kann jemand mal eine Einbauanleitung für "Blonde" hier einstellen?

lg
uvely

Deep

Hallo, uvely!

Ich bin selber blond. Vielleicht kannst Du dann ja was mit meiner Anleitung anfangen?  ;D

Alllllllso:

1. Paketmanager aufrufen.
2. Dort auf "Pakete herunterladen klicken".
3. Unter "Paket hochladen" rechts neben "Hochzuladendes Paket" auf "Browse" klicken.
4. Die Zip-Datei mit der Shoutbox auswählen.
5. Auf "Hochladen" unten links klicken.
6. Wenn der Upload geklappt hast, kommst Du auf eine Seite, in der steht: "Download des Pakets erfolgreich".
7. Dort klickst Du auf  "Modifikation anwenden".
8. Jetzt wird geprüft, ob die Shoutbox einbaubar ist. Angezeigt wird eine Liste der Aktionen, unter "Beschreibung" sollte immer "Erfolgreich" stehen
9. Wenn das der Fall ist, dann klickst Du unten rechts auf "Jetzt installieren".
10. Ist alles gut, erscheint der Text "Das Paket wurde installiert. Sie sollten nun in der Lage sein, die neuen Funktionen zu nutzen. "
11. Fertig.

An welcher Stelle hakt es denn bei Dir genau?

Hm, ich sollte vielleicht erwähnen, dass die Shoutbox nur mit Version 1.1 RC2 funktioniert..  :o

Deep

PS.: @mth: Danke!  :D

uvely

@ deep - danke erst mal für die blonden anleitung...... :D

so jetzt hänge ich bei punkt 9 - wenn ich auf instalieren klicke bekomme ich folgende fehlermeldung:

Fatal error: packageinstall(): Failed opening required '/srv/www/htdocs/web182/html/spielwiese/smf_1-1-rc2_install/Packages/temp/./sbox_setup.php' (include_path='.') in /srv/www/htdocs/web182/html/spielwiese/smf_1-1-rc2_install/Sources/Packages.php on line 534

wo liegt der fehler??????

lg
uvely

Deep

Hm, hm, knifflig.
Es klingt so, als gäbe es eine Art Zugriffsproblem auf das Temp-Verzeichnis. Die Ursachen dafür wären mir aber zunächst ein Rätsel.

Ich hab folgende Fragen:
1. Ansonsten ist aber alles durchgelaufen?
2. Zeigt der Paketmanager an, dass die Shoutbox installiert ist?
3. Ist die Shoutbox bei Dir über der Bretterübersicht sichtbar?
4. Falls ja, erzeugt sie Fehlermeldungen?

Falls der Paketmanager anzeigt, dass die Shoutbox installiert ist und sie sichtbar ist und Fehler erzeugt, dann mach bitte folgendes:
1. Die Datei sbox_setup.php aus dem ZIP-Archiv entpacken.
2. Diese Datei per FTP in das Hauptverzeichnis des Forums (dort wo sich index.php und settings.php befinden) übertragen.
3. sbox_setup.php mit dem Browser aufrufen.

Sollte der Paketmanager anzeigen, dass die Shoutbox installiert ist, sie aber NICHT sichtbar sein sollte, dann DEINSTALLIERE bitte über den Paketmanager die Shoutbox. Sagt der Paketmanager nun, dass sie nicht installiert ist und sie ist auch nicht sichtbar, dann mach bitte folgendes:

1. Lösche über den Paketmanager das ZIP-Archiv im Forum.
2. Öffne das ZIP-Archiv auf Deinem PC mit einem beliebigen Archivprogramm, beispielsweise WinZip.
3. Lösche im Archiv die Datei package-info.xml
4. Erstelle eine Datei mit dem Namen package-info.xml
5. Schreibe in diese Datei folgenden Code:

<?xml version="1.0"?>
<!DOCTYPE package-info SYSTEM "http://www.simplemachines.org/xml/package-info">
<package-info xmlns="http://www.simplemachines.org/xml/package-info" xmlns:smf="http://www.simplemachines.org/">
<name>SMF-Shoutbox</name>
<id>Deep:SMF_Shout</id>
<type>modification</type>
<version>1.03</version>
<install for="1.1 RC2">
<require-file name="sbox.php" destination="$sourcedir" />
<require-file name="sboxDB.php" destination="$sourcedir" />
<require-file name="sbox.template.php" destination="$themedir" />
<require-file name="sbox_angry.gif" destination="$themedir/images" />
<require-file name="sbox_bad.gif" destination="$themedir/images" />
<require-file name="sbox_bang.gif" destination="$themedir/images" />
<require-file name="sbox_cheerio.gif" destination="$themedir/images" />
<require-file name="sbox_church.gif" destination="$themedir/images" />
<require-file name="sbox_cry.gif" destination="$themedir/images" />
<require-file name="sbox_funny.gif" destination="$themedir/images" />
<require-file name="sbox_grin.gif" destination="$themedir/images" />
<require-file name="sbox_hand.gif" destination="$themedir/images" />
<require-file name="sbox_kiss.gif" destination="$themedir/images" />
<require-file name="sbox_laugh.gif" destination="$themedir/images" />
<require-file name="sbox_oops.gif" destination="$themedir/images" />
<require-file name="sbox_smile.gif" destination="$themedir/images" />
<require-file name="sbox_smoke.gif" destination="$themedir/images" />
<require-file name="sbox_yeah.gif" destination="$themedir/images" />
<require-file name="sbox_refresh.gif" destination="$themedir/images" />
<readme type="inline">
<![CDATA[
This allows you to put a shoutbox on your SMF forum above the board index.

Written By Deep ([email protected]), inspired by Matthew Wolf (a.k.a Grudge)
Copyright 2006 - Neither this package or any of it's contents may be distributed without authorisation
]]>
</readme>
<modification type="file" format="boardmod">sbox_v1.03.mod</modification>
</install>
<uninstall for="1.1 RC2">
<readme type="inline">Uninstall will remove all the changes made by the shoutbox. You must do this before upgrading!</readme>
<modification type="file" format="boardmod" reverse="true">sbox_v1.03.mod</modification>
</uninstall>
<install>
<require-file name="sbox.php" destination="$sourcedir" />
<require-file name="sboxDB.php" destination="$sourcedir" />
<require-file name="sbox.template.php" destination="$themedir" />
<require-file name="sbox_angry.gif" destination="$themedir/images" />
<require-file name="sbox_bad.gif" destination="$themedir/images" />
<require-file name="sbox_bang.gif" destination="$themedir/images" />
<require-file name="sbox_cheerio.gif" destination="$themedir/images" />
<require-file name="sbox_church.gif" destination="$themedir/images" />
<require-file name="sbox_cry.gif" destination="$themedir/images" />
<require-file name="sbox_funny.gif" destination="$themedir/images" />
<require-file name="sbox_grin.gif" destination="$themedir/images" />
<require-file name="sbox_hand.gif" destination="$themedir/images" />
<require-file name="sbox_kiss.gif" destination="$themedir/images" />
<require-file name="sbox_laugh.gif" destination="$themedir/images" />
<require-file name="sbox_oops.gif" destination="$themedir/images" />
<require-file name="sbox_smile.gif" destination="$themedir/images" />
<require-file name="sbox_smoke.gif" destination="$themedir/images" />
<require-file name="sbox_yeah.gif" destination="$themedir/images" />
<require-file name="sbox_refresh.gif" destination="$themedir/images" />
<readme type="inline">
<![CDATA[
This allows you to put a shoutbox on your SMF forum above the board index.

Written By Deep ([email protected]), inspired byMatthew Wolf (a.k.a Grudge)
Copyright 2006 - Neither this package or any of it's contents may be distributed without authorisation
]]>
</readme>
<modification type="file" format="boardmod">sbox_v1.03.mod</modification>
</install>
<uninstall>
<readme type="inline">Uninstall will remove all the changes made by the shoutbox. You must do this before upgrading!

</readme>
<modification type="file" format="boardmod" reverse="true">sbox_v1.03.mod</modification>
</uninstall>
</package-info>

6. Füge diese Datei in das ZIP-Archiv ein.
7. Versuche, die geänderte ZIP-Datei über den Paketmanager zu installieren (Vorgehen siehe "Einbauanleitung für Blonde")
8. Die Datei sbox_setup.php aus dem ZIP-Archiv entpacken.
9. Diese Datei per FTP in das Hauptverzeichnis des Forums (dort wo sich index.php und settings.php befinden) übertragen.
10. sbox_setup.php mit dem Browser aufrufen.

Der Unterschied zwischen der ursprünglichen package-info.xml und der geänderten Version ist, dass sbox_setup.php nicht mehr automatisch vom Paketmanager aufgerufen wird. Deswegen muss der Aufruf von Hand erfolgen (Punkt 8 bis 10).

Sieht alles ein wenig kompliziert aus, gell? Aber der Schein trügt.  ;D

Klappts?

Deep

uvely

#25
Schaut sehr kompliziert aus ??? Der Paketmanager installiert das Teil erst gar nicht......obwohl er vorher die im Schritt Neun die erfolgreich Meldungen geliefert hat - ich versuche es jetzt mal mit deinen umbaumaßnahmen und berichte mal dann was pasiert...... :-\
So hab jetzt mal gebastelt....... :'( der Paketmanager sagt immer noch alles breit drückt man dann installiere kommt die Fehlermeldung vom vorigen Post. Vorher gibt es noch die Meldung:

Manche Dateien, die der Paket-Manager aktualisieren muss, sind nicht überschreibbar. Das kann dadurch behoben werden, dass per FTP die benötigten Dateien und Verzeichnisse erstellt bzw. mit CHMOD überschreibbar gemacht werden. Ihre FTP-Informationen werden kurzzeitig zwischengespeichert, um die Funktion des Paket-Managers sicher zu stellen.

Müssen noch irgendwelche Dateien per Ftp zusätzlich auf 777 gesetzt werden?

Ich hab es jetzt noch mal an einem anderen Bord probiert und bekomme diese Aussage:

Sie können keine Pakete herunterladen bzw. installieren, da das Paket-Verzeichnis oder enthaltene Dateien nicht überschreibbar sind!

Dabei sind die Pack Dateien auf 777 gesetzt!

lg
uvely

Deep

Hi uvely,

also, wenn Du nach den Umbauten immer noch diese Fehlermeldungen hast, dann weiß ich an dieser Stelle erstmal auch nicht weiter, sorry.

Die von Dir beschriebene FTP-Meldung erscheint in der Tat manchmal, wenn Dateien, die verändert werden müssen, nicht zum Schreiben geöffnet werden können bzw. nicht auf 777 stehen. Dann gibt man seine FTP-Zugangsdaten ein und der Paketmanager macht den Rest automatisch. Naja, jedenfalls sollte das so sein. Ich hatte schon den Fall, dass ich die FTP-Daten mehrmals hintereinander eingeben musste, weil der Paketmanager offenbar nicht die Rechte aller Dateien auf einen Rutsch ändern konnte.

Wenn Du die Rechte lieber manuell ändern willst, so musst Du folgende Dateien auf 777 stellen:

$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

Hierbei sind in den Standardeinstellungen:
$languagedir = /smf/Themes/default/languages
$sourcedir = /smf/Sources
$themedir = /smf/Themes/default

Ausserdem muss in jedem Fall das Verzeichnis /smf/Packages auf 777 stehen.

Ich drück Dir die Daumen!

Deep

uvely

also ich hab es jetzt an 5 verschiedenen boards getestet - und bei allen die ähnlichen fehler - selbst wenn man von hand per ftp die dateien auf 777 setzt funzt das nicht.........( auch der paketmanager kann unter optionen - das ganze nicht schreibbar machen ) - wo könnte der fehler sein? :'(

lg
uvely

Deep

Ein harter Brocken.
Was richtig gutes fällt mir nun nicht mehr ein. Der einzige Weg, der eine Lösung bieten könnte wäre, dass Du die Modifikationen von Hand durchführst.
Ich werde bei Gelegenheit eine Anleitung dazu schreiben, aber ich habe leider im Moment so gar keine Zeit dafür.

Es wäre schön, wenn Dir vielleicht auch jemand anders helfen könnte. ich habe, wie gesagt, im Moment ein ganz arges Zeitproblem.

Sorry.  :(

Deep

uvely

so ich hab jetzt auf einem anderen webspace das ding eingebaut - der rahmen steht - die smilies auch - die innenbox zeigt folgenden fehler:

Error 500!

/smf_1-1-rc2_install/Sources/sboxDB.php
Internal Server Error!

woran kann das liegen deep?

lg
nervensäge uvely ;D

mediman

Erstmals, keine schlechte Idee ...
Was mich stört, warum per refrehstem IFRAME.
Ein asynchroner periodischer Update der Ressource in ein Blockelement z.B. wäre meines Erachtens um Klassen schöner.

Ansonsten great work  :)
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

uvely

so ich habe nun die box im einsatz läuft toll - wie kann man eine speicherkomponete einfügen damit die texte ein länger gespeichert bleiben und wie könnte man einige smilies ersetzen?

zebrafanstall

hab die box gerade eingebaut erstrmal danke ,
nur hab ich ein kleines optisches problem,
die box ist direkt auf der nächsten Katerogie aufgesetzt,
möchte dazwischen einen abstand haben,
in welcher datei kann ich diesen abstand herstellen
bin absoluter SMF-neuling  8)

Deep

Zunächst einmal: Sorry. Ich hab grad allerhand um die Ohren und kann daher im Moment so gut wie keinen Support leisten. Und dieser Zustand wird voraussichtlich noch eine ganze Weile anhalten.
Aber die Shoutbox ist gar nicht soooooo kompliziert. Schaut Euch einfach mal die Quelltexte an, dadurch beantwortet sich die eine oder andere Frage sicherlich von selbst.

@mediman:
Danke schön für Dein Lob!
Aber, so ganz ehrlich gesagt, das mit dem "asynchronen periodischem Update der Ressource in ein Blockelement" hab ich nicht kapiert. Hast Du dafür ein anschauliches Beispiel?

@uvely:
An Dich speziell ein "sorry", weil ich Deine Mail nicht beantwortet habe. Die Antwort erfolgt dann nun hier, weil andere Leute vielleicht dieselben Fragen haben.

Mit "Texte ein wenig länger gespeichert werden" meinst Du vielleicht die Anzahl der angezeigten Zeilen? In diesem Fall könntest Du es selbst administrieren. Unter "Forum Einstellungen"->"SMF Shoutbox"->"Anzahl der angezeigten Zeilen" kannst Du direkt eingeben, wieviele Zeilen angezeigt werden können. Wenn Du hier z.B. "100" einträgst, werden eben die letzten 100 - statt der voreingestellten 30 - Zeilen angezeigt.

Was das Ersetzen von Smilies betrifft, so wird es allerdings etwas komplizierter.
Im Sprachverzeichnis findest Du die Dateien Modifications.german.php und Modifications.english.php. Dort sind in $txt['sbox_smilie01_file'] bis $txt['sbox_smilie15_file'] die Namen der Smilie-Grafiken definiert. Diese Grafiken befinden sich im Image-Unterverzeichnis des Theme-Verzeichnisses (PHP-Schreibweise: $themedir."/images/").
Die einfachste Variante wäre es nun, wenn Du eine der vorhandenen Smilie-Grafikdateien (beispielsweise sbox_funny.gif) mit einer Smilie-Grafikdatei Deiner Wahl überschreibst. Damit wäre das Thema an sich bereits erledigt.
Wenn Du es aber "richtig" machen willst, dann überträgst Du in das Image-Verzeichnis eine neue Grafikdatei und trägst den Namen dieser Datei in die Zeichenkette $txt['sbox_smilieXX_file'] ein, wobei XX die Nummer des Smilies ist, welches Du ersetzen möchtest. Anschließend müsstest Du in $txt['sbox_smilieXX_code'] den Code eintragen, der in der Eingabezeile eingegeben und durch die Shoutbox in Dein Smilie umgewandelt werden soll. Zu guter letzt solltest Du in $txt['sbox_smilieXX_text'] noch einen Hinweistext eingeben, der angezeigt wird, sobald man mit dem Mauscursor auf ein Smilie zeigt.
Klingt echt komplizierter als es ist. Nur Mut!

@zebrafanstall:
Schau Dir mal die Datei BoardIndex.template.php in smf/Themes/default an. Das einfachste wäre vermutlich, wenn Du hinter die Zeile "if (function_exists('sbox')) sbox();" eine neue Zeile mit "echo '<br />';" einfügst.

Manfred

Deep

Um die Shoutbox in andere Themes einzubauen, müssen die folgenden Schritte durchgeführt werden:

Der Code

  // display shoutbox
  if (function_exists('sbox')) sbox();


muss an die Position eingefügt werden, an welcher die Shoutbox erscheinen soll.

Wenn die Shoutbox beispielsweise in das "Classic YaBB SE Theme" eingebaut werden soll und über der Bretterliste angezeigt werden soll, muss BoardIndex.template.php im Themes/classic-Verzeichnis geändert werden.
Dort muss


// Show the "Board name      Topics  Posts    Last Post" header.
echo '
<table border="0" width="100%" cellspacing="1" cellpadding="5" class="bordercolor">
<tr class="titlebg">
<td colspan="2">', $txt[20], '</td>
<td width="6%" align="center">', $txt[330], '</td>
<td width="6%" align="center">', $txt[21], '</td>
<td width="22%" align="center">', $txt[22], '</td>
</tr>';

ersetzt werden durch

  // display shoutbox
  if (function_exists('sbox')) sbox();

// Show the "Board name      Topics  Posts    Last Post" header.
echo '
<table border="0" width="100%" cellspacing="1" cellpadding="5" class="bordercolor">
<tr class="titlebg">
<td colspan="2">', $txt[20], '</td>
<td width="6%" align="center">', $txt[330], '</td>
<td width="6%" align="center">', $txt[21], '</td>
<td width="22%" align="center">', $txt[22], '</td>
</tr>';


Jetzt funktioniert die Shoutbox bereits, aber wenn man sie mit der Maus minimieren will, gibt es einen Fehler.
Diesen Fehler beseitigt man, indem man index.template.php im Themes/classic-directoy ergänzt.

Dort muss in der function template_main_above() folgender Code

// Output any remaining HTML headers. (from mods, maybe?)
echo $context['html_headers'], '

ersetzt werden durch

// Output any remaining HTML headers. (from mods, maybe?)
echo $context['html_headers'], '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var current_header_sb = ', empty($options['collapse_header_sb']) ? 'false' : 'true', ';

function shrinkHeaderSB(mode)
{';

if ($context['user']['is_guest'])
echo '
document.cookie = "upshrinkSB=" + (mode ? 1 : 0);';
else
echo '
smf_setThemeOption("collapse_header_sb", mode ? 1 : 0, null, "', $context['session_id'], '");';

echo '
document.getElementById("upshrink_sb").src = smf_images_url + (mode ? "/expand.gif" : "/collapse.gif");

document.getElementById("upshrinkHeaderSB").style.display = mode ? "none" : "";

current_header_sb = mode;
}
// ]]></script>


Deep

baraba

Hey,

vielen Dank für die Arbeit und die tolle SB. Bei SMF gibts da ja keine wirklich Alternativen, die ohne Probleme funktionieren.

Hab dennoch eine Frage...
Wie schaut es aus mit der Option, dass Gäste auch die SB nicht sehen können. Für mich wäre das halt interessant. In der SB werden manchmal sachen "gesagt", die aber nicht jeder lesen sollte.

Gibt es da eine Möglichkeit oder müsste ich auf eine neuere Version warten?


Danke und Gruss

Deep

#36
Hallo baraba,

um die Shoutbox über den Adminbereich für Gäste sichtbar und unsichtbar zu machen, müsstest Du tatsächlich auf eine neue Version warten.

Wenn Du es aber prinzipiell so haben möchtest, dass Gäste die Shoutbox nicht sehen, dann kannst Du das in der Datei sbox.php (im Sources-Verzeichnis) so einstellen.

Du ersetzt dort folgenden Code:

if ($modSettings['sbox_Visible'] != '0')


durch folgendes:

if (($modSettings['sbox_Visible'] != '0') && (!$user_info['is_guest']))


Klappts?

Deep

baraba

Jap, daumen hoch! Danke für die prompte Lösung.
Ich werde dich weiterempfehlen :)

mquadrat

Großes Großes lob!

Habe die Shoubox jetzt seit release laufen und es ist wunderfantastisch  :D

Allerdings habe ich eine Frage:

Mit der sbox.php wird nur der DB inhalt neu ausgelesen und dann das iframe aktuallisiert? Nur das? Oder ist es möglich damit ebenfalls die smileys zu aktuallisieren? :)

Dann noch etwas: Ist es möglich Einen Einmal geschriebenen Shout "festzupinnen" also so, das er nicht automatisch gelöscht wird wenn man mehr als die 30 Zeilen schreibt. Eine 31. Zeile eben die Fix ist. Aber trotzdem sollte sie immer aktuallisiert werden, so wie die anderen :)

Deep

Hi mquadrat,

schön dass es Dir gefällt.

Deine erste Frage verstehe ich nicht.
sbox.php ist lediglich dazu da, um das Shoutbox-Template zu laden. Vermutlich meinst Du daher sboxDB.php?
In der sboxDB.php wird in der Tat lediglich der Datenbankinhalt ausgelesen und dargestellt. Bei dieser Gelegenheit werden die Smilie-Codes gegen die Smilie-Grafiken ausgetauscht.
Aber was genau meinst Du mit "Smilies aktualisieren"?

Das "Festpinnen" eines Shouts ist technisch etwas komplizierter und mit Bordmitteln leider nicht ohne weiteres machbar.
Falls es Dir darum geht, einen ganz bestimmten Text in der Shoutbox permanent anzuzeigen, dann mach doch mal folgendes:

In sboxDB.php ersetze folgenden Code


$count=0; // counter to distinguish font color
while($row = mysql_fetch_assoc($result))

mit

echo '<div class="OddLine">Dies ist mein Text</div>';
$count=0; // counter to distinguish font color
while($row = mysql_fetch_assoc($result))


In diesem Fall würde immer als erste Zeile in der Shoutbox "Dies ist mein Text" angezeigt. Eventuell musst Du <div class="EvenLine"> anstelle von <div class="OddLine"> nehmen, je nachdem was besser aussieht.

Deep

Advertisement: