jonnysp/Map

Version für Contao 5.3

Closed this issue · 56 comments

Hallo,
Danke für die Erweiterung.
Ist eine Aktualisierung für Contao 5.3 und PHP 8.2 geplant?
Wird finanzielle Unterstützung benötigt?

hallo,
ich finde die Erweiterung auch prima - ist nicht so ein Dinosaurier wie con4gis-maps :-) .
deswegen habe ich mich mit meinen bescheidenen Contao Dev Kenntnissen an einer Contao5.3 Version versucht:
Map 5.3.
Diese lässt sich nun installieren und das Map Symbol wird im Backend angezeigt:
ksnip_20241203-121018
allerdings kommt beim Click auf Map dieser Fehler:
ksnip_20241203-120915

  • und da bin ich momentan ratlos.

hallo @wernerjoss ich glaube du bist auf einem guten weg... 👌

bei mir lies sich deine Version installieren. Im backend kann man sogar karten anlegen.
bei die Markern kommt dann ein fehler beim Speichern.

grafik
grafik
grafik

Auf jeden Fall super Arbeit

hallo @jonnysp - schön dass sich der Maintainer meldet 👍
inzwischen bin ich auch wieder ein Stück weiter, siehe diesen Thread im Contao Forum.
ich stosse aber immer wieder auf neue Fehler, zuletzt diesen hier:
grafik
wobei der Stand der diesen erzeugt noch nicht im Fork ist (mach ich aber gleich).
vorher gabs noch ein paar andere, mit 'class not found' etc.
das Problem ist halt: ich habe zu wenig Ahnung von dem aktuellen Contao Zeug mit den ganzen Models, Klassen etc...
deswegen ist hier vieles Probiererei und dumme Fragen im Forum 😄 .
ich war jetzt schon kurz davor aufzugeben, aber wenn da Interesse ist - vllt. bekommen wird das auch zusammen hin ?

hallo @wernerjoss ,
mit der Ahnung geht es dir genauso wie mir 😥

Interesse ist scheinbar da, zumindes von dir.
könntest du eine altuelle version von dir einchecken.

vielleicht bekommen wir zusammen etwas hin.

ok, prima, habe gerade im Forum zum aktuellen Problem gepostet, mal sehen ob das was nützt...

zoglo commented

das Problem ist halt: ich habe zu wenig Ahnung von dem aktuellen Contao Zeug mit den ganzen Models, Klassen etc...
deswegen ist hier vieles Probiererei und dumme Fragen im Forum 😄 .
ich war jetzt schon kurz davor aufzugeben, aber wenn da Interesse ist - vllt. bekommen wird das auch zusammen hin ?

Die Fragen im Forum sind nicht dumm ;)
Du bist zumindest die erste Person, die sich da durchbeißen möchte, da will ich euch nicht davon abhalten :).
Würde da auch gerne weiterhin im Forum den Support geben wollen, habe auch noch mal paar Hinweise hinterlassen.

Der Thread könnte dann für zukünftige Updates von Plugins helfen, so dass andere die selben Schritte befolgen können.

Wenn du einen PR eröffnest (und selbst wenn dieser als Draft markiert ist), dann könnte man zumindest reviewen und die Codezeilen auch besser markieren

moin @zoglo - erstmal danke für den Zuspruch 😄 - Spooky hat ja schon einen eigenen Thread daraus gemacht,
das ist gut.
bin auch schon wieder etwas weiter, siehe dort...

hallo @wernerjoss , ich bin natürlich auch schon etwas weiter das backend funktioniert.. fasst....
habe einen neuen brunch erstellt wo ich die änderungen übennommen habe. bitte auf basis dessen weiter entwickeln.

ok, habe in den Branch einen Pull Request gestartet, mit meinem aktuellen Stand !

zoglo commented

Hab hier mal einen schnellen PR gemacht, gibt paar schöne Sachen ab Contao 4.13 und vorallem ab Contao 5.3 ;)
#6

image

Hinweise stehen im PR :D

so, wieder etwas weitergekommen, sogar so weit dass im Frontend was zu sehen ist 😄
siehe community Thread.
die letzten Änderungen sind noch bei mir lokal, morgen gehts (wahrscheinlich) weiter

