mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Suite dev pour grer le drag and drop des boxes ainsi que liste des box propres a chaque user
This commit is contained in:
parent
245dea6f48
commit
67b6803078
110
htdocs/boxes.php
110
htdocs/boxes.php
|
|
@ -51,45 +51,87 @@ class InfoBox
|
|||
|
||||
|
||||
/**
|
||||
* \brief Retourne tableau des boites elligibles pour la zone
|
||||
* \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)
|
||||
{
|
||||
$boxes=array();
|
||||
|
||||
$sql = "SELECT b.rowid, b.box_id,";
|
||||
$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";
|
||||
$sql.= " AND position = ".$zone;
|
||||
$sql.= " ORDER BY box_order";
|
||||
|
||||
dolibarr_syslog("InfoBox::listBoxes sql=$sql");
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$num = $this->db->num_rows($result);
|
||||
$j = 0;
|
||||
while ($j < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($result);
|
||||
$boxname=eregi_replace('.php$','',$obj->file);
|
||||
function listBoxes($zone,$user)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$boxes=array();
|
||||
|
||||
include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
|
||||
$box=new $boxname($this->db,$obj->note);
|
||||
$boxes[$j]=$box;
|
||||
$confuserzone='MAIN_BOXES_'.$zone;
|
||||
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.= " 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.position = ".$zone;
|
||||
$sql.= " AND b.fk_user = ".$user->id;
|
||||
$sql.= " ORDER BY b.box_order";
|
||||
|
||||
dolibarr_syslog("InfoBox::listBoxes sql=$sql");
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$num = $this->db->num_rows($result);
|
||||
$j = 0;
|
||||
while ($j < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($result);
|
||||
$boxname=eregi_replace('\.php$','',$obj->file);
|
||||
include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
|
||||
$box=new $boxname($this->db,$obj->note);
|
||||
$boxes[$j]=$box;
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->error=$this->db->error();
|
||||
dolibarr_syslog("InfoBox::listBoxes Error ".$this->error);
|
||||
return array();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Recupere liste des boites active par defaut pour tous
|
||||
$sql = "SELECT b.rowid, b.box_id,";
|
||||
$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";
|
||||
$sql.= " AND b.position = ".$zone;
|
||||
$sql.= " AND b.fk_user = 0";
|
||||
$sql.= " ORDER BY b.box_order";
|
||||
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return array();
|
||||
}
|
||||
return $boxes;
|
||||
}
|
||||
dolibarr_syslog("InfoBox::listBoxes sql=$sql");
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$num = $this->db->num_rows($result);
|
||||
$j = 0;
|
||||
while ($j < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($result);
|
||||
$boxname=eregi_replace('\.php$','',$obj->file);
|
||||
include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
|
||||
$box=new $boxname($this->db,$obj->note);
|
||||
$boxes[$j]=$box;
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->error=$this->db->error();
|
||||
dolibarr_syslog("InfoBox::listBoxes Error ".$this->error);
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
return $boxes;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -74,7 +74,14 @@ class box_external_rss extends ModeleBoxes {
|
|||
$site=$reg[1];
|
||||
|
||||
// Recupere flux RSS definie dans EXTERNAL_RSS_URLRSS_$site
|
||||
$rss = fetch_rss( @constant("EXTERNAL_RSS_URLRSS_".$site) );
|
||||
$url=@constant("EXTERNAL_RSS_URLRSS_".$site);
|
||||
$rss=fetch_rss($url);
|
||||
if (! is_object($rss))
|
||||
{
|
||||
dolibarr_syslog("FETCH_RSS site=".$site);
|
||||
dolibarr_syslog("FETCH_RSS url=".$url);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// INFO sur le channel
|
||||
$description=$rss->channel['tagline'];
|
||||
|
|
@ -135,7 +142,6 @@ class box_external_rss extends ModeleBoxes {
|
|||
$this->info_box_contents[$i][1] = array('align' => 'right',
|
||||
'text' => $date,
|
||||
'td' => 'nowrap="1"');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -420,10 +420,18 @@ class DolibarrModules
|
|||
//$titre = $this->boxes[$key][0];
|
||||
$file = $this->boxes[$key][1];
|
||||
//$note = $this->boxes[$key][2];
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def ";
|
||||
$sql.= "WHERE file = '".$file."'";
|
||||
if (! $this->db->query($sql) )
|
||||
|
||||
$sql = "DELETE ".MAIN_DB_PREFIX."boxes";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."boxes, ".MAIN_DB_PREFIX."boxes_def";
|
||||
$sql.= " WHERE ".MAIN_DB_PREFIX."boxes.box_id = ".MAIN_DB_PREFIX."boxes_def.rowid";
|
||||
$sql.= " AND ".MAIN_DB_PREFIX."boxes_def.file = '".$file."'";
|
||||
dolibarr_syslog("DolibarrModules::delete_boxes sql=".$sql);
|
||||
$this->db->query($sql);
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def";
|
||||
$sql.= " WHERE file = '".$file."'";
|
||||
dolibarr_syslog("DolibarrModules::delete_boxes sql=".$sql);
|
||||
if (! $this->db->query($sql))
|
||||
{
|
||||
$err++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,13 +27,21 @@
|
|||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/boxes.php");
|
||||
|
||||
$user->getrights('');
|
||||
|
||||
|
||||
// Simule le menu par défaut sur Home
|
||||
if (! isset($_GET["mainmenu"])) $_GET["mainmenu"]="home";
|
||||
|
||||
$infobox=new InfoBox($db);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Affichage page
|
||||
*/
|
||||
|
||||
llxHeader();
|
||||
|
||||
|
|
@ -480,11 +488,17 @@ print '</td></tr></table>';
|
|||
* Affichage des boites
|
||||
*
|
||||
*/
|
||||
include_once("./boxes.php");
|
||||
$infobox=new InfoBox($db);
|
||||
$boxarray=$infobox->listboxes("0"); // 0 = valeur pour la page accueil
|
||||
$boxarray=$infobox->listboxes("0",$user); // 0=valeur pour la page accueil
|
||||
$boxjavascriptids=array();
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
$NBCOLS=2; // Nombre de colonnes pour les boites
|
||||
|
||||
if (sizeof($boxarray))
|
||||
|
|
@ -492,42 +506,40 @@ if (sizeof($boxarray))
|
|||
print '<br>';
|
||||
print_fiche_titre($langs->trans("OtherInformationsBoxes"));
|
||||
print '<table width="100%" class="notopnoleftnoright">';
|
||||
}
|
||||
for ($ii=0, $ni=sizeof($boxarray); $ii<$ni; $ii++)
|
||||
{
|
||||
$boxjavascriptids[$ii]='"box_'.$ii.'"';
|
||||
for ($ii=0, $ni=sizeof($boxarray); $ii < $ni; $ii++)
|
||||
{
|
||||
$boxjavascriptids[$ii]='"box_'.$ii.'"';
|
||||
|
||||
if ($ii % $NBCOLS == 0) print "<tr>\n";
|
||||
print '<td valign="top" width="50%">';
|
||||
print '<div id="boxto_'.$ii.'">';
|
||||
|
||||
if ($conf->use_ajax && $conf->browser->firefox)
|
||||
{
|
||||
print '<ul class="nocellnopadd" height="100px" id="box_'.$ii.'">';
|
||||
print '<li class="nocellnopadd" height="100px">';
|
||||
}
|
||||
// Affichage boite ii
|
||||
$box=$boxarray[$ii];
|
||||
$box->loadBox();
|
||||
$box->boxid="$ii";
|
||||
$box->showBox();
|
||||
if ($conf->use_ajax && $conf->browser->firefox)
|
||||
{
|
||||
print '</li>';
|
||||
print '</ul>';
|
||||
}
|
||||
|
||||
print '</div>';
|
||||
print "</td>";
|
||||
if ($ii % $NBCOLS == ($NBCOLS-1)) print "</tr>\n";
|
||||
}
|
||||
|
||||
if ($ii % $NBCOLS == 0) print "<tr>\n";
|
||||
print '<td valign="top" width="50%">';
|
||||
print '<div id="boxto_'.$ii.'">';
|
||||
|
||||
if ($conf->use_ajax && $conf->browser->firefox)
|
||||
{
|
||||
print '<ul class="nocellnopadd" height="100px" id="box_'.$ii.'">';
|
||||
print '<li class="nocellnopadd" height="100px">';
|
||||
}
|
||||
// Affichage boite ii
|
||||
$box=$boxarray[$ii];
|
||||
$box->loadBox();
|
||||
$box->boxid="$ii";
|
||||
$box->showBox();
|
||||
if ($conf->use_ajax && $conf->browser->firefox)
|
||||
{
|
||||
print '</li>';
|
||||
print '</ul>';
|
||||
}
|
||||
|
||||
print '</div>';
|
||||
print "</td>";
|
||||
if ($ii % $NBCOLS == ($NBCOLS-1)) print "</tr>\n";
|
||||
}
|
||||
if (sizeof($boxarray))
|
||||
{
|
||||
if ($ii % $NBCOLS == ($NBCOLS-1)) print "</tr>\n";
|
||||
print "</table>";
|
||||
}
|
||||
|
||||
if ($conf->use_ajax && $conf->browser->firefox && 1==2)
|
||||
if ($conf->use_ajax && $conf->browser->firefox && $conf->global->MAIN_SHOW_DEVELOPMENT_MODULES)
|
||||
{
|
||||
print '<script type="text/javascript" language="javascript">'."\n";
|
||||
for ($ii=0, $ni=sizeof($boxarray); $ii < $ni; $ii++)
|
||||
|
|
@ -543,7 +555,8 @@ if ($conf->use_ajax && $conf->browser->firefox && 1==2)
|
|||
print ");\n";
|
||||
*/
|
||||
print 'new Draggable(\'boxobject_'.$ii.'\', {revert:false});'."\n";
|
||||
print 'Droppables.add(\'boxto_'.$ii.'\', {onDrop:function(element,dropon){alert(\'From: \' + encodeURIComponent(element.id) + \' - To: \' + encodeURIComponent(dropon.id))}});'."\n";
|
||||
//print 'Droppables.add(\'boxto_'.$ii.'\', {onDrop:function(element,dropon){alert(\'From: \' + encodeURIComponent(element.id) + \' - To: \' + encodeURIComponent(dropon.id))}});'."\n";
|
||||
print 'Droppables.add(\'boxto_'.$ii.'\', {onDrop:function(element,dropon){ window.location.href=\''.$_SERVER["PHP_SELF"].'?switchfrom=\'+encodeURIComponent(element.id)+\'&switchto=\'+encodeURIComponent(dropon.id); }});'."\n";
|
||||
//print 'Droppables.add(\'box_'.$ii.'\', {onDrop:function(element,dropon){alert(\'w/o hoverclass, should be:\' + encodeURIComponent(element.id) )}});'."\n";
|
||||
}
|
||||
print '</script>'."\n";
|
||||
|
|
|
|||
|
|
@ -478,6 +478,9 @@ alter table llx_facturedet_rec add column total_tva real;
|
|||
alter table llx_facturedet_rec add column total_ttc real;
|
||||
|
||||
|
||||
update llx_boxes set fk_user = 0 where fk_user IS NULL;
|
||||
ALTER TABLE llx_boxes modify fk_user integer default 0 NOT NULL;
|
||||
|
||||
-- Supprimme orphelins pour permettre montée de la clé
|
||||
-- V4 DELETE llx_boxes FROM llx_boxes LEFT JOIN llx_boxes_def ON llx_boxes.box_id = llx_boxes_def.rowid WHERE llx_boxes_def.rowid IS NULL;
|
||||
|
||||
|
|
@ -485,3 +488,4 @@ ALTER TABLE llx_boxes ADD INDEX idx_boxes_boxid (box_id);
|
|||
-- V4 ALTER TABLE llx_boxes ADD CONSTRAINT fk_boxes_box_id FOREIGN KEY (box_id) REFERENCES llx_boxes_def (rowid);
|
||||
|
||||
ALTER TABLE llx_boxes ADD INDEX idx_boxes_fk_user (fk_user);
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,6 @@
|
|||
-- V4 DELETE llx_boxes FROM llx_boxes LEFT JOIN llx_boxes_def ON llx_boxes.box_id = llx_boxes_def.rowid WHERE llx_boxes_def.rowid IS NULL;
|
||||
|
||||
ALTER TABLE llx_boxes ADD INDEX idx_boxes_boxid (box_id);
|
||||
-- V4 ALTER TABLE llx_boxes ADD CONSTRAINT fk_boxes_box_id FOREIGN KEY (box_id) REFERENCES llx_boxes_def (rowid);
|
||||
ALTER TABLE llx_boxes ADD CONSTRAINT fk_boxes_box_id FOREIGN KEY (box_id) REFERENCES llx_boxes_def (rowid);
|
||||
|
||||
ALTER TABLE llx_boxes ADD INDEX idx_boxes_fk_user (fk_user);
|
||||
|
|
@ -30,5 +30,5 @@ create table llx_boxes
|
|||
box_id integer NOT NULL,
|
||||
position smallint NOT NULL,
|
||||
box_order smallint default 0 NOT NULL,
|
||||
fk_user integer
|
||||
fk_user integer default 0
|
||||
)type=innodb;
|
||||
|
|
|
|||
|
|
@ -24,4 +24,4 @@
|
|||
-- V4 DELETE llx_commandedet FROM llx_commandedet LEFT JOIN llx_commande ON llx_commandedet.fk_commande = llx_commande.rowid WHERE llx_commande.rowid IS NULL;
|
||||
|
||||
ALTER TABLE llx_commandedet ADD INDEX idx_commandedet_fk_commande (fk_commande);
|
||||
ALTER TABLE llx_commandedet ADD CONSTRAINT fk_commandedet_fk_commande FOREIGN KEY (fk_commande) REFERENCES llx_commande (rowid);
|
||||
-- V4 ALTER TABLE llx_commandedet ADD CONSTRAINT fk_commandedet_fk_commande FOREIGN KEY (fk_commande) REFERENCES llx_commande (rowid);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user