Qual: Code cleaner using field name instead of index number.
New: Can use new syntax to define parent of a menu (fk_mainmenu=&fk_leftmenu=)
This commit is contained in:
parent
2d87b0c025
commit
051b93c73b
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
|
/* Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
|
||||||
* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2009-2011 Regis Houssin <regis@dolibarr.fr>
|
* Copyright (C) 2009-2011 Regis Houssin <regis@dolibarr.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -113,6 +113,23 @@ if ($action == 'add')
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$leftmenu=''; $mainmenu='';
|
||||||
|
if (! empty($_POST['menuId']) && ! is_numeric($_POST['menuId']))
|
||||||
|
{
|
||||||
|
$tmp=explode('&',$_POST['menuId']);
|
||||||
|
foreach($tmp as $s)
|
||||||
|
{
|
||||||
|
if (preg_match('/fk_mainmenu=/',$s))
|
||||||
|
{
|
||||||
|
$mainmenu=preg_replace('/fk_mainmenu=/','',$s);
|
||||||
|
}
|
||||||
|
if (preg_match('/fk_leftmenu=/',$s))
|
||||||
|
{
|
||||||
|
$leftmenu=preg_replace('/fk_leftmenu=/','',$s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
@ -146,7 +163,7 @@ if ($action == 'add')
|
|||||||
$action = 'create';
|
$action = 'create';
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if (! $error && ! $_POST['menuId'] && $_POST['type'] == 'left')
|
if (! $error && empty($_POST['menuId']) && $_POST['type'] == 'left')
|
||||||
{
|
{
|
||||||
$mesg='<div class="error">'.$langs->trans("ErrorLeftMenuMustHaveAParentId").'</div>';
|
$mesg='<div class="error">'.$langs->trans("ErrorLeftMenuMustHaveAParentId").'</div>';
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
@ -156,11 +173,9 @@ if ($action == 'add')
|
|||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
$menu = new Menubase($db);
|
$menu = new Menubase($db);
|
||||||
$menu->fk_menu=$_POST['menuId'];
|
|
||||||
$menu->menu_handler=$_POST['menu_handler'];
|
$menu->menu_handler=$_POST['menu_handler'];
|
||||||
$menu->type=$_POST['type'];
|
$menu->type=$_POST['type'];
|
||||||
$menu->titre=$_POST['titre'];
|
$menu->titre=$_POST['titre'];
|
||||||
$menu->leftmenu=$_POST['leftmenu'];
|
|
||||||
$menu->url=$_POST['url'];
|
$menu->url=$_POST['url'];
|
||||||
$menu->langs=$_POST['langs'];
|
$menu->langs=$_POST['langs'];
|
||||||
$menu->position=$_POST['position'];
|
$menu->position=$_POST['position'];
|
||||||
@ -168,6 +183,18 @@ if ($action == 'add')
|
|||||||
$menu->perms=$_POST['perms'];
|
$menu->perms=$_POST['perms'];
|
||||||
$menu->target=$_POST['target'];
|
$menu->target=$_POST['target'];
|
||||||
$menu->user=$_POST['user'];
|
$menu->user=$_POST['user'];
|
||||||
|
if (is_numeric($_POST['menuId']))
|
||||||
|
{
|
||||||
|
$menu->fk_menu=$_POST['menuId'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($_POST['type'] == 'top') $menu->fk_menu=0;
|
||||||
|
else $menu->fk_menu=-1;
|
||||||
|
$menu->fk_mainmenu=$mainmenu;
|
||||||
|
$menu->fk_leftmenu=$leftmenu;
|
||||||
|
}
|
||||||
|
|
||||||
$result=$menu->create($user);
|
$result=$menu->create($user);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
@ -311,22 +338,22 @@ if ($action == 'create')
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print '<td><input type="text" size="8" id="menuId" name="menuId" value="'.($parent_rowid?$parent_rowid:'').'"></td>';
|
print '<td><input type="text" size="20" id="menuId" name="menuId" value="'.($_POST["menuId"]?$_POST["menuId"]:'').'"></td>';
|
||||||
}
|
}
|
||||||
print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>';
|
print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>';
|
||||||
|
|
||||||
// Title
|
// Title
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans('Title').'</td><td><input type="text" size="30" name="titre" value="'.$_POST["titre"].'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>';
|
print '<tr><td class="fieldrequired">'.$langs->trans('Title').'</td><td><input type="text" size="30" name="titre" value="'.$_POST["titre"].'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>';
|
||||||
|
|
||||||
|
// URL
|
||||||
|
print '<tr><td class="fieldrequired">'.$langs->trans('URL').'</td><td><input type="text" size="60" name="url" value="'.$_POST["url"].'"></td><td>'.$langs->trans('DetailUrl').'</td></tr>';
|
||||||
|
|
||||||
// Langs
|
// Langs
|
||||||
print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="30" name="langs" value="'.$parent_langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
|
print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="30" name="langs" value="'.$parent_langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
|
||||||
|
|
||||||
// Position
|
// Position
|
||||||
print '<tr><td>'.$langs->trans('Position').'</td><td><input type="text" size="5" name="position" value="'.(isset($_POST["position"])?$_POST["position"]:100).'"></td><td>'.$langs->trans('DetailPosition').'</td></tr>';
|
print '<tr><td>'.$langs->trans('Position').'</td><td><input type="text" size="5" name="position" value="'.(isset($_POST["position"])?$_POST["position"]:100).'"></td><td>'.$langs->trans('DetailPosition').'</td></tr>';
|
||||||
|
|
||||||
// URL
|
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans('URL').'</td><td><input type="text" size="60" name="url" value="'.$_POST["url"].'"></td><td>'.$langs->trans('DetailUrl').'</td></tr>';
|
|
||||||
|
|
||||||
// Target
|
// Target
|
||||||
print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">';
|
print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">';
|
||||||
print '<option value=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>';
|
print '<option value=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>';
|
||||||
@ -397,18 +424,18 @@ elseif ($action == 'edit')
|
|||||||
// Niveau
|
// Niveau
|
||||||
//print '<tr><td>'.$langs->trans('Level').'</td><td>'.$menu->level.'</td><td>'.$langs->trans('DetailLevel').'</td></tr>';
|
//print '<tr><td>'.$langs->trans('Level').'</td><td>'.$menu->level.'</td><td>'.$langs->trans('DetailLevel').'</td></tr>';
|
||||||
|
|
||||||
// Titre
|
// Title
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans('Title').'</td><td><input type="text" size="30" name="titre" value="'.$menu->titre.'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>';
|
print '<tr><td class="fieldrequired">'.$langs->trans('Title').'</td><td><input type="text" size="30" name="titre" value="'.$menu->titre.'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>';
|
||||||
|
|
||||||
|
// Url
|
||||||
|
print '<tr><td class="fieldrequired">'.$langs->trans('URL').'</td><td><input type="text" size="60" name="url" value="'.$menu->url.'"></td><td>'.$langs->trans('DetailUrl').'</td></tr>';
|
||||||
|
|
||||||
// Langs
|
// Langs
|
||||||
print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="30" name="langs" value="'.$menu->langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
|
print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="30" name="langs" value="'.$menu->langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
|
||||||
|
|
||||||
// Position
|
// Position
|
||||||
print '<tr><td>'.$langs->trans('Position').'</td><td><input type="text" size="5" name="position" value="'.$menu->position.'"></td><td>'.$langs->trans('DetailPosition').'</td></tr>';
|
print '<tr><td>'.$langs->trans('Position').'</td><td><input type="text" size="5" name="position" value="'.$menu->position.'"></td><td>'.$langs->trans('DetailPosition').'</td></tr>';
|
||||||
|
|
||||||
// Url
|
|
||||||
print '<tr><td class="fieldrequired">'.$langs->trans('URL').'</td><td><input type="text" size="60" name="url" value="'.$menu->url.'"></td><td>'.$langs->trans('DetailUrl').'</td></tr>';
|
|
||||||
|
|
||||||
// Target
|
// Target
|
||||||
print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">';
|
print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">';
|
||||||
print '<option value=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>';
|
print '<option value=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>';
|
||||||
|
|||||||
@ -288,11 +288,11 @@ if ($conf->use_javascript_ajax)
|
|||||||
*/
|
*/
|
||||||
//il faut d'abord declarer un element racine de l'arbre
|
//il faut d'abord declarer un element racine de l'arbre
|
||||||
|
|
||||||
$data[] = array(0,-1,"racine");
|
$data[] = array('rowid'=>0,'fk_menu'=>-1,'title'=>"racine",'mainmenu'=>'','leftmenu'=>'','fk_mainmenu'=>'','fk_leftmenu'=>'');
|
||||||
|
|
||||||
//puis tous les elements enfants
|
//puis tous les elements enfants
|
||||||
|
|
||||||
$sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs";
|
$sql = "SELECT m.rowid, m.titre, m.langs, m.mainmenu, m.leftmenu, m.fk_menu, m.fk_mainmenu, m.fk_leftmenu";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " WHERE menu_handler = '".$menu_handler."'";
|
$sql.= " WHERE menu_handler = '".$menu_handler."'";
|
||||||
$sql.= " AND entity = ".$conf->entity;
|
$sql.= " AND entity = ".$conf->entity;
|
||||||
@ -310,15 +310,15 @@ if ($conf->use_javascript_ajax)
|
|||||||
{
|
{
|
||||||
if (! empty($menu['langs'])) $langs->load($menu['langs']);
|
if (! empty($menu['langs'])) $langs->load($menu['langs']);
|
||||||
$titre = $langs->trans($menu['titre']);
|
$titre = $langs->trans($menu['titre']);
|
||||||
$data[] = array($menu['rowid'],$menu['fk_menu'],$titre);
|
$data[] = array('rowid'=>$menu['rowid'],'fk_menu'=>$menu['fk_menu'],'title'=>$titre,'mainmenu'=>$menu['mainmenu'],'leftmenu'=>$menu['leftmenu'],'fk_mainmenu'=>$menu['fk_mainmenu'],'fk_leftmenu'=>$menu['fk_leftmenu']);
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Appelle de la fonction recursive (ammorce)
|
// Appelle de la fonction recursive (ammorce)
|
||||||
// avec recherche depuis la racine.
|
// avec recherche depuis la racine.
|
||||||
// array($menu['rowid'],$menu['fk_menu'],$titre);
|
//var_dump($data);
|
||||||
tree_recur($data,0,0);
|
tree_recur($data,$data[0],0);
|
||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
|||||||
@ -198,20 +198,20 @@ function tree_showline($tab,$rang)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<li id=li'.$tab[0].'>';
|
print '<li id=li'.$tab['rowid'].'>';
|
||||||
|
|
||||||
// Content of line
|
// Content of line
|
||||||
print '<strong> <a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab[0].'">'.$tab[2].'</a></strong>';
|
print '<strong> <a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab['rowid'].'">'.$tab['title'].'</a></strong>';
|
||||||
print '<div class="menuEdit"><a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab[0].'">'.img_edit('default',0,'class="menuEdit" id="edit'.$tab[0].'"').'</a></div>';
|
print '<div class="menuEdit"><a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab['rowid'].'">'.img_edit('default',0,'class="menuEdit" id="edit'.$tab['rowid'].'"').'</a></div>';
|
||||||
print '<div class="menuNew"><a href="edit.php?menu_handler='.$menu_handler.'&action=create&menuId='.$tab[0].'">'.img_edit_add('default',0,'class="menuNew" id="new'.$tab[0].'"').'</a></div>';
|
print '<div class="menuNew"><a href="edit.php?menu_handler='.$menu_handler.'&action=create&menuId='.$tab['rowid'].'">'.img_edit_add('default',0,'class="menuNew" id="new'.$tab['rowid'].'"').'</a></div>';
|
||||||
print '<div class="menuDel"><a href="index.php?menu_handler='.$menu_handler.'&action=delete&menuId='.$tab[0].'">'.img_delete('default',0,'class="menuDel" id="del'.$tab[0].'"').'</a></div>';
|
print '<div class="menuDel"><a href="index.php?menu_handler='.$menu_handler.'&action=delete&menuId='.$tab['rowid'].'">'.img_delete('default',0,'class="menuDel" id="del'.$tab['rowid'].'"').'</a></div>';
|
||||||
print '<div class="menuFleche"><a href="index.php?menu_handler='.$menu_handler.'&action=up&menuId='.$tab[0].'">'.img_picto("Monter","1uparrow").'</a><a href="index.php?menu_handler='.$menu_handler.'&action=down&menuId='.$tab[0].'">'.img_picto("Descendre","1downarrow").'</a></div>';
|
print '<div class="menuFleche"><a href="index.php?menu_handler='.$menu_handler.'&action=up&menuId='.$tab['rowid'].'">'.img_picto("Monter","1uparrow").'</a><a href="index.php?menu_handler='.$menu_handler.'&action=down&menuId='.$tab['rowid'].'">'.img_picto("Descendre","1downarrow").'</a></div>';
|
||||||
|
|
||||||
print '</li>';
|
print '</li>';
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
$rangLast = $rang;
|
$rangLast = $rang;
|
||||||
$idLast = $tab[0];
|
$idLast = $tab['rowid'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -219,13 +219,13 @@ function tree_showline($tab,$rang)
|
|||||||
* Recursive function to output menu tree
|
* Recursive function to output menu tree
|
||||||
*
|
*
|
||||||
* @param array $tab Array of elements
|
* @param array $tab Array of elements
|
||||||
* @param int $pere Id of parent
|
* @param int $pere Array with parent ids ('rowid'=>,'mainmenu'=>,'leftmenu'=>,'fk_mainmenu=>,'fk_leftmenu=>)
|
||||||
* @param int $rang Level of element
|
* @param int $rang Level of element
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function tree_recur($tab,$pere,$rang)
|
function tree_recur($tab,$pere,$rang)
|
||||||
{
|
{
|
||||||
if ($pere == 0) print '<ul class="arbre">';
|
if (empty($pere['rowid'])) print '<ul class="arbre">';
|
||||||
|
|
||||||
if ($rang > 10) return; // Protection contre boucle infinie
|
if ($rang > 10) return; // Protection contre boucle infinie
|
||||||
|
|
||||||
@ -233,18 +233,27 @@ function tree_recur($tab,$pere,$rang)
|
|||||||
$sizeoftab=count($tab);
|
$sizeoftab=count($tab);
|
||||||
for ($x=0; $x < $sizeoftab; $x++)
|
for ($x=0; $x < $sizeoftab; $x++)
|
||||||
{
|
{
|
||||||
|
//var_dump($tab[$x]);exit;
|
||||||
// If an element has $pere for parent
|
// If an element has $pere for parent
|
||||||
if ($tab[$x][1]==$pere)
|
if ($tab[$x]['fk_menu'] != -1 && $tab[$x]['fk_menu'] == $pere['rowid'])
|
||||||
{
|
{
|
||||||
// We shot it with an offset
|
// We shot it with an offset
|
||||||
tree_showline($tab[$x],$rang);
|
tree_showline($tab[$x],$rang);
|
||||||
|
|
||||||
// And now we search all its sons of lower level
|
// And now we search all its sons of lower level
|
||||||
tree_recur($tab,$tab[$x][0],$rang+1);
|
tree_recur($tab,$tab[$x],$rang+1);
|
||||||
|
}
|
||||||
|
elseif (! empty($tab[$x]['rowid']) && $tab[$x]['fk_menu'] == -1 && $tab[$x]['fk_mainmenu'] == $pere['mainmenu'] && $tab[$x]['fk_leftmenu'] == $pere['leftmenu'])
|
||||||
|
{
|
||||||
|
// We shot it with an offset
|
||||||
|
tree_showline($tab[$x],$rang);
|
||||||
|
|
||||||
|
// And now we search all its sons of lower level
|
||||||
|
tree_recur($tab,$tab[$x],$rang+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($pere == 0) print '</ul>';
|
if (empty($pere['rowid'])) print '</ul>';
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@ -80,7 +80,7 @@ UserSetup=User management setup
|
|||||||
MenuSetup=Menu management setup
|
MenuSetup=Menu management setup
|
||||||
MenuLimits=Limits and accuracy
|
MenuLimits=Limits and accuracy
|
||||||
MenuIdParent=Parent menu ID
|
MenuIdParent=Parent menu ID
|
||||||
DetailMenuIdParent=ID of parent menu (0 for a top menu)
|
DetailMenuIdParent=ID of parent menu (empty for a top menu)
|
||||||
DetailPosition=Sort number to define menu position
|
DetailPosition=Sort number to define menu position
|
||||||
PersonalizedMenusNotSupported=Personalized menus not supported
|
PersonalizedMenusNotSupported=Personalized menus not supported
|
||||||
AllMenus=All
|
AllMenus=All
|
||||||
|
|||||||
@ -80,7 +80,7 @@ UserSetup= Configuration gestion des utilisateurs
|
|||||||
MenuSetup= Administration des menus par base de données
|
MenuSetup= Administration des menus par base de données
|
||||||
MenuLimits= Limites et précision
|
MenuLimits= Limites et précision
|
||||||
MenuIdParent= Id du menu parent
|
MenuIdParent= Id du menu parent
|
||||||
DetailMenuIdParent= Id du menu parent (0 pour un menu du haut)
|
DetailMenuIdParent= Id du menu parent (vide pour un menu du haut)
|
||||||
DetailPosition= Numéro d'ordre déterminant la position du menu
|
DetailPosition= Numéro d'ordre déterminant la position du menu
|
||||||
PersonalizedMenusNotSupported= Menus personnalisés non gérés
|
PersonalizedMenusNotSupported= Menus personnalisés non gérés
|
||||||
AllMenus= Tous
|
AllMenus= Tous
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user