{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}