3.4.7 Textile

Das Textile-AddOn können Sie in Module einbinden und den Redakteuren so ein Textfeld zur Verfügung stellen, wo sie Texte formatiert eingeben können. Die Formatierung erfolgt nach einer vorgegebenen Konvention mittels bestimmter Abkürzungen oder Zeichen. So können Zeilenumbrüche, Absätze, Überschriften, Links und viele andere Formatierungen angegeben werden. Beim Speichern der Eingaben werden diese Formatierungen automatisch in HTML-Code umgewandelt.

Der grosse Vorteil gegenüber einem WYSIWYG-Editor, wie z. B. dem TinyMCE, ist, dass hier gültiger XHTML-Code erzeugt wird und der Entwickler/Designer eine größere Kontrolle über das Ergebnis hat. Während die vielen netten Buttons eines WYSIWYG-Editors die Redakteure schnell mal zum Spiel mit Farben und Schriftarten verleiten, ist dies bei einem Textile-Eingabefeld zwar auch möglich, aber mit deutlich mehr Aufwand verbunden. Vor allem wenn mehrere Redakteure die Inhalte einer Seite pflegen, ist diese Einschränkung für den Erhalt eines einheitlichen Layouts sehr vorteilhaft.

Zumindest früher war es auch so, dass der mit dem Textile-AddOn erzeugte Quellcode deutlich schlanker war, als der mit einem WYSIWYG-Editor erzeugte. Diese haben sich mittlerweile aber auch weiterentwickelt. Der Unterschied ist nicht mehr ganz so groß.

Ein Nachteil des Textile ist, dass es diese netten Buttons nicht gibt und Sie ihrem Kunden den Umgang mit den mitunter etwas kryptisch anmutenden Formatierungsangaben schmackhaft machen müssen. Das ist normalerweise aber problemlos möglich, da er nur einen kleinen Ausschnitt aus den gesamten Möglichkeiten auch wirklich nutzen wird. Mögliche Abhilfe schafft hier das AddOn markitup für REDAXO, dass die Formatierungen mittels Buttons einfügen kann.

Textile in Modulen einsetzen

Textile

Das Textile-AddOn ist in der REDAXO-Distribution bereits enthalten. Wenn Sie das AddOn installiert und aktiviert haben, erscheint es in der AddOns-Navigationsleiste des REDAXO-Backends.

Wenn Sie auf den Link “Textile” klicken, erhalten Sie Information zum Umgang mit dem AddOn. Sie erfahren hier, wie Sie eine Anleitung zum Textile in Module einbinden und wie Sie die Modulausgabe ausführen können.

Code für die Moduleingabe

Hier ein Beispiel, wie der Code für die Moduleingabe aussehen könnte:

<?php
if(OOAddon::isAvailable('textile'))
{
?>

<strong>Fliesstext</strong>:<br />
<textarea name="VALUE[1]" cols="80" rows="10" class="inp100">REX_HTML_VALUE[1]</textarea>
<br />

<?php
// Einbinden der Anleitung:
rex_a79_help_overview();

}else
{
echo rex_warning('Dieses Modul benötigt das "textile" Addon!');
}

?>

Textile HIlfe Recht

Zunächst wird geprüft, ob das AddOn installiert und aktiviert ist. Falls dies so ist, wird ein Textfeld für die Eingabe definiert und eine Tabelle mit einer Anleitung und Formatierungshinweisen eingebunden. Diese Hinweise werden dann unterhalb des Eingabefeldes angezeigt.

Hinweis

Die Anleitung wird nur angezeigt, wenn das Optionalrecht textile[help] dem Benutzer zugewiesen wurde.

Näheres über die Vergabe von Nutzerrechten finden Sie im Kapitel 3.3 Benutzer/Rechtevergabe

Textile Hilfe

Neu in Version 4 und sehr benutzerfreundlich sind die neue Gliederung der Hilfe nach Themen und die “Akkordeon-Funktion”. Durch Klicken auf ein Thema, hier z. B. “Überschriften”, klappen nur die Hilfeanweisungen für dieses Thema auf. Bei einem erneuten Klick verschwinden sie wieder. So sieht man die Texte nur, wenn man sie auch wirklich braucht.

