diff --git a/core/modules/field/src/Tests/String/StringFieldTest.php b/core/modules/field/src/Tests/String/StringFieldTest.php index f59d507..3114490 100644 --- a/core/modules/field/src/Tests/String/StringFieldTest.php +++ b/core/modules/field/src/Tests/String/StringFieldTest.php @@ -22,7 +22,7 @@ class StringFieldTest extends WebTestBase { * * @var array */ - public static $modules = array('entity_test'); + public static $modules = array('entity_test', 'file'); /** * A user without any special permissions. diff --git a/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php b/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php index 8349f7a..d3c9cd3 100644 --- a/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php +++ b/core/modules/text/src/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php @@ -92,7 +92,15 @@ function formElement(FieldItemListInterface $items, $delta, array $element, arra */ public function errorElement(array $element, ConstraintViolationInterface $violation, array $form, FormStateInterface $form_state) { $element = parent::errorElement($element, $violation, $form, $form_state); - return ($element === FALSE) ? FALSE : $element[$violation->arrayPropertyPath[0]]; + if ($element === FALSE) { + return FALSE; + } + elseif (isset($violation->arrayPropertyPath[0])) { + return $element[$violation->arrayPropertyPath[0]]; + } + else { + return $element; + } } } diff --git a/core/modules/text/src/Tests/TextFieldTest.php b/core/modules/text/src/Tests/TextFieldTest.php index a22bc5b..a1c9ec3 100644 --- a/core/modules/text/src/Tests/TextFieldTest.php +++ b/core/modules/text/src/Tests/TextFieldTest.php @@ -68,6 +68,65 @@ function testTextFieldValidation() { } /** + * Test required long text with file upload. + */ + function testRequiredLongTextWithFileUpload() { + // Create a text field. + $text_field_name = 'text_long'; + $field_storage = entity_create('field_storage_config', array( + 'field_name' => $text_field_name, + 'entity_type' => 'entity_test', + 'type' => 'text_with_summary', + )); + $field_storage->save(); + entity_create('field_config', array( + 'field_storage' => $field_storage, + 'bundle' => 'entity_test', + 'label' => $this->randomMachineName() . '_label', + 'required' => TRUE, + ))->save(); + + // Create a file field. + $file_field_name = 'file_field'; + $field_storage = entity_create('field_storage_config', array( + 'field_name' => $file_field_name, + 'entity_type' => 'entity_test', + 'type' => 'file' + )); + $field_storage->save(); + entity_create('field_config', array( + 'field_storage' => $field_storage, + 'bundle' => 'entity_test', + 'label' => $this->randomMachineName() . '_label', + ))->save(); + + entity_get_form_display('entity_test', 'entity_test', 'default') + ->setComponent($text_field_name, array( + 'type' => 'text_textarea_with_summary', + )) + ->setComponent($file_field_name, array( + 'type' => 'file_generic', + )) + ->save(); + entity_get_display('entity_test', 'entity_test', 'full') + ->setComponent($text_field_name) + ->setComponent($file_field_name) + ->save(); + + $test_file = current($this->drupalGetTestFiles('text')); + $edit['files[file_field_0]'] = drupal_realpath($test_file->uri); + $this->drupalPostForm('entity_test/add', $edit, 'Upload'); + $this->assertResponse(200); + $edit = array( + 'text_long[0][value]' => 'Long text' + ); + $this->drupalPostForm(NULL, $edit, 'Save'); + $this->assertResponse(200); + $this->drupalGet('entity_test/1'); + $this->assertText('Long text'); + } + + /** * Test widgets. */ function testTextfieldWidgets() {