diff --git a/assets/styles/app.scss b/assets/styles/app.scss index f1349795614fa1f72aa9dded9d17d5c9946574c1..4cb6082d77715d3584394c8b10648ae2f40f4776 100644 --- a/assets/styles/app.scss +++ b/assets/styles/app.scss @@ -131,6 +131,7 @@ button[type=submit]{ .button-cancel { border: none; border-radius: 3px; + background-color: #5c636a; } .button-cancel:hover { diff --git a/src/Controller/CapsuleGroupController.php b/src/Controller/CapsuleGroupController.php index 4bd67e9208c62104e6f0954a05caef8ff5c92ea6..016ee13f6ef2fe1bace612396494e5d7a22307e2 100755 --- a/src/Controller/CapsuleGroupController.php +++ b/src/Controller/CapsuleGroupController.php @@ -5,7 +5,7 @@ namespace App\Controller; use App\Entity\Capsule; use App\Entity\Group; use App\Entity\User; -use App\Form\EditCapsuleGroupsFormType; +use App\Form\CreateCapsuleGroupsFormType; use App\Repository\CapsuleRepository; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -41,7 +41,7 @@ class CapsuleGroupController extends AbstractController return $this->redirectToRoute('app_logout'); } - $form = $this->createForm(EditCapsuleGroupsFormType::class); + $form = $this->createForm(CreateCapsuleGroupsFormType::class); $form->handleRequest($request); $capsule = $this->capsule_repository->findOneBy(['id' => $capsule_id]); @@ -52,22 +52,71 @@ class CapsuleGroupController extends AbstractController $groups = $capsule->getGroups(); + if ($form->isSubmitted() && $form->isValid()) { +// $group_name = $form->get('name')->getData(); +// $group = new Group(); +// $group->setName($group_name); +// $this->entity_manager->persist($group); +// $capsule->addGroup($group); +// $this->entity_manager->persist($capsule); +// $this->entity_manager->flush(); +// +// $this->addFlash( +// 'success', +// $this->translator->trans( +// 'groups.add.success', +// [ +// 'group_name' => $group->getName(), +// 'capsule_name' => $capsule->getName() +// ] +// ) +// ); + + return $this->redirectToRoute('edit_capsule_groups', [ + 'capsule_id' => $capsule_id + ]); + } + + return $this->render('capsule/groups/edit.html.twig', [ + 'editCapsuleGroupsForm' => $form->createView(), + 'capsule' => $capsule, + 'groups' => $groups + ]); + } + + /** + * @Route("capsule/{capsule_id}/groups/create", name="create_group") + */ + public function create(int $capsule_id, Request $request): Response + { + $current_user = $this->getUser(); + + if (! $current_user instanceof User) { + return $this->redirectToRoute('app_logout'); + } + + $form = $this->createForm(CreateCapsuleGroupsFormType::class); + $form->handleRequest($request); + + $capsule = $this->capsule_repository->findOneBy(['id' => $capsule_id]); + + if (! $capsule instanceof Capsule) { + throw new \Exception("Capsule does not exist"); + } + if ($form->isSubmitted() && $form->isValid()) { $group_name = $form->get('name')->getData(); $group = new Group(); $group->setName($group_name); $this->entity_manager->persist($group); - $capsule->addGroup($group); - $this->entity_manager->persist($capsule); $this->entity_manager->flush(); $this->addFlash( 'success', $this->translator->trans( - 'groups.add.success', + 'groups.create.success', [ - 'group_name' => $group->getName(), - 'capsule_name' => $capsule->getName() + 'group_name' => $group->getName() ] ) ); @@ -77,10 +126,9 @@ class CapsuleGroupController extends AbstractController ]); } - return $this->render('capsule/groups/edit.html.twig', [ - 'editCapsuleGroupsForm' => $form->createView(), - 'capsule_name' => $capsule->getName(), - 'groups' => $groups + return $this->render('capsule/groups/create.html.twig', [ + 'createCapsuleGroupsForm' => $form->createView(), + 'capsule' => $capsule ]); } } diff --git a/src/Form/EditCapsuleGroupsFormType.php b/src/Form/CreateCapsuleGroupsFormType.php similarity index 69% rename from src/Form/EditCapsuleGroupsFormType.php rename to src/Form/CreateCapsuleGroupsFormType.php index 848ce640e00eca70a257ea51a21dd2d1bc7201a3..1c03108ff6b6f186cbd4e331aa7c8ae4f80d1c3b 100755 --- a/src/Form/EditCapsuleGroupsFormType.php +++ b/src/Form/CreateCapsuleGroupsFormType.php @@ -5,13 +5,14 @@ namespace App\Form; use App\Entity\Capsule; use App\Entity\Group; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\ButtonType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\NotBlank; -class EditCapsuleGroupsFormType extends AbstractType +class CreateCapsuleGroupsFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { @@ -21,13 +22,20 @@ class EditCapsuleGroupsFormType extends AbstractType TextType::class, [ 'constraints' => [new NotBlank(['message' => 'group.name.not_blank'])], - 'label' => 'groups.add.name' + 'label' => 'groups.create.name' ] ) ->add( 'validate', SubmitType::class, - ['label' => 'groups.add.validate'] + ['label' => 'groups.create.validate'] + ) + ->add( + 'go_back', + ButtonType::class, + ['label' => 'groups.create.go_back', + 'attr' => ['class' => 'button-cancel'] + ] ); } diff --git a/templates/capsule/groups/create.html.twig b/templates/capsule/groups/create.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..3385001eb2ca13b7250b4db8713a47ae455637e9 --- /dev/null +++ b/templates/capsule/groups/create.html.twig @@ -0,0 +1,33 @@ +{% extends 'layout.html.twig' %} + +{% block title %} + {{ 'groups.create.title'|trans }} + - + {{ parent() }} +{% endblock %} + +{% block body %} + + <div> + <div class="row w-100 gx-0"> + <div class="row-title-box"> + <h3 class="row-title"> + {{ 'groups.create.title'|trans }} + </h3> + </div> + </div> + +{# <div class="d-flex flex-md-row flex-column justify-content-center">#} + <div class="d-flex flex-column justify-content-center ms-md-5 ms-0 order-md-2 mb-4 col-sm-8 col-md-6 col-lg-5 col-xl-4"> + {{ form_start(createCapsuleGroupsForm, {'attr': {novalidate: 'novalidate'}}) }} + {{ form_row(createCapsuleGroupsForm.name, {'row_attr': {'class' : 'm-auto mb-4'}}) }} + {{ form_row(createCapsuleGroupsForm.validate) }} + <a href="/capsule/{{ capsule.getId() }}/groups/edit"> + {{ form_row(createCapsuleGroupsForm.go_back) }} + </a> + {{ form_end(createCapsuleGroupsForm) }} + </div> +{# </div>#} + </div> + +{% endblock %} \ No newline at end of file diff --git a/templates/capsule/groups/edit.html.twig b/templates/capsule/groups/edit.html.twig index eec293bacfdfae354ebd1f28c726c6b22cca07f0..75aadcd391e2e095c49fa4678865a11a4dd3e3fa 100644 --- a/templates/capsule/groups/edit.html.twig +++ b/templates/capsule/groups/edit.html.twig @@ -12,7 +12,7 @@ <div class="row w-100 gx-0"> <div class="row-title-box"> <h3 class="row-title"> - {{ 'groups.edit.title_with_capsule_name'|trans({'%capsule_name%': capsule_name}) }} + {{ 'groups.edit.title_with_capsule_name'|trans({'%capsule_name%': capsule.getName()}) }} </h3> </div> </div> @@ -30,12 +30,29 @@ {% endfor %} <div class="d-flex flex-md-row flex-column justify-content-center"> - <div class="d-flex flex-column justify-content-center ms-md-5 ms-0 order-md-2 mb-4 col-sm-8 col-md-6 col-lg-5 col-xl-4"> - {{ form_start(editCapsuleGroupsForm, {'attr': {novalidate: 'novalidate'}}) }} - {{ form_row(editCapsuleGroupsForm.name, {'row_attr': {'class' : 'm-auto mb-4'}}) }} - {{ form_row(editCapsuleGroupsForm.validate) }} - {{ form_end(editCapsuleGroupsForm) }} - </div> +{# <div class="d-flex flex-column justify-content-center ms-md-5 ms-0 order-md-2 mb-4 col-sm-8 col-md-6 col-lg-5 col-xl-4">#} +{# {{ form_start(addCapsuleGroupsForm, {'attr': {novalidate: 'novalidate'}}) }}#} +{# {{ form_row(addCapsuleGroupsForm.name, {'row_attr': {'class' : 'm-auto mb-4'}}) }}#} +{# {{ form_row(addCapsuleGroupsForm.validate) }}#} +{# {{ form_end(addCapsuleGroupsForm) }}#} +{# </div>#} + +{# <select class="form-select" multiple aria-label="multiple select example">#} +{# {% for existing_group in existing_groups %}#} +{# <option selected>{{ existing_group->getName() }}</option>#} +{# <option value="1">One</option>#} +{# </select>#} + + <a href="/capsule/{{ capsule.getId() }}/groups/create"> + Add a new group + </a> + +{# <div class="d-flex flex-column justify-content-center ms-md-5 ms-0 order-md-2 mb-4 col-sm-8 col-md-6 col-lg-5 col-xl-4">#} +{# {{ form_start(createCapsuleGroupsForm, {'attr': {novalidate: 'novalidate'}}) }}#} +{# {{ form_row(createCapsuleGroupsForm.name, {'row_attr': {'class' : 'm-auto mb-4'}}) }}#} +{# {{ form_row(createCapsuleGroupsForm.validate) }}#} +{# {{ form_end(createCapsuleGroupsForm) }}#} +{# </div>#} <div class="d-flex flex-row pe-md-5 pb-3 fw-normal me-0 me-md-5"> <div class="pe-3 pe-md-4 text-nowrap"> diff --git a/translations/messages.en.yaml b/translations/messages.en.yaml index 19966f0a07f484e242e318f0d84295d85dbbbe56..2f9093850e6aebe835c41c356bad46671f6f29ac 100644 --- a/translations/messages.en.yaml +++ b/translations/messages.en.yaml @@ -149,7 +149,11 @@ groups: edit: title: Edit capsule groups title_with_capsule_name: Groups for capsule %capsule_name% - add: + create: + title: Create a new group + success: Group group_name has been created successfully name: Choose a new group name validate: Create a new group + go_back: Go back to capsule groups + add: success: Group group_name has been added successfully to capsule capsule_name \ No newline at end of file diff --git a/translations/messages.fr.yaml b/translations/messages.fr.yaml index a840034928e7a954166cace54688989e1fc3f30d..7e4e87e4c7c8ce2de5925d3ec0b91f91a8254439 100644 --- a/translations/messages.fr.yaml +++ b/translations/messages.fr.yaml @@ -163,7 +163,11 @@ groups: edit: title: Modifier les groupes title_with_capsule_name: Groupes de la capsule %capsule_name% - add: + create: + title: Créer un nouveau groupe + success: Le groupe group_name a bien été créé name: Choisir un nom de groupe validate: Créer un nouveau groupe + go_back: Retourner à la liste des groupes + add: success: Le groupe group_name a bien été ajouté à la capsule capsule_name \ No newline at end of file