Zobrazení počtu nepřečtených zpráv někde v hlavním layoutu – jak na to?

Alsatian
Člen | 164
+
0
-

Ahoj.
Rád bych v hlavním menu @layout.latte třeba napravo zobrazoval ajaxově počet nepřečtených zpráv – čteno z DB.

Mám JS fci, zajišťující pravidelnou kontrolu počtu nepřečtených zpráv.

function f_cmsTimer() {
	$.nette.ajax({
		url: '?do=unreadMessages',
		data: {}
	}).done(function() {});
	var cmsTimer = window.setTimeout(function () {f_cmsTimer();}, 10000); // opětovné spuštění
}
$(document).ready(function() {
	f_cmsTimer(); // první spuštění
});

?do=unreadMessages – tyhle linky generuje nette při ajax volání, snad nevadí, že jsem jej takto natvrdo uvedl v JS.

Problé, který se mi nedaří vyřešit je, že signál unreadMesasges je hledán handler v presenteru, který mám otevřený.
Třeba PagePresenter. Pokud budu mít zobrazenou jinou stránku, třeba PostPresenter, bude hledán tam.

Předpokládám, že v handleru si načtu z DB počet zpráv a zavolám překreslení snippetu (samotné zobrazení zpráv jím obalím).

Jak byste tohle řešili vy? Třeba i úplně jiné, jednodušší řešení. Díky moc!

Editoval Alsatian (27. 9. 2018 9:21)

CZechBoY
Člen | 3608
+
0
-

Dal bych handleUnreadMessages do BasePresenteru, od kterýho všechny presentery dědí.
btw je lepší použít {plink unreadMessages!} místo takhle natvrdo adresy (navíc bys tim našel problém asi i dříve, protože by nebylo možné vytvořit url).

Alsatian
Člen | 164
+
0
-

@CZechBoY Nenapadlo mě, že handler prvně asi Nette hledá tam, takže jsem jej ani nezkoušel v BasePresenteru vytvořit.
Jdu bojovat dále :) Díky!

CZechBoY
Člen | 3608
+
+1
-

Nette hledá handler v aktuálním presenteru. Pokud aktuální presenter dědí od BasePresenteru tak zdědí i metody handle.