Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save colepacak/ad91c06efb5d8dd7e3f3560e55a9cf66 to your computer and use it in GitHub Desktop.
Save colepacak/ad91c06efb5d8dd7e3f3560e55a9cf66 to your computer and use it in GitHub Desktop.
diff --git a/core/lib/Drupal/Core/Datetime/Plugin/Field/FieldWidget/TimestampDatetimeWidget.php b/core/lib/Drupal/Core/Datetime/Plugin/Field/FieldWidget/TimestampDatetimeWidget.php
index 1ffa010916..2b1cefb6a5 100644
--- a/core/lib/Drupal/Core/Datetime/Plugin/Field/FieldWidget/TimestampDatetimeWidget.php
+++ b/core/lib/Drupal/Core/Datetime/Plugin/Field/FieldWidget/TimestampDatetimeWidget.php
@@ -23,13 +23,56 @@
*/
class TimestampDatetimeWidget extends WidgetBase {
+ /**
+ * {@inheritdoc}
+ */
+ public static function defaultSettings() {
+ return [
+ 'default_blank' => FALSE,
+ ] + parent::defaultSettings();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function settingsForm(array $form, FormStateInterface $form_state) {
+ $element['default_blank'] = [
+ '#type' => 'checkbox',
+ '#title' => t('Leave blank by default.'),
+ '#default_value' => $this->getSetting('default_blank'),
+ '#weight' => -1,
+ ];
+ return $element;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function settingsSummary() {
+ $summary = [];
+
+ $default_blank = $this->getSetting('default_blank');
+ $summary[] = t('Blank by default: @default_blank', ['@default_blank' => ($default_blank ? t('Yes') : 'No')]);
+
+ return $summary;
+ }
+
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$date_format = DateFormat::load('html_date')->getPattern();
$time_format = DateFormat::load('html_time')->getPattern();
+
$default_value = isset($items[$delta]->value) ? DrupalDateTime::createFromTimestamp($items[$delta]->value) : '';
+ // Leave default as blank if the node is new and has setting.
+ if (
+ $this->getSetting('default_blank') &&
+ $form_state->getFormObject()->getEntity()->isNew()
+ ) {
+ $default_value = '';
+ }
+
$element['value'] = $element + [
'#type' => 'datetime',
'#default_value' => $default_value,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment