Skip to content

Commit

Permalink
Fix: Save of box order
Browse files Browse the repository at this point in the history
  • Loading branch information
eldy committed Feb 11, 2009
1 parent e7fa358 commit 1e1ee9d
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 108 deletions.
10 changes: 5 additions & 5 deletions htdocs/ajaxbox.php
@@ -1,6 +1,6 @@
<?php
/* 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
* it under the terms of the GNU General Public License as published by
Expand All @@ -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');
Expand Down
138 changes: 69 additions & 69 deletions htdocs/boxes.php
@@ -1,5 +1,5 @@
<?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>
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -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;
Expand All @@ -72,7 +72,7 @@ function listBoxes($zone,$user)
$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)
Expand All @@ -95,8 +95,8 @@ function listBoxes($zone,$user)
{
foreach($box->depends as $module)
{
// print $module.'<br>';
if (empty($conf->$module->enabled)) $enabled=false;
// print $module.'<br>';
if (empty($conf->$module->enabled)) $enabled=false;
}
}
if ($enabled) $boxes[]=$box;
Expand Down Expand Up @@ -142,8 +142,8 @@ function listBoxes($zone,$user)
{
foreach($box->depends as $module)
{
// print $module.'<br>';
if (empty($conf->$module->enabled)) $enabled=false;
// print $module.'<br>';
if (empty($conf->$module->enabled)) $enabled=false;
}
}
if ($enabled) $boxes[]=$box;
Expand All @@ -156,46 +156,46 @@ function listBoxes($zone,$user)
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);
Expand All @@ -205,7 +205,7 @@ function saveboxorder($zone,$boxorder,$userid=0)
$colonne=$part[0];
$list=$part[1];
dolibarr_syslog('InfoBox::saveboxorder colonne='.$colonne.' list='.$list);

$i=0;
$listarray=split(',',$list);
foreach ($listarray as $id)
Expand All @@ -216,22 +216,22 @@ function saveboxorder($zone,$boxorder,$userid=0)
$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)
Expand All @@ -252,6 +252,6 @@ function saveboxorder($zone,$boxorder,$userid=0)
$this->db->rollback();
return -1;
}
}
}
}
?>
19 changes: 10 additions & 9 deletions htdocs/index.php
Expand Up @@ -611,10 +611,11 @@
// 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 "</div>\n";
Expand All @@ -628,7 +629,6 @@
print '<div id="right">'."\n";

$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)
{
if (eregi('^B',$box->box_order)) // colonne B
Expand All @@ -646,10 +646,11 @@
// If no box on right, we show add an invisible empty box
if ($ii==0)
{
$box->box_id='B';
$box->info_box_head=array();
$box->info_box_contents=array();
$box->showBox();
$emptybox=new ModeleBoxes($db);
$emptybox->box_id='B';
$emptybox->info_box_head=array();
$emptybox->info_box_contents=array();
$emptybox->showBox(array(),array());
}

print "</div>\n";
Expand Down
20 changes: 7 additions & 13 deletions htdocs/lib/functions2.lib.php
Expand Up @@ -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;
Expand All @@ -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)
Expand All @@ -574,34 +570,32 @@ 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)
{
// 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;
Expand Down

0 comments on commit 1e1ee9d

Please sign in to comment.