Page 19 of 59

Der größte Bug in TYPO3 ist …

… das Marketing. Auf dem TYPO3 Camp in Stuttgart konnte ich viele neue Features und Funktionen in TYPO3 kennenlernen die mir vorher größtenteils unbekannt waren, zusammengefasst in den Folien (http://www.slideshare.net/keinerweiss/unterforderte-typo3-kernfeatures) von Rüdiger Marwein.

Auf Slideshare gibt es viele weitere interessante Folien zum Thema TYPO3, absolut empfehlenswert auch die von Patrick Lobacher (http://www.slideshare.net/keinerweiss/unterforderte-typo3-kernfeatures).

Nach Rückfrage bei Rüdiger und Patrick, wie sie auf die Funktionen aufmerksam geworden sind, erzählten mir beide unabhängig voneinander, dass sie sie zufällig im Code entdeckt haben, als sie nach etwas anderem gesucht hätten. Insofern stellt sich die Frage ob es sich dabei nur um das obere Zehntel des Eisbergs handelt und in der Tiefe noch viele weitere hilfreiche Funktionen in TYPO3 versteckt sind.

Dabei programmieren sich die Funktionen sicherlich nicht von alleine in den Core. Somit ist bspw. fraglich, ab welcher Version es bspw. in der Filelist einen Papierkorb gibt, den man nur anlegen muss (_recycler_) damit er funktioniert (http://xavier.perseguers.ch/tutoriels/typo3/articles/trash-in-fileadmin.html).

[random_content group_id=”211″ num_posts=”1″]

MySQL Formate sortieren 1:1 – 4:3 etc

Leinwand- bzw. Displayformate werden in 1:1, 4:3, 16:9 oder 21:9 angegeben. Aufgrund des Doppelpunktes sind dies Strings bzw. Text, womit die Sortierung i.d.R. wie folgt aussehen würde:

[PHP]
1:1
16:9
21:9
4:3
[/PHP]

erwarten würde man dagegen wahrscheinlich eher eine Sortierung wie die folgende:

[PHP]
1:1
4:3
16:9
21:9
[/PHP]

Von Quadrat nach Rechteck, sozusagen. Die ist mit folgendem MySQL Query möglich

[PHP]
ORDER BY substring( replace( Formate, ‘:’, ” ) , 0, 2 )
[/PHP]

Bei mehr Formaten sollte darüber nachgedacht werden, ggf. eine Spalte “Sorting” anzulegen und dort einfach nummerische Werte einzutragen. Falls ihr eine andere clevere Idee habt, wie solche Formate über MySQL automatisiert sortiert werden können, würde ich mich über einen Kommentar freuen.

Typo3 Debug: SQL-Query from exec_SELECTquery

In Typo3 gibt es eine sog. DBAL (Database Abstraction Layer), weshalb nicht direkt die von PHP angebotenen Funktionen genutzt werden sollten, um beispielsweise SQL-Queries auszuführen, sondern die von Typo3 bereitgestellten Funktionen. Damit gibt es später keine Probleme, sollte die Datenbank mal kein MySQL sein oder sollten sich mal die Zugangsdaten ändern. Durch diese zusätzliche Schicht, wird aber auch wieder das Debugging erschwert, aber mit folgendem Code-Snippet ist das Debugging ganz einfach:

[PHP]
$GLOBALS[‘TYPO3_DB’]->store_lastBuiltQuery = 1;

// process query
$res = $GLOBALS[‘TYPO3_DB’]->exec_SELECTquery($select_fields,$from_table,$where_clause,$groupBy,$orderBy,$limit);

// the complete SQL-Statement
echo $GLOBALS[‘TYPO3_DB’]->debug_lastBuiltQuery;
[/PHP]

Die Query kann somit einfach kopiert und beispielsweise im phpMyAdmin eingefügt werden, somit kann abgeschätzt werden ob diese denn das gewünschte Ergebnis liefert.

Quelle: http://snippets.typo3.org/c/55/ (Zum Tag “debug” gibt es auf der Seite leider keine weiteren Einträge.)

[random_content group_id=”211″ num_posts=”1″]

Selenium Elemente zählen

Angenommen ein Formular soll überprüft werden. Der Testfall würde nacheinander alle Felder ausfüllen, das Formular abschicken und auf der Bestätigungsseite überprüfen ob die eingetragenen Werte auch angezeigt werden. Sobald ein Feld entfernt werden würde schlägt der Testfall fehl. Was ist aber wenn ein oder mehrere Felder hinzukommen? Der Testfall würde, angenommen er adressiert die Felder alle mittels einer ID und keines der Felder wurde entfernt weiterhin reibungslos funktionieren. Um dies zu vermeiden, sollte der Testfall vor Testbeginn überprüfen das die Anzahl Felder mit der Anzahl übereinstimmt, wofür das Selenium Skript entwickelt wurde. Dies kann mittels folgender Funktion erreicht werden:

[html]

verifyXpathCount //input 36

[/html]

Sollte neue Input-Felder hinzukommen würde der Testfall fehlschlagen. Alternativ kann der Parameter “//input” auch weiter eingegrenzt werden, im bestehenden Fall müssten auch Testfälle einer Seite aktualisiert werden, wenn beispielsweise ein globales Suchenfeld eingeblendet wird.