Loading src/UnicaenApp/View/Helper/Navigation/MenuSecondaire.php +11 −9 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace UnicaenApp\View\Helper\Navigation; use RecursiveIteratorIterator; use Zend\Navigation\Page\AbstractPage; /** * Dessine le menu secondaire de l'application (vertical). Loading @@ -23,6 +24,8 @@ use RecursiveIteratorIterator; * - Si la page active est de niveau N supérieur à 3, elle continue d'apparaître dans le menu, et * ses pages filles (niveau N+1) éventuelles apparaissent dessous. * * NB : il est quand même possible d'utiliser {@see setMinDepth()} pour changer le seuil de recherche. * * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr> */ class MenuSecondaire extends AbstractMenu Loading Loading @@ -85,12 +88,13 @@ class MenuSecondaire extends AbstractMenu // $prec = $this->getRenderInvisible(); // valeur initiale rétablie plus bas // $this->setRenderInvisible(true); // recherche de la page active de niveau 2 $found = $this->findActive($container, 1, 1); // recherche de la page active à partir du niveau seuil éventuellement spécifié $minDepth = $this->getMinDepth() > 0 ? $this->getMinDepth() : 1; $found = $this->findActive($container, $minDepth, $minDepth); if (!$found) { return ''; } $activePageNiv2 = $found['page']; $activePage = $found['page']; // recherche de la page active quelque soit son niveau pour déterminer la profondeur maxi utilisée plus bas $found = $this->findActive($container, 1); Loading @@ -98,13 +102,13 @@ class MenuSecondaire extends AbstractMenu // $this->setRenderInvisible($prec); // on ne considère que le sous-menu correspondant à la page active de niveau 2 $container = $activePageNiv2; // on ne considère que le sous-menu correspondant à la page active $container = $activePage; // suppression des pages qu'on ne veut pas prendre en compte $iterator = new RecursiveIteratorIterator($container, RecursiveIteratorIterator::SELF_FIRST); $iterator->setMaxDepth(0); foreach ($iterator as $page) { /* @var $page \Zend\Navigation\Page\Mvc */ foreach ($iterator as $page) { /* @var $page AbstractPage */ $isActive = $page->isActive(true); if (!$isActive && $page->hasChildren()) { $page->removePages(); Loading @@ -121,7 +125,7 @@ class MenuSecondaire extends AbstractMenu // } // echo PHP_EOL; $html = $this->renderNormalMenu( return $this->renderNormalMenu( $container, $options['ulClass'], $options['indent'], Loading @@ -132,7 +136,5 @@ class MenuSecondaire extends AbstractMenu $options['addClassToListItem'], isset($options['liActiveClass']) ? $options['liActiveClass'] : null ); return $html; } } No newline at end of file Loading
src/UnicaenApp/View/Helper/Navigation/MenuSecondaire.php +11 −9 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace UnicaenApp\View\Helper\Navigation; use RecursiveIteratorIterator; use Zend\Navigation\Page\AbstractPage; /** * Dessine le menu secondaire de l'application (vertical). Loading @@ -23,6 +24,8 @@ use RecursiveIteratorIterator; * - Si la page active est de niveau N supérieur à 3, elle continue d'apparaître dans le menu, et * ses pages filles (niveau N+1) éventuelles apparaissent dessous. * * NB : il est quand même possible d'utiliser {@see setMinDepth()} pour changer le seuil de recherche. * * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr> */ class MenuSecondaire extends AbstractMenu Loading Loading @@ -85,12 +88,13 @@ class MenuSecondaire extends AbstractMenu // $prec = $this->getRenderInvisible(); // valeur initiale rétablie plus bas // $this->setRenderInvisible(true); // recherche de la page active de niveau 2 $found = $this->findActive($container, 1, 1); // recherche de la page active à partir du niveau seuil éventuellement spécifié $minDepth = $this->getMinDepth() > 0 ? $this->getMinDepth() : 1; $found = $this->findActive($container, $minDepth, $minDepth); if (!$found) { return ''; } $activePageNiv2 = $found['page']; $activePage = $found['page']; // recherche de la page active quelque soit son niveau pour déterminer la profondeur maxi utilisée plus bas $found = $this->findActive($container, 1); Loading @@ -98,13 +102,13 @@ class MenuSecondaire extends AbstractMenu // $this->setRenderInvisible($prec); // on ne considère que le sous-menu correspondant à la page active de niveau 2 $container = $activePageNiv2; // on ne considère que le sous-menu correspondant à la page active $container = $activePage; // suppression des pages qu'on ne veut pas prendre en compte $iterator = new RecursiveIteratorIterator($container, RecursiveIteratorIterator::SELF_FIRST); $iterator->setMaxDepth(0); foreach ($iterator as $page) { /* @var $page \Zend\Navigation\Page\Mvc */ foreach ($iterator as $page) { /* @var $page AbstractPage */ $isActive = $page->isActive(true); if (!$isActive && $page->hasChildren()) { $page->removePages(); Loading @@ -121,7 +125,7 @@ class MenuSecondaire extends AbstractMenu // } // echo PHP_EOL; $html = $this->renderNormalMenu( return $this->renderNormalMenu( $container, $options['ulClass'], $options['indent'], Loading @@ -132,7 +136,5 @@ class MenuSecondaire extends AbstractMenu $options['addClassToListItem'], isset($options['liActiveClass']) ? $options['liActiveClass'] : null ); return $html; } } No newline at end of file