Le module Organic Group (également appelé  'OG'), offre aux utilisateurs la possibilité de créer, gérer et supprimer leurs propres «groupes» sur un site.

Chaque groupe peut avoir des membres et maintenir une page d'accueil sur laquelle chaque  membre individuel du groupe peut publier. Des contenus peuvent être publiés dans plusieurs groupes (c'est a dire en publication croisée), et les publications individuelles (appelés «contenu de groupe») peuvent être partagées avec les membres ou non-membres si nécessaire. L'appartenance au groupe peut être ouverte, fermée ou modérée. 

TERMeS ET DÉFINITIONS

  • GROUPE: Un nœud simple qui peut avoir différents types de contenu et utilisateurs qui lui soit attachés
  • CONTENU de GROUPE : Un contenu, comme des nœuds ou des utilisateurs qui sont associés avec un groupe.
  • ADMINISTRATEUR DU GROUPE: L'utilisateur privilégié qui possède les permissions d'administrer certaines activités au sein du groupe.
  • ADMINISTRATEUR DU SITE: Comparé à l'administrateur du groupe, celui du site à accès à tous les groupes existants sur le site. L'administrateur du site peut spécifier les permissions qui donnent la possibilité aux administrateurs de groupe de gérer leur activité mais pas certaines autres.
  • CONTEXTE DE GROUPE : A chaque fois qu'un élément individuel de contenu, tel qu'un noeud ou un utilisateur, est affiché, le module tente de déterminer si ce contenu est associé à un groupe particulier. Le contexte de groupe est ensuite utilisé pour déterminer quels droits d'accès accorder à l'utilisateur. Par exemple, dans un contexte de groupe particulier, l'utilisateur peut modifier les nœuds, mais, dans un contexte de groupe différent, est uniquement autorisée à afficher les nœuds. Le contexte de groupe peut également être utilisé par des modules personnalisés pour déterminer des comportements différents. Par exemple, afficher différents blocs, changer de thème, etc.
  • ENTITE: Les nœuds, les utilisateurs, et les termes de taxonomie, sont des exemples d'entités Drupal. Les Groupes Organiques permettent à chaque type d'entité individuelle Drupal d'être associé à un groupe ou à un contenu de groupe. Cela signifie que vous pouvez associer différents utilisateurs (comme contenu d'un groupe) à un certain utilisateur (en tant que groupe).

ARCHITECTURE DE GROUPE

Au niveau le plus bas, le module associe des types de contenu avec des groupes. Par dessus cette couche, vient celle des rôles et les autorisations, qui opére au niveau du groupe. Le module Groupes organiques exploite les fonctionnalités de base de Drupal, en particulier l'API de champs. Cela signifie qu'un type de contenu peut être associé à un groupe en réglant correctement la valeur d'un champ. Les utilisateurs peuvent également sélectionner les groupes qui seront associés à un contenu en choisissant dans une liste de groupes qu'ils sont autorisés à voir.
Comme avec Drupal lui-même, dans Organic Group différentes autorisations peuvent être affectés à différents rôles utilisateur. Cela permet aux membres du groupe d'exécuter différents types d'actions en fonction du contexte de groupe.

Les entitées d'adhésions OG

Les entitées qui assure les liens d'adhésions entre groupes et utilisateurs.

Lors de la manipulation d'entités (hors utilisateurs) en temps que contenu de groupe, donc associé à un groupe, on utilise le stockage par défaut d'un champ de référence à une entité. La seule information que nous gérons est que le contenu de groupe fait référence à un groupe.

Cependant, avec une entité utilisateur, nous reconnaissons qu'il s'agit d'un cas particulier. Il ne suffira pas simplement de conserver la référence entre l'utilisateur et le contenu de groupe, ce qui risquerait d'omettre des informations cruciales telles que: l'état de l'appartenance de l'utilisateur dans le groupe (actif, en attente ou bloqué), le moment de la création de l'adhésion, le rôle de OG de l'utilisateur dans le groupe, etc.

Pour ces méta-données, nous utilisons l'entité OgMembership, à laquelle peuvent etre associés des champs et qui est toujours utilisées pour connecter un utilisateur et un groupe. Il ne peut pas y avoir d'entité OgMembership reliant deux entités non-utilisateurs.

La création d'une telle relation est faite par exemple de la facon suivante:

$membership = OgMembership::create(['type' => \Drupal\og\OgMembershipInterface::TYPE_DEFAULT]);
$membership
->setUser(2)
->setEntityId(1)
->setGroupEntityType('node')
->setFieldName(OgGroupAudienceHelper::DEFAULT_FIELD)
->save();
Remarquez comment la relation de l'utilisateur au groupe comprend également le nom du champ d'audience OG par lequel cette association a été faite. Comme cela, nous sommes en mesure de gerer des types d'adhésion différents telle que celle fournie par défaut ou un «abonnement premium» qui peut, par exemple, expiré après un certain laps de temps (la logique d'expiration des adhésions citée dans l'exemple est hors de portée du noyau OG).

Cette séparation de champ permet d'avoir plusieurs champs d'audience OG attachées à l'utilisateur où chaque groupe auquel ils sont associés peut être le résultat de types d'adhésion différentes.

INSTALLATION DRUPAL 8.x

Notez que ceci est un guide de démarrage. Les noms des types de contenus, groupes et contenus de groupes donnés sont des suggestions et servent à une méthode rapide de démmarage pour Organic Group.

  1. Activez les modules OG et OG UI.
  2. Créez un nouveau type de contenu par admin/structure/types/add. Nommez le "Groupe" et définissez le en temps que type de groupe.
  3. Créez un second type de contenu. Nommez le "Contenu de Groupe", et définissez le comme type de contenu de groupe.
  4. Ajoutez un Groupe en vous rendant à l'adresse node/add/groupe. Nommez le "Groupe 1" et activez le comme groupe par le biais du champ "type de groupe".
  5. Ajoutez un Contenu de groupe en vous rendant à l'adresse node/add/contenu-de-groupe. Dans le champ d'adhésion de groupe, sélectionnez "groupe 1". Dans la vue du contenu de groupe, un lien est ajoutée vers le groupe.
  6. Cliquez sur le lien de groupe. Dans la vue du groupe, un nouvel onglet est ajouté, nommé Groupe
  7. Click on the Group tab. You will be redirected to the group administration area. Note that this is the administration of First group only. It will not affect existing or new groups which will be created on the site.
  8. You are now presented with different actions you can perform within the group. Such as add group members, add roles, and set member permissions. You will notice that these options have the same look and feel as Drupal core in matters relating to management of roles and permissions.
  9. You can enable your privileged users to subscribe to a group by providing a 'Subscribe' link. (Subscribing is the act of associating a user with a group.) To show this subscribe link: 9.1 Make sure you have the Group UI module enabled 9.2 Go to admin/config/group/permissions and make sure that the "Subscribe user to group" permission is given to the appropriate user-roles. 9.3 Navigate to the "manage display" tab of your content type (admin/structure/types/manage/group/display) and choose the Group subscription format for the Group type field. 9.4 Back in the group view you will now notice a 'Subscribe' link (If you are the group administrator it will say "You are the group manager").
  10. In order to associate other entities with group or group content, navigate to Organic Groups field settings", in admin/config/group/fields.
  11. In order to define default permissions for groups that are newly created or to edit permissions on all existing groups, navigate to the Group default permissions page. Important permissions in this page are the ones under the administer section. These permissions are what enable group admins to have granular control over their own group. This means, that if you as the site admin, don't want to allow group admins to control who can edit nodes in their own group, you need to uncheck those permissions.

DEVELOPERS & SITE BUILDERS

  • Views integration: There are some default views that ship with the module. Follow those views configuration in terms of best practice (e.g. adding a relationship to the group-membership entity instead of querying directly the group-audience field).
  • Token integration: Enable the entity-tokens module that ships with Entity API module.
  • Rules integration: Organic groups is shipped with a Rules configuration that allows simple notification. You can disable it or clone and change its behaviour.
  • Devel generate integration: Enable devel-generate module to create dummy groups and groups content.
  • You may craft your own URLs to prepopulate the group-audience fields (e.g. node/add/post?field_group_audience=1 to prepopulate reference to node ID 1), using the "Entity reference prepopulate" module http://drupal.org/project/entityreference_prepopulate and configuring the correct settings in the field UI. Read more about it in Entity reference prepopulate's README file. Further more, when Entity reference prepopulate module is enabled the node "create" permissions will be enabled even for non-members. In order to allow a non member to create a node to a group they don't belong to, you should craft the URL in the same way. OG will recognize this situation and add the group as a valid option under the "My groups" widget.
  • When deleting groups, it is possible to delete orphan group-content, or move it under another group. In order to do it in a scalable way, enable the "Use queue" option, and process it using for example: drush queue-run og_membership_orphans

API

// Define the "Page" node type as group. \Drupal\og\Og::groupManager()->addGroup('node', 'page'); // Add og audience field to "Article" node type, thus making is a group content. \Drupal\og\Og::createField(\Drupal\og\OgGroupAudienceHelper::DEFAULT_FIELD, 'node', 'article');

FAQ

Q: How should I update from Drupal 6? A: Run update.php; Enable the og-migrate module and execute all the migration plugins.

Q: How should I update from a previous Drupal 7 release (e.g. 7.x-1.0 to 7.x-1.1)? A: Same as updating from Drupal 6 -- Run update.php; If requested enable the og-migrate module and execute all the migration plugins.

Q: How do I use OG tokens with pathauto module to craft the url alias. A: After enabling entity-tokens module you will have some tokens exposes by Organic groups. However you are not able to do something like [node:og_membership(1):group:label]. See http://drupal.org/node/1088538#comment-4376910

Q: Must I use Panels module along with Organic groups? A: No. However note that the maintainer of the module highly recommends using it, and considers it as good practice.

CREDITS

  • Organic groups for Drupal 5 and 6 authored by Moshe Weitzman -
  • Current project maintainer and Drupal 7 author is Amitai Burstein (Amitaibu) - gizra.com

Ajouter un commentaire

CAPTCHA

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Select all images with trees:
  • Français
  • English
Creative Commons Licence