protected function createComponentGrid($name) { $grid = new \App\Grids\baseGrid($this, $name); if ($this->user->isInRole("administrator")) { $grid->setModel($this->model); } else { //$grid->setModel($this->model); $grid->setModel($this->model->getSelection()->where("(user_id = " . $this->user->id . " OR public = 1)")); } $grid->addColumnText('original', 'Název')->setSortable()->setFilterText(); $grid->addColumnText('extension', 'Typ')->setSortable()->setFilterText(); $grid->addColumnText('firstname', 'Jméno vlastníka')->setSortable()->setFilterText(); $grid->addColumnText('lastname', 'Příjmení vlastníka')->setSortable()->setFilterText(); $grid->addColumnText('public', 'Veřejný')->setSortable()->setReplacement($grid::$booleanReplacements)->setFilterSelect($grid::$booleanFilters); $grid->addColumnText('uploaded', 'Nahráno')->setSortable()->setFilterDate(); $grid->addColumnText('size', 'Velikost')->setSortable()->setFilterNumber(); $grid->addActionHref("id", "Detail"); $grid->addActionHref("download", "Uložit")->setDisable(function ($item) { if (!($this->user->isInRole("administrator") || $this->user->id == $item->user_id || $item->public)) { return true; } return false; }); $grid->addActionHref("delete", "Odstranit")->setDisable(function ($item) { if ($item->locked) { return true; } if (!($this->user->isInRole("administrator") || $this->user->id == $item->user_id)) { return true; } return false; })->setConfirm(function ($item) { return "Opravdu chcete odstranit soubor {$item->original}?"; }); $operations = array('delete' => 'Odstranit'); $grid->setOperation($operations, callback($this, 'gridOperationsHandler'))->setConfirm('delete', 'Opravdu chcete smazat všech %i souborů?'); return $grid; }