Outils du groupe

Les groupes Elgg permettent aux administrateurs de groupe d’activer/désactiver divers outils disponibles au sein d’un groupe. Ces outils sont fournis par d’autres plugins tels que blog ou file.

Les plugins peuvent accéder au registre des outils du groupe via elgg()->group_tools.

elgg()->group_tools->register('my-tool', [
        'default_on' => false, // default is true
        'label' => elgg_echo('my-tool:checkbox:label'),
        'priority' => 300, // display this earlier than other modules/tools
]);

Un outil enregistré aura la possibilité d’être activé sur le formulaire d’édition d’un groupe, et peut avoir un module d’affichage de profil qui lui est associé. Pour ajouter un module de profil, il suffit d’ajouter une vue correspondante groups/profile/module/<tool_name>. Cette vue ne sera appelée que si l’outil est activé.

Si vous souhaitez simplement lister certains contenus dans le groupe, vous pouvez utiliser la vue groups/profile/module avec quelques paramètres supplémentaires.

  • entity_type : en combinaison avec le entity_subtype, il peut générer tout ce dont le module a besoin

  • entity_subtype : en combinaison avec le entity_type, il peut générer tout ce dont le module a besoin

  • no_results : texte personnalisé si aucun résultat n’est trouvé

Les éléments suivants seront générés automatiquement :

  • title : basé sur la clef de traduction collection:<entity_type>:<entity_subtype>:group

  • content : elgg_list_entities() basé sur un type/sous-type donné

  • all_link : basé sur le nom de route collection:<entity_type>:<entity_subtype>:group

  • add_link : basé sur le nom de route add:<entity_type>:<entity_subtype>:group et avec une vérification des autorisations pour un type/sous-type donné

// file: groups/profile/module/my-tool.php

// if you wish to list some content (eg. files) in the group
// you can use the following
$params = [
        'entity_type' => 'object',
        'entity_subtype' => 'file',
        'no_results' => elgg_echo('file:none'),
];
$params = $params + $vars;

echo elgg_view('groups/profile/module', $params);

Vous pouvez également générer votre propre titre et contenu

// file: groups/profile/module/my-tool.php

echo elgg_view('groups/profile/module', [
        'title' => elgg_echo('my-tool'),
        'content' => 'Hello, world!',
]);

Vous pouvez activer et désactiver des outils de manière programmatique pour un groupe donné :

$group = get_entity($group_guid);

// enables the file tool for the group
$group->enableTool('file');

// disables the file tool for the group
$group->disableTool('file');

Si vous voulez autoriser une certaine fonctionnalité dans un groupe seulement si l’option du groupe pour cet outil est activée, vous pouvez vérifier en utilisant \ElggGroup::isToolEnabled($tool_option).

Il est également possible d’utiliser une fonction gardienne - gatekeeper - pour éviter l’accès à une page d’un groupe sur la base d’un outil activé.

elgg_group_tool_gatekeeper('file', $group);

Voir aussi

Lisez-en plus sur les gardiens - gatekeepers - ici : Gestionnaires d’accès - gatekeepers

Si vous avez besoin des options d’un outil de groupe configurées pour un groupe spécifique, vous pouvez utiliser la fonction elgg()->group_tools->group($group).