diff --git a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/field_type/DateTimeField.php b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/field_type/DateTimeField.php index 36037e5..b680e4b 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Plugin/field/field_type/DateTimeField.php +++ b/core/modules/datetime/lib/Drupal/datetime/Plugin/field/field_type/DateTimeField.php @@ -8,12 +8,12 @@ namespace Drupal\datetime\Plugin\field\field_type; use Drupal\Core\Datetime\DrupalDateTime; -use Drupal\field\Plugin\Type\FieldType\ConfigField; +use Drupal\field\Plugin\Type\FieldType\ConfigFieldItemList; /** * Represents a configurable entity datetime field. */ -class DateTimeField extends ConfigField { +class DateTimeField extends ConfigFieldItemList { /** * Defines the default value as now. @@ -37,7 +37,7 @@ public function defaultValuesForm(array &$form, array &$form_state) { '#type' => 'select', '#title' => t('Default date'), '#description' => t('Set a default value for this date.'), - '#default_value' => isset($default_value['default_date']) ? $default_value['default_date'] : static::DEFAULT_VALUE_BLANK, + '#default_value' => isset($default_value[0]['default_date']) ? $default_value[0]['default_date'] : static::DEFAULT_VALUE_BLANK, '#options' => array(static::DEFAULT_VALUE_BLANK => t('No default value'), static::DEFAULT_VALUE_NOW => t('The current date')), ) ); @@ -49,7 +49,7 @@ public function defaultValuesForm(array &$form, array &$form_state) { * {@inheritdoc} */ public function defaultValuesFormSubmit(array $element, array &$form, array &$form_state) { - return array(array($form_state['values']['default_value_input']['default_date'])); + return array($form_state['values']['default_value_input']); } /** @@ -61,7 +61,7 @@ public function getDefaultValue() { if ($default_value) { $value = ''; $date = ''; - if ($default_value['default_date'] == static::DEFAULT_VALUE_NOW) { + if ($default_value[0]['default_date'] == static::DEFAULT_VALUE_NOW) { // A default value should be in the format and timezone used for date // storage. $date = new DrupalDateTime('now', DATETIME_STORAGE_TIMEZONE); diff --git a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php index 56981b7..245e767 100644 --- a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php +++ b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php @@ -294,8 +294,17 @@ function testDefaultValue() { // Create a test content type. $this->drupalCreateContentType(array('type' => 'date_content')); + // Create a field with settings to validate. + $field = entity_create('field_entity', array( + 'name' => drupal_strtolower($this->randomName()), + 'entity_type' => 'node', + 'type' => 'datetime', + 'settings' => array('datetime_type' => 'date'), + )); + $field->save(); + $instance = entity_create('field_instance', array( - 'field_name' => $this->field->name, + 'field_name' => $field->name, 'entity_type' => 'node', 'bundle' => 'date_content', )); @@ -305,15 +314,15 @@ function testDefaultValue() { $instance_edit = array( 'default_value_input[default_date]' => 'now', ); - $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $this->field->name, $instance_edit, t('Save settings')); + $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field->name, $instance_edit, t('Save settings')); // Check that default value is selected in default value form. - $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $this->field->name); + $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field->name); $this->assertRaw('', 'The default value is selected in instance settings page'); // Check if default_date has been stored successfully. - $config_entity = $this->container->get('config.factory')->get('field.instance.node.date_content.' . $this->field->name)->get(); - $this->assertEqual($config_entity['default_value']['default_date'], 'now', 'Default value has been stored succesfully'); + $config_entity = $this->container->get('config.factory')->get('field.instance.node.date_content.' . $field->name)->get(); + $this->assertEqual($config_entity['default_value'][0]['default_date'], 'now', 'Default value has been stored succesfully'); // Clean field_info cache in order to avoid stale cache values. field_info_cache_clear(); @@ -321,7 +330,7 @@ function testDefaultValue() { // Create a new node to check that datetime field default value is today. $new_node = entity_create('node', array('type' => 'date_content')); $expected_date = new DrupalDateTime('now', DATETIME_STORAGE_TIMEZONE); - $this->assertEqual($new_node->get($this->field->name)->offsetGet(0)->value, $expected_date->format(DATETIME_DATE_STORAGE_FORMAT)); + $this->assertEqual($new_node->get($field->name)->offsetGet(0)->value, $expected_date->format(DATETIME_DATE_STORAGE_FORMAT)); } /**