Fix: Save of box order

This commit is contained in:
Laurent Destailleur 2009-02-11 02:18:27 +00:00
parent e7fa358d27
commit 1e1ee9d338
5 changed files with 103 additions and 108 deletions

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr> /* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2007 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2007-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -18,10 +18,10 @@
*/ */
/** /**
\file htdocs/ajaxbox.php * \file htdocs/ajaxbox.php
\brief Fichier de reponse sur evenement Ajax deplacement boxes * \brief Fichier de reponse sur evenement Ajax deplacement boxes
\version $Id$ * \version $Id$
*/ */
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');

View File

@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -21,44 +21,44 @@
*/ */
/** /**
\file htdocs/boxes.php \file htdocs/boxes.php
\brief Fichier de la classe boxes \brief Fichier de la classe boxes
\author Rodolphe Qiedeville \author Rodolphe Qiedeville
\author Laurent Destailleur \author Laurent Destailleur
\version $Revision$ \version $Revision$
*/ */
/** /**
\class InfoBox \class InfoBox
\brief Classe permettant la gestion des boxes sur une page \brief Classe permettant la gestion des boxes sur une page
*/ */
class InfoBox class InfoBox
{ {
var $db; var $db;
/** /**
* \brief Constructeur de la classe * \brief Constructeur de la classe
* \param $DB Handler d'acc<EFBFBD>s base * \param $DB Handler d'acc<EFBFBD>s base
*/ */
function InfoBox($DB) function InfoBox($DB)
{ {
$this->db=$DB; $this->db=$DB;
} }
/**
* \brief Retourne tableau des boites elligibles pour la zone et le user /**
* \param $zone ID de la zone (0 pour la Homepage, ...) * \brief Retourne tableau des boites elligibles pour la zone et le user
* \param $user Objet user * \param $zone ID de la zone (0 pour la Homepage, ...)
* \return array Tableau d'objet box * \param $user Objet user
*/ * \return array Tableau d'objet box
*/
function listBoxes($zone,$user) function listBoxes($zone,$user)
{ {
global $conf; global $conf;
$boxes=array(); $boxes=array();
$confuserzone='MAIN_BOXES_'.$zone; $confuserzone='MAIN_BOXES_'.$zone;
@ -72,7 +72,7 @@ class InfoBox
$sql.= " AND b.position = ".$zone; $sql.= " AND b.position = ".$zone;
$sql.= " AND b.fk_user = ".$user->id; $sql.= " AND b.fk_user = ".$user->id;
$sql.= " ORDER BY b.box_order"; $sql.= " ORDER BY b.box_order";
dolibarr_syslog("InfoBox::listBoxes get user box list sql=".$sql, LOG_DEBUG); dolibarr_syslog("InfoBox::listBoxes get user box list sql=".$sql, LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)
@ -95,8 +95,8 @@ class InfoBox
{ {
foreach($box->depends as $module) foreach($box->depends as $module)
{ {
// print $module.'<br>'; // print $module.'<br>';
if (empty($conf->$module->enabled)) $enabled=false; if (empty($conf->$module->enabled)) $enabled=false;
} }
} }
if ($enabled) $boxes[]=$box; if ($enabled) $boxes[]=$box;
@ -142,8 +142,8 @@ class InfoBox
{ {
foreach($box->depends as $module) foreach($box->depends as $module)
{ {
// print $module.'<br>'; // print $module.'<br>';
if (empty($conf->$module->enabled)) $enabled=false; if (empty($conf->$module->enabled)) $enabled=false;
} }
} }
if ($enabled) $boxes[]=$box; if ($enabled) $boxes[]=$box;
@ -156,46 +156,46 @@ class InfoBox
return array(); return array();
} }
} }
return $boxes; return $boxes;
} }
/** /**
* \brief Sauvegarde sequencement des boites pour la zone et le user * \brief Sauvegarde sequencement des boites pour la zone et le user
* \param $zone ID de la zone (0 pour la Homepage, ...) * \param $zone ID de la zone (0 pour la Homepage, ...)
* \param $boxorder Liste des boites dans le bon ordre 'A:123,456,...-B:789,321...' * \param $boxorder Liste des boites dans le bon ordre 'A:123,456,...-B:789,321...'
* \param $userid Id du user * \param $userid Id du user
* \return int <0 si ko, >= 0 si ok * \return int <0 si ko, >= 0 si ok
*/ */
function saveboxorder($zone,$boxorder,$userid=0) function saveboxorder($zone,$boxorder,$userid=0)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php");
dolibarr_syslog("InfoBoxes::saveboxorder zone=".$zone." user=".$userid); dolibarr_syslog("InfoBoxes::saveboxorder zone=".$zone." user=".$userid);
if (! $userid || $userid == 0) return 0; if (! $userid || $userid == 0) return 0;
$user = new User($this->db,$userid); $user = new User($this->db,$userid);
$this->db->begin(); $this->db->begin();
// Sauve parametre indiquant que le user a une // Sauve parametre indiquant que le user a une
$confuserzone='MAIN_BOXES_'.$zone; $confuserzone='MAIN_BOXES_'.$zone;
$tab[$confuserzone]=1; $tab[$confuserzone]=1;
if (! dol_set_user_page_param($this->db, $user, '', $tab)) if (dol_set_user_param($this->db, $user, $tab) < 0)
{ {
$this->error=$this->db->error(); $this->error=$this->db->lasterror();
$this->db->rollback(); $this->db->rollback();
return -3; return -3;
} }
$sql ="DELETE FROM ".MAIN_DB_PREFIX."boxes"; $sql ="DELETE FROM ".MAIN_DB_PREFIX."boxes";
$sql.=" WHERE fk_user = ".$userid; $sql.=" WHERE fk_user = ".$userid;
$sql.=" AND position = ".$zone; $sql.=" AND position = ".$zone;
$result = $this->db->query($sql);
dolibarr_syslog("InfoBox::saveboxorder sql=".$sql); dolibarr_syslog("InfoBox::saveboxorder sql=".$sql);
$result = $this->db->query($sql);
if ($result) if ($result)
{ {
$colonnes=split('-',$boxorder); $colonnes=split('-',$boxorder);
@ -205,7 +205,7 @@ class InfoBox
$colonne=$part[0]; $colonne=$part[0];
$list=$part[1]; $list=$part[1];
dolibarr_syslog('InfoBox::saveboxorder colonne='.$colonne.' list='.$list); dolibarr_syslog('InfoBox::saveboxorder colonne='.$colonne.' list='.$list);
$i=0; $i=0;
$listarray=split(',',$list); $listarray=split(',',$list);
foreach ($listarray as $id) foreach ($listarray as $id)
@ -216,22 +216,22 @@ class InfoBox
$i++; $i++;
$ii=sprintf('%02d',$i); $ii=sprintf('%02d',$i);
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes";
$sql.= "(box_id, position, box_order, fk_user)"; $sql.= "(box_id, position, box_order, fk_user)";
$sql.= " values ("; $sql.= " values (";
$sql.= " ".$id.","; $sql.= " ".$id.",";
$sql.= " ".$zone.","; $sql.= " ".$zone.",";
$sql.= " '".$colonne.$ii."',"; $sql.= " '".$colonne.$ii."',";
$sql.= " ".$userid; $sql.= " ".$userid;
$sql.= ")"; $sql.= ")";
dolibarr_syslog("InfoBox::saveboxorder sql=".$sql); dolibarr_syslog("InfoBox::saveboxorder sql=".$sql);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result < 0) if ($result < 0)
{ {
$error++; $error++;
break; break;
} }
} }
} }
} }
if ($error) if ($error)
@ -252,6 +252,6 @@ class InfoBox
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
} }
} }
?> ?>

