paragraphs_tools-8.x-1.0-beta5/paragraphs_tools_tweaks/paragraphs_tools_tweaks.module

paragraphs_tools_tweaks/paragraphs_tools_tweaks.module
<?php

use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\WidgetInterface;
use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_field_widget_multivalue_form_alter().
 */
function paragraphs_tools_tweaks_field_widget_multivalue_form_alter(array &$elements, FormStateInterface $form_state, array $context) {
  /** @var \Drupal\Core\Field\WidgetInterface $widget */
  $widget = $context['widget'];

  if ($widget->getPluginId() === 'paragraphs') {
    if ($widget->getThirdPartySetting('paragraphs_tools_tweaks', 'hide_bullet_prefix')) {
      $elements['#paragraphs_tools_tweaks_hide_bullet_prefix'] = TRUE;
    }
    // Note that the delta is increasing every time an item is deleted.
    foreach ($elements as $i => $element) {
      if (is_numeric($i)) {
        if ($widget->getThirdPartySetting('paragraphs_tools_tweaks', 'expose_remove_button')) {
          $elements[$i]['top']['actions']['actions']['remove_button'] = $elements[$i]['top']['actions']['dropdown_actions']['remove_button'];
          $elements[$i]['top']['actions']['dropdown_actions']['remove_button']['#access'] = FALSE;
        }
        if ($widget->getThirdPartySetting('paragraphs_tools_tweaks', 'hide_collapse_button')) {
          $elements[$i]['top']['actions']['actions']['collapse_button']['#access'] = FALSE;
        }
      }
    }
  }
}

/**
 * Implements hook_preprocess_HOOK() for field_multiple_value_form().
 */
function paragraphs_tools_tweaks_preprocess_field_multiple_value_form(&$variables) {
  if (!empty($variables['element']['#paragraphs_tools_tweaks_hide_bullet_prefix'])) {
    if (isset($variables['table']['#rows'])) {
      foreach ($variables['table']['#rows'] as $key => $value) {
        if (isset($variables['table']['#rows'][$key]['data'][0]['class'])) {
          $classes =& $variables['table']['#rows'][$key]['data'][0]['class'];
          $classKey = array_search('paragraph-bullet', $classes);
          if (FALSE !== $classKey) {
            unset($classes[$classKey]);
          }
        }
      }
    }
  }
}

/**
 * Implements hook_theme_registry_alter().
 */
function paragraphs_tools_tweaks_theme_registry_alter(&$theme_registry) {
  $hookImplementations =& $theme_registry['field_multiple_value_form']['preprocess functions'];
  $hookImplementationKey = array_search('paragraphs_tools_tweaks_preprocess_field_multiple_value_form', $hookImplementations);
  unset($hookImplementations[$hookImplementationKey]);
  $hookImplementations[] = 'paragraphs_tools_tweaks_preprocess_field_multiple_value_form';
  $hookImplementations = array_values($hookImplementations);
}

/**
 * Implements hook_field_widget_third_party_settings_form().
 */
function paragraphs_tools_tweaks_field_widget_third_party_settings_form(WidgetInterface $plugin, FieldDefinitionInterface $fieldDefinition, $form_mode, $form, FormStateInterface $form_state) {
  $element = [];
  if ($plugin->getPluginId() === 'paragraphs') {
    $element['#type'] = 'fieldset';
    $element['#title'] = t('Paragraphs Tools: Tweaks');
    $element['hide_bullet_prefix'] = [
      '#type' => 'checkbox',
      '#title' => t('Hide the bullet prefix'),
      '#description' => t('In some cases the bullet at the left of an item is not appropriate.'),
      '#default_value' => $plugin->getThirdPartySetting('paragraphs_tools_tweaks', 'hide_bullet_prefix'),
    ];
    $element['expose_remove_button'] = [
      '#type' => 'checkbox',
      '#title' => t('Expose the remove button'),
      '#description' => t('Users can use the remove button without using the dropdown.'),
      '#default_value' => $plugin->getThirdPartySetting('paragraphs_tools_tweaks', 'expose_remove_button'),
    ];
    $element['hide_collapse_button'] = [
      '#type' => 'checkbox',
      '#title' => t('Hide the collapse button'),
      '#description' => t('In some cases the collapse button above an item is not appropriate.'),
      '#default_value' => $plugin->getThirdPartySetting('paragraphs_tools_tweaks', 'hide_collapse_button'),
    ];
  }
  return $element;
}

/**
 * Implements hook_field_widget_settings_summary_alter().
 */
function paragraphs_tools_tweaks_field_widget_settings_summary_alter(&$summary, $context) {
  /** @var \Drupal\Core\Field\WidgetInterface $widget */
  $widget = $context['widget'];
  if ($widget->getThirdPartySetting('paragraphs_tools_tweaks', 'hide_bullet_prefix')) {
    $summary[] = t('Hide the bullet prefix');
  }
  if ($widget->getThirdPartySetting('paragraphs_tools_tweaks', 'expose_remove_button')) {
    $summary[] = t('Expose the remove button');
  }
  if ($widget->getThirdPartySetting('paragraphs_tools_tweaks', 'hide_collapse_button')) {
    $summary[] = t('Hide the collapse button');
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc