diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index 90b6affe75e..8b4cff108fa 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -431,116 +431,45 @@ class Menubase * @param type_user 0=Internal,1=External,2=All * @param mainmenu Value for mainmenu that defined top menu * @param menu_handler Name of menu_handler used (auguria, eldy...) + * @param tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) * @return array Return array with menu entries for top menu - * TODO Mutualize menuTopCharger and menuLeftCharger */ - function menuTopCharger($mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=array()) + function menuTopCharger($mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=null) { global $langs, $user, $conf; global $leftmenu,$rights; // To export to dol_eval function - + $leftmenu=$myleftmenu; // To export to dol_eval function + // Load datas into tabMenu - /*if (sizeof($tabMenu) == 0) + if (sizeof($tabMenu) == 0) { - $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu); - //var_dump($tabMenu); + $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu); } - else + + $newTabMenu=array(); + $i=0; + foreach($tabMenu as $val) { - // TODO Just try to find menutopid from tabMenu and mainmenu - $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu); - }*/ + if ($val[9]=='top') + { + + $newTabMenu[$i]['rowid']=$val[0]; + $newTabMenu[$i]['fk_menu']=$val[1]; + $newTabMenu[$i]['url']=$val[2]; + $newTabMenu[$i]['titre']=$val[3]; + $newTabMenu[$i]['right']=$val[4]; + $newTabMenu[$i]['atarget']=$val[5]; + $newTabMenu[$i]['leftmenu']=$val[6]; + $newTabMenu[$i]['enabled']=$val[7]; + $newTabMenu[$i]['mainmenu']=$val[8]; + $newTabMenu[$i]['type']=$val[9]; + $newTabMenu[$i]['lang']=$val[10]; + $i++; + } + } - - $tabMenu=array(); - - $sql = "SELECT m.rowid, m.mainmenu, m.titre, m.url, m.langs, m.perms, m.enabled, m.target"; - $sql.= " FROM ".MAIN_DB_PREFIX."menu as m"; - $sql.= " WHERE m.entity = ".$conf->entity; - $sql.= " AND m.menu_handler in('".$menu_handler."','all')"; - if ($type_user == 0) $sql.= " AND m.usertype in (0,2)"; - if ($type_user == 1) $sql.= " AND m.usertype in (1,2)"; - // If type_user == 2, no test requires - $sql.= " AND m.type = 'top'"; - $sql.= " ORDER BY m.position"; - - dol_syslog("Menubase::menuTopCharger sql=".$sql); - $resql = $this->db->query($sql); - if ($resql) - { - $numa = $this->db->num_rows($resql); - - $a = 0; - $b = 0; - $oldrowid=0; - while ($a < $numa) - { - $objm = $this->db->fetch_object($resql); - - // Define $chaine - $chaine=""; - $title=$langs->trans($objm->titre); - if ($title == $objm->titre) // Translation not found - { - if (! empty($objm->langs)) // If there is a dedicated translation file - { - $langs->load($objm->langs); - } - - if (preg_match("/\//",$objm->titre)) // To manage translation when title is string1/string2 - { - $tab_titre = explode("/",$objm->titre); - $chaine = $langs->trans($tab_titre[0])."/".$langs->trans($tab_titre[1]); - } - else - { - $chaine = $langs->trans($objm->titre); - } - } - else - { - $chaine=$title; - } - //print "x".$objm->titre."-".$chaine; - - // Define $right - $perms = true; - if ($objm->perms) - { - $perms = verifCond($objm->perms); - } - - // Define $enabled - $enabled = true; - if ($objm->enabled) - { - $enabled = verifCond($objm->enabled); - } - - $tabMenu[$b]['rowid'] = $objm->rowid; - $tabMenu[$b]['mainmenu'] = $objm->mainmenu; - $tabMenu[$b]['titre'] = $chaine; // Title - $tabMenu[$b]['url'] = $objm->url; - $tabMenu[$b]['atarget'] = $objm->target; - if (! isset($tabMenu[$b]['right'])) $tabMenu[$b]['right'] = $perms; - else $tabMenu[$b]['right'] = ($tabMenu[$b]['right'] && $perms); - if (! isset($tabMenu[$b]['enabled'])) $tabMenu[$b]['enabled'] = $enabled; - else $tabMenu[$b]['enabled'] = ($tabMenu[$b]['enabled'] && $enabled); - $tabMenu[$b]['lang'] = $objm->langs; - - //var_dump($tabMenu); - $b++; - $a++; - } - $this->db->free($resql); - } - else - { - dol_print_error($this->db); - } - - return $tabMenu; + return $newTabMenu; } /** @@ -553,7 +482,7 @@ class Menubase * @param $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) * @return array Menu array for particular mainmenu value or full tabArray */ - function menuLeftCharger($newmenu, $mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=array()) + function menuLeftCharger($newmenu, $mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=null) { global $langs, $user, $conf; // To export to dol_eval function global $leftmenu,$rights; // To export to dol_eval function @@ -566,14 +495,9 @@ class Menubase if (sizeof($tabMenu) == 0) { $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu); - //var_dump($tabMenu); } - else - { - // TODO Just try to find menutopid from tabMenu and mainmenu - $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu); - } - + //var_dump($tabMenu); + // Define menutopid $menutopid=''; foreach($tabMenu as $val) @@ -691,7 +615,8 @@ class Menubase else $tabMenu[$b][7] = ($tabMenu[$b][7] && $enabled); $tabMenu[$b][8] = $menu['mainmenu']; $tabMenu[$b][9] = $menu['type']; - + $tabMenu[$b][10] = $menu['langs']; + $b++; $a++; } diff --git a/htdocs/includes/menus/smartphone/smartphone.lib.php b/htdocs/includes/menus/smartphone/smartphone.lib.php index eca3201552d..66746f7bbfc 100755 --- a/htdocs/includes/menus/smartphone/smartphone.lib.php +++ b/htdocs/includes/menus/smartphone/smartphone.lib.php @@ -43,46 +43,40 @@ function print_smartphone_menu($db,$atarget,$type_user,$limitmenuto) $menutop = new Menubase($db,'smartphone','top'); $menuleft = new Menubase($db,'smartphone','left'); - $tabMenu = $menutop->menuTopCharger('', '', $type_user, 'smartphone'); - $numTabMenu = count($tabMenu); - - /*$newmenu = new Menu(); - $leftmenu = $menuleft->menuLeftCharger($newmenu,'','',($user->societe_id?1:0),'smartphone'); - $menus = $leftmenu->liste; - var_dump($menus); - */ + $newTabMenu = $menutop->menuTopCharger('', '', $type_user, 'smartphone'); + $numTabMenu = count($newTabMenu); print_start_menu_array(); for($i=0; $i<$numTabMenu; $i++) { - if ($tabMenu[$i]['enabled'] == true) + if ($newTabMenu[$i]['enabled'] == true) { - if ($tabMenu[$i]['right'] == true) // Is allowed + if ($newTabMenu[$i]['right'] == true) // Is allowed { // Define url - if (preg_match("/^(http:\/\/|https:\/\/)/i",$tabMenu[$i]['url'])) + if (preg_match("/^(http:\/\/|https:\/\/)/i",$newTabMenu[$i]['url'])) { - $url = dol_buildpath($tabMenu[$i]['url'],1); + $url = dol_buildpath($newTabMenu[$i]['url'],1); $url=preg_replace('/&.*/i','',$url); } else { $menus=''; - if ($limitmenuto != 'top') + if ($limitmenuto > 0) { $newmenu = new Menu(); - $leftmenu = $menuleft->menuLeftCharger($newmenu,$tabMenu[$i]['mainmenu'],'',($user->societe_id?1:0),'smartphone'); + $leftmenu = $menuleft->menuLeftCharger($newmenu,$newTabMenu[$i]['mainmenu'],'',($user->societe_id?1:0),'smartphone'); $menus = $leftmenu->liste; //var_dump($menus); } print_start_menu_entry(); - if (is_array($menus) && !empty($menus)) + if (is_array($menus) && !empty($menus) && $limitmenuto > 0) { - $title=$tabMenu[$i]['titre']; - // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($tabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&'))); + $title=$newTabMenu[$i]['titre']; + // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($newTabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&'))); print_text_menu_entry($title); $num = count($menus); @@ -127,12 +121,12 @@ function print_smartphone_menu($db,$atarget,$type_user,$limitmenuto) } else { - $url=dol_buildpath($tabMenu[$i]['url'],1); + $url=dol_buildpath($newTabMenu[$i]['url'],1); $url=preg_replace('/&.*/i','',$url); - print ''; - $title=$tabMenu[$i]['titre']; - // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($tabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&'))); + print ''; + $title=$newTabMenu[$i]['titre']; + // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($newTabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&'))); print_text_menu_entry($title); print ''; } diff --git a/htdocs/includes/menus/standard/auguria.lib.php b/htdocs/includes/menus/standard/auguria.lib.php index c4ab59270f1..80b3f63163c 100644 --- a/htdocs/includes/menus/standard/auguria.lib.php +++ b/htdocs/includes/menus/standard/auguria.lib.php @@ -45,43 +45,43 @@ function print_auguria_menu($db,$atarget,$type_user) $_SESSION["leftmenuopened"]=""; $menuArbo = new Menubase($db,'auguria','top'); - $tabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'], '', $type_user, 'auguria'); + $newTabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'], '', $type_user, 'auguria'); print_start_menu_array_auguria(); - for($i=0; $i'; - print ''; - print_text_menu_entry_auguria($tabMenu[$i]['titre']); + print ''; + print_text_menu_entry_auguria($newTabMenu[$i]['titre']); print ''; print_end_menu_entry_auguria(); } @@ -92,7 +92,7 @@ function print_auguria_menu($db,$atarget,$type_user) print_start_menu_entry_auguria($idsel); print ''; print ''; - print_text_menu_entry_auguria($tabMenu[$i]['titre']); + print_text_menu_entry_auguria($newTabMenu[$i]['titre']); print ''; print_end_menu_entry_auguria(); } diff --git a/htdocs/includes/menus/standard/eldy.lib.php b/htdocs/includes/menus/standard/eldy.lib.php index 3a449149234..b48345f8d82 100644 --- a/htdocs/includes/menus/standard/eldy.lib.php +++ b/htdocs/includes/menus/standard/eldy.lib.php @@ -436,44 +436,44 @@ function print_eldy_menu($db,$atarget,$type_user) $menuArbo = new Menubase($db,'eldy','top'); - $tabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'],'',$type_user,'eldy'); + $newTabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'],'',$type_user,'eldy'); - for($i=0; $i'; + print ''; print '
'; print '
'; - print ''; - print_text_menu_entry($tabMenu[$i]['titre']); + print ''; + print_text_menu_entry($newTabMenu[$i]['titre']); print ''; print_end_menu_entry(); } @@ -484,7 +484,7 @@ function print_eldy_menu($db,$atarget,$type_user) print_start_menu_entry($idsel); print '
'; print ''; - print_text_menu_entry($tabMenu[$i]['titre']); + print_text_menu_entry($newTabMenu[$i]['titre']); print ''; print_end_menu_entry(); } diff --git a/htdocs/index.php b/htdocs/index.php index 1b3495dbb7a..e2b4032e41c 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -57,8 +57,8 @@ if (!isset($conf->global->MAIN_INFO_SOCIETE_NOM) || empty($conf->global->MAIN_IN // If smartphone mode, we do no show main page, we show only menu if (preg_match('/^smartphone/',$conf->smart_menu) && isset($conf->browser->phone)) { - $limitmenu=GETPOST('limitmenuto')?GETPOST('limitmenuto'):'top'; - $limitmenu=''; // A virer + $limitmenuto=GETPOST('limitmenuto')?GETPOST('limitmenuto'):0; + $limitmenuto=1; // A virer // Load the smartphone menu manager $result=@include_once(DOL_DOCUMENT_ROOT ."/includes/menus/smartphone/".$conf->smart_menu);