|
|
|
@ -12,7 +12,7 @@ use Drupal\doi_prefill\CrossrefApiReader; |
|
|
|
use Drupal\doi_prefill\NodeBuilder; |
|
|
|
use Drupal\doi_prefill\NodeBuilder; |
|
|
|
use Symfony\Component\HttpFoundation\RedirectResponse; |
|
|
|
use Symfony\Component\HttpFoundation\RedirectResponse; |
|
|
|
use Drupal\Core\Render\Markup; |
|
|
|
use Drupal\Core\Render\Markup; |
|
|
|
|
|
|
|
use Drupal\Core\Messenger\MessengerInterface; |
|
|
|
/** |
|
|
|
/** |
|
|
|
* Provides a DOI Prefill form. |
|
|
|
* Provides a DOI Prefill form. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -39,6 +39,13 @@ final class DoiPrepopulateForm extends FormBase { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
protected $entityTypeManager; |
|
|
|
protected $entityTypeManager; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* The messenger service. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @var \Drupal\Core\Messenger\MessengerInterface |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
protected $messenger; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* The constructor. |
|
|
|
* The constructor. |
|
|
|
* |
|
|
|
* |
|
|
|
@ -49,10 +56,11 @@ final class DoiPrepopulateForm extends FormBase { |
|
|
|
* @param Drupal\doi_prefill\NodeBuilder $nodeBuilder |
|
|
|
* @param Drupal\doi_prefill\NodeBuilder $nodeBuilder |
|
|
|
* The NodeBuilder. |
|
|
|
* The NodeBuilder. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function __construct(CrossrefApiReader $doiApi, EntityTypeManagerInterface $entityTypeManager, NodeBuilder $nodeBuilder) { |
|
|
|
public function __construct(CrossrefApiReader $doiApi, EntityTypeManagerInterface $entityTypeManager, NodeBuilder $nodeBuilder, MessengerInterface $messenger) { |
|
|
|
$this->doiApi = $doiApi; |
|
|
|
$this->doiApi = $doiApi; |
|
|
|
$this->entityTypeManager = $entityTypeManager; |
|
|
|
$this->entityTypeManager = $entityTypeManager; |
|
|
|
$this->nodeBuilder = $nodeBuilder; |
|
|
|
$this->nodeBuilder = $nodeBuilder; |
|
|
|
|
|
|
|
$this->messenger = $messenger; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -65,6 +73,7 @@ final class DoiPrepopulateForm extends FormBase { |
|
|
|
$container->get('doi_prefill.crossref_api_reader'), |
|
|
|
$container->get('doi_prefill.crossref_api_reader'), |
|
|
|
$container->get('entity_type.manager'), |
|
|
|
$container->get('entity_type.manager'), |
|
|
|
$container->get('doi_prefill.node_builder'), |
|
|
|
$container->get('doi_prefill.node_builder'), |
|
|
|
|
|
|
|
$container->get('messenger'), |
|
|
|
); |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -167,8 +176,10 @@ final class DoiPrepopulateForm extends FormBase { |
|
|
|
$doi = trim($form_state->getValue('doi')); |
|
|
|
$doi = trim($form_state->getValue('doi')); |
|
|
|
$collection = $form_state->getValue('collection'); |
|
|
|
$collection = $form_state->getValue('collection'); |
|
|
|
$nid = $this->nodeBuilder->buildNode($collection, $doi); |
|
|
|
$nid = $this->nodeBuilder->buildNode($collection, $doi); |
|
|
|
|
|
|
|
if (empty($nid)) { |
|
|
|
if ($form_state->getValue('redirect') == 'edit') { |
|
|
|
$this->messenger->addWarning($this->t('Crossref returned no information.')); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
$destination = "/node/{$nid}/edit"; |
|
|
|
$destination = "/node/{$nid}/edit"; |
|
|
|
$response = new RedirectResponse($destination); |
|
|
|
$response = new RedirectResponse($destination); |
|
|
|
$response->send(); |
|
|
|
$response->send(); |
|
|
|
|