소스 검색

more group (bourgeons) configs

bach 2 년 전
부모
커밋
f9e76d4e4c

+ 1 - 1
src/composer.json

@@ -25,7 +25,7 @@
         "drupal/flexible_permissions": "@beta",
         "drupal/genpass": "^1.1",
         "drupal/graphql": "4.x-dev@dev",
-        "drupal/group": "^3.0@beta",
+        "drupal/group": "3.0.x-dev@dev",
         "drupal/mail_login": "^2.6",
         "drupal/paragraphs": "^1.15",
         "drupal/restui": "^1.21",

+ 10 - 13
src/composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "738ea5aca8b978a6f7588d32987b2071",
+    "content-hash": "5365133aecbc598c646688e7709f48d0",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -5530,17 +5530,11 @@
         },
         {
             "name": "drupal/group",
-            "version": "3.0.0-beta3",
+            "version": "dev-3.0.x",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/group.git",
-                "reference": "3.0.0-beta3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/group-3.0.0-beta3.zip",
-                "reference": "3.0.0-beta3",
-                "shasum": "87717e1c5defe6157435683bb4ff052c02293863"
+                "reference": "cf02cb68fc355ff4221910e3d68e128252b1bb81"
             },
             "require": {
                 "drupal/core": "^9 || ^10",
@@ -5549,12 +5543,15 @@
             },
             "type": "drupal-module",
             "extra": {
+                "branch-alias": {
+                    "dev-3.0.x": "3.0.x-dev"
+                },
                 "drupal": {
-                    "version": "3.0.0-beta3",
-                    "datestamp": "1661862170",
+                    "version": "3.0.0-beta3+1-dev",
+                    "datestamp": "1662110070",
                     "security-coverage": {
                         "status": "not-covered",
-                        "message": "Beta releases are not covered by Drupal security advisories."
+                        "message": "Dev releases are not covered by Drupal security advisories."
                     }
                 }
             },
@@ -14038,7 +14035,7 @@
         "drupal/audiofield": 20,
         "drupal/flexible_permissions": 10,
         "drupal/graphql": 20,
-        "drupal/group": 10,
+        "drupal/group": 20,
         "drupal/typed_data": 20,
         "drupal/autocomplete_deluxe": 5,
         "drupal/better_exposed_filters": 10,

+ 6 - 0
src/config/sync/amswap.amswapconfig.yml

@@ -5,3 +5,9 @@ role_menu_pairs:
   -
     role: admin
     menu: administrator
+  -
+    role: group_admin
+    menu: administrator
+  -
+    role: group_member
+    menu: administrator

+ 6 - 28
src/config/sync/core.entity_form_display.group_relationship.bourgeon-group_membership.default.yml

@@ -5,8 +5,6 @@ dependencies:
   config:
     - field.field.group_relationship.bourgeon-group_membership.group_roles
     - group.relationship_type.bourgeon-group_membership
-  module:
-    - path
 id: group_relationship.bourgeon-group_membership.default
 targetEntityType: group_relationship
 bundle: bourgeon-group_membership
@@ -14,7 +12,7 @@ mode: default
 content:
   entity_id:
     type: entity_reference_autocomplete
-    weight: 1
+    weight: 0
     region: content
     settings:
       match_operator: CONTAINS
@@ -24,31 +22,11 @@ content:
     third_party_settings: {  }
   group_roles:
     type: options_buttons
-    weight: 3
-    region: content
-    settings: {  }
-    third_party_settings: {  }
-  langcode:
-    type: language_select
-    weight: 0
-    region: content
-    settings:
-      include_locked: true
-    third_party_settings: {  }
-  path:
-    type: path
-    weight: 2
+    weight: 1
     region: content
     settings: {  }
     third_party_settings: {  }
-  uid:
-    type: entity_reference_autocomplete
-    weight: 4
-    region: content
-    settings:
-      match_operator: CONTAINS
-      match_limit: 10
-      size: 60
-      placeholder: ''
-    third_party_settings: {  }
-hidden: {  }
+hidden:
+  langcode: true
+  path: true
+  uid: true

+ 9 - 2
src/config/sync/core.entity_view_display.group_relationship.bourgeon-group_membership.default.yml

@@ -10,16 +10,23 @@ targetEntityType: group_relationship
 bundle: bourgeon-group_membership
 mode: default
 content:
