diff --git a/src/Controller/InfoProviderController.php b/src/Controller/InfoProviderController.php
index cb95377b..3e8dba3e 100644
--- a/src/Controller/InfoProviderController.php
+++ b/src/Controller/InfoProviderController.php
@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace App\Controller;
+use App\Entity\Parts\Part;
use App\Exceptions\AttachmentDownloadException;
use App\Form\InfoProviderSystem\PartSearchType;
use App\Form\Part\PartBaseType;
@@ -32,6 +33,7 @@ use App\Services\InfoProviderSystem\ProviderRegistry;
use App\Services\LogSystem\EventCommentHelper;
use App\Services\Parts\PartFormHelper;
use Doctrine\ORM\EntityManagerInterface;
+use Symfony\Bridge\Doctrine\Attribute\MapEntity;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Request;
@@ -61,7 +63,8 @@ class InfoProviderController extends AbstractController
}
#[Route('/search', name: 'info_providers_search')]
- public function search(Request $request): Response
+ #[Route('/update/{target}', name: 'info_providers_update_part_search')]
+ public function search(Request $request, #[MapEntity(id: 'target')] ?Part $update_target): Response
{
$this->denyAccessUnlessGranted('@info_providers.create_parts');
@@ -70,6 +73,12 @@ class InfoProviderController extends AbstractController
$results = null;
+ //When we are updating a part, use its name as keyword, to make searching easier
+ //However we can only do this, if the form was not submitted yet
+ if ($update_target !== null && !$form->isSubmitted()) {
+ $form->get('keyword')->setData($update_target->getName());
+ }
+
if ($form->isSubmitted() && $form->isValid()) {
$keyword = $form->get('keyword')->getData();
$providers = $form->get('providers')->getData();
@@ -80,6 +89,7 @@ class InfoProviderController extends AbstractController
return $this->render('info_providers/search/part_search.html.twig', [
'form' => $form,
'results' => $results,
+ 'update_target' => $update_target
]);
}
}
\ No newline at end of file
diff --git a/src/Controller/PartController.php b/src/Controller/PartController.php
index 7090d083..414f9ce5 100644
--- a/src/Controller/PartController.php
+++ b/src/Controller/PartController.php
@@ -250,7 +250,7 @@ class PartController extends AbstractController
]);
}
- #[Route(path: '/{id}/from_info_provider/{providerKey}/{providerId}/update', requirements: ['providerId' => '.+'])]
+ #[Route(path: '/{id}/from_info_provider/{providerKey}/{providerId}/update', name: 'info_providers_update_part', requirements: ['providerId' => '.+'])]
public function updateFromInfoProvider(Part $part, Request $request, string $providerKey, string $providerId,
PartInfoRetriever $infoRetriever, PartMerger $partMerger): Response
{
diff --git a/templates/info_providers/search/part_search.html.twig b/templates/info_providers/search/part_search.html.twig
index c28235c7..c14b1c1f 100644
--- a/templates/info_providers/search/part_search.html.twig
+++ b/templates/info_providers/search/part_search.html.twig
@@ -3,16 +3,25 @@
{% import "info_providers/providers.macro.html.twig" as providers_macro %}
{% import "helper.twig" as helper %}
-{% block title %}{% trans %}info_providers.search.title{% endtrans %}{% endblock %}
+{% block title %}
+ {% if update_target %}
+ {% trans %}info_providers.update_part.title{% endtrans %}
+ {% else %}
+ {% trans %}info_providers.search.title{% endtrans %}
+ {% endif %}
+{% endblock %}
{% block card_title %}
- {% trans %}info_providers.search.title{% endtrans %}
+ {% if update_target %} {# If update_target is set, we update an existing part #}
+ {% trans %}info_providers.update_part.title{% endtrans %}:
+ {{ update_target.name }}
+ {% else %} {# Create a fresh part #}
+ {% trans %}info_providers.search.title{% endtrans %}
+ {% endif %}
{% endblock %}
{% block card_content %}
-
-
{{ form_start(form) }}
{{ form_row(form.keyword) }}
@@ -86,7 +95,15 @@
{{ result.provider_id }}