Es hat schon ein wenig gedauert, da es in der Priorität von mir auf Wenn Zeit gesetzt wurde, doch was so lange währt wird gut und nun ist auch fertig geworden. Was? Klar, wie es in der Überschrift steht: Ein neues Theme für meinen Blog. Die Überschrift verrät auch noch etwas mehr und ist provokativ. Doch zuerst die Anforderungen für ein neues Theme:
Das war dann doch schon eine ganze Menge, zumal einiges davon nicht direkt mit DasBlog umsetzbar ist. DasBlog bietet durch vordefinierte und selbst definierbare Makros für Theme-Designer zwar auch die Möglichkeit zur Erweiterung, aber ein ordentliches Plug-In System wie bei Miranda oder Wordpress fehlt. Ich habe den Eindruck seit Scott Hanselman bei Microsoft unterschrieben hat, ist DasBlog auf dem sterbenden Ast geraten. Jedenfalls zeigen das die letzten Checkins. Da passiert derzeit nicht mehr viel. Egal was in ein neues Thema investiert werden würde, es musste also vorher durch eine Möglichkeit zur Migration der Blogeinträge auf eine andere Blog-Engine abgesichert werden. Warum? Weil sonst eine Investition in eine Schaffung der Möglichkeit zur Migration einen höheren Wertbeitrag hat, als ein neues Theme. Doch eine Migration ist möglich, wenn auch mit einigen Hürden. Also ran an das Theme?
Bleibt noch die Frage, ob man eher selbst definierte Makros scheiben sollte oder den Quellcode einfach auscheckt und erweitert. Die Anforderung "durch XHTML-Validierung" kommen trägt zur Antwort bei:
Das ist noch sehr gemildert ausgedrückt. Will man dieses ändern, bleibt dann doch gar nicht anderes möglich, als den Quellcode anzufassen. Unglaublich, was da alles für sehr triviale Fehler in DasBlog drin sind. Ein Beispiel dafür ist die fehlende Codierung von & als & bei URLs. Über die Anpassung des Quellcodes konnte ich die Fehler auf nur noch 16 Stück, alles mal bei Gelegenheit wie bei einer Zugfahrt oder im Flugzeug korrigierbar, reduzieren.
An die UTF-8 Codierung wurde nicht gedacht. Hat jemand seinen Browser bei der Codierung auf den Wert "Auto" geschaltet, bewusst oder unbewusst, werden Inhalte "komisch" angezeigt. Die entsprechenden Dateien mussten so auf UTF-8 Codierung überprüft und die Templates korrigiert werden.
Danach konnte es los gehen. Doch mir wurde wirklich schwindlig. Die Arbeit von newtelligence, die die Grundlage von DasBlog gelegt haben, will ich gar nicht herunter reden oder in Frage stellen. Zumal auch natürlich mit jedem Entwickler von DasBlog über die Zeit hinweg die Codebasis in Abhängigkeit seiner Fähigkeiten verändert wird. Da ich mich jetzt wiederhole, sei mir verziehen: Mir wurde schwindelig.
Rahmenbedingungen, Code-Guidelines, Stil, Eleganz von Anwendungscode scheint es nicht zu geben. Ich persönlich habe das Gefühl, es ist so codiert, wie man es an lehrt, es nicht zu tun. Ein Beispiel: Was soll auskommentierter Anwendungscode, abgesehen von wenigen Ausnahmen wie bei Hacks? Wozu gibt es Versionierungssysteme? Oh come on, things aren't as bad as all that. Nein! Auskommentiertes kann und gehört versioniert und danach gelöscht. Man soll nicht auf andere Leute, respektive Entwickler, mit dem Finger zeigen, aber das ist einfach schlechter Stil. Ich spreche auch keinen einzelnen Entwickler an. Alex hat übrigens erneut großartige Arbeit (im Blogeintrag fehlt, dass Parameter an .ASPX-Seiten übergeben werden können) geleistet. Es geht ums Prinzip. Es ist mehr als der Zeitpunkt für ein Refactoring erreicht:
Eine weitere Überlegung ist <% LocalString(...) %>. An sich ist dessen Verwendung von <% LocalString("John Doe|DE:Max Mustermann") %> nicht schlecht. So kann Englisch und Deutsch lokalisiert werden in den Templates und so weiter. Doch warum ist diese Funktion nicht intern gekapselt? Jedes weitere Makro was Zeichenfolgen entgegennimmt und ausgibt, könnte so auch Lokalisierung verwenden. <% MeinMakro("Email|DE:E-Mail") %> könnte bei einer Kapselung einfach LocalStringBlank(...) rufen, denn LocalString(...) gibt nicht eine "blanke" Zeichenfolge, sondern eben ein Control zurück. Ist das vielleicht zu trivial, weil einfach?
Jedenfalls ist mein¹ Anwendungscode nun erweitert z. B. um:
Beispiel:
wird damit zu
Warum funktioniert das so? Weil ich die Kapselung von LocalString implementiert habe. Das zerreißt den restlichen Anwendungscode? Nein, eben nicht. Der merkt das gar nicht. Weiterer Anwendungscode, ob neuer oder alter, kann transparent davon profitieren.
Einen guten Blogeintrag zum Thema "was nützlich bei Blogs ist" gibt es übrigens hier.
Bis auf XHTML ist somit jede Anforderung umgesetzt worden, perfekt und ich bin ab sofort "Sepiaisch"! ;)
PS: Danke erneut an Alexander, der bei der "OnPageNavigation" und den Parametern mitgewirkt hat!
¹ der geänderte Code ist bei DasBlog nicht eingecheckt, also nur bei mir enthalten
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, sup, u