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 }
|