block_generation-8.x-1.x-dev/modules/block/block_generation_block.module
modules/block/block_generation_block.module
<?php use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\Display\EntityViewDisplayInterface; use Drupal\block_content\Entity\BlockContent; /** * Tune up the form. * * Implements hook_form_FORM_ID_alter(). * * @param $form * @param \Drupal\Core\Form\FormStateInterface $form_state */ function _block_generation_block_form_alter(&$form, FormStateInterface $form_state) { // External wrapper. $form['wrapper_external_tag']['#states'] = ['visible' => [':input[name="wrapper_external[value]"]' => ['checked' => TRUE]]]; $form['wrapper_external_attr']['#states'] = ['visible' => [':input[name="wrapper_external[value]"]' => ['checked' => TRUE]]]; $form['wrapper_external_effects']['#states'] = ['visible' => [':input[name="wrapper_external[value]"]' => ['checked' => TRUE]]]; // Main wrapper. $form['wrapper_main_tag']['#states'] = ['visible' => [':input[name="wrapper_main[value]"]' => ['checked' => TRUE]]]; $form['wrapper_main_attr']['#states'] = ['visible' => [':input[name="wrapper_main[value]"]' => ['checked' => TRUE]]]; $form['wrapper_main_effects']['#states'] = ['visible' => [':input[name="wrapper_main[value]"]' => ['checked' => TRUE]]]; // Internal wrapper. $form['wrapper_internal_tag']['#states'] = ['visible' => [':input[name="wrapper_internal[value]"]' => ['checked' => TRUE]]]; $form['wrapper_internal_attr']['#states'] = ['visible' => [':input[name="wrapper_internal[value]"]' => ['checked' => TRUE]]]; $form['wrapper_internal_effects']['#states'] = ['visible' => [':input[name="wrapper_internal[value]"]' => ['checked' => TRUE]]]; // Inner wrapper. $form['wrapper_inner_tag']['#states'] = ['visible' => [':input[name="wrapper_inner[value]"]' => ['checked' => TRUE]]]; $form['wrapper_inner_attr']['#states'] = ['visible' => [':input[name="wrapper_inner[value]"]' => ['checked' => TRUE]]]; $form['wrapper_inner_effects']['#states'] = ['visible' => [':input[name="wrapper_inner[value]"]' => ['checked' => TRUE]]]; // Title wrapper. $form['wrapper_title_tag']['#states'] = ['visible' => [':input[name="wrapper_title[value]"]' => ['checked' => TRUE]]]; $form['wrapper_title_attr']['#states'] = ['visible' => [':input[name="wrapper_title[value]"]' => ['checked' => TRUE]]]; $form['wrapper_title_effects']['#states'] = ['visible' => [':input[name="wrapper_title[value]"]' => ['checked' => TRUE]]]; // Block wrapper. $form['wrapper_block_tag']['#states'] = ['visible' => [':input[name="wrapper_block[value]"]' => ['checked' => TRUE]]]; $form['wrapper_block_attr']['#states'] = ['visible' => [':input[name="wrapper_block[value]"]' => ['checked' => TRUE]]]; $form['wrapper_block_effects']['#states'] = ['visible' => [':input[name="wrapper_block[value]"]' => ['checked' => TRUE]]]; } /** * Implements hook_form_FORM_ID_alter(). * * @param $form * @param \Drupal\Core\Form\FormStateInterface $form_state */ function block_generation_block_form_block_content_block_generation_block_edit_form_alter(&$form, FormStateInterface $form_state) { _block_generation_block_form_alter($form, $form_state); } /** * Implements hook_form_FORM_ID_alter(). * * @param $form * @param \Drupal\Core\Form\FormStateInterface $form_state */ function block_generation_block_form_block_content_block_generation_block_form_alter(&$form, FormStateInterface $form_state) { _block_generation_block_form_alter($form, $form_state); } /** * Implements hook_ENTITY_TYPE_view_alter(). * * @param array $build * @param \Drupal\Core\Entity\EntityInterface $entity * @param \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display */ function block_generation_block_block_content_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) { $block_generation_bundles = _block_generation_bundles(); if ($entity instanceof BlockContent && $entity->bundle() == 'block_generation_block') { /** @var \Drupal\Core\Utility\ThemeRegistry $theme_registry */ $theme_registry = \Drupal::service('theme.registry')->getRuntime(); // Update the theme for specific fields. if (isset($build['block']['#object']) && $theme_registry->has('field__block_generation__block_generation_block__block')) { $build['block']['#theme'] = 'field__block_generation__block_generation_block__block'; } } } /** * Process block content settings. * Implements hook_preprocess_HOOK(). * * @param array $variables */ function template_preprocess_block__block_generation__block_generation_block(array &$variables) { if (isset($variables['elements']['#block_content']) && $variables['elements']['#block_content'] instanceof BlockContent) { // Block content object. /** @var \Drupal\block_content\Entity\BlockContent $block */ $block = $variables['elements']['#block_content']; // Process possible wrappers. $wrappers = ['wrapper_external', 'wrapper_main', 'wrapper_internal', 'wrapper_inner', 'wrapper_title', 'wrapper_block']; foreach ($wrappers as $wrapper) { _block_generation_process_wrapper($wrapper, $block, $variables); } // Content composition. $content_composition = ['title', 'block']; _block_generation_process_content($block, $variables, $content_composition); _block_generation_process_order($block, $variables, $content_composition); } } /** * Process block content settings. * Implements hook_preprocess_HOOK(). * * @param array $variables */ function template_preprocess_field__block_generation__block_generation_block__block(array &$variables) { // Process fields. _block_generation_process_field_attributes('block', $variables); }