Example #1
0
 /**
  *
  * {@inheritdoc}
  *
  */
 public function getParameters(View $view, FormFactoryInterface $formFactoty, Request $request)
 {
     $criteriaUpdateConfig = new CriteriaUpdateConfig($view, $request->getSession());
     $form = $formFactoty->create(CriteriaFilterType::class, $criteriaUpdateConfig, ['view' => $view, 'method' => 'GET', 'action' => $this->router->generate('views.criteria.table', ['view' => $view->getId()])]);
     $form->handleRequest($request);
     $categoryField = false;
     if ($view->getContentType()->getCategoryField()) {
         $categoryField = $view->getContentType()->getFieldType()->__get('ems_' . $view->getContentType()->getCategoryField());
     }
     return ['criteriaField' => $view->getOptions()['criteriaField'], 'categoryField' => $categoryField, 'view' => $view, 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment(), 'criterionList' => $view->getContentType()->getFieldType()->__get('ems_' . $view->getOptions()['criteriaField']), 'form' => $form->createView()];
 }
Example #2
0
 /**
  * @Route("/views/criteria/table/{view}", name="views.criteria.table"))
  * @Method({"GET"})
  */
 public function generateCriteriaTableAction(View $view, Request $request)
 {
     /** @var EntityManager $em */
     $em = $this->getDoctrine()->getManager();
     /** @var RevisionRepository $revisionRep */
     $revisionRep = $em->getRepository('AppBundle:Revision');
     $counters = $revisionRep->draftCounterGroupedByContentType([], true);
     foreach ($counters as $counter) {
         if ($counter['content_type_id'] == $view->getContentType()->getId()) {
             $this->addFlash('warning', 'There is ' . $counter['counter'] . ' drafts, you wont be able to update them from here.');
         }
     }
     $criteriaUpdateConfig = new CriteriaUpdateConfig($view, $request->getSession());
     $form = $this->createForm(CriteriaFilterType::class, $criteriaUpdateConfig, ['view' => $view, 'method' => 'GET']);
     $form->handleRequest($request);
     /** @var CriteriaUpdateConfig $criteriaUpdateConfig */
     $criteriaUpdateConfig = $form->getData();
     $contentType = $view->getContentType();
     $valid = true;
     if (!empty($view->getOptions()['categoryFieldPath']) && empty($criteriaUpdateConfig->getCategory()->getTextValue())) {
         $valid = false;
         $form->get('category')->addError(new FormError('Category is mandatory'));
     }
     foreach ($form->get('criterion')->all() as $child) {
         if ($child->getConfig()->getName() != $criteriaUpdateConfig->getColumnCriteria() && $child->getConfig()->getName() != $criteriaUpdateConfig->getRowCriteria() && empty($child->getNormData()->getTextValue())) {
             $valid = false;
             $child->addError(new FormError('Non-row/column criteria are mandatory'));
         }
     }
     if (!$valid) {
         return $this->render('view/custom/criteria_view.html.twig', ['view' => $view, 'form' => $form->createView(), 'contentType' => $contentType]);
     }
     $criteriaField = $view->getContentType()->getFieldType();
     if ($view->getOptions()['criteriaMode'] == 'internal') {
         $criteriaField = $view->getContentType()->getFieldType()->__get('ems_' . $view->getOptions()['criteriaField']);
     } else {
         if ($view->getOptions()['criteriaMode'] == 'another') {
         } else {
             throw new \Exception('Should never happen');
         }
     }
     $columnField = null;
     $rowField = null;
     $fieldPaths = preg_split("/\\r\\n|\\r|\\n/", $view->getOptions()['criteriaFieldPaths']);
     $authorized = $this->isAuthorized($criteriaField);
     foreach ($fieldPaths as $path) {
         /**@var \AppBundle\Entity\FieldType $child*/
         $child = $criteriaField->getChildByPath($path);
         if ($child) {
             if ($child->getName() == $criteriaUpdateConfig->getColumnCriteria()) {
                 $columnField = $child;
             } else {
                 if ($child->getName() == $criteriaUpdateConfig->getRowCriteria()) {
                     $rowField = $child;
                 }
             }
             $authorized = $authorized && $this->isAuthorized($child);
         }
     }
     if (!$authorized) {
         $this->addFlash('notice', 'Your are not allowed to update data via this view');
     }
     $hiddenform = $this->createForm(CriteriaFilterType::class, $criteriaUpdateConfig, ['view' => $view, 'hidden' => true, 'action' => $this->get('router')->generate('views.criteria.align', ['view' => $view->getId()]), 'attr' => ['id' => 'hiddenFilterForm']]);
     $tables = $this->generateCriteriaTable($view, $criteriaUpdateConfig, $request);
     return $this->render('view/custom/criteria_table.html.twig', ['table' => $tables['table'], 'rowFieldType' => $rowField, 'columnFieldType' => $columnField, 'config' => $criteriaUpdateConfig, 'columns' => $tables['criteriaChoiceLists'][$criteriaUpdateConfig->getColumnCriteria()], 'rows' => $tables['criteriaChoiceLists'][$criteriaUpdateConfig->getRowCriteria()], 'criteriaChoiceLists' => $tables['criteriaChoiceLists'], 'view' => $view, 'categoryChoiceList' => $tables['categoryChoiceList'], 'targetContentType' => $tables['targetContentType'], 'authorized' => $authorized, 'hiddenForm' => $hiddenform->createView()]);
 }