auguria_menu.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. /* Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
  3. * Copyright (C) 2009 Regis Houssin <regis.houssin@capnetworks.com>
  4. * Copyright (C) 2008-2013 Laurent Destailleur <eldy@users.sourceforge.net>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. /**
  20. * \file htdocs/core/menus/standard/auguria_menu.php
  21. * \brief Menu auguria manager
  22. */
  23. /**
  24. * Class to manage menu Auguria
  25. */
  26. class MenuManager
  27. {
  28. var $db;
  29. var $type_user; // Put 0 for internal users, 1 for external users
  30. var $atarget=""; // To store default target to use onto links
  31. var $name="auguria";
  32. var $menu_array;
  33. var $menu_array_after;
  34. var $tabMenu;
  35. /**
  36. * Constructor
  37. *
  38. * @param DoliDB $db Database handler
  39. * @param int $type_user Type of user
  40. */
  41. function __construct($db, $type_user)
  42. {
  43. $this->type_user=$type_user;
  44. $this->db=$db;
  45. }
  46. /**
  47. * Load this->tabMenu
  48. *
  49. * @param string $forcemainmenu To force mainmenu to load
  50. * @param string $forceleftmenu To force leftmenu to load
  51. * @return void
  52. */
  53. function loadMenu($forcemainmenu='',$forceleftmenu='')
  54. {
  55. global $conf, $user, $langs;
  56. // On sauve en session le menu principal choisi
  57. if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"];
  58. if (isset($_GET["idmenu"])) $_SESSION["idmenu"]=$_GET["idmenu"];
  59. // Read mainmenu and leftmenu that define which menu to show
  60. if (isset($_GET["mainmenu"]))
  61. {
  62. // On sauve en session le menu principal choisi
  63. $mainmenu=$_GET["mainmenu"];
  64. $_SESSION["mainmenu"]=$mainmenu;
  65. $_SESSION["leftmenuopened"]="";
  66. }
  67. else
  68. {
  69. // On va le chercher en session si non defini par le lien
  70. $mainmenu=isset($_SESSION["mainmenu"])?$_SESSION["mainmenu"]:'';
  71. }
  72. if (! empty($forcemainmenu)) $mainmenu=$forcemainmenu;
  73. if (isset($_GET["leftmenu"]))
  74. {
  75. // On sauve en session le menu principal choisi
  76. $leftmenu=$_GET["leftmenu"];
  77. $_SESSION["leftmenu"]=$leftmenu;
  78. if ($_SESSION["leftmenuopened"]==$leftmenu) // To collapse
  79. {
  80. //$leftmenu="";
  81. $_SESSION["leftmenuopened"]="";
  82. }
  83. else
  84. {
  85. $_SESSION["leftmenuopened"]=$leftmenu;
  86. }
  87. } else {
  88. // On va le chercher en session si non defini par le lien
  89. $leftmenu=isset($_SESSION["leftmenu"])?$_SESSION["leftmenu"]:'';
  90. }
  91. if (! empty($forceleftmenu)) $leftmenu=$forceleftmenu;
  92. require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php';
  93. $tabMenu=array();
  94. $menuArbo = new Menubase($this->db,'auguria');
  95. $menuArbo->menuLoad($mainmenu, $leftmenu, $this->type_user, 'auguria', $tabMenu);
  96. $this->tabMenu=$tabMenu;
  97. }
  98. /**
  99. * Show menu
  100. *
  101. * @param string $mode 'top', 'left', 'jmobile'
  102. * @param array $moredata An array with more data to output
  103. * @return int 0 or nb of top menu entries if $mode = 'topnb'
  104. */
  105. function showmenu($mode, $moredata=null)
  106. {
  107. global $conf, $langs, $user;
  108. require_once DOL_DOCUMENT_ROOT.'/core/menus/standard/auguria.lib.php';
  109. if ($this->type_user == 1)
  110. {
  111. $conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED=1;
  112. $conf->global->MAIN_SEARCHFORM_CONTACT_DISABLED=1;
  113. }
  114. require_once DOL_DOCUMENT_ROOT.'/core/class/menu.class.php';
  115. $this->menu=new Menu();
  116. if ($mode == 'top') print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0,$mode);
  117. if ($mode == 'left') print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0,'','',$moredata);
  118. if ($mode == 'topnb')
  119. {
  120. print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode);
  121. return $this->menu->getNbOfVisibleMenuEntries();
  122. }
  123. if ($mode == 'jmobile')
  124. {
  125. print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1,$mode);
  126. print '<!-- Generate menu list from menu handler '.$this->name.' -->'."\n";
  127. foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'
  128. {
  129. print '<ul class="ulmenu" data-inset="true">';
  130. print '<li class="lilevel0">';
  131. if ($val['enabled'] == 1)
  132. {
  133. $relurl=dol_buildpath($val['url'],1);
  134. $relurl=preg_replace('/__LOGIN__/',$user->login,$relurl);
  135. $relurl=preg_replace('/__USERID__/',$user->id,$relurl);
  136. print '<a class="alilevel0" href="#">'.$val['titre'].'</a>'."\n";
  137. // Search submenu fot this entry
  138. $tmpmainmenu=$val['mainmenu'];
  139. $tmpleftmenu='all';
  140. $submenu=new Menu();
  141. print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$submenu,1,$tmpmainmenu,$tmpleftmenu);
  142. $nexturl=dol_buildpath($submenu->liste[0]['url'],1);
  143. $canonrelurl=preg_replace('/\?.*$/','',$relurl);
  144. $canonnexturl=preg_replace('/\?.*$/','',$nexturl);
  145. //var_dump($canonrelurl);
  146. //var_dump($canonnexturl);
  147. print '<ul>'."\n";
  148. if (($canonrelurl != $canonnexturl && ! in_array($val['mainmenu'],array('tools')))
  149. || (strpos($canonrelurl,'/product/index.php') !== false || strpos($canonrelurl,'/compta/bank/index.php') !== false))
  150. {
  151. // We add sub entry
  152. print str_pad('',1).'<li class="lilevel1 ui-btn-icon-right ui-btn">'; // ui-btn to highlight on clic
  153. print '<a href="'.$relurl.'">';
  154. if ($langs->trans(ucfirst($val['mainmenu'])."Dashboard") == ucfirst($val['mainmenu'])."Dashboard") // No translation
  155. {
  156. if ($val['mainmenu'] == 'cashdesk') print $langs->trans("Access");
  157. else print $langs->trans("Dashboard");
  158. }
  159. else print $langs->trans(ucfirst($val['mainmenu'])."Dashboard");
  160. print '</a>';
  161. print '</li>'."\n";
  162. }
  163. foreach($submenu->liste as $key2 => $val2) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu'
  164. {
  165. $showmenu=true;
  166. if (! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($val2['enabled'])) $showmenu=false;
  167. if ($showmenu) // Visible (option to hide when not allowed is off or allowed)
  168. {
  169. $relurl2=dol_buildpath($val2['url'],1);
  170. $relurl2=preg_replace('/__LOGIN__/',$user->login,$relurl2);
  171. $relurl2=preg_replace('/__USERID__/',$user->id,$relurl2);
  172. $canonurl2=preg_replace('/\?.*$/','',$val2['url']);
  173. //var_dump($val2['url'].' - '.$canonurl2.' - '.$val2['level']);
  174. if (in_array($canonurl2,array('/admin/index.php','/admin/tools/index.php','/core/tools.php'))) $relurl2='';
  175. if ($val2['level']==0) print str_pad('',$val2['level']+1).'<li class="lilevel'.($val2['level']+1).' ui-btn-icon-right ui-btn">'; // ui-btn to highlight on clic
  176. else print str_pad('',$val2['level']+1).'<li class="lilevel'.($val2['level']+1).'">'; // ui-btn to highlight on clic
  177. if ($relurl2)
  178. {
  179. if ($val2['enabled']) // Allowed
  180. {
  181. print '<a href="'.$relurl2.'"';
  182. //print ' data-ajax="false"';
  183. print '>';
  184. }
  185. else // Not allowed but visible (greyed)
  186. {
  187. print '<a href="#" class="vsmenudisabled">';
  188. }
  189. }
  190. print $val2['titre'];
  191. if ($relurl2)
  192. {
  193. if ($val2['enabled']) // Allowed
  194. print '</a>';
  195. else
  196. print '</a>';
  197. }
  198. print '</li>'."\n";
  199. }
  200. }
  201. //var_dump($submenu);
  202. print '</ul>';
  203. }
  204. if ($val['enabled'] == 2)
  205. {
  206. print '<font class="vsmenudisabled">'.$val['titre'].'</font>';
  207. }
  208. print '</li>';
  209. print '</ul>'."\n";
  210. }
  211. }
  212. unset($this->menu);
  213. }
  214. }