improve activity controller & rendering

This commit is contained in:
Julien Fastré 2015-07-03 22:33:29 +02:00
parent 9ca47ada83
commit 402ce86330
5 changed files with 58 additions and 15 deletions

View File

@ -61,18 +61,23 @@ class ActivityController extends Controller
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$person = $em->getRepository('ChillPersonBundle:Person')->find($person_id); $person = $em->getRepository('ChillPersonBundle:Person')->find($person_id);
/**if ($person === NULL) { if ($person === NULL) {
throw $this->createNotFoundException('person not found'); throw $this->createNotFoundException('person not found');
}*/ }
$this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person); $this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person);
$entity = new Activity(); $entity = new Activity();
$entity->setPerson($person);
$form = $this->createCreateForm($entity, $person); $form = $this->createCreateForm($entity, $person);
$form->handleRequest($request); $form->handleRequest($request);
if ($form->isValid()) { if ($form->isValid()) {
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$this->denyAccessUnlessGranted('CHILL_ACTIVITY_CREATE', $entity,
'creation of this activity not allowed');
$em->persist($entity); $em->persist($entity);
$em->flush(); $em->flush();
@ -95,13 +100,15 @@ class ActivityController extends Controller
* *
* @return \Symfony\Component\Form\Form The form * @return \Symfony\Component\Form\Form The form
*/ */
private function createCreateForm(Activity $entity, Person $person) private function createCreateForm(Activity $entity)
{ {
$form = $this->createForm('chill_activitybundle_activity', $entity, $form = $this->createForm('chill_activitybundle_activity', $entity,
array( array(
'action' => $this->generateUrl('chill_activity_activity_create', ['person_id' => $person->getId()]), 'action' => $this->generateUrl('chill_activity_activity_create', [
'person_id' => $entity->getPerson()->getId(),
]),
'method' => 'POST', 'method' => 'POST',
'center' => $person->getCenter(), 'center' => $entity->getCenter(),
'role' => new Role('CHILL_ACTIVITY_CREATE') 'role' => new Role('CHILL_ACTIVITY_CREATE')
) )
); );
@ -120,10 +127,19 @@ class ActivityController extends Controller
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$person = $em->getRepository('ChillPersonBundle:Person')->find($person_id); $person = $em->getRepository('ChillPersonBundle:Person')->find($person_id);
if ($person === NULL){
throw $this->createNotFoundException('Person not found');
}
$this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person);
$entity = new Activity(); $entity = new Activity();
$entity->setUser($this->get('security.context')->getToken()->getUser()); $entity->setUser($this->get('security.token_storage')->getToken()->getUser());
$entity->setPerson($person);
$entity->setDate(new \DateTime('now')); $entity->setDate(new \DateTime('now'));
$this->denyAccessUnlessGranted('CHILL_ACTIVITY_CREATE', $entity);
$form = $this->createCreateForm($entity, $person); $form = $this->createCreateForm($entity, $person);
return $this->render('ChillActivityBundle:Activity:new.html.twig', array( return $this->render('ChillActivityBundle:Activity:new.html.twig', array(
@ -141,16 +157,25 @@ class ActivityController extends Controller
{ {
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$person = $em->getRepository('ChillPersonBundle:Person')->find($person_id); $person = $em->getRepository('ChillPersonBundle:Person')->find($person_id);
if (!$person) {
throw $this->createNotFoundException('person not found');
}
$this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person);
$entity = $em->getRepository('ChillActivityBundle:Activity')->find($id); $entity = $em->getRepository('ChillActivityBundle:Activity')->find($id);
if (!$entity) { if (!$entity) {
throw $this->createNotFoundException('Unable to find Activity entity.'); throw $this->createNotFoundException('Unable to find Activity entity.');
} }
$this->denyAccessUnlessGranted('CHILL_ACTIVITY_SEE', $entity);
$deleteForm = $this->createDeleteForm($id, $person); $deleteForm = $this->createDeleteForm($id, $person);
return $this->render('ChillActivityBundle:Activity:show.html.twig', array( return $this->render('ChillActivityBundle:Activity:show.html.twig', array(
'person' => $person,
'entity' => $entity, 'entity' => $entity,
'delete_form' => $deleteForm->createView(), 'delete_form' => $deleteForm->createView(),
)); ));
@ -164,21 +189,29 @@ class ActivityController extends Controller
{ {
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$person = $em->getRepository('ChillPersonBundle:Person')->find($person_id); $person = $em->getRepository('ChillPersonBundle:Person')->find($person_id);
if (!$person) {
throw $this->createNotFoundException('person not found');
}
$this->denyAccessUnlessGranted('CHILL_PERSON_SEE', $person);
$entity = $em->getRepository('ChillActivityBundle:Activity')->find($id); $entity = $em->getRepository('ChillActivityBundle:Activity')->find($id);
if (!$entity) { if (!$entity) {
throw $this->createNotFoundException('Unable to find Activity entity.'); throw $this->createNotFoundException('Unable to find Activity entity.');
} }
$this->denyAccessUnlessGranted('CHILL_ACTIVITY_UPDATE', $entity);
$editForm = $this->createEditForm($entity); $editForm = $this->createEditForm($entity);
$deleteForm = $this->createDeleteForm($id); $deleteForm = $this->createDeleteForm($id, $person);
return $this->render('ChillActivityBundle:Activity:edit.html.twig', array( return $this->render('ChillActivityBundle:Activity:edit.html.twig', array(
'entity' => $entity, 'entity' => $entity,
'edit_form' => $editForm->createView(), 'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(), 'delete_form' => $deleteForm->createView(),
'person' => $$person 'person' => $person
)); ));
} }
@ -191,9 +224,15 @@ class ActivityController extends Controller
*/ */
private function createEditForm(Activity $entity) private function createEditForm(Activity $entity)
{ {
$form = $this->createForm(new ActivityType(), $entity, array( $form = $this->createForm('chill_activitybundle_activity', $entity, array(
'action' => $this->generateUrl('chill_activity_activity_update', array('id' => $entity->getId())), 'action' => $this->generateUrl('chill_activity_activity_update',
array(
'id' => $entity->getId(),
'person_id' => $entity->getPerson()->getId()
)),
'method' => 'PUT', 'method' => 'PUT',
'center' => $entity->getCenter(),
'role' => new Role('CHILL_ACTIVITY_UPDATE')
)); ));
$form->add('submit', 'submit', array('label' => 'Update')); $form->add('submit', 'submit', array('label' => 'Update'));
@ -213,6 +252,8 @@ class ActivityController extends Controller
if (!$entity) { if (!$entity) {
throw $this->createNotFoundException('Unable to find Activity entity.'); throw $this->createNotFoundException('Unable to find Activity entity.');
} }
$this->denyAccessUnlessGranted('CHILL_ACTIVITY_UPDATE', $entity);
$deleteForm = $this->createDeleteForm($id); $deleteForm = $this->createDeleteForm($id);
$editForm = $this->createEditForm($entity); $editForm = $this->createEditForm($entity);
@ -246,6 +287,8 @@ class ActivityController extends Controller
if (!$entity) { if (!$entity) {
throw $this->createNotFoundException('Unable to find Activity entity.'); throw $this->createNotFoundException('Unable to find Activity entity.');
} }
$this->denyAccessUnlessGranted('CHILL_ACTIVITY_UPDATE', $entity);
$em->remove($entity); $em->remove($entity);
$em->flush(); $em->flush();

View File

@ -36,7 +36,7 @@ class LoadActivitytACL extends AbstractFixture implements OrderedFixtureInterfac
{ {
public function getOrder() public function getOrder()
{ {
return 17999; return 16000;
} }

View File

@ -42,7 +42,7 @@ class Version20150701091248 extends AbstractMigration
$this->addSql('CREATE SEQUENCE ActivityReason_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE ActivityReason_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE SEQUENCE ActivityReasonCategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE ActivityReasonCategory_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE SEQUENCE ActivityType_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE ActivityType_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE TABLE Activity (id INT NOT NULL, user_id INT DEFAULT NULL, scope_id INT DEFAULT NULL, reason_id INT DEFAULT NULL, type_id INT DEFAULT NULL, person_id INT DEFAULT NULL, date TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, durationTime TIME(0) WITHOUT TIME ZONE NOT NULL, remark TEXT NOT NULL, attendee BOOLEAN NOT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE TABLE Activity (id INT NOT NULL, user_id INT DEFAULT NULL, scope_id INT DEFAULT NULL, reason_id INT DEFAULT NULL, type_id INT DEFAULT NULL, person_id INT DEFAULT NULL, date TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, durationTime TIME(0) WITHOUT TIME ZONE NOT NULL, remark TEXT NOT NULL, attendee BOOLEAN, PRIMARY KEY(id))');
$this->addSql('CREATE INDEX IDX_55026B0CA76ED395 ON Activity (user_id)'); $this->addSql('CREATE INDEX IDX_55026B0CA76ED395 ON Activity (user_id)');
$this->addSql('CREATE INDEX IDX_55026B0C682B5931 ON Activity (scope_id)'); $this->addSql('CREATE INDEX IDX_55026B0C682B5931 ON Activity (scope_id)');
$this->addSql('CREATE INDEX IDX_55026B0C59BB1592 ON Activity (reason_id)'); $this->addSql('CREATE INDEX IDX_55026B0C59BB1592 ON Activity (reason_id)');

View File

@ -27,7 +27,7 @@
<ul class="record_actions"> <ul class="record_actions">
<li> <li>
<a href="{{ path('chill_activity_activity', {'person_id': person.id}) }}"> <a href="{{ path('chill_activity_activity_list', {'person_id': person.id}) }}">
Back to the list Back to the list
</a> </a>
</li> </li>

View File

@ -11,11 +11,11 @@
</tr> </tr>
<tr> <tr>
<th>Date</th> <th>Date</th>
<td>{{ entity.date|date('Y-m-d H:i:s') }}</td> <td>{{ entity.date|localizeddate('long', 'none') }}</td>
</tr> </tr>
<tr> <tr>
<th>Durationtime</th> <th>Durationtime</th>
<td>{{ entity.durationTime }}</td> <td>{{ entity.durationTime|localizeddate('long', 'none') }}</td>
</tr> </tr>
<tr> <tr>
<th>Remark</th> <th>Remark</th>