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

@ -21,40 +21,40 @@
*/ */
/** /**
\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 * \brief Retourne tableau des boites elligibles 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 $user Objet user * \param $user Objet user
* \return array Tableau d'objet box * \return array Tableau d'objet box
*/ */
function listBoxes($zone,$user) function listBoxes($zone,$user)
{ {
global $conf; global $conf;
@ -95,7 +95,7 @@ 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;
} }
} }
@ -142,7 +142,7 @@ 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;
} }
} }
@ -161,13 +161,13 @@ class InfoBox
} }
/** /**
* \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");
@ -183,19 +183,19 @@ class InfoBox
// 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);
@ -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)

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

@ -94,7 +94,7 @@ if ($_POST["action"] == 'update' && ($caneditfield || $user->admin))
$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