Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 49 |
| TextareaWithSummaryWidget | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
90 | |
0.00% |
0 / 49 |
| defaultSettings | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
| settingsForm | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 10 |
|||
| settingsSummary | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| formElement | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 18 |
|||
| errorElement | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 11 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\text\Plugin\Field\FieldWidget\TextareaWithSummaryWidget. | |
| */ | |
| namespace Drupal\text\Plugin\Field\FieldWidget; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Symfony\Component\Validator\ConstraintViolationInterface; | |
| use Drupal\Core\Field\FieldItemListInterface; | |
| /** | |
| * Plugin implementation of the 'text_textarea_with_summary' widget. | |
| * | |
| * @FieldWidget( | |
| * id = "text_textarea_with_summary", | |
| * label = @Translation("Text area with a summary"), | |
| * field_types = { | |
| * "text_with_summary" | |
| * } | |
| * ) | |
| */ | |
| class TextareaWithSummaryWidget extends TextareaWidget { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function defaultSettings() { | |
| return array( | |
| 'rows' => '9', | |
| 'summary_rows' => '3', | |
| 'placeholder' => '', | |
| ) + parent::defaultSettings(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function settingsForm(array $form, FormStateInterface $form_state) { | |
| $element = parent::settingsForm($form, $form_state); | |
| $element['summary_rows'] = array( | |
| '#type' => 'number', | |
| '#title' => t('Summary rows'), | |
| '#default_value' => $this->getSetting('summary_rows'), | |
| '#required' => TRUE, | |
| '#min' => 1, | |
| ); | |
| return $element; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function settingsSummary() { | |
| $summary = parent::settingsSummary(); | |
| $summary[] = t('Number of summary rows: @rows', array('@rows' => $this->getSetting('summary_rows'))); | |
| return $summary; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { | |
| $element = parent::formElement($items, $delta, $element, $form, $form_state); | |
| $display_summary = $items[$delta]->summary || $this->getFieldSetting('display_summary'); | |
| $element['summary'] = array( | |
| '#type' => $display_summary ? 'textarea' : 'value', | |
| '#default_value' => $items[$delta]->summary, | |
| '#title' => t('Summary'), | |
| '#rows' => $this->getSetting('summary_rows'), | |
| '#description' => t('Leave blank to use trimmed value of full text as the summary.'), | |
| '#attached' => array( | |
| 'library' => array('text/drupal.text'), | |
| ), | |
| '#attributes' => array('class' => array('js-text-summary', 'text-summary')), | |
| '#prefix' => '<div class="js-text-summary-wrapper text-summary-wrapper">', | |
| '#suffix' => '</div>', | |
| '#weight' => -10, | |
| ); | |
| return $element; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function errorElement(array $element, ConstraintViolationInterface $violation, array $form, FormStateInterface $form_state) { | |
| $element = parent::errorElement($element, $violation, $form, $form_state); | |
| if ($element === FALSE) { | |
| return FALSE; | |
| } | |
| elseif (isset($violation->arrayPropertyPath[0])) { | |
| return $element[$violation->arrayPropertyPath[0]]; | |
| } | |
| else { | |
| return $element; | |
| } | |
| } | |
| } |