Zvýraznění aktuálního modulu v menu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- thunderbuff
 - Člen | 164
 
Píšu docela robusní aplikaci, tak jsem se rozhodl využít modulů. V horním menu mám záložky jednotivých modulů a v levém menu mám odkazy na jednotlivé presentery a akce. Lze nějak „neprasácky“ zvýraznit aktuální modul v horním menu?
Jinými slovy:
Kód níže označí jako current akci resenteru, lze to nějak předělat na označení presenteru v modulu?
<?php
$presenter->isLinkCurrent("Presenter:*")
//Hledám funkční variantu tohoto:
$presenter->isLinkCurrent("Module:*")
?>
Napadlo mě pouze řešení parsováním hodnoty vrácené z $presenter->getName(), ale přijde mi to šílené
Editoval thunderbuff (10. 8. 2012 15:11)

- PavelJurasek
 - Člen | 39
 
Já si přidal do svého presenteru
	/**
	 * @param string $module
	 * @return boolean
	 */
	public function isModuleCurrent($module)
	{
		if (!$a = strrpos($this->name, ':')) { // not in module
			return false;
		}
		return ltrim($module, ':') === substr($this->name, 0, $a);
	}
a v latte
	<a n:class="$presenter->isModuleCurrent('Modul:Submodul') ? current"> // nebo i s úvodní dvojtečkou <a n:class="$presenter->isModuleCurrent(':Modul:Submodul')">
	<a n:class="$presenter->isModuleCurrent('Front') ? current"> // nebo i s úvodní dvojtečkou <a n:class="$presenter->isModuleCurrent(':Front')">
nebo pokud si nechceš dědit presenter, tak třeba v bootstrapu
\Nette\Application\UI\Presenter::extensionMethod('isModuleCurrent', function(\Nette\Application\UI\Presenter $that, $module) {
	if (!$a = strrpos($that->name, ':')) { // not in module
		return false;
	}
	return ltrim($module, ':') === substr($that->name, 0, $a);
});
					Editoval PavelJurasek (12. 8. 2012 22:59)