public function ScheduledPublishWidget::handleSubmissions in Scheduled Publish 8.3
Handles submissions.
1 call to ScheduledPublishWidget::handleSubmissions()
- ScheduledPublishWidget::formElement in src/
Plugin/ Field/ FieldWidget/ ScheduledPublishWidget.php - Returns the form for a single field widget.
File
- src/
Plugin/ Field/ FieldWidget/ ScheduledPublishWidget.php, line 426
Class
- ScheduledPublishWidget
- Plugin implementation of the 'scheduled_publish_widget' widget.
Namespace
Drupal\scheduled_publish\Plugin\Field\FieldWidgetCode
public function handleSubmissions(FormStateInterface $form_state) {
$triggering_element = $form_state
->getTriggeringElement();
if (!$triggering_element || !isset($triggering_element['#sp_id'], $triggering_element['#name'])) {
return;
}
// Saving new entries.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-entry-add';
if ($triggering_element['#name'] === $button_name) {
$this
->submitSaveEntry($form_state, $triggering_element);
}
if (!isset($triggering_element['#sp_row_delta'])) {
return;
}
$entries = $form_state
->get([
'scheduled_publish',
$triggering_element['#sp_id'],
]);
// Enabling remove form.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-entry-remove-' . $triggering_element['#sp_row_delta'];
if ($triggering_element['#name'] === $button_name) {
$entries[$triggering_element['#sp_row_delta']]['form'] = 'remove';
}
// Canceling remove form.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-remove-cancel-' . $triggering_element['#sp_row_delta'];
if ($triggering_element['#name'] === $button_name) {
$entries[$triggering_element['#sp_row_delta']]['form'] = NULL;
}
// Saving remove form.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-remove-confirm-' . $triggering_element['#sp_row_delta'];
if ($triggering_element['#name'] === $button_name) {
unset($entries[$triggering_element['#sp_row_delta']]);
}
// Enabling edit form.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-entry-edit-' . $triggering_element['#sp_row_delta'];
if ($triggering_element['#name'] === $button_name) {
$entries[$triggering_element['#sp_row_delta']]['form'] = 'edit';
}
// Canceling edit form.
$button_name = 'sp-' . $triggering_element['#sp_id'] . '-edit-cancel-' . $triggering_element['#sp_row_delta'];
if ($triggering_element['#name'] === $button_name) {
$entries[$triggering_element['#sp_row_delta']]['form'] = NULL;
}
// Saving edit form.
$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['value']['date'] && $values['value']['time']) {
$date = new DrupalDateTime($values['value']['date'] . ' ' . $values['value']['time'], date_default_timezone_get());
$date_display = $date
->format('d.m.Y - H:i');
$date
->setTimezone(new \DateTimezone(ScheduledPublish::STORAGE_TIMEZONE));
$entries[$triggering_element['#sp_row_delta']] = [
'date' => $date
->format(ScheduledPublish::DATETIME_STORAGE_FORMAT),
'date_display' => $date_display,
'state' => $values['moderation_state'],
'state_display' => NULL,
'state_options' => [],
'delta' => NULL,
'form' => NULL,
];
}
}
$form_state
->set([
'scheduled_publish',
$triggering_element['#sp_id'],
], $entries);
$this
->handleEntries($form_state, $triggering_element['#sp_id']);
}