/** * Component factory of UsersGrid * @param string $name * @return \Grido\Grid */ public function createComponentUsersGrid($name) { $grid = new Grid($this, $name); $grid->setModel($this->userService->getUsersDatasource()); $grid->translator->lang = $this->getLocale(); $grid->setDefaultPerPage(30); $grid->setPrimaryKey('id'); $grid->addColumnNumber('id', '#')->cellPrototype->class[] = 'center'; $headerId = $grid->getColumn('id')->headerPrototype; $headerId->class[] = 'center'; $headerId->rowspan = "2"; $headerId->style['width'] = '0.1%'; $grid->addColumnText('surname', 'Příjmení')->setSortable()->setFilterText(); $headerSurname = $grid->getColumn('surname')->headerPrototype; $headerSurname->class[] = 'center'; $grid->addColumnText('name', 'Jméno')->setSortable()->setFilterText(); $headerName = $grid->getColumn('name')->headerPrototype; $headerName->class[] = 'center'; // $grid->addFilterCustom('nameOrSurname', new \Nette\Forms\Controls\TextArea('Jméno nebo příjmení')) // ->setColumn('name') // ->setColumn('surname', \Grido\Components\Filters\Condition::OPERATOR_OR) // ->setCondition('LIKE ?') // ->setFormatValue('%%value%'); //$grid->getColumn('name')->getCellPrototype()->class('textleft'); $y = $this->tt("system.common.yes"); $n = $this->tt("system.common.no"); $activeList = [null => null, true => $y, false => $n]; $grid->addColumnNumber('active', 'Aktivní')->setReplacement([true => $y, null => $n])->setSortable()->setFilterSelect($activeList); $headerActive = $grid->getColumn('active')->headerPrototype; $headerActive->class[] = 'center'; $grid->addColumnDate('lastLogin', 'Posl. přihl.', self::DATETIME_FORMAT)->setSortable()->setReplacement([NULL => $this->tt("usersModule.admin.grid.never")])->setFilterDateRange(); $headerLast = $grid->getColumn('lastLogin')->headerPrototype; $headerLast->class[] = 'center'; $grid->addColumnDate('created', 'Registrován')->setSortable(); $headerCreated = $grid->getColumn('created')->headerPrototype; $headerCreated->class[] = 'center'; $grid->addActionHref("regenPassword", "", 'regenPassword!')->setElementPrototype(\Nette\Utils\Html::el("a")->addAttributes(["title" => $this->tt("usersModule.admin.grid.pwRegen")]))->setIcon('lock')->setConfirm(function ($u) { return "Are you sure you want to regenerate password for user {$u->surname} {$u->name} ({$u->id})?"; }); $grid->addActionHref('delete', '', "deleteUser!")->setElementPrototype(\Nette\Utils\Html::el("a")->addAttributes(["title" => $this->tt("usersModule.admin.grid.delete")]))->setIcon('trash')->setConfirm(function ($u) { return "Are you sure you want to delete user {$u->surname} {$u->name} ({$u->id})?"; }); $grid->addActionHref('update', '', 'updateUser')->setElementPrototype(\Nette\Utils\Html::el("a")->addAttributes(["title" => $this->tt("usersModule.admin.grid.update")]))->setIcon('pencil'); $grid->addActionHref('webProfile', '', 'updateWebProfile')->setElementPrototype(\Nette\Utils\Html::el("a")->addAttributes(["title" => $this->tt("usersModule.admin.grid.updateWp")]))->setIcon('th-list'); $operation = array('delete' => 'Delete', 'activeToggle' => 'ActiveToggle'); $grid->setOperation($operation, $this->usersGridOperationsHandler)->setConfirm('delete', $this->tt("usersModule.admin.grid.reallyDeleteItems")); $grid->setFilterRenderType($this->filterRenderType); $grid->setExport("admin-users " . date("Y-m-d H:i:s", time())); return $grid; }