Artikel mit Tag nl2p
nl2p nutzbar: 0.2
Thursday, 19. March 2009
Das als Vorabversion schon gezeigte nl2p-Plugin für Serendipity ist fertig. Unter der Haube fast komplett umgebaut (aus Performancegründen, dazu später mehr), aber funktional gleichwertig. Das heißt: Steht unter einem Textabschnitt ein Enter wird er zu einem kleinen, bei zwei Enter oder mehr zu einem großen Absatz. Blockelemente werden allgemein nicht angerührt, sodass man Listen und Tabellen auch direkt als HTML schreiben kann ohne das Plugin deaktivieren zu müssen, blockquotes dagegen werden formatiert.
Da Markdown und Textile in Kombination damit nicht richtig funktionieren, wird nl2p durch das Textformatierungsplugin liquid ergänzt, dessen neue Version leicht verbessert wurde: Escaping per \ und ein gefixter Bug, der in Kombination mit a-Tags auftrat, sollten es nun für den echten Einsatz nutzbar machen. Wer eine Idee für einen besseren Namen hat oder eine funktionierende Alternative kennt gebe bitte Bescheid. Wobei das nicht als Distanzierung verstanden werden soll, es scheint in all seiner Einfachheit bisher wirklich gut zu funktionieren.
Noch kurz ein Wort zu Textile, das als mögliche nl2p-Alternative für einige besser passen dürfte, denn es reagiert ebenfalls unterschiedlich auf einzelne und mehrere Enter und macht auch sonst einen guten Eindruck. Das Plugin kam bei meinen Tests nicht mit HTML-Blockelementen zurecht, formatierte z.B. auch newlines in ul-Listen zu Umbrüchen und pfuschte in pre-Tags rum. Dies ist laut Doku mit Textile-Bordmitteln vermeidbar, aber hier zu oft genutzt um alle Einträge umzustellen und daher ein ausschließendes Kriterium.
Beide Plugins sind im Blog aktiviert, wer Anzeigefehler (z.B. komplett fehlende Einträge oder unpassend kursive) oder sonstige Bugs bemerkt - bitte melden.
Download:
nl2p für Serendipity
Saturday, 14. March 2009
Nach dem Amoklauf und den Überlegungen dazu wusste ich nicht, wie das hier weitergehen soll. Wie schließt man an so ein Thema an, ohne dass eine unpassende Kombination entsteht? Ich will auf der Meta-Ebene bleiben und die Frage so umgehen.
Serendipity verwendet standardmäßig das nl2br-Plugin. Das ist sinnvoll, denn so entspricht das Textverhalten im Editor dem gewohnten - jedes Enter führt eine Zeile weiter nach unten. Es ist nicht sinnvoll, denn nur mit br unterteilte Texte wirken wider der Barrierefreiheit. Diesen Konflikt zu lösen ohne das einfache Enter zu ignorieren ist derzeit die selbstgewählte Aufgabe.
Übrigens nicht ganz freiwillig: Markdown kam scheinbar nicht zu 100% mit dem nl2br-Plugin zurecht. Dieses mal kurz zu deinstallieren um das Problem zu überprüfen war keine gute Idee, die beitragsspezifischen Einstellungen gingen dabei verloren. Es nun wieder zu installieren würde einigen Texten nicht gut tun.
Die Lösung ist manuell recht simpel: Zwei <p>-Tags werden per CSS unterschiedlich konfiguriert. <p class="whitespace"> schafft unter dem Absatz eine Linie Platz, <p class="break"> springt nur in die nächste Zeile:
p { margin-top: 0em; margin-bottom: 1em; } p.whiteline { margin-bottom: 1em; } p.break { margin-bottom: 0em; }
Mit diesen beiden Hilfsmitteln kann man nun den Text sauber und richtig unterteilen.
Zum Glück habe ich das nur bei wenigen Beiträgen ausprobiert. Denn manuell den Html-Code in den Beitrag zu schreiben ist weder komfortabel noch zukunftssicher, will man später das Ganze abändern oder automatisieren. Genau darum geht es nämlich: Das nl2p-Plugin soll einen Textblock mit einem abschließenden Enter mit dem kleinen p-tag umranden, einen mit mehr Entern endenden Textblock dagegen mit dem großen p-tag.
Eigentlich funktioniert das auch schon. Text ohne weitere Elemente wird fehlerfrei behandelt, Blockelemente wie Listen werden nicht angerührt. Für die Kommentare kann man das also schon jetzt nutzen. Der Rest hängt momentan scheinbar daran, dass in <blockquotes> auf die newlines ebenso reagiert werden soll wie im restlichen Beitrag. Das funktionierte in der Testumgebung, nicht aber im echten Betrieb auf dieser Installation mit ihren komplexeren Anwendungsfällen. Daran muss also noch gearbeitet, das Problem genauer untersucht werden.
Ein Nachteil des nl2p: Formatierungsplugins wie Markdown oder textile funktionieren in der Kombination damit nicht oder nur teilweise. Daher müsste so etwas simples wie das s9ymarkup-Plugin her, das sich um <p>s nicht schert, aber ein URL-Tag hat (insbesondere für die Kommentare notwendig). Ein erster Entwurf davon unter dem Arbeitsnamen liquid ist angehängt: kursiv und fett wie bei Markdown mit * bzw. **, einen Link erstellt man (im Grunde wie bei ubuntuusers) mit [Linkziel (Linktitel) Linkname].
Der Code insbesondere des nl2p-Plugins ist grob kommentiert und weitgehend ohne reguläre Ausdrücke. Wer einen Blick hineinwerfen will, im Idealfall um zu helfen, sei dazu ermutigt. Gerade weitere Vereinfachungen müssten mit etwas Distanz zu finden sein, vermute ich, ansonsten gilt es noch die erwähnten Probleme zu lösen. Schön ist der Code allerdings nicht wirklich, weil die Parserlogik nach der gewählten Methode dann doch etwas komplex geworden ist.
Download: