Bernhard Häussner
Tags: Artikel mit dem Tag «Projekt: Mein Blog» durchstöbern

CMS fertig - endlich

01.11.2008, 16:06

Also das CMS zu Entwickeln hat jetzt etwas gedauert. Es ist eben immer eine Tortur, bis man alle Informationen so aufbereitet hat, dass sie in die Datenbank passen. Und dann noch der Dateiupload. Außerdem wollte ich ja so etwas wie BBCode. Aber es ist mir doch sehr gut gelungen:

BBCode

Eine größere Umstellung war das Markup für die Blogeinträge. Zwar war der Editor, der Tags einfügen kann schon fertig, doch alles basierte auf HTML-Tags. Auf kurz oder lang wird da aber der Content mit sinnlos langen Tags und Einstellungen zugemüllt. Mit dem neuen System kann ich jetzt natürlich nicht nur Absätze, Listen usw. schnell und einfach in einen Post einfügen, sondern auch Bilder mit Bildunterschrift und Thumbnail, Links zu Downloads und Blogpost und vieles mehr.

Bild- Und Dateiupload

Jetzt wo ich schon Useraccounts erstellt habe, kann ich auch in aller Ruhe an einem Dateiupload basteln. Es gibt jetzt also parallel zum Blogposteditor einen Fileuploader. In einem Tab kann ich die Dateien managen (bisher: hochladen und löschen), während ich im anderen noch am Post schreibe. Dann kann ich per Drag&Drop die Bilder und Downloads in den Blogeditor schieben. Wenn ich Bilder hoch lade, werden automatisch Thumbnails mit 100px und 540px Breite erstellt. Die Bilderfunktion kann man ganz gut in diesem Post bestaunen und die Downloadfunktion hier.

Ich habe mir auch über legt, ob ich eine Javascript-Bildershow implementieren soll, für Fotoalben gibt es ja flickr und ich hasse es, wenn man ein Bild im neuen Tab öffnet, und dann öffnet sich, je nach Qualität der Diashow auch mal gar nichts, oder nochmal die ganze Seite, nur mit einem Bild als Overlay.

Somit ist das CMS jetzt endlich einmal abgeschlossen und ich kann mich anderem spannenden widmen, z.B. der AJAX-Suchfunktion.

Kommentare: keine

Coole CMS-Funktionen!

28.10.2008, 22:51

So, jetzt kann Ich hier im CMS schön rumklicken um Formatierungen zu machen. Ich habe mich da ein bisschen an dem BBCode Script von SelfHTML und Wikipedias Markup "orientiert".

»Zwei Seelen wohnen, ach! in meiner Brust«
J. W. v. Goethe, Faust, Vers 1112

Auf kurz oder lang will ich dann auch noch ein paar andere Tags einfügen, und vor allem ein paar Tags um z.B. Blogeiträge zu verlinken, Bilder einzufügen etc. Doch heute habe ich erstmal vi gelernt, zumindest so grob, denn das war bisher doch eine meiner "größten Bildungslücken".

Next Steps

So gleich mal, was die nächsten Schritte sind, mit der neuen klickbaren Liste erstellt:

  • Eingene Tags für: Blogeinträge, Bilder, Downloads
  • Bilder/Dateien Upload
  • RSS-Feeds
  • Screenshots in About-Sektion
  • und der ganze Rest

Nun ja, es schreitet voran...

Kommentare: keine

CMS funktioniert - aber noch nicht fertig

28.10.2008, 11:34

Ja, es funktioniert. Das heißt man kann Artikel schreiben und löschen. Bzw. „man“ ist inzwischen übertrieben: Ich bzw. als „Editor“ gekennzeichnete User können das. Und wo wir schon beim Stichwort sind: Es gibt jetzt User.

Als erstes war dringend nötig, mein (mehr oder weniger) gutes altes Loginscript, das auf Client-seitigem sha1-Hashing basiert, auf mein neues PHP-Brick-System umzustellen. Dazu habe ich das ganze erstmal in seine Bestandteile auseinander genommen:

  • Die Loginseite, nun als Controller erstellt mit dazugehörigem XML-Template
  • Die Userverwaltung als Klasse mit Zugriff auf die Eigenschaften der User
  • Die Key-Verwaltung für das Clientseitige 1-mal-Verschlüsseln als eigne Klasse
  • Das Loginformular im Login-XML-Template aus den selben Bausteinen, wie das CMS-Formular bzw. das Kommentarformular. Hier zeigt sich erstmals sehr gute Wiederverwendbarkeit: Ich habe es doch von Anfang an gewusst.
  • Und als kleine Ergänzung zu den Bisherigen Formularbausteinen: Der Passwortbaustein, der sich, wie von selbst, um die Beschaffung des Keys und die Client-seitige sha1-Verschlüsselung kümmert. Außerdem nimmt er sich aus dem Monkey-Formular-Mechanismus heraus. Bei einem Fehler wird also nicht wieder das Passwort angezeigt. Als flexiblen Baustein könnte ich ihn jetzt ohne Probleme z.B. in das Kommentarformular bauen.

Insgesammt zeigt sich also langsam die Power und Erweiterbarkeit des Bricksystems. Bei den Userrechten lief es ähnlich „schön“. Der User hat einen Brick, in dem er sieht, dass er eingeloggt ist und sich ausloggen kann, der Editor hat zusätzlich einen, in dem er Posts erstellen und bearbeiten kann. Das CMS war auch schnell gesperrt. Als kleines Extra gibt es optional den Userbaustein auch für nicht eingeloggte Benutzer, wo sie dann sehen, dass sie nicht eingeloggt sind, und sich einloggen können. Und dieser Brick vererbt seine Attribute auf den nur-eingeloggte-Brick, sodass jener dann eigentlich nur aus der Kontrolle besteht. Sehr toll.

Das heißt leider noch lange nicht, dass das CMS fertig ist. Denn erstens reden wir hier ja nur von dem CMS für den Blog. Und außerdem fehlt noch immer sämtliche auto-Formatierung für redaktionelle Texte. Also klickbare Listen, Bilder, Zitate, Absätze, Überschriften, Links usw., da muss ich mir nochmal überlegen, wie ich das dann überhaupt realisiere. Das wird dann erstmal der nächste größere Schritt. Dann dürfte, könnte, wollte, müsste, sollte das Erstellen der anderen Sektionen kein Problem mehr sein. Oder? (Ich habe nämlich die Vorahnung, dass ich die Bricks nicht alle flexibel genug gemacht habe, aber wir werden sehen. )

Kommentare: keine

Wenn das klappt, klappt das CMS

26.10.2008, 17:42

Also das ist dann wohl mein erster Post im noch nicht ganz fertigen CMS. Um das CMS zu bauen, musste ich erstmal einige Grundlagen schaffen:

  • PHP-Bricks für Formulare. Unterstützen z.B. das vordefinierte einfüllen von Werten, erstellen ihre Labels automatisch usw.
  • MySQL-Queries in der 3NF der Tags ordentlich verwalten. D.h. Tags bei bedarf hinzufügen, Taglinks aktualisieren, Tags ohne Einträge löschen etc.

Nur jetzt habe ich dann gleich wieder einige Unfertigkeiten:

  • Die Kommentierfunktion im Blog muss sich jetzt entscheiden, was am Anfang in den Feldern steht. Das bedeutet, wenn Fehler kommen, wird ein Affen-Formular erstellt, statt die Fehlermeldung wie bisher zu zeigen und die Funktion, dass die Userdaten gespeichert werden können geht damit irgendwie einher.
  • Irgendwie muss ich noch Bricks in den Blogposts benutzen können und natürlich hier im CMS schön einfügen können.
  • Löschen von Posts ist bisher unmöglich.
  • Ohne das Loginscript kann jeder aufs CMS zugreifen. ;)

Es gibt also noch einiges zu tun. So Dinge wie das Loginscript sind ja auch von Grundlegender Bedeutung für den Rest der Seite, d.h. das Framework ist noch immer gut im Wachsen.

