diff --git a/htdocs/admin/menus.php b/htdocs/admin/menus.php
index e40af9b75dc..64f063121fe 100644
--- a/htdocs/admin/menus.php
+++ b/htdocs/admin/menus.php
@@ -68,7 +68,7 @@ error_reporting($err);
if ($action == 'update' && empty($_POST["cancel"]))
{
$_SESSION["mainmenu"]="home"; // Le gestionnaire de menu a pu changer
-
+
dolibarr_set_const($db, "MAIN_MENU_STANDARD", $_POST["MAIN_MENU_STANDARD"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_MENU_SMARTPHONE", $_POST["MAIN_MENU_SMARTPHONE"],'chaine',0,'',$conf->entity);
@@ -77,29 +77,37 @@ if ($action == 'update' && empty($_POST["cancel"]))
// Define list of menu handlers to initialize
$listofmenuhandler=array();
+ $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENU_STANDARD"])]=1;
+ $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENUFRONT_STANDARD"])]=1;
+ if (isset($_POST["MAIN_MENU_SMARTPHONE"])) $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENU_SMARTPHONE"])]=1;
+ if (isset($_POST["MAIN_MENUFRONT_SMARTPHONE"])) $listofmenuhandler[preg_replace('/(_backoffice|_frontoffice|_menu)?\.php/i','',$_POST["MAIN_MENUFRONT_SMARTPHONE"])]=1;
// Initialize menu handlers
foreach ($listofmenuhandler as $key => $val)
{
// Load sql init_menu_handler.sql file
- $dir = "/core/menus/";
- $file='init_menu_'.$key.'.sql';
- $fullpath=dol_buildpath($dir.$file);
-
- if (file_exists($fullpath))
- {
- $db->begin();
-
- $result=run_sql($fullpath,1,'',1,$key,'none');
- if ($result > 0)
+ $dirmenus=array_merge(array("/core/menus/"),(array) $conf->modules_parts['menus']);
+ foreach($dirmenus as $dirmenu)
+ {
+ $file='init_menu_'.$key.'.sql';
+ $fullpath=dol_buildpath($dirmenu.$file);
+ //print 'action='.$action.' Search menu into fullpath='.$fullpath.'
';exit;
+
+ if (file_exists($fullpath))
{
- $db->commit();
- }
- else
- {
- $error++;
- $errmsgs[]='Failed to initialize menu '.$key.'.';
- $db->rollback();
+ $db->begin();
+
+ $result=run_sql($fullpath,1,'',1,$key,'none');
+ if ($result > 0)
+ {
+ $db->commit();
+ }
+ else
+ {
+ $error++;
+ $errmsgs[]='Failed to initialize menu '.$key.'.';
+ $db->rollback();
+ }
}
}
}
diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php
index d2615ea3049..b31bf8b7afa 100644
--- a/htdocs/admin/menus/index.php
+++ b/htdocs/admin/menus/index.php
@@ -47,20 +47,24 @@ $mesg=GETPOST('mesg');
$menu_handler_top=$conf->global->MAIN_MENU_STANDARD;
$menu_handler_smartphone=$conf->global->MAIN_MENU_SMARTPHONE;
-$menu_handler_top=preg_replace('/_backoffice.php/i','',$menu_handler_top);
-$menu_handler_top=preg_replace('/_frontoffice.php/i','',$menu_handler_top);
-$menu_handler_smartphone=preg_replace('/_backoffice.php/i','',$menu_handler_smartphone);
-$menu_handler_smartphone=preg_replace('/_frontoffice.php/i','',$menu_handler_smartphone);
+$menu_handler_top=preg_replace('/(_backoffice\.php|_menu\.php)/i','',$menu_handler_top);
+$menu_handler_top=preg_replace('/(_frontoffice\.php|_menu\.php)/i','',$menu_handler_top);
+$menu_handler_smartphone=preg_replace('/(_backoffice\.php|_menu\.php)/i','',$menu_handler_smartphone);
+$menu_handler_smartphone=preg_replace('/(_frontoffice\.php|_menu\.php)/i','',$menu_handler_smartphone);
$menu_handler=$menu_handler_top;
+
if (GETPOST("handler_origine")) $menu_handler=GETPOST("handler_origine");
if (GETPOST("menu_handler")) $menu_handler=GETPOST("menu_handler");
+$menu_handler_to_search=preg_replace('/(_backoffice|_menu)?(\.php)?/i','',$menu_handler);
+$menu_handler_to_search=preg_replace('/(_frontoffice|_menu)?(\.php)?/i','',$menu_handler);
+
/*
-* Actions
-*/
+ * Actions
+ */
if ($action == 'up')
{
@@ -89,7 +93,7 @@ if ($action == 'up')
$sql = "SELECT m.rowid, m.position";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE (m.position < ".($current['order'])." OR (m.position = ".($current['order'])." AND rowid < ".$_GET["menuId"]."))";
- $sql.= " AND m.menu_handler='".$menu_handler."'";
+ $sql.= " AND m.menu_handler='".$menu_handler_to_search."'";
$sql.= " AND m.entity = ".$conf->entity;
$sql.= " AND m.type = '".$current['type']."'";
$sql.= " AND m.fk_menu = '".$current['fk_menu']."'";
@@ -145,7 +149,7 @@ elseif ($action == 'down')
$sql = "SELECT m.rowid, m.position";
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
$sql.= " WHERE (m.position > ".($current['order'])." OR (m.position = ".($current['order'])." AND rowid > ".$_GET["menuId"]."))";
- $sql.= " AND m.menu_handler='".$menu_handler."'";
+ $sql.= " AND m.menu_handler='".$menu_handler_to_search."'";
$sql.= " AND m.entity = ".$conf->entity;
$sql.= " AND m.type = '".$current['type']."'";
$sql.= " AND m.fk_menu = '".$current['fk_menu']."'";
@@ -255,7 +259,7 @@ if ($action == 'delete')
print '