From 1e1ee9d3383e51c12738c189f7508bd510f7d209 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 11 Feb 2009 02:18:27 +0000 Subject: [PATCH] Fix: Save of box order --- htdocs/ajaxbox.php | 10 +-- htdocs/boxes.php | 138 +++++++++++++++++----------------- htdocs/index.php | 19 ++--- htdocs/lib/functions2.lib.php | 20 ++--- htdocs/user/param_ihm.php | 24 +++--- 5 files changed, 103 insertions(+), 108 deletions(-) diff --git a/htdocs/ajaxbox.php b/htdocs/ajaxbox.php index b62b7cce8a5..3745f537337 100644 --- a/htdocs/ajaxbox.php +++ b/htdocs/ajaxbox.php @@ -1,6 +1,6 @@ - * Copyright (C) 2007 Laurent Destailleur + * Copyright (C) 2007-2009 Laurent Destailleur * * 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 @@ -18,10 +18,10 @@ */ /** - \file htdocs/ajaxbox.php - \brief Fichier de reponse sur evenement Ajax deplacement boxes - \version $Id$ -*/ + * \file htdocs/ajaxbox.php + * \brief Fichier de reponse sur evenement Ajax deplacement boxes + * \version $Id$ + */ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); diff --git a/htdocs/boxes.php b/htdocs/boxes.php index 6bf7a160f86..b856a86e980 100644 --- a/htdocs/boxes.php +++ b/htdocs/boxes.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2003 Rodolphe Quiedeville * Copyright (C) 2004-2007 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify @@ -21,44 +21,44 @@ */ /** - \file htdocs/boxes.php - \brief Fichier de la classe boxes - \author Rodolphe Qiedeville - \author Laurent Destailleur - \version $Revision$ -*/ + \file htdocs/boxes.php + \brief Fichier de la classe boxes + \author Rodolphe Qiedeville + \author Laurent Destailleur + \version $Revision$ + */ /** - \class InfoBox - \brief Classe permettant la gestion des boxes sur une page -*/ + \class InfoBox + \brief Classe permettant la gestion des boxes sur une page + */ -class InfoBox +class InfoBox { - var $db; + var $db; - /** - * \brief Constructeur de la classe - * \param $DB Handler d'acc�s base - */ - function InfoBox($DB) - { - $this->db=$DB; - } - + /** + * \brief Constructeur de la classe + * \param $DB Handler d'acc�s base + */ + function InfoBox($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, ...) - * \param $user Objet user - * \return array Tableau d'objet box - */ + + /** + * \brief Retourne tableau des boites elligibles pour la zone et le user + * \param $zone ID de la zone (0 pour la Homepage, ...) + * \param $user Objet user + * \return array Tableau d'objet box + */ function listBoxes($zone,$user) { global $conf; - + $boxes=array(); $confuserzone='MAIN_BOXES_'.$zone; @@ -72,7 +72,7 @@ class InfoBox $sql.= " AND b.position = ".$zone; $sql.= " AND b.fk_user = ".$user->id; $sql.= " ORDER BY b.box_order"; - + dolibarr_syslog("InfoBox::listBoxes get user box list sql=".$sql, LOG_DEBUG); $result = $this->db->query($sql); if ($result) @@ -95,8 +95,8 @@ class InfoBox { foreach($box->depends as $module) { -// print $module.'
'; - if (empty($conf->$module->enabled)) $enabled=false; + // print $module.'
'; + if (empty($conf->$module->enabled)) $enabled=false; } } if ($enabled) $boxes[]=$box; @@ -142,8 +142,8 @@ class InfoBox { foreach($box->depends as $module) { -// print $module.'
'; - if (empty($conf->$module->enabled)) $enabled=false; + // print $module.'
'; + if (empty($conf->$module->enabled)) $enabled=false; } } if ($enabled) $boxes[]=$box; @@ -156,46 +156,46 @@ class InfoBox return array(); } } - + return $boxes; } - /** - * \brief Sauvegarde sequencement des boites pour la zone et le user - * \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 $userid Id du user - * \return int <0 si ko, >= 0 si ok - */ + /** + * \brief Sauvegarde sequencement des boites pour la zone et le user + * \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 $userid Id du user + * \return int <0 si ko, >= 0 si ok + */ function saveboxorder($zone,$boxorder,$userid=0) { require_once(DOL_DOCUMENT_ROOT."/lib/functions2.lib.php"); - + dolibarr_syslog("InfoBoxes::saveboxorder zone=".$zone." user=".$userid); if (! $userid || $userid == 0) return 0; - + $user = new User($this->db,$userid); $this->db->begin(); - // Sauve parametre indiquant que le user a une + // Sauve parametre indiquant que le user a une $confuserzone='MAIN_BOXES_'.$zone; $tab[$confuserzone]=1; - if (! dol_set_user_page_param($this->db, $user, '', $tab)) - { - $this->error=$this->db->error(); + if (dol_set_user_param($this->db, $user, $tab) < 0) + { + $this->error=$this->db->lasterror(); $this->db->rollback(); return -3; - } - + } + $sql ="DELETE FROM ".MAIN_DB_PREFIX."boxes"; $sql.=" WHERE fk_user = ".$userid; $sql.=" AND position = ".$zone; - $result = $this->db->query($sql); - + dolibarr_syslog("InfoBox::saveboxorder sql=".$sql); + $result = $this->db->query($sql); if ($result) { $colonnes=split('-',$boxorder); @@ -205,7 +205,7 @@ class InfoBox $colonne=$part[0]; $list=$part[1]; dolibarr_syslog('InfoBox::saveboxorder colonne='.$colonne.' list='.$list); - + $i=0; $listarray=split(',',$list); foreach ($listarray as $id) @@ -216,22 +216,22 @@ class InfoBox $i++; $ii=sprintf('%02d',$i); $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes"; - $sql.= "(box_id, position, box_order, fk_user)"; - $sql.= " values ("; - $sql.= " ".$id.","; - $sql.= " ".$zone.","; - $sql.= " '".$colonne.$ii."',"; - $sql.= " ".$userid; - $sql.= ")"; - - dolibarr_syslog("InfoBox::saveboxorder sql=".$sql); - $result = $this->db->query($sql); - if ($result < 0) - { - $error++; - break; - } - } + $sql.= "(box_id, position, box_order, fk_user)"; + $sql.= " values ("; + $sql.= " ".$id.","; + $sql.= " ".$zone.","; + $sql.= " '".$colonne.$ii."',"; + $sql.= " ".$userid; + $sql.= ")"; + + dolibarr_syslog("InfoBox::saveboxorder sql=".$sql); + $result = $this->db->query($sql); + if ($result < 0) + { + $error++; + break; + } + } } } if ($error) @@ -252,6 +252,6 @@ class InfoBox $this->db->rollback(); return -1; } - } + } } ?> diff --git a/htdocs/index.php b/htdocs/index.php index ba4cd14724d..da2a18dfea0 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -611,10 +611,11 @@ if (sizeof($boxarray)) // If no box on left, we add an invisible empty box if ($ii==0) { - $box->box_id='A'; - $box->info_box_head=array(); - $box->info_box_contents=array(); - $box->showBox(); + $emptybox=new ModeleBoxes($db); + $emptybox->box_id='A'; + $emptybox->info_box_head=array(); + $emptybox->info_box_contents=array(); + $emptybox->showBox(array(),array()); } print "\n"; @@ -628,7 +629,6 @@ if (sizeof($boxarray)) print '\n"; diff --git a/htdocs/lib/functions2.lib.php b/htdocs/lib/functions2.lib.php index a35ea9a6086..0b0c9711ed2 100644 --- a/htdocs/lib/functions2.lib.php +++ b/htdocs/lib/functions2.lib.php @@ -548,12 +548,10 @@ function weight_convert($weight,&$from_unit,$to_unit) * \brief Save personnal parameter * \param db Handler database * \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 - * \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 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 $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; $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 ("; $i=0; foreach ($tab as $key => $value) @@ -574,14 +570,14 @@ function dol_set_user_page_param($db, &$user, $url='', $tab) $i++; } $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); if (! $resql) { dolibarr_print_error($db); $db->rollback(); - exit; + return -1; } foreach ($tab as $key => $value) @@ -589,19 +585,17 @@ function dol_set_user_page_param($db, &$user, $url='', $tab) // Set new parameters 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.","; - if ($url) $sql.= " '".urlencode($url)."',"; - else $sql.= " '',"; $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); if (! $result) { dolibarr_print_error($db); $db->rollback(); - exit; + return -1; } $user->page_param[$key] = $value; diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 9b69d790c0f..cbd5802cfe2 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -74,30 +74,30 @@ if ($_POST["action"] == 'update' && ($caneditfield || $user->admin)) { $_GET["id"]=$_POST["id"]; } - else + else { $tabparam=array(); - + if ($_POST["check_MAIN_LANG_DEFAULT"]=="on") $tabparam["MAIN_LANG_DEFAULT"]=$_POST["main_lang_default"]; else $tabparam["MAIN_LANG_DEFAULT"]=''; - + $tabparam["MAIN_MENU_BARRETOP"]=$_POST["main_menu_barretop"]; $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"]; else $tabparam["MAIN_SIZE_LISTE_LIMIT"]=''; - + if ($_POST["check_MAIN_THEME"]=="on") $tabparam["MAIN_THEME"]=$_POST["main_theme"]; else $tabparam["MAIN_THEME"]=''; $tabparam["MAIN_SEARCHFORM_CONTACT"]=$_POST["main_searchform_contact"]; $tabparam["MAIN_SEARCHFORM_SOCIETE"]=$_POST["main_searchform_societe"]; $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 - + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_POST["id"]); exit; } @@ -146,7 +146,7 @@ if ($_GET["action"] == 'edit') clearstatcache(); $var=true; - + print ''; print ''; @@ -185,7 +185,7 @@ if ($_GET["action"] == 'edit') print ''; print ''; print ''; - + } else { @@ -228,9 +228,9 @@ else else { print "trans("NotEnoughPermissions")."\" href=\"#\">".$langs->trans("Modify").""; - } + } } - + print ''; }
'.$langs->trans("Parameter").''.$langs->trans("DefaultValue").' '.$langs->trans("PersonalValue").'