You are here

class GroupContentMenu in Group Content Menu 8

Same name in this branch
  1. 8 src/Entity/GroupContentMenu.php \Drupal\group_content_menu\Entity\GroupContentMenu
  2. 8 src/Plugin/GroupContentEnabler/GroupContentMenu.php \Drupal\group_content_menu\Plugin\GroupContentEnabler\GroupContentMenu

Provides a content enabler for group menus.

Plugin annotation


@GroupContentEnabler(
  id = "group_content_menu",
  label = @Translation("Group content menu"),
  description = @Translation("Adds group menus and menu items to groups."),
  entity_type_id = "group_content_menu",
  entity_access = TRUE,
  reference_label = @Translation("Title"),
  reference_description = @Translation("The title of the menu to add to the group"),
  deriver = "Drupal\group_content_menu\Plugin\GroupContentEnabler\GroupContentMenuDeriver",
  handlers = {
    "permission_provider" = "Drupal\group_content_menu\Plugin\GroupContentMenuPermissionProvider",
  }
)

Hierarchy

Expanded class hierarchy of GroupContentMenu

File

src/Plugin/GroupContentEnabler/GroupContentMenu.php, line 28

Namespace

Drupal\group_content_menu\Plugin\GroupContentEnabler
View source
class GroupContentMenu extends GroupContentEnablerBase {

  /**
   * Retrieves the menu type this plugin supports.
   *
   * @return \Drupal\Core\Entity\EntityInterface
   *   The menu type this plugin supports.
   */
  protected function getMenuType() {
    return GroupContentMenuType::load($this
      ->getEntityBundle());
  }

  /**
   * {@inheritdoc}
   */
  public function getGroupOperations(GroupInterface $group) {
    $account = \Drupal::currentUser();
    $operations = [];
    $url = Url::fromRoute('entity.group_content_menu.collection', [
      'group' => $group
        ->id(),
    ]);
    if ($url
      ->access($account)) {
      $operations['group-content-menu-collection'] = [
        'title' => $this
          ->t('Edit group menus'),
        'url' => $url,
        'weight' => 100,
      ];
    }
    return $operations;
  }

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    $config = parent::defaultConfiguration();
    $config['group_cardinality'] = 1;
    $config['entity_cardinality'] = 1;
    $config['auto_create_group_menu'] = FALSE;
    $config['auto_create_home_link'] = FALSE;
    $config['auto_create_home_link_title'] = 'Home';
    return $config;
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    $form = parent::buildConfigurationForm($form, $form_state);
    $configuration = $this
      ->getConfiguration();

