mise à jour pour 1.8 (voir bas de page)
Dans Elgg, les widgets sont ces composents que vous pouvez glissez sur votre profil ou dans le tableau de bord administrateur. Ce tutoriel vous fera passer les étapes de la création d'un widget qui va afficher "Hello, World!" et par extension n'importe quel texte que vous souhaitez.
Ce tutoriel considère que vous connaissez les concepts basiques d'Elgg comme les Vues et les Plugins. Vous devriez relire ces parties si vous vous perdez dans la lecture de cette page.
Les Plugins sont toujours placés dans le répertoire /mod. Créez un sous-répertoire nommé hello. Ce sera le nom de votre plugin et il s'affichera dans la section Gestion des outils (Tools Administration) d'Elgg sous ce nom.
Dans /mod/hello, créez un nouveau fichier start.php. Si ce fichier existe, Elgg charge votre plugin. Sinon, vous verrez une erreur de mauvaise configuration du plugin. Allez dans la section Administration de votre installation Elgg et activez votre plugin. Cliquez sur lien "plus d'info" sous le nom du plugin. Vous noteez que rien ne se passe.
Copiez le fichier manifest.xml file depuis un des autres plugins elgg dans /mod/hello. Mettez à jour les valeurx des balises xml afin que vous soyez indiqué comme auteur et que la description décrive ce nouveau plugin. Rechargez la Page Gestion des outils dans votre navigateur et cliquez à nouveau sur "plus d'info". Il affichera maintenant les informations que vous avez saisies.
Elgg parcoure automatiquement les répertoires de plugins cherchant des fichiers spécifiques. Ce système de vue rend très facile l'ajout de vos codes en surchargeant le comportement par défaut d'Elgg. Pour l'instant, nous allons juste ajouter le code de la vue pour votre widget. Créez le fichier /mod/hello/views/default/widgets/helloworld/content.php. "helloworld" sera le nom de votre widget à l'intérieur de votre plugin hello. Dans ce fichier, ajoutez le code suivant :
Maintenant, allez dans votre profil avec votre navigateur et ajoutez le widget "hello, world". Il devrait afficher "Hello, world!".
Note: Pour des vrais widgets, il est préférable de prévoir l'internationalisation et la gestion des langages.
Cliquez sur le lien Modifier de la barre d'outils du widget que vous venez de créer. Vous remarquerez que le seul contrôle qu'on vous laisse par défaut est la modification d'accès (modification par ceux qui peuvent voir le widget).
Disons que vous voulez permettre à l'utilisateur de contrôler quel message d'accueil est affiché dans le widget. De la même manière qu'Elgg charge automatiquement content.php quand il affiche un widget, il charge edit.php quand un utilisateur tente de modifier un widget. Dans/mod/hello/views/default/widgets/helloworld/, créez un fichier edit.php, et ajoutez le code suivant :
Notez la relation entre les valeurs passées aux champs 'name' et 'value' de input/text. Le nom de l'input text est params[message] car Elgg will automatiquement gérer les variables du widget placées dans les paramètres du tableau. Le nom de la variable php actuelle sera message. Si nous avions vouluutiliser le champ greeting au lieu de message, nous aurions du passer les valeurs params[greeting] et $widget->greeting respectivement.
La raison pour laquelle nous avons configuré l'option 'value' du tableau est pour que la vue édition se rappelle ce que l'utilisateur a tapé la dernière fois qu'il a modifié le texte du message.
Maintenant pour afficher le message de l'utilisateur, nous avons besoin de modifier content.php et utiliser cette variable message. Modifiez content.php et changez-là en :
Vous devriez pouvoir maintenant entrer un message dans la boite de texte et la voir apparaître dans le widget.
widgets/helloworld/content.php
Pour Elgg 1.7.x et versions inférieuses, ce fichier DOIT être nommé view.php.
elgg_register_widget_type()
Pour Elgg 1.7.x and below, use the add_widget_type() function instead. This function has been deprecated in 1.8.
Retrouvez la version de ce tutoriel pour Elgg 1.7.x ici (en anglais) : http://docs.elgg.org/w/index.php?title=Tutorials/HelloWorld&oldid=3657
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by Raül Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.