diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php index 5cf282954..f3af71cf6 100755 --- a/workflow/engine/controllers/pmTablesProxy.php +++ b/workflow/engine/controllers/pmTablesProxy.php @@ -953,6 +953,10 @@ class pmTablesProxy extends HttpProxyController if(!$fromConfirm) { G::uploadFile( $tempName, $PUBLIC_ROOT_PATH, $filename ); } + + if ($fromConfirm == 'clear') { + $fromConfirm = true; + } $fileContent = file_get_contents( $PUBLIC_ROOT_PATH . $filename ); @@ -1000,36 +1004,45 @@ class pmTablesProxy extends HttpProxyController $tableData->PRO_UID = isset( $contentSchema["PRO_UID"] ) ? $contentSchema["PRO_UID"] : ""; } - if($fromAdmin) { /*from admin tab*/ + $isPmTable = false; /*is a report table*/ + if($contentSchema["PRO_UID"] == "" ) { + $isPmTable = true; + } + if (isset( $_POST["form"]["PRO_UID_HELP"] ) && !empty($_POST["form"]["PRO_UID_HELP"])) { + $currentPRO_UID = $_POST["form"]["PRO_UID_HELP"]; + } else { + $currentPRO_UID = (isset( $_SESSION['PROCESS'] ) && !empty( $_SESSION['PROCESS'] )) ? $_SESSION['PROCESS'] : ''; + } + + if($fromAdmin) { /* from admin tab */ if ($tableExists !== false && !$fromConfirm) { $validationType = 1; throw new Exception( G::loadTranslation( 'ID_OVERWRITE_PMTABLE' ) ); } - if(!in_array($tableData->PRO_UID, $proUids)) { + if(!in_array($tableData->PRO_UID, $proUids) && !$isPmTable) { $validationType = 2; throw new Exception( G::loadTranslation( 'ID_NO_RELATED_PROCESS' ) ); } - } else { /*from designer tab*/ + } else { /* from designer tab */ if ($tableExists !== false && !$fromConfirm) { $validationType = 1; throw new Exception( G::loadTranslation( 'ID_OVERWRITE_PMTABLE' ) ); - } - if (isset( $_SESSION['PROCESS'] ) && !empty( $_SESSION['PROCESS'] )) { - if($_SESSION['PROCESS'] != $tableData->PRO_UID) { - if(!in_array($tableData->PRO_UID, $proUids)) { - $validationType = 2; - if($fromConfirm == $validationType) { - throw new Exception( G::loadTranslation( 'ID_OVERWRITE_RELATED_PROCESS' ) ); - } else { - $tableData->PRO_UID = $_SESSION['PROCESS']; - } + } + if($currentPRO_UID != $tableData->PRO_UID) { + if(!in_array($tableData->PRO_UID, $proUids)) { + $validationType = 2; + if(($fromConfirm == $validationType || !$fromConfirm) && !$isPmTable) { + throw new Exception( G::loadTranslation( 'ID_OVERWRITE_RELATED_PROCESS' ) ); } else { - $validationType = 3; - throw new Exception( G::loadTranslation( 'ID_ALREADY_RELATED_TABLE ' ) ); + $tableData->PRO_UID = $currentPRO_UID; } + } else { + $validationType = 3; + throw new Exception( G::loadTranslation( 'ID_ALREADY_RELATED_TABLE ' ) ); } } } + if ($overWrite) { if ($tableExists !== false) { $additionalTable->deleteAll( $tableExists['ADD_TAB_UID'] ); diff --git a/workflow/engine/templates/pmTables/list.js b/workflow/engine/templates/pmTables/list.js index 3d1762686..a6497ceb2 100755 --- a/workflow/engine/templates/pmTables/list.js +++ b/workflow/engine/templates/pmTables/list.js @@ -617,7 +617,7 @@ ImportPMTable = function(){ PMExt.warning(_('ID_WARNING'), result.message.replace(/\n/g,'
')); } else { - if(result.fromAdmin) { /*from admin tab*/ + if(result.fromAdmin) { /* from admin tab */ if(result.validationType == 1) { Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,'
'), function(btn, text){ if (btn == 'yes'){ @@ -632,6 +632,7 @@ ImportPMTable = function(){ var result = Ext.util.JSON.decode(resp.responseText); if (result.success) { PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + Ext.getCmp('infoGrid').getStore().reload(); } else { if(result.validationType == 2) { PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); @@ -645,14 +646,27 @@ ImportPMTable = function(){ } } }); - Ext.getCmp('infoGrid').getStore().reload(); + } else { + Ext.Ajax.request({ + url: 'pmTablesProxy/import', + params: { + 'form[FROM_CONFIRM]':'clear', + 'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin') + }, + success: function(resp) { + var result = Ext.util.JSON.decode(resp.responseText); + PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + Ext.getCmp('infoGrid').getStore().reload(); + } + }); } + Ext.getCmp('infoGrid').getStore().reload(); }); return false; } else { PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); } - } else { /*from designer tab*/ + } else { /* from designer tab */ if(result.validationType == 1) { Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,'
'), function(btn, text){ if (btn == 'yes'){ @@ -667,6 +681,7 @@ ImportPMTable = function(){ var result = Ext.util.JSON.decode(resp.responseText); if (result.success) { PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + Ext.getCmp('infoGrid').getStore().reload(); } else { if(result.validationType == 2) { Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,'
'), function(btn, text){ @@ -682,6 +697,7 @@ ImportPMTable = function(){ var result = Ext.util.JSON.decode(resp.responseText); if (result.success) { PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + Ext.getCmp('infoGrid').getStore().reload(); } else { PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); } @@ -708,7 +724,62 @@ ImportPMTable = function(){ } }); Ext.getCmp('infoGrid').getStore().reload(); + } else { + Ext.Ajax.request({ + url: 'pmTablesProxy/import', + params: { + 'form[FROM_CONFIRM]':'2', + 'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'), + 'form[PRO_UID_HELP]':PRO_UID + }, + success: function(resp) { + var result = Ext.util.JSON.decode(resp.responseText); + if(result.validationType == 2) { + /*add code if related process*/ + Ext.MessageBox.confirm('Confirmation', result.message.replace(/\n/g,'
'), function(btn, text){ + if (btn == 'yes'){ + Ext.Ajax.request({ + url: 'pmTablesProxy/import', + params: { + 'form[FROM_CONFIRM]':'overWrite', + 'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'), + 'form[PRO_UID_HELP]':PRO_UID + }, + success: function(resp){ + var result = Ext.util.JSON.decode(resp.responseText); + if (result.success) { + PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + Ext.getCmp('infoGrid').getStore().reload(); + } else { + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + }, + failure: function(obj, resp){ + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + }); + Ext.getCmp('infoGrid').getStore().reload(); + } + }); + return false; + } else { + var result = Ext.util.JSON.decode(resp.responseText); + if (result.success) { + PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + Ext.getCmp('infoGrid').getStore().reload(); + } else { + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + } + //PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + }, + failure: function(obj, resp){ + var result = Ext.util.JSON.decode(resp.responseText); + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + }); } + Ext.getCmp('infoGrid').getStore().reload(); }); return false; } @@ -720,12 +791,14 @@ ImportPMTable = function(){ params: { 'form[FROM_CONFIRM]':'overWrite', 'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'), - 'form[OVERWRITE]':true + 'form[OVERWRITE]':true, + 'form[PRO_UID_HELP]':PRO_UID }, success: function(resp){ var result = Ext.util.JSON.decode(resp.responseText); if (result.success) { PMExt.notify(_('ID_IMPORT_RESULT'), result.message); + Ext.getCmp('infoGrid').getStore().reload(); } else { PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); }