Exemplo n.º 1
0
 /**
  * Form initializer
  *
  * @param Object $data
  * @param array $options
  */
 public function initialize($data, $options)
 {
     $this->setEntity($data);
     /**
      * @var \Phalcon\Translate\Adapter\NativeArray $trans
      */
     $trans = $this->getDI()->getTrans();
     $author = array_key_exists('author', $options) ? $options['author'] : $trans->query('common.anonymous');
     $application = array_key_exists('application', $options) ? $options['application'] : null;
     $page_url = array_key_exists('page_url', $options) ? $options['page_url'] : null;
     $priorities = array();
     foreach (['M', 'S', 'C', 'W'] as $p) {
         $priorities[$p] = $trans->query('priority.' . $p);
     }
     $controls = array();
     $controls[] = (new Select('priority', $priorities, ['required' => true]))->setDefault('C')->setLabel($trans->query('suggestion.priority'))->addFilter('trim')->addValidators(array(new InclusionIn(array('message' => 'errors.invalid_priority', 'domain' => array_keys($priorities)))));
     $type_ids = (new XSelect('type_id', SuggestionType::find(), array('using' => array('id', 'name'), 'required' => true, 'useEmpty' => true, 'emptyText' => $trans->query('form.select_from_list'), 'emptyValue' => ''), 'suggestion.'))->setLabel($trans->query('suggestion.type'))->addFilter('trim')->addFilter('int');
     $controls[] = $type_ids;
     $controls[] = (new TextArea('content', ['required' => true, 'maxlength' => 512, 'rows' => 6, 'placeholder' => $trans->query('common.insert_description')]))->setLabel($trans->query('suggestion.content'))->addFilter('trim')->addFilter('null')->addValidators(array(new PresenceOf(array('message' => 'errors.content_is_required')), new StringLength(array('max' => 1000, 'min' => 5, 'messageMaximum' => $trans->query('errors.value_is_too_long'), 'messageMinimum' => $trans->query('errors.value_is_too_short')))));
     $controls[] = (new Hidden('page_url', array('value' => $page_url)))->addFilter('trim')->addFilter('null');
     $controls[] = (new Hidden('author', array('value' => $author)))->addFilter('trim')->addFilter('title')->addFilter('null');
     $controls[] = (new Hidden('application', array('value' => $application)))->addFilter('trim')->addFilter('null');
     $controls[] = new Submit('submit', array('value' => $trans->query('form.save')));
     foreach ($controls as $control) {
         $this->add($control);
     }
     parent::initialize($data, $options);
 }
Exemplo n.º 2
0
 /**
  * @Get("/", name="frontend.list")
  * @Get("/", name="home")
  * @Get("/suggestions.{format:html|xls|xlsx|csv}}", name="frontend.list_export")
  */
 public function listAction($format = 'html')
 {
     $this->view->appscount = $this->modelsManager->createQuery('SELECT DISTINCT application FROM \\Application\\Frontend\\Entity\\Suggestion WHERE application IS NOT NULL')->execute()->count();
     $data = $this->modelsManager->createBuilder()->addFrom('\\Application\\Frontend\\Entity\\Suggestion', 's')->orderBy('s.id DESC');
     $type = [];
     foreach (SuggestionType::find()->toArray() as $t) {
         $type[$t['id']] = $t['name'];
     }
     if (in_array($format, ['xls', 'xlsx', 'csv'])) {
         return $this->getExcelResponse($format, $data, $type);
     } else {
         $this->view->type = $type;
         $currentPage = abs($this->request->getQuery('page', 'int', 1));
         if ($currentPage == 0) {
             $currentPage = 1;
         }
         $this->view->items = $this->getDI()->getPager()->get($data, $currentPage);
     }
 }