block_generation-8.x-1.x-dev/modules/text/block_generation_text.module
modules/text/block_generation_text.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_text_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]]];
// Text wrapper.
$form['wrapper_text_tag']['#states'] = ['visible' => [':input[name="wrapper_text[value]"]' => ['checked' => TRUE]]];
$form['wrapper_text_attr']['#states'] = ['visible' => [':input[name="wrapper_text[value]"]' => ['checked' => TRUE]]];
$form['wrapper_text_effects']['#states'] = ['visible' => [':input[name="wrapper_text[value]"]' => ['checked' => TRUE]]];
// Link wrapper.
$form['wrapper_link_tag']['#states'] = ['visible' => [':input[name="wrapper_link[value]"]' => ['checked' => TRUE]]];
$form['wrapper_link_attr']['#states'] = ['visible' => [':input[name="wrapper_link[value]"]' => ['checked' => TRUE]]];
$form['wrapper_link_effects']['#states'] = ['visible' => [':input[name="wrapper_link[value]"]' => ['checked' => TRUE]]];
}
/**
* Implements hook_form_FORM_ID_alter().
*
* @param $form
* @param \Drupal\Core\Form\FormStateInterface $form_state
*/
function block_generation_text_form_block_content_block_generation_text_edit_form_alter(&$form, FormStateInterface $form_state) {
_block_generation_text_form_alter($form, $form_state);
}
/**
* Implements hook_form_FORM_ID_alter().
*
* @param $form
* @param \Drupal\Core\Form\FormStateInterface $form_state
*/
function block_generation_text_form_block_content_block_generation_text_form_alter(&$form, FormStateInterface $form_state) {
_block_generation_text_form_alter($form, $form_state);
}
/**
* Process block content settings.
* Implements hook_preprocess_HOOK().
*
* @param array $variables
*/
function template_preprocess_block__block_generation__block_generation_text(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_text'];
foreach ($wrappers as $wrapper) {
_block_generation_process_wrapper($wrapper, $block, $variables);
}
// Content composition.
$content_composition = ['title', 'text', 'link'];
_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_text__text(array &$variables) {
// Process fields.
_block_generation_process_field_attributes('text', $variables);
}
/**
* 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_text_block_content_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
$block_generation_bundles = _block_generation_bundles();
if ($entity instanceof BlockContent && array_key_exists($entity->bundle(), $block_generation_bundles)) {
/** @var \Drupal\Core\Utility\ThemeRegistry $theme_registry */
$theme_registry = \Drupal::service('theme.registry')->getRuntime();
// Update the theme for specific fields.
if (isset($build['text']['#object']) && $theme_registry->has('field__block_generation__' . $entity->bundle() . '__text')) {
$build['text']['#theme'] = 'field__block_generation__' . $entity->bundle() . '__text';
}
}
}
