Variablen in der info.php

Themen aus der aktuellen Entwicklung - hier bitte auch Vorschläge und Wünsche posten, welchen Themen wir uns annehmen sollten :)
Antworten
Benutzeravatar
shadowcat
Administrator
Beiträge: 4158
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Variablen in der info.php

Beitrag von shadowcat » Mi 8. Apr 2015, 12:10

https://github.com/BlackCatDevelopment/ ... issues/298

Wir erweitern die Variablen in der info.php sukzessive, z.B. im Zusammenhang mit den gewünschten Template-Optionen. Akut brauche ich eine Einstellmöglichkeit, um bestimmen zu können, ob die in einem Modul enthaltenen Widgets auf dem Dashboard hinzugefügt werden können oder nicht. (Falls jemand die Sinnfrage stellt, warum man Widgets braucht, wenn man sie dem Dashboard nicht hinzufügen darf: Wenn das Modul ein eigenes Dashboard hat und die Widgets zu aufwendig oder "geheim" sind, um sie auf dem globalen Dashboard einzubinden.)

Bisher ist es so: Im Addons Helper ist hinterlegt, welche Variablen wir kennen und welche davon gesetzt sein müssen. Das sind bei Templates zum Teil andere als bei Modulen, und die Spannweite wird künftig noch größer werden.

Fakt ist, daß wir auf jeden Fall einen Basissatz an Variablen brauchen, um mit dem Modul überhaupt arbeiten zu können - Versionsnummer, Verzeichnisname, Lizenz usw.

Fakt ist aber auch, daß jede neu eingeführte Variable derzeit eine Änderung im Addons-Helper erfordert. Daher ist es vermutlich nicht sinnvoll, die info.php als Quelle zu nehmen. Oder man muß den Ansatz im Addons-Helper ändern.

Nun gibt es natürlich viele Möglichkeiten, wie man damit umgehen kann. Und genau da habe ich jetzt ein Problem: Ich kann mir alles mögliche ausdenken, die Frage ist, womit ein 'einfacher' Modulautor zurecht kommt. Eine Stärke von WB war und ist, daß es relativ einfach ist, Module zu bauen. (Was natürlich auch zu einem Wildwuchs unbrauchbarer bzw. qualitativ fragwürdiger Module geführt hat, aber lassen wir das mal beiseite. Wir haben immerhin Modulrichtlinien, mit denen wir zumindest ein bißchen steuern können.)

Bezüglich meines konkreten Problems mit den Widgets wäre folgender Ansatz denkbar:

Grundsätzlich werden Widgets daran erkannt, daß es entweder eine widget.php gibt - dann hat ein Modul nur dieses eine Widget -, oder ein Verzeichnis namens widgets, in dem beliebig viele PHP-Dateien liegen können, die jede für sich ein einzelnes Widget darstellen. Innerhalb jedes Widgets könnte man Einstellungen hinterlegen, z.B. in welcher Spalte ein Widget sich bevorzugt etablieren möchte, ob es nur bei bestimmten Layouts angezeigt werden kann (weil es z.B. zu breit ist, wenn man 5 Spalten hat), später vielleicht auch bezüglich der erforderlichen Rechte, usw. Zusätzlich könnte man in diesem Verzeichnis eine Datei namens widgets.config.php hinterlegen, die globale Einstellungen beinhaltet, also z.B. ob sich die im Modul enthaltenen Widgets grundsätzlich auch im globalen Dashboard einfügen lassen oder nicht.

Ich denke, dieser Ansatz ist einfach genug, läßt dabei aber genügend Spielraum und ließe sich auch auf andere Anforderungen anwenden. Im Fall von Templates z.B. in Form einer template.config.php.

Die Helper, die mit den Informationen arbeiten sollen, müssen natürlich immer noch angepaßt werden, aber immerhin nicht der Addons Helper, der eigentlich nur bei Installationen gebraucht wird und / oder wenn man Meta-Informationen über ein Modul benötigt.
My software never has bugs, it just develops random features.
BC1: PHP 5.5.11 (cli), mySQL 5.6.16 with 'strict' enabled, Apache 2.4.9
BC2: PHP 7.2.7, mariaDB 10.2.13, no Apache

Antworten