diff --git a/src/TimesheetBundle/Controller/Admin/ActivityController.php b/src/TimesheetBundle/Controller/Admin/ActivityController.php index 36f6af10..154be6a6 100644 --- a/src/TimesheetBundle/Controller/Admin/ActivityController.php +++ b/src/TimesheetBundle/Controller/Admin/ActivityController.php @@ -47,11 +47,30 @@ class ActivityController extends AbstractController return $this->render('TimesheetBundle:admin:activity.html.twig', ['entries' => $entries]); } + /** + * @Route("/create", name="admin_activity_create") + * @Method({"GET", "POST"}) + */ + public function createAction(Request $request) + { + return $this->renderActivityForm(new Activity(), $request); + } + /** * @Route("/{id}/edit", name="admin_activity_edit") * @Method({"GET", "POST"}) */ public function editAction(Activity $activity, Request $request) + { + return $this->renderActivityForm($activity, $request); + } + + /** + * @param Activity $activity + * @param Request $request + * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response + */ + protected function renderActivityForm(Activity $activity, Request $request) { $editForm = $this->createEditForm($activity); @@ -84,11 +103,17 @@ class ActivityController extends AbstractController */ private function createEditForm(Activity $activity) { + if ($activity->getId() === null) { + $url = $this->generateUrl('admin_activity_create'); + } else { + $url = $this->generateUrl('admin_activity_edit', ['id' => $activity->getId()]); + } + return $this->createForm( ActivityEditForm::class, $activity, [ - 'action' => $this->generateUrl('admin_activity_edit', ['id' => $activity->getId()]), + 'action' => $url, 'method' => 'POST' ] ); diff --git a/src/TimesheetBundle/Form/TimesheetToolbarForm.php b/src/TimesheetBundle/Form/TimesheetToolbarForm.php index 4ba3383c..c1620304 100644 --- a/src/TimesheetBundle/Form/TimesheetToolbarForm.php +++ b/src/TimesheetBundle/Form/TimesheetToolbarForm.php @@ -83,7 +83,6 @@ class TimesheetToolbarForm extends AbstractType $choices = []; foreach ($query->getCustomer()->getProjects() as $project) { $choices[] = $project; - //$choices[$project->getName()] = $project->getId(); } $builder diff --git a/src/TimesheetBundle/Form/Type/ProjectType.php b/src/TimesheetBundle/Form/Type/ProjectType.php index 67a1eabb..f0ad55c4 100644 --- a/src/TimesheetBundle/Form/Type/ProjectType.php +++ b/src/TimesheetBundle/Form/Type/ProjectType.php @@ -11,8 +11,8 @@ namespace TimesheetBundle\Form\Type; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; -use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\OptionsResolver\OptionsResolver; use TimesheetBundle\Entity\Project; @@ -44,6 +44,6 @@ class ProjectType extends AbstractType */ public function getParent() { - return ChoiceType::class; + return EntityType::class; } } diff --git a/src/TimesheetBundle/Resources/views/admin/activity.html.twig b/src/TimesheetBundle/Resources/views/admin/activity.html.twig index 51fe39e8..97833a5b 100644 --- a/src/TimesheetBundle/Resources/views/admin/activity.html.twig +++ b/src/TimesheetBundle/Resources/views/admin/activity.html.twig @@ -18,7 +18,7 @@ 'label.comment': 'hidden-xs', 'label.visible': '', 'label.actions': '', - }) }} + }, null, {'plus-square': path('admin_activity_create')}) }} {% for entry in entries %}