diff --git a/htdocs/exports/export.class.php b/htdocs/exports/export.class.php
index 7623bd2eceb..7388c2d3a6c 100644
--- a/htdocs/exports/export.class.php
+++ b/htdocs/exports/export.class.php
@@ -171,12 +171,41 @@ class Export
}
}
+
/**
- * \brief Lance la generation du fichier
- * \param user User qui exporte
- * \param model Modele d'export
- * \param datatoexport Lot de donnee a exporter
- * \param array_selected Tableau des champs a exporter
+ * \brief Build the sql export request
+ * \param indice Indice of export
+ * \param array_selected Filter on array of fields to export
+ * \remarks Les tableaux array_export_xxx sont deja chargees pour le bon datatoexport
+ * aussi le parametre datatoexport est inutilise
+ */
+ function build_sql($indice,$array_selected)
+ {
+ // Build the sql request
+ $sql=$this->array_export_sql_start[$indice];
+ $i=0;
+ //print_r($array_selected);
+ foreach ($this->array_export_alias[$indice] as $key => $value)
+ {
+ if (! array_key_exists($key, $array_selected)) continue; // Field not selected
+
+ if ($i > 0) $sql.=', ';
+ else $i++;
+ $newfield=$key.' as '.$value;
+
+ $sql.=$newfield;
+ }
+ $sql.=$this->array_export_sql_end[$indice];
+
+ return $sql;
+ }
+
+ /**
+ * \brief Build export file
+ * \param user User that export
+ * \param model Export format
+ * \param datatoexport Name of dataset to export
+ * \param array_selected Filter on array of fields to export
* \remarks Les tableaux array_export_xxx sont deja chargees pour le bon datatoexport
* aussi le parametre datatoexport est inutilise
*/
@@ -196,21 +225,7 @@ class Export
require_once($dir.$file);
$objmodel = new $classname($db);
- // Build the sql request
- $sql=$this->array_export_sql_start[$indice];
- $i=0;
- //print_r($array_selected);
- foreach ($this->array_export_alias[$indice] as $key => $value)
- {
- if (! array_key_exists($key, $array_selected)) continue; // Field not selected
-
- if ($i > 0) $sql.=', ';
- else $i++;
- $newfield=$key.' as '.$value;
-
- $sql.=$newfield;
- }
- $sql.=$this->array_export_sql_end[$indice];
+ $sql=$this->build_sql($indice,$array_selected);
// Run the sql
$this->sqlusedforexport=$sql;
diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php
index 9812d4640a8..bd3281d1f8d 100644
--- a/htdocs/exports/export.php
+++ b/htdocs/exports/export.php
@@ -379,7 +379,7 @@ if ($step == 2 && $datatoexport)
print '
';
print '| '.$langs->trans("Entities").' | ';
print ''.$langs->trans("ExportableFields").' | ';
- print '';
+ print ' | ';
print ''.$langs->trans("All")."";
print '/';
print ''.$langs->trans("None")."";
@@ -389,6 +389,8 @@ if ($step == 2 && $datatoexport)
// Champs exportables
$fieldsarray=$objexport->array_export_fields[0];
+ // Select request if all fields are selected
+ $sqlmaxforexport=$objexport->build_sql(0,array());
# $this->array_export_module[0]=$module;
# $this->array_export_code[0]=$module->export_code[$r];
@@ -418,13 +420,27 @@ if ($step == 2 && $datatoexport)
// Selected fields
print ' | | ';
print ''.img_left().' | ';
- print ''.$langs->trans($label).' ('.$code.') | ';
+ print '';
+ $text=$langs->trans($label);
+ $tablename=getablenamefromfield($code,$sqlmaxforexport);
+ $htmltext =$langs->trans("Table").": ".$tablename." ";
+ $htmltext.=$langs->trans("Field").': '.$code." ";
+ print $html->textwithpicto($text,$htmltext);
+ //print ' ('.$code.')';
+ print ' | ';
$bit=1;
}
else
{
// Fields not selected
- print ''.$langs->trans($label).' ('.$code.') | ';
+ print '';
+ $text=$langs->trans($label);
+ $tablename=getablenamefromfield($code,$sqlmaxforexport);
+ $htmltext =$langs->trans("Table").": ".$tablename." ";
+ $htmltext.=$langs->trans("Field").': '.$code." ";
+ print $html->textwithpicto($text,$htmltext);
+ //print ' ('.$code.')';
+ print ' | ';
print ''.img_right().' | ';
print ' | ';
$bit=0;
@@ -452,7 +468,7 @@ if ($step == 2 && $datatoexport)
}
else
{
- print ''.$langs->trans("NextStep").'';
+ print ''.$langs->trans("NextStep").'';
}
print '';
@@ -506,7 +522,7 @@ if ($step == 3 && $datatoexport)
$list='';
foreach($array_selected as $code=>$value)
{
- $list.=($list?',':'');
+ $list.=($list?', ':'');
$list.=$langs->trans($objexport->array_export_fields[0][$code]);
}
print ''.$list.' |
';
@@ -514,6 +530,9 @@ if ($step == 3 && $datatoexport)
print '';
print '
';
+ // Select request if all fields are selected
+ $sqlmaxforexport=$objexport->build_sql(0,array());
+
print $langs->trans("ChooseFieldsOrdersAndTitle").'
';
print '';
@@ -521,8 +540,8 @@ if ($step == 3 && $datatoexport)
print '| '.$langs->trans("Entities").' | ';
print ''.$langs->trans("ExportedFields").' | ';
print ''.$langs->trans("Position").' | ';
- print ' | ';
- print ''.$langs->trans("FieldsTitle").' | ';
+ //print ' | ';
+ //print ''.$langs->trans("FieldsTitle").' | ';
print '';
$var=true;
@@ -537,7 +556,14 @@ if ($step == 3 && $datatoexport)
print ''.img_object('',$entityicon).' '.$langs->trans($entitylang).' | ';
- print ''.$langs->trans($objexport->array_export_fields[0][$code]).' ('.$code.') | ';
+ print '';
+ $text=$langs->trans($objexport->array_export_fields[0][$code]);
+ $tablename=getablenamefromfield($code,$sqlmaxforexport);
+ $htmltext =$langs->trans("Table").": ".$tablename." ";
+ $htmltext.=$langs->trans("Field").': '.$code." ";
+ print $html->textwithpicto($text,$htmltext);
+ //print ' ('.$code.')';
+ print ' | ';
print '';
print $value.' ';
@@ -546,9 +572,8 @@ if ($step == 3 && $datatoexport)
if ($value > 1) print ''.img_up().'';
print ' | ';
- print ' | ';
-
- print ''.$langs->trans($objexport->array_export_fields[0][$code]).' | ';
+ //print ' | ';
+ //print ''.$langs->trans($objexport->array_export_fields[0][$code]).' | ';
print '';
}
@@ -684,7 +709,7 @@ if ($step == 4 && $datatoexport)
$list='';
foreach($array_selected as $code=>$label)
{
- $list.=($list?',':'');
+ $list.=($list?', ':'');
$list.=$langs->trans($objexport->array_export_fields[0][$code]);
}
print ''.$list.' | ';
@@ -763,4 +788,25 @@ print '
';
$db->close();
llxFooter('$Date$ - $Revision$');
+
+
+/**
+ * \brief Return table name of an alias. For this, we look for the "tablename as alias" in sql string.
+ * \param code Alias.Fieldname
+ * \param sqlmaxforexport SQL request to parse
+ */
+function getablenamefromfield($code,$sqlmaxforexport)
+{
+ $newsql=$sqlmaxforexport;
+ $newsql=eregi_replace('^.* FROM ','',$newsql);
+ $newsql=eregi_replace(' WHERE .*$','',$newsql);
+ $alias=eregi_replace('\..*$','',$code);
+ //print $newsql.' '.$alias;
+ if (eregi('([a-zA-Z_]+) as '.$alias.'[, \)]',$newsql,$reg))
+ {
+ return $reg[1];
+ }
+ else return '';
+}
+
?>
diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php
index 3fd2ce94edb..74a2357ea9b 100644
--- a/htdocs/imports/import.php
+++ b/htdocs/imports/import.php
@@ -1232,7 +1232,7 @@ function show_elem($fieldssource,$i,$pos,$key,$var)
print '';
print '';
print $langs->trans("Field").' '.$pos;
- if (isset($fieldssource[$pos]['example1'])) print ' ('.$fieldssource[$pos]['example1'].')';
+ if (! empty($fieldssource[$pos]['example1'])) print ' ('.$fieldssource[$pos]['example1'].')';
print ' | ';
}
print '';
diff --git a/htdocs/includes/modules/export/export_csv.modules.php b/htdocs/includes/modules/export/export_csv.modules.php
index cd12da1be73..b4966fbfa28 100644
--- a/htdocs/includes/modules/export/export_csv.modules.php
+++ b/htdocs/includes/modules/export/export_csv.modules.php
@@ -63,7 +63,7 @@ class ExportCsv extends ModeleExports
$this->id='csv'; // Same value then xxx in file name export_xxx.modules.php
$this->label='Csv'; // Label of driver
- $this->desc='Comma Separated Value file format (.csv). This is a text file format.
Fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->enclosure.' ]. Escape character to escape round character is [ '.$this->escape.' ].';
+ $this->desc='Comma Separated Value file format (.csv).
This is a text file format where fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->enclosure.' ]. Escape character to escape round character is [ '.$this->escape.' ].';
$this->extension='csv'; // Extension for generated file by this driver
$this->picto='mime/other'; // Picto
$ver=split(' ','$Revision$');
diff --git a/htdocs/includes/modules/export/export_excel.modules.php b/htdocs/includes/modules/export/export_excel.modules.php
index e0b3f9ebda1..ebf0e83baf7 100644
--- a/htdocs/includes/modules/export/export_excel.modules.php
+++ b/htdocs/includes/modules/export/export_excel.modules.php
@@ -1,5 +1,5 @@
+/* Copyright (C) 2006-2009 Laurent Destailleur
*
* 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
@@ -18,11 +18,11 @@
*/
/**
- \file htdocs/includes/modules/export/export_excel.modules.php
- \ingroup export
- \brief Fichier de la classe permettant de g�n�rer les export au format Excel
- \author Laurent Destailleur
- \version $Id$
+ * \file htdocs/includes/modules/export/export_excel.modules.php
+ * \ingroup export
+ * \brief Fichier de la classe permettant de g�n�rer les export au format Excel
+ * \author Laurent Destailleur
+ * \version $Id$
*/
require_once(DOL_DOCUMENT_ROOT."/includes/modules/export/modules_export.php");
@@ -32,10 +32,9 @@ require_once(PHP_WRITEEXCEL_PATH."/functions.writeexcel_utility.inc.php");
/**
- \class ExportExcel
- \brief Classe permettant de g�n�rer les export au format Excel
+ * \class ExportExcel
+ * \brief Class to build export files with Excel format
*/
-
class ExportExcel extends ModeleExports
{
var $id;
@@ -53,8 +52,8 @@ class ExportExcel extends ModeleExports
/**
- \brief Constructeur
- \param db Handler acc�s base de donn�e
+ * \brief Constructor
+ * \param db databse handler
*/
function ExportExcel($db)
{
@@ -63,7 +62,7 @@ class ExportExcel extends ModeleExports
$this->id='excel'; // Same value then xxx in file name export_xxx.modules.php
$this->label='Excel'; // Label of driver
- $this->desc='Native Excel 95 file format (.xls)';
+ $this->desc='Excel file format (.xls)
This is native Excel 95 format.';
$this->extension='xls'; // Extension for generated file by this driver
$this->picto='mime/xls'; // Picto
$ver=split(' ','$Revision$');
diff --git a/htdocs/includes/modules/export/export_tsv.modules.php b/htdocs/includes/modules/export/export_tsv.modules.php
index 2fdb32c39a4..56d1238985e 100644
--- a/htdocs/includes/modules/export/export_tsv.modules.php
+++ b/htdocs/includes/modules/export/export_tsv.modules.php
@@ -58,7 +58,7 @@ class ExportTsv extends ModeleExports
$this->id='tsv'; // Same value then xxx in file name export_xxx.modules.php
$this->label='Tsv'; // Label of driver
- $this->desc='Tab Separated Value file format (.tsv)';
+ $this->desc='Tab Separated Value file format (.tsv)
This is a text file format where fields are separated by separator [tab].';
$this->extension='tsv'; // Extension for generated file by this driver
$this->picto='mime/other'; // Picto
$ver=split(' ','$Revision$');
diff --git a/htdocs/includes/modules/import/import_csv.modules.php b/htdocs/includes/modules/import/import_csv.modules.php
index ac361ba24bf..be7a3677058 100644
--- a/htdocs/includes/modules/import/import_csv.modules.php
+++ b/htdocs/includes/modules/import/import_csv.modules.php
@@ -63,7 +63,7 @@ class ImportCsv extends ModeleImports
$this->id='csv'; // Same value then xxx in file name export_xxx.modules.php
$this->label='Csv'; // Label of driver
- $this->desc='Comma Separated Value file format (.csv). This is a text file format.
Fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->enclosure.' ]. Escape character to escape round character is [ '.$this->escape.' ].';
+ $this->desc='Comma Separated Value file format (.csv).
This is a text file format where fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->enclosure.' ]. Escape character to escape round character is [ '.$this->escape.' ].';
$this->extension='csv'; // Extension for generated file by this driver
$this->picto='mime/other'; // Picto
$ver=split(' ','$Revision$');
diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang
index 6a9f987c7dc..02b77f3d188 100644
--- a/htdocs/langs/en_US/exports.lang
+++ b/htdocs/langs/en_US/exports.lang
@@ -29,7 +29,7 @@ ChooseFieldsOrdersAndTitle=Choose fields order...
FieldsOrder=Fields order
FieldsTitle=Fields title
ChooseExportFormat=Choose export format
-NowClickToGenerateToBuildExportFile=Now, click on "Generate" to build export file...
+NowClickToGenerateToBuildExportFile=Now, select file format in combo box and click on "Generate" to build export file...
AvailableFormats=Available formats
LibraryShort=Library
LibraryUsed=Library used
@@ -81,3 +81,4 @@ FieldNeedSource=This fiels in database require a data from source file
SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file
InformationOnSourceFile=Informations on source file
InformationOnTargetTables=Informations on target fields
+SelectAtLeastOneField=Switch at least one source field in the column of fields to export
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/exports.lang b/htdocs/langs/fr_FR/exports.lang
index 742b0e4ae82..8e94647a617 100644
--- a/htdocs/langs/fr_FR/exports.lang
+++ b/htdocs/langs/fr_FR/exports.lang
@@ -29,7 +29,7 @@ ChooseFieldsOrdersAndTitle=Choisissez l'ordre des champs...
FieldsOrder=Ordre des champs
FieldsTitle=Titre champs
ChooseExportFormat=Choisissez le format d'export
-NowClickToGenerateToBuildExportFile=Maintenant, cliquez sur "Générer" pour générer le fichier export...
+NowClickToGenerateToBuildExportFile=Maintenant, sélectionner le format d'export dans la liste déroulante et cliquez sur "Générer" pour fabriquer le fichier export...
AvailableFormats=Formats dispo.
LibraryShort=Librairie
LibraryUsed=Librairie utilisée
@@ -81,3 +81,4 @@ FieldNeedSource=Ce champ en base requiert obligatoirement une donnée source
SomeMandatoryFieldHaveNoSource=Certains champs obligatoires n'ont pas de champ source issus du fichier
InformationOnSourceFile=Informations sur le fichier source
InformationOnTargetTables=Informations sur les champs cibles
+SelectAtLeastOneField=Basculer au moins un champ source dans la colonne des champs à exporter
\ No newline at end of file