Fix: Menu editor was broken
This commit is contained in:
parent
6ab62a4e0a
commit
6cebe47a42
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
|
* Copyright (C) 2005-2009 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
|
||||||
@ -46,7 +46,7 @@ $dirleft = "../includes/menus/barre_left";
|
|||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (isset($_POST["action"]) && $_POST["action"] == 'update')
|
if (isset($_POST["action"]) && $_POST["action"] == 'update' && empty($_POST["cancel"]))
|
||||||
{
|
{
|
||||||
$_SESSION["mainmenu"]="home"; // Le gestionnaire de menu a pu changer
|
$_SESSION["mainmenu"]="home"; // Le gestionnaire de menu a pu changer
|
||||||
|
|
||||||
@ -158,7 +158,9 @@ if (isset($_GET["action"]) && $_GET["action"] == 'edit')
|
|||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '<br><center>';
|
print '<br><center>';
|
||||||
print '<input class="button" type="submit" value="'.$langs->trans("Save").'">';
|
print '<input class="button" type="submit" name="save" value="'.$langs->trans("Save").'">';
|
||||||
|
print ' ';
|
||||||
|
print '<input class="button" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||||
print '</center>';
|
print '</center>';
|
||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|||||||
@ -59,96 +59,134 @@ if ($_REQUEST["menu_handler"]) $menu_handler=$_REQUEST["menu_handler"];
|
|||||||
|
|
||||||
if (isset($_GET["action"]) && ($_GET["action"] == 'up'))
|
if (isset($_GET["action"]) && ($_GET["action"] == 'up'))
|
||||||
{
|
{
|
||||||
$sql = "SELECT m.rowid, m.position";
|
$current=array();
|
||||||
|
$previous=array();
|
||||||
|
|
||||||
|
// Redefine order
|
||||||
|
/*$sql = "SELECT m.rowid, m.position";
|
||||||
|
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||||
|
$sql.= " WHERE m.menu_handler='".$menu_handler."'";
|
||||||
|
$sql.= " AND m.entity = ".$conf->entity;
|
||||||
|
$sql.= " ORDER BY m.position, m.rowid";
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
$i = 0;
|
||||||
|
while($i < $num)
|
||||||
|
{
|
||||||
|
$obj = $db->fetch_object($resql);
|
||||||
|
$sqlupdate ="UPDATE ".MAIN_DB_PREFIX."menu as m SET position=".($i+1);
|
||||||
|
$sqlupdate.=" WHERE m.menu_handler='".$menu_handler."'";
|
||||||
|
$sqlupdate.=" AND m.entity = ".$conf->entity;
|
||||||
|
$sqlupdate.=" AND rowid=".$obj->rowid;
|
||||||
|
$resql2 = $db->query($sqlupdate);
|
||||||
|
$i++;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
// Get current position
|
||||||
|
$sql = "SELECT m.rowid, m.position, m.type, m.fk_menu";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " WHERE m.rowid = ".$_GET["menuId"];
|
$sql.= " WHERE m.rowid = ".$_GET["menuId"];
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
|
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
while($i < $num)
|
while($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
$precedent['rowid'] = $obj->rowid;
|
$current['rowid'] = $obj->rowid;
|
||||||
$precedent['order'] = $obj->position;
|
$current['order'] = $obj->position;
|
||||||
|
$current['type'] = $obj->type;
|
||||||
|
$current['fk_menu'] = $obj->fk_menu;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menu top
|
// Menu before
|
||||||
$sql = "SELECT m.rowid, m.position";
|
$sql = "SELECT m.rowid, m.position";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " WHERE m.position = ".($precedent['order'] - 1);
|
$sql.= " WHERE (m.position < ".($current['order'])." OR (m.position = ".($current['order'])." AND rowid < ".$_GET["menuId"]."))";
|
||||||
$sql.= " AND m.type = 'top'";
|
$sql.= " AND m.menu_handler='".$menu_handler."'";
|
||||||
$sql.= " AND m.menu_handler='".$menu_handler_top."'";
|
|
||||||
$sql.= " AND m.entity = ".$conf->entity;
|
$sql.= " AND m.entity = ".$conf->entity;
|
||||||
|
$sql.= " AND m.type = '".$current['type']."'";
|
||||||
|
$sql.= " AND m.fk_menu = '".$current['fk_menu']."'";
|
||||||
|
$sql.= " ORDER BY m.position, m.rowid";
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
|
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
while($i < $num)
|
while($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
$suivant['rowid'] = $obj->rowid;
|
$previous['rowid'] = $obj->rowid;
|
||||||
$suivant['order'] = $obj->position;
|
$previous['order'] = $obj->position;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " SET m.position = ".$suivant['order'];
|
$sql.= " SET m.position = ".$previous['order'];
|
||||||
$sql.= " WHERE m.rowid = ".$precedent['rowid'].""; // Monte celui select
|
$sql.= " WHERE m.rowid = ".$current['rowid']; // Up the selected entry
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$db->query($sql);
|
$db->query($sql);
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " SET m.position = ".$precedent['order'];
|
$sql.= " SET m.position = ".($current['order']!=$previous['order']?$current['order']:$current['order']+1);
|
||||||
$sql.= " WHERE m.rowid = ".$suivant['rowid'].""; // Descend celui du dessus
|
$sql.= " WHERE m.rowid = ".$previous['rowid']; // Descend celui du dessus
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$db->query($sql);
|
$db->query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_GET["action"]) && $_GET["action"] == 'down')
|
if (isset($_GET["action"]) && $_GET["action"] == 'down')
|
||||||
{
|
{
|
||||||
|
$current=array();
|
||||||
|
$next=array();
|
||||||
|
|
||||||
$sql = "SELECT m.rowid, m.position";
|
// Get current position
|
||||||
|
$sql = "SELECT m.rowid, m.position, m.type, m.fk_menu";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " WHERE m.rowid = ".$_GET["menuId"];
|
$sql.= " WHERE m.rowid = ".$_GET["menuId"];
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
|
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
while($i < $num)
|
while($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
$precedent['rowid'] = $obj->rowid;
|
$current['rowid'] = $obj->rowid;
|
||||||
$precedent['order'] = $obj->position;
|
$current['order'] = $obj->position;
|
||||||
|
$current['type'] = $obj->type;
|
||||||
|
$current['fk_menu'] = $obj->fk_menu;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Menu after
|
||||||
$sql = "SELECT m.rowid, m.position";
|
$sql = "SELECT m.rowid, m.position";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " WHERE m.position = ".($precedent['order'] + 1);
|
$sql.= " WHERE (m.position > ".($current['order'])." OR (m.position = ".($current['order'])." AND rowid > ".$_GET["menuId"]."))";
|
||||||
$sql.= " AND m.type='top'";
|
$sql.= " AND m.menu_handler='".$menu_handler."'";
|
||||||
$sql.= " AND m.entity = ".$conf->entity;
|
$sql.= " AND m.entity = ".$conf->entity;
|
||||||
|
$sql.= " AND m.type = '".$current['type']."'";
|
||||||
|
$sql.= " AND m.fk_menu = '".$current['fk_menu']."'";
|
||||||
|
$sql.= " ORDER BY m.position, m.rowid";
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
|
|
||||||
$num = $db->num_rows($result);
|
$num = $db->num_rows($result);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
while($i < $num)
|
while($i < $num)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($result);
|
$obj = $db->fetch_object($result);
|
||||||
$suivant['rowid'] = $obj->rowid;
|
$next['rowid'] = $obj->rowid;
|
||||||
$suivant['order'] = $obj->position;
|
$next['order'] = $obj->position;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
|
||||||
$sql.= " SET m.position = ".$suivant['order'];
|
$sql.= " SET m.position = ".($current['order']!=$next['order']?$next['order']:$current['order']+1); // Down the selected entry
|
||||||
$sql.= " WHERE m.rowid = ".$precedent['rowid'].""; // Monte celui select
|
$sql.= " WHERE m.rowid = ".$current['rowid'];
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$db->query($sql);
|
$db->query($sql);
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."menu as m"; // Up the next entry
|
||||||
$sql.= " SET m.position = ".$precedent['order'];
|
$sql.= " SET m.position = ".$current['order'];
|
||||||
$sql.= " WHERE m.rowid = ".$suivant['rowid'].""; // Descend celui du dessus
|
$sql.= " WHERE m.rowid = ".$next['rowid'];
|
||||||
|
dol_syslog("admin/menus/index.php ".$sql);
|
||||||
$db->query($sql);
|
$db->query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,27 +287,27 @@ if ($conf->use_javascript_ajax)
|
|||||||
tree_addjs();
|
tree_addjs();
|
||||||
|
|
||||||
/*-------------------- MAIN -----------------------
|
/*-------------------- MAIN -----------------------
|
||||||
tableau des <EFBFBD>l<EFBFBD>ments de l'arbre:
|
tableau des elements de l'arbre:
|
||||||
c'est un tableau <EFBFBD> 2 dimensions.
|
c'est un tableau a 2 dimensions.
|
||||||
Une ligne repr<EFBFBD>sente un <EFBFBD>l<EFBFBD>ment : data[$x]
|
Une ligne represente un element : data[$x]
|
||||||
chaque ligne est d<EFBFBD>compos<EFBFBD>e en 3 donn<EFBFBD>es:
|
chaque ligne est decomposee en 3 donnees:
|
||||||
- l'index de l'<EFBFBD>l<EFBFBD>ment
|
- l'index de l'<EFBFBD>l<EFBFBD>ment
|
||||||
- l'index de l'<EFBFBD>l<EFBFBD>ment parent
|
- l'index de l'<EFBFBD>l<EFBFBD>ment parent
|
||||||
- la cha<EFBFBD>ne <EFBFBD> afficher
|
- la chaine a afficher
|
||||||
ie: data[]= array (index, index parent, chaine )
|
ie: data[]= array (index, index parent, chaine )
|
||||||
*/
|
*/
|
||||||
//il faut d'abord d<EFBFBD>clarer un <20>l<EFBFBD>ment racine de l'arbre
|
//il faut d'abord declarer un element racine de l'arbre
|
||||||
|
|
||||||
$data[] = array(0,-1,"racine");
|
$data[] = array(0,-1,"racine");
|
||||||
|
|
||||||
//puis tous les <EFBFBD>l<EFBFBD>ments enfants
|
//puis tous les elements enfants
|
||||||
|
|
||||||
|
|
||||||
$sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs";
|
$sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs";
|
||||||
$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;
|
||||||
$sql.= " ORDER BY m.position, m.rowid";
|
$sql.= " ORDER BY m.position, m.rowid"; // Order is position then rowid (because we need a sort criteria when position is same)
|
||||||
$res = $db->query($sql);
|
$res = $db->query($sql);
|
||||||
|
|
||||||
if ($res)
|
if ($res)
|
||||||
@ -286,7 +324,7 @@ if ($conf->use_javascript_ajax)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Appelle de la fonction r<EFBFBD>cursive (ammorce)
|
// Appelle de la fonction recursive (ammorce)
|
||||||
// avec recherche depuis la racine.
|
// avec recherche depuis la racine.
|
||||||
// array($menu['rowid'],$menu['fk_menu'],$titre);
|
// array($menu['rowid'],$menu['fk_menu'],$titre);
|
||||||
tree_recur($data,0,0);
|
tree_recur($data,0,0);
|
||||||
@ -319,5 +357,3 @@ $db->close();
|
|||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
llxFooter('$Date$ - $Revision$');
|
llxFooter('$Date$ - $Revision$');
|
||||||
?>
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user