Closed heimseiten closed 7 years ago
Hallo Niels,
ich bin auch darüber gestolpert. Gast du da bereits eine Lösung gefunden?
Leider noch nicht :/
Beim input Type "imageSize" wird nun auch überprüft, welches erste Feld ausgewählt ist. Normalerweise nimmt es die vordefinierten Standard-Bildgrößen. px ist nicht in dieser Liste: Fehler!
Wenn man stattdessen 'options' => version_compare(VERSION, '3.4', '<') ? $GLOBALS['TL_CROP'] : System::getImageSizes(), eingibt, wird es immerhin gespeichert.
Als Hotfix kann man in Googlemap.php in Zeile 73 hart die "px" verdrahten, dann ist es egal, welche Maße man auswählt: $arrMap['mapSize'][2] = "px";
weiter bin ich noch nicht gekommen. Falls du das zum Laufen bringst, sag bitte Bescheid :)
Bei der Installation von der Erweiterung dlh_googlemaps gibt es einige Fehler, da die Erweiterung weder Contao4-kompatibel noch PHP7 ready ist.
Folgende Änderungen habe ich durchgeführt:
PHP7-Kompatibilität: in system/modules/dlh_googlemaps/classes/Googlemap.php: alle 'false' und 'true' in false und true geändert
Ansonsten wird bei PHP7 nämlich im generierten Javascript-Teil auf der Seite ein !0 ausgegeben, wo wir eigentlich 1 oder true haben wollen.
Außerdem habe ich das Template ce_dlh_googlemaps_default.html5 (auch, wenn nötig: mod_dlh_googlemaps_default.html5) bearbeitet, um diesen !0-Fehler zu umgehen: alle 'true' in true in 1 umändern, alle 'false' in false in 0 umändern. Sowohl für PHP als auch für Javascript.
Contao4-Kompatibilität In den dca-Files unter system/modules/dlh_googlemaps/dca/
überall bei inputType 'imageSize' die 'options' auf die validen Contao4-Modelle aktualisiert:
'options' => version_compare(VERSION, '3.4', '<') ? $GLOBALS['TL_CROP'] : System::getImageSizes(),
statt
//'options' => array('px', 'pcnt', 'em', 'rem', 'ex', 'pt', 'pc', 'in', 'cm', 'mm'), //161128CM Fehler bei Contao4
betrifft:
tl_content.php, tl_dlh_googlemaps.php, tl_dlh_googlemaps_elements.php, tl_module
Dabei lässt sich auch z.B. 100% Breite realisieren, Check ob das HTML-valide ist. Dazu muss bei dem eval herausgenommen werden, dass nur Zahlen akzeptiert werden: 'rgxp'=>'digit',
löschen.
Damit die Maps trotzdem korrekt angezeigt werden, habe ich in einem dirty Hotfix als Maßangabe (options) hart den Wert "px" eingetragen.
Dies betrifft die Dateien system/modules/dlh_googlemaps/classes/Googlemap.php, Z.74:
$arrMap['mapSize'][2] = ($arrMap['mapSize'][2]=='pcnt' ? '%' : $arrMap['mapSize'][2]);
$arrMap['mapSize'][2] = "px"; // 161129CM Override: Wir wollen immer Pixel haben
system/modules/dlh_googlemaps/classes/UpgradeHandler.php, Z.79:
$arrParams['mapSize'][2] = ($arrParams['mapSize'][2]=='pcnt' ? '%' : $arrParams['mapSize'][2]);
$arrParams['mapSize'][2] = "px"; // 161129CM Override: Wir wollen immer Pixel haben
Außerdem muss dieser Override für iconSize, shadowSize, infoWindowSize, infoWindowAnchor auch gesetzt sein. bei "bounds" ist es unklar. Immer unmittelbar vom deserialize, z.B.
$arrElement['shadowSize'] = deserialize($arrElement['shadowSize']);
$arrElement['shadowSize'][2] = "px"; //161129CM Hotfix: px erzwingen
Eine hässliche Änderung, aber so bekommen wir die Erweiterung quick&dirty PHP7 und Contao4-ready
Bei der Arbeit kannst du auch gleich einen PR anbieten ;-)
Danke für's Analysieren und Lösung finden.
außerdem: if($v > 0) { hier haben wir einen Vergleich eines Strings mit einer Zahl. Hier muss überall eingegriffen werden... besser: intval($v) > 0
das war die interne Doku für meine Firma. Vielleicht sollte ich tatsächlich mal Erweiterungen programmieren lernen, damit das nicht ganz so dreckig über die Bühne geht. Sorry... aber für einen PR ist das leider viel zu schlonzig :)
ein PR wäre gut, da die Probleme noch da sind!
Das Problem besteht weiterhin, bin aber nicht fähig das selbst zu fixen :( @Xendiadyon, kannst du einen PR stellen? 🙈
nein, kann ich leider nicht. Das ist eine enorm dreckige Lösung (der Eingabetyp image-size ist nicht dafür ausgelegt, Koordinaten bzw Breite/Höhe einzusetzen) und ganz viele andere Sachen funktionieren auch noch nicht (z.B. Formulare speichern). Die ganze Erweiterung müsste leider komplett überarbeitet werden, damit das Sinn und Nachhaltigkeit hat.
Da müsste ein erfahrener Contao-Entwickler die Erweiterung übernehmen und zeitaufwändig betreuen, das traue ich mir selbst leider nicht zu.
Das nächste Release behebt (endlich) die ganzen Probleme. Hat leider sehr lange gedauert...
Hallo Christian,
wenn ich dlh_googlemaps und dlh_geocode in Contao 4 installiere und eine "Neue Google Map" erstellen möchte, bekomme ich beim speichern die Meldung:
Dimensions width x height Invalid option: px
Vielen Dank und liebe Grüße aus Köln Niels