View File

@ -611,10 +611,11 @@ if (sizeof($boxarray))
// If no box on left, we add an invisible empty box // If no box on left, we add an invisible empty box
if ($ii==0) if ($ii==0)
{ {
$box->box_id='A'; $emptybox=new ModeleBoxes($db);
$box->info_box_head=array(); $emptybox->box_id='A';
$box->info_box_contents=array(); $emptybox->info_box_head=array();
$box->showBox(); $emptybox->info_box_contents=array();
$emptybox->showBox(array(),array());
} }
print "</div>\n"; print "</div>\n";
@ -628,7 +629,6 @@ if (sizeof($boxarray))
print '<div id="right">'."\n"; print '<div id="right">'."\n";
$ii=0; $ii=0;
$boxarray=$infobox->listboxes("0",$user); // on régénère la liste pour éviter les erreurs avec les empty box
foreach ($boxarray as $key => $box) foreach ($boxarray as $key => $box)
{ {
if (eregi('^B',$box->box_order)) // colonne B if (eregi('^B',$box->box_order)) // colonne B
@ -646,10 +646,11 @@ if (sizeof($boxarray))
// If no box on right, we show add an invisible empty box // If no box on right, we show add an invisible empty box
if ($ii==0) if ($ii==0)
{ {
$box->box_id='B'; $emptybox=new ModeleBoxes($db);
$box->info_box_head=array(); $emptybox->box_id='B';
$box->info_box_contents=array(); $emptybox->info_box_head=array();
$box->showBox(); $emptybox->info_box_contents=array();
$emptybox->showBox(array(),array());
} }
print "</div>\n"; print "</div>\n";

View File

@ -548,12 +548,10 @@ function weight_convert($weight,&$from_unit,$to_unit)
* \brief Save personnal parameter * \brief Save personnal parameter
* \param db Handler database * \param db Handler database
* \param user Object user * \param user Object user
* \param url Si defini, on sauve parametre du tableau tab dont cle = (url avec sortfield, sortorder, begin et page)
* Si non defini on sauve tous parametres du tableau tab
* \param tab Tableau (cle=>valeur) des parametres a sauvegarder * \param tab Tableau (cle=>valeur) des parametres a sauvegarder
* \return int <0 si ko, >0 si ok * \return int <0 if KO, >0 if OK
*/ */
function dol_set_user_page_param($db, &$user, $url='', $tab) function dol_set_user_param($db, &$user, $tab)
{ {
// Verification parametres // Verification parametres
if (sizeof($tab) < 1) return -1; if (sizeof($tab) < 1) return -1;
@ -563,8 +561,6 @@ function dol_set_user_page_param($db, &$user, $url='', $tab)
// We remove old parameters for all keys in $tab // We remove old parameters for all keys in $tab
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
$sql.= " WHERE fk_user = ".$user->id; $sql.= " WHERE fk_user = ".$user->id;
if ($url) $sql.=" AND page='".$url."'";
else $sql.=" AND page=''"; // Page ne peut etre null
$sql.= " AND param in ("; $sql.= " AND param in (";
$i=0; $i=0;
foreach ($tab as $key => $value) foreach ($tab as $key => $value)
@ -574,14 +570,14 @@ function dol_set_user_page_param($db, &$user, $url='', $tab)
$i++; $i++;
} }
$sql.= ")"; $sql.= ")";
dolibarr_syslog("functions2.lib::dol_set_user_page_param $sql"); dolibarr_syslog("functions2.lib::dol_set_user_param sql=".$sql, LOG_DEBUG);
$resql=$db->query($sql); $resql=$db->query($sql);
if (! $resql) if (! $resql)
{ {
dolibarr_print_error($db); dolibarr_print_error($db);
$db->rollback(); $db->rollback();
exit; return -1;
} }
foreach ($tab as $key => $value) foreach ($tab as $key => $value)
@ -589,19 +585,17 @@ function dol_set_user_page_param($db, &$user, $url='', $tab)
// Set new parameters // Set new parameters
if ($value && (! $url || in_array($key,array('sortfield','sortorder','begin','page')))) if ($value && (! $url || in_array($key,array('sortfield','sortorder','begin','page'))))
{ {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."user_param(fk_user,page,param,value)"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."user_param(fk_user,param,value)";
$sql.= " VALUES (".$user->id.","; $sql.= " VALUES (".$user->id.",";
if ($url) $sql.= " '".urlencode($url)."',";
else $sql.= " '',";
$sql.= " '".$key."','".addslashes($value)."');"; $sql.= " '".$key."','".addslashes($value)."');";
dolibarr_syslog("functions2.lib::dol_set_user_page_param $sql"); dolibarr_syslog("functions2.lib::dol_set_user_param sql=".$sql, LOG_DEBUG);
$result=$db->query($sql); $result=$db->query($sql);
if (! $result) if (! $result)
{ {
dolibarr_print_error($db); dolibarr_print_error($db);
$db->rollback(); $db->rollback();
exit; return -1;
} }
$user->page_param[$key] = $value; $user->page_param[$key] = $value;

View File

@ -74,30 +74,30 @@ if ($_POST["action"] == 'update' && ($caneditfield || $user->admin))
{ {
$_GET["id"]=$_POST["id"]; $_GET["id"]=$_POST["id"];
} }
else else
{ {
$tabparam=array(); $tabparam=array();
if ($_POST["check_MAIN_LANG_DEFAULT"]=="on") $tabparam["MAIN_LANG_DEFAULT"]=$_POST["main_lang_default"]; if ($_POST["check_MAIN_LANG_DEFAULT"]=="on") $tabparam["MAIN_LANG_DEFAULT"]=$_POST["main_lang_default"];
else $tabparam["MAIN_LANG_DEFAULT"]=''; else $tabparam["MAIN_LANG_DEFAULT"]='';
$tabparam["MAIN_MENU_BARRETOP"]=$_POST["main_menu_barretop"]; $tabparam["MAIN_MENU_BARRETOP"]=$_POST["main_menu_barretop"];
$tabparam["MAIN_MENU_BARRELEFT"]=$_POST["main_menu_barreleft"]; $tabparam["MAIN_MENU_BARRELEFT"]=$_POST["main_menu_barreleft"];
if ($_POST["check_SIZE_LISTE_LIMIT"]=="on") $tabparam["MAIN_SIZE_LISTE_LIMIT"]=$_POST["main_size_liste_limit"]; if ($_POST["check_SIZE_LISTE_LIMIT"]=="on") $tabparam["MAIN_SIZE_LISTE_LIMIT"]=$_POST["main_size_liste_limit"];
else $tabparam["MAIN_SIZE_LISTE_LIMIT"]=''; else $tabparam["MAIN_SIZE_LISTE_LIMIT"]='';
if ($_POST["check_MAIN_THEME"]=="on") $tabparam["MAIN_THEME"]=$_POST["main_theme"]; if ($_POST["check_MAIN_THEME"]=="on") $tabparam["MAIN_THEME"]=$_POST["main_theme"];
else $tabparam["MAIN_THEME"]=''; else $tabparam["MAIN_THEME"]='';
$tabparam["MAIN_SEARCHFORM_CONTACT"]=$_POST["main_searchform_contact"]; $tabparam["MAIN_SEARCHFORM_CONTACT"]=$_POST["main_searchform_contact"];
$tabparam["MAIN_SEARCHFORM_SOCIETE"]=$_POST["main_searchform_societe"]; $tabparam["MAIN_SEARCHFORM_SOCIETE"]=$_POST["main_searchform_societe"];
$tabparam["MAIN_SEARCHFORM_PRODUITSERVICE"]=$_POST["main_searchform_produitservice"]; $tabparam["MAIN_SEARCHFORM_PRODUITSERVICE"]=$_POST["main_searchform_produitservice"];
dol_set_user_page_param($db, $fuser, '', $tabparam); $result=dol_set_user_param($db, $fuser, $tabparam);
$_SESSION["mainmenu"]=""; // Le gestionnaire de menu a pu changer $_SESSION["mainmenu"]=""; // Le gestionnaire de menu a pu changer
Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_POST["id"]); Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_POST["id"]);
exit; exit;
} }
@ -146,7 +146,7 @@ if ($_GET["action"] == 'edit')
clearstatcache(); clearstatcache();
$var=true; $var=true;
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td>&nbsp;</td><td>'.$langs->trans("PersonalValue").'</td></tr>'; print '<tr class="liste_titre"><td width="25%">'.$langs->trans("Parameter").'</td><td width="25%">'.$langs->trans("DefaultValue").'</td><td>&nbsp;</td><td>'.$langs->trans("PersonalValue").'</td></tr>';
@ -185,7 +185,7 @@ if ($_GET["action"] == 'edit')
print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">'; print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
print '</center>'; print '</center>';
print '</form>'; print '</form>';
} }
else else
{ {
@ -228,9 +228,9 @@ else
else else
{ {
print "<a class=\"butActionRefused\" title=\"".$langs->trans("NotEnoughPermissions")."\" href=\"#\">".$langs->trans("Modify")."</a>"; print "<a class=\"butActionRefused\" title=\"".$langs->trans("NotEnoughPermissions")."\" href=\"#\">".$langs->trans("Modify")."</a>";
} }
} }
print '</div>'; print '</div>';
} }