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 leentity_subtype
, il peut générer tout ce dont le module a besoin
entity_subtype
: en combinaison avec leentity_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 traductioncollection:<entity_type>:<entity_subtype>:group
content
:elgg_list_entities()
basé sur un type/sous-type donné
all_link
: basé sur le nom de routecollection:<entity_type>:<entity_subtype>:group
add_link
: basé sur le nom de routeadd:<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)
.