rabbit_hole-8.x-1.x-dev/rabbit_hole.module

rabbit_hole.module
<?php

/**
 * @file
 * Contains rabbit_hole.module.
 */

use Drupal\Core\Entity\EntityFormInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function rabbit_hole_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the rabbit_hole module.
    case 'help.page.rabbit_hole':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Basic functionality that is shared among the different Rabbit Hole modules.') . '</p>';
      return $output;

    default:
  }
}

/**
 * Handle general aspects of rabbit hole form submission.
 *
 * @param array $form
 *   The form.
 * @param \Drupal\Core\Form\FormStateInterface $form_state
 *   The state of the form.
 */
function _rabbit_hole_general_form_submit(array $form, FormStateInterface $form_state) {
  \Drupal::service('rabbit_hole.form_mangler')
    ->handleFormSubmit($form, $form_state);
}

/**
 * Implements hook_form_alter().
 */
function rabbit_hole_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $affected_types = \Drupal::service('plugin.manager.rabbit_hole_entity_plugin')
    ->loadSupportedEntityTypes();
  $affected_bundle_types = \Drupal::service('plugin.manager.rabbit_hole_entity_plugin')
    ->loadSupportedBundleEntityTypes();
  $affected_global_forms = \Drupal::service('plugin.manager.rabbit_hole_entity_plugin')
    ->loadSupportedGlobalForms();
  if ($form_state->getFormObject() instanceof EntityFormInterface) {
    $current_type = $form_state->getFormObject()->getEntity()->getEntityTypeId();
    $current_operation = $form_state->getFormObject()->getOperation();
    $disallowed_operations = [
      'delete', 'cancel', 'reset', 'layout_builder', 'replicate',
    ];
    $administer_permitted = \Drupal::currentUser()->hasPermission('rabbit hole administer ' . $current_type);

    $is_entity_form = in_array($current_type, $affected_types) && $administer_permitted && !in_array($current_operation, $disallowed_operations);
    $is_bundle_form = in_array($current_type, $affected_bundle_types) && !in_array($current_operation, $disallowed_operations);
    if ($is_entity_form || $is_bundle_form) {
      \Drupal::service('rabbit_hole.form_mangler')->addRabbitHoleOptionsToEntityForm(
        $form, $form_state->getFormObject()->getEntity(), $form_state, $form_id);
    }
  }
  elseif (array_key_exists($form_id, $affected_global_forms)) {
    \Drupal::service('rabbit_hole.form_mangler')->addRabbitHoleOptionsToGlobalForm(
       $form, $affected_global_forms[$form_id], $form_state, $form_id
    );
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc