Exemplo n.º 1
0
 /**
  * Create a new form instance.
  *
  * @return Form
  */
 public function create()
 {
     $class = $this->getClass();
     $form = new $class();
     $template = $this->templateManager->create();
     $template->setObjectClass($this->postManager->getClass());
     $form->setTemplate($template);
     return $form;
 }
 /**
  * Build rules
  *
  * @return array
  */
 public function buildRules()
 {
     $rules = array();
     $rules[] = new RuleSet();
     $condition = new TemplateCondition();
     $condition->setGroup('Content')->setName('Template')->setEntity($this->contentClass)->setAttribute('id');
     $templateRepository = $this->templateManager->getRepository();
     $templates = $templateRepository->findBy(['objectClass' => $this->contentClass]);
     $options = array();
     foreach ($templates as $template) {
         $options[$template->getId()] = $template->getDisplayName();
     }
     $condition->setOptions($options);
     $rules[] = $condition;
     $condition = new ContentCondition();
     $condition->setGroup('Content')->setName('Content')->setOperatorOpts(array('in', 'notin'))->setEntity($this->contentClass)->setAttribute('id');
     $rules[] = $condition;
     $condition = new AttributeCondition();
     $condition->setGroup('Content')->setName('Title')->setOperatorOpts(array('equals', 'notequals', 'contains'))->setEntity($this->contentClass)->setAttribute('title');
     $rules[] = $condition;
     $condition = new AttributeCondition();
     $condition->setGroup('Content')->setName('Description')->setOperatorOpts(array('equals', 'notequals', 'contains'))->setEntity($this->contentClass)->setAttribute('title');
     $rules[] = $condition;
     $condition = new AttributeCondition();
     $condition->setGroup('Content')->setName('Slug')->setOperatorOpts(array('equals', 'notequals', 'contains'))->setEntity($this->contentClass)->setAttribute('title');
     $rules[] = $condition;
     // $condition = new AttributeCondition();
     // $condition->setGroup('Content')->setName('Directory')->setOperatorOpts(array('equals', 'notequals'))->setOperator('equals')->setEntity($this->contentClass)->setAttribute('title');
     // $rules[] = $condition;
     $templates = $templateRepository->findBy(['objectClass' => $this->contentClass]);
     foreach ($templates as $template) {
         foreach ($template->getAttributes() as $attribute) {
             $condition = false;
             switch ($attribute->getValueType()) {
                 case 'Opifer\\EavBundle\\Entity\\TextValue':
                 case 'Opifer\\CmsBundle\\Entity\\HtmlValue':
                 case 'Opifer\\EavBundle\\Entity\\StringValue':
                     $condition = new StringValueCondition();
                     $condition->setOperatorOpts(array('equals', 'notequals', 'contains'));
                     break;
                 case 'Opifer\\EavBundle\\Entity\\CheckListValue':
                     $condition = new CheckListValueCondition();
                     $options = array();
                     foreach ($attribute->getOptions() as $option) {
                         $options[$option->getId()] = $option->getDisplayName();
                     }
                     $condition->setOptions($options);
                     break;
             }
             if ($condition) {
                 $condition->setGroup($template->getDisplayName())->setName($attribute->getDisplayName())->setEntity($this->contentClass)->setAttribute($attribute->getName());
                 $rules[] = $condition;
             }
             switch ($attribute->getValueType()) {
                 case 'Opifer\\EavBundle\\Entity\\AddressValue':
                     $condition = new AddressValueCityCondition();
                     $condition->setGroup($template->getDisplayName())->setName($attribute->getDisplayName() . ' – City')->setEntity($this->contentClass)->setAttribute($attribute->getName());
                     $rules[] = $condition;
                     break;
             }
         }
     }
     return $rules;
 }