diff --git a/VERSIONS_HOTLINE/182717 b/VERSIONS_HOTLINE/182717 new file mode 100644 index 0000000000000000000000000000000000000000..83a74fcc57f5c469510f24b1dc8b94fc9a65dfa4 --- /dev/null +++ b/VERSIONS_HOTLINE/182717 @@ -0,0 +1 @@ + - correctif #182717 : PHP 8.1 : Souci affichage Menu Vertical - Problèmes redirection sur la page d'accueil \ No newline at end of file diff --git a/library/Class/Systeme/ModulesMenu/News.php b/library/Class/Systeme/ModulesMenu/News.php index 8c76ffd0a72749dbf0ed81cba0c0194def051d4e..d6b5eddff783001e71acb8739826012d837d03f9 100644 --- a/library/Class/Systeme/ModulesMenu/News.php +++ b/library/Class/Systeme/ModulesMenu/News.php @@ -54,7 +54,7 @@ class Class_Systeme_ModulesMenu_News extends Class_Systeme_ModulesMenu_Null { } - public function renderOn($view, $menu_item) { + public function renderOn(ZendAfi_View_Helper_Accueil_Base $view, array $menu_item) { if (!$menu_item) return; diff --git a/library/ZendAfi/View/Helper/Accueil/MenuVertical.php b/library/ZendAfi/View/Helper/Accueil/MenuVertical.php index ebcb0eff36bb63d3f5a0a727cd75875eb7ac333b..9e2e83caf0b73a6b23ca200921851ce7ff0e43f1 100644 --- a/library/ZendAfi/View/Helper/Accueil/MenuVertical.php +++ b/library/ZendAfi/View/Helper/Accueil/MenuVertical.php @@ -161,14 +161,16 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue * @param array $items * @return string */ - private function _renderItems($controller, $action, $menu, $items) { + private function _renderItems($controller, $action, $menu, $items) :string { if (1 == count($items)) { $item = reset($items); $id = $item->getId(); return $this->_renderListItem($menu, $this->view->url(['controller' => $controller, 'action' => $action, - 'id' => $id], null, true)); + 'id' => $id], + null, + true)); } $sub_content = ''; @@ -186,13 +188,13 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - public function visitListItem($menuitem, $url = '#', $target = null) { + public function visitListItem($menuitem, $url = '#', $target = null) :self{ $this->_visit_html .= $this->_renderListItem($menuitem, $url, $target); return $this; } - public function visitListChildsOf($menu_item, $items, $url_provider) { + public function visitListChildsOf(array $menu_item, array $items, closure $url_provider) :void { if (1 == count($items)) { $item = reset($items); $this->_visit_html .= $this->_renderListItem($menu_item, $url_provider($item)); @@ -211,7 +213,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue - public function _renderLIAnchor($url, $content) { + public function _renderLIAnchor(string $url, string $content) :string { return $this->_tag('li', $this->_tag('a', htmlspecialchars($content), ['href' => htmlspecialchars($url)]), @@ -223,7 +225,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue * @param array $menuitem * @return string */ - private function _menuRSSBuilder($menuitem) { + private function _menuRSSBuilder(array $menuitem) :string { $id_items = $menuitem['preferences']['id_items']; $id_categorie = $menuitem['preferences']['id_categorie']; $nb = $menuitem['preferences']['nb']; @@ -243,7 +245,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue * @param array $menuitem * @return string */ - private function _menuPROFILBuilder($menuitem) { + private function _menuPROFILBuilder(array $menuitem) :string { $preferences = isset($menuitem['preferences']) ? $menuitem['preferences'] : null; @@ -264,7 +266,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function _getMenuEntry($url, $target, $item, $sub_menu = false) { + protected function _getMenuEntry(string $url, array $target, $item, bool $sub_menu = false) :string { if (Class_Systeme_ModulesMenu::isModuleAccueil($item)) { $item['type_module'] = Class_Systeme_ModulesMenu::moduleAccueilType($item); $helper = ZendAfi_View_Helper_Accueil_Base::getModuleHelperFromParams($item['id_module'], @@ -292,7 +294,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue * @param array $menuitem * @return string */ - private function _menuSITOBuilder($menuitem) { + private function _menuSITOBuilder(array $menuitem) :string { $id_items = $menuitem['preferences']['id_items']; $id_categorie = $menuitem['preferences']["id_categorie"]; $nb = $menuitem['preferences']["nb"]; @@ -310,7 +312,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue * @param array $menuitem * @return string */ - private function _menuNEWSBuilder($menuitem) { + private function _menuNEWSBuilder(array $menuitem) :string { $module_menu = new Class_Systeme_ModulesMenu_News(); $this->_visit_html = ''; @@ -324,7 +326,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue * @param array $menuitem * @return string */ - protected function _menuBIBNUMBuilder($menuitem) { + protected function _menuBIBNUMBuilder(array $menuitem) :string { if (!$album = Class_Album::find($menuitem["preferences"]['album_id'])) return ''; @@ -351,12 +353,13 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue * @param string $target * @return string */ - private function _renderListItem($menuitem, $url = '#', $target = null) { + private function _renderListItem(array $menuitem, string $url = '#', string $target = null) :string { $a_target = $target ? ['target' => $target] : []; $content = $this->_getMenuEntry($url, $a_target, $menuitem, true); - - if ( ($this->preferences['new_html']=='1') && (isset($menuitem['sous_menus']))) + if ( ($this->preferences['new_html']=='1') + && (isset($menuitem['sous_menus']) + && is_array($menuitem['sous_menus']))) $content .= $this->_getSubItemsHtml($menuitem['sous_menus']); $profil_key = isset($menuitem["preferences"]["clef_profil"]) @@ -372,12 +375,12 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function afficherSousMenu($href) { + protected function afficherSousMenu($href) :array { return $href == '#' ? ['onclick' => 'afficher_sous_menu(this);return false'] : []; } - protected function getMenuPicto($menu_item) { + protected function getMenuPicto($menu_item) :string { if ($menu_item["picto"] > '' and $menu_item["picto"] != "vide.gif") return $this->view->tagImgHover($this->path_ico . $menu_item["picto"], ['alt' => $this->view->_('pictogramme pour ') . $menu_item["libelle"]]); @@ -400,19 +403,19 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function _getContextClass($id_profil) { + protected function _getContextClass(int $id_profil) :string { return (Class_Profil::getCurrentProfil()->getId() == $id_profil) ? 'menuGauche selected_profil' : 'menuGauche'; } - protected function _getContextClassByUrl($url) { + protected function _getContextClassByUrl(string $url) :string { return (new Class_CompareUrl)->isInRequestUrl($url) ? 'selected_action' : ''; } - protected function _getContentAsOldHtml($entries) { + protected function _getContentAsOldHtml(array $entries) :string { $content = []; foreach($entries as $id => $entry) @@ -426,7 +429,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function _getEntryContent($id, $entry) { + protected function _getEntryContent($id, $entry) :string { $entry['id_module'] = $id; $content = [$this->_getLigne($entry)]; @@ -442,7 +445,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function _getContentHtml($menus) { + protected function _getContentHtml(array $menus) :string { $menus_li = ''; foreach($menus as $key => $item) { @@ -456,7 +459,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function _getSubItemsHtml($sub_items) { + protected function _getSubItemsHtml(array $sub_items) :string { $sub_items = array_filter($sub_items); if(1 > count($sub_items)) return ''; @@ -469,7 +472,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function _subMenuLi($sub_content) { + protected function _subMenuLi(?string $sub_content) :string { if(!$sub_content) return ''; @@ -486,7 +489,7 @@ class ZendAfi_View_Helper_Accueil_MenuVertical extends ZendAfi_View_Helper_Accue } - protected function _isCollapsedMenu() { + protected function _isCollapsedMenu() :bool { if(!isset($this->preferences['menu_deplie'])) return true; diff --git a/tests/library/ZendAfi/View/Helper/Accueil/MenuVerticalTest.php b/tests/library/ZendAfi/View/Helper/Accueil/MenuVerticalTest.php index d24592aec46d5d2cb82f88d128a655da04ba6800..f642979d2f35e9aaa67315239ede675e9d4b049b 100644 --- a/tests/library/ZendAfi/View/Helper/Accueil/MenuVerticalTest.php +++ b/tests/library/ZendAfi/View/Helper/Accueil/MenuVerticalTest.php @@ -34,12 +34,7 @@ abstract class MenuVerticalTestCase extends ViewHelperTestCase { $this->_menuConfigTrigger(); - $prefs = ['division' => '1', - 'type_module' => 'MENU_VERTICAL', - 'preferences' => ['boite' => '', - 'afficher_titre'=> '1', - 'menu' => '7', - 'menu_deplie' => 0]]; + $prefs = $this->_setPrefs(); $this->helper = new ZendAfi_View_Helper_Accueil_MenuVertical(12, $prefs); $this->helper->setView(new ZendAfi_Controller_Action_Helper_View()); @@ -48,6 +43,17 @@ abstract class MenuVerticalTestCase extends ViewHelperTestCase { protected function _menuConfigTrigger() {} + + + protected function _setPrefs() : array { + return ['division' => '1', + 'type_module' => 'MENU_VERTICAL', + 'preferences' => ['boite' => '', + 'afficher_titre'=> '1', + 'menu' => '7', + 'menu_deplie' => 0]]; + + } } @@ -74,6 +80,8 @@ abstract class MenuVerticalWithOnlyOneItemTestCase extends MenuVerticalTestCase class MenuVerticalRssWithOnlyOneItemTest extends MenuVerticalWithOnlyOneItemTestCase { + protected $_itemLabel = 'inscrire'; + protected function _menuConfigTrigger() { Class_Profil::getCurrentProfil() ->setCfgMenus([7 => ['libelle' => 'Sciences et Technologies', @@ -732,7 +740,7 @@ class MenuVerticalNewsItemAsSummaryTest extends MenuVerticalTestCase { protected function _menuConfigTrigger() { $this->onLoaderOfModel('Class_Article') ->whenCalled('getArticlesByPreferences') - ->answers([$this->fixture('Class_Article', + ->answers([$this->fixture(Class_Article::class, ['id' => 55, 'titre' => 'My Article', 'contenu' => 'My content'])]); @@ -768,3 +776,67 @@ class MenuVerticalNewsItemAsSummaryTest extends MenuVerticalTestCase { $this->_html); } } + + + + +class MenuVerticalNewsWithEmptySousMenuTest extends MenuVerticalWithOnlyOneItemTestCase { + protected $_itemLabel = 'inscrire'; + + protected function _menuConfigTrigger() { + + $this->onLoaderOfModel('Class_Article') + ->whenCalled('getArticlesByPreferences') + ->answers([$this->fixture(Class_Article::class, + ['id' => 12, + 'titre' => 'My Article', + 'contenu' => 'My content'])]); + + $prefs = ['type_module' => 'NEWS', + 'id_module' => 7, + 'type_menu' => 'NEWS', + 'new_html' => 1, + 'libelle' => 'S\'inscrire', + 'picto' => 'vide.gif', + 'id_items' => 12, + 'nb_aff' => 5, + 'nb_analyse' => 10, + 'display_order' => 'Selection', + 'display_mode' => 'Submenu', + 'summary_content' => 'Summary', + 'sous_menus' =>'' + ]; + Class_Profil::getCurrentProfil() + ->setCfgMenus([7 => ['libelle' => 'Actus', + 'menus' => ['preferences'=> + array_merge($prefs, + ['preferences'=> $prefs])] + ] + ] + + )->save(); + + } + + + protected function _setPrefs() : array { + return ['division' => '1', + 'type_module' => 'MENU_VERTICAL', + 'preferences' => ['boite' => '', + 'afficher_titre'=> '1', + 'menu' => '7', + 'new_html' => '1', + 'menu_deplie' => 0]]; + + } + + + /** @test */ + function withNewHtmlOnShouldDisplayPage() { + $this->helper->setPreference('new_html', '1'); + $this->_html = $this->helper->getBoite(); + $this->assertXPath($this->_html, + '//div[@class="titre"]//h1[text()="Actus"]', + $this->_html); + } +}