{foreach $polls as $id => $poll}
    <h2>Anketa {$poll->name}</h2>
    {control poll-$id}
{/foreach}
                                 
                                 
                        <?php
namespace App\FrontModule\Components;
use Nette\Application\UI,
	Nette,
	Nette\Mail\Message,
	Nette\Mail\SendmailMailer,
	App,
	CardBook;
interface IContactUsFormFactory
{
	/** @return ContactUsForm */
	public function create ();
}
class ContactUsForm extends UI\Control 
{
	protected $userModel;
	protected $mailer;
	protected $messageFactory;
	
	/** @persistent */
	public $view;
	public function __construct (App\Model\User $user, Nette\Mail\IMailer $mailer, App\FrontModule\Factory\MessageFactory $messageFactory)
	{
		parent::__construct();
		$this->userModel = $user;
		$this->mailer    = $mailer;
		$this->messageFactory   = $messageFactory;
	}
	public function render() 
	{
		
		if (!$this->view)
			$this->template->setFile(__DIR__ . '/../templates/components/ContactUsForm/form.latte');
		else
			$this->template->setFile(__DIR__ . '/../templates/components/ContactUsForm/'.$this->view.'.latte');
		
		$this->template->render();
	}
	public function createComponentForm()
	{
		$form = new UI\Form;
		$form->addText("name", "Vaše jméno")
			 ->addRule($form::FILLED, "Vyplňte prosím jméno");
		
		$form->addText("email", "E-mail")
			 ->addRule($form::FILLED, "Vyplňte prosím email")
			 ->addRule($form::EMAIL, "Email není ve správném formátu");
		
		$form->addTextArea("message", "Vaše zpráva")
		     ->addRule($form::FILLED, "Vyplňte prosím Váš dotaz");
		$form->addSubmit("send", "Odeslat");
		$form->onSuccess[] = array($this, 'submitted');
		return $form;
	}
	public function submitted($form)
	{
		$values = $form->getValues();
	
	    $template = $this->createTemplate();
	    $template->setFile(__DIR__ . '/../templates/emails/contactus.latte');
		$template->title  = 'Napište nám';
		$template->values = $values;
	
		$mail = $this->messageFactory->create();
	
		//$mail = new Message;
		$mail->setFrom($values->email)
		     ->addTo(CardBook\Settings::ADMIN_EMAIL)
		     ->setSubject('Cardbook - napište nám')
		     ->setHtmlBody($template);
		
		$this->mailer->send($mail);
		// $mailer = new SendmailMailer;  1)
		// $mailer = new Nette\Mail\SmtpMailer(array(  2)
		// 		'host'     => 'smtp.savana.cz',
		// 		'username' => 'podpora@cardbook.cz',
		// 		'password' => 'uL$g4GHl6AR'
		// ));
		// $mailer->send($mail);
		// 3)
		// 
		
		//  arguments: [..., ..., %foo%, %bar%] #ano, opravdu dvojtecky
		// nebo:
		// arguments: [foo: %foo%, bar: %bar%]
		// nebo:
		// arguments: [2: %foo%, 3: %bar%]
 
		
        if ($this->presenter->isAjax()) 
        {
           	$this->view = 'save';
    		$this->redrawControl('contactUsForm');
     
        }
        else
        {
        	$this->redirect("this", array('view' => 'save'));
        }
		
	}
}
                                 
                                 
                        nette:
	latte:
		macros: [Img\ImgMacro]
services:
	imageStorage: Img\ImageStorage(%tempDir%)
	imagePipe: Img\ImagePipe(%wwwDir%)
                                 
                                 
                        
jQuery.fn.extend({
insertAtCaret: function(myValue){
  return this.each(function(i) {
    if (document.selection) {
      //For browsers like Internet Explorer
      this.focus();
      sel = document.selection.createRange();
      sel.text = myValue;
      this.focus();
    }
    else if (this.selectionStart || this.selectionStart == '0') {
      //For browsers like Firefox and Webkit based
      var startPos = this.selectionStart;
      var endPos = this.selectionEnd;
      var scrollTop = this.scrollTop;
      this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
      this.focus();
      this.selectionStart = startPos + myValue.length;
      this.selectionEnd = startPos + myValue.length;
      this.scrollTop = scrollTop;
    } else {
      this.value += myValue;
      this.focus();
    }
  })
}
});
                                 
                                 
                        services:
    nette.latteFactory:
        setup:
            - addFilter(abs, @petrjirasek\Latte\AbsFilter)
    - petrjirasek\Latte\AbsFilter
                                 
                                 
                        {$form[name]->errors} - vraci pole chyb toho inputu
{$form[name]->error} - vraci retezec s chybami spojenych mezerou (obvykle ma input jen jeden error, takze tohle je asi nejlepsi)
{inputError name} - makro, ktere vypise chybu inputu
{$form[name]->hasErrors()}
<input n:name="number">
<span class=error n:ifcontent>{inputError number}</span>
                                 
                                 
                        <?php
$cnew->addText("input1", "Jméno 1")->addRule(
    function ($item, $arg){
         return $item->value == "ano";
    }
    , 'Číslo musí být dělitelné %d.', 8);
                                 
                                 
                        <?php
	public function handleTime()
	{
		$this['time'][1]->invalidateControl();
		$this['time-2']->invalidateControl();
	}
// LATTE
		{control time-1}
		{control time-2}