Todo hier im Blog ...
Mit dem neuen Template von Matthias musste ich hier von einer lieb gewonnenen Eigenschaft eines Serendipity-Plugins Abstand nehmen, nämlich das Einfügen von Zeilenumbrüchen durch das "Textformatierung: NL2BR"-Plugin. Aus den aus verschiedenen Gründen blöden br-Tags für die Zeilenumbrüche habe ich jetzt Absätze machen lassen (p-Tag).
Damit einhergeht, dass ich alle Artikel des Blogs einmal anfassen muss, dafür habe ich allen Artikeln das Tag "todo" verpasst.
Das lässt sich einfach durch folgendes SQL bewerkstelligen:
Das ist auch der Grund, weil der Feed die nächsten Tage etwas spinnen wird.
Ich hangele mich jetzt durch die Artikel und denen, die ich bearbeitet habe, nehme ich "todo" wieder weg.
Damit einhergeht, dass ich alle Artikel des Blogs einmal anfassen muss, dafür habe ich allen Artikeln das Tag "todo" verpasst.
Das lässt sich einfach durch folgendes SQL bewerkstelligen:
INSERT INTO serendipity_entrytags
(SELECT id,"todo" FROM serendipity_entries);
(SELECT id,"todo" FROM serendipity_entries);
Das ist auch der Grund, weil der Feed die nächsten Tage etwas spinnen wird.
Ich hangele mich jetzt durch die Artikel und denen, die ich bearbeitet habe, nehme ich "todo" wieder weg.
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Matthias Mees am :
Dirk Deimeke am :
Matthias Mees am :
Dirk Deimeke am :
Das ist dann wieder Deine Baustelle.
Ich sehe nur, dass die Abstände viel zu gross sind. Absätze mache ich grundsätzlich mit einer Leerzeile dazwischen, ansonsten ist ein Zeilenumbruch ja auch ein Gestaltungselement.
Wo ich Dich gerade "am Rohr" habe. Mir gefällt der "graue Kasten" bei pre-Tags sehr gut (Beispiel). Spricht etwas dagegen, den für Geshi auch zu machen?
Matthias Mees am :
Die schnellste und einfachste Lösung wäre es wohl, sich die Plugin-Styles für .break und .whitespace nochmal in die user.css zu schreiben. Die sauberste Lösung ist natürlich, das Markup von Hand anzupassen, also z.B. auch die Listen als Listen auszuzeichnen. Macht aber halt sackviel Arbeit …
Zu Geshi: Nö, kann man machen. user.css:
.geshi {
background: #eee;
border: 1px solid #aaa;
padding: .71428em;
}
Dirk Deimeke am :
Ich mache mir jetzt einmal den Sack viel Arbeit. Es betrifft ja nicht nur Aufzählungen.
Matthias Mees am :
Ich werde mich mal in den entsprechenden Kram im Forum einlesen und es entsprechend kommentieren, aber es kann sein, dass es keine gut andere Lösung dafür gibt. Kann ich so nicht sagen, da ich das Plugin maximal für Kommentare verwende.
Matthias Mees am :
Dirk Deimeke am :
Vielleicht täte ein Guide mal Not, was man alles bei der Templategestaltung für Serendipity beachten muss.
Matthias Mees am :
Hätte ich soweit im aktuellen master, kommt heute noch in den Kern. Allerdings habe ich jetzt auch noch die Geshi-Styles in 2k11 integriert und beiße mich da gerade fest. Das Geshi-Plugin ist auch nur so lange nett, bis man Zeilennummern anschaltet. Dann wird's ekelhafte Inline-Style-Suppe … seufz
Dirk Deimeke am :
Danke!
Matthias Mees am :
Dirk Deimeke am :
Dirk Deimeke am :
Matthias Mees am :
NL2P erzeugt im Grunde zwei Arten von Absätzen – p.whiteline für „echte Absätze“, also mit einem Abstand nach unten, und p.break für Zeilenumbrüche ohne Abstand nach unten. Das ist zwar semantisch falsch, sieht aber halt so aus, wie man es erwartet.
Dirk Deimeke am :
Ich hatte das nur auf Kommentare bezogen. Na, um so besser. Dann bleibt mir sehr viel Arbeit erspart.
onli am :
Matthias Mees am :
onli am :
Deutlicher konnte ich eigentlich nicht machen, dass das keine Diskussionsvorlage ist. Es steht auch nicht zur Diskussion, denn es ist das, was ich mir damals dabei dachte. Objektive Fakten, nicht ausdiskutierbar.
Dein Kommentar dazu war also ziemlich unnötig.
Eigentlich ist dieser Kommentar dadurch nicht nötiger, aber damit das klar ist: Es ist ein ziemlich mieser Kniff, anzudeuten wie beschissen man eine Lösung findet und sich gleichzeitig der Diskussion zu verweigern, die nie angeboten wurde. Ein Trick, um sich unangreifbar zu machen und die andere Position schlecht wirken zu lassen. Das hast du nicht nötig, und das hat nl2p genausowenig verdient. Und ich weiß auch gar nicht, woher das plötzlich kommt.
Matthias Mees am :
Zweitens ging es mir weder darum, mich unangreifbar noch Dich schlecht zu machen, ich wollte lediglich abschließend kommunizieren, dass ich nicht vorhabe bzw. vor hatte, in dieses (für mich leidige) Thema weiteren Diskussionsaufwand zu stecken, damit hier keine Diskussion weiterläuft, die ich nicht beobachte.
Das war, und dafür bitte ich Dich um Entschuldigung, in der Kürze meiner Antwort offensichtlich nicht deutlich genug. Sorry.
onli am :
>Erstens kommt das nicht „plötzlich“ – ich habe schon mehrfach klar kommuniziert (hier, im Forum, im Podcast), dass ich das NL2BR-Plugin für sinnfrei ...
Das stimmt. Ich bezog mich mit dem plötzlich nur auf das wie. Verknappen ist böse
Dirk Deimeke am :
Ansonsten muss ich Malte leider zu stimmen, dass das kein guter Stil ist.
Matthias Mees am :
Ja, es ist mehr Aufwand, von Plain Text auf Textile umzustellen als von Plain Text auf NL2(BR|P), speziell wenn es um ein Blog wie dieses geht, dass aus Jahren „unformatierter“ Inhalte besteht – vermutlich zuviel Aufwand.
Ich finde es falsch, in s9y NL2(BR|P) als standardmäßige Alternative zum WYSIWYG-Editor einzusetzen, ich würde es durch Textile oder Markdown ersetzen, aber da sind scheinbar alle restlichen Kernentwickler anderer Meinung.
Dirk Deimeke am :
Matthias Mees am :
Was daran für einen Einsteiger schwerer sein soll, verstehe ich nicht.
Ja, Textile ermöglich komplexere Auszeichnungen in einer Form, die eventuell komplizierter und ganz sicher fehleranfälliger, aber eben auch deutlich leistungsfähiger ist – aber das sind nicht die Dinge, die NL2(BR|P) leistet, das erledigt in einem normalen s9y-Setup das Plugin Markup: Serendipity.
Gleiches gilt auch hier für Markdown, das allerdings ein paar Dinge anders macht als Textile. Die Entscheidung zwischen Textile und Markdown ist sehr subjektiv, Markdown hat sicherlich den Vorteil, dass es (z.T. leicht abgewandelt) im Moment sehr populär ist, etwa auf GitHub oder in Jekyll/Octopress. Aber im Grunde ist es Jacke wie Hose, ob man Textile oder Markdown nimmt, weshalb nicht wenige Seiten beides anbieten.
Dirk Deimeke am :
Matthias Mees am :
Es ist ja nicht so, dass man bei Textile oder Markdown andere Formatierungen verwenden muss – man kann ganz normal Plain Text ins Eingabefeld tippen, den eventuell mit den typischen Serendipity-Markup-Zeichen (* und _) versehen und bekommt dennoch eine anständigâ„¢ formatierte Ausgabe.
Der einzige Unterschied ist der, dass Textile und Markdown den Underscore anders interpretieren als s9y-Markup – nicht als Unterstreichung, sondern als Betonung (em; doppelt verwendet als strong). Das ist meines Erachtens zu verschmerzen, zumal das u-Element ohnehin als veraltet eingestuft wird und Unterstreichung über CSS gelöst werden sollte.
Dirk Deimeke am :
Matthias Mees am :
Dirk Deimeke am :
Matthias Mees am :
Nun ist das bei den genannten nicht der Fall, aber nehmen wir mal an, es gäbe Auszeichnungskommandos, die von einem Markup-Plugin nicht interpretiert, aber von den Editor-Buttons erzeugt würden. Dann hättest Du, wenn Du mal wechselst, Markup in den Einträgen, das nicht interpretiert wird. Das wäre doch unschön.
Dirk Deimeke am :
Bei einem Mix der Markups sträuben sich mir die Nackenhaare. Wenn es ein Kommando in einem Markup nicht gibt, muss der Button ausgegraut werden. Daher liesse sich schon überlegen, ob die Buttons durch das Markup-Plugin zur Verfügung gestellt werden.
Wenn ich durch eine Editor-Komponente immer html-Code erzeuge, dann brauche ich weder Textile noch Markdown verwenden, dann sehe ich den Nutzen nicht.
Matthias Mees am :
Die Buttons im PT-Editor leisten ja im Prinzip Folgendes: Sie ermöglichen es dem Laien, komplexes Markup einzugeben, ohne es von Hand tippen zu müssen, z.B. einen Link. Aber bei den meisten dieser Buttons unterscheidet sich die Auszeichnung der überlagernden Markup-Sprache deutlich.
Das kann ich jetzt hier schlecht demonstrieren, aber nimm mal als Beispiel ruhig den Link – das Markup von Textile und Markdown ist ein ganz anderes. NL2(BR|P) hingegen hat gar keine Kurzauszeichnung dafür, weil es „nur“ Absätze erzeugt. Unter diesen Umständen ist es der kleinste gemeinsame Nenner, wenn der Editor-Button HTML erzeugt, denn HTML ist ja das, wohin alle Markup-Plugins umwandeln.
Würden die Editor-Buttons etwas anderes erzeugen, wäre die erzeugte Auszeichnung so in der Datenbank gespeichert, also etwa „*fett*“, was ein schlechtes Beispiel ist, weil das von allen Markup-Plugins interpretiert würde – aber im Zweifelsfall steht dann eben etwas in der Datenbank, was von anderen Plugins nicht interpretiert wird. Ganz zu schweigen von Umgebungen, in denen gar kein Markup-Plugin läuft (ja, das gibt es leider auch).
Wäre es so, dass die Buttons spezifische Auszeichnung generieren, wäre die Markupwahl tatsächlich endgültig – so ist sie es (mit Einschränkungen zumindest) nicht.
Dirk Deimeke am :
Wenn kein Markup läuft, ist HTML oder xHTML gesetzt ...
Eine Mischung ist in jedem Fall böse.
Matthias Mees am :
Sobald man komplexere Auszeichnungen eines Markup-Plugins einsetzt, wird es schwierig, das stimmt. Verwende ich etwa die Auszeichnung von Textile für Links oder Blockzitate, wird Markdown damit nichts anfangen können. Auch ohne eine Markup-Plugin steht dann sehr merkwürdiger Text in der Datenbank. Aber genau deshalb ist es (aus meiner Sicht) sinnvoll, dass die Buttons HTML erzeugen – denn HTML funktioniert in jedem Fall, weil jedes Markup-Plugin letztlich HTML erzeugt.
Problematisch wäre eher, Plugin-spezifische Auszeichnungen in der Datenbank zu haben, die nicht von jedem Markup-Plugin interpretiert werden. Genau das ist bei den Auszeichnungen, die die Kombination aus Markup: Serendipity und NL2(BR|P) interpretiert (Absätze, * und ) aber der Fall, auch wenn die Interpretation von Textile und Markdown etwa anders ausfällt als bei Markup: Serendipity. Selbst ganz ohne Markup-Plugin wäre das noch halbwegs erträglich – es gäbe keine Absätze, aber die Markierungen fett und _unterstrichen sind ja auch in E-Mails gebräuchlich.
Schwierig wird es erst, wenn in der Datenbank Formatierungen stehen, die sehr spezifisch und damit nicht „übertragbar“ sind, und fast alle Buttons des PT-Editor erzeugen solche Formatierungen.
Dirk Deimeke am :
Vielleicht bringt es das auf den Punkt: Markup sollte nicht gemischt werden. Entweder Markup ist Serendipity, dann steht nur HTML drin oder Textile, dann steht ausschliesslich Textile drin.
Was nicht passieren sollte, ist Textile und ein "bisschen HTML".
Ist das jetzt ein bisschen klarer?
Wenn man Textile verwendet und Textile hat ein Feature nicht, dass man braucht, sollte man nicht zu dem "kruden Hack", Markups zu mischen greifen.
So ist es nicht und ich weiss das.
Es gibt Gründe, die für das Mischen sprechen und die hast Du dargelegt. Trotzdem ist das nicht sauber.
Wazu das unsaubere führen kann, sehen wir wenn sich - wie jetzt - jemand (Du) jetzt den Output mal genauer von einer andere Seite aus anschaut, nämlich dass nach heutigen Kriterien sauberes HTML erzeugt wird.
Selbst so wie es jetzt ist, würde es - so lange man bei einem einzigen Markup bleibt - ein leichtes sein, sich an aktuelle Standards alleine dadurch anzupassen, dass man das Markup-Plugin überarbeitet. Wenn html-Tags sich ändern, ich denke dabei beispielsweise an den Slash, der vor der schliessenden spitzen Klammer eines img-Tags verwendet wird und der früher nicht benötigt würde, wird das durch die Mischung von Markups nicht aufgefangen.
Matthias Mees am :
Jetzt kommen wir in den Bereich, in dem ich nur noch mutmaßen kann, nämlich darüber, warum es so ist, wie es ist. Ich nehme an, dass der Schritt, dass erzeugte HTML in die Datenbank zu schreiben und ggf. zurück in das „Schicht-Markup“ umzuwandeln, arg auf die Performance drücken würde. Der Benutzer soll ja idealerweise nicht „merken“, dass da etwas konvertiert wird.
Grundsätzlich stimmt ich Dir zu, wenn es keinen guten Grund dagegen gibt (was ich nicht weiß), sollte in der Datenbank HTML landen.
Der Slash ist übrigens zumindest in HTML5 kein Problem, da HTML5 die XML-Syntax auch erlaubt, auch gemischt mit klassischer HTML-Syntax. Das wäre nur problematisch, wenn Du von XHTML auf HTML4.01 schalten würdest.
onli am :
>Grundsätzlich stimmt ich Dir zu, wenn es keinen guten Grund dagegen gibt (was ich nicht weiß), sollte in der Datenbank HTML landen.
Praktisches Problem daran ist schlicht, dass wir dann einen Parser HTML->Markup bräuchten. Derzeit existiert, soweit ich weiß, immer nur der Parser Markup->HTML. Das ist auch logisch, denn das Markup bildet nur eine Teilmenge von HTML ab, es ist also gar nicht immer möglich, HTML in Markup zu verwandeln.
In Ansätzen machbar wäre das wahrscheinlich nur, wenn die Parser mit sauberen Grammatiken geschrieben und aus denen abgeleitet werden würden, statt die bisherigen Regex-Formeln.
Performanceprobleme dagegen sehe ich keine, im Gegenteil, es wäre für die Performance gut, wenn nicht bei jedem Lesen (gut, das wird durch entryproperties gecachet, trotzdem) das Markup in HTML umgewandelt werden müsste.
Dirk Deimeke am :
onli am :
bei fragen dazu ne mail an mich, der code und die idee für die funktionsweise kommt von mir.
Matthias Mees am :
Aber letztlich funktioniert es so ja, mehr als eine Krücke ist das ohnehin nicht. Ich kann mir gut vorstellen, dass es ekelhafter Code ist, insofern steck Deine Zeit lieber in was Sinnvolles.
Dirk Deimeke am :
Matthias Mees am :
NL2BR bzw. NL2P jetzt noch so aufzubohren, dass es das leistet, was Textile oder Markdown leisten, hielte ich für falsch bzw. unsinnig eingesetzte Arbeitszeit, weil es bedeuten würde, ein kleines Plugin, das letztlich nur ein einfacher Textfilter ist, so zu erweitern, dass es „echten“ Markup-Plugins ebenbürtig würde – was noch dazu dem Prinzip widerspräche, möglichst wenig doppelte Funktionalität durch Plugins abzubilden.
Da würden mir andere Dinge einfallen, falls Malte Langeweile hätte.
Dirk Deimeke am :
Die NL2-Plugins kommen ganz besonders den Benutzern entgegen (wie mir beispielsweise), die einfach nur ein paar Zeilen schreiben und dabei nicht gross auf besondere Markup-"Sprachen" umstellen wollen.
Da ist für mich mittlerweile auch der Zug abgefahren. Es ist ausreichend Arbeit, alle Artikel einmal zu sichten.
Dass die Resultate aus Sicht von HTML oder vor allem aus Sicht eines Designers manchmal - vorsichtig formuliert - korrekturbedürftig sind, steht ausser Frage.
Als ich mit Serendipity begonnen habe, gab es noch keinen guten Editor.
Dirk Deimeke am :