Revert "NEW : Import with select boxes"

This commit is contained in:
Laurent Destailleur 2022-04-13 16:21:25 +02:00 committed by GitHub
parent 914b037a9a
commit 90366b1b81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 142 deletions

View File

@ -136,14 +136,13 @@ $step = (GETPOST('step') ? GETPOST('step') : 1);
$import_name = GETPOST('import_name');
$hexa = GETPOST('hexa');
$importmodelid = GETPOST('importmodelid');
$excludefirstline = (GETPOST('excludefirstline') ? GETPOST('excludefirstline') : 2);
$excludefirstline = (GETPOST('excludefirstline') ? GETPOST('excludefirstline') : 1);
$endatlinenb = (GETPOST('endatlinenb') ? GETPOST('endatlinenb') : '');
$updatekeys = (GETPOST('updatekeys', 'array') ? GETPOST('updatekeys', 'array') : array());
$separator = (GETPOST('separator', 'nohtml') ? GETPOST('separator', 'nohtml') : (!empty($conf->global->IMPORT_CSV_SEPARATOR_TO_USE) ? $conf->global->IMPORT_CSV_SEPARATOR_TO_USE : ','));
$enclosure = (GETPOST('enclosure', 'nohtml') ? GETPOST('enclosure', 'nohtml') : '"');
$separator_used = str_replace('\t', "\t", $separator);
$objimport = new Import($db);
$objimport->load_arrays($user, ($step == 1 ? '' : $datatoimport));
@ -161,7 +160,7 @@ foreach ($fieldsarray as $elem) {
$tabelem = explode('=', $elem, 2);
$key = $tabelem[0];
$val = (isset($tabelem[1]) ? $tabelem[1] : '');
if ($key && $val && ($key > 0 && $step != 4)) {
if ($key && $val) {
$array_match_file_to_database[$key] = $val;
}
}
@ -326,16 +325,13 @@ if ($action == 'saveorder') {
$pos = 0;
foreach ($fieldsarray as $fieldnb) { // For each elem in list. fieldnb start from 1 to ...
// Get name of database fields at position $pos and put it into $namefield
$posbis = 0;
$namefield = '';
$posbis = 0; $namefield = '';
foreach ($fieldstarget as $key => $val) { // key: val:
//dol_syslog('AjaxImport key='.$key.' val='.$val);
if ($posbis < $pos) {
$posbis++;
continue;
}
// We found the key of targets that is at position pos
$namefield = $key;
//dol_syslog('AjaxImport Field name found for file field nb '.$fieldnb.'='.$namefield);
@ -1008,7 +1004,7 @@ if ($step == 4 && $datatoimport) {
$lefti = 1;
foreach ($array_match_file_to_database as $key => $val) {
$var = !$var;
show_elem($fieldssource, $key, $val, $var, 1, '', $listofkeys); // key is field number in source file
show_elem($fieldssource, $key, $val, $var); // key is field number in source file
//print '> '.$lefti.'-'.$key.'-'.$val;
$listofkeys[$key] = 1;
$fieldsplaced[$key] = 1;
@ -1027,7 +1023,7 @@ if ($step == 4 && $datatoimport) {
while ($lefti <= $num) {
$var = !$var;
$newkey = getnewkey($fieldssource, $listofkeys);
show_elem($fieldssource, $newkey, '', $var, 1, '', $listofkeys); // key start after field number in source file
show_elem($fieldssource, $newkey, '', $var); // key start after field number in source file
//print '> '.$lefti.'-'.$newkey;
$listofkeys[$key] = 1;
$lefti++;
@ -1041,14 +1037,11 @@ if ($step == 4 && $datatoimport) {
print '</td><td width="50%">';
// List of target fields
// $height = '24px'; //needs px for css height attribute below
$height = '30px';
$height = '24px'; //needs px for css height attribute below
$i = 0;
$mandatoryfieldshavesource = true;
$fieldselect = 1;
print '<table width="100%" class="nobordernopadding">';
$pos = 1;
print '<table width="100%" class="nobordernopadding">';
foreach ($fieldstarget as $code => $label) {
print '<tr class="oddeven" style="height:'.$height.'">';
@ -1058,7 +1051,7 @@ if ($step == 4 && $datatoimport) {
$tablealias = preg_replace('/(\..*)$/i', '', $code);
$tablename = $objimport->array_import_tables[0][$tablealias];
$entityicon = !empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ...
$entityicon = $entitytoicon[$entity] ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ...
$entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ...
print '<td class="nowraponall" style="font-weight: normal">=>'.img_object('', $entityicon).' '.$langs->trans($entitylang).'</td>';
@ -1078,7 +1071,7 @@ if ($step == 4 && $datatoimport) {
print '</td>';
// Info field
print '<td class="nowraponall" style="font-weight:normal; text-align:right">';
$filecolumn = !empty($array_match_database_to_file[$code])?$array_match_database_to_file[$code]:0;
$filecolumn = $array_match_database_to_file[$code];
// Source field info
$htmltext = '<b><u>'.$langs->trans("FieldSource").'</u></b><br>';
if ($filecolumn > count($fieldssource)) {
@ -1098,7 +1091,7 @@ if ($step == 4 && $datatoimport) {
}
// Source required
$htmltext .= $langs->trans("SourceRequired").': <b>'.yn(preg_match('/\*$/', $label)).'</b><br>';
$example = !empty($objimport->array_import_examplevalues[0][$code])?$objimport->array_import_examplevalues[0][$code]:"";
$example = $objimport->array_import_examplevalues[0][$code];
// Example
if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion
if ($example) {
@ -1136,7 +1129,6 @@ if ($step == 4 && $datatoimport) {
print '</td>';
print '</tr>';
$fieldselect++;
}
print '</table>';
@ -1155,7 +1147,7 @@ if ($step == 4 && $datatoimport) {
if (empty($fieldsplaced[$key])) {
//
$nbofnotimportedfields++;
show_elem($fieldssource, $key, '', $var, 0, 'nostyle', $listofkeys);
show_elem($fieldssource, $key, '', $var, 'nostyle');
//print '> '.$lefti.'-'.$key;
$listofkeys[$key] = 1;
$lefti++;
@ -1164,7 +1156,7 @@ if ($step == 4 && $datatoimport) {
// Print one more empty field
$newkey = getnewkey($fieldssource, $listofkeys);
show_elem($fieldssource, $newkey, '', $var, 1, 'nostyle', $listofkeys);
show_elem($fieldssource, $newkey, '', $var, 'nostyle');
//print '> '.$lefti.'-'.$newkey;
$listofkeys[$newkey] = 1;
$nbofnotimportedfields++;
@ -1177,7 +1169,7 @@ if ($step == 4 && $datatoimport) {
$i = 0;
while ($i < $nbofnotimportedfields) {
// Print empty cells
show_elem('', '', 'none', $var, 0, 'nostyle', $listofkeys);
show_elem('', '', 'none', $var, 'nostyle');
$i++;
}
print '</td></tr>';
@ -1188,51 +1180,35 @@ if ($step == 4 && $datatoimport) {
if ($conf->use_javascript_ajax) {
print '<script type="text/javascript">';
// print 'jQuery(function() {
// jQuery("#left, #right").sortable({
// /* placeholder: \'ui-state-highlight\', */
// handle: \'.boxhandle\',
// revert: \'invalid\',
// items: \'.box\',
// containment: \'.fiche\',
// connectWith: \'.connectedSortable\',
// stop: function(event, ui) {
// updateOrder();
// }
// });
// });
// ';
print '$(".import_select").on("change",function(){
updateOrder2();
})';
print 'jQuery(function() {
jQuery("#left, #right").sortable({
/* placeholder: \'ui-state-highlight\', */
handle: \'.boxhandle\',
revert: \'invalid\',
items: \'.box\',
containment: \'.fiche\',
connectWith: \'.connectedSortable\',
stop: function(event, ui) {
updateOrder();
}
});
});
';
print "\n";
// print 'function updateOrder(){'."\n";
// print 'var left_list = cleanSerialize(jQuery("#left").sortable("serialize" ));'."\n";
// //print 'var right_list = cleanSerialize(jQuery("#right").sortable("serialize" ));'."\n";
// print 'var boxorder = \'A:\' + left_list;'."\n";
// //print 'var boxorder = \'A:\' + left_list + \'-B:\' + right_list;'."\n";
// //print 'alert(\'boxorder=\' + boxorder);';
// //print 'var userid = \''.$user->id.'\';'."\n";
// //print 'var datatoimport = "'.$datatoimport.'";'."\n";
// // print 'jQuery.ajax({ url: "ajaximport.php?step=4&boxorder=" + boxorder + "&userid=" + userid + "&datatoimport=" + datatoimport,
// // async: false
// // });'."\n";
// // Now reload page
// print 'var newlocation= \''.$_SERVER["PHP_SELF"].'?step=4'.$param.'&action=saveorder&token='.newToken().'&boxorder=\' + boxorder;'."\n";
// //print 'alert(newlocation);';
// print 'window.location.href=newlocation;'."\n";
// print '}'."\n";
print 'function updateOrder2(){'."\n";
print 'var tmpboxorder = \'A:\''."\n";
print '$(".import_select").each(function(){'."\n";
print 'tmpboxorder = tmpboxorder + $(this).val() + \',\'';
print '});'."\n";
print 'boxorder = tmpboxorder.slice(0,-1)'."\n";
print 'function updateOrder(){'."\n";
print 'var left_list = cleanSerialize(jQuery("#left").sortable("serialize" ));'."\n";
//print 'var right_list = cleanSerialize(jQuery("#right").sortable("serialize" ));'."\n";
print 'var boxorder = \'A:\' + left_list;'."\n";
//print 'var boxorder = \'A:\' + left_list + \'-B:\' + right_list;'."\n";
//print 'alert(\'boxorder=\' + boxorder);';
//print 'var userid = \''.$user->id.'\';'."\n";
//print 'var datatoimport = "'.$datatoimport.'";'."\n";
// print 'jQuery.ajax({ url: "ajaximport.php?step=4&boxorder=" + boxorder + "&userid=" + userid + "&datatoimport=" + datatoimport,
// async: false
// });'."\n";
// Now reload page
print 'var newlocation= \''.$_SERVER["PHP_SELF"].'?step=4'.$param.'&action=saveorder&token='.newToken().'&boxorder=\' + boxorder;'."\n";
//print 'alert(newlocation);';
print 'window.location.href=newlocation;'."\n";
print '}'."\n";
print '</script>'."\n";
@ -1495,20 +1471,6 @@ if ($step == 5 && $datatoimport) {
if ($action == 'launchsimu') {
print ' &nbsp; <a href="'.$_SERVER["PHP_SELF"].'?step=5'.$param.'">'.$langs->trans("Modify").'</a>';
}
if ($excludefirstline == 2) {
print $form->textwithpicto("", $langs->trans("WarningFirstImportedLine", $excludefirstline), 1, 'warning', "warningexcludefirstline");
print '<script>
$( document ).ready(function() {
$("input[name=\'excludefirstline\']").on("change",function(){
if($(this).val() <= 1){
$(".warningexcludefirstline").hide();
}else{
$(".warningexcludefirstline").show();
}
})
});
</script>';
}
print '</td></tr>';
// Keys for data UPDATE (not INSERT of new data)
@ -2131,21 +2093,18 @@ $db->close();
/**
* Function to put the movable box of a source field
*
* @param array $fieldssource List of source fields
* @param int $pos Pos
* @param string $key Key
* @param boolean $var Line style (odd or not)
* @param boolean $isimportedfield Verify if it's an imported field
* @param int $nostyle Hide style
* @param array $listofkeys List of keys for select boxes
* @param array $fieldssource List of source fields
* @param int $pos Pos
* @param string $key Key
* @param boolean $var Line style (odd or not)
* @param int $nostyle Hide style
* @return void
*/
function show_elem($fieldssource, $pos, $key, $var, $isimportedfield, $nostyle = '', &$listofkeys = array())
function show_elem($fieldssource, $pos, $key, $var, $nostyle = '')
{
global $langs, $bc;
// $height = '24px';
$height = '30px';
$height = '24px';
if ($key == 'none') {
//stop multiple duplicate ids with no number
@ -2162,7 +2121,7 @@ function show_elem($fieldssource, $pos, $key, $var, $isimportedfield, $nostyle =
if ($pos && $pos > count($fieldssource)) { // No fields
print '<tr'.($nostyle ? '' : ' '.$bc[$var]).' style="height:'.$height.'">';
print '<td class="nocellnopadding" width="16" style="font-weight: normal">';
//print img_picto(($pos > 0 ? $langs->trans("MoveField", $pos) : ''), 'grip_title', 'class="boxhandle" style="cursor:move;"');
print img_picto(($pos > 0 ? $langs->trans("MoveField", $pos) : ''), 'grip_title', 'class="boxhandle" style="cursor:move;"');
print '</td>';
print '<td style="font-weight: normal">';
print $langs->trans("NoFields");
@ -2177,65 +2136,22 @@ function show_elem($fieldssource, $pos, $key, $var, $isimportedfield, $nostyle =
print '&nbsp;';
print '</td>';
print '</tr>';
} elseif (empty($isimportedfield)) {
$example = !empty($fieldssource[$pos]['example1'])?$fieldssource[$pos]['example1']:"";
if ($example) {
if (!utf8_check($example)) {
$example = utf8_encode($example);
}
print '<tr'.($nostyle ? '' : ' '.$bc[$var]).' style="height:'.$height.'">';
print '<td class="nocellnopadding" width="16" style="font-weight: normal">';
print '&nbsp;';
print '</td>';
print '<td style="font-weight: normal">';
print $langs->trans("EmptyField").':&nbsp;';
print ' (<i>'.$example.'</i>)';
print '</td>';
print '</tr>';
}
} else {
// Print field of source file
print '<tr'.($nostyle ? '' : ' '.$bc[$var]).' style="height:'.$height.'">';
print '<td class="nocellnopadding" width="16" style="font-weight: normal">';
// The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object
//print img_picto($langs->trans("MoveField", $pos), 'grip_title', 'class="boxhandle" style="cursor:move;"');
print img_picto($langs->trans("MoveField", $pos), 'grip_title', 'class="boxhandle" style="cursor:move;"');
print '</td>';
print '<td class="nowraponall" width="100" style="font-weight: normal">';
$example = !empty($fieldssource[$pos]['example1'])?$fieldssource[$pos]['example1']:"";
if ($example != "") {
print $langs->trans("Field").' '.$pos.':&nbsp;';
} else {
print $langs->trans("EmptyField").':&nbsp;';
}
print '<td class="nowraponall" style="font-weight: normal">';
print $langs->trans("Field").' '.$pos;
$example = $fieldssource[$pos]['example1'];
if ($example) {
if (!utf8_check($example)) {
$example = utf8_encode($example);
}
}
$nameselect = ($pos > 0) ? $pos : (-$pos);
print '<td class="nowraponall" style="font-weight: normal">';
print '<select class="import_select flat" style="width:100%;" autocomplete="off" name="selectfield_'.$nameselect.'">';
$valueemptyoption = ($pos < 0) ? $pos : (-$pos);
print '<option value="'.$valueemptyoption.'">&nbsp;</option>';
if ($example != "") {
print '<option selected value="'.$pos.'">';
print ' (<i>'.$example.'</i>)';
print '</option>';
}
foreach ($fieldssource as $newkey => $val) {
if (empty($listofkeys[$newkey])) {
$example = $fieldssource[$newkey]['example1'];
if ($example) {
if (!utf8_check($example)) {
$example = utf8_encode($example);
}
print '<option value="'.$newkey.'">';
print ' (<i>'.$example.'</i>)';
print '</option>';
}
}
}
print '</td>';
print '</td>';
print '</tr>';
}

View File

@ -8,7 +8,7 @@ ImportableDatas=Importable dataset
SelectExportDataSet=Choose dataset you want to export...
SelectImportDataSet=Choose dataset you want to import...
SelectExportFields=Choose the fields you want to export, or select a predefined export profile
SelectImportFields=Choose the source file fields you want to import and their target field in database by choosing the fields with the select box, or select a predefined import profile:
SelectImportFields=Choose the source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile:
NotImportedFields=Fields of source file not imported
SaveExportModel=Save your selections as an export profile/template (for reuse).
SaveImportModel=Save this import profile (for reuse) ...
@ -135,5 +135,3 @@ NbInsert=Number of inserted lines: %s
NbUpdate=Number of updated lines: %s
MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s
StocksWithBatch=Stocks and location (warehouse) of products with batch/serial number
WarningFirstImportedLine=The first line(s) will not be imported with the current selection
EmptyField=Empty field

View File

@ -8,7 +8,7 @@ ImportableDatas=Lot de données importables
SelectExportDataSet=Choisissez un lot prédéfini de données que vous désirez exporter…
SelectImportDataSet=Choisissez un lot prédéfini de données que vous désirez importer…
SelectExportFields=Choisissez les champs à exporter, ou choisissez un profil d'export prédéfini
SelectImportFields=Choisissez les champs du fichier source à importer et leur destination dans la base en utilisant les boîtes de sélection, ou choisissez un profil d'import prédéfini:
SelectImportFields=Choisissez les champs du fichier source à importer et leur destination dans la base en les déplaçant vers le haut ou vers le bas via l'ancre %s, ou choisissez un profil d'import prédéfini:
NotImportedFields=Champs du fichier source non importés
SaveExportModel=Enregistrer ce profil d'export (si vous désirez le réutiliser ultérieurement) …
SaveImportModel=Enregistrer ce profil d'import (si vous désirez le réutiliser ultérieurement) …
@ -135,5 +135,3 @@ NbInsert=Nombre de lignes insérées: %s
NbUpdate=Nombre de lignes mises à jour: %s
MultipleRecordFoundWithTheseFilters=Plusieurs enregistrements ont été trouvés avec ces filtres: %s
StocksWithBatch=Stocks et entrepôts des produits avec numéro de lot/série
WarningFirstImportedLine=Les première(s) ligne(s) ne seront pas importée(s) avec cette selection
EmptyField=Champ vide