Okt 30
Hooks im Backend nutzen
icon1 patrick | icon2 TYPO3 | icon4 10 30th, 2008| icon32 Comments »

Wie nutzt man eigentlich Hooks – gerade diejenigen im Backend? Beispielsweise will man noch eine eigene Funktion absetzen, bevor die Daten aus dem Backend-Formular in Datenbank geschrieben werden.

Eine Anwendung wäre beispielsweise, bestimmte Daten nur dann zu schreiben, wenn man als Administrator im Backend eingeloggt ist (oder eben wenn er dies nicht ist). Würde man versuchen, das Backendfeld selbst in Abhängigkeit des Admin-Statuses darzustellen ist man schnell bei Extensions wie “dynaflex”, die aber unter Umständen einen zu grossen Overhead darstellen. Wir wollen also das Feld (als Flexform) in jedem Fall anzeigen lassen – die eingegebenen Daten aber nur dann in die Datenbank schreiben, wenn der Status Adminstrator gegeben ist.

Dafür gehen wir wie folgt vor:

  1. Wie legen mit dem Kickstarter eine eigene Extension an – diese muss keinerlei Frontend-Plugin oder Backend-Modul beinhalten (sofern nicht anderweitig benötigt).
  2. Nehmen wir an, die Extension heisst “meineextension” – dann legen wir Verzeichnis der Extension typo3conf/ext/meineextension einen Ordner mit dem Namen hooks an
  3. In der Datei ext_localconf.php registrieren wir nun eine sogenannte Hook-Funktion (alles in eine Zeile notieren – statt meineextension muss natürlich der richtige Name verwendet werden):
    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']
    ['processDatamapClass'][] =
    'EXT:meineextension/hooks/
    class.tx_meineextension_tcemain_pdm_pre.php:tx_meineextension_tcemain_pdm_pre';
  4. Der Hook ist nun registriert – nun muss noch die Datei mit der Klasse angelegt werden, die unsere Hook-Funktion enthält. Dazu legen wir im hooks-Verzeichnis nun eine Datei mit dem Namen class.tx_meineextension_tcemain_pdm_pre.php an.
  5. Diese Datei enthält nun den folgenden Code:
    <?php
       class tx_simplefilebrowser_tcemain_pdm_pre {
          function processDatamap_preProcessFieldArray(&$fieldArray, $table, $id, &$pObj) {
             if (!$GLOBALS['BE_USER']->isAdmin()) {
                $fieldArray['pi_flexform']['data']['sDEF']['lDEF']['directory']['vDEF'] = "";
             }
          }
       }
    ?>
  6. Voilá – wir sind fertig. Aber was haben wir da eigentlich gemacht?
    1. Nun – prinzipiell gibt es natürlich etliche Hooks im Backend. Wir haben uns denjenigen herausgesucht, der dafür zuständig ist, kurz VOR der Speicherung der Backend-Formulardaten aufgerufen zu werden – namentlich der Hook processDatamap_preProcessFieldArray in der Datei t3lib/class.t3lib_tcemain.php.
    2. Wenn wir nun das Array $fieldArray direkt manipulieren, wird der neue dort enthaltene Wert direkt statt dem urpsünglich vorhandenen in die Datenbank geschrieben. Wir könnten nun beispielsweise den gerade editieren Datensatz auf hidden stellen, wenn wir $fieldArray['hidden'] = 1 schreiben würden. Wir setzen in unserem Beispiel einen Wert in der vorhandenen Flexform auf den Leerstring (und löschen damit einen eventuell eingegebenen) – dies allerdings nur, wenn der eingeloggte User nicht Admin ist.
Okt 26

Im Anschluss an die 4. Internationale TYPO3-Konferenz fanden ebenfalls in Berlin vom 13.10. – 17.10.2008 die sogenannten TYPO3 Transition Days (T3TD) statt. Die Idee war, TYPO3-Core Members der Zweige 4.x und 5.x, sowie einige andere geladene TYPO3-Aktivisten, an einen Tisch zu bringen um über die Zukunft von TYPO3 im allgemeinen und den beiden Zweigen im speziellen zu diskutieren.

