Hallo,
nachdem wir mit Neues Controller-Konzept auf Basis von PSR-15 bereits die spannendste konzeptionelle Änderung in WoltLab Suite 6.0 für neuen Code vorgestellt haben, möchten wir mit diesem Thema kurz auf notwendige Änderungen für bestehende Plugins eingehen.
Wir haben die Entwickler-Doku im Laufe der Entwicklung bereits fortlaufend angepasst und insbesondere den „Migration Guide“ zeitnah gepflegt: https://docs.woltlab.com/6.0/migration/wsc55/php/. Unsere eigenen Apps und Plugins haben wir jeweils unmittelbar nach Integration von Änderungen in WoltLab Suite Core angepasst – oder zumindest eine Issue erstellt – um sicherzustellen, dass die notwendigen Änderungen nicht in Vergessenheit geraten und alle Anwendungsfälle berücksichtigt sind.
Auf Basis dessen möchten wir folgende Dinge, die in der Entwickler-Dokumentation bereits genannt wurden noch einmal explizit hervorheben:
Icons
Die wohl größte zwingende Anpassung mit WoltLab Suite 6.0 ist die Aktualisierung auf FontAwesome 6. Hierzu verweise ich auf den Beitrag von Alexander:
Wir haben die Integration von Font Awesome 6 bereits vor einigen Wochen abgeschlossen, es sind gegenwärtig keine Änderungen mehr geplant. Die bisherige Icon-Implementierung ist sehr alt (ursprünglich auf Basis von Font Awesome 3 entwickelt) und weist eine Menge an Designschwächen auf. Die neuen Icons sind nicht abwärtskompatibel, es wird daher notwendig sein, alle verwendeten Icons zu modernisieren. Icons werden ausschließlich über dedizierte HTML-Elemente unterstützt,…
Typisierung in PHP
Wir haben an diversen Stellen Typen in Methodensignaturen ergänzt. In Bezug auf Rückgabetypen ist dies ein breaking change für abgeleitete Klassen bzw. implementierte Interfaces. Die Änderung ist aber vorwärtskompatibel: Die notwendigen Rückgabetypen können auf Wunsch bereits mit WoltLab Suite 5.5 ergänzt werden, um die Unterschiede zwischen der Version für 5.5 und 6.0 klein zu halten. Für kleine Plugins mit einer Hand voll Klassen empfehlen wir die Typisierung wo möglich bereits in der Version für 5.5 vorzunehmen, gerne prüfen wir diese bereits jetzt und schalten sie frei.
Insbesondere sind getTitle() und getLink()-Methoden betroffen, diese sollten einen expliziten : string-Rückgabetyp erhalten.
Hinweis in der Dokumentation: https://docs.woltlab.com/6.0/m…ter-return-property-types
config.inc.php für Apps
Die Datei ist schon seit vielen Versionen deprecated und bindet einfach nur die app.config.inc.php ein, wurde aber auch von uns noch vor kurzem eingebunden. Mit WoltLab Suite 6.0 entfällt die config.inc.php, es muss die app.config.inc.php eingebunden werden. Auch diese Änderung ist vorwärtskompatibel und kann mit WoltLab Suite 5.5 vorgenommen werden. Wir empfehlen die Änderung bereits mit dem nächsten Update für 5.5 zu inkludieren.
Die Änderung für WoltLab Suite: Calender sieht beispielhaft so aus:
diff --git a/files/acp/global.php b/files/acp/global.php
index 54cc180..53c2ac0 100644
--- a/files/acp/global.php
+++ b/files/acp/global.php
@@ -11,7 +11,7 @@
\define('RELATIVE_CALENDAR_DIR', '../');
// include config
-require_once(\dirname(__DIR__) . '/config.inc.php');
+require_once(\dirname(__DIR__) . '/app.config.inc.php');
// include WCF
require_once(RELATIVE_WCF_DIR . 'acp/global.php');
diff --git a/files/global.php b/files/global.php
index 445b09f..b259ae1 100644
--- a/files/global.php
+++ b/files/global.php
@@ -8,7 +8,7 @@
*/
// include config
-require_once(__DIR__ . '/config.inc.php');
+require_once(__DIR__ . '/app.config.inc.php');
// include wcf
require_once(RELATIVE_WCF_DIR . 'global.php');
Display More
Hinweis in der Dokumentation: https://docs.woltlab.com/6.0/m…recations_removals/#files
Deprecations allgemein + andere inkompatible Änderungen
Diverse APIs, die seit längerem deprecated sind, sind endgültig entfernt worden. Auch hier können Änderungen in der Regel vorab vorgenommen werden. Am einfachsten ergeben sich notwendige Anpassungen, wenn man das Plugin in WoltLab Suite 6.0 testet: Wenn Inkompatibilitäten unvermeidbar waren, haben wir versucht die alte API vollständig zu entfernen, sodass notwendige Anpassungen sich in einem „Fatal Error“ niederschlagen, anstatt subtile Änderungen im Verhalten herbei zu führen. Plugins, die für WoltLab Suite 5.5 in einem guten Zustand in Bezug auf Deprecations sind, sollten mit WoltLab Suite 6.0 wenig Probleme bekommen.
Hinweis in der Dokumentation: https://docs.woltlab.com/6.0/m…55/deprecations_removals/
Aufräumen mit WoltLab Suite 6.0 und neue Features
Neue Features sollten sich sinnvollerweise die neuen Funktionen von WoltLab Suite 6.0 zu Nutze machen, um die Arbeit zu erleichtern. Im Rahmen der Plugin-Prüfung haben wir bereits auf einige Dinge aufmerksam gemacht, wenn es sich ergeben hat.
Dazu:
AMA
Gerne stehen wir für Unklarheiten zu notwendigen Anpassungen an WoltLab Suite 6.0 zur Verfügung, auf GitHub in Issues, allgemein im Plugin-Entwicklungs-Bereich (es gibt bereits ein Label für WoltLab Suite 6.0!) oder auch hier im Thema. Sollte es Unklarheiten in der Dokumentation geben oder etwas übersehen worden sein, dann schickt gerne einen Pull Request zur Verbesserung, oder erstellt eine Tracking-Issue im WoltLab/docs.woltlab.com-Repository. Ein paar offene Issues für 6.0 gibt es aktuell bereits: https://github.com/WoltLab/docs.woltlab.com/issues