BUG 0000 Adjustments to import a CSV file in PMTables.
This commit is contained in:
@@ -533,7 +533,67 @@ class pmTablesProxy extends HttpProxyController
|
|||||||
$this->message = $this->success ? 'Deleted Successfully' : 'Error Deleting record';
|
$this->message = $this->success ? 'Deleted Successfully' : 'Error Deleting record';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* import a CSV to pm tables record
|
||||||
|
* @param string $httpData->id
|
||||||
|
*/
|
||||||
|
public function importCSV($httpData)
|
||||||
|
{
|
||||||
|
if (preg_match('/[\x00-\x08\x0b-\x0c\x0e\x1f]/', file_get_contents($_FILES['form']['tmp_name']['CSV_FILE'])) === 0) {
|
||||||
|
$filename = $_FILES['form']['name']['CSV_FILE'];
|
||||||
|
if ($oFile = fopen($_FILES['form']['tmp_name']['CSV_FILE'], 'r')) {
|
||||||
|
require_once 'classes/model/AdditionalTables.php';
|
||||||
|
$oAdditionalTables = new AdditionalTables();
|
||||||
|
$aAdditionalTables = $oAdditionalTables->load($_POST['form']['ADD_TAB_UID'], true);
|
||||||
|
$sErrorMessages = '';
|
||||||
|
$i = 1;
|
||||||
|
$swHead = false;
|
||||||
|
while (($aAux = fgetcsv($oFile, 4096, $_POST['form']['CSV_DELIMITER'])) !== false) {
|
||||||
|
if($i == 1) {
|
||||||
|
$j = 0;
|
||||||
|
foreach ($aAdditionalTables['FIELDS'] as $aField) {
|
||||||
|
if($aField['FLD_NAME'] === $aAux[$j]) $swHead = true;
|
||||||
|
$j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($swHead == false) {
|
||||||
|
$aData = array();
|
||||||
|
$j = 0;
|
||||||
|
foreach ($aAdditionalTables['FIELDS'] as $aField) {
|
||||||
|
$aData[$aField['FLD_NAME']] = (isset($aAux[$j]) ? $aAux[$j] : '');
|
||||||
|
$j++;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (!$oAdditionalTables->saveDataInTable($_POST['form']['ADD_TAB_UID'], $aData)) {
|
||||||
|
$sErrorMessages .= G::LoadTranslation('ID_DUPLICATE_ENTRY_PRIMARY_KEY') . ', ' . G::LoadTranslation('ID_LINE') . ' ' . $i . '<br />';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception $oError) {
|
||||||
|
$sErrorMessages .= G::LoadTranslation('ID_ERROR_INSERT_LINE') . ': ' . G::LoadTranslation('ID_LINE') . ' ' . $i . '<br />';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$swHead = false;
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
fclose($oFile);
|
||||||
|
}
|
||||||
|
if ($sErrorMessages != '') {
|
||||||
|
$this->success = false;
|
||||||
|
$this->message = $sErrorMessages;
|
||||||
|
}
|
||||||
|
$this->success = true;
|
||||||
|
$this->message = 'File Imported "'.$filename.'" Successfully';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$sMessage = G::LoadTranslation('ID_UPLOAD_VALID_CSV_FILE');
|
||||||
|
$this->success = false;
|
||||||
|
$this->message = $sMessage;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* import a pm table
|
* import a pm table
|
||||||
* @param string $httpData->id
|
* @param string $httpData->id
|
||||||
|
|||||||
@@ -227,8 +227,8 @@ Ext.onReady(function(){
|
|||||||
store: store,
|
store: store,
|
||||||
cm: cmodel,
|
cm: cmodel,
|
||||||
sm: smodel,
|
sm: smodel,
|
||||||
//tbar:[newButton,'-',editButton, deleteButton,'-',importButton,{xtype: 'tbfill' }, backButton],
|
tbar:[newButton,'-',editButton, deleteButton,'-',importButton,{xtype: 'tbfill'}, backButton],
|
||||||
tbar:[newButton,'-',editButton, deleteButton,'-',{xtype: 'tbfill' }, backButton],
|
// tbar:[newButton,'-',editButton, deleteButton,'-',{xtype: 'tbfill' }, backButton],
|
||||||
bbar: bbarpaging
|
bbar: bbarpaging
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,9 +324,104 @@ DeletePMTableRow = function(){
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Load Import PM Table From CSV Source
|
//Load Import PM Table From CSV Source
|
||||||
|
//ImportPMTableCSV = function(){
|
||||||
|
// location.href = 'additionalTablesDataImportForm?sUID=' + TABLES.UID;
|
||||||
|
//};
|
||||||
|
|
||||||
ImportPMTableCSV = function(){
|
ImportPMTableCSV = function(){
|
||||||
location.href = 'additionalTablesDataImportForm?sUID=' + TABLES.UID;
|
|
||||||
};
|
var comboDelimiter = new Ext.data.SimpleStore({
|
||||||
|
fields: ['id', 'value'],
|
||||||
|
data: [[';', 'SemiColon (;)'],
|
||||||
|
[',', 'Comma (,)']]
|
||||||
|
});
|
||||||
|
var w = new Ext.Window({
|
||||||
|
title: '',
|
||||||
|
width: 440,
|
||||||
|
height: 180,
|
||||||
|
modal: true,
|
||||||
|
autoScroll: false,
|
||||||
|
maximizable: false,
|
||||||
|
resizable: false,
|
||||||
|
items: [
|
||||||
|
new Ext.FormPanel({
|
||||||
|
id:'uploader',
|
||||||
|
fileUpload: true,
|
||||||
|
width: 420,
|
||||||
|
frame: true,
|
||||||
|
title: 'Import Data from CSV file',
|
||||||
|
autoHeight: false,
|
||||||
|
bodyStyle: 'padding: 10px 10px 0 10px;',
|
||||||
|
labelWidth: 80,
|
||||||
|
defaults: {
|
||||||
|
anchor: '90%',
|
||||||
|
allowBlank: false,
|
||||||
|
msgTarget: 'side'
|
||||||
|
},
|
||||||
|
items: [{
|
||||||
|
xtype: 'fileuploadfield',
|
||||||
|
id: 'form-file',
|
||||||
|
emptyText: 'Select a file',
|
||||||
|
fieldLabel: 'CSV File', // _('ID_FILE'),
|
||||||
|
name: 'form[CSV_FILE]',
|
||||||
|
buttonText: '',
|
||||||
|
buttonCfg: {
|
||||||
|
iconCls: 'upload-icon'
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
xtype: 'combo',
|
||||||
|
fieldLabel: 'Delimited by',
|
||||||
|
hiddenName: 'form[CSV_DELIMITER]',
|
||||||
|
mode: 'local',
|
||||||
|
store: comboDelimiter,
|
||||||
|
displayField: 'value',
|
||||||
|
valueField: 'id',
|
||||||
|
allowBlank: false,
|
||||||
|
triggerAction: 'all',
|
||||||
|
emptyText: _('ID_SELECT'),
|
||||||
|
selectOnFocus:true
|
||||||
|
|
||||||
|
},{
|
||||||
|
xtype: 'hidden',
|
||||||
|
name: 'form[ADD_TAB_UID]',
|
||||||
|
value: tableDef.ADD_TAB_UID
|
||||||
|
}],
|
||||||
|
buttons: [{
|
||||||
|
text: _('ID_UPLOAD'),
|
||||||
|
handler: function(){
|
||||||
|
var uploader = Ext.getCmp('uploader');
|
||||||
|
|
||||||
|
if(uploader.getForm().isValid()){
|
||||||
|
uploader.getForm().submit({
|
||||||
|
url: '../pmTablesProxy/importCSV',
|
||||||
|
waitMsg: 'Uploading file...',
|
||||||
|
success: function(o, resp){
|
||||||
|
w.close();
|
||||||
|
infoGrid.store.reload();
|
||||||
|
|
||||||
|
PMExt.notify('IMPORT RESULT', resp.result.message);
|
||||||
|
},
|
||||||
|
failure: function(o, resp){
|
||||||
|
w.close();
|
||||||
|
Ext.MessageBox.show({title: '', msg: resp.result.msg, buttons:
|
||||||
|
Ext.MessageBox.OK, animEl: 'mb9', fn: function(){}, icon:
|
||||||
|
Ext.MessageBox.ERROR});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
text: TRANSLATIONS.ID_CANCEL,
|
||||||
|
handler: function(){
|
||||||
|
w.close();
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
]
|
||||||
|
|
||||||
|
});
|
||||||
|
w.show();
|
||||||
|
}
|
||||||
|
|
||||||
//Load PM Table List
|
//Load PM Table List
|
||||||
BackPMList = function(){
|
BackPMList = function(){
|
||||||
|
|||||||
Reference in New Issue
Block a user