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 ''; print ''; print ''; - print ''; - print ''; + //print ''; + //print ''; print ''; $var=true; @@ -537,7 +556,14 @@ if ($step == 3 && $datatoexport) print ''; - print ''; + print ''; print ''; - print ''; - - print ''; + //print ''; + //print ''; 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 ''; @@ -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 ''; 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
'.$langs->trans("Entities").''.$langs->trans("ExportedFields").''.$langs->trans("Position").' '.$langs->trans("FieldsTitle").' '.$langs->trans("FieldsTitle").'
'.img_object('',$entityicon).' '.$langs->trans($entitylang).''.$langs->trans($objexport->array_export_fields[0][$code]).' ('.$code.')'; + $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 $value.' '; @@ -546,9 +572,8 @@ if ($step == 3 && $datatoexport) if ($value > 1) print ''.img_up().''; print ' '.$langs->trans($objexport->array_export_fields[0][$code]).' '.$langs->trans($objexport->array_export_fields[0][$code]).'
'.$list.'
'; print $langs->trans("Field").' '.$pos; - if (isset($fieldssource[$pos]['example1'])) print ' ('.$fieldssource[$pos]['example1'].')'; + if (! empty($fieldssource[$pos]['example1'])) print ' ('.$fieldssource[$pos]['example1'].')'; print '