12 Februar 2015

Typo3 6.x und mehrsprachige Bilderelemente: "Localize all records" freischalten

Habt ihr bei Typo3 6.x auch das Problem, dass es bei mehrsprachigen Websites ziemlich kompliziert ist, die Bilder der Zielsprachen im Nachgang anzupassen? 

Bei einem normalen Kopiervorgang in Typo3 6.x von einem Content Element mit Bildern werden alle aktuell vorhandenen Bilder übernommen - soweit so gut. Wenn ihr aber nun in der Originalsprache die Bilder verändert, hinzfügt oder entfernt, müsst ihr theoretisch alle Schritte in jeder Zielsprache per Hand durchführen. Hier gibt es in der Standardkonfiguration keine Möglichkeit, die Übersetzung mit dem Original abzugleichen oder zu synchronisieren, obwohl diese Funktion grundsätzlich vorgesehen ist. Das Löschen und die erneute Kopie von einem Content Element ist langfristig keine wirkliche Lösung. Ich zeige euch, wie man die Lokalisierung und Synchronisierung von Bildern aktiviert. 

Keine Möglichkeit, veränderte Bilder im Nachgang aus dem Original zu "übernehmen"
Keine Möglichkeit, veränderte Bilder im Nachgang aus dem Original zu "übernehmen"


Erstellt im Ordner /typo3conf/ eine Datei mit dem Namen extTables.php, falls noch nicht vorhanden. Fügt in dieser Datei folgende Zeilen hinzu.

<?php

$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showPossibleLocalizationRecords'] = TRUE;
$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showRemovedLocalizationRecords'] = TRUE;
$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showAllLocalizationLink'] = TRUE;
$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showSynchronizationLink'] = TRUE;

?>

Achtet bei einer bereits vorhandenen Datei darauf, dass ihr die <?php und ?> Klammern nicht doppelt hinzufügt, hier reichen dann auch die 4 Zeilen aus.

Nun habt ihr auch die zusätzlichen Buttons "Localize all records" und "Synchronize with original language". "Localize all records" bewirkt, dass alle Bilder, die im Original hinterlegt sind und in der Übersetzung nicht vorhanden sind, übernommen werden. "Synchronize with original language" bewirkt, dass auch eine eventuell veränderte Reihenfolge der Bilder im Original auch in der Übersetzung übernommen wird. Beide Buttons erleichtern die Arbeit mit Typo3-Inhalten bei mehrsprachigen Websites ungemein!

"Localize all records" und "Synchronize with original language" sind verfügbar
"Localize all records" und "Synchronize with original language" sind verfügbar


04 November 2014

Typo3-Extension "Quick Google Maps" (cbgooglemaps) anpassen

Ich finde die Extension "Quick Google Maps" (cbgooglemaps) ist ziemlich genial, allerdings gibt es da 2 Dinge, die man nicht direkt über die Einstellungen der Extension beeinflussen kann: Die Reaktion von Google Maps auf das Scrollrad und der Einsatz von eigenen Pushpins, wobei Ersteres die Usability beeinflusst (stört beim scrollen) und letzteres die Optik. 

Leider habe ich nicht herausgefunden, wie man ein eigenes Template bei cbgooglemaps einsetzt, daher habe ich als quick'n'dirty-Anpassung einfach das ursprüngliche Template (/typo3conf/ext/cbgooglemaps/Resources/Private/Templates/Map/Index.html) direkt angepasst.
Öffnet das Template und fügt an den entsprechenden Stellen den Code hinzu  (ist eigentlich ziemlich offensichtlich)

Meine Anpassungen sind die Deaktivierung vom Scrollrad hinter Zeile 22
mapOptions_{contentId}.scrollwheelfalse;

und den Einsatz von einer eigenen Pin-Grafik hinter Zeile 29 (ändert die entsprechende URL)
mapCenter_{contentId}.icon '/fileadmin/images/Pushpin.png';

Hier könnt ihr die Extension mit den Veränderungen live begutachten - eigener Pushpin und kein Scrollwheel: http://www.e-kern.com/de/kontakt/standorte-europa/deutschland/frankfurt.html

(diese Anpassungen basieren auf der Version 2.1.15 für Typo 4.x)

29 Oktober 2014

Typo3 4.5.x: Schwarze Hintergründe bei Bildkonvertierung mit Transparenzen

Habt ihr auch das Problem, dass beim Umwandeln von PNG-, GIF- oder PDF-Dateien zu JPG die transparenten Bildelemente schwarz dargestellt werden? Ich hatte dieses Problem vor allem bei PDF- und GIF-Dateien gehabt. Bisher habe ich das Problem hauptsächlich bei Typo3 4.5.x und niedriger gehabt, bei Typo3 6.2 hingegen gar nicht (für 6.1, 6.0 und 4.7 habe ich nicht getestet).


Öffnet hierzu die Datei /t3lib/class.t3lib_stdgraphic.php und ersetzt folgenden Code

$this->cmds['jpeg'] = '-colorspace ' . $this->colorspace . '

mit diesem Code

$this->cmds['jpeg'] = '-colorspace ' . $this->colorspace . ' -background white -flatten 


Achtet bitte zur Sicherheit auch darauf, dass hinter -flatten auch ein Leerzeichen ist. Wir ihr ablesen könnt, wird bei diesem Befehl für eine Umwandlung in JPG zunächst ein weißer Hintergrund hinzugefügt und anschließend das Bild "flachgelegt", also die Bildebenen zusammengelegt unter Berücksichtigung der vorher festgelegten Hintergrundfarbe.

15 Oktober 2014

Sicherheitslücke in der Extension dmmjobcontrol und Workaround

Update 20.10.2014: Kevin Renskers arbeitet zwar nicht mehr an der Extension und sucht auch jemanden, der die Extension gerne "adoptiert", aber er hat die unten genannten Änderungen übernommen und hochgeladen. Einen Bug gibt es zwar noch, aber auch dieser wird gerade von jemand anderen bearbetet und demnächst hochgeladen: Zwar wird die Sicherheitslücke mit diesen Änderungen gestopft, aber die Suchfunktion ist dann nicht mehr Nutzbar.
----------------------------------

Ein Sicherheitsleck in der Extension dmmjobcontrol wurde auf typo3.org bekannt gegeben: http://typo3.org/teams/security/security-bulletins/typo3-extensions/typo3-ext-sa-2014-012/

Langfristig ist es sicherlich sinnvoller auf eine andere Extension aufzubauen, die auch gewartet wird, z.B. Job Fair, welches optisch fast eine 1:1 Kopie von dmmjobcontrol ist. Leider läuft diese Extension nur auf Typo3 6.x läuft, was den Umstieg etwas komplizierter macht, wenn man noch Typo3 4.5 nutzt. Manche Websites haben sehr viele Einträge in der Extension und eine Übertragung in eine andere Extension wird nicht so schnell funktionieren. Es scheint aber so, als würde Job Fair laut Angaben des Autors fast die gleiche Datenbankstruktur zu haben wie dmmjobcontrol - vielleicht ist es möglich, mit einer Art "Update-Script"

Auf http://seclists.org/fulldisclosure/2014/Sep/89 habe ich ein Workaround gefunden, wie ihr diese beiden Sicherheitslücken vorübergehend stopfen könnt. Dies sollte aber meiner Meinung nach nicht dauerhaft geschehen, sondern sollte solange, bis man es geschafft hat, auf eine andere Extension umzusteigen - wer weiß welche Sicherheitslücken in Zukunft auftauchen.


Öffnet die Datei typo3conf/ext/dmmjobcontrol/pi1/class.tx_dmmjobcontrol_pi1.php

Ersetzt die Zeile 112 mit folgendem Code gegen die XSS-Lücke
$markerArray['###KEYWORD_VALUE###'] = htmlspecialchars($session['search']['keyword'], ENT_QUOTES);

Ersetzt die Zeile 257 mit folgendem Code gegen die SQL-Injection-Lücke:
$whereAdd[] = $table.'.uid_local=tx_dmmjobcontrol_job.uid AND ('.$table.'.uid_foreign='.implode(' OR '.$table.'.uid_foreign=', intval($value)).')';