webform_revisions.module in Config Entity Revisions 8.2
Same filename and directory in other branches
Webform revisions procedural hooks.
File
modules/webform_revisions/webform_revisions.moduleView source
<?php
/**
* @file
* Webform revisions procedural hooks.
*/
use Drupal\webform_revisions\Controller\WebformRevisionsController;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Form\FormStateInterface;
use Drupal\webform_revisions\Entity\WebformRevision;
use Drupal\webform_revisions\WebformRevisionsFormAlter;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
/**
* Implements hook_form_alter().
*/
function webform_revisions_form_alter(&$form, FormStateInterface $form_state, $form_id) {
WebformRevisionsFormAlter::FormAlter($form, $form_state, $form_id);
}
/**
* Implements hook_menu_local_tasks_alter().
*/
function webform_revisions_menu_local_tasks_alter(&$data, $route_name, RefinableCacheableDependencyInterface &$cacheability) {
// ISSUE:
// Devel routes do not use 'webform' parameter which throws the error below.
// Some mandatory parameters are missing ("webform") to generate a URL for
// route "entity.webform_submission.canonical"
//
// WORKAROUND:
// Make sure webform parameter is set for all routes.
if (strpos($route_name, 'entity.webform') === 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.webform') !== FALSE && isset($tab_route_parameters['webform'])) {
$url
->setRouteParameter('config_entity', $tab_route_parameters['webform']);
}
}
}
}
}
/**
* Perform alterations before a webform submission form is rendered.
*
* This hook is identical to hook_form_alter() but allows the
* hook_webform_submission_form_alter() function to be stored in a dedicated
* include file and it also allows the Webform module to implement webform alter
* logic on another module's behalf.
*
* @param array $form
* Nested array of form elements that comprise the webform.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form. The arguments that
* \Drupal::formBuilder()->getForm() was originally called with are available
* in the array $form_state->getBuildInfo()['args'].
* @param string $form_id
* String representing the webform's id.
*
* @see webform.honeypot.inc
* @see hook_form_BASE_FORM_ID_alter()
* @see hook_form_FORM_ID_alter()
*
* @ingroup form_api
*/
function webform_revisions_webform_submission_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
WebformRevisionsController::submissionFormAlter($form, $form_state, $form_id);
}
/**
* Implements hook_entity_base_field_info_alter().
*/
function webform_revisions_entity_base_field_info_alter(&$fields, EntityTypeInterface $entity_type) {
if ($entity_type
->id() == 'webform_submission') {
$fields['webform_revision'] = BaseFieldDefinition::create('entity_reference')
->setLabel('Webform revision')
->setName('webform_revision')
->setProvider('webform_revisions')
->setTargetEntityTypeId('config_entity_revisions')
->setTargetBundle(NULL)
->setTargetEntityTypeId('webform_submission');
}
}
/**
* Implements hook_entity_type_alter().
*/
function webform_revisions_entity_type_alter(&$entity_types) {
if (isset($entity_types['webform'])) {
$entity_types['webform']
->setClass('Drupal\\webform_revisions\\Entity\\WebformRevision')
->setFormClass('edit', 'Drupal\\webform_revisions\\WebformRevisionsEditForm')
->setStorageClass('Drupal\\webform_revisions\\WebformRevisionsStorage')
->setLinkTemplate('revisions', '/admin/structure/webforms/webform/{webform}/revisions')
->setLinkTemplate('revision', '/admin/structure/webforms/webform/{webform}/revision/{revision_id}')
->setHandlerClass('moderation', 'Drupal\\config_entity_revisions\\Entity\\Handler\\ConfigEntityRevisionsModerationHandler');
}
if (isset($entity_types['webform_submission'])) {
$entity_types['webform_submission']
->setClass('Drupal\\webform_revisions\\Entity\\WebformRevisionsSubmission');
$entity_types['webform_submission']
->setStorageClass('Drupal\\webform_revisions\\WebformRevisionsSubmissionStorage');
}
}
/**
* Implements hook_module_implements_alter().
*/
function webform_revisions_module_implements_alter(&$implementations, $hook) {
if ($hook == 'entity_type_alter' && isset($implementations['webform_revisions'])) {
$hookInit = $implementations['webform_revisions'];
unset($implementations['webform_revisions']);
$implementations = [
'webform_revisions' => $hookInit,
] + $implementations;
}
}
Functions
Name | Description |
---|---|
webform_revisions_entity_base_field_info_alter | Implements hook_entity_base_field_info_alter(). |
webform_revisions_entity_type_alter | Implements hook_entity_type_alter(). |
webform_revisions_form_alter | Implements hook_form_alter(). |
webform_revisions_menu_local_tasks_alter | Implements hook_menu_local_tasks_alter(). |
webform_revisions_module_implements_alter | Implements hook_module_implements_alter(). |
webform_revisions_webform_submission_form_alter | Perform alterations before a webform submission form is rendered. |