Ejemplo n.º 1
0
 /**
  * Create the form to edit/add the gadget
  */
 private function formGadget($gadget)
 {
     $em = $this->get('doctrine')->getManager();
     $request = $this->get('request');
     $dispatcher = $this->get('event_dispatcher');
     $formBuilder = $this->createFormBuilder($gadget);
     $configType = new ConfigGadgetType($dispatcher, $request, $this->container->get('keosu_core.packagemanager'), $gadget);
     $listTemplate = $this->get('keosu_core.packagemanager')->getListTemplateForGadget($gadget->getName());
     if (count($listTemplate) > 1) {
         $formBuilder->add('template', 'choice', array('choices' => $listTemplate, 'required' => true, 'expanded' => true));
     } else {
         $formBuilder->add('template', 'text', array('label' => false, 'data' => PackageManager::DEFAULT_TEMPLATE_GADGET_NAME, 'attr' => array('style' => 'display:none;')));
     }
     $formBuilder->add('shared', 'checkbox', array('label' => 'Shared with all pages', 'required' => false))->add('config', $configType);
     $form = $formBuilder->getForm();
     if ($request->getMethod() == 'POST') {
         $form->bind($request);
         if ($form->isValid()) {
             $event = new GadgetSaveConfigEvent($form, $request, $gadget);
             $dispatcher->dispatch(KeosuEvents::GADGET_CONF_SAV . $gadget->getName(), $event);
             if ($event->getResponse() !== null) {
                 return $event->getResponse();
             }
             $em->persist($gadget);
             $em->flush();
             $this->get('keosu_core.exporter')->exportApp();
             return $this->redirect($this->generateUrl('keosu_core_views_page', array('id' => $gadget->getPage()->getId())));
         }
     }
     $event = new FormEvent($form, $request);
     $dispatcher->dispatch(KeosuEvents::GADGET_CONF_VIEW . $gadget->getName(), $event);
     if ($event->getResponse() !== null) {
         return $event->getResponse();
     }
     return $this->render('KeosuCoreBundle:Page:editGadget.html.twig', array('form' => $form->createView(), 'gadgetDir' => TemplateUtil::getTemplateGadgetDir(), 'gadgetName' => $gadget->getName()));
 }