setka-8.x-1.0/src/Plugin/Field/FieldFormatter/SetkaEditorFormatter.php
src/Plugin/Field/FieldFormatter/SetkaEditorFormatter.php
<?php
namespace Drupal\setka_editor\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
/**
* Plugin implementation of the 'setka_editor' formatter.
*
* @FieldFormatter(
* id = "setka_editor",
* module = "setka_editor",
* label = @Translation("Setka Editor"),
* field_types = {
* "text_long",
* "string_long",
* "text_with_summary",
* }
* )
*/
class SetkaEditorFormatter extends FormatterBase {
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
foreach ($items as $delta => $item) {
$itemValue = $item->value;
$setkaFormat = FALSE;
if ($decodedValue = json_decode($itemValue)) {
if (!empty($decodedValue->postTheme)
&& !empty($decodedValue->postGrid)
&& !empty($decodedValue->postHtml)) {
$setkaFormat = TRUE;
$elements[$delta] = [
'#theme' => 'setka_editor_formatter',
'#editor_content' => $decodedValue->postHtml,
'#attached' => [
'library' => [
'setka_editor/setka-styles',
'setka_editor/setka-public-js',
],
],
];
if (!empty($decodedValue->postTypeKit)) {
$elements[$delta]['#typekit_id'] = $decodedValue->postTypeKit;
}
}
}
if (!$setkaFormat) {
$elements[$delta] = [
'#type' => 'processed_text',
'#text' => $item->value,
'#format' => $item->format,
'#langcode' => $item->getLangcode(),
];
}
}
return $elements;
}
}