@wernerjoss @zoglo

so funktioniert soweit.

Ich habe allerdings noch Probleme:

Mit den Verschieben und Kopieren der Mappoints.
Hat da einer eine Idee an was das liegt?

Der Namespace von @wernerjoss "Map\Model" will bei mir überhaupt nicht, die Klassen werden nicht gefunden. ich habe daher auf "App\Model" gewechselt, funktioniert super. Warum auch Immer.

Jonny

hm, komisch das mit Map\Model - ggf. vergessen im Manager den Composer Classloader und Abhängigkeiten zu erneuern ?
mit dem aktuellen Stand (PR von vor 5 Minuten) bekomme ich erstmals eine richtige Karte im Frontend:
grafik
allerdings erst nachdem ich das Feld tl_content => map von Hand fülle:
update tl_content set map=1 WHERE 1

... Verschieben vom Map Points klappt hier, Kopieren aber nicht (da passiert gar nichts)

es sieht so aus dass wenn man im Backend etwas editiert, werden die id's nicht in die Datenbank geschrieben, weder für die Map noch für die Map Points.
deswegen geht auch das Kopieren nicht.

hm, komisch das mit Map\Model - ggf. vergessen im Manager den Composer Classloader und Abhängigkeiten zu erneuern ? mit dem aktuellen Stand (PR von vor 5 Minuten) bekomme ich erstmals eine richtige Karte im Frontend:
allerdings erst nachdem ich das Feld tl_content => map von Hand fülle: update tl_content set map=1 WHERE 1

@wernerjoss
mit den Class Loader hat funktioniert - ich habe nur immer die Cache erneuert.

beim erstellen der contentelements wird die erste map nur angezeigt aber nicht gespeichert.
du must einmal im dropdown den mapeintrag auswählen und speichern.

zoglo commented

Der Namespace von @wernerjoss "Map\Model" will bei mir überhaupt nicht, die Klassen werden nicht gefunden. ich habe daher auf "App\Model" gewechselt, funktioniert super. Warum auch Immer.

Jonny

Wenn ihr soweit seid, dass es für euch läuft, kann man ja den NameSpace unter src/ haben, dafür würde der ganze src/Resources/contao Ordner im Root liegen, dann wird es erst so richtig mit den Namespaces :)

Würde ich, falls gewünscht, auch im PR erklären, dann kann man daraus vielleicht irgendwann mal so ein richtiges Tutorial machen.

@zoglo kannst du bei dem verschieben und duplizieren der MapPoints helfen? die haben keine Funktion.

grafik

beim erstellen der contentelements wird die erste map nur angezeigt aber nicht gespeichert. du must einmal im dropdown den mapeintrag auswählen und speichern.

ok, das klappt jetzt, ich dachte aber ich hätte das zuvor auch schon gemacht 😄
was mit noch aufgefallen ist: es muss zu jeder Karte offenbar mindestens ein Map Point angelegt werden, sonst
gibt es einen Fehler in einer foreach Schleife die über NULL iterieren will.
muss ich mir nochmal anschauen...

empty Map Points fixed with 2e6232c

zoglo commented

zoglo kannst du bei dem verschieben und duplizieren der MapPoints helfen? die haben keine Funktion.

Ich mach mal paar Fixes ;) sind dann im PR

hm, das löst aber nicht das Problem wenn gar kein Map Point da ist.
ich hab das bei mir hier nun so gemacht:
`
if ($objPoints != NULL) {
foreach ($objPoints as $key => $value) {

			try {
				$position = unserialize($value->position);
			} catch (Exception $e) {
				$position = array();
			}


			if (isset($value->image)) {

				$imagemodel = \FilesModel::findByPk($value->image);
				$objFile = new File($imagemodel->path);

				$points[$key] = array(
					"title" => $value->title,
					"image" => $imagemodel->path,
					"size" => $objFile->imageSize,
					"latitude"  => $position[0],
					"longitude"  => $position[1],
					"zoom"  => $position[2],
					"description" =>  $value->description,
					"info" => boolval($value->info)
				);
			} else {

				$points[$key] = array(
					"title" => $value->title,
					"image" => NULL,
					"size" => NULL,
					"latitude"  => $position[0],
					"longitude"  => $position[1],
					"zoom"  => $position[2],
					"description" =>  $value->description,
					"info" => boolval($value->info)
				);
			}
		}
	}

`
und das klappt jetzt

