diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 99e9e4479..1e3a1dcf9 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -1078,6 +1078,7 @@ class Cases $Fields['DEL_INDEX'] = 1; } $inbox = new ListInbox(); + unset($Fields['DEL_INIT_DATE']); $inbox->update(array_merge($Fields, $arrayNewCaseTitleAndDescription)); /*----------------------------------********---------------------------------*/ diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 5ad3d3308..3fc95bac3 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -805,7 +805,6 @@ class Derivation unset( $aSP ); } //end foreach - /* Start Block : UPDATES APPLICATION */ //Set THE APP_STATUS diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index a2a446301..d53c5b749 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -219,18 +219,12 @@ class pmDynaform $cells = array(); foreach ($json->columns as $column) { //data - if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $value === "hidden") { + if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "suggest" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $value === "hidden") { array_push($cells, array( "value" => isset($row[$column->name]) ? $row[$column->name] : "", "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : (isset($row[$column->name]) ? $row[$column->name] : "") )); } - if ($column->type === "suggest") { - array_push($cells, array( - "value" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : "", - "label" => isset($row[$column->name]) ? $row[$column->name] : "" - )); - } } $rows[$keyRow] = $cells; } diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index 098598a99..944ab1734 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -1357,6 +1357,10 @@ class workspaceTools } if ( !$flag && !is_null($flagFunction) ) { + //Replace TYPE by ENGINE + $script = file_get_contents($filename); + $script = preg_replace('/\)TYPE\=|\)\sTYPE\=/', ')ENGINE=', $script); + file_put_contents($filename,$script); $aHost = explode(':',$parameters['dbHost']); $dbHost = $aHost[0]; if(isset($aHost[1])){ diff --git a/workflow/engine/classes/model/AdditionalTables.php b/workflow/engine/classes/model/AdditionalTables.php index e13391417..115c2c76d 100755 --- a/workflow/engine/classes/model/AdditionalTables.php +++ b/workflow/engine/classes/model/AdditionalTables.php @@ -751,9 +751,11 @@ class AdditionalTables extends BaseAdditionalTables } else { // grids foreach ($caseData[$dKey] as $dIndex => $dRow) { - foreach ($dRow as $k => $v) { - if (trim($v) === '') { - $caseData[$dKey][$dIndex][$k] = null; + if (!is_array($dRow)) { + foreach ($dRow as $k => $v) { + if (trim($v) === '') { + $caseData[$dKey][$dIndex][$k] = null; + } } } } diff --git a/workflow/engine/controllers/pmTablesProxy.php b/workflow/engine/controllers/pmTablesProxy.php index 0fd99f919..988d4b04a 100755 --- a/workflow/engine/controllers/pmTablesProxy.php +++ b/workflow/engine/controllers/pmTablesProxy.php @@ -915,17 +915,31 @@ class pmTablesProxy extends HttpProxyController */ public function import ($httpData) { + $fromAdmin = false; + if (isset( $_POST["form"]["TYPE_TABLE"] ) && ! empty( $_POST["form"]["TYPE_TABLE"] )) { + if($_POST["form"]["TYPE_TABLE"] == 'admin') { + $fromAdmin = true; + } + } + require_once 'classes/model/AdditionalTables.php'; try { $result = new stdClass(); $errors = ''; + $fromConfirm = false; $overWrite = isset( $_POST['form']['OVERWRITE'] ) ? true : false; + + if (isset( $_POST["form"]["FROM_CONFIRM"] ) && ! empty( $_POST["form"]["FROM_CONFIRM"] )) { + $fromConfirm = $_POST["form"]["FROM_CONFIRM"]; + $_FILES['form'] = $_SESSION['FILES_FORM']; + } //save the file if ($_FILES['form']['error']['FILENAME'] !== 0) { throw new Exception( G::loadTranslation( 'ID_PMTABLE_UPLOADING_FILE_PROBLEM' ) ); } + $_SESSION['FILES_FORM'] = $_FILES['form']; $oAdditionalTables = new AdditionalTables(); $tableNameMap = array (); @@ -935,7 +949,14 @@ class pmTablesProxy extends HttpProxyController $PUBLIC_ROOT_PATH = PATH_DATA . 'sites' . PATH_SEP . SYS_SYS . PATH_SEP . 'public' . PATH_SEP; $filename = $_FILES['form']['name']['FILENAME']; $tempName = $_FILES['form']['tmp_name']['FILENAME']; - G::uploadFile( $tempName, $PUBLIC_ROOT_PATH, $filename ); + + if(!$fromConfirm) { + G::uploadFile( $tempName, $PUBLIC_ROOT_PATH, $filename ); + } + + if ($fromConfirm == 'clear') { + $fromConfirm = true; + } $fileContent = file_get_contents( $PUBLIC_ROOT_PATH . $filename ); @@ -947,6 +968,17 @@ class pmTablesProxy extends HttpProxyController $fsData = intval( fread( $fp, 9 ) ); //reading the metadata $sType = fread( $fp, $fsData ); + $pmTables = $this->getList(''); + $proUids = Array(); + if($pmTables['count']) { + $pmTables = $pmTables['rows']; + foreach($pmTables as $val) { + if($val['PRO_UID'] != '') { + $proUids[] = $val['PRO_UID']; + } + } + } + // first create the tables structures while (! feof( $fp )) { @@ -964,7 +996,57 @@ class pmTablesProxy extends HttpProxyController $additionalTable = new additionalTables(); $tableExists = $additionalTable->loadByName( $contentSchema['ADD_TAB_NAME'] ); $tableNameMap[$contentSchema['ADD_TAB_NAME']] = $contentSchema['ADD_TAB_NAME']; + + $tableData = new stdClass(); + if (isset( $_POST["form"]["PRO_UID"] ) && ! empty( $_POST["form"]["PRO_UID"] )) { + $tableData->PRO_UID = $_POST["form"]["PRO_UID"]; + } else { + $tableData->PRO_UID = isset( $contentSchema["PRO_UID"] ) ? $contentSchema["PRO_UID"] : ""; + } + + $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) && !$isPmTable) { + $validationType = 2; + throw new Exception( G::loadTranslation( 'ID_NO_RELATED_PROCESS' ) ); + } + } else { /* from designer tab */ + if($isPmTable){ + $validationType = ''; + throw new Exception( G::loadTranslation( 'ID_NO_REPORT_TABLE' ) ); + } + if ($tableExists !== false && !$fromConfirm) { + $validationType = 1; + throw new Exception( G::loadTranslation( 'ID_OVERWRITE_PMTABLE' ) ); + } + 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 { + $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'] ); @@ -995,18 +1077,11 @@ class pmTablesProxy extends HttpProxyController $columns[] = $column; } - $tableData = new stdClass(); $tableData->REP_TAB_UID = $contentSchema['ADD_TAB_UID']; $tableData->REP_TAB_NAME = $contentSchema['ADD_TAB_NAME']; $tableData->REP_TAB_DSC = $contentSchema['ADD_TAB_DESCRIPTION']; $tableData->REP_TAB_CONNECTION = $contentSchema['DBS_UID']; - - if (isset( $_POST["form"]["PRO_UID"] ) && ! empty( $_POST["form"]["PRO_UID"] )) { - $tableData->PRO_UID = $_POST["form"]["PRO_UID"]; - } else { - $tableData->PRO_UID = isset( $contentSchema["PRO_UID"] ) ? $contentSchema["PRO_UID"] : ""; - } - + $tableData->REP_TAB_TYPE = isset( $contentSchema['ADD_TAB_TYPE'] ) ? $contentSchema['ADD_TAB_TYPE'] : ''; $tableData->REP_TAB_GRID = isset( $contentSchema['ADD_TAB_GRID'] ) ? $contentSchema['ADD_TAB_GRID'] : ''; $tableData->columns = G::json_encode( $columns ); @@ -1147,6 +1222,8 @@ class pmTablesProxy extends HttpProxyController $result->message = $msg; } catch (Exception $e) { $result = new stdClass(); + $result->fromAdmin = $fromAdmin; + $result->validationType = $validationType; $result->errorType = 'error'; $result->buildResult = ob_get_contents(); ob_end_clean(); diff --git a/workflow/engine/js/controls/variablePicker.js b/workflow/engine/js/controls/variablePicker.js index c3b39db45..8dac84bd3 100755 --- a/workflow/engine/js/controls/variablePicker.js +++ b/workflow/engine/js/controls/variablePicker.js @@ -4,6 +4,7 @@ var setVariablePickerJS = function(){ if(this.value.substring(0,5) == 'gridt') { try { updateEditorContent(this.value.substring(5)); + closePluginPopup(); } catch(err) { closePluginPopup(); } @@ -21,6 +22,7 @@ var setVariablePickerJS = function(){ if(element.value.substring(0,5) == 'gridt') { try { updateEditorContent(element.value.substring(5)); + closePluginPopup(); } catch(err) { closePluginPopup(); } diff --git a/workflow/engine/methods/cases/cases_OpenToRevise.php b/workflow/engine/methods/cases/cases_OpenToRevise.php index cefc8461d..ac920d716 100755 --- a/workflow/engine/methods/cases/cases_OpenToRevise.php +++ b/workflow/engine/methods/cases/cases_OpenToRevise.php @@ -71,6 +71,13 @@ $_SESSION['STEP_POSITION'] = 0; /* Redirect to next step */ $aNextStep = $oCase->getNextSupervisorStep( $_SESSION['PROCESS'], 0 ); -$sPage = "cases_StepToRevise?type=DYNAFORM&PRO_UID=" . $aFields['PRO_UID'] . "&DYN_UID=" . $aNextStep['UID'] . "&APP_UID=$sAppUid&DEL_INDEX=$iDelIndex&position=1"; //$aNextStep['PAGE']; -G::header( 'location: ' . $sPage ); - +if($aNextStep['UID'] != ''){ + $sPage = "cases_StepToRevise?type=DYNAFORM&PRO_UID=" . $aFields['PRO_UID'] . "&DYN_UID=" . $aNextStep['UID'] . "&APP_UID=$sAppUid&DEL_INDEX=$iDelIndex&position=1"; //$aNextStep['PAGE']; + G::header( 'location: ' . $sPage ); +}else{ + $aMessage = array (); + $aMessage['MESSAGE'] = G::LoadTranslation( 'ID_SUPERVISOR_DOES_NOT_HAVE_DYNAFORMS' ); + $G_PUBLISH = new Publisher(); + $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); + G::RenderPage( 'publishBlank', 'blank' ); +} \ No newline at end of file diff --git a/workflow/engine/skinEngine/neoclassic/css/form.css b/workflow/engine/skinEngine/neoclassic/css/form.css index 58a553086..5fc8dbfb6 100644 --- a/workflow/engine/skinEngine/neoclassic/css/form.css +++ b/workflow/engine/skinEngine/neoclassic/css/form.css @@ -293,6 +293,7 @@ INPUT { background-color: black; left: 0px; top: 0px; + height:100% !important; } .panel_iframe___processmaker { width: 100%; diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index a9ff7a662..6292f2ee1 100755 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -1539,7 +1539,7 @@ Ext.onReady(function(){ TabPanel.setActiveTab(tabId); } else { - if(name == "processMap" && isBrowserIE()){ + if(name == "processMap" && isBrowserIE() && _PROJECT_TYPE === 'bpmn'){ var windContainer = window.open(uri,"winContainer"); } else { TabPanel.add({ diff --git a/workflow/engine/templates/pmTables/list.js b/workflow/engine/templates/pmTables/list.js index c3d8c44c7..a6497ceb2 100755 --- a/workflow/engine/templates/pmTables/list.js +++ b/workflow/engine/templates/pmTables/list.js @@ -561,6 +561,10 @@ ImportPMTable = function(){ fieldLabel: '', boxLabel: _('ID_OVERWRITE_EXIST'), // 'Overwrite if exists?', name: 'form[OVERWRITE]' + }, { + xtype: 'hidden', + name: 'form[TYPE_TABLE]', + value: (PRO_UID? 'designer' : 'admin') }], buttons: [{ id: 'importPMTableButtonUpload', @@ -613,7 +617,204 @@ ImportPMTable = function(){ PMExt.warning(_('ID_WARNING'), result.message.replace(/\n/g,'
')); } else { - PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + 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'){ + Ext.Ajax.request({ + url: 'pmTablesProxy/import', + params: { + 'form[FROM_CONFIRM]':'overWrite', + 'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'), + 'form[OVERWRITE]':true + }, + 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 { + if(result.validationType == 2) { + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + } + }, + failure: function(obj, resp){ + var result = Ext.util.JSON.decode(resp.responseText); + if(result.validationType == 2) { + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + } + }); + } 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 */ + if(result.validationType == 1) { + 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]':'2', + 'form[TYPE_TABLE]':(PRO_UID? 'designer' : 'admin'), + 'form[OVERWRITE]':true + }, + 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 { + if(result.validationType == 2) { + 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[OVERWRITE]':true + }, + 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 { + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + } + }, + failure: function(obj, resp){ + var result = Ext.util.JSON.decode(resp.responseText); + if(result.validationType == 2) { + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + } + }); + 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; + } + if(result.validationType == 2) { + 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[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,'
')); + } + }, + failure: function(obj, resp){ + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + }); + Ext.getCmp('infoGrid').getStore().reload(); + } + }); + return false; + } else { + PMExt.error(_('ID_ERROR'), result.message.replace(/\n/g,'
')); + } + } } } });