From ec70067429b93ecc63cf0b0307e3ec1a6c499135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Wed, 24 Jun 2015 00:00:42 +0200 Subject: [PATCH] add scope to form "new" report [ci skip] --- Controller/ReportController.php | 20 ++++++++++++++++---- Form/ReportType.php | 25 +++++++++++-------------- Resources/config/services.yml | 11 ++++++++++- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/Controller/ReportController.php b/Controller/ReportController.php index 3c267734a..97ac0bbb3 100644 --- a/Controller/ReportController.php +++ b/Controller/ReportController.php @@ -26,6 +26,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Chill\PersonBundle\Entity\Person; use Chill\ReportBundle\Entity\Report; use Chill\ReportBundle\Form\ReportType; +use Symfony\Component\Security\Core\Role\Role; /** * Report controller. @@ -194,15 +195,25 @@ class ReportController extends Controller $em = $this->getDoctrine()->getManager(); $person = $em->getRepository('ChillPersonBundle:Person')->find($person_id); + $cFGroup = $em + ->getRepository('ChillCustomFieldsBundle:CustomFieldsGroup') + ->find($cf_group_id); + + if ($person === NULL) { + throw $this->createNotFoundException("Person not found"); + } + + if ($cFGroup === NULL){ + throw $this->createNotFoundException("custom fields group not found"); + } $entity = new Report(); $entity->setUser($this->get('security.context')->getToken()->getUser()); $entity->setDate(new \DateTime('now')); - $cFGroup = $em->getRepository('ChillCustomFieldsBundle:CustomFieldsGroup')->find($cf_group_id); $entity->setCFGroup($cFGroup); - $form = $this->createCreateForm($entity, $person_id, $cFGroup); + $form = $this->createCreateForm($entity, $person, $cFGroup); return $this->render('ChillReportBundle:Report:new.html.twig', array( 'entity' => $entity, @@ -280,13 +291,14 @@ class ReportController extends Controller */ private function createCreateForm(Report $entity, Person $person, $cFGroup) { - $form = $this->createForm(new ReportType(), $entity, array( + $form = $this->createForm('chill_reportbundle_report', $entity, array( 'action' => $this->generateUrl('report_create', array('person_id' => $person->getId(), 'cf_group_id' => $cFGroup->getId())), 'method' => 'POST', - 'em' => $this->getDoctrine()->getManager(), 'cFGroup' => $cFGroup, + 'role' => new Role('CHILL_REPORT_CREATE'), + 'center' => $person->getCenter() )); return $form; diff --git a/Form/ReportType.php b/Form/ReportType.php index 6910751b4..2d64a9010 100644 --- a/Form/ReportType.php +++ b/Form/ReportType.php @@ -21,52 +21,49 @@ namespace Chill\ReportBundle\Form; -use Symfony\Component\Form\AbstractType; +use Chill\MainBundle\Form\Type\AbstractHasScopeType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\Form\FormEvent; +use Symfony\Component\Form\FormEvents; -class ReportType extends AbstractType -{ +class ReportType extends AbstractHasScopeType +{ /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { - $entityManager = $options['em']; - $builder ->add('user') ->add('date', 'date', array('required' => true, 'widget' => 'single_text', 'format' => 'dd-MM-yyyy')) - ->add('scope', 'scope') ->add('cFData', 'custom_field', array('attr' => array('class' => 'cf-fields'), 'group' => $options['cFGroup'])) ; + + $this->appendScopeChoices($builder, $options); } /** * @param OptionsResolverInterface $resolver */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { + parent::configureOptions($resolver); + $resolver->setDefaults(array( 'data_class' => 'Chill\ReportBundle\Entity\Report' )); $resolver->setRequired(array( - 'em', 'cFGroup', - 'role', - 'center' )); $resolver->setAllowedTypes(array( - 'em' => 'Doctrine\Common\Persistence\ObjectManager', 'cFGroup' => 'Chill\CustomFieldsBundle\Entity\CustomFieldsGroup', - 'role' => 'Symfony\Component\Security\Core\Role\Role', - 'center' => 'Chill\MainBundle\Entity\Center' )); } diff --git a/Resources/config/services.yml b/Resources/config/services.yml index 774d6e677..f076d43a8 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -25,4 +25,13 @@ services: arguments: - "@chill.main.security.authorization.helper" tags: - - { name: security.voter } \ No newline at end of file + - { name: security.voter } + + chill.report.form.report_type: + class: Chill\ReportBundle\Form\ReportType + arguments: + - "@chill.main.security.authorization.helper" + - "@security.token_storage" + - "@chill.main.helper.translatable_string" + tags: + - { name: form.type, alias: chill_reportbundle_report } \ No newline at end of file