Squelette du plugin

Ce qui suit est le standard pour la structure d’un plugin dans Elgg à partir de Elgg 2.0.

Exemple de structure

Voici un exemple de plugin avec un structure standard. Pour plus d’explications sur cette structure, voyez les informations dans les sections suivantes. Votre plugin peut ne pas avoir besoin de tous les fichiers listés

Les fichiers suivants pour le plugin example iraient dans /mod/example/

actions/
    example/
        action.php
        other_action.php
classes/
    VendorNamespace/
        ExampleClass.php
languages/
    en.php
vendors/
    example_3rd_party_lib/
views/
    default/
        example/
          component.css
          component.js
          component.png
        forms/
            example/
                action.php
                other_action.php
        object/
            example.php
            example/
                context1.php
                context2.php
        plugins/
            example/
                settings.php
                usersettings.php
        resources/
            example/
                all.css
                all.js
                all.php
                owner.css
                owner.js
                owner.php
        widgets/
            example_widget/
                content.php
                edit.php
activate.php
deactivate.php
elgg-plugin.php
CHANGES.txt
COPYRIGHT.txt
INSTALL.txt
LICENSE.txt
manifest.xml
README.txt
start.php

Fichiers requis

Les plugins doivent fournir un fichier start.php et manifest.xml dans la racine du plugin afin d’être reconnus par Elgg.

De ce fait, voici la structure conforme minimale :

mod/example/
    start.php
    manifest.xml

Actions

Les plugins devraient placer les scripts pour les actions dans un dossier actions/, et devraient en outre utiliser le nom de l’action pour déterminer l’emplacement dans ce dossier.

Par exemple, l’action my/example/action irait dans my_plugin/actions/my/example/action.php. Ceci permet de rendre évident quel script est associé avec quelle action.

De même, le corps du formulaire qui renvoie vers cette action doit être situé dans forms/mon/exemple/action.php. Non seulement cela rend évident la connexion entre le gestionnaire d’action, le code de formulaire et le nom de l’action, mais il vous permet d’utiliser la nouvelle (à partir de Elgg 1.8) fonction elgg_view_form() facilement.

Fichiers texte

Les plugins peuvent fournir divers fichiers *.txt comme documentation supplémentaire pour le plugin. Ces fichiers doivent utiliser la syntaxe Markdown et vont générer des liens vers les sections de gestion du plugins.

README.txt

devrait fournir des informations supplémentaires de toute nature sur le plugin

COPYRIGHT.txt

Si inclus, doit fournir une description du droit d’auteur du plugin, en plus de ce qui est inclus dans manifest.xml

LICENSE.txt

Si inclus, doit fournir le texte de la licence sous laquelle le plugin est publié.

INSTALL.txt

Si inclus, doit fournir des instructions supplémentaires pour l’installation du plugin si le processus est suffisamment compliqué (par exemple, s’il nécessite l’installation de bibliothèques tierces sur l’hôte, ou nécessite l’acquisition d’une clef API provenant d’un tiers).

CHANGES.txt

Si inclus, doit fournir une liste de modifications pour leur plugin, regroupées par numéro de version, avec la version la plus récente au début.

Les plugins peuvent inclure des fichiers supplémentaires *.txt en plus de ceux-ci, mais aucune interface n’est donnée pour les lire.

Pages

Pour afficher des pages complètes, les plugins doivent utiliser les vues de ressources (qui ont des noms commençant par resources/). Cela permet à d’autres plugins de remplacer facilement certaines fonctionnalités via le système de vue.

Note

La raison pour laquelle nous encourageons cette structure est

  • Pour former une relation logique entre urls et scripts, de sorte que les personnes qui examinent le code puissent avoir une idée de ce qu’il fait rien qu’en examinant la structure du code.

  • Pour nettoyer le répertoire racine des plugins, qui avait historiquement été rapidement encombré avec les scripts de gestion des pages.

Classes

Elgg fournit un autochargement PSR-0 de toutes les classes du répertoire classes/ des plugins actifs.

Vous êtes encouragés à suivre les standards PHP-FIG quand vous écrivez vos classes.

Note

Les fichiers avec une extension « .class.php » ne seront pas reconnus par Elgg.

Fournisseurs (vendors)

Les bibliothèques tierce-partie devraient être placées dans le dossier vendors/ de la racine du plugin. Quoi que ce dossier n’ait pas de signification particulière pour Elgg, il a été historiquement l’emplacement où le noyau d’Elgg conservait ses bibliothèques tierces-parties, aussi nous encourageons le même format au nom de la cohérence et de la familiarité.

Vues

Afin de surcharger des vues du noyau, les vues d’un plugin peuvent être placées dans views/, ou un fichier de configuration elgg-plugin.php peut être utilisé pour un mappage fichier/chemin plus détaillé. Voyez Vues.

Javascript et CSS seront hébergés dans le système de vues. Voyez JavaScript.

activate.php et deactivate.php

Les fichiers activate.php et deactivate.php contiennent du code procédural qui sera exécuté respectivement lors de l’activation ou de la désactivation du plugin. Utilisez ces fichiers pour effectuer des événements uniques tels qu’enregistrer une note d’information d’administration permanente, enregistrer des sous-types, ou effectuer des opérations de nettoyage lorsque le plugin est désactivé.