Skip to content
Snippets Groups Projects
Commit 04de32e3 authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

Suite dev drag and drop des boites

parent f98bd2ef
No related branches found
No related tags found
No related merge requests found
......@@ -27,6 +27,8 @@
*/
require("./pre.inc.php");
include_once(DOL_DOCUMENT_ROOT."/includes/boxes/modules_boxes.php");
$langs->load("admin");
if (!$user->admin)
......@@ -43,25 +45,42 @@ $boxes = array();
if ($_POST["action"] == 'add')
{
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."boxes WHERE box_id=".$_POST["boxid"]." AND position=".$_POST["pos"];
$result = $db->query($sql);
$num = $db->num_rows($result);
if ($num == 0)
$sql = "SELECT rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."boxes";
$sql.= " WHERE fk_user=0 AND box_id=".$_POST["boxid"]." AND position=".$_POST["pos"];
$resql = $db->query($sql);
if ($resql)
{
// Si la boite n'est pas deja active
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (box_id, position) values (".$_POST["boxid"].",".$_POST["pos"].");";
$result = $db->query($sql);
}
Header("Location: boxes.php");
exit;
$num = $db->num_rows($result);
if ($num == 0)
{
// Si la boite n'est pas deja active
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (box_id, position, fk_user) values (".$_POST["boxid"].",".$_POST["pos"].", 0)";
$result = $db->query($sql);
}
Header("Location: boxes.php");
exit;
}
else
{
dolibarr_print_error($db);
}
}
if ($_GET["action"] == 'delete')
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes WHERE rowid=".$_GET["rowid"];
$result = $db->query($sql);
$db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes";
$sql.= " WHERE rowid=".$_GET["rowid"];
$resql = $db->query($sql);
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
$sql.= " WHERE param like 'MAIN_BOXES_%'";
$resql = $db->query($sql);
$db->commit();
}
if ($_GET["action"] == 'switch')
......@@ -69,34 +88,20 @@ if ($_GET["action"] == 'switch')
// On permute les valeur du champ box_order des 2 lignes de la table boxes
$db->begin();
$sql="SELECT box_order FROM ".MAIN_DB_PREFIX."boxes WHERE rowid=".$_GET["switchfrom"];
$resultfrom = $db->query($sql);
if ($resultfrom)
{
$objfrom = $db->fetch_object($resultfrom);
}
else
{
dolibarr_print_error($db);
}
$sql="SELECT box_order FROM ".MAIN_DB_PREFIX."boxes WHERE rowid=".$_GET["switchto"];
$resultto = $db->query($sql);
$objfrom=new ModeleBoxes($db);
$objfrom->fetch($_GET["switchfrom"]);
if ($resultto)
{
$objto = $db->fetch_object($resultto);
}
else
$objto=new ModeleBoxes($db);
$objto->fetch($_GET["switchto"]);
if (is_object($objfrom) && is_object($objto))
{
dolibarr_print_error($db);
}
if ($objfrom && $objto) {
$sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order=".$objto->box_order." WHERE rowid=".$_GET["switchfrom"];
$sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order=".$objto->box_order." WHERE rowid=".$objfrom->rowid;
//print "xx".$sql;
$resultupdatefrom = $db->query($sql);
if (! $resultupdatefrom) { dolibarr_print_error($db); }
$sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order=".$objfrom->box_order." WHERE rowid=".$_GET["switchto"];
$sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order=".$objfrom->box_order." WHERE rowid=".$objto->rowid;
//print "xx".$sql;
$resultupdateto = $db->query($sql);
if (! $resultupdateto) { dolibarr_print_error($db); }
}
......@@ -126,7 +131,7 @@ print $langs->trans("BoxesDesc")."<br>\n";
$sql = "SELECT b.rowid, b.box_id, b.position, b.box_order, d.name, d.rowid as boxid";
$sql .= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
$sql .= " where b.box_id = d.rowid";
$sql .= " WHERE b.box_id = d.rowid AND fk_user=0";
$sql .= " ORDER by position, box_order";
$resql = $db->query($sql);
......@@ -174,7 +179,8 @@ print '<td>'.$langs->trans("SourceFile").'</td>';
print '<td align="center" width="160">'.$langs->trans("ActivateOn").'</td>';
print "</tr>\n";
$sql = "SELECT rowid, name, file, note FROM ".MAIN_DB_PREFIX."boxes_def";
$sql = "SELECT rowid, name, file, note";
$sql.= " FROM ".MAIN_DB_PREFIX."boxes_def";
$resql = $db->query($sql);
$var=True;
......@@ -243,14 +249,16 @@ print '<tr class="liste_titre">';
print '<td width="300">'.$langs->trans("Box").'</td>';
print '<td>'.$langs->trans("Note").'/'.$langs->trans("Parameters").'</td>';
print '<td align="center" width="160">'.$langs->trans("ActiveOn").'</td>';
print '<td align="center" width="60" colspan="2">'.$langs->trans("Position").'</td>';
print '<td align="center" width="60" colspan="2">'.$langs->trans("PositionByDefault").'</td>';
print '<td align="center" width="80">'.$langs->trans("Disable").'</td>';
print "</tr>\n";
$sql = "SELECT b.rowid, b.box_id, b.position, d.name, d.file, d.note";
$sql .= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
$sql .= " where b.box_id = d.rowid";
$sql .= " ORDER by position, box_order";
$sql = "SELECT b.rowid, b.box_id, b.position,";
$sql.= " d.name, d.file, d.note";
$sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
$sql.= " WHERE b.box_id = d.rowid";
$sql.= " AND b.fk_user=0";
$sql.= " ORDER by position, box_order";
$resql = $db->query($sql);
......
<?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2006 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
......@@ -66,7 +66,7 @@ class InfoBox
if ($user->id && $user->conf->$confuserzone)
{
// Recupere liste des boites d'un user si ce dernier a sa propre liste
$sql = "SELECT b.rowid, b.box_id,";
$sql = "SELECT b.rowid, b.box_id, b.position, b.box_order, b.fk_user,";
$sql.= " d.file, d.note";
$sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
$sql.= " WHERE b.box_id = d.rowid";
......@@ -86,6 +86,11 @@ class InfoBox
$boxname=eregi_replace('\.php$','',$obj->file);
include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
$box=new $boxname($this->db,$obj->note);
$box->rowid=$obj->rowid;
$box->box_id=$obj->box_id;
$box->position=$obj->position;
$box->box_order=$obj->box_order;
$box->fk_user=$obj->fk_user;
$boxes[$j]=$box;
$j++;
}
......@@ -99,7 +104,7 @@ class InfoBox
else
{
// Recupere liste des boites active par defaut pour tous
$sql = "SELECT b.rowid, b.box_id,";
$sql = "SELECT b.rowid, b.box_id, b.position, b.box_order, b.fk_user,";
$sql.= " d.file, d.note";
$sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
$sql.= " WHERE b.box_id = d.rowid";
......@@ -119,6 +124,11 @@ class InfoBox
$boxname=eregi_replace('\.php$','',$obj->file);
include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
$box=new $boxname($this->db,$obj->note);
$box->rowid=$obj->rowid;
$box->box_id=$obj->box_id;
$box->position=$obj->position;
$box->box_order=$obj->box_order;
$box->fk_user=$obj->fk_user;
$boxes[$j]=$box;
$j++;
}
......@@ -132,6 +142,78 @@ class InfoBox
return $boxes;
}
/**
* \brief Sauvegarde sequencement des boites pour la zone et le user
* \param $zone ID de la zone (0 pour la Homepage, ...)
* \param $boxarray Tableau des boites dans le bon ordre
* \param $user Objet user
* \return int <0 si ko, >= 0 si ok
*/
function saveboxorder($zone,$boxarray,$user)
{
dolibarr_syslog("InfoBoxes::saveboxorder zone=$zone user=$user");
if (! is_object($user) || ! $user->id) return 0;
$this->db->begin();
// Sauve parametre indiquant que le user a une
$confuserzone='MAIN_BOXES_'.$zone;
$tab[$confuserzone]=1;
if (! dolibarr_set_user_page_param($this->db, $user, '', $tab))
{
$this->error=$this->db->error();
$this->db->rollback();
return -3;
}
$sql ="DELETE FROM ".MAIN_DB_PREFIX."boxes";
$sql.=" WHERE fk_user = ".$user->id;
$sql.=" AND position = ".$zone;
$result = $this->db->query($sql);
if ($result)
{
for ($ii=0, $ni=sizeof($boxarray); $ii < $ni; $ii++)
{
//print "box_id".$boxarray[$ii]->box_id.'<br>';
//print "box_order".$boxarray[$ii]->box_order.'<br>';
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes";
$sql.= "(box_id, position, box_order, fk_user)";
$sql.= " values (";
$sql.= " ".$boxarray[$ii]->box_id.",";
$sql.= " ".$zone.",";
$sql.= " ".$boxarray[$ii]->box_order.",";
$sql.= " ".$user->id;
$sql.= ")";
$result = $this->db->query($sql);
if ($result < 0)
{
$error++;
break;
}
}
if ($error)
{
$this->error=$this->db->error();
$this->db->rollback();
return -2;
}
else
{
$this->db->commit();
return 1;
}
}
else
{
$this->error=$this->db->error();
$this->db->rollback();
return -1;
}
}
}
?>
<?php
/* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
/* Copyright (C) 2004-2006 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
......@@ -37,9 +37,19 @@ class ModeleBoxes
{
var $MAXLENGTHBOX=60; // Mettre 0 pour pas de limite
var $db;
var $error='';
/*
* \brief Constructeur
*/
function ModeleBoxes($DB)
{
$this->db=$DB;
}
/**
\brief Renvoi le dernier message d'erreur de cration de facture
*/
......@@ -49,6 +59,42 @@ class ModeleBoxes
}
/**
\brief Charge une ligne boxe depuis son rowid
*/
function fetch($rowid)
{
// Recupere liste des boites d'un user si ce dernier a sa propre liste
$sql = "SELECT b.rowid, b.box_id, b.position, b.box_order, b.fk_user";
$sql.= " FROM ".MAIN_DB_PREFIX."boxes as b";
$sql.= " WHERE b.rowid = ".$rowid;
dolibarr_syslog("ModeleBoxes::fetch rowid=".$rowid);
$resql = $this->db->query($sql);
if ($resql)
{
$obj = $this->db->fetch_object($resql);
if ($obj)
{
$this->rowid=$obj->rowid;
$this->box_id=$obj->box_id;
$this->position=$obj->position;
$this->box_order=$obj->box_order;
$this->fk_user=$obj->fk_user;
return 1;
}
else
{
return -1;
}
}
else
{
return -1;
}
}
/**
\brief Methode standard d'affichage des boites
\param $head tableau des caractristiques du titre
......@@ -91,7 +137,7 @@ class ModeleBoxes
print img_picto($langs->trans("Move"),'uparrow','style="cursor:move;"');
print '</td></tr></table>';
}
print '</td>';
print '</tr>';
......
......@@ -491,11 +491,42 @@ print '</td></tr></table>';
$boxarray=$infobox->listboxes("0",$user); // 0=valeur pour la page accueil
$boxjavascriptids=array();
// Gestion deplacement des boxes
if (eregi('boxobject_([0-9]+)',$_GET["switchfrom"],$regfrom)
&& eregi('boxto_([0-9]+)',$_GET["switchto"],$regto))
{
//print "Modif ordre box: ".$regfrom[1]." <-> ".$regto[1];
// print_r($boxarray);
/*
print "Modif ordre box: ";
print $boxarray[$regfrom[1]]->box_id."(".$boxarray[$regfrom[1]]->box_order.")";
print " <-> ";
print $boxarray[$regto[1]]->box_id."(".$boxarray[$regto[1]]->box_order.")";
print "<br>\n";
*/
// Permutation boites
$switchii=$boxarray[$regto[1]];
$boxarray[$regto[1]]=$boxarray[$regfrom[1]];
$boxarray[$regfrom[1]]=$switchii;
// Permutation box_order
$switchbox_order=$boxarray[$regto[1]]->box_order;
$boxarray[$regto[1]]->box_order=$boxarray[$regfrom[1]]->box_order;
$boxarray[$regfrom[1]]->box_order=$switchbox_order;
/*
print "Modif ordre box: ";
print $boxarray[$regfrom[1]]->box_id."(".$boxarray[$regfrom[1]]->box_order.")";
print " <-> ";
print $boxarray[$regto[1]]->box_id."(".$boxarray[$regto[1]]->box_order.")";
print "<br>\n";
*/
// Sauvegarde nouvel ordre pour l'utilisateur
$result=$infobox->saveboxorder("0",$boxarray,$user);
if ($result < 0)
{
dolibarr_print_error($db,$infobox->error);
}
}
......@@ -563,9 +594,10 @@ if ($conf->use_ajax && $conf->browser->firefox && $conf->global->MAIN_SHOW_DEVEL
}
// Juste pour viter bug IE qui rorganise mal div prcdents si celui-ci absent
print '<div class="tabsAction">';
print '&nbsp;';
print '</div>';
if (! $conf->browser->firefox)
{
print '<div class="tabsAction">&nbsp;</div>';
}
$db->close();
......
......@@ -41,6 +41,8 @@ CurrentDolibarrLanguage=Dolibarr current language
OSEnv=OS Environment
Box=Box
Boxes=Boxes
PositionByDefault=Default order
Position=Order
System=System
SystemInfo=System informations
SystemTools=System tools
......
......@@ -41,6 +41,8 @@ CurrentDolibarrLanguage=Langue Dolibarr courante
OSEnv=Environnement OS
Box=Boîte
Boxes=Boîtes
PositionByDefault=Position par défaut
Position=Ordre
System=Système
SystemInfo=Infos Système
SystemTools=Outils Système
......
......@@ -369,6 +369,57 @@ function dolibarr_del_const($db, $name)
}
}
/**
\brief Sauvegarde parametrage personnel
\param db Handler d'accs base
\param user Objet utilisateur
\param url Si defini, on sauve parametre du tableau tab dont cl = sortfield, sortorder, begin et page
Si non defini on sauve tous parametres du tableau tab
\param tab Tableau (cl=>valeur) des paramtres sauvegarder
\return int <0 si ko, >0 si ok
*/
function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
{
$db->begin();
// On efface paramtres anciens
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
$sql.= " WHERE fk_user = ".$user->id;
if ($url) $sql.=" AND page='".$url."'";
else $sql.=" AND page=''";
dolibarr_syslog("functions.inc.php::dolibarr_set_user_page_param $sql");
$resql=$db->query($sql);
if (! $resql)
{
dolibarr_print_error($db);
exit;
}
foreach ($tab as $key=>$value)
{
// On positionne nouveaux paramtres
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.= " VALUES (".$user->id.",";
if ($url) $sql.= " '".urlencode($url)."',";
else $sql.= " '',";
$sql.= " '".$key."','".addslashes($value)."');";
dolibarr_syslog("functions.inc.php::dolibarr_set_user_page_param $sql");
$db->query($sql);
$user->page_param[$key] = $value;
}
}
$db->commit();
return 1;
}
/**
\brief Formattage des nombres
\param ca valeur a formater
......@@ -603,10 +654,10 @@ function img_object($alt, $object)
\param picto Nom de l'image a afficher
\return string Retourne tag img
*/
function img_picto($alt, $picto)
function img_picto($alt, $picto, $options='')
{
global $conf,$langs;
return '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/'.$picto.'.png" border="0" alt="'.$alt.'" title="'.$alt.'">';
return '<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/'.$picto.'.png" border="0" alt="'.$alt.'" title="'.$alt.'"'.($options?' '.$options:'').'>';
}
/**
......@@ -1261,51 +1312,6 @@ function doliMoveFileUpload($src_file, $dest_file)
}
/**
\brief Sauvegarde parametrage personnel
\param db Handler d'accs base
\param user Objet utilisateur
\param url Si defini, on sauve parametre du tableau tab dont cl = sortfield, sortorder, begin et page
Si non defini on sauve tous parametres du tableau tab
\param tab Tableau (cl=>valeur) des paramtres sauvegarder
*/
function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
{
$db->begin();
// On efface paramtres anciens
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
$sql.= " WHERE fk_user = ".$user->id;
if ($url) $sql.=" AND page='".$url."'";
else $sql.=" AND page=''";
$sql.=";";
$resql=$db->query($sql);
if (! $resql)
{
dolibarr_print_error($db);
}
dolibarr_syslog("functions.inc.php::dolibarr_set_user_page_param $sql");
foreach ($tab as $key=>$value)
{
// On positionne nouveaux paramtres
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.= " VALUES (".$user->id.",";
if ($url) $sql.= " '".urlencode($url)."',";
else $sql.= " '',";
$sql.= " '".$key."','".addslashes($value)."');";
dolibarr_syslog("functions.inc.php::dolibarr_set_user_page_param $sql");
$db->query($sql);
$user->page_param[$key] = $value;
}
}
$db->commit();
}
/**
\brief Transcodage de francs en euros
\param zonein zone de depart
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment