Signály a helper ifCurrent

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

Ahoj,

mám na hlavní stránce jednoduché menu, které filtruje položky:

<ul>
<li{ifCurrent filter! today} class="active">{/ifCurrent}><a n:href="filter! today">Dnešní</a></li>
<li{ifCurrent filter! tomorrow} class="active">{/ifCurrent}><a n:href="filter! tomorrow">Zítřejší</a></li>
<li{ifCurrent filter! done} class="active">{/ifCurrent}><a n:href="filter! done">Hotové</a></li>
<li{ifCurrent filter! new} class="active">{/ifCurrent}><a n:href="filter! new">Nové</a></li>
</ul>

Při vstupu na hlavní stránce chci, aby bylo filtrováno podle první položky (tedy „Dnešní“). V HomepagePresenter tedy mám

	protected function startup() {
		parent::startup();
		if (!$this->filter)
			handleFilter('today');
	}

V handleFilter() samozřejmě ukládám název filtru do $this->filter.

Problém je s ifCurrent. Při vstupu na HP je zapnut filtr „Dnešní“, ale daná položka <li> není aktivní. Při kliknutí na filtr je samozřejmě vše v pořádku, neboť signál je v URL.

Poradíte jak docílit, aby i na hlavní stránce bez kliknutí byla první položka zvýrazněna (tj. <li> bude mít třídu .active)?

bojovyletoun
Člen | 667
+
0
-

Hádám, že máš problém, kdy na daném řádku se testuje poslední vytvořený odkaz, což bude odkaz z předeělého řádku.

Viz zde https://forum.nette.org/…tart-diskuze#…
Hint -místo makroformy {ifLinkCurrent} můžeš použít nformu: n:class=„$presenter->linkCurrent()“ (problém to ale neřeší)

PS: bylo by technicky možné v Latte zařídit, aby ono makro kontrolovalo ty odkazy, jako je tady zamýšleno? tedy nějak analyzovat obsah vnitřích uzlů <li>, najít n:href ?

aGr
Člen | 45
+
0
-

Díky za odkaz, ale ta metoda isLinkCurrent funguje i na signály? Pokud ano, jak bych to měl napsat?

<li n:class="$presenter->isLinkCurrent('Homepage:', array('today')) ? active">

nefunguje.

jtousek
Člen | 951
+
0
-

Verze Nette? Ono totiž v poslední verzi Nette je isLinkCurrent plné hmyzu a v určitých případech nefunguje přestože předchozí verze byla v pořádku.

aGr
Člen | 45
+
0
-

2.0.3 released on 2012–04–04.

Ale ten odkaz na „sebe“, co jsem napsal není správně ne?

'Homepage:', array('today')

znamená Homepage:default s parametrem 'today' nebo se pletu? Měl bych tam nějak zakomponovat, že chci signál, ne? Díky moc.