annotate core/modules/layout_builder/layout_builder.module @ 2:5311817fb629

Theme updates
author Chris Cannam
date Tue, 10 Jul 2018 13:19:18 +0000
parents c75dbcec494b
children a9cd425dd02b
rev   line source
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 }