Loading config/optional/views.view.group_pending_members.yml +156 −155 Original line number Diff line number Diff line langcode: en status: true dependencies: enforced: module: - group - grequest module: - grequest - group - state_machine - user enforced: module: - group - grequest id: group_pending_members label: 'Group pending members' module: views Loading @@ -18,79 +19,12 @@ base_table: group_relationship_field_data base_field: id display: default: display_plugin: default id: default display_title: Master display_plugin: default position: 0 display_options: access: type: group_permission options: group_permission: 'administer membership requests' cache: type: tag options: { } query: type: views_query options: disable_sql_rewrite: false distinct: false replica: false query_comment: '' query_tags: { } exposed_form: type: basic options: submit_button: Apply reset_button: false reset_button_label: Reset exposed_sorts_label: 'Sort by' expose_sort_order: true sort_asc_label: Asc sort_desc_label: Desc pager: type: mini options: items_per_page: 10 offset: 0 id: 0 total_pages: null expose: items_per_page: false items_per_page_label: 'Items per page' items_per_page_options: '5, 10, 25, 50' items_per_page_options_all: false items_per_page_options_all_label: '- All -' offset: false offset_label: Offset tags: previous: ‹‹ next: ›› style: type: table options: grouping: { } row_class: '' default_row_class: true override: true sticky: false caption: '' summary: '' description: '' columns: label: label info: label: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' default: '-1' empty_table: false row: type: fields title: 'Group pending members' fields: approve_membership_request: id: approve_membership_request Loading @@ -99,6 +33,8 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content plugin_id: approve_membership_request label: 'Approve membership' exclude: true alter: Loading Loading @@ -143,8 +79,6 @@ display: text: 'Approve membership' output_url_as_text: false absolute: false entity_type: group_content plugin_id: approve_membership_request reject_membership_request: id: reject_membership_request table: group_relationship Loading @@ -152,6 +86,8 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content plugin_id: reject_membership_request label: 'Reject membership ' exclude: true alter: Loading Loading @@ -196,8 +132,6 @@ display: text: 'Reject membership' output_url_as_text: false absolute: false entity_type: group_content plugin_id: reject_membership_request name: id: name table: users_field_data Loading @@ -205,6 +139,9 @@ display: relationship: gc__user group_type: group admin_label: '' entity_type: user entity_field: name plugin_id: field label: Name exclude: false alter: Loading Loading @@ -260,9 +197,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: user entity_field: name plugin_id: field created: id: created table: group_relationship_field_data Loading @@ -270,6 +204,9 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: created plugin_id: field label: 'Requested on' exclude: false alter: Loading Loading @@ -327,9 +264,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: group_content entity_field: created plugin_id: field gid: id: gid table: group_relationship_field_data Loading @@ -337,6 +271,9 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: gid plugin_id: field label: 'Parent group' exclude: true alter: Loading Loading @@ -391,9 +328,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: group_content entity_field: gid plugin_id: field id: id: id table: group_relationship_field_data Loading @@ -401,6 +335,9 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: id plugin_id: field label: ID exclude: true alter: Loading Loading @@ -457,9 +394,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: group_content entity_field: id plugin_id: field dropbutton: id: dropbutton table: views Loading @@ -467,6 +401,7 @@ display: relationship: none group_type: group admin_label: '' plugin_id: dropbutton label: Operations exclude: false alter: Loading Loading @@ -508,6 +443,7 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true destination: true fields: approve_membership_request: approve_membership_request reject_membership_request: reject_membership_request Loading @@ -515,16 +451,101 @@ display: created: '0' gid: '0' id: '0' destination: true plugin_id: dropbutton pager: type: mini options: offset: 0 items_per_page: 10 total_pages: null id: 0 tags: next: ›› previous: ‹‹ expose: items_per_page: false items_per_page_label: 'Items per page' items_per_page_options: '5, 10, 25, 50' items_per_page_options_all: false items_per_page_options_all_label: '- All -' offset: false offset_label: Offset exposed_form: type: basic options: submit_button: Apply reset_button: false reset_button_label: Reset exposed_sorts_label: 'Sort by' expose_sort_order: true sort_asc_label: Asc sort_desc_label: Desc access: type: group_permission options: group_permission: 'administer membership requests' cache: type: tag options: { } empty: area_text_custom: id: area_text_custom table: views field: area_text_custom relationship: none group_type: group admin_label: '' plugin_id: text_custom empty: true content: 'No membership requests available.' tokenize: false sorts: { } arguments: gid: id: gid table: group_relationship_field_data field: gid relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: gid plugin_id: group_id default_action: 'access denied' exception: value: all title_enable: false title: All title_enable: true title: '{{ arguments.gid|placeholder }} pending members' default_argument_type: fixed default_argument_options: argument: '3' default_argument_skip_url: false summary_options: base_path: '' count: true override: false items_per_page: 25 summary: sort_order: asc number_of_records: 0 format: default_summary specify_validation: false validate: type: none fail: 'not found' validate_options: { } break_phrase: false not: false filters: grequest_status_value: id: grequest_status_value table: group_relationship__grequest_status table: group_content__grequest_status field: grequest_status_value relationship: none group_type: group admin_label: '' plugin_id: state_machine_state operator: in value: pending: pending Loading Loading @@ -557,23 +578,39 @@ display: default_group: All default_group_multiple: { } group_items: { } plugin_id: state_machine_state sorts: { } title: 'Group pending members' header: { } footer: { } empty: area_text_custom: id: area_text_custom table: views field: area_text_custom relationship: none group_type: group admin_label: '' empty: true tokenize: false content: 'No membership requests available.' plugin_id: text_custom style: type: table options: grouping: { } row_class: '' default_row_class: true columns: label: label default: '-1' info: label: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' override: true sticky: false summary: '' empty_table: false caption: '' description: '' row: type: fields query: type: views_query options: query_comment: '' disable_sql_rewrite: false distinct: false replica: false query_tags: { } relationships: gc__user: id: gc__user Loading @@ -582,50 +619,14 @@ display: relationship: none group_type: group admin_label: 'Group content User' entity_type: group_content plugin_id: group_content_to_entity required: true group_content_plugins: group_membership_request: group_membership_request group_membership: '0' entity_type: group_content plugin_id: group_content_to_entity arguments: gid: id: gid table: group_relationship_field_data field: gid relationship: none group_type: group admin_label: '' default_action: 'access denied' exception: value: all title_enable: false title: All title_enable: true title: '{{ arguments.gid|placeholder }} pending members' default_argument_type: fixed default_argument_options: argument: '3' default_argument_skip_url: false summary_options: base_path: '' count: true items_per_page: 25 override: false summary: sort_order: asc number_of_records: 0 format: default_summary specify_validation: false validate: type: none fail: 'not found' validate_options: { } break_phrase: false not: false entity_type: group_content entity_field: gid plugin_id: group_id header: { } footer: { } display_extenders: { } cache_metadata: max-age: -1 Loading @@ -638,9 +639,9 @@ display: - user.group_permissions tags: { } page_1: display_plugin: page id: page_1 display_title: Page display_plugin: page position: 1 display_options: display_extenders: { } Loading @@ -649,11 +650,11 @@ display: type: tab title: 'Membership requests' description: '' weight: 21 expanded: false menu_name: main parent: '' weight: 21 context: '0' menu_name: main cache_metadata: max-age: -1 contexts: Loading src/Controller/GroupMembershipRequestController.php +5 −4 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ use Drupal\Core\Session\AccountInterface; use Drupal\grequest\MembershipRequestManager; use Drupal\group\Entity\GroupContentInterface; use Drupal\group\Entity\GroupInterface; use Drupal\group\Entity\GroupRelationshipInterface; use Drupal\group\Plugin\Group\Relation\GroupRelationInterface; use Symfony\Component\DependencyInjection\ContainerInterface; Loading Loading @@ -88,8 +89,8 @@ class GroupMembershipRequestController extends ControllerBase { * @return array * A group approval membership form. */ public function approveMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-approve-membership'); public function approveMembership(GroupRelationshipInterface $group_content) { return $this->entityFormBuilder()->getForm($group_content, 'group-approve-membership'); } /** Loading @@ -101,8 +102,8 @@ class GroupMembershipRequestController extends ControllerBase { * @return array * A group rejection membership form. */ public function rejectMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-reject-membership'); public function rejectMembership(GroupRelationshipInterface $group_content) { return $this->entityFormBuilder()->getForm($group_content, 'group-reject-membership'); } /** Loading src/Plugin/views/field/MembershipEntityLink.php +1 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\grequest\Plugin\Group\Relation\GroupMembershipRequest; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; Loading src/Plugin/views/field/RequestMembership.php +20 −4 Original line number Diff line number Diff line Loading @@ -2,8 +2,9 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\grequest\Plugin\Group\Relation\GroupMembershipRequest; use Drupal\group\Entity\GroupInterface; use Drupal\views\Plugin\views\field\FieldPluginBase; use Drupal\views\ResultRow; Loading @@ -25,6 +26,13 @@ final class RequestMembership extends FieldPluginBase { */ protected $currentUser; /** * The entity type manager. * * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ protected $entityTypeManager; /** * RequestMembership constructor. * Loading @@ -36,10 +44,13 @@ final class RequestMembership extends FieldPluginBase { * The plugin implementation definition. * @param \Drupal\Core\Session\AccountInterface $current_user * The current user. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager. */ public function __construct(array $configuration, $plugin_id, $plugin_definition, AccountInterface $current_user) { public function __construct(array $configuration, $plugin_id, $plugin_definition, AccountInterface $current_user, EntityTypeManagerInterface $entity_type_manager) { parent::__construct($configuration, $plugin_id, $plugin_definition); $this->currentUser = $current_user; $this->entityTypeManager = $entity_type_manager; } /** Loading @@ -50,7 +61,8 @@ final class RequestMembership extends FieldPluginBase { $configuration, $plugin_id, $plugin_definition, $container->get('current_user') $container->get('current_user'), $container->get('entity_type.manager') ); } Loading Loading @@ -85,7 +97,11 @@ final class RequestMembership extends FieldPluginBase { return $build; } $membership_requests = $group->getRelationshipsByEntity($this->currentUser, 'group_membership_request'); $user = $this->entityTypeManager->getStorage('user')->load($this->currentUser->id()); if (empty($user)) { return $build; } $membership_requests = $group->getRelationshipsByEntity($user, 'group_membership_request'); if (!empty($group->getMember($this->currentUser))) { $build['#markup'] = $this->t('Already member'); } Loading Loading
config/optional/views.view.group_pending_members.yml +156 −155 Original line number Diff line number Diff line langcode: en status: true dependencies: enforced: module: - group - grequest module: - grequest - group - state_machine - user enforced: module: - group - grequest id: group_pending_members label: 'Group pending members' module: views Loading @@ -18,79 +19,12 @@ base_table: group_relationship_field_data base_field: id display: default: display_plugin: default id: default display_title: Master display_plugin: default position: 0 display_options: access: type: group_permission options: group_permission: 'administer membership requests' cache: type: tag options: { } query: type: views_query options: disable_sql_rewrite: false distinct: false replica: false query_comment: '' query_tags: { } exposed_form: type: basic options: submit_button: Apply reset_button: false reset_button_label: Reset exposed_sorts_label: 'Sort by' expose_sort_order: true sort_asc_label: Asc sort_desc_label: Desc pager: type: mini options: items_per_page: 10 offset: 0 id: 0 total_pages: null expose: items_per_page: false items_per_page_label: 'Items per page' items_per_page_options: '5, 10, 25, 50' items_per_page_options_all: false items_per_page_options_all_label: '- All -' offset: false offset_label: Offset tags: previous: ‹‹ next: ›› style: type: table options: grouping: { } row_class: '' default_row_class: true override: true sticky: false caption: '' summary: '' description: '' columns: label: label info: label: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' default: '-1' empty_table: false row: type: fields title: 'Group pending members' fields: approve_membership_request: id: approve_membership_request Loading @@ -99,6 +33,8 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content plugin_id: approve_membership_request label: 'Approve membership' exclude: true alter: Loading Loading @@ -143,8 +79,6 @@ display: text: 'Approve membership' output_url_as_text: false absolute: false entity_type: group_content plugin_id: approve_membership_request reject_membership_request: id: reject_membership_request table: group_relationship Loading @@ -152,6 +86,8 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content plugin_id: reject_membership_request label: 'Reject membership ' exclude: true alter: Loading Loading @@ -196,8 +132,6 @@ display: text: 'Reject membership' output_url_as_text: false absolute: false entity_type: group_content plugin_id: reject_membership_request name: id: name table: users_field_data Loading @@ -205,6 +139,9 @@ display: relationship: gc__user group_type: group admin_label: '' entity_type: user entity_field: name plugin_id: field label: Name exclude: false alter: Loading Loading @@ -260,9 +197,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: user entity_field: name plugin_id: field created: id: created table: group_relationship_field_data Loading @@ -270,6 +204,9 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: created plugin_id: field label: 'Requested on' exclude: false alter: Loading Loading @@ -327,9 +264,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: group_content entity_field: created plugin_id: field gid: id: gid table: group_relationship_field_data Loading @@ -337,6 +271,9 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: gid plugin_id: field label: 'Parent group' exclude: true alter: Loading Loading @@ -391,9 +328,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: group_content entity_field: gid plugin_id: field id: id: id table: group_relationship_field_data Loading @@ -401,6 +335,9 @@ display: relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: id plugin_id: field label: ID exclude: true alter: Loading Loading @@ -457,9 +394,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false entity_type: group_content entity_field: id plugin_id: field dropbutton: id: dropbutton table: views Loading @@ -467,6 +401,7 @@ display: relationship: none group_type: group admin_label: '' plugin_id: dropbutton label: Operations exclude: false alter: Loading Loading @@ -508,6 +443,7 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true destination: true fields: approve_membership_request: approve_membership_request reject_membership_request: reject_membership_request Loading @@ -515,16 +451,101 @@ display: created: '0' gid: '0' id: '0' destination: true plugin_id: dropbutton pager: type: mini options: offset: 0 items_per_page: 10 total_pages: null id: 0 tags: next: ›› previous: ‹‹ expose: items_per_page: false items_per_page_label: 'Items per page' items_per_page_options: '5, 10, 25, 50' items_per_page_options_all: false items_per_page_options_all_label: '- All -' offset: false offset_label: Offset exposed_form: type: basic options: submit_button: Apply reset_button: false reset_button_label: Reset exposed_sorts_label: 'Sort by' expose_sort_order: true sort_asc_label: Asc sort_desc_label: Desc access: type: group_permission options: group_permission: 'administer membership requests' cache: type: tag options: { } empty: area_text_custom: id: area_text_custom table: views field: area_text_custom relationship: none group_type: group admin_label: '' plugin_id: text_custom empty: true content: 'No membership requests available.' tokenize: false sorts: { } arguments: gid: id: gid table: group_relationship_field_data field: gid relationship: none group_type: group admin_label: '' entity_type: group_content entity_field: gid plugin_id: group_id default_action: 'access denied' exception: value: all title_enable: false title: All title_enable: true title: '{{ arguments.gid|placeholder }} pending members' default_argument_type: fixed default_argument_options: argument: '3' default_argument_skip_url: false summary_options: base_path: '' count: true override: false items_per_page: 25 summary: sort_order: asc number_of_records: 0 format: default_summary specify_validation: false validate: type: none fail: 'not found' validate_options: { } break_phrase: false not: false filters: grequest_status_value: id: grequest_status_value table: group_relationship__grequest_status table: group_content__grequest_status field: grequest_status_value relationship: none group_type: group admin_label: '' plugin_id: state_machine_state operator: in value: pending: pending Loading Loading @@ -557,23 +578,39 @@ display: default_group: All default_group_multiple: { } group_items: { } plugin_id: state_machine_state sorts: { } title: 'Group pending members' header: { } footer: { } empty: area_text_custom: id: area_text_custom table: views field: area_text_custom relationship: none group_type: group admin_label: '' empty: true tokenize: false content: 'No membership requests available.' plugin_id: text_custom style: type: table options: grouping: { } row_class: '' default_row_class: true columns: label: label default: '-1' info: label: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' override: true sticky: false summary: '' empty_table: false caption: '' description: '' row: type: fields query: type: views_query options: query_comment: '' disable_sql_rewrite: false distinct: false replica: false query_tags: { } relationships: gc__user: id: gc__user Loading @@ -582,50 +619,14 @@ display: relationship: none group_type: group admin_label: 'Group content User' entity_type: group_content plugin_id: group_content_to_entity required: true group_content_plugins: group_membership_request: group_membership_request group_membership: '0' entity_type: group_content plugin_id: group_content_to_entity arguments: gid: id: gid table: group_relationship_field_data field: gid relationship: none group_type: group admin_label: '' default_action: 'access denied' exception: value: all title_enable: false title: All title_enable: true title: '{{ arguments.gid|placeholder }} pending members' default_argument_type: fixed default_argument_options: argument: '3' default_argument_skip_url: false summary_options: base_path: '' count: true items_per_page: 25 override: false summary: sort_order: asc number_of_records: 0 format: default_summary specify_validation: false validate: type: none fail: 'not found' validate_options: { } break_phrase: false not: false entity_type: group_content entity_field: gid plugin_id: group_id header: { } footer: { } display_extenders: { } cache_metadata: max-age: -1 Loading @@ -638,9 +639,9 @@ display: - user.group_permissions tags: { } page_1: display_plugin: page id: page_1 display_title: Page display_plugin: page position: 1 display_options: display_extenders: { } Loading @@ -649,11 +650,11 @@ display: type: tab title: 'Membership requests' description: '' weight: 21 expanded: false menu_name: main parent: '' weight: 21 context: '0' menu_name: main cache_metadata: max-age: -1 contexts: Loading
src/Controller/GroupMembershipRequestController.php +5 −4 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ use Drupal\Core\Session\AccountInterface; use Drupal\grequest\MembershipRequestManager; use Drupal\group\Entity\GroupContentInterface; use Drupal\group\Entity\GroupInterface; use Drupal\group\Entity\GroupRelationshipInterface; use Drupal\group\Plugin\Group\Relation\GroupRelationInterface; use Symfony\Component\DependencyInjection\ContainerInterface; Loading Loading @@ -88,8 +89,8 @@ class GroupMembershipRequestController extends ControllerBase { * @return array * A group approval membership form. */ public function approveMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-approve-membership'); public function approveMembership(GroupRelationshipInterface $group_content) { return $this->entityFormBuilder()->getForm($group_content, 'group-approve-membership'); } /** Loading @@ -101,8 +102,8 @@ class GroupMembershipRequestController extends ControllerBase { * @return array * A group rejection membership form. */ public function rejectMembership(GroupRelationshipInterface $group_relationship) { return $this->entityFormBuilder()->getForm($group_relationship, 'group-reject-membership'); public function rejectMembership(GroupRelationshipInterface $group_content) { return $this->entityFormBuilder()->getForm($group_content, 'group-reject-membership'); } /** Loading
src/Plugin/views/field/MembershipEntityLink.php +1 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\grequest\Plugin\Group\Relation\GroupMembershipRequest; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; Loading
src/Plugin/views/field/RequestMembership.php +20 −4 Original line number Diff line number Diff line Loading @@ -2,8 +2,9 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\grequest\Plugin\Group\Relation\GroupMembershipRequest; use Drupal\group\Entity\GroupInterface; use Drupal\views\Plugin\views\field\FieldPluginBase; use Drupal\views\ResultRow; Loading @@ -25,6 +26,13 @@ final class RequestMembership extends FieldPluginBase { */ protected $currentUser; /** * The entity type manager. * * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ protected $entityTypeManager; /** * RequestMembership constructor. * Loading @@ -36,10 +44,13 @@ final class RequestMembership extends FieldPluginBase { * The plugin implementation definition. * @param \Drupal\Core\Session\AccountInterface $current_user * The current user. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager. */ public function __construct(array $configuration, $plugin_id, $plugin_definition, AccountInterface $current_user) { public function __construct(array $configuration, $plugin_id, $plugin_definition, AccountInterface $current_user, EntityTypeManagerInterface $entity_type_manager) { parent::__construct($configuration, $plugin_id, $plugin_definition); $this->currentUser = $current_user; $this->entityTypeManager = $entity_type_manager; } /** Loading @@ -50,7 +61,8 @@ final class RequestMembership extends FieldPluginBase { $configuration, $plugin_id, $plugin_definition, $container->get('current_user') $container->get('current_user'), $container->get('entity_type.manager') ); } Loading Loading @@ -85,7 +97,11 @@ final class RequestMembership extends FieldPluginBase { return $build; } $membership_requests = $group->getRelationshipsByEntity($this->currentUser, 'group_membership_request'); $user = $this->entityTypeManager->getStorage('user')->load($this->currentUser->id()); if (empty($user)) { return $build; } $membership_requests = $group->getRelationshipsByEntity($user, 'group_membership_request'); if (!empty($group->getMember($this->currentUser))) { $build['#markup'] = $this->t('Already member'); } Loading