Amlioration sauvegarde profil export:

* La sauvegarde est mise sur l'tape 3 afin de pouvoir sauv aussi l'ordre.
* Meilleure gestion erreur.
* Traduction
This commit is contained in:
Laurent Destailleur 2007-03-24 16:46:02 +00:00
parent 31df94c7e8
commit 8393500dbd
6 changed files with 175 additions and 116 deletions

View File

@ -211,75 +211,75 @@ class Export
}
}
/**
* \brief Créé un modéle d'export
* \param user Objet utilisateur qui crée
*/
function create($user)
{
global $conf;
dolibarr_syslog("Export.class.php::create");
$this->db->begin();
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'export_model (';
$sql.= 'label, type, field)';
$sql.= " VALUES ('".$this->model_name."', '".$this->datatoexport."', '".$this->hexa."')";
dolibarr_syslog("Export.class.php::create sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
$this->db->commit();
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->db->rollback();
return -1;
/**
* \brief Créé un modéle d'export
* \param user Objet utilisateur qui crée
*/
function create($user)
{
global $conf;
dolibarr_syslog("Export.class.php::create");
$this->db->begin();
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'export_model (';
$sql.= 'label, type, field)';
$sql.= " VALUES ('".$this->model_name."', '".$this->datatoexport."', '".$this->hexa."')";
dolibarr_syslog("Export.class.php::create sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
$this->db->commit();
return 1;
}
else
{
$this->error=$this->db->error()." sql=".$sql;
$this->db->rollback();
return -1;
}
}
/**
* \brief Recupère de la base les caractéristiques d'un modele d'export
* \param rowid id du modéle à récupérer
*/
function fetch($id)
{
$sql = 'SELECT em.rowid, em.field, em.label, em.type';
$sql.= ' FROM '.MAIN_DB_PREFIX.'export_model as em';
$sql.= ' WHERE em.rowid = '.$id;
dolibarr_syslog("Export::fetch sql=$sql");
$result = $this->db->query($sql) ;
if ($result)
{
$obj = $this->db->fetch_object($result);
if ($obj)
{
$this->id = $obj->rowid;
$this->hexa = $obj->field;
$this->model_name = $obj->label;
$this->datatoexport = $obj->type;
* \brief Recupère de la base les caractéristiques d'un modele d'export
* \param rowid id du modéle à récupérer
*/
function fetch($id)
{
$sql = 'SELECT em.rowid, em.field, em.label, em.type';
$sql.= ' FROM '.MAIN_DB_PREFIX.'export_model as em';
$sql.= ' WHERE em.rowid = '.$id;
return 1;
}
else
{
$this->error="Model not found";
return -2;
}
}
else
{
dolibarr_print_error($this->db);
return -3;
}
}
dolibarr_syslog("Export::fetch sql=$sql");
$result = $this->db->query($sql) ;
if ($result)
{
$obj = $this->db->fetch_object($result);
if ($obj)
{
$this->id = $obj->rowid;
$this->hexa = $obj->field;
$this->model_name = $obj->label;
$this->datatoexport = $obj->type;
return 1;
}
else
{
$this->error="Model not found";
return -2;
}
}
else
{
dolibarr_print_error($this->db);
return -3;
}
}
}

View File

@ -135,13 +135,38 @@ if ($action == 'builddoc')
}
}
if ($step == 2 && $action == 'add')
if ($action == 'add_export_model')
{
$objexport->model_name = $export_name;
$objexport->datatoexport = $datatoexport;
$objexport->hexa = $hexa;
$result = $objexport->create($user);
if ($export_name)
{
asort($array_selected);
// Set save string
$hexa='';
foreach($array_selected as $key=>$val)
{
if ($hexa) $hexa.=',';
$hexa.=$key;
}
$objexport->model_name = $export_name;
$objexport->datatoexport = $datatoexport;
$objexport->hexa = $hexa;
$result = $objexport->create($user);
if ($result >= 0)
{
$mesg='<div class="ok">'.$langs->trans("ExportModelSaved",$objexport->model_name).'</div>';
}
else
{
$mesg='<div class="error">'.$objexport->error.'</div>';
}
}
else
{
$mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("ExportModelName")).'</div>';
}
}
if ($step == 2 && $action == 'select_model')
@ -151,7 +176,14 @@ if ($step == 2 && $action == 'select_model')
$result = $objexport->fetch($exportmodelid);
if ($result > 0)
{
$binaire = hexbin($objexport->hexa);
$fieldsarray=split(',',$objexport->hexa);
$i=1;
foreach($fieldsarray as $val)
{
$array_selected[$val]=$i;
$i++;
}
$_SESSION["export_selected_fields"]=$array_selected;
}
}
@ -219,6 +251,9 @@ if ($step == 1 || ! $datatoexport)
print '</table>';
print '</div>';
if ($mesg) print $mesg;
}
if ($step == 2 && $datatoexport)
@ -254,23 +289,23 @@ if ($step == 2 && $datatoexport)
print '<tr><td width="25%">'.$langs->trans("DatasetToExport").'</td>';
print '<td>'.$objexport->array_export_label[0].'</td></tr>';
print '</table>';
print '<br>';
// Liste déroulante des modéles d'export
print '<tr><td width="25%">'.$langs->trans("ExportModel").'</td>';
print '<form action="export.php" method="post">';
print '<input type="hidden" name="action" value="select_model">';
print '<input type="hidden" name="step" value="2">';
print '<input type="hidden" name="datatoexport" value="'.$datatoexport.'">';
print '<td>';
print '<table><tr><td>';
print $langs->trans("SelectExportFields");
print '</td><td>';
$html->select_export_model($exportmodelid,'exportmodelid',$datatoexport,1);
print '<input type="submit" class="button" value="'.$langs->trans("Select").'">';
print '</td></form></tr>';
print '</td></tr></table>';
print '</form>';
print '</table>';
print '<br>';
print $langs->trans("SelectExportFields").'<br>';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Entities").'</td>';
@ -298,26 +333,19 @@ if ($step == 2 && $datatoexport)
$var=!$var;
print "<tr $bc[$var]>";
$modelchoice = substr($binaire,$i,1);
$i++;
$entity=$objexport->array_export_entities[0][$code];
$entityicon=$entitytoicon[$entity]?$entitytoicon[$entity]:$entity;
$entitylang=$entitytolang[$entity]?$entitytolang[$entity]:$entity;
print '<td>'.img_object('',$entityicon).' '.$langs->trans($entitylang).'</td>';
if (isset($array_selected[$code]) && $array_selected[$code] || $modelchoice == 1)
if ((isset($array_selected[$code]) && $array_selected[$code]) || $modelchoice == 1)
{
// Champ sélectionné
print '<td>&nbsp;</td>';
print '<td><a href="'.$_SERVER["PHP_SELF"].'?step=2&datatoexport='.$datatoexport.'&action=unselectfield&field='.$code.'">'.img_left().'</a></td>';
print '<td>'.$langs->trans($label).' ('.$code.')</td>';
if ($modelchoice == 1)
{
$array_selected[$code]=sizeof($array_selected)+1;
$_SESSION["export_selected_fields"]=$array_selected;
}
$bit=1;
}
else
@ -336,7 +364,9 @@ if ($step == 2 && $datatoexport)
print '</table>';
print '</div>';
if ($mesg) print $mesg;
/*
* Barre d'action
*
@ -344,22 +374,12 @@ if ($step == 2 && $datatoexport)
print '<div class="tabsAction">';
if (sizeof($array_selected))
{
print '<form action="export.php" method="post">';
print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="step" value="2">';
print '<input type="hidden" name="datatoexport" value="'.$datatoexport.'">';
print '<input type="hidden" name="hexa" value="'.$hexa.'">';
print '<table class="noborder" width="100%"><tr>';
print '<td><input name="export_name" size="20" value="">';
print '<input type="submit" class="button" value="'.$langs->trans("Save").'">';
print '</form>';
print '<a class="butAction" href="export.php?step=3&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>';
print '</td></tr>';
print '</table>';
}
{
print '<a class="butAction" href="export.php?step=3&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>';
}
print '</div>';
}
if ($step == 3 && $datatoexport)
@ -452,10 +472,39 @@ if ($step == 3 && $datatoexport)
print '</tr>';
}
print '</table>';
print '</table>';
// Bouton exports profils
if (sizeof($array_selected))
{
print '<br>';
print $langs->trans("SaveExportModel");
print '<form class="nocellnopadd" action="export.php" method="post">';
print '<input type="hidden" name="action" value="add_export_model">';
print '<input type="hidden" name="step" value="'.$step.'">';
print '<input type="hidden" name="datatoexport" value="'.$datatoexport.'">';
print '<input type="hidden" name="hexa" value="'.$hexa.'">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("ExportModelName").'</td>';
print '<td>&nbsp;</td>';
print '</tr>';
$var=false;
print '<tr '.$bc[$var].'>';
print '<td><input name="export_name" size="32" value=""></td><td>';
print '<input type="submit" class="button" value="'.$langs->trans("Save").'">';
print '</td></tr>';
print '</table>';
print '</form>';
}
print '</div>';
if ($mesg) print $mesg;
/*
* Barre d'action
@ -469,6 +518,7 @@ if ($step == 3 && $datatoexport)
}
print '</div>';
}
if ($step == 4 && $datatoexport)

View File

@ -3,7 +3,10 @@ ExportsArea=Exports area
NewExport=New export
ExportableDatas=Exportable dataset
SelectExportDataSet=Choose dataset you want to export...
SelectExportFields=Choose fields you want to export...
SelectExportFields=Choose fields you want to export, or select a predefined export profil
SaveExportModel=Save this export profile if you plan to reuse it later...
ExportModelName=Export profile name
ExportModelSaved=Export profile saved under name <b>%s</b>.
ExportableFields=Exportable fields
ExportedFields=Exported fields
DatasetToExport=Dataset to export

View File

@ -3,7 +3,10 @@ ExportsArea=Espace exports
NewExport=Nouvel export
ExportableDatas=Lot de données exportables
SelectExportDataSet=Choisissez un lot prédéfini de données que vous désirez exporter...
SelectExportFields=Choisissez les champs à exporter...
SelectExportFields=Choisissez les champs à exporter, ou choisissez un profil d'export prédéfini
SaveExportModel=Enregistrer ce profil d'export si vous désirez le réutiliser utlétieurement...
ExportModelName=Nom du profil d'export
ExportModelSaved=Profil d'export sauvé sous le nom <b>%s</b>.
ExportableFields=Champs exportables
ExportedFields=Champs à exporter
DatasetToExport=Lot de données à exporter

View File

@ -914,9 +914,11 @@ UPDATE llx_facture SET type=0 where type=3;
create table llx_export_model
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
label varchar(50) NOT NULL,
type varchar(20) NOT NULL,
field varchar(20) NOT NULL
label varchar(50) NOT NULL,
type varchar(20) NOT NULL,
field text
)type=innodb;
ALTER table llx_export_model add fk_user integer DEFAULT 0 NOT NULL after rowid;
ALTER TABLE llx_export_model ADD UNIQUE uk_export_model (label);

View File

@ -26,7 +26,8 @@
create table llx_export_model
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
label varchar(50) NOT NULL,
type varchar(20) NOT NULL,
field varchar(20) NOT NULL
fk_user integer DEFAULT 0 NOT NULL,
label varchar(50) NOT NULL,
type varchar(20) NOT NULL,
field text NOT NULL
)type=innodb;