diff --git a/workflow/engine/classes/model/Step.php b/workflow/engine/classes/model/Step.php index 9d7e70642..9be3d056c 100644 --- a/workflow/engine/classes/model/Step.php +++ b/workflow/engine/classes/model/Step.php @@ -386,17 +386,71 @@ class Step extends BaseStep { * @param string $sproUid the uid of the process * @param string $sObjUID the uid of the dynaform */ - function loadInfoAssigDynaform($sproUid,$sObjUID){ - - $oCriteria = new Criteria('workflow'); - $oCriteria->add(StepPeer::PRO_UID, $sproUid); - $oCriteria->add(StepPeer::STEP_UID_OBJ, $sObjUID); - $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM'); - $oDataset = StepPeer::doSelectRS($oCriteria); + function loadInfoAssigDynaform($sproUid,$sObjUID){ + + require_once ( "classes/model/DynaformPeer.php" ); + G::LoadSystem('dynaformhandler'); + + $oC = new Criteria('workflow'); + $oC->add(DynaformPeer::DYN_UID, $sObjUID); + $oC->add(DynaformPeer::PRO_UID, $sproUid); + $oDataset = DynaformPeer::doSelectRS($oC); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aRow = $oDataset->getRow(); - return($aRow); + + + if($aRow['DYN_TYPE']!='xmlform') { + + $oC1 = new Criteria('workflow'); + $oC1->add(DynaformPeer::PRO_UID, $sproUid); + $oC1->add(DynaformPeer::DYN_TYPE, "xmlform"); + $oDataset = DynaformPeer::doSelectRS($oC1); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + while($oDataset->next()){ + $aRow1 = $oDataset->getRow(); + //print_r($aRow1); + $dynHandler = new dynaFormHandler(PATH_DYNAFORM.$_POST['PRO_UID']."/".$aRow1['DYN_UID'].".xml"); + $dynFields = $dynHandler->getFields(); + $sxmlgrid = ''; + $sType = ''; + $check=0; + foreach($dynFields as $field){ + $sType = $this->getAttribute($field, 'type'); + if($sType == 'grid'){ + $sxmlgrid = $this->getAttribute($field, 'xmlgrid'); + $aGridInfo= explode("/",$sxmlgrid); + if($aGridInfo[0] == $sproUid && $aGridInfo[1] == $sObjUID){ + $check=1; + } + } + } + } + return ($check==1)?$aGridInfo:''; + }else{ + $oCriteria = new Criteria('workflow'); + $oCriteria->add(StepPeer::PRO_UID, $sproUid); + $oCriteria->add(StepPeer::STEP_UID_OBJ, $sObjUID); + $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM'); + $oDataset = StepPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $aRow = $oDataset->getRow(); + return($aRow); + } + die; } + function getAttribute($node, $attName){ + + foreach ( $node->attributes as $attribute ) + { + if ( $attribute->name == $attName ) + { + return $attribute->value; + } + + } + } + } // Step diff --git a/workflow/engine/xmlform/dynaforms/dynaforms_Options.xml b/workflow/engine/xmlform/dynaforms/dynaforms_Options.xml index 21a4a8d32..15aa5468f 100644 --- a/workflow/engine/xmlform/dynaforms/dynaforms_Options.xml +++ b/workflow/engine/xmlform/dynaforms/dynaforms_Options.xml @@ -119,7 +119,8 @@ isokDependent = ajax_function('@G::encryptlink(@#dynaformsDelete)','getDynaformAssign','DYN_UID='+uid+'&PRO_UID='+proUid,'POST'); if(isokDependent){ - alert(G_STRINGS.ID_DYNAFORM_ASSIGN);return false; + msgBox(G_STRINGS.ID_DYNAFORM_ASSIGN,"alert"); + return false; } result = ajax_function('@G::encryptlink(@#dynaformsDelete)','getRelationInfDynaform','DYN_UID='+uid,'POST'); labelToshow = (result)?'@G::LoadTranslation(ID_MSG_CONFIRM_DELETE_IDOCUMENT)':'@G::LoadTranslation(ID_MSG_CONFIRM_DELETE_DYNAFORM)';