    // Disable the entity and group cardinality field as the functionality of
    // this module relies on a cardinality of 1. We don't just hide it, though,
    // to keep a UI that's consistent with other content enabler plugins.
    $info = $this
      ->t("This field has been disabled by the plugin to guarantee the functionality that's expected of it.");
    $form['group_cardinality']['#disabled'] = TRUE;
    $form['group_cardinality']['#description'] .= '<br /><em>' . $info . '</em>';
    $form['entity_cardinality']['#disabled'] = TRUE;
    $form['entity_cardinality']['#description'] .= '<br /><em>' . $info . '</em>';
    $form['auto_create_group_menu'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Automatically create a menu when a group is created.'),
      '#description' => $this
        ->t('The menu will be added to the new group as a group menu. The menu will be deleted when group is deleted.'),
      '#default_value' => $configuration['auto_create_group_menu'],
    ];
    $form['auto_create_home_link'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Automatically create a "Home" link for the menu.'),
      '#description' => $this
        ->t('The "Home" link will link to the canonical URL of the group.'),
      '#default_value' => $configuration['auto_create_home_link'],
      '#states' => [
        'visible' => [
          ':input[name="auto_create_group_menu"]' => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
    $form['auto_create_home_link_title'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Link title'),
      '#default_value' => $configuration['auto_create_home_link_title'],
      '#required' => TRUE,
      '#states' => [
        'visible' => [
          ':input[name="auto_create_home_link"]' => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  protected function getGroupContentPermissions() {
    $plugin_id = $this
      ->getPluginId();
    $permissions["create {$plugin_id} content"] = [
      'title' => 'Relate menu',
      'description' => 'Allows you to relate a menu to the group.',
    ];
    return $permissions;
  }

  /**
   * {@inheritdoc}
   */
  protected function getTargetEntityPermissions() {

    // No special permissions.
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    $dependencies = parent::calculateDependencies();
    $dependencies['config'][] = 'group_content_menu.group_content_menu_type.' . $this
      ->getEntityBundle();
    return $dependencies;
  }

  /**
   * {@inheritdoc}
   */
  public function postInstall() {
    parent::postInstall();

    // Rebuild route access to pick up new create menu route permissions.
    \Drupal::service("router.builder")
      ->rebuild();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
GroupContentEnablerBase::$groupTypeId protected property The ID of group type this plugin was instantiated for.
GroupContentEnablerBase::$_permissions private property Backwards compatible permission array.
GroupContentEnablerBase::checkAccess public function Checks access to an operation on a given group content entity. Overrides GroupContentEnablerInterface::checkAccess
GroupContentEnablerBase::createAccess public function Performs access check for the create operation. Overrides GroupContentEnablerInterface::createAccess
GroupContentEnablerBase::createEntityAccess public function Performs access check for the create target entity operation. Overrides GroupContentEnablerInterface::createEntityAccess
GroupContentEnablerBase::definesEntityAccess public function Returns whether this plugin defines entity access. Overrides GroupContentEnablerInterface::definesEntityAccess
GroupContentEnablerBase::deleteAccess protected function Performs access check for the delete operation.
GroupContentEnablerBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
GroupContentEnablerBase::getContentLabel public function Retrieves the label for a piece of group content. Overrides GroupContentEnablerInterface::getContentLabel
GroupContentEnablerBase::getContentTypeConfigId public function Returns a safe, unique configuration ID for a group content type. Overrides GroupContentEnablerInterface::getContentTypeConfigId
GroupContentEnablerBase::getContentTypeDescription public function Returns the administrative description for a group content type. Overrides GroupContentEnablerInterface::getContentTypeDescription
GroupContentEnablerBase::getContentTypeLabel public function Returns the administrative label for a group content type. Overrides GroupContentEnablerInterface::getContentTypeLabel
GroupContentEnablerBase::getDescription public function Returns the administrative description for the plugin. Overrides GroupContentEnablerInterface::getDescription
GroupContentEnablerBase::getEntityBundle public function Returns the entity bundle the plugin supports. Overrides GroupContentEnablerInterface::getEntityBundle
GroupContentEnablerBase::getEntityCardinality public function Returns the amount of times the same content can be added to a group. Overrides GroupContentEnablerInterface::getEntityCardinality
GroupContentEnablerBase::getEntityReferenceDescription public function Returns the description for the entity reference field. Overrides GroupContentEnablerInterface::getEntityReferenceDescription
GroupContentEnablerBase::getEntityReferenceLabel public function Returns the label for the entity reference field. Overrides GroupContentEnablerInterface::getEntityReferenceLabel
GroupContentEnablerBase::getEntityReferenceSettings public function Returns a list of entity reference field settings. Overrides GroupContentEnablerInterface::getEntityReferenceSettings 1
GroupContentEnablerBase::getEntityType protected function Returns the entity type definition the plugin supports.
GroupContentEnablerBase::getEntityTypeId public function Returns the entity type ID the plugin supports. Overrides GroupContentEnablerInterface::getEntityTypeId
GroupContentEnablerBase::getGroupCardinality public function Returns the amount of groups the same content can be added to. Overrides GroupContentEnablerInterface::getGroupCardinality
GroupContentEnablerBase::getGroupOperationsCacheableMetadata public function Provides the cacheable metadata for this plugin's group operations. Overrides GroupContentEnablerInterface::getGroupOperationsCacheableMetadata 1
GroupContentEnablerBase::getGroupType public function Returns the group type the plugin was instantiated for. Overrides GroupContentEnablerInterface::getGroupType
GroupContentEnablerBase::getGroupTypeId public function Returns the ID of the group type the plugin was instantiated for. Overrides GroupContentEnablerInterface::getGroupTypeId
GroupContentEnablerBase::getLabel public function Returns the administrative label for the plugin. Overrides GroupContentEnablerInterface::getLabel
GroupContentEnablerBase::getOperations public function Provides a list of operations for the content enabler plugin. Overrides GroupContentEnablerInterface::getOperations
GroupContentEnablerBase::getPermissions public function Provides a list of group permissions the plugin exposes. Overrides GroupContentEnablerInterface::getPermissions
GroupContentEnablerBase::getPrettyPathKey public function Returns the pretty path key for use in path aliases. Overrides GroupContentEnablerInterface::getPrettyPathKey
GroupContentEnablerBase::getProvider public function Returns the plugin provider. Overrides GroupContentEnablerInterface::getProvider
GroupContentEnablerBase::isCodeOnly public function Returns whether this plugin can only be (un)installed through code. Overrides GroupContentEnablerInterface::isCodeOnly
GroupContentEnablerBase::isEnforced public function Returns whether this plugin is always on. Overrides GroupContentEnablerInterface::isEnforced
GroupContentEnablerBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
GroupContentEnablerBase::submitConfigurationForm public function Only override this function if you need to do something specific to the submitted data before it is saved as configuration on the plugin. The data gets saved on the plugin in \Drupal\group\Entity\Form\GroupContentTypeForm. Overrides PluginFormInterface::submitConfigurationForm
GroupContentEnablerBase::updateAccess protected function Performs access check for the update operation.
GroupContentEnablerBase::validateConfigurationForm public function Form validation handler. Overrides PluginFormInterface::validateConfigurationForm
GroupContentEnablerBase::viewAccess protected function Performs access check for the view operation.
GroupContentEnablerBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase::__construct
GroupContentMenu::buildConfigurationForm public function Form constructor. Overrides GroupContentEnablerBase::buildConfigurationForm
GroupContentMenu::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides GroupContentEnablerBase::calculateDependencies
GroupContentMenu::defaultConfiguration public function Gets default configuration for this plugin. Overrides GroupContentEnablerBase::defaultConfiguration
GroupContentMenu::getGroupContentPermissions protected function Provides permissions for the group content entity; i.e. the relationship. Overrides GroupContentEnablerBase::getGroupContentPermissions
GroupContentMenu::getGroupOperations public function Provides a list of operations for a group. Overrides GroupContentEnablerBase::getGroupOperations
GroupContentMenu::getMenuType protected function Retrieves the menu type this plugin supports.
GroupContentMenu::getTargetEntityPermissions protected function Provides permissions for the actual entity being added to the group. Overrides GroupContentEnablerBase::getTargetEntityPermissions
GroupContentMenu::postInstall public function Runs tasks after the group content type for this plugin has been created. Overrides GroupContentEnablerBase::postInstall
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.