Weitere Informationen zu den Formatierungsvorgaben können Sie dem Wiki oder direkt dem offiziellen Textile-Handbuch entnehmen.

Sie können auch eine eigene Anweisung verfassen und statt der vorgegebenen in Ihr Modul einbauen. Dazu erstellen Sie ihre Anleitung als HTML-Code, fügen diesen in die Moduleingabe ein und lassen den Funktionsaufruf für die automatisch generierte Hilfe weg.

Codierung der Modulausgabe

Hier ein Beispiel, wie der Code für die Modulausgabe aussehen könnte

<?php

if(OOAddon::isAvailable('textile'))
{

// Fliesstext
$text = '';
if(REX_IS_VALUE[1])
{

// Diese 3 Zeilen dürfen keine führenden Leerzeichen besitzen!
$text =<<<EOD
REX_HTML_VALUE[1]
EOD;

$text = rex_a79_textile($text);

}

$text = str_replace("###","&#x20;",$text);

print '<div class="txt-img">'. $text. '</div>';

}else
{
echo rex_warning('Dieses Modul benötigt das "textile" Addon!');
}

?>

Der im Textfeld eingegebene Text wird in der Modulausgabe entsprechend der angegebenen Formatierungen in HTML-Code umgewandelt und angezeigt. Ist das Textile-AddOn nicht installiert, bekommen Sie statt der Eingaben eine Warnmeldung angezeigt ('Dieses Modul benötigt das “textile” Addon!').

Die Zeile
$text = str_replace("###","&#x20;",$text);
ermöglicht es, zusätzliche, leere Absätze durch Eingabe von ### einzufügen.

Eingabe:
Das ist ein Absatz

###

Das ist ein zweiter Absatz

Ausgabe:

<p>Das ist ein Absatz</p>
<p>&#x20;</p>
<p>Das ist ein zweiter Absatz</p>

Was sieht ein Redakteur?

Textile Redakteur

Der Redakteur, der einen Text eingeben möchte, ruft das Modul auf, in das das Textile-AddOn eingebunden ist, macht seine Eingaben und verwendet dabei die in der Hilfeliste vorgegebenen Formatierunsangaben, z. B. um Überschriften festzulegen und eine Liste einzugeben.

Textile Ausgabe

Hier sei noch erwähnt, dass ein einfacher Zeilenumbruch im Editor auch einen einfachen Umbruch (< br />) in der Ausgabe erzeugt. Bei einem doppelten Umbruch im Editor wird der Text in der Ausgabe als Absatz (< p > Text < / p >)) formatiert. Mehr als zwei Umbrüche werden bei der Ausgabe automatisch auf zwei reduziert. Will er einen größeren Abstand, kann er dies durch Eingabe von “###” erreichen (s. o.).

Hat der Redakteur den Block hinzugefügt, sieht das Ganze im Frontend so aus:

Und hier der dazugehörige Quellcode, schlank, schlicht und sauber

<div class="txt-img">
<h2>Was ist <span class="caps">REDAXO</span></h2>

<p><span class="caps">REDAXO</span> ist ein Content Management System für individuelle, vielfältige und flexible Web-Lösungen.</p>

<h2>Merkmale:</h2>

<ul>
<li>Zentrale Verwaltung mittels einer Client/Serverarchitektur</li>
<li>Trennung von Inhalt und Layout mittels Templates</li>
<li>Die Verwaltung von mehrsprachigen Webseiten ist gegeben</li>
<li>Der Inhalt setzt sich aus verschiedenen Modulen zusammen</li>
<li>Keine Grenzen bei der Erstellung von Modulen</li>
<li>Systemunabhängiges sowie plattformübergreifendes Arbeiten über den Webbrowser</li>
<li>Linkmanagement</li>
<li>Keine Einschränkungen bei der Entwicklung von barrierefreiem Webdesign</li>
</ul>
</div>