diff --git a/app/routes.php b/app/routes.php index 3c3693deee07b6c8a312049a233a721094886821..a7827a1cd84a531218e91c5f3a0c0aba4484da13 100644 --- a/app/routes.php +++ b/app/routes.php @@ -13,6 +13,8 @@ use App\Application\Actions\User\ViewModifyForm; use App\Application\Actions\Group\CreateGroupAction; use App\Application\Actions\Group\ListGroupsAction; use App\Application\Actions\Group\ViewGroupAction; +use App\Application\Actions\Group\ViewModifyGroupForm; +use App\Application\Actions\Group\ModifyGroupAction; use App\Application\Actions\Group\AddUserGroupAction; use App\Application\Actions\Search\SearchAction; @@ -122,6 +124,8 @@ return function (App $app) { return $this->get(Twig::class)->render($response, "/group/create_group.twig", []); }); $group->get('', ListGroupsAction::class); + $group->get('/{id}/modify', ViewModifyGroupForm::class); + $group->post('/{id}/modify', ModifyGroupAction::class); $group->post('/{id}/add', AddUserGroupAction::class); $group->get('/{id}', ViewGroupAction::class); diff --git a/src/Application/Actions/Group/ModifyGroupAction.php b/src/Application/Actions/Group/ModifyGroupAction.php index d4fdd0201b6b66dde954c26b2d0e18d17fe3f3a9..a7ac7ee3f38e63ff44793dc04da526a96711d7c6 100644 --- a/src/Application/Actions/Group/ModifyGroupAction.php +++ b/src/Application/Actions/Group/ModifyGroupAction.php @@ -31,13 +31,14 @@ class ModifyGroupAction extends GroupAction "description" => $description, "private" => $private, "name_formstatus" => true, - "formstatus" => "error" + "formstatus" => "error", + "session" => $_SESSION ) ); } $group_db = $this->groupRepository->find($group_id); - $group_db->setGroupname($name); + $group_db->setName($name); $group_db->setDescription($description); $group_db->setPrivate($private); @@ -45,9 +46,10 @@ class ModifyGroupAction extends GroupAction $this->em->flush(); $this->logger->info("Your account has been changed."); + $this->flash->addMessage('modify_group', 'The group has been updated.'); return $this->response - ->withHeader('Location', '/account') + ->withHeader('Location', "/groups/" . $group_id) ->withStatus(302); } diff --git a/src/Application/Actions/Group/ViewModifyGroupForm.php b/src/Application/Actions/Group/ViewModifyGroupForm.php index 8a7e00edd916acb1105a55ba090106c413c9bb88..9136da7716b76377f6bd4f208a723e87c3868153 100644 --- a/src/Application/Actions/Group/ViewModifyGroupForm.php +++ b/src/Application/Actions/Group/ViewModifyGroupForm.php @@ -15,21 +15,19 @@ class ViewModifyGroupForm extends GroupAction { $parsedRequestBody = (array)$this->request->getParsedBody(); - $groupId = (int) $parsedRequestBody['groupId'];; + $groupId = (int) $this->resolveArg('id'); $group = $this->groupRepository->find($groupId); - if ($group->checkAdmin($_SESSION['userId'])){ + if (!isset($group)) { + throw new GroupNotFoundException(); + } + + if (!$group->checkAdmin($_SESSION['userId'])){ return $this->response ->withHeader('Location', '/account') ->withStatus(302); } - $group = $this->groupRepository->find($groupId); - - if (!isset($group)) { - throw new GroupNotFoundException(); - } - return $this->twig->render($this->response, "/group/modify_group.twig", ["group" => $group, "session" => $_SESSION]); } } diff --git a/templates/group/group_view.twig b/templates/group/group_view.twig index 458d218d582444ab554a29cc8f43ef3c2371fa12..618a2c4d4573d649728adcb2427f9ed24c42131f 100644 --- a/templates/group/group_view.twig +++ b/templates/group/group_view.twig @@ -14,11 +14,10 @@ </div> <div class="extra content" id="icons_users"> <div class="ui small basic icon buttons"> - {% if group.getAdmin(session.userId) %} - <form action="/group/modify" method="get"> + <form action="/groups/{{group.getId}}/modify" method="get"> <button type="submit" class="ui button"><i class="edit icon"></i></button> </form> - <form action="/group/delete" method="post"> + <form action="/groups/{{group.getId}}/delete" method="post"> <button type="submit" class="ui button"><i class="trash icon"></i></button> </form> {% if group.hasUser(session.userId) == false %} diff --git a/templates/group/modify_group.twig b/templates/group/modify_group.twig index 3f227dfc22f7c6147809065cbe0d8bb73d56478e..3673a513294e1f3b57a1c179ebd120827d42bc9a 100644 --- a/templates/group/modify_group.twig +++ b/templates/group/modify_group.twig @@ -1 +1,18 @@ -{% extends 'common/layout.twig' %} \ No newline at end of file +{% extends 'common/layout.twig' %} +{% block content %} +<div class="form_format"> +<form class="ui form {% if formstatus %} {{formstatus}} {% endif %} " action="/groups/{{group.getId}}/modify" method="post"> +<h4 class="ui dividing header">Modify the group {{group.name}}</h4> + <div class="field"> + <input type="text" name="name" id="name" placeholder="name" value="{{group.name}}" required> + </div> + <div class="field"> + <textarea name="description" id="description" placeholder="Description" value="{{group.description}}" required></textarea> + </div> + <div class="field"> + <input type="checkbox" name="private" id="private" value="private"><label for="private"> Private group </label> + </div> + <input type="submit" class="ui submit button"> +</form> +</div> +{% endblock %} \ No newline at end of file