ParagraphsSmartTrimFormatter.php in Paragraphs Trimmed 8
File
modules/paragraphs_smart_trim/src/Plugin/Field/FieldFormatter/ParagraphsSmartTrimFormatter.php
View source
<?php
namespace Drupal\paragraphs_smart_trim\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\paragraphs_trimmed\Plugin\Field\FieldFormatter\ParagraphsTrimmedFormatterBase;
use Drupal\field\Entity\FieldStorageConfig;
class ParagraphsSmartTrimFormatter extends ParagraphsTrimmedFormatterBase {
public static function getTrimFormatterType() {
return 'smart_trim';
}
public static function defaultSettings() {
return array(
'summary_handler' => 'ignore',
) + parent::defaultSettings();
}
public function settingsForm(array $form, FormStateInterface $form_state) {
$form = parent::settingsForm($form, $form_state);
$form['summary_handler']['#type'] = 'value';
return $form;
}
public function viewElements(FieldItemListInterface $items, $langcode) {
if ($this
->getSummaryFieldValue($items)) {
return $this
->getSummaryFieldElement($items);
}
$elements = parent::viewElements($items, $langcode);
$output = \Drupal::service('renderer')
->render($elements);
$element = [
'#type' => 'processed_text',
'#text' => $output,
'#format' => $this
->getSetting('format'),
'#langcode' => $langcode,
];
$output = \Drupal::service('renderer')
->render($element);
$definition = \Drupal::typedDataManager()
->createListDataDefinition('field_item:text');
$text_items = \Drupal::typedDataManager()
->create($definition, [
$output,
], NULL, $items
->getEntity()
->getTypedData());
$text_items->format = $this
->getSetting('format');
return $this->formatter
->setSettings($this
->getSettings())
->viewElements($text_items, $langcode);
}
}