/** * 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())); }