+  entity_id:
+    type: entity_reference_label
+    label: above
+    settings:
+      link: true
+    third_party_settings: {  }
+    weight: 0
+    region: content
   group_roles:
     type: entity_reference_label
     label: above
     settings:
       link: false
     third_party_settings: {  }
-    weight: -4
+    weight: 1
     region: content
 hidden:
-  entity_id: true
   langcode: true
   search_api_excerpt: true
   uid: true

+ 17 - 0
src/config/sync/group.relationship_type.bourgeon-group_node-concernement.yml

@@ -0,0 +1,17 @@
+uuid: c9499d4c-271f-4de2-80aa-9b676838a14f
+langcode: fr
+status: true
+dependencies:
+  config:
+    - group.type.bourgeon
+    - node.type.concernement
+  module:
+    - gnode
+    - node
+id: bourgeon-group_node-concernement
+group_type: bourgeon
+content_plugin: 'group_node:concernement'
+plugin_config:
+  group_cardinality: 0
+  entity_cardinality: 1
+  use_creation_wizard: false

+ 17 - 0
src/config/sync/group.relationship_type.bourgeon-group_node-entite.yml

@@ -0,0 +1,17 @@
+uuid: 0a5ed664-438a-4434-9bec-00dd1402daef
+langcode: fr
+status: true
+dependencies:
+  config:
+    - group.type.bourgeon
+    - node.type.entite
+  module:
+    - gnode
+    - node
+id: bourgeon-group_node-entite
+group_type: bourgeon
+content_plugin: 'group_node:entite'
+plugin_config:
+  group_cardinality: 0
+  entity_cardinality: 1
+  use_creation_wizard: false

+ 12 - 0
src/config/sync/group.role.bourgeon-admin_indiv.yml

@@ -0,0 +1,12 @@
+uuid: 21139a98-5b43-45a4-8c43-d9d134a6e492
+langcode: fr
+status: true
+dependencies: {  }
+id: bourgeon-admin_indiv
+label: admin
+weight: null
+admin: true
+scope: individual
+global_role: null
+group_type: bourgeon
+permissions: {  }

+ 6 - 0
src/config/sync/group.role.bourgeon-member.yml

@@ -12,3 +12,9 @@ group_type: bourgeon
 permissions:
   - 'view group'
   - 'view group_membership relationship'
+  - 'create group_node:concernement entity'
+  - 'view unpublished group_node:concernement entity'
+  - 'view group_node:concernement entity'
+  - 'create group_node:entite entity'
+  - 'view unpublished group_node:entite entity'
+  - 'access group_node overview'

+ 20 - 0
src/config/sync/group.role.bourgeon-member_indiv.yml

@@ -0,0 +1,20 @@
+uuid: d5b298ce-ff97-4b13-884d-959cff923a7a
+langcode: fr
+status: true
+dependencies: {  }
+id: bourgeon-member_indiv
+label: member
+weight: null
+admin: false
+scope: individual
+global_role: null
+group_type: bourgeon
+permissions:
+  - 'view group'
+  - 'view group_membership relationship'
+  - 'access group_node overview'
+  - 'create group_node:concernement entity'
+  - 'view unpublished group_node:concernement entity'
+  - 'view group_node:concernement entity'
+  - 'create group_node:entite entity'
+  - 'view unpublished group_node:entite entity'

+ 2 - 2
src/config/sync/group.type.bourgeon.yml

@@ -6,6 +6,6 @@ id: bourgeon
 label: Bourgeon
 description: ''
 new_revision: true
-creator_membership: true
-creator_wizard: true
+creator_membership: false
+creator_wizard: false
 creator_roles: {  }

+ 20 - 0
src/config/sync/user.role.group_admin.yml

@@ -2,18 +2,38 @@ uuid: 0dd28526-9c5f-46ce-a40d-8889503e420b
 langcode: fr
 status: true
 dependencies:
+  config:
+    - node.type.concernement
+    - node.type.entite
   module:
     - administerusersbyrole
+    - node
     - role_delegation
+    - system
+    - toolbar
 id: group_admin
 label: 'group admin'
 weight: -3
 is_admin: null
 permissions:
+  - 'access administration pages'
+  - 'access toolbar'
   - 'access users overview'
   - 'assign group_member role'
   - 'cancel users with role group_member'
+  - 'create concernement content'
+  - 'create entite content'
   - 'create users'
