delahaye / dlh_googlemaps

Google Maps Extension für Contao
20 stars 26 forks source link

dlh_googlemaps in Contao 4, Invalid option: px #70

Closed heimseiten closed 7 years ago

heimseiten commented 7 years ago

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

Xendiadyon commented 7 years ago

Hallo Niels,

ich bin auch darüber gestolpert. Gast du da bereits eine Lösung gefunden?

heimseiten commented 7 years ago

Leider noch nicht :/

Xendiadyon commented 7 years ago

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 :)

Xendiadyon commented 7 years ago

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

Ainschy commented 7 years ago

Bei der Arbeit kannst du auch gleich einen PR anbieten ;-)

Danke für's Analysieren und Lösung finden.

Xendiadyon commented 7 years ago

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 :)

garyee commented 7 years ago

ein PR wäre gut, da die Probleme noch da sind!

k-webdesign commented 7 years ago

Das Problem besteht weiterhin, bin aber nicht fähig das selbst zu fixen :( @Xendiadyon, kannst du einen PR stellen? 🙈

Xendiadyon commented 7 years ago

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.

delahaye commented 7 years ago

Das nächste Release behebt (endlich) die ganzen Probleme. Hat leider sehr lange gedauert...