Recommandations pour le développement de plugins

En plus des Standards de Développement Elgg - Elgg Coding Standards -, voici des recommandations pour créer des plugins. Les plugins du noyau sont mis à jour vers ce format et tous les auteurs de plugins devraient suivre ces recommandations pour leurs propres plugins.

Voir aussi

Assurez-vous de suivre Squelette du plugin pour la structure de votre plugin.

Avertissement

Ne modifiez pas le cœur

Utilisez le routage standardisé avec vos gestionnaires de pages

  • Exemple : plugin des signets - Bookmarks

  • Les gestionnaires de pages devraient accepter le standard d’URLs suivant :

    Objectif

    URL

    Tout

    page_handler/all

    Utilisateur

    page_handler/owner/<username>

    Contacts du membre

    page_handler/friends/<username>

    Entité unique

    page_handler/view/<guid>/<title>

    Ajout

    page_handler/add/<container_guid>

    Modification

    page_handler/edit/<guid>

    Liste du groupe

    page_handler/group/<guid>/owner

  • Incluez les scripts du gestionnaire de page à partir du gestionnaire de page. Presque tous les gestionnaires de page doivent avoir un script de gestionnaire de page. (Exemple : bookmarks/all => mod/bookmarks/views/default/resources/bookmarks/all.php)

  • Passez des arguments tels que des guids d’entités à la vue de la ressource via $vars dans elgg_view_resource().

  • Appelez elgg_gatekeeper() et elgg_admin_gatekeeper() dans la fonction du gestionnaire de page si nécessaire.

  • L’URL d’un groupe doit utiliser des vues telles que resources/groups/*.php pour afficher des pages.

  • Les gestionnaires de pages ne devraient pas contenir de HTML.

Utilisez les gestionnaires de pages standardisés et les scripts

  • Exemple : plugin des signets - Bookmarks

  • Enregistrez les fonctionnalités des pages dans mod/<plugin>/views/default/resources/<page_handler>/<page_name>.php

  • Utilisez elgg_view_resource('<page_handler>/<page_name>') pour les afficher.

  • Utilisez la disposition de page par défaut dans les scripts du gestionnaire de pages : $content = elgg_view_layout('default', $options);

  • Les scripts de gestionnaires de pages ne devraient pas contenir de HTML

  • Appelle elgg_push_entity_breadcrumbs() ou elgg_push_collection_breadcrumbs() dans les scripts du gestionnaire de page.

  • Nul besoin de s’inquiéter de définir le propriétaire de la page si les URLs sont dans le format standardisé

  • Pour le contenu du groupe, vérifiez le conteneur container_guid en utilisant elgg_get_page_owner_entity()

La vue object/<subtype>

  • Exemple : plugin des signets - Bookmarks

  • Assurez-vous qu’il existe bien des vues pour $vars['full_view'] == true et $vars['full_view'] == false

  • Recherchez l’objet dans $vars['entity'] . Utilisez elgg_instance_of() pour vous assurer qu’il s’agit du type d’entité que vous souhaitez. Renvoyez true pour court-circuiter la vue si l’entité est manquante ou erronée.

  • Utilisez les nouvelles vues de liste du corps et de liste des métadonnées pour aider au formatage. Vous devriez n’utiliser quasiment aucun balisage dans ces vues.

  • Mettez à jour la structure pour les actions - Exemple : le plugin Bookmarks.

  • Fichiers d’action et noms d’action de l’espace de noms (exemple : mod/blog/actions/blog/save.php => action/blog/save)

  • Utilisez les URLs d’action suivantes :

    Objectif

    URL

    Ajout

    action/plugin/save

    Modification

    action/plugin/save

    Suppression

    action/plugin/delete

  • Faites que l’action de suppression accepte action/<handler>/delete?guid=<guid> de sorte que le menu des métadonnées de l’entité ait la bonne URL par défaut

Actions

Les actions sont des états transitoires pour effectuer une action telle que la mise à jour de la base de données ou l’envoi d’une notification à un utilisateur. Utilisées correctement, les actions fournissent un niveau de contrôle d’accès et de prévention contre les attaques CSRF.

Les actions nécessitent que les jetons d’action (CSRF) soient soumis via GET/POST, mais ceux-ci sont ajoutés automatiquement par elgg_view_form(), et à l’aide de l’argument is_action de la vue output/url.

Bonnes pratiques pour les actions

Les fichiers d’action sont inclus dans le système d’action de Elgg ; comme les vues, ce ne sont pas des scripts classiques exécutables par les utilisateurs. Ne démarrez pas le noyau de Elgg dans votre fichier et ne renvoyez pas les utilisateurs directement vers ce fichier.

Parce que les actions sont sensibles au temps, elles ne conviennent pas aux liens dans les e-mails ou autres notifications retardées. Un exemple de cela serait des invitations à rejoindre un groupe. Une manière propre de créer un lien d’invitation est de créer un gestionnaire de page pour les invitations et les e-mails qui serait lié à l’utilisateur. Il incombe alors au gestionnaire de page de créer les liens d’action pour qu’un utilisateur accepte ou ignore la demande d’invitation.

Considérez que les actions peuvent être soumises par le biais de requêtes XHR, pas seulement par des liens ou des envois de formulaires.

Appeler directement un fichier

C’est très simple : Ne le faites pas. À l’exception de l’intégration d’applications tierces, il n’y a pas de raison d’appeler directement un fichier dans le répertoire des plugins.