Exemplo n.º 1
0
 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;
 }