require_once('./Nette/loader.php');
define(HESLO_MIN_ZNAKU,6);
define(URL_ADRESA_OBCHODNICH_PODMINEK,'http://www.example.com/');
function loginValidator($item){
return dibi::query('SELECT [id] FROM [zakaznici] WHERE [nick]=%s LIMIT 1',$item->getValue())->count() == 0 ? true : false;
}
$form = new Form('registracni_formular');
$form->setMethod('post');
$form->getElementPrototype()->id = 'registrace';
$form->getElementPrototype()->class = 'formular';
$form->addGroup('Přihlašovací údaje');
$form->addText('nick','Login:',25)
->addRule(Form::FILLED, 'Login nebyl vyplněn')
->addRule('loginValidator', 'Tento login již existuje');
$form->addPassword('heslo','Heslo:',25)
->addRule(Form::FILLED, 'Heslo nebylo vyplněno')
->addRule(Form::MIN_LENGTH, 'Heslo je příliš krátké', HESLO_MIN_ZNAKU)
->setOption('description','Heslo musí mít minimálně '.HESLO_MIN_ZNAKU.' znaků');
$form->addPassword('heslo2','Zopakujte heslo:',25)
->addRule(Form::FILLED, 'Heslo nebylo vyplněno')
->addRule(Form::EQUAL, 'Hesla se neshodují',$form['heslo']);
$form->addGroup('Povinné údaje');
$form->addText('email', 'Email:',35)
->addRule(Form::FILLED, 'Email nebyl vyplněn')
->addRule(Form::EMAIL, 'Zadaný email není platným emailem')
->emptyValue = '@';
$typ_osoby = array(
'1' => 'Fyzická osoba',
'2' => 'Právnická osoba',
);
$form->addRadioList('typ', 'Typ:', $typ_osoby)->addRule(Form::FILLED, 'Vyberte typ registrovaného subjektu')->addCondition(Form::EQUAL, 2)->toggle('povinneUdajePravnicka');
$form->addText('jmeno','Jméno:',35)->addRule(Form::FILLED, 'Zadejte jméno');
$form->addText('prijmeni','Příjmení:',35)->addRule(Form::FILLED, 'Zadejte příjmení');
$form->addText('ulice','Ulice:',35)->addRule(Form::FILLED, 'Zadejte ulici');
$form->addText('mesto','Město:',35)->addRule(Form::FILLED, 'Zadejte město');
$form->addText('psc','PSČ:',35)->addRule(Form::FILLED, 'Zadejte PSČ');
$souhlasLabel = Html::el()->setHtml('Souhlasím s <a href="'.URL_ADRESA_OBCHODNICH_PODMINEK.'" target="_blank">obchodními</a> podmínkami.');
$form->addCheckbox('souhlas', $souhlasLabel)->addRule(Form::FILLED, 'Pro pokračování je nutné souhlasit s podmínkami.');
$form->addGroup('Povinné údaje právnické osoby')->setOption('container', Html::el('fieldset')->id('povinneUdajePravnicka'));
$form->addText('firma','Firma:',35)->addConditionOn($form['typ'], Form::EQUAL, 2)->addRule(Form::FILLED,'Zadejte firmu');
$form->addText('ico','IČO:',35)->addConditionOn($form['typ'], Form::EQUAL, 2)->addRule(Form::FILLED,'Zadejte IČO');
$form->addText('dic','DIČ:',35)->addConditionOn($form['typ'], Form::EQUAL, 2)->addRule(Form::FILLED,'Zadejte DIČ');
$form->addGroup('Nepovinné údaje')->setOption('container', Html::el('fieldset')->id('nepovinneUdaje'));
$form->addText('telefon','Telefon:',35);
$form->addText('mobil','Mobil:',35);
$form->addText('fax','Fax:',35);
$form->setCurrentGroup(NULL);
$form->addSubmit('ok','Registrovat se')->getControlPrototype()->class = 'submit';
$form->addProtection('Vypršela platnost formuláře.');
if ($form->isSubmitted() and $form->isValid()) {
$values = $form->getValues();
unset($values['heslo2']);
unset($values['souhlas']);
$ok = dibi::query('INSERT INTO [zakaznici] %v',$values);
//..... nasleduje redirect
} else {
$defaults = array('typ'=>1);
$form->setDefaults($defaults);
}