diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php index e31747eb29d24213d22f15986230a81a08df9ba7..1186b4d88c00c2b20b6b6d3f94edc85b968dfc0f 100644 --- a/src/Controller/ProjectController.php +++ b/src/Controller/ProjectController.php @@ -7,6 +7,7 @@ use App\Entity\PendingEditorInvitation; use App\Exception\ZipArchiveNotOpeningException; use App\Form\EditVideoUrlFormType; use App\Form\RemoveEditorFormType; +use App\Repository\CapsuleRepository; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Translation\Translator; use Symfony\Component\Config\Util\Exception\XmlParsingException; @@ -51,7 +52,7 @@ class ProjectController extends AbstractController $this->extractZipArchiveInNewCapsuleDirectory($capsule_directory); - $this->addProjectVideoUrlInXMLProjectFile($capsule_directory, $video_url); + $this->setVideoUrlNodeAttributeInXMLProjectFile($capsule_directory, $video_url); $this->createOrUpdatePasswordFile($capsule_directory, $capsule->getPassword()); @@ -130,9 +131,9 @@ class ProjectController extends AbstractController $zip->close(); } - private function addProjectVideoUrlInXMLProjectFile(string $capsule_directory, string $video_url): void + private function setVideoUrlNodeAttributeInXMLProjectFile(string $project_directory, string $video_url): void { - $project_xml_file = $capsule_directory . "/file/project.xml"; + $project_xml_file = $project_directory . "/file/project.xml"; $xml_file_content = simplexml_load_file($project_xml_file); if (false === $xml_file_content) { @@ -171,16 +172,32 @@ class ProjectController extends AbstractController /** * @Route("/capsule/{capsule_id}/edit_video_url", name="edit_video_url") */ - public function editVideoUrl(int $capsule_id, Request $request, TranslatorInterface $translator): Response - { + public function editVideoUrl( + int $capsule_id, + Request $request, + TranslatorInterface $translator, + CapsuleRepository $capsule_repository + ): Response { + $capsule = $capsule_repository->findOneBy(['id' => $capsule_id]); + if (! $capsule instanceof Capsule) { + throw new \Exception('The retrieved capsule is not an instance of Capsule.'); + } + $form = $this->createForm(EditVideoUrlFormType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { + $new_video_url = $form->get('new_video_url')->getData(); + $project_directory = $capsule->getLinkPath(); + + chdir('../legacy/'); + $this->setVideoUrlNodeAttributeInXMLProjectFile($project_directory, $new_video_url); +// $this->rescheduleProjectAnnotations($project_XML_file_path); + $this->addFlash( 'success', $translator->trans( - 'editors.remove.pending_editor.success' + 'capsule.edit.video_url.success' ) ); @@ -190,8 +207,7 @@ class ProjectController extends AbstractController } return $this->render('project/edit_video_url.html.twig', [ - 'editVideoUrlForm' => $form->createView(), -// 'capsule_id' => $capsule_id + 'editVideoUrlForm' => $form->createView() ]); } } diff --git a/src/Form/EditVideoUrlFormType.php b/src/Form/EditVideoUrlFormType.php index 4c36f7277779170085b24193cb71445cab85ae99..2cd948f8ad634cd142ea68c0189b7587fbc56b26 100644 --- a/src/Form/EditVideoUrlFormType.php +++ b/src/Form/EditVideoUrlFormType.php @@ -16,7 +16,7 @@ class EditVideoUrlFormType extends AbstractType { $builder ->add( - 'video_url', + 'new_video_url', UrlType::class, [ 'constraints' => [new NotBlank(['message' => 'capsule.video_url.not_blank'])], diff --git a/templates/project/edit_video_url.html.twig b/templates/project/edit_video_url.html.twig index 7ccf3cfa3778ca30a4e86a3589634d944cb88d6b..7188f1ee43d0f1f34dafb2ad8114f01f54abd421 100644 --- a/templates/project/edit_video_url.html.twig +++ b/templates/project/edit_video_url.html.twig @@ -16,7 +16,7 @@ </div> {{ form_start(editVideoUrlForm, {'attr': {novalidate: 'novalidate', 'class': 'd-flex flex-column justify-content-center'}}) }} - {{ form_row(editVideoUrlForm.video_url, {'row_attr': {'class' : 'm-auto mb-4 col-6'}}) }} + {{ form_row(editVideoUrlForm.new_video_url, {'row_attr': {'class' : 'm-auto mb-4 col-6'}}) }} {{ form_row(editVideoUrlForm.save, {'row_attr': {'class' : 'm-auto mb-5 col-2'}}) }} {{ form_end(editVideoUrlForm) }} diff --git a/translations/messages.en.yaml b/translations/messages.en.yaml index 43cbb82fd0bfd24431b866f91f3ecea245083594..415057818a94148cae7e1ce71722e87e0a8c5a7d 100644 --- a/translations/messages.en.yaml +++ b/translations/messages.en.yaml @@ -75,6 +75,7 @@ capsule: link: Edit video URL text: Enter a new video URL from Youtube or Vimeo title: Edit video URL + success: The video URL of the project has been updated successfully duplicate: link: Duplicate capsule title: Duplicate capsule diff --git a/translations/messages.fr.yaml b/translations/messages.fr.yaml index 27713bd2b27632b85b8b98d21bec66947b6ca6b9..68b09993160217c67060d56105cd971ff936982c 100644 --- a/translations/messages.fr.yaml +++ b/translations/messages.fr.yaml @@ -72,6 +72,7 @@ capsule: link: Modifier l'URL de la vidéo text: Saisir l'URL de la nouvelle vidéo Youtube ou Vimeo title: Modifier l'URL de la vidéo + success: L'URL de la vidéo du projet a bien été mise à jour duplicate: link: Dupliquer la capsule title: Dupliquer la capsule