diff --git a/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php b/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php index ca1a065..83a3822 100644 --- a/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php +++ b/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php @@ -543,13 +543,15 @@ class InlineParagraphsWidget extends WidgetBase { if ($item_mode == 'edit') { $display->buildForm($paragraphs_entity, $element['subform'], $form_state); - foreach (Element::children($element['subform']) as $fieldname) { - $translatable = $paragraphs_entity->{$fieldname}->getFieldDefinition()->isTranslatable(); - if ($translatable) { - $element['subform'][$fieldname]['widget']['#after_build'][] = [ - get_class($this), - 'removeTranslatabilityCue' - ]; + foreach (Element::children($element['subform']) as $field) { + if ($paragraphs_entity->hasField($field)) { + $translatable = $paragraphs_entity->{$field}->getFieldDefinition()->isTranslatable(); + if ($translatable) { + $element['subform'][$field]['widget']['#after_build'][] = [ + get_class($this), + 'removeTranslatabilityCue' + ]; + } } } } @@ -1206,7 +1208,9 @@ class InlineParagraphsWidget extends WidgetBase { public static function removeTranslatabilityCue(array $element, FormStateInterface $form_state) { if (isset($element['#title'])) { foreach (Element::children($element) as $delta) { - $element[$delta]['value']['#title'] = $element['#title']; + foreach (Element::children($element[$delta]) as $field) { + $element[$delta][$field]['#title'] = $element['#title']; + } } } return $element; diff --git a/src/Tests/ParagraphsTranslationTest.php b/src/Tests/ParagraphsTranslationTest.php index dc9e752..745e979 100644 --- a/src/Tests/ParagraphsTranslationTest.php +++ b/src/Tests/ParagraphsTranslationTest.php @@ -335,9 +335,31 @@ class ParagraphsTranslationTest extends WebTestBase { $this->drupalPostForm(NULL, [], t('Save field settings')); $this->drupalPostForm(NULL, [], t('Save settings')); + // Add a non translatable reference field. + $edit = [ + 'new_storage_type' => 'field_ui:entity_reference:node', + 'label' => 'untranslatable_ref_field', + 'field_name' => 'untranslatable_ref_field', + ]; + $this->drupalPostForm('admin/structure/paragraphs_type/text/fields/add-field', $edit, t('Save and continue')); + $this->drupalPostForm(NULL, [], t('Save field settings')); + $this->drupalPostForm(NULL, ['settings[handler_settings][target_bundles][paragraphed_content_demo]' => TRUE], t('Save settings')); + + // Attempt to add a translation. + $this->drupalGet('node/' . $node->id() . '/translations/add/de/fr'); + $this->assertNoUniqueText('untranslatable_field (all languages)'); + $this->assertNoUniqueText('untranslatable_ref_field (all languages)'); + $this->assertNoText('Text (all languages)'); + + // Enable translations for the reference field. + $edit = [ + 'translatable' => TRUE, + ]; + $this->drupalPostForm('admin/structure/paragraphs_type/text/fields/paragraph.text.field_untranslatable_ref_field', $edit, t('Save settings')); // Attempt to add a translation. $this->drupalGet('node/' . $node->id() . '/translations/add/de/fr'); $this->assertNoUniqueText('untranslatable_field (all languages)'); + $this->assertNoText('untranslatable_ref_field (all languages)'); $this->assertNoText('Text (all languages)'); }