zoglo commented

Hab hier mal alles reingeschrieben:
#8

Ist nicht ein Code-Cleanup-PR, der jetzige PR sollte aber auch alles erklären, was zu euren Fehlern geführt hat ;)
Womöglich ist das auch schon alles, damit es mit Contao 5 reibungslos laufen wird.

@zoglo Kann ich über das Wochenende leider nicht testen. Sieht aber vielversprechend aus! Danke und schönen Wochenende.

hier noch Infos zum letzten Stand:
es läuft nun (fast) alles soweit bei mir mit Contao 5.3, allerdings erst nach 2 händischen Eingriffen direkt nach der Installation via Upload im Manager:

  1. ich muss das Feld map in der Tabelle tl_content mit dem Wert 1 füllen:
    UPDATE tl_content SET map=1 WHERE 1;
  2. ich muss die Zeilen 27 und 28 in PositionSelectorField.php löschen:
    var '.$olmapname.'markerpos = ['.($this->varValue[0] ?: 0).' ,'.($this->varValue[1] ?: 0).'];
    var '.$olmapname.'markerzoom = '.($this->varValue[2] ?: 5).';

Danach kann ich Maps und Maps Points im Backend anlegen und die Maps werden richtig im Frontend angezeigt.
Maps kopieren und Verschieben geht auch.
Was NICHT geht:
Beim Anlegen einer Map die Koordinaten durch Auswahl in der angezeigten Karte festlegen, diese müssen darunter von Hand in die Input Felder eingetragen werden.
Ich vermute das hängt mit der Löschung der o.g. Javascript Zeilen zusammen.

@wernerjoss

Bei mir funktioniert alles wie vorher.

zu Punkt 1: wie bereits beschrieben ... nach dem hinzufügen des ContentElements Map .. den ersten eintrag im dropdown einmal auswählen und bestätigen .....auch wenn der schon angezeigt wird. danach speichern.

zu Punkt 2: ähnliches verhalten.... nach dem hinzufügen des mappoints....erst irgendeinen belibigen Punkt im positionsselector anklicken (auf die Map klicken) ... danach füllen sich die Inputfelder mit den koordinaten .... danach speichern.

@jonnysp - schön dass es bei dir funktioniert, hier leider nicht, ich komme nämlich direkt nach dem Upload gar nicht da hin 😢
wenn ich versuche, im Backend eine Map anzulegen:
grafik
kommt sofort das hier:
grafik
dies ist der o.g. Punkt 2 und kann durch die Löschung der 2 genannten Zeilen behoben werden.
danach kann ich eine Map anlegen und speichern.
wenn ich diese dann als Inhaltselement in einen Artikel einfügen will, passiert das hier:
grafik
erst wenn ich dann in der Datenbank das Feld map auf 1 setze, geht es weiter wie beschrieben.
ab dann kann ich alles machen, ausser Koordinaten aus dem Positionsselektor wählen.

ich muss also in meinen o.g. Punkten 1 und 2 vertauschen.
ob das nun daran liegt dass mein Contao in einem Docker Container läuft ???
keine Ahnung, mit den 3.5 und 4.x Versionen von Contao hatte ich da nie Probleme.

mal schauen ob ich das auf einem 'echten' Server verifizieren kann....

zoglo commented

Because PHP 8. Ich schau es mir mal genauer an, würde auch mal Tools drüber laufen lassen, da fällt sowas schneller auf.
Aber klingt doch schon alles sehr gut!

Wenn es wirklich nur diese zwei sind, dann liegt es auch eher an den Defaults, welche vorbefüllt werden, das lässt sich auch über die DCAs und das Custom Widget lösen.

Vermutlich auch mit der Shortsyntax und dem Coalescing, muss aber mal debuggen, was in objMap genau drin ist, das kann / darf in dem Fall ja nicht Null sein, das sind die Warnings.

