Commit 18683a9b authored by Nikolay Lobachev's avatar Nikolay Lobachev
Browse files

Issue #3304797: Update view and fix small erros found during the testing.

parent a10c16ff
Loading
Loading
Loading
Loading
+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
@@ -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
@@ -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:
@@ -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
@@ -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:
@@ -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
@@ -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:
@@ -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
@@ -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:
@@ -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
@@ -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:
@@ -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
@@ -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:
@@ -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
@@ -467,6 +401,7 @@ display:
          relationship: none
          group_type: group
          admin_label: ''
          plugin_id: dropbutton
          label: Operations
          exclude: false
          alter:
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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: {  }
@@ -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:
+5 −4
Original line number Diff line number Diff line
@@ -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;

@@ -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');
  }

  /**
@@ -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');
  }

  /**
+1 −1
Original line number Diff line number Diff line
@@ -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;

+20 −4
Original line number Diff line number Diff line
@@ -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;
@@ -25,6 +26,13 @@ final class RequestMembership extends FieldPluginBase {
   */
  protected $currentUser;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * RequestMembership constructor.
   *
@@ -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;
  }

  /**
@@ -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')
    );
  }

@@ -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');
    }