diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php
index c12e913e9c1..7c9c8aa2ef1 100644
--- a/htdocs/admin/boxes.php
+++ b/htdocs/admin/boxes.php
@@ -51,88 +51,90 @@ if ($action == 'addconst')
dolibarr_set_const($db, "MAIN_BOXES_MAXLINES",$_POST["MAIN_BOXES_MAXLINES"],'',0,'',$conf->entity);
}
-if ($action == 'add')
-{
+if ($action == 'add') {
$error=0;
-
$db->begin();
+ if (isset($_POST['boxid']) && is_array($_POST['boxid'])) {
+ foreach($_POST['boxid'] as $boxid) {
+ if ($boxid['active']=='on') {
+ $pos = $boxid['pos'];
- // Initialize distinct fkuser with all already existing values of fk_user (user that use a personalized view of boxes for page "pos")
- $distinctfkuser=array();
- if (! $error)
- {
- $sql = "SELECT fk_user";
- $sql.= " FROM ".MAIN_DB_PREFIX."user_param";
- $sql.= " WHERE param = 'MAIN_BOXES_".$db->escape(GETPOST("pos","alpha"))."' AND value = '1'";
- $sql.= " AND entity = ".$conf->entity;
+ // Initialize distinct fkuser with all already existing values of fk_user (user that use a personalized view of boxes for page "pos")
+ $distinctfkuser=array();
+ if (! $error)
+ {
+ $sql = "SELECT fk_user";
+ $sql.= " FROM ".MAIN_DB_PREFIX."user_param";
+ $sql.= " WHERE param = 'MAIN_BOXES_".$db->escape($pos)."' AND value = '1'";
+ $sql.= " AND entity = ".$conf->entity;
+ dol_syslog("boxes.php search fk_user to activate box for", LOG_DEBUG);
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $num = $db->num_rows($resql);
+ $i=0;
+ while ($i < $num)
+ {
+ $obj=$db->fetch_object($resql);
+ $distinctfkuser[$obj->fk_user]=$obj->fk_user;
+ $i++;
+ }
+ }
+ else
+ {
+ setEventMessage($db->lasterror(), 'errors');
+ $error++;
+ }
+ }
- dol_syslog("boxes.php search fk_user to activate box for", LOG_DEBUG);
- $resql = $db->query($sql);
- if ($resql)
- {
- $num = $db->num_rows($resql);
- $i=0;
- while ($i < $num)
- {
- $obj=$db->fetch_object($resql);
- $distinctfkuser[$obj->fk_user]=$obj->fk_user;
- $i++;
- }
- }
- else
- {
- setEventMessage($db->lasterror(), 'errors');
- $error++;
- }
- }
+ $distinctfkuser['0']='0'; // Add entry for fk_user = 0. We must use string as key and val
- $distinctfkuser['0']='0'; // Add entry for fk_user = 0. We must use string as key and val
+ foreach($distinctfkuser as $fk_user)
+ {
+ if (! $error && $fk_user != '')
+ {
+ $nbboxonleft=$nbboxonright=0;
+ $sql = "SELECT box_order FROM ".MAIN_DB_PREFIX."boxes WHERE position = ".$pos." AND fk_user = ".$fk_user." AND entity = ".$conf->entity;
+ dol_syslog("boxes.php activate box", LOG_DEBUG);
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ while($obj = $db->fetch_object($resql))
+ {
+ $boxorder=$obj->box_order;
+ if (preg_match('/A/',$boxorder)) $nbboxonleft++;
+ if (preg_match('/B/',$boxorder)) $nbboxonright++;
+ }
+ }
+ else dol_print_error($db);
- foreach($distinctfkuser as $fk_user)
- {
- if (! $error && $fk_user != '')
- {
- $nbboxonleft=$nbboxonright=0;
- $sql = "SELECT box_order FROM ".MAIN_DB_PREFIX."boxes WHERE position = ".GETPOST("pos","alpha")." AND fk_user = ".$fk_user." AND entity = ".$conf->entity;
- dol_syslog("boxes.php activate box", LOG_DEBUG);
- $resql = $db->query($sql);
- if ($resql)
- {
- while($obj = $db->fetch_object($resql))
- {
- $boxorder=$obj->box_order;
- if (preg_match('/A/',$boxorder)) $nbboxonleft++;
- if (preg_match('/B/',$boxorder)) $nbboxonright++;
- }
- }
- else dol_print_error($db);
+ $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (";
+ $sql.= "box_id, position, box_order, fk_user, entity";
+ $sql.= ") values (";
+ $sql.= $boxid['value'].", ".$pos.", '".(($nbboxonleft > $nbboxonright) ? 'B01' : 'A01')."', ".$fk_user.", ".$conf->entity;
+ $sql.= ")";
- $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (";
- $sql.= "box_id, position, box_order, fk_user, entity";
- $sql.= ") values (";
- $sql.= GETPOST("boxid","int").", ".GETPOST("pos","alpha").", '".(($nbboxonleft > $nbboxonright) ? 'B01' : 'A01')."', ".$fk_user.", ".$conf->entity;
- $sql.= ")";
-
- dol_syslog("boxes.php activate box", LOG_DEBUG);
- $resql = $db->query($sql);
- if (! $resql)
- {
- setEventMessage($db->lasterror(), 'errors');
- $error++;
- }
- }
- }
-
- if (! $error)
- {
- header("Location: boxes.php");
- $db->commit();
- exit;
- }
- else
- {
- $db->rollback();
- }
+ dol_syslog("boxes.php activate box", LOG_DEBUG);
+ $resql = $db->query($sql);
+ if (! $resql)
+ {
+ setEventMessage($db->lasterror(), 'errors');
+ $error++;
+ }
+ }
+ }
+ }
+ }
+ }
+ if (! $error)
+ {
+ $db->commit();
+ $action='';
+ }
+ else
+ {
+ $db->rollback();
+ }
}
if ($action == 'delete')
@@ -317,14 +319,18 @@ if ($resql)
$boxtoadd=InfoBox::listBoxes($db,'available',-1,null,$actives);
print "
\n";
+print "\n\n".''."\n";
print_titre($langs->trans("BoxesAvailable"));
-print '
| '.$langs->trans("Parameter").' | '; print ''.$langs->trans("Value").' | '; @@ -459,9 +467,10 @@ print ''; print ''; print ' | '."\n"; print '