Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /**
|
Chris@0
|
4 * @file
|
Chris@0
|
5 * Provides hook implementations for Layout Builder.
|
Chris@0
|
6 */
|
Chris@0
|
7
|
Chris@0
|
8 use Drupal\Core\Form\FormStateInterface;
|
Chris@0
|
9 use Drupal\Core\Routing\RouteMatchInterface;
|
Chris@0
|
10 use Drupal\Core\Url;
|
Chris@0
|
11 use Drupal\field\FieldConfigInterface;
|
Chris@0
|
12 use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay;
|
Chris@0
|
13 use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplayStorage;
|
Chris@0
|
14 use Drupal\layout_builder\Form\LayoutBuilderEntityViewDisplayForm;
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Implements hook_help().
|
Chris@0
|
18 */
|
Chris@0
|
19 function layout_builder_help($route_name, RouteMatchInterface $route_match) {
|
Chris@0
|
20 // Add help text to the Layout Builder UI.
|
Chris@0
|
21 if ($route_match->getRouteObject()->getOption('_layout_builder')) {
|
Chris@0
|
22 $output = '<p>' . t('This layout builder tool allows you to configure the layout of the main content area.') . '</p>';
|
Chris@0
|
23 if (\Drupal::currentUser()->hasPermission('administer blocks')) {
|
Chris@0
|
24 $output .= '<p>' . t('To manage other areas of the page, use the <a href="@block-ui">block administration page</a>.', ['@block-ui' => Url::fromRoute('block.admin_display')->toString()]) . '</p>';
|
Chris@0
|
25 }
|
Chris@0
|
26 else {
|
Chris@0
|
27 $output .= '<p>' . t('To manage other areas of the page, use the block administration page.') . '</p>';
|
Chris@0
|
28 }
|
Chris@0
|
29 return $output;
|
Chris@0
|
30 }
|
Chris@0
|
31
|
Chris@0
|
32 switch ($route_name) {
|
Chris@0
|
33 case 'help.page.layout_builder':
|
Chris@0
|
34 $output = '<h3>' . t('About') . '</h3>';
|
Chris@0
|
35 $output .= '<p>' . t('Layout Builder provides layout building utility.') . '</p>';
|
Chris@0
|
36 $output .= '<p>' . t('For more information, see the <a href=":layout-builder-documentation">online documentation for the Layout Builder module</a>.', [':layout-builder-documentation' => 'https://www.drupal.org/docs/8/core/modules/layout_builder']) . '</p>';
|
Chris@0
|
37 return $output;
|
Chris@0
|
38 }
|
Chris@0
|
39 }
|
Chris@0
|
40
|
Chris@0
|
41 /**
|
Chris@0
|
42 * Implements hook_entity_type_alter().
|
Chris@0
|
43 */
|
Chris@0
|
44 function layout_builder_entity_type_alter(array &$entity_types) {
|
Chris@0
|
45 /** @var \Drupal\Core\Entity\EntityTypeInterface[] $entity_types */
|
Chris@0
|
46 $entity_types['entity_view_display']
|
Chris@0
|
47 ->setClass(LayoutBuilderEntityViewDisplay::class)
|
Chris@0
|
48 ->setStorageClass(LayoutBuilderEntityViewDisplayStorage::class)
|
Chris@0
|
49 ->setFormClass('edit', LayoutBuilderEntityViewDisplayForm::class);
|
Chris@0
|
50 }
|
Chris@0
|
51
|
Chris@0
|
52 /**
|
Chris@0
|
53 * Implements hook_form_FORM_ID_alter() for \Drupal\field_ui\Form\EntityFormDisplayEditForm.
|
Chris@0
|
54 */
|
Chris@0
|
55 function layout_builder_form_entity_form_display_edit_form_alter(&$form, FormStateInterface $form_state) {
|
Chris@0
|
56 // Hides the Layout Builder field. It is rendered directly in
|
Chris@0
|
57 // \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::buildMultiple().
|
Chris@0
|
58 unset($form['fields']['layout_builder__layout']);
|
Chris@0
|
59 $key = array_search('layout_builder__layout', $form['#fields']);
|
Chris@0
|
60 if ($key !== FALSE) {
|
Chris@0
|
61 unset($form['#fields'][$key]);
|
Chris@0
|
62 }
|
Chris@0
|
63 }
|
Chris@0
|
64
|
Chris@0
|
65 /**
|
Chris@0
|
66 * Implements hook_field_config_insert().
|
Chris@0
|
67 */
|
Chris@0
|
68 function layout_builder_field_config_insert(FieldConfigInterface $field_config) {
|
Chris@0
|
69 // Clear the sample entity for this entity type and bundle.
|
Chris@0
|
70 $sample_entity_generator = \Drupal::service('layout_builder.sample_entity_generator');
|
Chris@0
|
71 $sample_entity_generator->delete($field_config->getTargetEntityTypeId(), $field_config->getTargetBundle());
|
Chris@0
|
72 \Drupal::service('plugin.manager.block')->clearCachedDefinitions();
|
Chris@0
|
73 }
|
Chris@0
|
74
|
Chris@0
|
75 /**
|
Chris@0
|
76 * Implements hook_field_config_delete().
|
Chris@0
|
77 */
|
Chris@0
|
78 function layout_builder_field_config_delete(FieldConfigInterface $field_config) {
|
Chris@0
|
79 // Clear the sample entity for this entity type and bundle.
|
Chris@0
|
80 $sample_entity_generator = \Drupal::service('layout_builder.sample_entity_generator');
|
Chris@0
|
81 $sample_entity_generator->delete($field_config->getTargetEntityTypeId(), $field_config->getTargetBundle());
|
Chris@0
|
82 \Drupal::service('plugin.manager.block')->clearCachedDefinitions();
|
Chris@0
|
83 }
|