text_summary_options.module in Summary Options 8
Same filename and directory in other branches
Provides options for 'Long Text With Summary' widget.
File
text_summary_options.moduleView source
<?php
use Drupal\Core\Form\FormStateInterface;
use Drupal\field\Entity\FieldConfig;
/**
* @file
* Provides options for 'Long Text With Summary' widget.
*/
/**
* Implements hook_form_FORM_ID_form_alter().
*/
function text_summary_options_form_field_config_edit_form_alter(array &$form, FormStateInterface $form_state) {
$field = $form_state
->getFormObject()
->getEntity();
if ($field
->getType() == 'text_with_summary') {
$form['third_party_settings']['text_summary_options'] = [
'#type' => 'container',
'#tree' => TRUE,
];
$form['third_party_settings']['text_summary_options']['show_summary'] = [
'#type' => 'checkbox',
'#title' => t('Show summary'),
'#default_value' => (int) $field
->getThirdPartySetting('text_summary_options', 'show_summary'),
'#description' => t('Display the summary field by default.'),
];
if (version_compare(\Drupal::VERSION, 8.800000000000001, '<')) {
$form['third_party_settings']['text_summary_options']['required_summary'] = [
'#type' => 'checkbox',
'#title' => t('Mark Summary as required'),
'#default_value' => (int) $field
->getThirdPartySetting('text_summary_options', 'required_summary'),
'#description' => t('Display the summary field by default.'),
];
}
$form['third_party_settings']['text_summary_options']['summary_help'] = [
'#type' => 'textarea',
'#title' => t('Summary help text'),
'#description' => t('Help text to display for the summary.'),
'#default_value' => $field
->getThirdPartySetting('text_summary_options', 'summary_help'),
];
}
}
/**
* Implements hook_field_widget_form_alter().
*/
function text_summary_options_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) {
$field_definition = $context['items']
->getFieldDefinition();
// Base fields are not configurable.
if (!$field_definition instanceof FieldConfig) {
return;
}
// We can't use the protected isDefaultValueWidget() method.
$is_default_value_widget = (bool) $form_state
->get('default_value_widget');
if ($field_definition
->getType() == 'text_with_summary' && !$is_default_value_widget) {
$field_configuration = $field_definition
->getConfig($field_definition
->getTargetBundle());
$show_summary_setting = (int) $field_configuration
->getThirdPartySetting('text_summary_options', 'show_summary');
if (version_compare(\Drupal::VERSION, 8.800000000000001, '<')) {
$required_summary_setting = (int) $field_configuration
->getThirdPartySetting('text_summary_options', 'required_summary');
}
else {
$required_summary_setting = FALSE;
}
$summary_help_setting = $field_configuration
->getThirdPartySetting('text_summary_options', 'summary_help');
if ($show_summary_setting) {
unset($element['summary']['#attached']);
}
if ($required_summary_setting) {
$element['summary']['#required'] = TRUE;
/*
* Remove conflicting advice from the field's default description
* because the field cannot be left blank if it is marked required.
*/
$default_summary_text = t('Leave blank to use trimmed value of full text as the summary.');
if ($element['summary']['#description'] == $default_summary_text) {
unset($element['summary']['#description']);
}
}
if (!empty($summary_help_setting)) {
$element['summary']['#description'] = $summary_help_setting;
}
}
}
Functions
Name![]() |
Description |
---|---|
text_summary_options_field_widget_form_alter | Implements hook_field_widget_form_alter(). |
text_summary_options_form_field_config_edit_form_alter | Implements hook_form_FORM_ID_form_alter(). |