Robert Lemke hat auf der FLOW3-Website einige sehr interessante Zusammenfassungen von diesem wohl wegweisenden Treffen gepostet, die ich Euch hier kurz zusammenfassen will:

  1. In zahlreichen Gesprächen, Foren, Blogartikeln und andere Quellen kann man immer wieder die Angst der Leute spüren, die TYPO3 5.0 vermeintlich bringen mag. So ist man davon überzeugt, dass der 4er Zweig zu wenig Aufmerksamkeit bekommt, während der 5er Zweig noch lange nicht fertig gestellt ist. So fürchtet man sich wohl vor einem schwarzen Loch, dass aus dieser Situation entstehen könnte. Das dem nicht so ist, haben viele der daran beteiligten Entwickler des öfteren versichert – dies aber nicht besonders publikumswirksam. Daher hat man sich entschlossen, ein sogenanntes “Berlin Manifesto” zu veröffentlichen, das folgenden Inhalt hat:
    • TYPO3 4.x wird weiterhin aktiv weiterentwickelt
    • Die Entwicklung von TYPO3 4.x wird auch nach der Veröffentlichung einer offiziellen TYPO3 5.x Version weitegeführt
    • Die Feautures zukünftiger Versionen des 4er Zweiges werden sich mit den Features des 5er Zweiges annähern
    • TYPO3 5.x ist der Nachfolger von TYPO3 4.x
    • Die Migration der Inhalte von 4.x auf 5.x wird einfach möglich sein
    • TYPO3 5.x führt viele neuen Konzepte und Ideen ein. “Wir” werden Ressourcen und Hilfe zur Verfügung stellen um den Übergang so einfach wie möglich zu gestalten
  2. Eine initiale Roadmap (sowohl für die 4er, wie auch für die 5er Versionen) wurde festegelegt – diese beinhaltet momentan die Versionen FLOW3 1.0, TYPO3 4.3, TYPO3 4.4, TYPO3 5.0 und TYPO3 5.1.
  3. Die internen Kommunikationsstrukturen wurden analysiert und angepasst – gerade weil das aktuelle Core-Team momentan über mehr als 30 Mitglieder verfügt und man daher die Kommunikation zwischen diesen so gut wie möglich optimieren will.
  4. Die nächste Veranstaltung dieser Art wird kurz nach den TYPO3 Developer Days 2009 stattfinden und den Namen “TYPO3 Core Developer Days” tragen
  5. In Kürze wird es extra aufgenommene Podcasts von den Transition Days geben – stay tuned :-)
Okt 26

Wenn man TYPO3 selbst auf dem Server installiert, müssen bestimmte Verzeichnisse für den Webserver schreibbar sein. Nur allzuoft macht man es sich besonders bequem und setzt den folgenden Befehl ab:

chmod -R 777 *

Dies ist nicht nur unsinnig sondern zudem auch noch ein großes Sicherheitsrisiko – schließlich sollen die Gruppe und alle anderen keine Schreibrechte auf unsere Dateien haben.

Es ist allerdings auch nicht so schwierig, dies richtig zu machen. Die folgende Anleitung gilt für Unix-Systeme, wie Linux oder Mac OS X:

  1. Zuerst finden wir heraus, unter welchem User unser Webserver läuft.
    ps auxw | grep httpd

    bzw. (je nach verwendeter Version des Webservers)

    ps auxw | grep apache2

    Die Ausgabe lautet nun beispielsweise:

    nobody   62334   0.0  0,1   624316   1244   ??  S    11:26am   0:00.00 /Applications/xampp/xamppfiles/bin/httpd -k start -DSSL -DPHP5

    Der User, unter dem der Webserver läuft heisst also “nobody”.

  2. Nun weisen wir allen TYPO3-Dateien diesen User zu:
    cd /pfad/zu/document/root
    chown -R nobody *
  3. Nun wird allen Ordnern (und Dateien) zunächst das Recht 755 (d.h. Schreiben, Lesen und Öffnen für den Benutzer und Lesen+Öffnen für die Gruppe und alle anderen) zugewiesen.
    chmod -R 755 *
  4. Bei Dateien hat obiger Befehl allerdings dafür gesorgt, dass diese nun auch zusätzlich ausführbar sind, da das Recht “x” bei Ordner für das Öffnen steht (also in den Ordner wechseln) und bei Dateien für Ausführen – dies korrigieren wir hiermit:
    find . -type f -print0 | xargs -0 chmod 644
  5. Gerade für letzteren Befehl hatte Michael Imhof auf dem TYPO3camp 2008 eine andere Lösung gefunden – die aber (zumindest bei mir und einem Kollegen) leider nicht funktioniert hat – daher hier eine (hoffentlich) universellere Lösung. Gebt uns einfach Bescheid, wenn diese bei Euch nicht funktionieren sollte (am Besten inkl. genauer OS-Version).
