AdvancedBBCode-Demoseite
Version 1.2-20031015


Text-Vorlage zu dieser Seite
Ja, diese Seite wurde tatsächlich aus der angegebenen Text-Datei generiert! :moody: Der Beweis (der Quelltext) befindet sich auf der Projekt-Homepage.


Erforderliche Formatierungen:


Einfache Formatierungen: (ABBC_SIMPLE)


Code- und Zitat-Blöcke: (ABBC_CODE, ABBC_QUOTE)
[code]
int main()
{
    return false;
    // this is useless :-)
}
[/code]

Innerhalb eines [code]-Blocks werden keine BBCode-Tags außer [/code] verarbeitet (proccont = false). Eine farbliche Syntax-Hervorhebung von PHP-Code wird mit dem Parameter "php" erreicht: [code=php]. Zeilenumbrüche, die an [code]-Tags angrenzen, werden entfernt (htmlblock = true).

[quote]
Text, den ein anderer geschrieben hat und der jetzt besonders hervorgehoben wird.
Übrigens: mit [quote=name] kann zusätzlich ein Name angezeigt werden:
Zitat von vorher:
Zitate lassen sich auch problemlos verschachteln!
Zitat von anfang:
Und noch einmal... Denn in jeder Ebene wird die Linie heller (in der CSS-Vorlage einstellbar: .abbc .quote .quote [...]).
echo "Und man kann auch Code-Blöcke zitieren...";
/*
    Nur um nochmal kurz das PHP-Syntax-Highlighting zu zeigen
    Außerdem werden in einem Code-Block [b]keine[/b] Tags interpretiert. [rem]Auch keine Kommentare.[/rem]
    Und keine Smileys ;-)
    Oder <i>&auml;hnliches Zeug</i>...
*/
[/quote]
PS: Wenn die graue Linie zu weit runter geht, ist das ein IE6-Problem! Schau's dir im Mozilla an oder überprüfe den HTML-Code... :gun:

Und ein ganz einfacher (und recht fehleranfälliger) C/C++-Highlighter ist jetzt auch dabei:
[code=c]
// demo function
int main()
{
    if (!strcmp(text, "hello") && is_enabled) printf("%d\n", number);
    return false;
}
[/code]


Horizontale Linien: (ABBC_SIMPLE)
[line]
[line=red]
[line=blue:4]

Die Linien werden nicht mit dem <hr>-Tag erzeugt, sondern bestehen aus dem oberen Rahmen (border-top) eines Absatzes (<div>). Deshalb werden Linienbreiten und Farben auch von nicht-IE-Browsern angezeigt. Desweiteren wäre eine Erweiterung auf gestrichelte Linien o.ä. denkbar.


Links: (ABBC_URL)

Das Ziel-Frame (<a target>) für [url]-Links kann in der Konfiguration geändert werden. Standard ist ein neues Fenster, um Links z.B. im selben Fenster zu öffnen, muss man $abbc_cfg['target'] = "" angeben.


Bilder: (ABBC_IMG)
[img]film.gif[/img]
[img=absmiddle]film.gif[/img]
[img=left]film.gif[/img][br]

Folgende Ausrichtungen sind möglich (HTML): left, right, top, bottom, middle, absmiddle, baseline (je nach Browser)

Ach ja, das [br]-Tag entspricht dem HTML <br clear=all> und kann dafür genutzt werden, um den Textfluss unterhalb eines am Rand ausgerichteten Bilds fortzusetzen.


Schriftformatierungen: (ABBC_FONT)

[align=left]Desweiteren kann der Text links, mittig oder rechts ausgerichtet werden.[/align]
[align=center]Desweiteren kann der Text links, mittig oder rechts ausgerichtet werden.[/align]
[align=right]Desweiteren kann der Text links, mittig oder rechts ausgerichtet werden.[/align]
Auch Blocksatz ist möglich ([align=justify] ... [/align]).

[indent]
Der Text kann auch eingerückt werden. Das kann man am besten mit einem längeren Absatz demonstrieren, aber jetzt muss es reichen, das Fenster zu verkleinern. Mit [indent=n] kann der Text auch um n Pixel eingerückt werden.
[/indent]


Listen: (ABBC_LIST)
Listen werden mit dem [list]-Tag eingeschlossen. Der optionale Parameter gibt den Typ der Liste an. Beispiel:
[list]
[*]Erste Zeile
[*]Zweite Zeile
[*]Dritte Zeile
[/list]
wird zu:

Weitere Listentypen:


Spezial-Codes: (ABBC_SPECIAL)
Um die Grundformatierung von Texten möglichst einfach und intuitiv zu gestalten, unterstützt diese BBCode-Engine folgende Abkürzungen:

Eine graue horizontale Linie wird mit mindestens 4 Bindestrichen (-) alleine in einer Zeile erzeugt.

