Die Programmierung dieser Website
Die Website, auf der ihr hier gerade rumlungert, hat als Unterbau ein von mir programmiertes Content-Management-System, das einen ballastfreien Quelltext in korrekter Semantik ausgibt, also auch mit Screenreadern oder ohne Anzeige von Designelementen besucht werden kann. (Zum Test der Semantik einfach mal auf verschiedenen Websites den Website-Stil ausschalten.)
Vollständige Erneuerung 2024
Damit auch Freunde von mir das System für ihre Website nutzen können, habe ich im Sommer 2024 den Unterbau komplett runderneuert. Es baut nun auf auf den GGG-Design-Pattern (»Gerümpel → Grabsch! → Glotzen«), auch bekannt als Model-View-Controller-Entwurfsmuster.
3 000 nagelneue noch glänzende Zeilen Code in 40 Dateien sorgen dafür, dass ihr hier flott-flott neue Seiten serviert bekommt, und ich in Zukunft noch verstehe, was mein 2024er-Ich sich beim Code gedacht hat.
Zudem habe ich das Layout etwas angepasst. Die für Mengentext wunderbar lesbare Poppins-Schriftart flog wegen ihrer typographisch völlig ungenügend gestalteten Sonderzeichen raus.
Features
- Content Management System
- Editor für Inhaltsobjekte mit Metadaten
- Body-Editor für HTML/Markdown-Eingabe
- dynamische Inhalte in Body und Preview:
- Ausgabe von Meta-Daten anderer Inhaltsobjekte
- eingefügte Bodies und Previews anderer Inhaltsobjekte
- Blockwiederholungen anhand von Daten-Listen (bspw. Bild-Previews in Galerien)
- automatische Eltern-Kind-Erkennung von Inhaltsobjekten und daraus resultierende Navigation
- im Admin-Bereich detaillierte Übersichten über:
- Inhaltsobjekte und deren Verlinkung untereinander
- Inhaltsobjekt-Listen (bspw. die Bilderserien)
- vorhandene und verlinkte Dateien und deren Nutzung
Code
Hier die schönsten Auszüge aus dem Code. (Die erwähnten Cashus sind die Inhaltsobjekte, »Content AS HTML Units«.)
public function cashuExists( int $cashuId ): bool {
return ($this->getMeta( $cashuId ) !== null);
}
Herrlich! So auf den Punkt. Ohne jeden Schnickschnack.
enum AdminCashuVersion: string {
case MODIFIED = 'modified';
case PUBLIC = 'public';
}
Kein String wird hier dem Zufall überlassen.
private function useMyVisitorsCpuToMineBitcoins( ): gutMoney {
Ja? Was wollen Sie in meiner Woh-heeeeey! ...