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 }} - diff --git a/templates/parts/info/_tools.html.twig b/templates/parts/info/_tools.html.twig index 7e3f6f3c..1a2c2a8f 100644 --- a/templates/parts/info/_tools.html.twig +++ b/templates/parts/info/_tools.html.twig @@ -30,6 +30,16 @@ {# Merge modal #} {% include "parts/info/_merge_modal.html.twig" %} +{# Update part from info provider button #} +{% if is_granted('edit', part) and is_granted('@info_providers.create_parts') %} +
+ + + {% trans %}part.update_part_from_info_provider.btn{% endtrans %} + +{% endif %} + +
Merge part + + + part.update_part_from_info_provider.btn + Update part from info providers + + + + + info_providers.update_part.title + Update existing part from info provider + +