import with selectbox
This commit is contained in:
parent
0674d062f8
commit
81e2383515
@ -167,6 +167,19 @@ foreach ($fieldsarray as $elem) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($array_match_file_to_database)) {
|
||||||
|
$serialized_array_match_file_to_database = isset($_SESSION["dol_array_match_file_to_database_select"]) ? $_SESSION["dol_array_match_file_to_database_select"] : '';
|
||||||
|
$array_match_file_to_database = array();
|
||||||
|
$fieldsarray = explode(',', $serialized_array_match_file_to_database);
|
||||||
|
foreach ($fieldsarray as $elem) {
|
||||||
|
$tabelem = explode('=', $elem, 2);
|
||||||
|
$key = $tabelem[0];
|
||||||
|
$val = (isset($tabelem[1]) ? $tabelem[1] : '');
|
||||||
|
if ($key && $val) {
|
||||||
|
$array_match_file_to_database[$key] = $val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
@ -356,7 +369,22 @@ if ($action == 'saveorder') {
|
|||||||
$_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database;
|
$_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database;
|
||||||
dol_syslog('dol_array_match_file_to_database='.$serialized_array_match_file_to_database);
|
dol_syslog('dol_array_match_file_to_database='.$serialized_array_match_file_to_database);
|
||||||
}
|
}
|
||||||
|
if ($action == 'saveselectorder') {
|
||||||
|
// Enregistrement de la position des champs
|
||||||
|
$serialized_array_match_file_to_database = '';
|
||||||
|
dol_syslog("selectorder=".GETPOST('selectorder'), LOG_DEBUG);
|
||||||
|
$selectorder = explode(",", GETPOST('selectorder'));
|
||||||
|
$fieldtarget = $fieldstarget = $objimport->array_import_fields[0];
|
||||||
|
foreach ($selectorder as $key => $code) {
|
||||||
|
$serialized_array_match_file_to_database .= $key.'='.$code;
|
||||||
|
$serialized_array_match_file_to_database .= ',';
|
||||||
|
}
|
||||||
|
$serialized_array_match_file_to_database = substr($serialized_array_match_file_to_database, 0, -1);
|
||||||
|
dol_syslog('dol_array_match_file_to_database_select='.$serialized_array_match_file_to_database);
|
||||||
|
$_SESSION["dol_array_match_file_to_database_select"] = $serialized_array_match_file_to_database;
|
||||||
|
echo "{}";
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -765,7 +793,18 @@ if ($step == 3 && $datatoimport) {
|
|||||||
|
|
||||||
|
|
||||||
// STEP 4: Page to make matching between source file and database fields
|
// STEP 4: Page to make matching between source file and database fields
|
||||||
if ($step == 4 && $datatoimport && !$selectimport) {
|
if ($step == 4 && $datatoimport && $selectimport) {
|
||||||
|
$serialized_array_match_file_to_database = isset($_SESSION["dol_array_match_file_to_database_select"]) ? $_SESSION["dol_array_match_file_to_database_select"] : '';
|
||||||
|
$array_match_file_to_database = array();
|
||||||
|
$fieldsarray = explode(',', $serialized_array_match_file_to_database);
|
||||||
|
foreach ($fieldsarray as $elem) {
|
||||||
|
$tabelem = explode('=', $elem, 2);
|
||||||
|
$key = $tabelem[0];
|
||||||
|
$val = (isset($tabelem[1]) ? $tabelem[1] : '');
|
||||||
|
if ($key && $val) {
|
||||||
|
$array_match_file_to_database[$key] = $val;
|
||||||
|
}
|
||||||
|
}
|
||||||
$model = $format;
|
$model = $format;
|
||||||
$list = $objmodelimport->liste_modeles($db);
|
$list = $objmodelimport->liste_modeles($db);
|
||||||
|
|
||||||
@ -810,9 +849,7 @@ if ($step == 4 && $datatoimport && !$selectimport) {
|
|||||||
|
|
||||||
// Load targets fields in database
|
// Load targets fields in database
|
||||||
$fieldstarget = $objimport->array_import_fields[0];
|
$fieldstarget = $objimport->array_import_fields[0];
|
||||||
|
$minpos = min(count($fieldssource), count($fieldstarget));
|
||||||
$maxpos = max(count($fieldssource), count($fieldstarget));
|
|
||||||
|
|
||||||
//var_dump($array_match_file_to_database);
|
//var_dump($array_match_file_to_database);
|
||||||
|
|
||||||
// Is it a first time in page (if yes, we must initialize array_match_file_to_database)
|
// Is it a first time in page (if yes, we must initialize array_match_file_to_database)
|
||||||
@ -843,525 +880,10 @@ if ($step == 4 && $datatoimport && !$selectimport) {
|
|||||||
$pos++;
|
$pos++;
|
||||||
}
|
}
|
||||||
// Save the match array in session. We now will use the array in session.
|
// Save the match array in session. We now will use the array in session.
|
||||||
$_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database;
|
$_SESSION["dol_array_match_file_to_database_select"] = $serialized_array_match_file_to_database;
|
||||||
}
|
}
|
||||||
$array_match_database_to_file = array_flip($array_match_file_to_database);
|
$array_match_database_to_file = array_flip($array_match_file_to_database);
|
||||||
|
|
||||||
//print $serialized_array_match_file_to_database;
|
|
||||||
//print $_SESSION["dol_array_match_file_to_database"];
|
|
||||||
//var_dump($array_match_file_to_database);exit;
|
|
||||||
|
|
||||||
// Now $array_match_file_to_database contains fieldnb(1,2,3...)=>fielddatabase(key in $array_match_file_to_database)
|
|
||||||
|
|
||||||
$param = '&format='.$format.'&datatoimport='.urlencode($datatoimport).'&filetoimport='.urlencode($filetoimport);
|
|
||||||
if ($excludefirstline) {
|
|
||||||
$param .= '&excludefirstline='.urlencode($excludefirstline);
|
|
||||||
}
|
|
||||||
if ($endatlinenb) {
|
|
||||||
$param .= '&endatlinenb='.urlencode($endatlinenb);
|
|
||||||
}
|
|
||||||
if ($separator) {
|
|
||||||
$param .= '&separator='.urlencode($separator);
|
|
||||||
}
|
|
||||||
if ($enclosure) {
|
|
||||||
$param .= '&enclosure='.urlencode($enclosure);
|
|
||||||
}
|
|
||||||
|
|
||||||
llxHeader('', $langs->trans("NewImport"), $help_url);
|
|
||||||
|
|
||||||
$head = import_prepare_head($param, 4);
|
|
||||||
|
|
||||||
print dol_get_fiche_head($head, 'step4', '', -2);
|
|
||||||
|
|
||||||
print '<div class="underbanner clearboth"></div>';
|
|
||||||
print '<div class="fichecenter">';
|
|
||||||
|
|
||||||
print '<table width="100%" class="border tableforfield">';
|
|
||||||
|
|
||||||
// Module
|
|
||||||
print '<tr><td class="titlefieldcreate">'.$langs->trans("Module").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
$titleofmodule = $objimport->array_import_module[0]['module']->getName();
|
|
||||||
// Special cas for import common to module/services
|
|
||||||
if (in_array($objimport->array_import_code[0], array('produit_supplierprices', 'produit_multiprice', 'produit_languages'))) {
|
|
||||||
$titleofmodule = $langs->trans("ProductOrService");
|
|
||||||
}
|
|
||||||
print $titleofmodule;
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
// Lot de donnees a importer
|
|
||||||
print '<tr><td>'.$langs->trans("DatasetToImport").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
$entity = preg_replace('/:.*$/', '', $objimport->array_import_icon[0]);
|
|
||||||
$entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity);
|
|
||||||
print img_object($objimport->array_import_module[0]['module']->getName(), $entityicon).' ';
|
|
||||||
print $objimport->array_import_label[0];
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("InformationOnSourceFile"), '', 'file-export');
|
|
||||||
|
|
||||||
print '<div class="underbanner clearboth"></div>';
|
|
||||||
print '<div class="fichecenter">';
|
|
||||||
print '<table width="100%" class="border tableforfield">';
|
|
||||||
|
|
||||||
// Source file format
|
|
||||||
print '<tr><td class="titlefieldcreate">'.$langs->trans("SourceFileFormat").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
$text = $objmodelimport->getDriverDescForKey($format);
|
|
||||||
print $form->textwithpicto($objmodelimport->getDriverLabelForKey($format), $text);
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
// Separator and enclosure
|
|
||||||
if ($model == 'csv') {
|
|
||||||
print '<tr><td>'.$langs->trans("CsvOptions").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
print '<form>';
|
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" value="'.$step.'" name="step">';
|
|
||||||
print '<input type="hidden" value="'.$format.'" name="format">';
|
|
||||||
print '<input type="hidden" value="'.$excludefirstline.'" name="excludefirstline">';
|
|
||||||
print '<input type="hidden" value="'.$endatlinenb.'" name="endatlinenb">';
|
|
||||||
print '<input type="hidden" value="'.$datatoimport.'" name="datatoimport">';
|
|
||||||
print '<input type="hidden" value="'.$filetoimport.'" name="filetoimport">';
|
|
||||||
print $langs->trans("Separator").' : ';
|
|
||||||
print '<input type="text" size="1" name="separator" value="'.dol_escape_htmltag($separator).'"/>';
|
|
||||||
print ' '.$langs->trans("Enclosure").' : ';
|
|
||||||
print '<input type="text" size="1" name="enclosure" value="'.dol_escape_htmltag($enclosure).'"/> ';
|
|
||||||
print '<input name="update" type="submit" value="'.$langs->trans('Update').'" class="button small" />';
|
|
||||||
print '</form>';
|
|
||||||
print '</td></tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// File to import
|
|
||||||
print '<tr><td>'.$langs->trans("FileToImport").'</td>';
|
|
||||||
print '<td>';
|
|
||||||
$modulepart = 'import';
|
|
||||||
$relativepath = GETPOST('filetoimport');
|
|
||||||
print '<a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?modulepart='.$modulepart.'&file='.urlencode($relativepath).'&step=4'.$param.'" target="_blank" rel="noopener noreferrer">';
|
|
||||||
print img_mime($file, '', 'pictofixedwidth');
|
|
||||||
print $filetoimport;
|
|
||||||
print '</a>';
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print dol_get_fiche_end();
|
|
||||||
|
|
||||||
print '<br>'."\n";
|
|
||||||
|
|
||||||
|
|
||||||
// List of source fields
|
|
||||||
print '<!-- List of source fields -->'."\n";
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" name="action" value="select_model">';
|
|
||||||
print '<input type="hidden" name="step" value="4">';
|
|
||||||
print '<input type="hidden" name="format" value="'.$format.'">';
|
|
||||||
print '<input type="hidden" name="datatoimport" value="'.$datatoimport.'">';
|
|
||||||
print '<input type="hidden" name="filetoimport" value="'.$filetoimport.'">';
|
|
||||||
print '<input type="hidden" name="excludefirstline" value="'.$excludefirstline.'">';
|
|
||||||
print '<input type="hidden" name="endatlinenb" value="'.$endatlinenb.'">';
|
|
||||||
print '<input type="hidden" name="separator" value="'.dol_escape_htmltag($separator).'">';
|
|
||||||
print '<input type="hidden" name="enclosure" value="'.dol_escape_htmltag($enclosure).'">';
|
|
||||||
|
|
||||||
print '<div class="marginbottomonly">';
|
|
||||||
print '<span class="opacitymedium">';
|
|
||||||
$s = $langs->trans("SelectImportFields", '{s1}');
|
|
||||||
$s = str_replace('{s1}', img_picto('', 'grip_title', '', false, 0, 0, '', '', 0), $s);
|
|
||||||
print $s;
|
|
||||||
print '</span> ';
|
|
||||||
$htmlother->select_import_model($importmodelid, 'importmodelid', $datatoimport, 1, $user->id);
|
|
||||||
print '<input type="submit" class="button" value="'.$langs->trans("Select").'">';
|
|
||||||
print '</div>';
|
|
||||||
print '</form>';
|
|
||||||
|
|
||||||
// Title of array with fields
|
|
||||||
print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
|
||||||
print '<table class="noborder centpercent">';
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<td>'.$langs->trans("FieldsInSourceFile").'</td>';
|
|
||||||
print '<td>'.$langs->trans("FieldsInTargetDatabase").'</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
//var_dump($array_match_file_to_database);
|
|
||||||
|
|
||||||
print '<tr valign="top"><td width="50%">';
|
|
||||||
|
|
||||||
$fieldsplaced = array();
|
|
||||||
$valforsourcefieldnb = array();
|
|
||||||
$listofkeys = array();
|
|
||||||
foreach ($array_match_file_to_database as $key => $val) {
|
|
||||||
$listofkeys[$key] = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
print "\n<!-- Box left container -->\n";
|
|
||||||
print '<div id="left" class="connectedSortable">'."\n";
|
|
||||||
|
|
||||||
// List of source fields
|
|
||||||
$var = true;
|
|
||||||
$lefti = 1;
|
|
||||||
foreach ($array_match_file_to_database as $key => $val) {
|
|
||||||
$var = !$var;
|
|
||||||
show_elem($fieldssource, $key, $val, $var); // key is field number in source file
|
|
||||||
//print '> '.$lefti.'-'.$key.'-'.$val;
|
|
||||||
$listofkeys[$key] = 1;
|
|
||||||
$fieldsplaced[$key] = 1;
|
|
||||||
$valforsourcefieldnb[$lefti] = $key;
|
|
||||||
$lefti++;
|
|
||||||
|
|
||||||
if ($lefti > count($fieldstarget)) {
|
|
||||||
break; // Other fields are in the not imported area
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//var_dump($valforsourcefieldnb);
|
|
||||||
|
|
||||||
// Complete source fields from count($fieldssource)+1 to count($fieldstarget)
|
|
||||||
$more = 1;
|
|
||||||
$num = count($fieldssource);
|
|
||||||
while ($lefti <= $num) {
|
|
||||||
$var = !$var;
|
|
||||||
$newkey = getnewkey($fieldssource, $listofkeys);
|
|
||||||
show_elem($fieldssource, $newkey, '', $var); // key start after field number in source file
|
|
||||||
//print '> '.$lefti.'-'.$newkey;
|
|
||||||
$listofkeys[$key] = 1;
|
|
||||||
$lefti++;
|
|
||||||
$more++;
|
|
||||||
}
|
|
||||||
|
|
||||||
print "</div>\n";
|
|
||||||
print "<!-- End box left container -->\n";
|
|
||||||
|
|
||||||
|
|
||||||
print '</td><td width="50%">';
|
|
||||||
|
|
||||||
// List of target fields
|
|
||||||
$height = '24px'; //needs px for css height attribute below
|
|
||||||
$i = 0;
|
|
||||||
$mandatoryfieldshavesource = true;
|
|
||||||
|
|
||||||
print '<table width="100%" class="nobordernopadding">';
|
|
||||||
foreach ($fieldstarget as $code => $label) {
|
|
||||||
print '<tr class="oddeven" style="height:'.$height.'">';
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
$entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]);
|
|
||||||
|
|
||||||
$tablealias = preg_replace('/(\..*)$/i', '', $code);
|
|
||||||
$tablename = $objimport->array_import_tables[0][$tablealias];
|
|
||||||
|
|
||||||
$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>';
|
|
||||||
print '<td class="nowraponall" style="font-weight: normal">';
|
|
||||||
$newlabel = preg_replace('/\*$/', '', $label);
|
|
||||||
$text = $langs->trans($newlabel);
|
|
||||||
$more = '';
|
|
||||||
if (preg_match('/\*$/', $label)) {
|
|
||||||
$text = '<span class="fieldrequired">'.$text.'</span>';
|
|
||||||
$more = ((!empty($valforsourcefieldnb[$i]) && $valforsourcefieldnb[$i] <= count($fieldssource)) ? '' : img_warning($langs->trans("FieldNeedSource")));
|
|
||||||
if ($mandatoryfieldshavesource) {
|
|
||||||
$mandatoryfieldshavesource = (!empty($valforsourcefieldnb[$i]) && ($valforsourcefieldnb[$i] <= count($fieldssource)));
|
|
||||||
}
|
|
||||||
//print 'xx'.($i).'-'.$valforsourcefieldnb[$i].'-'.$mandatoryfieldshavesource;
|
|
||||||
}
|
|
||||||
print $text;
|
|
||||||
print '</td>';
|
|
||||||
// Info field
|
|
||||||
print '<td class="nowraponall" style="font-weight:normal; text-align:right">';
|
|
||||||
$filecolumn = $array_match_database_to_file[$code];
|
|
||||||
// Source field info
|
|
||||||
$htmltext = '<b><u>'.$langs->trans("FieldSource").'</u></b><br>';
|
|
||||||
if ($filecolumn > count($fieldssource)) {
|
|
||||||
$htmltext .= $langs->trans("DataComeFromNoWhere").'<br>';
|
|
||||||
} else {
|
|
||||||
if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion
|
|
||||||
$filecolumntoshow = $filecolumn;
|
|
||||||
$htmltext .= $langs->trans("DataComeFromFileFieldNb", $filecolumntoshow).'<br>';
|
|
||||||
} else {
|
|
||||||
if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') {
|
|
||||||
$htmltext .= $langs->trans("DataComeFromIdFoundFromRef", $filecolumn, $langs->transnoentitiesnoconv($entitylang)).'<br>';
|
|
||||||
}
|
|
||||||
if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') {
|
|
||||||
$htmltext .= $langs->trans("DataComeFromIdFoundFromCodeId", $filecolumn, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).'<br>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Source required
|
|
||||||
$htmltext .= $langs->trans("SourceRequired").': <b>'.yn(preg_match('/\*$/', $label)).'</b><br>';
|
|
||||||
$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) {
|
|
||||||
$htmltext .= $langs->trans("SourceExample").': <b>'.$example.'</b><br>';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') {
|
|
||||||
$htmltext .= $langs->trans("SourceExample").': <b>'.$langs->transnoentitiesnoconv("ExampleAnyRefFoundIntoElement", $entitylang).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'</b><br>';
|
|
||||||
} elseif ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') {
|
|
||||||
$htmltext .= $langs->trans("SourceExample").': <b>'.$langs->trans("ExampleAnyCodeOrIdFoundIntoDictionary", $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'</b><br>';
|
|
||||||
} elseif ($example) {
|
|
||||||
$htmltext .= $langs->trans("SourceExample").': <b>'.$example.'</b><br>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Format control rule
|
|
||||||
if (!empty($objimport->array_import_regex[0][$code])) {
|
|
||||||
$htmltext .= $langs->trans("FormatControlRule").': <b>'.$objimport->array_import_regex[0][$code].'</b><br>';
|
|
||||||
}
|
|
||||||
$htmltext .= '<br>';
|
|
||||||
// Target field info
|
|
||||||
$htmltext .= '<b><u>'.$langs->trans("FieldTarget").'</u></b><br>';
|
|
||||||
if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion
|
|
||||||
$htmltext .= $langs->trans("DataIsInsertedInto").'<br>';
|
|
||||||
} else {
|
|
||||||
if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') {
|
|
||||||
$htmltext .= $langs->trans("DataIDSourceIsInsertedInto").'<br>';
|
|
||||||
}
|
|
||||||
if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') {
|
|
||||||
$htmltext .= $langs->trans("DataCodeIDSourceIsInsertedInto").'<br>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$htmltext .= $langs->trans("FieldTitle").": <b>".$langs->trans($newlabel)."</b><br>";
|
|
||||||
$htmltext .= $langs->trans("Table")." -> ".$langs->trans("Field").': <b>'.$tablename." -> ".preg_replace('/^.*\./', '', $code)."</b><br>";
|
|
||||||
print $form->textwithpicto($more, $htmltext);
|
|
||||||
print '</td>';
|
|
||||||
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
print '</table>';
|
|
||||||
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
// List of not imported fields
|
|
||||||
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("NotImportedFields").'</td></tr>';
|
|
||||||
|
|
||||||
print '<tr valign="top"><td width="50%">';
|
|
||||||
|
|
||||||
print "\n<!-- Box ignore container -->\n";
|
|
||||||
print '<div id="right" class="connectedSortable">'."\n";
|
|
||||||
|
|
||||||
$nbofnotimportedfields = 0;
|
|
||||||
foreach ($fieldssource as $key => $val) {
|
|
||||||
if (empty($fieldsplaced[$key])) {
|
|
||||||
//
|
|
||||||
$nbofnotimportedfields++;
|
|
||||||
show_elem($fieldssource, $key, '', $var, 'nostyle');
|
|
||||||
//print '> '.$lefti.'-'.$key;
|
|
||||||
$listofkeys[$key] = 1;
|
|
||||||
$lefti++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Print one more empty field
|
|
||||||
$newkey = getnewkey($fieldssource, $listofkeys);
|
|
||||||
show_elem($fieldssource, $newkey, '', $var, 'nostyle');
|
|
||||||
//print '> '.$lefti.'-'.$newkey;
|
|
||||||
$listofkeys[$newkey] = 1;
|
|
||||||
$nbofnotimportedfields++;
|
|
||||||
|
|
||||||
print "</div>\n";
|
|
||||||
print "<!-- End box ignore container -->\n";
|
|
||||||
|
|
||||||
print '</td>';
|
|
||||||
print '<td width="50%">';
|
|
||||||
$i = 0;
|
|
||||||
while ($i < $nbofnotimportedfields) {
|
|
||||||
// Print empty cells
|
|
||||||
show_elem('', '', 'none', $var, 'nostyle');
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
|
|
||||||
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 "\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";
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Action bar
|
|
||||||
*/
|
|
||||||
print '<div class="tabsAction">';
|
|
||||||
|
|
||||||
if (count($array_match_file_to_database)) {
|
|
||||||
if ($mandatoryfieldshavesource) {
|
|
||||||
print '<a class="butAction" href="import.php?step=5'.$param.'&filetoimport='.urlencode($filetoimport).'">'.$langs->trans("NextStep").'</a>';
|
|
||||||
} else {
|
|
||||||
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("SomeMandatoryFieldHaveNoSource")).'">'.$langs->trans("NextStep").'</a>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
|
|
||||||
// Area for profils import
|
|
||||||
if (count($array_match_file_to_database)) {
|
|
||||||
print '<br>'."\n";
|
|
||||||
print '<!-- Area to add new import profile -->'."\n";
|
|
||||||
print '<div class="marginbottomonly"><span class="opacitymedium">'.$langs->trans("SaveImportModel").'</span></div>';
|
|
||||||
|
|
||||||
print '<form class="nocellnopadd" action="'.$_SERVER["PHP_SELF"].'" method="post">';
|
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
|
||||||
print '<input type="hidden" name="action" value="add_import_model">';
|
|
||||||
print '<input type="hidden" name="step" value="'.$step.'">';
|
|
||||||
print '<input type="hidden" name="format" value="'.$format.'">';
|
|
||||||
print '<input type="hidden" name="datatoimport" value="'.$datatoimport.'">';
|
|
||||||
print '<input type="hidden" name="filetoimport" value="'.$filetoimport.'">';
|
|
||||||
print '<input type="hidden" name="hexa" value="'.$hexa.'">';
|
|
||||||
print '<input type="hidden" name="excludefirstline" value="'.$excludefirstline.'">';
|
|
||||||
print '<input type="hidden" name="endatlinenb" value="'.$endatlinenb.'">';
|
|
||||||
print '<input type="hidden" value="'.dol_escape_htmltag($separator).'" name="separator">';
|
|
||||||
print '<input type="hidden" value="'.dol_escape_htmltag($enclosure).'" name="enclosure">';
|
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
|
||||||
print '<table summary="selectofimportprofil" class="noborder centpercent">';
|
|
||||||
print '<tr class="liste_titre">';
|
|
||||||
print '<td>'.$langs->trans("ImportModelName").'</td>';
|
|
||||||
print '<td>'.$langs->trans("Visibility").'</td>';
|
|
||||||
print '<td></td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
|
||||||
print '<td><input name="import_name" value=""></td>';
|
|
||||||
print '<td>';
|
|
||||||
$arrayvisibility = array('private'=>$langs->trans("Private"), 'all'=>$langs->trans("Everybody"));
|
|
||||||
print $form->selectarray('visibility', $arrayvisibility, 'private');
|
|
||||||
print '</td>';
|
|
||||||
print '<td class="right">';
|
|
||||||
print '<input type="submit" class="button" value="'.$langs->trans("SaveImportProfile").'">';
|
|
||||||
print '</td></tr>';
|
|
||||||
|
|
||||||
// List of existing import profils
|
|
||||||
$sql = "SELECT rowid, label, fk_user, entity";
|
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."import_model";
|
|
||||||
$sql .= " WHERE type = '".$db->escape($datatoimport)."'";
|
|
||||||
if (empty($conf->global->EXPORTS_SHARE_MODELS)) { // EXPORTS_SHARE_MODELS means all templates are visible, whatever is owner.
|
|
||||||
$sql .= " AND fk_user IN (0, ".((int) $user->id).")";
|
|
||||||
}
|
|
||||||
$sql .= " ORDER BY rowid";
|
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
|
||||||
if ($resql) {
|
|
||||||
$num = $db->num_rows($resql);
|
|
||||||
|
|
||||||
$tmpuser = new user($db);
|
|
||||||
|
|
||||||
$i = 0;
|
|
||||||
while ($i < $num) {
|
|
||||||
$obj = $db->fetch_object($resql);
|
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>';
|
|
||||||
print $obj->label;
|
|
||||||
print '</td>';
|
|
||||||
print '<td>';
|
|
||||||
if (empty($obj->fk_user)) {
|
|
||||||
print $langs->trans("Everybody");
|
|
||||||
} else {
|
|
||||||
$tmpuser->fetch($obj->fk_user);
|
|
||||||
print $tmpuser->getNomUrl(1);
|
|
||||||
}
|
|
||||||
print '</td>';
|
|
||||||
print '<td class="right">';
|
|
||||||
print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?step='.$step.$param.'&action=deleteprof&token='.newToken().'&id='.$obj->rowid.'&filetoimport='.urlencode($filetoimport).'">';
|
|
||||||
print img_delete();
|
|
||||||
print '</a>';
|
|
||||||
print '</tr>';
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
print '</form>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($step == 4 && $datatoimport && $selectimport) {
|
|
||||||
$model = $format;
|
|
||||||
$list = $objmodelimport->liste_modeles($db);
|
|
||||||
|
|
||||||
// Create classe to use for import
|
|
||||||
$dir = DOL_DOCUMENT_ROOT."/core/modules/import/";
|
|
||||||
$file = "import_".$model.".modules.php";
|
|
||||||
$classname = "Import".ucfirst($model);
|
|
||||||
require_once $dir.$file;
|
|
||||||
$obj = new $classname($db, $datatoimport);
|
|
||||||
if ($model == 'csv') {
|
|
||||||
$obj->separator = $separator_used;
|
|
||||||
$obj->enclosure = $enclosure;
|
|
||||||
}
|
|
||||||
if ($model == 'xlsx') {
|
|
||||||
if (!preg_match('/\.xlsx$/i', $filetoimport)) {
|
|
||||||
$langs->load("errors");
|
|
||||||
$param = '&datatoimport='.$datatoimport.'&format='.$format;
|
|
||||||
setEventMessages($langs->trans("ErrorFileMustHaveFormat", $model), null, 'errors');
|
|
||||||
header("Location: ".$_SERVER["PHP_SELF"].'?step=3'.$param.'&filetoimport='.urlencode($relativepath));
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (GETPOST('update')) {
|
|
||||||
$array_match_file_to_database = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load source fields in input file
|
|
||||||
$fieldssource = array();
|
|
||||||
$result = $obj->import_open_file($conf->import->dir_temp.'/'.$filetoimport, $langs);
|
|
||||||
if ($result >= 0) {
|
|
||||||
// Read first line
|
|
||||||
$arrayrecord = $obj->import_read_record();
|
|
||||||
// Put into array fieldssource starting with 1.
|
|
||||||
$i = 1;
|
|
||||||
foreach ($arrayrecord as $key => $val) {
|
|
||||||
$fieldssource[$i]['example1'] = dol_trunc($val['val'], 24);
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$obj->import_close_file();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load targets fields in database
|
|
||||||
$fieldstarget = $objimport->array_import_fields[0];
|
|
||||||
$fieldstarget_tmp = array();
|
$fieldstarget_tmp = array();
|
||||||
|
|
||||||
foreach ($fieldstarget as $key => $label) {
|
foreach ($fieldstarget as $key => $label) {
|
||||||
@ -1372,44 +894,13 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
} else {
|
} else {
|
||||||
$fieldstarget_tmp[$key] = array("label"=>$label,"required"=>false);
|
$fieldstarget_tmp[$key] = array("label"=>$label,"required"=>false);
|
||||||
}
|
}
|
||||||
$fieldstarget_tmp[$key]["imported"] = true;
|
if (!empty($array_match_database_to_file[$key])) {
|
||||||
|
$fieldstarget_tmp[$key]["imported"] = true;
|
||||||
|
} else {
|
||||||
|
$fieldstarget_tmp[$key]["imported"] = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$fieldstarget = $fieldstarget_tmp;
|
$fieldstarget = $fieldstarget_tmp;
|
||||||
$maxpos = max(count($fieldssource), count($fieldstarget));
|
|
||||||
|
|
||||||
//var_dump($array_match_file_to_database);
|
|
||||||
|
|
||||||
// Is it a first time in page (if yes, we must initialize array_match_file_to_database)
|
|
||||||
if (count($array_match_file_to_database) == 0) {
|
|
||||||
// This is first input in screen, we need to define
|
|
||||||
// $array_match_file_to_database
|
|
||||||
// $serialized_array_match_file_to_database
|
|
||||||
// $_SESSION["dol_array_match_file_to_database"]
|
|
||||||
$pos = 1;
|
|
||||||
$num = count($fieldssource);
|
|
||||||
while ($pos <= $num) {
|
|
||||||
if ($num >= 1 && $pos <= $num) {
|
|
||||||
$posbis = 1;
|
|
||||||
foreach ($fieldstarget as $key => $val) {
|
|
||||||
if ($posbis < $pos) {
|
|
||||||
$posbis++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// We found the key of targets that is at position pos
|
|
||||||
$array_match_file_to_database[$pos] = $key;
|
|
||||||
if ($serialized_array_match_file_to_database) {
|
|
||||||
$serialized_array_match_file_to_database .= ',';
|
|
||||||
}
|
|
||||||
$serialized_array_match_file_to_database .= ($pos.'='.$key);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$pos++;
|
|
||||||
}
|
|
||||||
// Save the match array in session. We now will use the array in session.
|
|
||||||
$_SESSION["dol_array_match_file_to_database"] = $serialized_array_match_file_to_database;
|
|
||||||
}
|
|
||||||
$array_match_database_to_file = array_flip($array_match_file_to_database);
|
|
||||||
|
|
||||||
//print $serialized_array_match_file_to_database;
|
//print $serialized_array_match_file_to_database;
|
||||||
//print $_SESSION["dol_array_match_file_to_database"];
|
//print $_SESSION["dol_array_match_file_to_database"];
|
||||||
@ -1568,7 +1059,7 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
// List of source fields
|
// List of source fields
|
||||||
$var = true;
|
$var = true;
|
||||||
$lefti = 1;
|
$lefti = 1;
|
||||||
foreach ($array_match_file_to_database as $key => $val) {
|
foreach ($fieldssource as $key => $val) {
|
||||||
$var = !$var;
|
$var = !$var;
|
||||||
show_elem($fieldssource, $key, $val, $var); // key is field number in source file
|
show_elem($fieldssource, $key, $val, $var); // key is field number in source file
|
||||||
//print '> '.$lefti.'-'.$key.'-'.$val;
|
//print '> '.$lefti.'-'.$key.'-'.$val;
|
||||||
@ -1603,13 +1094,28 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
print '</td><td width="50%">';
|
print '</td><td width="50%">';
|
||||||
|
|
||||||
// List of target fields
|
// List of target fields
|
||||||
|
$optionsnotused = "";
|
||||||
|
foreach ($fieldstarget as $code => $line) {
|
||||||
|
if (!$line["imported"]) {
|
||||||
|
$text = '<option value="'.$code.'">';
|
||||||
|
$text .= $langs->trans($line["label"]);
|
||||||
|
if ($line["required"]) {
|
||||||
|
$text .= "*";
|
||||||
|
}
|
||||||
|
$text .= '</option>';
|
||||||
|
$optionsnotused .= $text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$height = '24px'; //needs px for css height attribute below
|
$height = '24px'; //needs px for css height attribute below
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$mandatoryfieldshavesource = true;
|
$mandatoryfieldshavesource = true;
|
||||||
|
|
||||||
print '<table width="100%" class="nobordernopadding">';
|
print '<table width="100%" class="nobordernopadding">';
|
||||||
|
|
||||||
foreach ($fieldstarget as $code => $line) {
|
foreach ($fieldstarget as $code => $line) {
|
||||||
|
if ($i == $minpos) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
print '<tr class="oddeven" style="height:'.$height.'">';
|
print '<tr class="oddeven" style="height:'.$height.'">';
|
||||||
$entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]);
|
$entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]);
|
||||||
|
|
||||||
@ -1621,9 +1127,14 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
|
|
||||||
print '<td class="nowraponall" style="font-weight: normal">=>'.img_object('', $entityicon).' '.$langs->trans($entitylang).'</td>';
|
print '<td class="nowraponall" style="font-weight: normal">=>'.img_object('', $entityicon).' '.$langs->trans($entitylang).'</td>';
|
||||||
print '<td class="nowraponall" style="font-weight: normal">';
|
print '<td class="nowraponall" style="font-weight: normal">';
|
||||||
print '<select name="select_'.$line["label"].'">';
|
print '<select id="selectorderimport_'.($i+1).'" class="targetselectchange minwidth300" name="select_'.$line["label"].'">';
|
||||||
print '<option value="-1"> </option>';
|
if ($line["imported"]) {
|
||||||
print '<option selected="" value="'.$code.'">';
|
print '<option value="-1"> </option>';
|
||||||
|
print '<option selected="" value="'.$code.'">';
|
||||||
|
} else {
|
||||||
|
print '<option selected="" value="-1"> </option>';
|
||||||
|
print '<option value="'.$code.'">';
|
||||||
|
}
|
||||||
$text = $langs->trans($line["label"]);
|
$text = $langs->trans($line["label"]);
|
||||||
$more = '';
|
$more = '';
|
||||||
if ($line["required"]) {
|
if ($line["required"]) {
|
||||||
@ -1631,6 +1142,7 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
}
|
}
|
||||||
print $text;
|
print $text;
|
||||||
print '</option>';
|
print '</option>';
|
||||||
|
print $optionsnotused;
|
||||||
print '</select>';
|
print '</select>';
|
||||||
//print ajax_combobox("select_".$newlabel);
|
//print ajax_combobox("select_".$newlabel);
|
||||||
print "</td>";
|
print "</td>";
|
||||||
@ -1691,6 +1203,7 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
$htmltext .= $langs->trans("Table")." -> ".$langs->trans("Field").': <b>'.$tablename." -> ".preg_replace('/^.*\./', '', $code)."</b><br>";
|
$htmltext .= $langs->trans("Table")." -> ".$langs->trans("Field").': <b>'.$tablename." -> ".preg_replace('/^.*\./', '', $code)."</b><br>";
|
||||||
print $form->textwithpicto($more, $htmltext);
|
print $form->textwithpicto($more, $htmltext);
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
@ -1705,11 +1218,11 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
print '<div id="right" class="connectedSortable">'."\n";
|
print '<div id="right" class="connectedSortable">'."\n";
|
||||||
|
|
||||||
$nbofnotimportedfields = 0;
|
$nbofnotimportedfields = 0;
|
||||||
foreach ($fieldssource as $key => $val) {
|
foreach ($fieldstarget as $key => $val) {
|
||||||
if (empty($fieldsplaced[$key])) {
|
if (!$fieldstarget[$key]['imported']) {
|
||||||
//
|
//
|
||||||
$nbofnotimportedfields++;
|
$nbofnotimportedfields++;
|
||||||
show_elem($fieldssource, $key, '', $var, 'nostyle');
|
show_elem($fieldstarget, $key, '', $var, 'nostyle');
|
||||||
//print '> '.$lefti.'-'.$key;
|
//print '> '.$lefti.'-'.$key;
|
||||||
$listofkeys[$key] = 1;
|
$listofkeys[$key] = 1;
|
||||||
$lefti++;
|
$lefti++;
|
||||||
@ -1741,38 +1254,24 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
|
|
||||||
|
|
||||||
if ($conf->use_javascript_ajax) {
|
if ($conf->use_javascript_ajax) {
|
||||||
print '<script type="text/javascript">';
|
print '<script type="text/javascript">'."\n";
|
||||||
// print 'jQuery(function() {
|
print 'var previousselectedvalueimport = "0";'."\n";
|
||||||
// jQuery("#left, #right").sortable({
|
print 'var previousselectedlabelimport = "0";'."\n";
|
||||||
// /* placeholder: \'ui-state-highlight\', */
|
print '$(document).ready(function () {'."\n";
|
||||||
// handle: \'.boxhandle\',
|
print '$(".targetselectchange").focus(function(){'."\n";
|
||||||
// revert: \'invalid\',
|
print 'previousselectedvalueimport = $(this).val();'."\n";
|
||||||
// items: \'.box\',
|
print 'previousselectedlabelimport = $(this).children("option:selected").text();'."\n";
|
||||||
// containment: \'.fiche\',
|
print '})'."\n";
|
||||||
// connectWith: \'.connectedSortable\',
|
print '$(".targetselectchange").change(function(){'."\n";
|
||||||
// stop: function(event, ui) {
|
print 'if(previousselectedlabelimport != "" && previousselectedvalueimport != -1){'."\n";
|
||||||
// updateOrder();
|
print '$(".targetselectchange").not($( this )).append(new Option(previousselectedlabelimport,previousselectedvalueimport));'."\n";
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
// ';
|
|
||||||
// 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 '}'."\n";
|
||||||
|
print 'if($( this ).val() != -1){'."\n";
|
||||||
|
print '$(".targetselectchange").not($( this )).find(\'option[value="\'+$( this ).val()+\'"]\').remove();'."\n";
|
||||||
|
print '$(".targetselectchange").not($( this )).find(\'option[value="\'+$( this ).val()+\'"]\').remove();'."\n";
|
||||||
|
print '}'."\n";
|
||||||
|
print '});'."\n";
|
||||||
|
print '})'."\n";
|
||||||
print '</script>'."\n";
|
print '</script>'."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1783,10 +1282,31 @@ if ($step == 4 && $datatoimport && $selectimport) {
|
|||||||
|
|
||||||
if (count($array_match_file_to_database)) {
|
if (count($array_match_file_to_database)) {
|
||||||
if ($mandatoryfieldshavesource) {
|
if ($mandatoryfieldshavesource) {
|
||||||
print '<a class="butAction" href="import.php?step=5'.$param.'&filetoimport='.urlencode($filetoimport).'">'.$langs->trans("NextStep").'</a>';
|
print '<a class="butAction saveorderselect" href="#'/*import.php?step=5'.$param.'&filetoimport='.urlencode($filetoimport)*/.'">'.$langs->trans("NextStep").'</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("SomeMandatoryFieldHaveNoSource")).'">'.$langs->trans("NextStep").'</a>';
|
print '<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("SomeMandatoryFieldHaveNoSource")).'">'.$langs->trans("NextStep").'</a>';
|
||||||
}
|
}
|
||||||
|
if ($conf->use_javascript_ajax) {
|
||||||
|
print '<script type="text/javascript">'."\n";
|
||||||
|
print'$(".saveorderselect").on("click",function(){
|
||||||
|
arrayselectedfields = [];
|
||||||
|
arrayselectedfields.push("0");
|
||||||
|
$(".targetselectchange").each(function(){
|
||||||
|
value = $(this).val()
|
||||||
|
arrayselectedfields.push(value);
|
||||||
|
});
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
dataType: "json",
|
||||||
|
url: "'.$_SERVER["PHP_SELF"].'?action=saveselectorder",
|
||||||
|
data: "selectorder="+arrayselectedfields.toString(),
|
||||||
|
success: function(){
|
||||||
|
window.location.href="'.$_SERVER["PHP_SELF"].'?step=5'.$param.'&filetoimport='.urlencode($filetoimport).'";
|
||||||
|
},
|
||||||
|
});
|
||||||
|
})';
|
||||||
|
print '</script>'."\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</div>';
|
print '</div>';
|
||||||
@ -2679,7 +2199,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '')
|
|||||||
{
|
{
|
||||||
global $langs, $bc;
|
global $langs, $bc;
|
||||||
|
|
||||||
$height = '24px';
|
$height = '28px';
|
||||||
|
|
||||||
if ($key == 'none') {
|
if ($key == 'none') {
|
||||||
//stop multiple duplicate ids with no number
|
//stop multiple duplicate ids with no number
|
||||||
@ -2693,7 +2213,7 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '')
|
|||||||
print '<table summary="boxtable'.$pos.'" width="100%" class="nobordernopadding">'."\n";
|
print '<table summary="boxtable'.$pos.'" width="100%" class="nobordernopadding">'."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($pos && $pos > count($fieldssource)) { // No fields
|
if (($pos && $pos > count($fieldssource)) && (!isset($fieldssource[$pos]["imported"]))) { // No fields
|
||||||
print '<tr'.($nostyle ? '' : ' '.$bc[$var]).' style="height:'.$height.'">';
|
print '<tr'.($nostyle ? '' : ' '.$bc[$var]).' style="height:'.$height.'">';
|
||||||
print '<td class="nocellnopadding" width="16" style="font-weight: normal">';
|
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;"');
|
||||||
@ -2720,7 +2240,11 @@ function show_elem($fieldssource, $pos, $key, $var, $nostyle = '')
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="nowraponall" style="font-weight: normal">';
|
print '<td class="nowraponall" style="font-weight: normal">';
|
||||||
print $langs->trans("Field").' '.$pos;
|
print $langs->trans("Field").' '.$pos;
|
||||||
$example = $fieldssource[$pos]['example1'];
|
if (empty($fieldssource[$pos]['example1'])) {
|
||||||
|
$example = $fieldssource[$pos]['label'];
|
||||||
|
} else {
|
||||||
|
$example = $fieldssource[$pos]['example1'];
|
||||||
|
}
|
||||||
if ($example) {
|
if ($example) {
|
||||||
if (!utf8_check($example)) {
|
if (!utf8_check($example)) {
|
||||||
$example = utf8_encode($example);
|
$example = utf8_encode($example);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user