+  - 'edit own concernement content'
+  - 'edit own entite content'
+  - 'edit users by role'
   - 'edit users with role group_member'
+  - 'revert concernement revisions'
+  - 'revert entite revisions'
   - 'role-assign users with role group_member'
+  - 'view concernement revisions'
+  - 'view entite revisions'
+  - 'view own unpublished content'
+  - 'view the administration theme'
+  - 'view users by role'
   - 'view users with role group_member'

+ 21 - 2
src/config/sync/user.role.group_member.yml

@@ -1,9 +1,28 @@
 uuid: b00d65da-067b-449f-85e1-8b38ac043348
 langcode: fr
 status: true
-dependencies: {  }
+dependencies:
+  config:
+    - node.type.concernement
+    - node.type.entite
+  module:
+    - node
+    - system
+    - toolbar
 id: group_member
 label: 'group member'
 weight: -2
 is_admin: null
-permissions: {  }
+permissions:
+  - 'access administration pages'
+  - 'access toolbar'
+  - 'create concernement content'
+  - 'create entite content'
+  - 'edit own concernement content'
+  - 'edit own entite content'
+  - 'revert concernement revisions'
+  - 'revert entite revisions'
+  - 'view concernement revisions'
+  - 'view entite revisions'
+  - 'view own unpublished content'
+  - 'view the administration theme'

+ 3 - 0
src/web/modules/custom/ouatt_graphql/graphql/ouatt_extension.base.graphqls

@@ -55,6 +55,7 @@ type Group {
   description: String
   owner: User
   members: [User]
+  concernements: [Concernement]
 }
 
 # type GroupMember {
@@ -67,6 +68,8 @@ type User {
   email: String
   username: String
   roles: [String]
+  concernements: [Concernement]
+  groups: [Group]
 }
 
 # type Role {

+ 54 - 10
src/web/modules/custom/ouatt_graphql/src/Plugin/GraphQL/SchemaExtension/OuattSchemaExtension.php

@@ -536,17 +536,20 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
       )
     );
 
-    
-    // // GroupMembers
-    // $registry->addFieldResolver('GroupMember', 'id',
-    //   $builder->produce('entity_id')
-    //     ->map('entity', $builder->fromParent())
-    // );
-
-    // $registry->addFieldResolver('GroupMember', 'user',
-    //   $builder->produce('entity_id')
-    //     ->map('entity', $builder->fromParent())
+    // $registry->addFieldResolver('Group', 'concernements',
+    //   $builder->compose(
+    //     $builder->callback(function ($parent, $args) {
+    //       $memberships = $parent->getMembers();
+    //       $users = [];
+    //       foreach ($memberships as $member) {
+    //         $users[] = $member->getUser();
+    //       }
+    //       return $users;
+    //     }),
+
+    //   )
     // );
+    
   }
 
   //    __  __              
@@ -592,6 +595,47 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
     //   $builder->produce('entity_label')
     //     ->map('entity', $builder->fromParent())
     // );
+
+    $registry->addFieldResolver('User', 'concernements',
+      $builder->compose(
+        $builder->callback(function($parent, $arg){
+          $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
+          $query = $entity_storage->getQuery()
+            ->condition('type', ['concernement'], 'IN')
+            ->condition('uid', $parent->id())
+            ->accessCheck(TRUE);
+          $results = $query->execute();
+          return $results;
+        }),
+        $builder->produce('entity_load_multiple')
+        ->map('type', $builder->fromValue('node'))
+        ->map('ids', $builder->fromParent())
+      )
+    );
+    
+    $registry->addFieldResolver('User', 'groups',
+      $builder->compose(
+        $builder->callback(function($parent, $arg){
+          $group_relationship_storage = \Drupal::entityTypeManager()->getStorage('group_relationship');
+          
+          $query = $group_relationship_storage->getQuery()
+            ->condition('entity_id', $parent->id())
+            ->accessCheck(TRUE);
+          $group_relationship_ids = $query->execute();
+          
+          $group_relationships = $group_relationship_storage->loadMultiple($group_relationship_ids);
+          
+          $group_ids = [];
+          foreach ($group_relationships as $group_relationship) {
+            $group_ids[] = $group_relationship->getGroupId();
+          }
+          return $group_ids;
+        }),
+        $builder->produce('entity_load_multiple')
+        ->map('type', $builder->fromValue('group'))
+        ->map('ids', $builder->fromParent())
+      )
+    );
     
   }