Die Steuerzeichen wurden so gewählt, dass sie dem gewünschten Effekt möglichst ähnlich sehen und dabei wenig ungewollte Formatierungen verursachen.

Diese Zeichen können nur um ein Wort gesetzt werden, direkt außerhalb des Blocks muss also ein "Leerzeichen" und direkt innerhalb ein "Nicht-Leerzeichen" stehen. Leerzeichen sind folgende Zeichen: Leerzeichen, Tabulator, Punkt, Komma, !, (, ), ?, +, -, Zeilenumbruch. Da die Steuerzeichen selbst nicht darunter vorkommen, können Formatierungen in dieser Form nicht verschachtelt werden! Außerdem sollten sie nur für kurze Textpassagen verwendet werden, eine Formatierung über mehrere Zeilen ist nicht möglich. Mehrfach aufeinanderfolgende Vorkommen dieser Zeichen sollten nicht zu einer Formatierung (und damit dem Verschwinden einzelner dieser Zeichen) führen.

Da diese Zeichen auch in normalem Text oder bestimmten Bezeichnungen vorkommen können, ist es möglich, dass sie in Einzelfällen falsch interpretiert und dadurch teilweise durch eine bestimmte Formatierung ersetzt werden. Ggf. kann man dieses "Kommando-Subset" durch Setzen der abbc_action-Variable deaktivieren.

Der Sonderfall der C-ähnlichen Kommentare /*...*/ wird erkannt und nicht umgewandelt. Dafür müssen für die Kursiv-Formatierung mit /.../ aber mindestens zwei Zeichen eingeschlossen werden.

Folgende Symbole gehören auch in diese Gruppe:


Don't-Interpret-Blöcke und Kommentare: (ABBC_DONTINT)

