63 public function __construct(EntityFieldManagerInterface $entity_field_manager, EntityTypeManagerInterface $entity_type_manager, array
$elements) {
64 $this->entityFieldManager = $entity_field_manager;
65 $this->storage = $entity_type_manager->getStorage(
'paragraph');
66 $this->bundleStorage = $entity_type_manager->getStorage(
'paragraphs_type');
75 foreach ($items as $item) {
76 $value = $item->getValue();
77 if (!empty($value[
'entity']) && $value[
'entity'] instanceof ParagraphInterface) {
78 $entities[] = $item->entity;
80 elseif ($item->target_revision_id !== NULL) {
81 if (!empty($this->revisionCache[$item->target_revision_id])) {
82 $entities[] = $this->revisionCache[$item->target_revision_id];
85 $entity = $this->storage->loadRevision($item->target_revision_id);
87 $this->revisionCache[$item->target_revision_id] = $entity;
88 $entities[] = $entity;
98 public function wrapItems(EntityReferenceRevisionsFieldItemList $items) {
101 throw new \Exception(
'Attempt to wrap non-paragraphs editor field.');
105 $settings = $field_definition->getThirdPartySettings(
'paragraphs_editor');
111 if ($entity->bundle() == $settings[
'text_bundle']) {
112 $markup .= $entity->{$settings[
'text_field']}->value;
114 $text_entity = $entity;
118 $entities[$entity->uuid()] = $entity;
125 'type' => $settings[
'text_bundle'],
130 $text_entity->{$settings[
'text_field']}->value = $markup;
131 if (empty($text_entity->{$settings[
'text_field']}->format) && !empty($settings[
'filter_format'])) {
132 $text_entity->{$settings[
'text_field']}->format = $settings[
'filter_format'];
142 $entity->setNewRevision($new_revision);
144 if (isset($langcode) && $entity->get(
'langcode') != $langcode) {
145 if ($entity->hasTranslation($langcode)) {
146 $entity = $entity->getTranslation($langcode);
149 $entity->set(
'langcode', $langcode);
153 $entity->setNeedsSave(TRUE);
161 public function setItems(EntityReferenceRevisionsFieldItemList $items, array $entities, $new_revision = FALSE, $langcode = NULL) {
164 foreach ($entities as $entity) {
166 $values[$delta][
'entity'] = $entity;
167 $values[$delta][
'target_id'] = $entity->id();
168 $values[$delta][
'target_revision_id'] = $entity->getRevisionId();
172 $items->setValue($values);
173 $items->filterEmptyItems();
182 if (empty($allowed_bundles)) {
183 $results = $this->bundleStorage->getQuery()->execute();
184 if (is_array($results)) {
185 foreach ($results as $name) {
186 $allowed_bundles[$name] = [
187 'label' => $this->bundleStorage->load($name)->label(),
194 foreach ($allowed_bundles as $name => $type) {
196 if (count($text_fields) == 1) {
198 'label' => $type[
'label'],
199 'text_field' => reset($text_fields),
210 if ($field_definition->getType() !=
'entity_reference_revisions') {
215 $target_type = $field_definition->getFieldStorageDefinition()->getSetting(
'target_type');
216 return $target_type ==
'paragraph';
231 $cardinality = $field_definition->getFieldStorageDefinition()->getCardinality();
232 if ($cardinality != FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) {
237 $settings = $field_definition->getThirdPartySettings(
'paragraphs_editor');
238 return !empty($settings[
'enabled']);
246 $field_definitions = $this->entityFieldManager->getFieldDefinitions(
'paragraph', $bundle_name);
247 foreach ($field_definitions as $field_definition) {
249 $matches[] = $field_definition->getName();
259 return isset($this->elements[$element_name]) ? $this->elements[$element_name] : NULL;
267 if (!empty($element[
'attributes'])) {
268 $map = array_flip($element[
'attributes']);
269 $key = !empty($map[$attribute_name]) ? $map[$attribute_name] : NULL;
282 $selector = !empty($element[
'tag']) ? $element[
'tag'] :
'';
283 if (!empty($element[
'attributes'][
'class'])) {
284 $classes = explode(
' ', $element[
'attributes'][
'class']);
285 $selector .=
'.' . implode(
'.', $classes);
299 protected function isTextField(FieldDefinitionInterface $field_definition) {
300 return $field_definition->getType() ==
'text_long';
static ensureParagraph(EntityInterface $entity=NULL)
setItems(EntityReferenceRevisionsFieldItemList $items, array $entities, $new_revision=FALSE, $langcode=NULL)
isParagraphsField(FieldDefinitionInterface $field_definition)
wrapItems(EntityReferenceRevisionsFieldItemList $items)
isTextField(FieldDefinitionInterface $field_definition)
getElement($element_name)
__construct(EntityFieldManagerInterface $entity_field_manager, EntityTypeManagerInterface $entity_type_manager, array $elements)
getSelector($element_name)
getTextBundles(array $allowed_bundles=[])
getReferencedEntities(EntityReferenceRevisionsFieldItemList $items)
static ensureFieldConfig(FieldDefinitionInterface $field_definition=NULL)
getAttributeName($element_name, $attribute_name)
getTextFields($bundle_name)
isParagraphsEditorField(FieldDefinitionInterface $field_definition)
prepareEntityForSave($entity, $new_revision, $langcode)