protected function createComponentFormSet($name) { $form = new Form($this, $name); foreach ($this->resource->related('resource_privilege') as $resourcePrivilege) { $form->addCheckbox('privilege_' . $resourcePrivilege->privilege->id, $resourcePrivilege->privilege->name); } $form->addSubmit('send', $this->translator->translate('admin.form.set')); $form->onSuccess[] = [$this, 'submitFormSet']; $defaults = array(); foreach ($this->permissions->where('role_id = ?', $this->row['id'])->where('resource_id = ?', $this->resource['id']) as $permission) { $defaults['privilege_' . $permission['privilege_id']] = true; } $form->setDefaults($defaults); return $form; }
public function submitFormEdit(Form $form) { $values = $form->getValues(); $this->resource->update(array('name' => $values->name, 'system_name' => $values->system_name)); foreach ($values as $key => $val) { if (\Nette\Utils\Strings::startsWith($key, 'privilege_')) { $id = explode('_', $key); $resourcePrivilege = $this->resource->related('resource_privilege'); if ($val) { if (!$resourcePrivilege->where('privilege_id = ?', $id[1])->fetch()) { $resourcePrivilege->insert(array('privilege_id' => (int) $id[1])); } } else { if ($resourcePrivilege->where('privilege_id = ?', $id[1])->fetch()) { $resourcePrivilege->where('privilege_id = ?', $id[1])->delete(); $this->permissions->where('resource_id = ?', $this->resource['id'])->where('privilege_id = ?', $id[1])->delete(); } } } } $this->flashMessage($this->translator->translate('admin.form.editSuccess')); $this->redirect('edit', $this->resource->id); }