3 namespace Drupal\text\Plugin\Field\FieldType;
5 use Drupal\Core\Field\FieldStorageDefinitionInterface;
6 use Drupal\Core\Form\FormStateInterface;
7 use Drupal\Core\TypedData\DataDefinition;
10 * Plugin implementation of the 'text_with_summary' field type.
13 * id = "text_with_summary",
14 * label = @Translation("Text (formatted, long, with summary)"),
15 * description = @Translation("This field stores long text with a format and an optional summary."),
16 * category = @Translation("Text"),
17 * default_widget = "text_textarea_with_summary",
18 * default_formatter = "text_default"
21 class TextWithSummaryItem extends TextItemBase {
26 public static function defaultFieldSettings() {
28 'display_summary' => 0,
29 ] + parent::defaultFieldSettings();
35 public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
36 $properties = parent::propertyDefinitions($field_definition);
38 $properties['summary'] = DataDefinition::create('string')
39 ->setLabel(t('Summary'));
41 $properties['summary_processed'] = DataDefinition::create('string')
42 ->setLabel(t('Processed summary'))
43 ->setDescription(t('The summary text with the text format applied.'))
45 ->setClass('\Drupal\text\TextProcessed')
46 ->setSetting('text source', 'summary');
54 public static function schema(FieldStorageDefinitionInterface $field_definition) {
66 'type' => 'varchar_ascii',
71 'format' => ['format'],
79 public function isEmpty() {
80 $value = $this->get('summary')->getValue();
81 return parent::isEmpty() && ($value === NULL || $value === '');
87 public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
89 $settings = $this->getSettings();
91 $element['display_summary'] = [
92 '#type' => 'checkbox',
93 '#title' => t('Summary input'),
94 '#default_value' => $settings['display_summary'],
95 '#description' => t('This allows authors to input an explicit summary, to be displayed instead of the automatically trimmed text when using the "Summary or trimmed" display type.'),