IPub\FlashMessages – tak trochu jiné flash zprávičky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
akadlec
Člen | 1326
+
+2
-

Systémové zprávičky mě tak trochu „štvaly“, problematicky jsem je odděloval aby se zobrazily na správném místě. Např. mám v appce akci která se může zobrazit v modálním okně a nebo klasicky a tady mě nastával problém protože jsem musel detekovat co se zobrazuje a podle toho nastavit kde se ta flash zprávička má zobrazit…No a abych to vyřešil nějak rozumně spojil jsem klasickou komponentu zobrazující flash zprávy s potřebnými handlery a vznikla komplexní extension

# Co to umí:

Hlavní je to co jsem zmínil výše, tj. sama řídí zobrazení zprávy. Pokud dojde k zobrazení zpráv v modálním okně, tak již se nenačtou v hlavním layoutu, takže dokážu prioritizovat jejich zobrazení, resp. nemusím se o nic starat a zpráva se zobrazí tam kde má.

Samozřejmostí je také podpora překladů a jak tady @FilipProcházka v některém tématu zmiňoval u zpráv z formuláře, tak tato ext. podporuje jako zprávu i objekt Phrase z translatoru

Tak kdo chce ať využívá, případně reportuje chyby, vychytávky atd.

David Kudera
Člen | 455
+
0
-

Jen takový dotaz. Nevyhodí to chybu o neexistující třídě Kdyby\Translation\Phrase ve chvíli, kdy v projektu nechci kdyby/translation a budu instalovat s --no-dev? Přeci jen nette/forms taky nezávisí (navíc skrytě) na kdyby.

Ale to se jen tak ptám.. Bylo to to první, co mě prostě napadlo :-)

akadlec
Člen | 1326
+
0
-

nope, mělo by to normálně fungovat, aspoň tedy testy projdou ta závislost na nette/forms pro dev je proto protože nette/app chce birdge z forms při spuštění testů.

David Kudera
Člen | 455
+
0
-

nene já to myslím tak, že závislost na kdyby/translation je dev dependencies.. aha koukám, že teď už to tam není. Tak jsem to myslel, že třeba na produkci, kde instaluji s –no-dev by se mi kdyby nenačetlo (teda kdybych ho nepoužíval)..

byla to otázka kvůli té metodě message, kde se testuje, jestli je argument instance Phrase. Nebyl jsem si jistý, jestli instanceof nevyhodí chybu, když ta třída neexistuje. Aspoň už vím, že to chybu nehodí

akadlec
Člen | 1326
+
0
-

jj bylo to tam, vyhodil jsem to, testy jsou napsane bez translatoru.

chemix
Nette Core | 1310
+
+1
-

Mrknul jsem se na to a napsal clanek, kdyby to nekoho zajimalo :)

http://blog.honzacerny.com/…te-framework

akadlec
Člen | 1326
+
0
-

Velice díky @chemix za článek. Jen bych ještě doplnil primární cíl téhle ext. a to je sjednocení zpracování flash zpráviček na jedno místo. Vznikne tak jeden kontejner který přebírá flash zprávičky a pak je zobrazí podle chuti programátora buď třeba v komponentě nebo pomocí JS. Odpadá tak komplikace kdy se např. v komponentách muselo přemýšlet kam se má zpráva poslat, osobně mám totiž raději pokud se flash zprávy řeší na jednom místě, lépe se to pak udržuje.

akadlec
Člen | 1326
+
+1
-

Takže na podněnty @chemix jsem některé neduhy odstranil a tak nyní je titulek zprávy přeložitelný stejně jako její text a používá stejné parametry jako pro text. Dále je upraveno zpracování parametrů, takže nyní již není nutné vyplňovat všechny ale je možné je přeskakovat takže např:

$flash = $this->notifier->setMessage('Message text: %param%', 'success', 'Message title and %param%', ['param' => 'value']);

Dále byly vylepšeny shortcut metody které již přijímají všechny parametry jako přímá metoda pro přídání zprávy, např.:

$flash = $this->notifier->info('Message text: %param%', 'Message title and %param%', ['param' => 'value']);

Pokud někoho ještě něco napdane, tak klidně piště.