* Copyright (C) 2009 Regis Houssin * Copyright (C) 2008-2013 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/core/menus/standard/auguria_menu.php * \brief Menu auguria manager */ /** * Class to manage menu Auguria */ class MenuManager { var $db; var $type_user; // Put 0 for internal users, 1 for external users var $atarget=""; // To store default target to use onto links var $name="auguria"; var $menu_array; var $menu_array_after; var $tabMenu; /** * Constructor * * @param DoliDB $db Database handler * @param int $type_user Type of user */ function __construct($db, $type_user) { $this->type_user=$type_user; $this->db=$db; } /** * Load this->tabMenu * * @param string $forcemainmenu To force mainmenu to load * @param string $forceleftmenu To force leftmenu to load * @return void */ function loadMenu($forcemainmenu='',$forceleftmenu='') { global $conf, $user, $langs; // On sauve en session le menu principal choisi if (isset($_GET["mainmenu"])) $_SESSION["mainmenu"]=$_GET["mainmenu"]; if (isset($_GET["idmenu"])) $_SESSION["idmenu"]=$_GET["idmenu"]; // Read mainmenu and leftmenu that define which menu to show if (isset($_GET["mainmenu"])) { // On sauve en session le menu principal choisi $mainmenu=$_GET["mainmenu"]; $_SESSION["mainmenu"]=$mainmenu; $_SESSION["leftmenuopened"]=""; } else { // On va le chercher en session si non defini par le lien $mainmenu=isset($_SESSION["mainmenu"])?$_SESSION["mainmenu"]:''; } if (! empty($forcemainmenu)) $mainmenu=$forcemainmenu; if (isset($_GET["leftmenu"])) { // On sauve en session le menu principal choisi $leftmenu=$_GET["leftmenu"]; $_SESSION["leftmenu"]=$leftmenu; if ($_SESSION["leftmenuopened"]==$leftmenu) // To collapse { //$leftmenu=""; $_SESSION["leftmenuopened"]=""; } else { $_SESSION["leftmenuopened"]=$leftmenu; } } else { // On va le chercher en session si non defini par le lien $leftmenu=isset($_SESSION["leftmenu"])?$_SESSION["leftmenu"]:''; } if (! empty($forceleftmenu)) $leftmenu=$forceleftmenu; require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php'; $tabMenu=array(); $menuArbo = new Menubase($this->db,'auguria'); $menuArbo->menuLoad($mainmenu, $leftmenu, $this->type_user, 'auguria', $tabMenu); // Modules system tools // TODO Find a way to add parent menu only if child menu exists. For the moment, no other method than hard coded methods. if (! empty($conf->product->enabled) || ! empty($conf->service->enabled) || ! empty($conf->barcode->enabled) // TODO We should enabled module system tools entry without hardcoded test, but when at least one modules bringing such entries are on || ! empty($conf->global->MAIN_MENU_ENABLE_MODULETOOLS)) { if (empty($user->societe_id)) { if ((! empty($conf->product->enabled) || ! empty($conf->service->enabled)) && ($leftmenu=="modulesadmintools" && $user->admin)) { $langs->load("products"); $array_menu_product=array( 'url'=>"/product/admin/product_tools.php?mainmenu=home&leftmenu=modulesadmintools", 'titre'=>$langs->trans("ProductVatMassChange"), 'enabled'=>($user->admin?true:false), 'perms'=>($user->admin?true:false), 'fk_mainmenu'=>'home', 'fk_leftmenu'=>'modulesadmintools', 'fk_menu'=>-1, 'mainmenu'=>'home', 'leftmenu'=>'modulesadmintools_massvat', 'type'=>'left', 'position'=>20 ); array_unshift($tabMenu,$array_menu_product); // add at beginning of array } // Main menu title $array_menu_product=array( 'url'=>"/admin/tools/index.php?mainmenu=home&leftmenu=modulesadmintools", 'titre'=>$langs->trans("ModulesSystemTools"), 'enabled'=>($user->admin?true:false), 'perms'=>($user->admin?true:false), 'fk_mainmenu'=>'home', 'fk_menu'=>-1, 'mainmenu'=>'home', 'leftmenu'=>'modulesadmintools', 'type'=>'left', 'position'=>20 ); array_unshift($tabMenu,$array_menu_product); // add at beginning of array } } $this->tabMenu=$tabMenu; } /** * Show menu * * @param string $mode 'top', 'left', 'jmobile' * @return void */ function showmenu($mode) { global $conf, $langs, $user; require_once DOL_DOCUMENT_ROOT.'/core/menus/standard/auguria.lib.php'; if ($this->type_user == 1) { $conf->global->MAIN_SEARCHFORM_SOCIETE=0; $conf->global->MAIN_SEARCHFORM_CONTACT=0; } require_once DOL_DOCUMENT_ROOT.'/core/class/menu.class.php'; $this->menu=new Menu(); if ($mode == 'top') print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0); if ($mode == 'left') print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0); if ($mode == 'jmobile') { print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); print ''."\n"; foreach($this->menu->liste as $key => $val) // $val['url','titre','level','enabled'=0|1|2,'target','mainmenu','leftmenu' { print '
    '; print '
  • '; if ($val['enabled'] == 1) { $relurl=dol_buildpath($val['url'],1); $relurl=preg_replace('/__LOGIN__/',$user->login,$relurl); $relurl=preg_replace('/__USERID__/',$user->id,$relurl); print ''.$val['titre'].''."\n"; // Search submenu fot this entry $tmpmainmenu=$val['mainmenu']; $tmpleftmenu='all'; $submenu=new Menu(); print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$submenu,1,$tmpmainmenu,$tmpleftmenu); $nexturl=dol_buildpath($submenu->liste[0]['url'],1); $canonrelurl=preg_replace('/\?.*$/','',$relurl); $canonnexturl=preg_replace('/\?.*$/','',$nexturl); //var_dump($canonrelurl); //var_dump($canonnexturl); print ''; } if ($val['enabled'] == 2) { print ''.$val['titre'].''; } print '
  • '; print '
'."\n"; } } unset($this->menu); } }