Esempio n. 1
0
 /**
  * @return MyDatagrid
  */
 protected function createComponentGridAction()
 {
     $grid = new MyDatagrid();
     $grid->setTranslator($this->translator);
     $grid->setShowCheckboxes(TRUE);
     $grid->addColumn('name', 'Jméno akce')->enableSort();
     $grid->addColumn('humanName', 'Lidský formát')->enableSort();
     $grid->addCellsTemplate(APP_DIR . "/templates/" . $this->getName() . "/action-row-actions.latte");
     $grid->setRowPrimaryKey('aclActionID');
     $model = $this->actionRepository;
     $grid->setDatasourceCallback(function ($filter, $order, $paginator) use($model) {
         $data = $model->read($paginator);
         foreach ($filter as $k => $v) {
             $data->where($k . " LIKE ?", "%" . $v . "%");
         }
         if ($order) {
             $data->order(implode(" ", $order));
         }
         return $data;
     });
     $grid->setPagination(10, function ($filter) use($model) {
         $data = $model->read();
         foreach ($filter as $k => $v) {
             $data->where($k . " LIKE ?", "%" . $v . "%");
         }
         return $data->count('*');
     });
     $grid->setFilterFormFactory(function () {
         $form = new Container();
         $form->addText("name", "Jméno akce");
         $form->addText("humanName", "Jméno akce - lidský formát");
         // these buttons are not compulsory
         $form->addSubmit('filter', 'Filtrovat')->getControlPrototype()->class = 'btn btn-primary';
         $form->addSubmit('cancel', 'Storno')->getControlPrototype()->class = 'btn';
         return $form;
     });
     return $grid;
 }
Esempio n. 2
0
 /** Vytvoří komponentu gridu
  * 
  */
 protected function createComponentGrid()
 {
     $grid = new MyDatagrid();
     $grid->setTranslator($this->translator);
     $grid->setShowCheckboxes(TRUE);
     $grid->addColumn('login', 'Uživatelské jméno')->enableSort();
     $grid->addColumn('roleName', 'Skupina')->enableSort();
     $grid->addColumn('active', 'Aktivní')->enableSort();
     $grid->addColumn('lastLogged', 'Poslední přihlášení')->enableSort();
     $grid->addColumn('ip', 'IP adresa')->enableSort();
     $grid->addCellsTemplate(APP_DIR . "/templates/" . $this->getName() . "/row-actions.latte");
     $grid->setRowPrimaryKey('userID');
     $model = $this->userRepository;
     $user = $this->user;
     $grid->setDatasourceCallback(function ($filter, $order, $paginator) use($model, $user) {
         if ($user->isInRole("root")) {
             $data = $model->read($paginator);
         } else {
             $data = $model->read($paginator)->where("login != ?", "root")->where("userID = ? OR user.aclRoleID != ?", array($user->getId(), $user->getIdentity()->data['aclRoleID']));
         }
         foreach ($filter as $k => $v) {
             $k = str_replace("roleName", "role.name", $k);
             $data->where($k . " LIKE ?", "%" . $v . "%");
         }
         if ($order) {
             $order = str_replace("roleName", "role.name", implode(" ", $order));
             $data->order($order);
         }
         // Role name hacking
         foreach ($data as $entity) {
             $entity->setRoleName($entity->getRole()->getName());
         }
         return $data;
     });
     $grid->setPagination(10, function ($filter) use($model) {
         $data = $model->read();
         foreach ($filter as $k => $v) {
             $k = str_replace("roleName", "role.name", $k);
             $data->where($k . " LIKE ?", "%" . $v . "%");
         }
         return $data->count('*');
     });
     $roleModel = $this->roleRepository;
     $grid->setFilterFormFactory(function () use($roleModel) {
         $form = new Container();
         $form->addText("login", "Uživatelské jméno");
         $form->addSelect("roleName", "Skupina", $roleModel->read()->fetchPairs("name", "name"))->setPrompt("Vše");
         $form->addSelect("active", "Aktivní", array("0" => "Neaktivní", "1" => "Aktivní"))->setPrompt("Vše");
         $form->addText("lastLogged", "Poslední přihlášení");
         $form->addText("ip", "IP adresa");
         // these buttons are not compulsory
         $form->addSubmit('filter', 'Filtrovat')->getControlPrototype()->class = 'btn btn-primary';
         $form->addSubmit('cancel', 'Storno')->getControlPrototype()->class = 'btn';
         return $form;
     });
     return $grid;
 }