Okt 20

In etwas über einer Stunde (geplant ist genau 20.10.2008 – 12 Uhr GMT+1) eröffnet die Anmeldung zur 8. T3BOARD – ein (wie man hört) legendärer TYPO3-Event. Es treffen sich diesmal 132 (soviele Plätze gibt es nämlich) TYPO3 und/oder Wintersportbegeisterte zu 7 Tagen Hüttengaudi in den schweizer Alpen – genauer in Laax.

Im Unterschied zu anderen TYPO3-Events liegt der Fokus bei der T3BOARD weniger auf TYPO3 (das natürlich auch, aber eben eher spontan) sondern auf Spaß, Wintersport und Socialising.

Das ganze findet vom 22.03. – 29.03.2008 statt, kostet je nach Zimmer zwischen 440.- und 510.- EUR. Darin enthalten sind 7 Tage Übernachtung, Frühstück, Abendessen und die Skipässe für den ganzen Zeitraum. Wer hin und wieder mal Skifahren geht, weiß, dass das Angebot wirklich mehr als günstig ist.

Wir selbst waren leider noch nie dabei, aber durch die enthusiatischen Erzählungen der bisherigen Teilnehmer angesteckt, werden wir diesmal versuchen, einen der heiß begehrten Plätze für uns zu sichern.

Weitere Infos findet Ihr hier: Offizielle Website der T3BOARD09 – inkl. Anmeldeformular ab 12:00 Uhr

Wir sehen uns also nächstes Jahr auf der T3BOARD09! :-)

Okt 17

Gerade bei Tim vom typo3blogger.de entdeckt – der fi-ausbilder.de-Blog sucht wieder (wie letztes Jahr) das beste TYPO3-Blog des Jahres 2008. Ihr könnt dort im Blog das beste TYPO3-Blog auswählen (Hinweis: es fängt mit t3blog an und hört mit .de auf :-) ) und so für uns voten. Letztes Jahr waren wir gar nicht so schlecht, ich glaube es war der zweite Platz (Nachtrag: Stimmt 2. Platz). Gewonnen hat letztes Jahr verdienter Weise Frank vom typo3weblog.de.

Zur Abstimmung >>

Okt 16

Hallo TYPO3camp-Fans,

für alle die nicht genug davon bekommen können (wie wir!) – der Termin fürs nächste TYPO3 Muinich ist bereits ausgehandelt und fix.

TYPO3camp Munich 2009 – 11.09. – 13.09.2009

Also hopp hopp – packt Eure Outlooks, Terminkalender, Cals, Schmierzettel (und was weiss ich noch) aus – und blockt Euch diesen wichtigsten Termin in 2009! Erwarten wird Euch wieder eine hoffentlich fantastisches Camp wie in 2008 mit dem selben, bewährten Konzept – 3 Tage Vorträge, Essen, Trinken und GiveAways für lau. Sebstverständlich werden wir die diesjährige Veranstaltung noch toppen – Ideen hierzu haben wir bereits genügend gesammelt. Das wird aber selbstverständlich an dieser Stelle noch nicht veraten :-)

Anmeldungen starten natürlich erst Mitte nächsten Jahres – aber zumindest könnt Ihr Eure sicherlich geplante Kreuzfahrt nächstes Jahr nun so buchen, dass Ihr das Camp besuchen könnt.

TYPO3camp Munich 2009 Logo

TYPO3camp Munich 2009 Logo