You are here

view_revisions.module in Config Entity Revisions 8.2

view_revisions hook functions.

File

modules/view_revisions/view_revisions.module
View source
<?php

/**
 * @file
 * view_revisions hook functions.
 */
use Drupal\view_revisions\Controller\ViewRevisionsController;
use Drupal\Core\Form\FormStateInterface;
use Drupal\view_revisions\Entity\ViewRevision;
use Drupal\view_revisions\ViewRevisionsFormAlter;
use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\view_revisions\ViewRevisionsRouteAlter;

/**
 * Implements hook_form_alter().
 */
function view_revisions_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  ViewRevisionsFormAlter::FormAlter($form, $form_state, $form_id);
}

/**
 * Implements hook_menu_local_tasks_alter().
 */
function view_revisions_menu_local_tasks_alter(&$data, $route_name, RefinableCacheableDependencyInterface &$cacheability) {
  if (strpos($route_name, 'entity.view') === 0) {
    foreach ($data['tabs'] as $tab_level) {
      foreach ($tab_level as $tab) {

        /** @var Drupal\Core\Url $url */
        $url = $tab['#link']['url'];
        $tab_route_name = $url
          ->getRouteName();
        $tab_route_parameters = $url
          ->getRouteParameters();
        if (strpos($tab_route_name, 'entity.view') !== FALSE && isset($tab_route_parameters['view'])) {
          $url
            ->setRouteParameter('config_entity', $tab_route_parameters['view']);
        }
      }
    }
  }
}

/**
 * Implements hook_entity_type_alter().
 */
function view_revisions_entity_type_alter(&$entity_types) {
  if (isset($entity_types['view'])) {
    $entity_types['view']
      ->setClass('Drupal\\view_revisions\\Entity\\ViewRevision')
      ->setFormClass('preview', 'Drupal\\view_revisions\\ViewRevisionsPreviewForm')
      ->setFormClass('edit', 'Drupal\\view_revisions\\ViewRevisionsEditForm')
      ->setStorageClass('Drupal\\view_revisions\\ViewRevisionsStorage')
      ->setLinkTemplate('revisions', '/admin/structure/views/view/{view}/revisions')
      ->setLinkTemplate('revision', '/admin/structure/views/view/{view}/revision/{revision_id}')
      ->setHandlerClass('moderation', 'Drupal\\config_entity_revisions\\Entity\\Handler\\ConfigEntityRevisionsModerationHandler');
  }
}

/**
 * Implements hook_entity_operation_alter().
 */
function view_revisions_entity_operation_alter(array &$operations, EntityInterface $entity) {
  if ($entity
    ->access('revisions') && $entity
    ->hasLinkTemplate('revisions')) {
    $operations['revisions'] = [
      'title' => t('Revisions'),
      'weight' => 100,
      'url' => $entity
        ->toUrl('revisions'),
    ];
  }
}