template->appVersion = Konstanty::verze; if (!$this->getUser()->isLoggedIn()) { $this->template->navrat = $this->storeRequest(); } } protected function createComponentPodkladForm(): Form { $form = new Form; $form->addRadioList('podklad', 'Mapové podklady', MapovyPodklad::moznosti()) ->setDefaultValue($this->aktualni()) ->setRequired('Vyberte mapové podklady.'); $form->addSubmit('send', 'Uložit'); $form->addProtection('Platnost formuláře vypršela, odešlete ho znovu.'); $form->onSuccess[] = $this->podkladFormSucceeded(...); return $form; } private function podkladFormSucceeded(Form $form, ArrayHash $values): void { $this->getHttpResponse()->setCookie( MapovyPodklad::COOKIE, MapovyPodklad::platny((string) $values->podklad), '+1 year', '/', null, null, false, ); $this->flashMessage('Nastavení bylo uloženo.'); $this->redirect('default'); } private function aktualni(): string { return MapovyPodklad::platny($this->getHttpRequest()->getCookie(MapovyPodklad::COOKIE)); } protected function createComponentHesloForm(): Form { $form = new Form; $form->addPassword('soucasne', 'Současné heslo') ->setRequired('Zadejte současné heslo.'); $form->addPassword('heslo', 'Nové heslo') ->setRequired('Zadejte nové heslo.') ->setMaxLength(100); $form->addPassword('hesloZnovu', 'Nové heslo znovu') ->setRequired('Zadejte nové heslo znovu.') ->addRule(Form::Equal, 'Hesla se neshodují.', $form['heslo']); $form->addSubmit('send', 'Změnit heslo'); $form->addProtection('Platnost formuláře vypršela, odešlete ho znovu.'); $form->onSuccess[] = $this->hesloFormSucceeded(...); return $form; } private function hesloFormSucceeded(Form $form, ArrayHash $values): void { $user = $this->getUser(); if (!$user->isLoggedIn()) { $form->addError('Pro změnu hesla se přihlaste.'); return; } $id = (int) $user->getId(); if (!$this->uzivatele->overHeslo($id, (string) $values->soucasne)) { $form->addError('Současné heslo nesouhlasí.'); return; } $heslo = (string) $values->heslo; if (mb_strlen($heslo) < 4) { $form->addError('Heslo musí mít alespoň 4 znaky.'); return; } if (mb_strlen($heslo) > 100) { $form->addError('Heslo je příliš dlouhé.'); return; } if (!$this->uzivatele->zmenVlastniHeslo($id, $heslo)) { $form->addError('Heslo se nepodařilo změnit.'); return; } $this->flashMessage('Heslo bylo změněno.'); $this->redirect('this'); } }