open create form for activity/project/customer in modals (#2025)

This commit is contained in:
Kevin Papst
2020-10-08 01:12:34 +02:00
committed by GitHub
parent 46bf01d93e
commit fb31319fcf
17 changed files with 60 additions and 169 deletions

View File

@@ -35,9 +35,7 @@ use Pagerfanta\Pagerfanta;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
@@ -192,7 +190,27 @@ final class ActivityController extends AbstractController
$activity->setProject($project);
}
return $this->renderActivityForm($activity, $request);
$event = new ActivityMetaDefinitionEvent($activity);
$this->dispatcher->dispatch($event);
$editForm = $this->createEditForm($activity);
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
try {
$this->repository->saveActivity($activity);
$this->flashSuccess('action.update.success');
return $this->redirectToRoute('admin_activity');
} catch (Exception $ex) {
$this->flashUpdateException($ex);
}
}
return $this->render('activity/edit.html.twig', [
'activity' => $activity,
'form' => $editForm->createView()
]);
}
/**
@@ -258,7 +276,27 @@ final class ActivityController extends AbstractController
*/
public function editAction(Activity $activity, Request $request)
{
return $this->renderActivityForm($activity, $request);
$event = new ActivityMetaDefinitionEvent($activity);
$this->dispatcher->dispatch($event);
$editForm = $this->createEditForm($activity);
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
try {
$this->repository->saveActivity($activity);
$this->flashSuccess('action.update.success');
return $this->redirectToRoute('activity_details', ['id' => $activity->getId()]);
} catch (Exception $ex) {
$this->flashUpdateException($ex);
}
}
return $this->render('activity/edit.html.twig', [
'activity' => $activity,
'form' => $editForm->createView()
]);
}
/**
@@ -342,47 +380,6 @@ final class ActivityController extends AbstractController
return $writer->getFileResponse($spreadsheet);
}
/**
* @param Activity $activity
* @param Request $request
* @return RedirectResponse|Response
*/
protected function renderActivityForm(Activity $activity, Request $request)
{
$event = new ActivityMetaDefinitionEvent($activity);
$this->dispatcher->dispatch($event);
$editForm = $this->createEditForm($activity);
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
try {
$this->repository->saveActivity($activity);
$this->flashSuccess('action.update.success');
if ($editForm->has('create_more') && $editForm->get('create_more')->getData() === true) {
$newActivity = new Activity();
$newActivity->setProject($activity->getProject());
$editForm = $this->createEditForm($newActivity);
$editForm->get('create_more')->setData(true);
$activity = $newActivity;
} else {
return $this->redirectToRoute('admin_activity');
}
} catch (Exception $ex) {
$this->flashUpdateException($ex);
}
}
return $this->render(
'activity/edit.html.twig',
[
'activity' => $activity,
'form' => $editForm->createView()
]
);
}
/**
* @param ActivityQuery $query
* @return FormInterface
@@ -417,7 +414,6 @@ final class ActivityController extends AbstractController
'action' => $url,
'method' => 'POST',
'currency' => $currency,
'create_more' => true,
'customer' => true,
'include_budget' => $this->isGranted('budget', $activity)
]);