Bloggen mit Textmate

Ich habe vor einigen Wochen Textmate für mich entdeckt. Das ist wirklich eines der besten Tools für den Mac, ich weiß nicht wie ich die ganze Zeit ohne diesen genialen Editor ausgekommen bin.
Die wohl größte Stärke von Textmate ist seine Anpassbarkeit und die Möglichkeit die Funktionen des Editors über die so genannten Bundles fast beliebig zu erweitern. Zum Beispiel gibt es für Textmate auch ein Blogging-Bundle, mit dem ich gerade diesen Blog-Eintrag schreibe. Das Bundle unterstützt sogar das Hochladen von Bildern direkt über Textmate. Dazu ziehe ich das Bild vom Finder einfach in den Texteditor an die passende Stelle, vergebe einen Titel und den Rest übernimmt Textmate.
Einziger Wermutstropfen: Die Bilder werden von Textmate nur hochgeladen, es werden leider nicht automatisch Thumbnails erstellt. Aber Moment, ich habe doch gerade Textmate dafür gelobt wie flexibel es ist, also einfach selbst eine Lösung dafür basteln.
Ein Weg wäre das Blogging Bundle zu ändern und diese Funkion nachzurüsten, allerdings implementiert Textmate die Metablog API um mit möglichst vielen Blogplattformen kompatibel zu sein und ein Eingriff an dieser Stelle würde damit wohl brechen.
Deshalb habe ich einen anderen Ansatz gewählt. Zunächst habe ich mir im Blogging Bundle von Textmate ein neues Command angelegt (Bundles > Bundle Editor > Show Bundle Editor). Dieses Command wende ich auf eingefügte Bilder an. Es ist ein kleines Ruby-Script, welches den Code für das eingefügte Bild umformatiert und einen Link auf ein PHP Script erzeugt. Diesem PHP Script übergebe ich über einen Parameter die URL des Original Bildes (der komplette Code hierfür wird automatisch durch das Command erzeugt). Das PHP Script schaut nun auf dem Server ob für das Bild schon ein Thumbnail existiert. Falls ja, gibt das Script einfach das Thumbnail aus. Falls nein, erzeugt das Script ein Thumbnail in passender Größe und gibt dieses anschließend aus. D.h. der gesamte Ablauf zum Einfügen des Bildes inklusive Thumbnail sieht folgendermaßen aus:
- Bild vom Finder in Textmate ziehen
- Command aufrufen (STRG+Q bei mir)
- Fertig!
Diese Methode hat auch ein paar Nachteile, aber hier erstmal der Code für das Command (die anderen Einstellungen für das Command bitte aus dem Screenshot entnehmen):
#!/usr/bin/ruby
txt = STDIN.read
md = /\!\[([\w\s]*)\]\((http:[\/\.\w-]*)/.match(txt)
if (md != nil)
puts "[![#{md[1]}](http://blog.kips-world.de/thumb.php?file=#{md[2]})](#{md[2]})"
end
Achtung: Ich benutze Markdown zum schreiben von Blogposts. Das Script funktioniert in dieser Form nur mit Markdown, nicht mit HTML!
Und hier noch der Quellcode des PHP Scripts auf dem Server:
$path = dirname(__FILE__).'/wp-content/uploads';
$f = $_GET['file'];
$name = basename($f);
$dir = dirname($f);
preg_match('/.*\/([a-zA-Z0-9]*)\/([a-zA-Z0-9]*)/', $dir, $s);
$p = $path.'/'.$s[1].'/'.$s[2];
preg_match('/(.*)\.([a-zA-Z]{2,3})/', $name, $res);
$thumb = $res[1].'_thumb.'.$res[2];
$_thumb = $p.'/'.$thumb;
if (!file_exists($_thumb)) {
copy($p.'/'.$name, $_thumb);
// this needs imagemagick!
shell_exec('/usr/bin/convert '.$_thumb.' -thumbnail \'600\' '.$_thumb);
}
header('Last-Modified: '.date('r'));
header('Content-Type: image/'.strtolower($res[2]));
readfile($_thumb);
Jetzt zu den Nachteilen. Ich erstelle bei dieser Methode die Thumbnails an WordPress vorbei. D.h. WordPress weiß nichts über diese Thumbnails und man kann sie deshalb auch nicht über WordPress verwalten. Wenn man jedoch etwas mehr Mühe in das Script zur Generierung der Thumbs steckt bin ich mir sicher, dass man das erreichen kann (einfach die entsprechenden Funktionen von WP zur Erstellung von Thumbs hijacken).
Vorteile hat diese Methode aber auch. Sollte man mal das Layout seines Blogs ändern (und deshalb vllt. eine andere Thumbnail-Größe benötigen), muss man nur das Thumbnail Script entsprechen anpassen und alle Thumbnails auf dem Server löschen. Sobald jemand auf die Thumbnails zugreift werden sie dann automatisch neu erstellt – in der richtigen Größe.
Hier noch ein paar nützliche Textmate Ressourcen:
- Developer Cheat Sheet mit den wichtigsten Tastatur-Shortcuts
- Offizielle Textmate Screencasts (sehr Informativ!)
(werde im Laufe der Zeit noch ein paar mehr hinzufügen)

