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
|
||||
/* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@ -113,6 +113,23 @@ if ($action == 'add')
|
||||
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");
|
||||
|
||||
$error=0;
|
||||
@ -146,7 +163,7 @@ if ($action == 'add')
|
||||
$action = 'create';
|
||||
$error++;
|
||||
}
|
||||
if (! $error && ! $_POST['menuId'] && $_POST['type'] == 'left')
|
||||
if (! $error && empty($_POST['menuId']) && $_POST['type'] == 'left')
|
||||
{
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorLeftMenuMustHaveAParentId").'</div>';
|
||||
$action = 'create';
|
||||
@ -156,11 +173,9 @@ if ($action == 'add')
|
||||
if (! $error)
|
||||
{
|
||||
$menu = new Menubase($db);
|
||||
$menu->fk_menu=$_POST['menuId'];
|
||||
$menu->menu_handler=$_POST['menu_handler'];
|
||||
$menu->type=$_POST['type'];
|
||||
$menu->titre=$_POST['titre'];
|
||||
$menu->leftmenu=$_POST['leftmenu'];
|
||||
$menu->url=$_POST['url'];
|
||||
$menu->langs=$_POST['langs'];
|
||||
$menu->position=$_POST['position'];
|
||||
@ -168,6 +183,18 @@ if ($action == 'add')
|
||||
$menu->perms=$_POST['perms'];
|
||||
$menu->target=$_POST['target'];
|
||||
$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);
|
||||
if ($result > 0)
|
||||
{
|
||||
@ -311,22 +338,22 @@ if ($action == 'create')
|
||||
}
|
||||
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>';
|
||||
|
||||
// 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>';
|
||||
|
||||
// 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
|
||||
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
|
||||
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
|
||||
print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">';
|
||||
print '<option value=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>';
|
||||
@ -397,18 +424,18 @@ elseif ($action == 'edit')
|
||||
// Niveau
|
||||
//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>';
|
||||
|
||||
// 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
|
||||
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
|
||||
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
|
||||
print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">';
|
||||
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
|
||||
|
||||
$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
|
||||
|
||||
$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.= " WHERE menu_handler = '".$menu_handler."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
@ -310,15 +310,15 @@ if ($conf->use_javascript_ajax)
|
||||
{
|
||||
if (! empty($menu['langs'])) $langs->load($menu['langs']);
|
||||
$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++;
|
||||
}
|
||||
}
|
||||
|
||||
// Appelle de la fonction recursive (ammorce)
|
||||
// avec recherche depuis la racine.
|
||||
// array($menu['rowid'],$menu['fk_menu'],$titre);
|
||||
tree_recur($data,0,0);
|
||||
//var_dump($data);
|
||||
tree_recur($data,$data[0],0);
|
||||
|
||||
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
|
||||
print '<strong> <a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab[0].'">'.$tab[2].'</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="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="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="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 '<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['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['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['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['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>';
|
||||
echo "\n";
|
||||
|
||||
$rangLast = $rang;
|
||||
$idLast = $tab[0];
|
||||
$idLast = $tab['rowid'];
|
||||
}
|
||||
|
||||
|
||||
@ -219,13 +219,13 @@ function tree_showline($tab,$rang)
|
||||
* Recursive function to output menu tree
|
||||
*
|
||||
* @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
|
||||
* @return void
|
||||
*/
|
||||
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
|
||||
|
||||
@ -233,18 +233,27 @@ function tree_recur($tab,$pere,$rang)
|
||||
$sizeoftab=count($tab);
|
||||
for ($x=0; $x < $sizeoftab; $x++)
|
||||
{
|
||||
//var_dump($tab[$x]);exit;
|
||||
// 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
|
||||
tree_showline($tab[$x],$rang);
|
||||
|
||||
// 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
|
||||
MenuLimits=Limits and accuracy
|
||||
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
|
||||
PersonalizedMenusNotSupported=Personalized menus not supported
|
||||
AllMenus=All
|
||||
|
||||
@ -80,7 +80,7 @@ UserSetup= Configuration gestion des utilisateurs
|
||||
MenuSetup= Administration des menus par base de données
|
||||
MenuLimits= Limites et précision
|
||||
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
|
||||
PersonalizedMenusNotSupported= Menus personnalisés non gérés
|
||||
AllMenus= Tous
|
||||
|
||||
Loading…
Reference in New Issue
Block a user