/** * Render row item into template * @param Row $row * @return mixed */ public function render(Row $row) { /** * Renderer function may be used */ if ($renderer = $this->getRenderer()) { if (!$renderer->getConditionCallback()) { return call_user_func_array($renderer->getCallback(), [$row->getItem()]); } if (call_user_func_array($this->getRenderer(), [$row->getItem()])) { return call_user_func_array($renderer->getCallback(), [$row->getItem()]); } } $a = Html::el('a')->href($this->grid->getPresenter()->link($this->href, $this->getItemParams($row))); if ($this->icon) { $a->add(Html::el('span')->class(DataGrid::$icon_prefix . $this->icon)); if (strlen($this->name)) { $a->add(' '); } } $a->add($this->name); if ($this->title) { $a->title($this->title); } if ($this->class) { $a->class($this->class); } if ($confirm = $this->getConfirm($row)) { $a->data('confirm', $confirm); } return $a; }
/** * Call export callback * @param array $data * @param DataGrid $grid * @return void */ public function invoke(array $data, DataGrid $grid) { $columns = $this->getColumns() ?: $grid->getColumns(); $csv_data_model = new CsvDataModel($data, $columns, $grid->getTranslator()); if ($grid->getPresenter() instanceof Nette\Application\UI\Presenter) { $grid->getPresenter()->sendResponse(new CSVResponse($csv_data_model->getSimpleData(), $this->name, $this->output_encoding, $this->delimiter)); exit(0); } }
/** * Create link to custom destination * @param DataGrid $grid * @param string $href * @param array $params * @return string * @throws DataGridHasToBeAttachedToPresenterComponentException * @throws \InvalidArgumentException */ protected function createLink(DataGrid $grid, $href, $params) { try { $parent = $grid->getParent(); return $parent->link($href, $params); } catch (DataGridHasToBeAttachedToPresenterComponentException $e) { $parent = $grid->getPresenter(); } catch (\InvalidArgumentException $e) { $parent = $grid->getPresenter(); } return $parent->link($href, $params); }
/** * Call export callback * @param array $data * @param DataGrid $grid * @return void */ public function invoke(array $data, DataGrid $grid) { $columns = $this->getColumns() ?: $grid->getColumns(); $csv_data_model = new CsvDataModel($data, $columns); $grid->getPresenter()->sendResponse(new CSVResponse($csv_data_model->getSimpleData(), $this->name)); exit(0); }
/** * Render row item into template * @param Row $row * @return mixed */ public function render(Row $row) { /** * Renderer function may be used */ if ($renderer = $this->getRenderer()) { if (!$renderer->getConditionCallback()) { return call_user_func_array($renderer->getCallback(), [$row->getItem()]); } if (call_user_func_array($renderer->getConditionCallback(), [$row->getItem()])) { return call_user_func_array($renderer->getCallback(), [$row->getItem()]); } } $value = parent::render($row); $href = $this->grid->getPresenter()->link($this->href, $this->getItemParams($row)); $a = Html::el('a')->href($href)->setText($value); if ($this->title) { $a->title($this->title); } if ($this->class) { $a->class($this->class); } return $a; }