Kommentare: 2 Einträge

Blogausgabe fertig

25.10.2008, 11:01

So... Die HTML-Ausgabe des Blogs ist jetzt zu 99% fertig. Fehlt noch ein bisschen was beim Archiv, nämlich, dass man vielleicht später mal nach Monaten sortiert.

Es war natürlich ein Haufen MySQL-Arbeit dabei. Ansonsten musste ich kaum etwas machen, z.B. weil die Templates sich ja jetzt so toll übertragen lassen. Ich musste also nur für die neuen Übersichtsseiten neue Controler bauen, die die Eingaben aufnehmen (z.B. welcher Tag ausgewählt wurde). Dann bauen sie daraus ein MySQL-Query - und bei denen lag dann der komplizierteste Teil. Die Hauptstrukturtemplates mussten natürlich auch erstellt werden. Denn es macht irgendwie wenig Sinn, wenn z.B. im Archiv (alt) der RSS-Button (neu) angeziegt wird.

Tags realisiert in MySQL

Bei den Tags habe ich mich an Philipp Kellers post über Taging Database Schemas orientiert. Genauer gesagt an der Toxi-Lösung. Das hat natürlich Vor- und Nachteile: Sehr komplexe Queries, stehen sehr flexiblen Möglichkeiten (in MySQL) gegenüber.

So musste ich um die Tags eines Posts abzufragen nicht mit PHP splits o.ä. arbeiten, sondern konnte einfach einen weiteren Query laufen lassen, der mir die Tags liefert. Für die related posts habe ich einen Query gebastelt, der zählt, wieviele Tags ein Eintrag mit dem aktuellen gemeinsam hat. Das hat den Vorteil, dass mir die irgendwie unschöne Lösung mit Volltext-Suche erspart bleibt. Für alle, die eine ähnliche Datenbankstruktur haben, hier mal der Query:

SELECT 
 COUNT(*) as cnt,
 result.Titel as Titel,
 DATE_FORMAT(result.release_date,'%d.%m.%Y, %H:%i') as date,
 CONCAT(result.ID,'_', REPLACE(result.Titel,' ','_')) as URL 
FROM 
 blogeintraege ur, blogtaglinks l1, blogtaglinks l2, blogeintraege result 
WHERE 
 result.release_date < NOW() AND 
 l1.ID_entry=ur.ID AND 
 l1.ID_tag=l2.ID_tag AND 
 l2.ID_entry=result.ID AND 
 ur.ID='{ID des Eintrags}'
 AND ur.ID!=result.ID 
GROUP BY result.ID ORDER BY cnt DESC

Wenn ihr Verbesserungsvorschläfe habet, oder euer Tagging-System besser findet, könnt ihr gerne einen Kommentar hinterlassen.

(Still) Comming Soon: CMS

Beim Schreiben dieses Entrags merke ich auch schon, dass ich endlich mein CMS weiterbringen muss. Also eigentlich soll es ja nur ein Editor für Posts sein. Denn mit der Impementierung von universellen Managern für Post, Kommentare, Termine, und eigentlich allem Content habe ich eher schlechte Erfahrungen gemacht. Zunächt habe ich gedacht es wäre weniger Aufwand so ein CMS für alle Contenttypen zu machen. Aber ich glaube es ist doch logischer, flexibler und schneller, wenn man einfach für Blogposts und andere Seiteninhalte eigene kleine Editoren bastelt.

»Wo bleibt das CMS?«
Me, Myself & I

Das heißt natürlich nicht, dass sie sich nicht bestimmte Komponenten teilen können. Aber darauf ist ja mein Brick-System perfekt ausgelegt. Hoffe ich. Um das zu evaluieren, bzw. eigentlich zu validieren, werde ich jetzt einen Grundstein für CMS-Technik mit dem Brick-System legen.

Kommentare: 1 Einträge
 
Χρόνογραφ
© 2008-2017 by Bernhard Häussner - Impressum - Login
Kurz-Link zur Homepage: http://1.co.de/