Overrides Drupal\Core\Entity\EntityForm::save().
public function save(array $form, FormStateInterface $form_state) {
parent::save($form, $form_state);
// Everything below this line is only invoked if the 'Submit to provider'
// button was clicked.
if (isset($form['actions']['submit']) && $form_state
->getTriggeringElement()['#value'] == $form['actions']['submit']['#value']) {
if ($this->entity
->get('label')
->isEmpty()) {
$this->entity
->set('label', $this->entity
->label());
}
// Delete conflicting items.
$storage = \Drupal::entityTypeManager()
->getStorage('tmgmt_job_item');
if ($existing_items_ids = $form_state
->get('existing_item_ids')) {
$storage
->delete($storage
->loadMultiple($existing_items_ids));
$num_of_items = count($existing_items_ids);
$this
->messenger()
->addWarning(\Drupal::translation()
->formatPlural($num_of_items, '1 conflicting item has been dropped.', '@count conflicting items have been dropped.'));
}
if ($form_state
->getValue('submit_all')) {
$this
->getRequest()->query
->remove('destination');
$translator_id = $form_state
->getValue('translator');
if ($translator = Translator::load($translator_id)) {
if ($translator
->getPlugin() instanceof MultipleCheckoutInterface) {
$this->jobCheckoutManager
->requestTranslationMultiple($this->jobQueue
->getAllJobs(), $translator);
if ($redirect = $this->jobQueue
->getNextUrl()) {
// Proceed to the next redirect queue item, if there is one.
$form_state
->setRedirectUrl($redirect);
}
elseif ($destination = $this->jobQueue
->getDestination()) {
// Proceed to the defined destination if there is one.
$form_state
->setRedirectUrl(Url::fromUri('base:' . $destination));
}
else {
// Per default we want to redirect the user to the overview.
$form_state
->setRedirectUrl(Url::fromRoute('view.tmgmt_job_overview.page_1'));
}
return;
}
}
$batch = array(
'title' => t('Submitting jobs'),
'operations' => [],
'finished' => [
JobCheckoutManager::class,
'batchSubmitFinished',
],
);
foreach ($this->jobQueue
->getAllJobs() as $job) {
$batch['operations'][] = [
[
JobCheckoutManager::class,
'batchSubmit',
],
[
$job
->id(),
$this->entity
->id(),
],
];
}
batch_set($batch);
return;
}
if (!$this->jobCheckoutManager
->requestTranslation($this->entity)) {
// Don't redirect the user if the translation request failed but retain
// existing destination parameters so we can redirect once the request
// finished successfully.
$this
->getRequest()->query
->remove('destination');
return;
}
else {
$this->jobQueue
->markJobAsProcessed($this->entity);
}
if ($redirect = $this->jobQueue
->getNextUrl()) {
// Proceed to the next redirect queue item, if there is one.
$form_state
->setRedirectUrl($redirect);
}
elseif ($destination = $this->jobQueue
->getDestination()) {
// Proceed to the defined destination if there is one.
$form_state
->setRedirectUrl(Url::fromUri('base:' . $destination));
}
else {
// Per default we want to redirect the user to the overview.
$form_state
->setRedirect('view.tmgmt_job_overview.page_1');
}
}
else {
// Per default we want to redirect the user to the overview.
$form_state
->setRedirect('view.tmgmt_job_overview.page_1');
}
}