public function actionUserChange($akce = 0, $id = -1) { $this->access($id); //kvůli Nette - action je vyhrazeno $action = $akce; $this->verifyUser(); $this->form = new AppForm($this, 'userChange'); //TODO: Definovat zprávu //$this->form->addProtection($this->formProtectedMessage); $msg = 'Heslo musí obsahovat VELKÁ a malá písmena a číslice!'; $this->form->addGroup('Přihlašovací informace'); $this->form->addText('userName', 'Uživatelské jméno:')->addRule(Form::FILLED, 'Uživatelské jméno musí být vyplněno.')->addRule(Form::MIN_LENGTH, 'Uživatelské jméno musí mít alespoň %d znaky.', 4)->addRule(Form::MAX_LENGTH, 'Uživatelské jméno může mít nejvýše %d znaků.', 20); if ($action > 0) { $this->form['userName']->setDisabled(true); } if ($action != 1) { $this->form->addPassword('password1', 'Heslo:')->addRule(Form::FILLED, 'Heslo musí být vyplněno.')->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaků.', 8)->addRule(Form::MAX_LENGTH, 'Heslo může mít nejvýše %d znaků', 50)->addRule(Form::REGEXP, $msg, '/[A-Z]+/')->addRule(Form::REGEXP, $msg, '/[a-z]+/')->addRule(Form::REGEXP, $msg, '/[0-9]+/'); $this->form->addPassword('password2', 'Přístupové heslo (pro kontrolu):')->addRule(Form::EQUAL, 'Zadaná hesla se neshodují.', $this->form['password1']); $this->form->addText('navrhHesla', 'Navrhované heslo:'); } if ($action < 2) { $this->form->addGroup('Osobní informace'); $this->form->addText('firstName', 'Jméno:')->addRule(Form::FILLED, 'Jméno musí být vyplněno.'); $this->form->addText('surname', 'Přijmení:')->addRule(Form::FILLED, 'Přijmení musí být vyplněno.'); $this->form->addText('title', 'Titul:')->addRule(Form::MAX_LENGTH, 'Titul může mít nejvýše %d znaků.', 10); $this->form->addGroup('Kontaktní informace'); $this->form->addText('email', 'E-mail:')->addRule(Form::FILLED, 'E-mail musí být vyplněn.')->addRule(Form::EMAIL, 'Zadaný e-mail není platný.'); $this->form->addText('icq', 'ICQ:')->addCondition(Form::FILLED)->addRule(Form::NUMERIC, 'ICQ musí být číslo.')->addRule(Form::MAX_LENGTH, 'ICQ může mít nejvýše %d znaků.', 10); $this->form->addText('skype', 'Skype:')->addRule(Form::MAX_LENGTH, 'Skype může mát nejvýše %d znaků.', 50); $this->form->addText('mobile', 'Mobilní telefon:')->addCondition(Form::FILLED)->addRule(Form::NUMERIC, 'Mobilní telefon musí být číslo.')->addRule(Form::MAX_LENGTH, 'Mobilní telefon může mít nejvýše %d znaků.', 20); $roles = UsersModel::getRoles(); // Zobrazujeme pouze tehdy je-li uživatel administrátor - aby si uživatel sám nemohl měnit skupinu if ($this->user->isInRole('Administrator')) { $this->form->addGroup('Přístupová práva (může být vybráno více skupin)'); $this->form->addMultiSelect('prava', 'Přístupová práva:', $roles, 2); } } $this->form->onSubmit[] = array($this, 'UserFormSubmitted'); $this->form->addHidden('action')->setValue($action); if ($action > 0) { $data = UsersModel::getUser($id); $data['navrhHesla'] = UsersModel::genPass(); // Nastavíme výchozí hodnoty pro formulář $this->form->setDefaults($data); $this->form->addHidden('id')->setValue($id); $this->form->addSubmit('ok', 'Aktualizovat'); // ->onClick[] = array($this, 'OkClicked'); // nebo 'OkClickHandler' } else { $data['navrhHesla'] = UsersModel::genPass(); // Nastavíme výchozí hodnoty pro formulář $this->form->setDefaults($data); $this->form->addSubmit('ok', 'Vytvořit'); // ->onClick[] = array($this, 'OkClicked'); // nebo 'OkClickHandler' } $this->template->form = $this->form; }