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');
}
}
