Plugins können "hooks" verwenden, was dem ähnlich ist, was im Drupal CMS zu finden ist: platziert im normalen Workflow von Chamilo, wo Plugins eingreifen können.
Es funktioniert in Chamilo, indem es den normalen Prozess hat, zum Beispiel um einen Benutzer zu löschen, eine spezielle Funktion aufruft, die nach einem installierten Plugin sucht und eine bestimmte Methode implementiert.
Die Hooks sind in main/inc/lib/hook/
definiert und werden im normalen Workflow instanziiert. Zum Beispiel stellen wir in usermanager.lib.php
fest, dass die UserManager::create_user()
-Methode das HookCreateUser-Objekt tatsächlich instanziiert und dann eine ihrer Methoden aufruft:
Hooks müssen auch in allen Plugins definiert werden. Siehe https://github.com/chamilo/chamilo-lms/issues/1767 für eine sehr kurze Notiz zum Thema Hinzufügen von Hooks auf halbem Weg zu einer Nebenversion und zur Existenz von 3 Funktionen (doWhenDeletingCourse
, doWhenDeletingSession
und doWhenDeletingUser
), die noch nicht implementiert sind, aber das sollten in 2.0
sein.
Der (verkürzte) Plug-Workflow wie folgt:
du erstellst die plugin.php Datei und die index.php
Sie konfigurieren dann, wo es zu sehen ist (im Plugins-Bereich des Administrations-Panels)
Die main/inc/lib/template.lib.php -Klasse (um die Zeile 140) "loads" die Plugins-Regionen
Regionen sind in main/inc/lib/plugin.lib.php definiert und mit der Methode "get_installed_plugins_by_region" können Sie wissen, welches Plugin in einer bestimmten Region der Benutzeroberfläche aktiviert werden soll
(zurück zu template.lib.php ~140) die Template-Lib "loads" die Plugins in bestimmten Template-Variablen namens "plugin_[region]"
Die definierten Vorlagenvariablen werden dann von jeder .tpl angezeigt, die sie lädt
TPL (Template) -Dateien innerhalb des main/template/default/ -Verzeichnisses (siehe Abschnitt Vorlagen oben).
Zum Beispiel können Sie für die normale "2-columns" -Ansicht der Kursliste des Schülers (wie in userportal.php) layout/layout_2col.tpl überprüfen, und im Allgemeinen werden sie {{plugin[region]}}variables laden, abhängig von der Region, die das Plugin definiert wird.Im Moment ist kein "region" für die Kursliste definiert, also wenn Sie also eine -Plugin erscheint dort, Sie sollten eine neue Region definieren (sowohl in einer der TPL-Dateien als auch innerhalb von plugin.lib.php), oder Sie könnten das Menü_top bzw. das Menü_bottom verwenden (ich glaube, diese sind für das Menü links/rechts).
Plugins können auch die globale get_lang() -Funktion verwenden, die im Rest des Codes von Chamilo verfügbar ist, aber sie müssen eine Variante verwenden: get_plugin_lang(), für die Sie den Namen des Plugins angeben müssen, in dem es verwendet wird.
Sprachvariablen müssen sich in einer lang/ [language] .php-Datei befinden. ZB befindet sich die grundlegende Plugin-Sprachdatei für das Plugin « abc » im Unterordner des Plugins « lang »: /plugin/abc/lang/english.php
Die Datei selbst muss das folgende Format verwenden:
Wie Sie sehen, muss das Format als Array namens « $strings » festgelegt werden.
Die beiden ersten Array-Elemente sind obligatorisch. Sie ermöglichen es Administratoren, den Plugin-Namen und eine kurze Beschreibung in ihrer eigenen Sprache zu sehen.
Um die Variablen aus dem Plugin zu verwenden, in einer Vorlagendatei (.tpl)... (muss abgeschlossen werden)
Plugins in Chamilo existieren, um es Dritten zu ermöglichen, [relativ einfach) neue Komponenten in Chamilo zu integrieren, und werden entweder als « staging » -Plattform angesehen, um in zukünftigen Versionen neue Funktionen in den Kern von Chamilo aufzunehmen, oder als eine « buffer », bei der wir Code residieren können, die wir nicht wirklich integrieren möchten an Chamilo (normalerweise aus ethischen oder lizenzrechtlichen Gründen), aber von dem wir wissen, dass es unserer Community insgesamt zugute kommen könnte.
Für Integratoren ist es eine großartige Möglichkeit, neuen Code in Chamilo einzufügen, ohne auf die nächste Hauptversion warten zu müssen, um Datenbankänderungen zu integrieren, da die Plugins ihren eigenen Installer/Deinstallationsprogramm haben können.
Plugins können in zwei Kategorien unterteilt werden: visuelle Plugins und Backend-Plugins. Back-End-Plugins wirken im Hintergrund (du hättest es erraten) und benötigen viel weniger Arbeit (normalerweise) von der Seite des visuellen Designs. Visuelle Plugins müssen sorgfältig erstellt werden, damit sie sich nahtlos in das Chamilo-Layout integrieren lassen.
Obwohl dies die Hauptabteilung ist, werden wir im folgenden Abschnitt keine Unterscheidung zwischen diesen treffen. Wenn Sie ein Backend-Plugin entwickeln, ignorieren Sie einfach den Display-Teil.
Wir werden jedoch zwischen den allgemeinen Plugins (alle außer einem zu diesem Zeitpunkt) und dem Dashboard-Plugin unterscheiden, da dieses letzte einen bestimmten Fall darstellt, der als Tabelleneintrag für das Hauptmenü angezeigt wird und nur Administratoren erlaubt ist.
Im Moment haben wir das Dashboard aus der Lehrer-/Schüler-Ansicht entfernt, weil einige der Diagramme, die zeigen, dass es sehr langsam ist, wenn Sie viele Daten haben, und wir glauben, dass es eine schlechte Idee wäre, es allen Benutzern zu zeigen.In letzter Zeit haben wir jedoch eine kleine Änderung vorgenommen, damit der Plattformadministrator eine sehen kann mehr Diagramm als die anderen Administratoren, daher gibt es einen Anfang für rollenbasierte Änderungen.
Wenn Sie das Dashboard für alle Benutzer vollständig freischalten möchten, können Sie die Berechtigungen in der main/inc/lib/banner.lib.php um Zeile 319 freischalten, wo Sie die Überprüfung von api_is_platform_admin(), api_is_drh() und api_is_session_admin() haben. Entferne diese Zeile und du bekommst sie gleichgültig für Schüler und Lehrer.