Beispiel:
[#]
[list=o]
[*]ABC [b]oder?[/b]
[*]def
[/list]
[/#]

Hinweis: Zeilenumbrüche, die an [rem]-Tags angrenzen, werden entfernt! (htmlblock = true)


Absatz-Übersetzung: (ABBC_PARAGRAPH)
Um einzelne Leerzeilen etwas platzsparender darzustellen, werden sie hierbei durch einen neuen Absatz dargestellt. Ganz konkret wird also die leere Zeile "\n<br>" sowie einige Spezialfälle durch den Absatzwechsel "\n</p>\n<p>" ersetzt. In Einzelfällen kann das durch Angabe des BB-Tags [br] verhindert werden.


Eigene Tag-Definitionen:
Fast alle hier beschriebenen Tags werden in der Tag-Konfiguration (abbc.cfg.php) definiert. Deshalb können sie auch einfach verändert oder entfernt werden oder man kann eigene Tags hinzufügen. Alle dafür relevanten Informationen befinden sich am Anfang des Tag-Definitions-Bereichs in der PHP-Datei.

Für eigene Tags steht die Subset-Konstante ABBC_CUSTOM zur Verfügung. Diese Subset-Namen können aber auch in der Datei abbc.lib.php zu Beginn und bei jedem einzelnen Tag umdefiniert werden.

Hinweis: Je mehr Tags in die Konfiguration aufgenommen werden, desto länger dauert der Übersetzungsvorgang! Es ist also generell sinnvoll, definitiv nicht benötigte Tags aus der Konfiguration zu entfernen (z.B. durch Auskommentieren), anstatt nur das entsprechende Subset zu deaktivieren.


Smileys: (ABBC_SMILEYS)
Nach den BBCode-Tags werden die Smileys definiert. Wird irgendwo im Code der Seite eine der Smiley-Kennungen gefunden (wieder durch eins der für ABBC_SPECIAL definierten Trennzeichen isoliert), so wird es durch ein <img>-Tag ersetzt, um die definierte Smiley-Grafik anzuzeigen. Alle Grafiken werden im Pfad $abbc_cfg['smilepath'] referenziert. Falls für ein Smiley der Parameter 'align' gesetzt wurde, wird diese Angabe dem eingesetzten <img>-Tag eingefügt.

Um einzelne Symbole nicht als Smiley darzustellen, kann man im Einzelfall die [#]-Tags verwenden: [#];-)[/#] Wenn das Überhand nehmen sollte, kann man dem User die Option "Smileys deaktivieren" für sein Posting anbieten.


Link-Erkennung:
Ist in der Konfiguration der Parameter 'find_urls' aktiviert, werden nach der Übersetzung noch übrige HTTP/FTP/MailTo-Adressen durch anklickbare Links ersetzt. Dabei müssen die Adress-Angaben durch ein Leerzeichen, Tabulator oder einen Zeilenumbruch isoliert sein. Folgende Adressen stehen z.B. völlig uncodiert in der Vorlage zu dieser Seite:
http://www.xxx.de:90/123?xcf=&f=g+hddd~s
any_1@nowhere.com (E-Mail-Adressen)
http://asc:cfg@www.xxx.de:90/123?xcf=&f=g+hddd~s und ftp://asc:cfg@www.xxx.de:90/123?xcf=&f=g+hddd~s
Es geht auch ohne http:// oder ftp:// davor: www.xdf.de/frt~fr?fgt+fe_fr oder ftp.xdf.de/frt~fr?fgt+fe_fr

Es gibt keine Möglichkeit, die Link-Erkennung lokal zu deaktivieren. Man kann dem User höchstens anbieten, sie für sein Posting generell zu de-/aktivieren.


Aktivierung bestimmter Subsets:
Um bestimmte Codes freizugeben bzw. zu verbieten, kann man in der Konfiguration den Parameter 'subsets' verändern. Die Konstanten für die oben aufgeführten Features stehen jeweils neben der Überschrift. Um generell alles zu aktivieren, kann man die Konstante ABBC_ALL verwenden. ABBC_NONE deaktiviert alles bis auf die erforderlichen Umwandlungen (Zeilenumbruch, HTML-Zeichen etc., siehe oben). Die \[-Zeichen werden immer ersetzt und nicht interpretiert.

Mehrere Konstanten werden mit dem ODER-Operator verknüpft: ABBC_SIMPLE | ABBC_URL | ABBC_IMG.
Einzelne Subsets werden so ausgeschlossen: ABBC_ALL & ~ABBC_SPECIAL.

Die Allgemeine Verwendung des ABBC-Moduls sieht also wie folgt aus: (ist eigentlich ganz einfach)
include("abbc.php");

// Hier $text aus Datei/Datenbank/Eingabe lesen...
$text join(""file("demo.txt"));

echo 
abbc_proc($text);


Mögliche Probleme:
Ungültige, nicht erkannte oder deaktivierte Codes oder Steuerzeichen werden einfach nicht interpretiert, d.h. sie werden genauso angezeigt, wie sie im Quelltext vorliegen.

Viele BBCode-Parameter werden direkt als HTML-Parameter übernommen. Die entsprechenden Stellen können im Quelltext eingesehen werden, beziehen sich aber hauptsächlich auf Bilder und Schriftarten, -farben und -größen. Dabei sind evtl. noch mehr Angaben zulässig, als hier beschrieben werden. Eine HTML-Referenz wie SelfHTML hilft da sicherlich weiter.

Seit Version 1.1 verarbeitet das Übersetzungsmodul BBCodes in beliebiger Verschachtelungstiefe. Dazu müssen allerdings alle Tags wieder in der richtigen Reihenfolge geschlossen werden (sofern das nötig ist). Ist das nicht der Fall, werden die betreffenden Tags farblich markiert. Desweiteren werden alle diesen Fehler umschließenden Tags ebenfalls nicht korrekt dargestellt:
    normal [b] bold [color=blue] [i] bold-italic [/b] italic [/color] [/i] normal
    normal [b] bold [color=blue] bold-italic [/b] italic [/color] normal
Bei falsch geschlossenen/verschachtelten Tags ist eine fehlerhafte Formatierung durch den gesamten Text nicht auszuschließen. Da braucht nur irgendwo, zwei Seiten später, das fehlende schließende Tag zu kommen... :*) Die farbliche Hervorhebung lässt sich übrigens in der CSS-Vorlage (Klassen .eop und .ecl) einstellen.

Beispiele für korrekte Verschachtelungen:
    SCHWARZ [color=red] ROT [color=blue] BLAU [/color] ROT [color=green] GRÜN [color=blue] BLAU [/color][/color][/color]
    SCHWARZ ROT BLAU ROT GRÜN BLAU
    [b]ABC [sub]ABC [sub]ABC [sub]ABC[/sub][/sub][/sub] ABC[/b]
    ABC ABC ABC ABC ABC



Allgemeines Browserverständnis:
Immer dasselbe Problem... Also, ich habe dieses Programm mithilfe meines Internet Exploders 6 SP1 entwickelt und sowohl mit dieser Version als auch mit Mozilla ab 1.2.1 und Opera ab 7.01 so gut wie keine Probleme bekommen (bis auf das [quote]-Problem oben). Ein kurzer Abschlusstest mit dem IE 5.0 von Windows 2000 sah dann schon weniger gut aus, vielleicht kann ich mich bei Gelegenheit auch mal darum kümmern. Auch Opera 6.0.5 hat den kurzen Besuch nicht gut überstanden. Linux-Browser konnte ich bislang noch nicht testen.

Nachdem diese Bibliothek nun schon längere Zeit im BlackBoard Internet-Forum im Einsatz ist, sollten alle größeren Probleme mit aktuellen Browsern behoben sein. Falls doch mal was nicht geht, kann man zuerst versuchen, die eigenen HTML-Übersetzungs-Definitionen anzupassen. Ansonsten bitte ich um eine kurze Benachrichtigung.

189.24 msec