diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 7236963..b6ce5f0 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -1576,9 +1576,7 @@ function template_preprocess_field_multiple_value_form(&$variables) { array( 'data' => array( '#prefix' => '', - 'title' => array( - '#markup' => t($element['#title']), - ), + '#markup' => $element['#title'], '#suffix' => '', ), 'colspan' => 2, diff --git a/core/modules/system/src/Tests/Entity/EntityBaseFieldTest.php b/core/modules/system/src/Tests/Entity/EntityBaseFieldTest.php new file mode 100644 index 0000000..756715a --- /dev/null +++ b/core/modules/system/src/Tests/Entity/EntityBaseFieldTest.php @@ -0,0 +1,70 @@ +drupalCreateUser(['administer entity_test content']); + $this->drupalLogin($user); + + FieldStorageConfig::create([ + 'entity_type' => 'entity_test_base_field_display', + 'field_name' => 'foo', + 'type' => 'text', + 'cardinality' => FieldStorageConfig::CARDINALITY_UNLIMITED, + ])->save(); + FieldConfig::create([ + 'entity_type' => 'entity_test_base_field_display', + 'bundle' => 'bar', + 'field_name' => 'foo', + // Set a dangerous label to test XSS filtering. + 'label' => "", + ]) + ->save(); + EntityFormDisplay::create([ + 'targetEntityType' => 'entity_test_base_field_display', + 'bundle' => 'bar', + 'mode' => 'default', + ]) + ->setComponent('foo', ['type' => 'text_textfield']) + ->enable() + ->save(); + + $entity = EntityTestBaseFieldDisplay::create(['type' => 'bar']); + $entity->save(); + + $this->drupalGet('entity_test_base_field_display/manage/' . $entity->id()); + $this->assertResponse(200); + $this->assertText('A field with multiple values'); + // Test if labels were XSS filtered. + $this->assertEscaped(""); + } + +} diff --git a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php index 210eb53..915f057 100644 --- a/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php +++ b/core/modules/system/tests/modules/entity_test/src/Entity/EntityTestBaseFieldDisplay.php @@ -9,6 +9,7 @@ use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Field\BaseFieldDefinition; +use Drupal\entity_test\FieldStorageDefinition; /** * Defines a test entity class for base fields display. @@ -23,9 +24,10 @@ * }, * "translation" = "Drupal\content_translation\ContentTranslationHandler" * }, - * base_table = "entity_test", + * base_table = "entity_test_base_field_display", * entity_keys = { * "id" = "id", + * "label" = "name", * "uuid" = "uuid", * "bundle" = "type" * }, @@ -70,6 +72,18 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { 'weight' => 11, )); + $fields['test_display_multiple'] = BaseFieldDefinition::create('text') + ->setLabel(t('A field with multiple values')) + ->setCardinality(FieldStorageDefinition::CARDINALITY_UNLIMITED) + ->setDisplayOptions('view', array( + 'type' => 'text_default', + 'weight' => 12, + )) + ->setDisplayOptions('form', array( + 'type' => 'text_textfield', + 'weight' => 12, + )); + return $fields; }