Skip to content
Snippets Groups Projects
Commit 051b93c7 authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

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=)
parent 2d87b0c0
No related branches found
No related tags found
No related merge requests found
<?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') ...@@ -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') ...@@ -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') ...@@ -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') ...@@ -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') ...@@ -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') ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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> &nbsp;<a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab[0].'">'.$tab[2].'</a></strong>'; print '<strong> &nbsp;<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) ...@@ -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) ...@@ -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>';
} }
?> ?>
\ No newline at end of file
...@@ -80,7 +80,7 @@ UserSetup=User management setup ...@@ -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 ...@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment