From d45a05664596753bd707a8ff0c9b99a3a9a64575 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 23 Jul 2007 18:07:27 +0000 Subject: [PATCH] =?UTF-8?q?Add:=20possibilit=E9=20de=20modifier=20les=20li?= =?UTF-8?q?gnes=20des=20dictionnaires=20-=20reste=20un=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/admin/dict.php | 302 ++++++++++++++++++++++++++---------------- 1 file changed, 187 insertions(+), 115 deletions(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 1f38f520f2d..a1fe30f7a03 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -2,6 +2,7 @@ /* Copyright (C) 2004 Rodolphe Quiedeville * Copyright (C) 2004-2006 Laurent Destailleur * Copyright (C) 2004 Benoit Mortier + * Copyright (C) 2005-2007 Regis Houssin * * 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 @@ -38,7 +39,6 @@ $langs->load("companies"); if (!$user->admin) accessforbidden(); - $acts[0] = "activate"; $acts[1] = "disable"; $actl[0] = $langs->trans("Activate"); @@ -85,7 +85,7 @@ $tablib[13]= $langs->trans("DictionnaryPaymentModes"); // Requete pour extraction des données des dictionnaires $tabsql[1] = "SELECT f.rowid as rowid, f.code, f.libelle, p.libelle as pays, f.active FROM ".MAIN_DB_PREFIX."c_forme_juridique as f, ".MAIN_DB_PREFIX."c_pays as p WHERE f.fk_pays=p.rowid"; -$tabsql[2] = "SELECT d.rowid as rowid, d.code_departement as code , d.nom as libelle, r.nom as region, p.libelle as pays, d.active FROM ".MAIN_DB_PREFIX."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r, ".MAIN_DB_PREFIX."c_pays as p WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid and r.active=1 and p.active=1"; +$tabsql[2] = "SELECT d.rowid as rowid, d.code_departement as code , d.nom as libelle, d.fk_region as region_id, r.nom as region, p.libelle as pays, d.active FROM ".MAIN_DB_PREFIX."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r, ".MAIN_DB_PREFIX."c_pays as p WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid and r.active=1 and p.active=1"; $tabsql[3] = "SELECT r.rowid as rowid, code_region as code , nom as libelle, p.libelle as pays, r.active FROM ".MAIN_DB_PREFIX."c_regions as r, ".MAIN_DB_PREFIX."c_pays as p WHERE r.fk_pays=p.rowid and p.active=1"; $tabsql[4] = "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_pays"; $tabsql[5] = "SELECT c.rowid as rowid, c.code as code, c.civilite AS libelle, c.active FROM ".MAIN_DB_PREFIX."c_civilite AS c"; @@ -115,7 +115,7 @@ $tabsqlsort[13]="code ASC"; // Nom des champs en resultat de select pour affichage du dictionnaire $tabfield[1] = "code,libelle,pays"; -$tabfield[2] = "code,libelle,region"; // "code,libelle,region" +$tabfield[2] = "code,libelle,region_id,region"; // "code,libelle,region" $tabfield[3] = "code,libelle,pays"; $tabfield[4] = "code,libelle"; $tabfield[5] = "code,libelle"; @@ -179,9 +179,9 @@ $msg=''; $sortfield=$_GET["sortfield"]; /* - * Actions ajout d'une entrée dans un dictionnaire de donnée + * Actions ajout ou modification d'une entrée dans un dictionnaire de donnée */ -if ($_POST["actionadd"]) +if ($_POST["actionadd"] || $_POST["actionmodify"]) { $listfield=split(',',$tabfield[$_POST["id"]]); @@ -203,8 +203,8 @@ if ($_POST["actionadd"]) $msg.=$langs->trans("ErrorFieldRequired",$langs->trans("Country")).'
'; } - // Si verif ok, on ajoute la ligne - if ($ok) { + // Si verif ok et action add, on ajoute la ligne + if ($ok && $_POST["actionadd"]) { if ($tabrowid[$_POST["id"]]) { // Recupere id libre pour insertion $newid=0; @@ -248,6 +248,43 @@ if ($_POST["actionadd"]) } } } + + // Si verif ok et action modify, on modifie la ligne + if ($ok && $_POST["actionmodify"]) { + if ($tabrowid[$_POST["id"]]) { $rowidcol=$tabrowid[$_POST["id"]]; } + else { $rowidcol="rowid"; } + + // on utilise les champs d'insertion pour effectuer la modification + $listfieldmodify=split(',',$tabfieldinsert[$_POST["id"]]); + + // Modify entry + $sql = "UPDATE ".$tabname[$_POST["id"]]." SET "; + // Modifie valeur des champs + if ($tabrowid[$_POST["id"]] && !in_array($tabrowid[$_POST["id"]],$listfieldmodify)) + { + $sql.= $tabrowid[$_POST["id"]]."="; + $sql.= "'".addslashes($_POST["rowid"])."', "; + } + $i = 0; + foreach ($listfield as $f => $value) { + if ($i > 0) + { + $sql.= ", "; + } + + $sql.= $listfieldmodify[$i]."="; + $sql.= "'".addslashes($_POST[$value])."'"; + + $i++; + } + $sql.= " WHERE ".$rowidcol." = '".$_POST["rowid"]."'"; +print $sql; + //$result = $db->query($sql); + if (!$result) + { + dolibarr_print_error($db); + } + } if ($msg) $msg='
'.$msg.'
'; $_GET["id"]=$_POST["id"]; // Force affichage dictionnaire en cours d'edition @@ -258,7 +295,7 @@ if ($_GET["action"] == 'delete') // delete if ($tabrowid[$_GET["id"]]) { $rowidcol=$tabrowid[$_GET["id"]]; } else { $rowidcol="rowid"; } - $sql = "DELETE from ".$tabname[$_GET["id"]]." WHERE $rowidcol='".$_GET["rowid"]."'"; + $sql = "DELETE from ".$tabname[$_GET["id"]]." WHERE ".$rowidcol."='".$_GET["rowid"]."'"; $result = $db->query($sql); if (! $result) @@ -387,92 +424,26 @@ if ($_GET["id"]) if ($fieldlist[$field]=='nbjour') $valuetoshow=$langs->trans("NbOfDays"); if ($fieldlist[$field]=='fdm') $valuetoshow=$langs->trans("AtEndOfMonth"); if ($fieldlist[$field]=='decalage') $valuetoshow=$langs->trans("Offset"); - print ''; - print $valuetoshow; - print ''; + if ($fieldlist[$field]=='region_id') $valuetoshow=''; + + if ($valuetoshow != '') + { + print ''; + print $valuetoshow; + print ''; + } if ($fieldlist[$field]=='libelle') $alabelisused=1; } - print ' '; - print ''; + print ' '; + print ''; print ''; // Ligne d'ajout print ""; - $html = new Form($db); - foreach ($fieldlist as $field => $value) - { - if ($fieldlist[$field] == 'pays') { - print ''; - $html->select_pays('','pays'); - print ''; - } - elseif ($fieldlist[$field] == 'region') { - print ''; - $html->select_region('','region'); - print ''; - } - elseif ($fieldlist[$field] == 'lang') { - print ''; - $html->select_lang($conf->global->MAIN_LANG_DEFAULT,'lang'); - print ''; - } - // Le type de l'element (pour les type de contact).' - elseif ($fieldlist[$field] == 'element') - { - $langs->load("orders"); - $langs->load("contracts"); - $langs->load("project"); - $langs->load("propal"); - $langs->load("bills"); - print ''; - $elementList = array("commande"=>$langs->trans("Order"), - "contrat"=>$langs->trans("Contract"), - "projet"=>$langs->trans("Project"), - "propal"=>$langs->trans("Propal"), - "facture"=>$langs->trans("Bill")); - $html->select_array('element', $elementList); - print ''; - } - // La source de l'element (pour les type de contact).' - elseif ($fieldlist[$field] == 'source') - { - print ''; - $elementList = array("internal"=>$langs->trans("Internal"), - "external"=>$langs->trans("External")); - $html->select_array('source', $elementList); - print ''; - } - elseif ($fieldlist[$field] == 'type' && $tabname[$_GET["id"]] == MAIN_DB_PREFIX."c_actioncomm") - { - print ''; - print 'user'; - print ''; - } - elseif ($fieldlist[$field] == 'recuperableonly') { - print ''; - print $html->selectyesno('recuperableonly','',1); - print ''; - } - elseif ($fieldlist[$field] == 'nbjour') { - print ''; - } - elseif ($fieldlist[$field] == 'decalage') { - print ''; - } - elseif ($fieldlist[$field] == 'fdm') { - print ''; - print $html->selectyesno('fdm','',1); - print ''; - } - elseif ($fieldlist[$field] == 'taux') { - print ''; - } - else - { - print ''; - } - } + + fieldList($fieldlist); + print ''; print ""; @@ -508,11 +479,16 @@ if ($_GET["id"]) if ($fieldlist[$field]=='nbjour') $valuetoshow=$langs->trans("NbOfDays"); if ($fieldlist[$field]=='fdm') $valuetoshow=$langs->trans("AtEndOfMonth"); if ($fieldlist[$field]=='decalage') $valuetoshow=$langs->trans("Offset"); + if ($fieldlist[$field]=='region_id') $valuetoshow=''; + // Affiche nom du champ - print_liste_field_titre($valuetoshow,"dict.php",$fieldlist[$field],"&id=".$_GET["id"],"","",$sortfield); + if ($valuetoshow != '') + { + print_liste_field_titre($valuetoshow,"dict.php",$fieldlist[$field],"&id=".$_GET["id"],"","",$sortfield); + } } print_liste_field_titre($langs->trans("Action"),"dict.php","active","&id=".$_GET["id"],"",'align="center"',$sortfield); - print ' '; + print ' '; print ''; // Lignes de valeurs @@ -522,45 +498,64 @@ if ($_GET["id"]) $var=!$var; print ""; - foreach ($fieldlist as $field => $value) { - $valuetoshow=$obj->$fieldlist[$field]; + if ($_GET["action"] == 'modify' && ($_GET["rowid"] == ($obj->rowid?$obj->rowid:$obj->code))) + { + print '
'; + print ''; + print ''; + fieldList($fieldlist); + print ''; + } + else + { + foreach ($fieldlist as $field => $value) { + $valuetoshow=$obj->$fieldlist[$field]; if ($valuetoshow=='all') { - $valuetoshow=$langs->trans('All'); + $valuetoshow=$langs->trans('All'); } if ($fieldlist[$field]=='recuperableonly') { - $valuetoshow=yn($valuetoshow); + $valuetoshow=yn($valuetoshow); } if ($fieldlist[$field]=='fdm') { - $valuetoshow=yn($valuetoshow); + $valuetoshow=yn($valuetoshow); } - print ''.$valuetoshow.''; + if ($fieldlist[$field]=='region_id') { + $valuetoshow=''; + } + if ($valuetoshow != '') print ''.$valuetoshow.''; + } - } - print ''; + print ''; - // Est-ce une entrée du dictionnaire qui peut etre désactivée ? - $iserasable=1; // Oui par defaut - if (isset($obj->code) && ($obj->code == '0' || $obj->code == '' || eregi('unknown',$obj->code))) $iserasable=0; - if ($obj->type && $obj->type == 'system') $iserasable=0; + // Est-ce une entrée du dictionnaire qui peut etre désactivée ? + $iserasable=1; // Oui par defaut + if (isset($obj->code) && ($obj->code == '0' || $obj->code == '' || eregi('unknown',$obj->code))) $iserasable=0; + if ($obj->type && $obj->type == 'system') $iserasable=0; - if ($iserasable) { - print ''.$actl[$obj->active].''; - } else { - print $langs->trans("AlwaysActive"); - } - print ""; - if ($iserasable) { - print ''.img_delete().''; - } else { + if ($iserasable) { + print ''.$actl[$obj->active].''; + } else { + print $langs->trans("AlwaysActive"); + } + print ""; + if ($iserasable) { + print ''.img_edit().''; + } else { print ' '; + } + if ($iserasable) { + print ''.img_delete().''; + } else { + print ' '; + } + print "\n"; } - print "\n"; $i++; - } - } - } - else { + } + } + } + else { dolibarr_print_error($db); } @@ -602,4 +597,81 @@ print '
'; $db->close(); llxFooter('$Date$ - $Revision$'); + +/** + \brief Affiche les champs +*/ +function fieldList($fieldlist) +{ + global $conf,$langs,$db,$obj; + + $html = new Form($db); + + foreach ($fieldlist as $field => $value) + { + if ($fieldlist[$field] == 'pays') { + print ''; + $html->select_pays($obj->$fieldlist[$field],'pays'); + print ''; + } + elseif ($fieldlist[$field] == 'region') { + print ''; + $html->select_region($region_id,'region'); + print ''; + } + elseif ($fieldlist[$field] == 'region_id') { + $region_id = $obj->$fieldlist[$field]; + } + elseif ($fieldlist[$field] == 'lang') { + print ''; + $html->select_lang($conf->global->MAIN_LANG_DEFAULT,'lang'); + print ''; + } + // Le type de l'element (pour les type de contact).' + elseif ($fieldlist[$field] == 'element') + { + $langs->load("orders"); + $langs->load("contracts"); + $langs->load("project"); + $langs->load("propal"); + $langs->load("bills"); + print ''; + $elementList = array("commande"=>$langs->trans("Order"), + "contrat"=>$langs->trans("Contract"), + "projet"=>$langs->trans("Project"), + "propal"=>$langs->trans("Propal"), + "facture"=>$langs->trans("Bill")); + $html->select_array('element', $elementList,$obj->$fieldlist[$field]); + print ''; + } + // La source de l'element (pour les type de contact).' + elseif ($fieldlist[$field] == 'source') + { + print ''; + $elementList = array("internal"=>$langs->trans("Internal"), + "external"=>$langs->trans("External")); + $html->select_array('source', $elementList,$obj->$fieldlist[$field]); + print ''; + } + elseif ($fieldlist[$field] == 'type' && $tabname[$_GET["id"]] == MAIN_DB_PREFIX."c_actioncomm") + { + print ''; + print 'user'; + print ''; + } + elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm') { + print ''; + print $html->selectyesno($fieldlist[$field],$obj->$fieldlist[$field],1); + print ''; + } + elseif ($fieldlist[$field] == 'nbjour' || $fieldlist[$field] == 'decalage' || $fieldlist[$field] == 'taux') { + print ''; + } + else + { + print ''; + } + } +} + ?>