Open ortwin20000 opened 3 years ago
Ich werde mir das auch mal durchlesen. Die Komponente soll ja auch immer noch für Joomla 3 und 4 lauffähig sein.
Ich wäre dabei! Zusätzlich ist mir bei der Arbeit an #1266 aufgefallen, dass es nach den vielen Codeumstellungen auch viele "Notice" Logs gibt, die eigentlich bugs sind. Es wird auf Variablen zugegriffen, die in dem Objekt nicht mehr enthalten sind. Vielleicht können wir auch ein Testsystem aufsetzen, welches verschiedene Aufrufe automatisiert ausführt (die wir dann Stück für Stück ergänzen) und anschließend sicherstellen, dass die Findigs im Log von Build zu Build reduziert werden. Da würden auch fehlende / falsch Portierte Namespaces auffallen (mit einer Exception :-))
Das mit dem Testsystem hört sich interessant an. Wie kann man ein solches aufbauen? Mit PHPUnit und automatisierten Tests oder simuliert man die Aufrufe im Browser?
Hab damit noch keine Erfahrung aber lerne gerne dazu 😉
Ich denke PHPUnit wirde - genau wie PyUnit - mehr auf Unittest / Funktionsebene ansetzen, Das wäre für mich schon das "Finetunig". Meine Idee wäre mit Selenium (https://de.wikipedia.org/wiki/Selenium) die Browercalls zu simulieren und damit auf Gesamtanwendungsebene zu starten. Praktisch eingerichtet habe ich das allerdings auch noch nicht. Ich habe nur mitbekommen, dass bei uns in der Firma damit recht schnell und einfach gute Testabdeckungen erreicht werden konnten.
Kannte ich noch nicht. Ich schau mir das mal an. Damit könnte man dann also Tests wie neues Projekt oder Spieler anlegen simulieren. Siehe auch https://docs.joomla.org/Running_Automated_Tests_for_the_Joomla_CMS
Da ich es nicht mit Xampp, PHP und Selenium hinbekommen habe, bin ich jetzt den Weg über Visual Studio und C# gegangen und verwende NUnit mit Selenium und den Firefox WebDriver. Als Anleitung hat mir https://www.guru99.com/selenium-csharp-tutorial.html geholfen. Mein derzeitiger Versuch hat schon mal geklappt: Ein einfaches Anmelden im Backend und dann JSM Stammdaten über das Quick-Icon aufrufen.
Also damit könnte man Tests schreiben und mit Visual Studio dann ausführen.
Ich habe jetzt ein wenig weiter gebastelt: Tests aufgegliedert in Frontend und Backend: Im Frontend öffne ich die Ergebniseingabe. Im Backend erstelle ich eine neue Sportart und lösche diese danach wieder.
Grundsätzlich verstehe ich jetzt wie das funktioniert. Jetzt müsste man sich Testszenarien überlegen mit einer vordefinierten Joomla-DB. Dann könnte man für alles Tests schreiben, was auch über den Browser bewerkstelligt werden kann. Je nach Test mal einfacher mal komplizierter aufgebaut.
Sieht richtig gut aus. Komme an diesem Wochenden leider nicht zu JSM. Werde mir das für den Test des Tippspiels nächste Woche auch mal einrichten! Kurze Nachfrage Visual Studio ist die Visual Studio Code Version, oder? Die Nutze ich eh schon zum debuggen, das wäre ja cool.
Visual Studio 2017 Community Edition verwende ich. In VS Code geht das nicht soweit ich weiß.
Ich fange dann mal langsam an die Sachen zu bereinigen wenn ich Zeit habe.
Ich habe bei mir Joomla 5 mit deaktiviertem Kompatibilitätsplugin die Komponenten getestet und Fehler betreffend der Namespaces in einem Fork von mir behoben. Damit konnte ich es zum Laufen bringen.
Ich habe damit aber bei Joomla 3 Probleme weil z.B. das Feld sportstypelist ursprünglich von JFormFieldList abgeleitet wurde und mit dem neuen Namespace von Joomla\CMS\Form\Field\ListField verwendet wird. Diesen Namespace gibt es aber bei Joomla 3 nicht.
@diddipoeler Wie könnte man da herangehen? Zwei use-Statements mit Alias? Geht nicht wegen der Klassen-Erweiterung. Ein neues Field deklarieren? Einmal für Joomla 3 und einmal für Joomla 4/5? Wie kriege ich dann in den XML-Dateien den type="sportstypelist" abhängig von der Version?
Ich weiß auch nicht ob wir Joomla 3 weiterhin unterstützen wollen. Ich habe bei mir kein Joomla 3 mehr im Einsatz.
Wir müssen noch weiterhin Joomla 3 unterstützen. Viele haben sogar noch Joomla 2.5 :-)
Ok. Gibt es dann eine Möglichkeit bei dem Problem mit dem ListField?
Wie muss denn der Code für Joomla 3 und dann für Joomla 4/5 aussehen?
Als Beispiel nehme ich mal das Feld admin/models/fields/countrylist.php her:
Hinzufügen des Namespace
use Joomla\CMS\Form\Field\ListField;
Änderung der Klassendeklaration von
class JFormFieldacteventtype extends \JFormFieldList
auf
class JFormFieldcountrylist extends ListField
Das kann aber auch noch andere betreffen wie z.B. admin/models/fields/extensionradiobutton.php
use Joomla\CMS\Form\Field\ListField;
Änderung der Klassendeklaration von
class JSMFormField extends JFormFieldRadio
auf
class JSMFormField extends RadioField
Verstehe ich jetzt gerade nicht. Das hatte ich doch schon alles in der Datei admin/models/fields/extensionradiobutton.php gemacht. Hast Du dir überhaupt den Code angeschaut?
`<?php /**
/* welche joomla version ? / if (version_compare(JVERSION, '4.0.0', 'ge')) { class JSMFormField extends RadioField {
}
} else { include_once JPATH_LIBRARIES . '/joomla/form/fields/radio.php'; class JSMFormField extends JFormFieldRadio {
}
}
/**
@access public */ class JFormFieldExtensionRadioButton extends JSMFormField { public $type = 'ExtensionRadioButton';
/**
@return void */ protected function getLabel() {
return parent::getLabel(); }
/**
@return void */ protected function getInput() {
/* welche joomla version ? / if (version_compare(JVERSION, '4.0.0', 'ge')) { // $this->class = "switcher btn-group btn-group-yesno"; $this->layout = "joomla.form.field.radio.switcher"; $this->type = "radio"; } else { $this->class = "radio btn-group btn-group-yesno"; }
return parent::getInput(); }
} `
Bei dem RadioButton habe ich es nicht geprüft da ich vorher schon den Fehler mit den ListField bekommen habe aber jetzt verstehe ich wie das dort gelöst wurde. Danke dafür. Ich werde das mal mit dem ListField probieren.
Da der Code von JSM bereits aus vielen Joomla-Versionen entstanden ist und mittlerweile sich einiges geändert hat, wäre es toll wenn wir den Code etwas aufräumen könnten.
Ich habe dazu zwei Seiten gefunden, die dabei hilfreich sein könnten: https://htmlpreview.github.io/?https://github.com/techjoomla/joomla-3x-to-4x-migration-tools/blob/main/joomla-39x-to-4x-deprecated-notes/joomla39x-to-4x-remove-deprecated.html
https://github.com/techjoomla/joomla-3x-to-4x-migration-tools/tree/main/joomla-39x-to-4x-namespaces-script
Wäre es möglich dies gemeinsam zu koordinieren? Bin noch beim einlesen als dass ich dies alleine bewerkstelligen könnte.