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,'
'));
}