annotate core/modules/field_layout/field_layout.module @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /**
Chris@0 4 * @file
Chris@0 5 * Provides hook implementations for Field Layout.
Chris@0 6 */
Chris@0 7
Chris@0 8 use Drupal\Core\Entity\ContentEntityFormInterface;
Chris@0 9 use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
Chris@0 10 use Drupal\Core\Entity\EntityInterface;
Chris@0 11 use Drupal\Core\Form\FormStateInterface;
Chris@0 12 use Drupal\Core\Routing\RouteMatchInterface;
Chris@0 13 use Drupal\field_layout\Display\EntityDisplayWithLayoutInterface;
Chris@0 14 use Drupal\field_layout\Entity\FieldLayoutEntityFormDisplay;
Chris@0 15 use Drupal\field_layout\Entity\FieldLayoutEntityViewDisplay;
Chris@0 16 use Drupal\field_layout\FieldLayoutBuilder;
Chris@0 17 use Drupal\field_layout\Form\FieldLayoutEntityFormDisplayEditForm;
Chris@0 18 use Drupal\field_layout\Form\FieldLayoutEntityViewDisplayEditForm;
Chris@0 19
Chris@0 20 /**
Chris@0 21 * Implements hook_help().
Chris@0 22 */
Chris@0 23 function field_layout_help($route_name, RouteMatchInterface $route_match) {
Chris@0 24 switch ($route_name) {
Chris@0 25 case 'help.page.field_layout':
Chris@0 26 $output = '<h3>' . t('About') . '</h3>';
Chris@0 27 $output .= '<p>' . t('The Field Layout module allows you to arrange fields into regions on forms and displays of entities such as nodes and users.') . '</p>';
Chris@0 28 $output .= '<p>' . t('For more information, see the <a href=":field-layout-documentation">online documentation for the Field Layout module</a>.', [':field-layout-documentation' => 'https://www.drupal.org/documentation/modules/field_layout']) . '</p>';
Chris@0 29 return $output;
Chris@0 30 }
Chris@0 31 }
Chris@0 32
Chris@0 33 /**
Chris@0 34 * Implements hook_entity_type_alter().
Chris@0 35 */
Chris@0 36 function field_layout_entity_type_alter(array &$entity_types) {
Chris@0 37 /** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
Chris@0 38 $entity_types['entity_view_display']->setClass(FieldLayoutEntityViewDisplay::class);
Chris@0 39 $entity_types['entity_form_display']->setClass(FieldLayoutEntityFormDisplay::class);
Chris@0 40
Chris@0 41 // The form classes are only needed when Field UI is installed.
Chris@0 42 if (\Drupal::moduleHandler()->moduleExists('field_ui')) {
Chris@0 43 $entity_types['entity_view_display']->setFormClass('edit', FieldLayoutEntityViewDisplayEditForm::class);
Chris@0 44 $entity_types['entity_form_display']->setFormClass('edit', FieldLayoutEntityFormDisplayEditForm::class);
Chris@0 45 }
Chris@0 46 }
Chris@0 47
Chris@0 48 /**
Chris@0 49 * Implements hook_entity_view_alter().
Chris@0 50 */
Chris@0 51 function field_layout_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
Chris@0 52 if ($display instanceof EntityDisplayWithLayoutInterface) {
Chris@17 53 \Drupal::classResolver(FieldLayoutBuilder::class)->buildView($build, $display);
Chris@0 54 }
Chris@0 55 }
Chris@0 56
Chris@0 57 /**
Chris@0 58 * Implements hook_form_alter().
Chris@0 59 */
Chris@0 60 function field_layout_form_alter(&$form, FormStateInterface $form_state, $form_id) {
Chris@0 61 $form_object = $form_state->getFormObject();
Chris@0 62 if ($form_object instanceof ContentEntityFormInterface && $display = $form_object->getFormDisplay($form_state)) {
Chris@0 63 if ($display instanceof EntityDisplayWithLayoutInterface) {
Chris@17 64 \Drupal::classResolver(FieldLayoutBuilder::class)->buildForm($form, $display);
Chris@0 65 }
Chris@0 66 }
Chris@0 67 }