ok, das PHP in meinem Container ist 8.1.31, wenn das hilft.
und an die Defaultwerte via DCA hatte ich auch schon gedacht, wusste aber nicht wie das geht 😄

zoglo commented

PHP 8.1 hin oder her, die Minor ist nicht der Grund, du solltest aber mal auf die neuen PHP Versionen wechseln :)

ok, dann nehm ich 8.2, das ist auch das was in Debian Stable drin ist, da gibts dann keine Probleme beim Docker Image bauen...

@wernerjoss habe die Probleme behoben, bitte testen

zoglo commented

Würde jetzt auch einen PR machen, da gibts noch mehr PHP 8 warnings.
Das kann auch auf PHP-Ebene behoben werden (und sollte, gerade für bestehende Installationen)

zoglo commented

#10 <-- Damit werden folgende Fehler / Warnings behoben

  • Noch keine Map eingerichtet - Content-Element besteht
  • Weiterer Check für leere Strings und dem Widget - Die Unitialized String Offsets
  • Potenzielle weitere Warnings bei Übergabe an das Template

@wernerjoss habe die Probleme behoben, bitte testen

soeben getestet (php 8.2) - bekomme beim Versuch eine neue Map anzulegen immer noch das:
grafik

zoglo commented

^ Schau oben - du brauchst nichts mehr testen.

Teste meinen Branch, ich habe nochmal geschrieben, welche weiteren Warnings es geben kann

#10 <-- Damit werden folgende Fehler / Warnings behoben

  • Noch keine Map eingerichtet - Content-Element besteht
  • Weiterer Check für leere Strings und dem Widget - Die Unitialized String Offsets
  • Potenzielle weitere Warnings bei Übergabe an das Template

ok, dann warte ich auf den merge und probiere es dann wieder...

zoglo commented

ok, dann warte ich auf den merge und probiere es dann wieder...

Du kannst doch meinen Branch einfach testen mit folgendem in deiner composer.json

"repositories": [
    {
      "type": "git",
      "url": "https://github.com/zoglo/jonnysp-map.git"
    },
],

A bissle mehr zuvorkommen musst du schon ;) - ansonsten einfach git clone https://github.com/zoglo/jonnysp-map und bei dir lokal einbinden

ok, mach ich, hatte deinen Fork noch gar nicht gefunden 😄
update: wenn ich das mache kommt beim Upload des daraus erstellten zip Files das hier:
grafik

ich nehme jetzt die composer.json von @jonnysp , damit geht der upload...

zoglo commented

Ah - Du nutzt es als Manager-Artefakt 💀... Autsch - du hättest es doch via VCS wie beschrieben über die composer.json regeln können...

Der Umweg mit der Version ist für private Pakete wie kaufbare Extensions oder Themes gedacht, das muss nicht zwangsläufig so laufen. Sonst wirst du ja nie Updates erhalten können und musst alles manuell machen?

"repositories": [
    {
      "type": "git",
      "url": "https://github.com/zoglo/jonnysp-map.git"
    },
],
"require":  {
    ... // Bitte diese Punkte nicht beachten... bitte nicht 1:1 kopieren - schreibe es so in deine composer json rein
    "jonnysp/map": "v2.0.x-dev as 2.0.0"
}

Danach composer update - der Weg über ein Manager-Artefakt ist viel Umweg :')

Danach composer update - der Weg über ein Manager-Artefakt ist viel Umweg :')

ja, das habe ich gemerkt - wusste es aber nicht besser 😄
(wobei mir das mit den nicht funktionierenden Updates schon klar war, ist aber momenta egal,
wenn das neue Paket mal veröffentlicht ist funktioniert das dann ja wieder...)

bekomme jetzt beim anlegen einer neuen Map immer noch diesen Fehler
grafik

Dann nutzt du meinen Fork nicht, das habe ich bereits behoben und im PR sieht man es auch: https://github.com/zoglo/jonnysp-map/blob/544f8d6afb42a33564adb544c56dd4255108e229/src/Resources/contao/widgets/PositionSelectorField.php#L18-#L31

hm, ich habe den Fork geholt mit
git clone https://github.com/zoglo/jonnysp-map
und bekomme was anderes (alt) - wie kann das sein ?

zoglo commented

hast du den branch gewechselt? (der Stand ist doch in v2.0)

ja, inzwischen habe ich es gemerkt - der richtige clone Befehl hätte heissen müssen:
git clone -b v2.0 https://github.com/zoglo/jonnysp-map
und damit sind die beschriebenen Fehler weg 👍

zoglo commented

Inzwischen ist es auch gemerged, ich schau nicht so oft in meine Benachrichtigungen 👍

ok, sollte das jetzt auch noch mit Contao 4.13 und PHP 8.2 funktionieren ?
(sofern man die Anforderungen an contao in composer.json anpasst)

zoglo commented

Nein, nur mit Contao 5.3 und höher.
Eine Erweiterung, welche schon mit Contao 4.13 lief, 2 Monate vor Security-Period-Only für 4.13 UND 5.3 gleichzeitig ready zu machen, scheint mir etwas unnötig und unsinnig ;)

Wenn man 4.13 will, bleibt man bei der alten Version; will man 5.3, installiert man sich dann die neue Version, dafür gibt es Tags und Releases.

Um es kompatibel mit 5.3 und 4.13 zu machen, müsste man jegliche Änderungen der DCA nochmal reverten und Schienen einbauen, damit es auch mit 5.4 funktionieren wird.
Es gibt ja keine neuen Features, und wenn du neu willst, dann auf die aktuelle LTS (5.3) setzen 😊

ok, das war eigentlich auch der Hintergrund meiner Frage, dass man dann besser 2 Versionen in packagist bereit hält.
die alte (für Contao 4.13) braucht dann sicher auch einen "version": "1.0.0" Eintrag in der composer.json damit man die via Manager richtig installieren kann.

zoglo commented

ok, das war eigentlich auch der Hintergrund meiner Frage, dass man dann besser 2 Versionen in packagist bereit hält.

Das passiert durch das tagging über git

braucht dann sicher auch einen "version": "1.0.0" Eintrag in der composer.json damit man die via Manager richtig installieren kann.

Das brauchen nur Manager-Artefakte, welche als private Plugins via Drag-And-Drop installiert werden. Eine über packagist bereitgestellte Erweiterung braucht den version flag nicht.
Du installierst dir in Zukunft dieses Plugin über den Contao-Manager über die Suche, nicht über Drag-And-Drop einer .zip Datei.
https://extensions.contao.org/?q=map&pages=1&p=jonnysp%2Fmap

TL;DR - Es braucht keine version in der composer.json, du installierst das Plugin schlichtweg "falsch" und auf dem veralteten Weg via drag and drop und als zip, das hat man vor 10 Jahren so gemacht, heute gibt es composer...

zoglo commented

Die Versionen werden über das "tagging" (das passiert auch beim Release auf GitHub) verwaltet: https://github.com/jonnysp/Map/tags

Die Versionen werden über das "tagging" (das passiert auch beim Release auf GitHub) verwaltet: https://github.com/jonnysp/Map/tags

ok, da gibt es nun ja auch schon das Release 1.0.0
und ja, die version in der composer.json habe ich für die zip upload Methode gebraucht, das ist natürlich nicht das richtige, aber während der laufenden Entwicklung hat es immerhin für mich funktioniert, wenn auch etwas umständlich...

was mir noch aufgefallen ist: ich tauche nicht in der 'contributors' Liste auf, sollte da nicht jeder drin stehen der etwas beigetragen hat ?

zoglo commented

was mir noch aufgefallen ist: ich tauche nicht in der 'contributors' Liste auf, sollte da nicht jeder drin stehen der etwas beigetragen hat ?

Das würde erst passieren, wenn entweder der v2.x branch als Hauptbranch deklariert wird, oder der v2.x branch in den derzeitigen "master" gemerged wird ;)

ok, war mir nicht klar wie das funktioniert 😄

zoglo commented

@jonnysp this issue can be closed with the latest release, right?
(Might need to update on packagist.org it it's not auto-updated via webhook)

@wernerjoss und @zoglo danke für die unterstützung.