public static function ScheduledPublishWidget::validateElement in Scheduled Publish 8.3
Handle element validation.
File
- src/
Plugin/ Field/ FieldWidget/ ScheduledPublishWidget.php, line 380
Class
- ScheduledPublishWidget
- Plugin implementation of the 'scheduled_publish_widget' widget.
Namespace
Drupal\scheduled_publish\Plugin\Field\FieldWidgetCode
public static function validateElement($element, FormStateInterface $form_state) {
$triggering_element = $form_state
->getTriggeringElement();
if (!$triggering_element || !isset($triggering_element['#sp_id'], $triggering_element['#name'])) {
return;
}
$error_past_date = t("Date cannot be in the past");
// Saving new entries.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-entry-add';
if ($triggering_element['#name'] === $button_name) {
$values = $form_state
->getValue($triggering_element['#sp_id']);
if (!$values || !$values['value']) {
$form_state
->setError($element, t('All fields need to be filled'));
}
elseif ($values['value'] < new DrupalDateTime()) {
$form_state
->setError($element, $error_past_date);
}
}
if (!isset($triggering_element['#sp_row_delta'])) {
return;
}
// Editing entries.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-edit-confirm-' . $triggering_element['#sp_row_delta'];
if ($triggering_element['#name'] === $button_name) {
$value_array = [
$triggering_element['#sp_id'],
'entries',
$triggering_element['#sp_row_delta'],
'form',
];
$values = $form_state
->getValue($value_array);
if (!$values['moderation_state'] || !$values['value']['date'] || !$values['value']['time']) {
$form_state
->setError($element, t('All fields need to be filled'));
}
elseif (strtotime($values['value']['date'] . ' ' . $values['value']['time']) < time()) {
$form_state
->setError($element, $error_past_date);
}
}
}