public function createComponentForm()
{
$form = new UI\Form();
if ($this->filterFormFactory) {
$form['filter'] = call_user_func($this->filterFormFactory);
if (!isset($form['filter']['filter'])) {
$form['filter']->addSubmit('filter', $this->translate('Filter'));
}
if (!isset($form['filter']['cancel'])) {
$form['filter']->addSubmit('cancel', $this->translate('Cancel'));
}
$this->filterDefaults = [];
foreach ($form['filter']->controls as $name => $control) {
$this->filterDefaults[$name] = $control->getValue();
}
$this->filterDefaults = $this->filterFormFilter($this->filterDefaults);
if (!$this->filterDataSource) {
$this->filterDataSource = $this->filterDefaults;
}
}
if ($this->editFormFactory && ($this->editRowKey !== null || !empty($_POST['edit']))) {
$data = $this->editRowKey !== null && empty($_POST) ? $this->getData($this->editRowKey) : null;
$form['edit'] = call_user_func($this->editFormFactory, $data);
if (!isset($form['edit']['save'])) {
$form['edit']->addSubmit('save', 'Save');
}
if (!isset($form['edit']['cancel'])) {
$form['edit']->addSubmit('cancel', 'Cancel');
}
if (!isset($form['edit'][$this->rowPrimaryKey])) {
$form['edit']->addHidden($this->rowPrimaryKey);
}
$form['edit'][$this->rowPrimaryKey]->setDefaultValue($this->editRowKey)->setOption('rendered', true);
}
if ($this->translator) {
$form->setTranslator($this->translator);
}
$form->onSuccess[] = function () {
};
// fix for Nette Framework 2.0.x
$form->onSubmit[] = [$this, 'processForm'];
return $form;
}