Skip to content
Snippets Groups Projects
Commit d66e3060 authored by Sebastien's avatar Sebastien
Browse files

Allow acces to the capsule in edition mode with the url "capule/edit/${path}"

parent edef1f97
No related branches found
No related tags found
3 merge requests!43tuleap-83-access-my-capsules,!42Draft: access-my-capsules-conflicts-fixed,!40Draft: Tuleap 83 access my capsules
Pipeline #703 passed
......@@ -46,7 +46,7 @@ class CapsuleBuilder
public function withPreviewLink(string $preview_link): CapsuleBuilder
{
$this->capsule->setPreviewLink($preview_link);
$this->capsule->setPath($preview_link);
$this->hasRequiredPreviewLink = true;
return $this;
}
......@@ -63,7 +63,7 @@ class CapsuleBuilder
"The call of CapsuleBuilder::withPassword should be " .
"called before CapsuleBuilder::createEditionLink"
);
$this->capsule->setEditionLink($this->capsule->getPreviewLink() .
$this->capsule->setEditionLink($this->capsule->getPath() .
"/?p=" . $this->capsule->getPassword());
$this->hasRequiredEditionLink = true;
}
......
......@@ -12,6 +12,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Uid\Uuid;
use Symfony\Contracts\Translation\TranslatorInterface;
class CapsuleController extends AbstractController
{
......@@ -93,7 +94,37 @@ class CapsuleController extends AbstractController
$url = $this->getParameter('app.legacy_external_prefix') . '/' . $path . "/?w=1";
return $this->render(
'capsule/preview.html.twig',
'project/project_view.html.twig',
[ 'url' => $url ]
);
}
/**
* @Route("capsule/edit/{path}", name="edit_capsule")
*/
public function edit(string $path, CapsuleRepository $capsuleRepository, TranslatorInterface $translator): Response
{
$current_user = $this->getUser();
if (! $current_user instanceof User) {
return $this->redirectToRoute('app_logout');
}
$capsule = $capsuleRepository->findOneBy(['link_path' => $path, 'creation_author' => $current_user]);
if (null === $capsule) {
$this->addFlash('warning', $translator->trans('capsule.edition_not_allowed'));
return $this->redirectToRoute('capsule_list');
}
$file_path = '../legacy/' . $path;
if (!file_exists($file_path)) {
return $this->render('capsule/capsule_not_found.html.twig');
}
$url = $this->getParameter('app.legacy_external_prefix') . '/' . $capsule->getEditionLink();
return $this->render(
'project/project_view.html.twig',
[ 'url' => $url ]
);
}
......
......@@ -27,11 +27,11 @@ class ProjectController extends AbstractController
chdir('../legacy/');
$capsule_name = $capsule->getName();
$capsule_directory = $capsule->getPreviewLink();
$capsule_directory = $capsule->getPath();
if (file_exists($capsule_directory)) {
$this->addFlash(
'project_already_exists',
'warning',
$translator->trans(
'project.already_exists',
[
......
......@@ -62,7 +62,7 @@ class Capsule
*
* @ORM\Column(name="link", type="string", length=255, nullable=false)
*/
private string $preview_link;
private string $link_path;
/**
*
......@@ -121,14 +121,14 @@ class Capsule
return $this;
}
public function getPreviewLink(): string
public function getPath(): string
{
return $this->preview_link;
return $this->link_path;
}
public function setPreviewLink(string $preview_link): Capsule
public function setPath(string $preview_link): Capsule
{
$this->preview_link = $preview_link;
$this->link_path = $preview_link;
return $this;
}
......
......@@ -21,7 +21,7 @@
</form>
</div>
{% for flashWarning in app.flashes('project_already_exists') %}
{% for flashWarning in app.flashes('warning') %}
<div class="text-center alert alert-warning col-5 mx-auto my-5" role="alert">
{{ flashWarning }}
</div>
......@@ -39,7 +39,7 @@
<div class="capsule-item pb-4 m-5">
<div class="d-flex flex-column flex-md-row justify-content-center align-items-center mt-sm-4">
<div class="list-item">
<a href="/capsule/preview/{{ capsule.getPreviewLink() }}" class="capsule-title">
<a href="/capsule/preview/{{ capsule.getPath() }}" class="capsule-title">
{{ capsule.getName() }}
</a>
</div>
......@@ -51,7 +51,7 @@
<div class="d-flex flex-column flex-md-row justify-content-center align-items-center">
<div class="m-4 ratio ratio-16x9">
<iframe
src="/capsule/preview/{{ capsule.getPreviewLink() }}"
src="/capsule/preview/{{ capsule.getPath() }}"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>
......@@ -74,7 +74,7 @@
Delete capsule
</a>
</div>
<a href="{{ capsule.getEditionLink() }}" class="list-item lh-md">
<a href="capsule/edit/{{ capsule.getPath() }}" class="list-item lh-md">
<button class="standard-button p-2">
Edit capsule
</button>
......
......@@ -117,7 +117,7 @@ class ProjectControllerTest extends WebTestCase
}
$capsule_name_in_db = $capsule_in_db->getName();
$capsule_directory = $capsule_in_db->getPreviewLink();
$capsule_directory = $capsule_in_db->getPath();
$this->assertDirectoryExists($capsule_directory);
$this->assertDirectoryIsReadable($capsule_directory);
......@@ -160,7 +160,7 @@ class ProjectControllerTest extends WebTestCase
}
$capsule_name_in_db = $capsule_in_db->getName();
$capsule_directory = $capsule_in_db->getPreviewLink();
$capsule_directory = $capsule_in_db->getPath();
$this->assertDirectoryExists($capsule_directory);
$this->assertDirectoryIsReadable($capsule_directory);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment