Odeslání latte šablony spolu s odkazy

Zakousl jsem se do studia frameworku Nette, který teď momentálně chci využít v jednom projektu. Narazil jsem na jednu chybu, a tak bych se s ní rád podělil, aby jste se s tím netrápili tak jako já.

Chtěl jsem využít latte šablonu a tu poslat emailem, nic zvláštního řeknete si. Po chvilce dle návodu ze stránek frameworku to začalo chodit, byl jen problém se zadáním cesty. Ale za chvíli nastalo několika hodinové pátrání potom, proč se nechtějí zpracovávat v šabloně odkazy (link). Dle návodu se má postupovat takto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$template = new Nette\Templating\FileTemplate('email.latte');
 
$template->registerFilter(new Nette\Latte\Engine);
 
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
 
$template->orderId = 123;
 
$mail = new Message;
 
$mail->setFrom('Franta <franta@example.com>')
 
->addTo('petr@example.com')
 
->setHtmlBody($template)
 
->send();
$template = new Nette\Templating\FileTemplate('email.latte');

$template->registerFilter(new Nette\Latte\Engine);

$template->registerHelperLoader('Nette\Templating\Helpers::loader');

$template->orderId = 123;

$mail = new Message;

$mail->setFrom('Franta <franta@example.com>')

->addTo('petr@example.com')

->setHtmlBody($template)

->send();

Ale jak jsem z jistil v presenteru tento kód nechtěl fungovat správně a linky furt nechtěly fungovat. problém je v tom, že není třeba přidávat helpery ani filtry, chyba byla zde:

1
$template = new Nette\Templating\FileTemplate('email.latte');
$template = new Nette\Templating\FileTemplate('email.latte');

Kód stačilo pozměnit následujícím způsobem a bylo po problémech:

1
2
3
4
5
6
7
8
9
10
11
12
13
$template = $this->createTemplate();
 
$template->setFile(__DIR__.'emailTemplate.latte');
 
$mail = new Message;
 
$mail->setFrom('Franta <franta@example.com>')
 
->addTo('petr@example.com')
 
->setHtmlBody($template)
 
->send();
$template = $this->createTemplate();

$template->setFile(__DIR__.'emailTemplate.latte');

$mail = new Message;

$mail->setFrom('Franta <franta@example.com>')

->addTo('petr@example.com')

->setHtmlBody($template)

->send();

… a v latte šabloně:

1
<a href="{link //Homepage:}">odkaz</a>
<a href="{link //Homepage:}">odkaz</a>

se začalo chovat dle očekávání.

Framework není špatný, ale dokumentace dost pokulhává i když se v poslední době dost zlepšila. Kvalita projektu se dost odráží právě v dobré dokumentaci. Pokud si zkusíte vytvořit aplikaci dle tutoriálu na stránkách projektu, tak budete nemile zklamáni, že byť postupujete krok za krokem, tak aplikace nefunguje. Budete se muset potýkat s drobnými chybkami, ale člověk co má již něco za sebou naprogramováno si s tím dozajisté poradí. Co je dnes bez chybek? Nette je český framework a přeji mu dlouhou životnost a velkou komunitu uživatelů.

Generátor dat z LDAP

Člověk se mnohdy ocitne v situaci, že potřebuje na základě nějakých dat získat data jiná.

Tato situace je mnohdy doprovázená fádní a monotónní prací, kterou by často mohl odvést nějaký zaškolený uživatel neboli bfu. Ale co naplat, takové věci musí řešit administrátor… A tady si administrátor položí otázku: Proč v nějaké těžkopádné okenní aplikaci vyklikávat 100vky účtů, když se to dá spláchnout pomocí několika správných příkazů z konzole? Výchozím stavem byl textový soubor s e-mailem nevhodným pro import a výsledkem měl být soubor vhodný pro import pomocí nástrojů zvaných JRBUTILS, které se používají pro správu serverů Novell Netware. NDS neboli Novell Directory Service také nabízí přístup pomocí protokolu LDAP a tady se vyskytla příležitost použít lidovou tvořivost a ubastlit prográmek, který bude tvořit z dodaných dat nevhodných pro import data vhodná…

Napsal jsem si za pár hodin prográmek v Javě, který pomocí protokolu LDAPs vyhledá data načtená z textového souboru, o který bych se s vámi chtěl podělit. Vstupem je tedy textový soubor, kde jsou ku příkladu e-mailové adresy oddělené čárkou nebo jména, příjmení etc. Výstupem programu je opět textový soubor obsahující vstup již zmíněných JRBUTILS nástrojů. Trochu zběhlý programátor si jistě tento prográmek přizpůsobí pro cokoliv dalšího. Jen si dovolím malé upozornění, že pro přístup přes šifrovaný protokol ldaps (port 636) je zapotřebí v Keystore JRE mít certifikát serveru s kterým budete program komunikovat.

Zdrojový kód v Javě:

Ldap searcher (zip, 5KB)