diff --git a/gulliver/js/form/core/form.js b/gulliver/js/form/core/form.js index 75d6b58b3..522eb477e 100755 --- a/gulliver/js/form/core/form.js +++ b/gulliver/js/form/core/form.js @@ -192,7 +192,20 @@ function G_Field ( form, element, name ) var oAux2 = oAux.getElementByName(row, newcont[i].name); if (oAux2) { oAux2.setValue(newcont[i].value); - oAux2.setContent(newcont[i].content); + + if (oAux2.element.type != "textarea") { + oAux2.setContent(newcont[i].content); + } else { + //This code fragment is copy of method G_Text.setContent() + oAux2.element.value = ""; + + if (newcont[i].content.options) { + if (newcont[i].content.options[0]) { + oAux2.element.value = newcont[i].content.options[0].value; + } + } + } + oAux2.updateDepententFields(); // this line is also needed to trigger the onchange event to trigger the calculation of // sumatory or average functions in text fields diff --git a/gulliver/js/maborak/core/maborak.js b/gulliver/js/maborak/core/maborak.js index 7ef5ba2e0..3e38fa51c 100644 --- a/gulliver/js/maborak/core/maborak.js +++ b/gulliver/js/maborak/core/maborak.js @@ -965,7 +965,8 @@ for(i=0;i-1){var arrayAux=oAux.name.split("][");grid=arrayAux[0];row=parseInt(arrayAux[1]);fieldName=arrayAux[2];gridField=gridGetAllFieldAndValue(oAux.name,0);if(Fields.length>0){aux=Fields;aux.push('?');if(aux.join('*').indexOf(fieldName+'*')==-1){Fields.push(fieldName);eval("var oAux2 = {"+fieldName+":'"+oAux.value()+"'}");fields=fields.concat(oAux2);}}else{Fields.push(fieldName);eval("var oAux2 = {"+fieldName+":'"+oAux.value()+"'}");fields=fields.concat(oAux2);}} else{aux=Fields;aux.push('?');oAux=me.dependentFields[i].dependentOf[0];if(Fields.length>0){if(aux.join('*').indexOf(oAux.name+'*')==-1){Fields.push(oAux.name);fields=fields.concat(me.dependentFields[i].dependentOf);}}else{Fields.push(oAux.name);fields=fields.concat(me.dependentFields[i].dependentOf);}}}}} var callServer;callServer=new leimnud.module.rpc.xmlhttp({url:me.form.ajaxServer,async:false,method:"POST",args:"function=reloadField"+"&form="+encodeURIComponent(me.form.id)+"&fields="+encodeURIComponent(fields.toJSONString())+((grid!="")?"&grid="+grid+((gridField!="")?"&gridField="+encodeURIComponent("{"+gridField+"}"):""):"")+((row>0)?"&row="+row:"")});callServer.make();var response=callServer.xmlhttp.responseText;if(response.substr(0,1)==='['){var newcont;eval('newcont='+response+';');if(grid==''){for(var i=0;icontent->{$attribute} = $value; break; case 'options': - if ($sendContent[$r]->content->type != 'text') { + if ($sendContent[$r]->content->type != "text" && $sendContent[$r]->content->type != "textarea") { $sendContent[$r]->content->{$attribute} = toJSArray($value); } else { $sendContent[$r]->content->{$attribute} = toJSArray((isset($value[$_POST["row"]])? array($value[$_POST["row"]]) : array())); diff --git a/gulliver/system/class.xmlform.php b/gulliver/system/class.xmlform.php index d00e52253..cdaf17738 100755 --- a/gulliver/system/class.xmlform.php +++ b/gulliver/system/class.xmlform.php @@ -1982,24 +1982,32 @@ class XmlForm_Field_Textarea extends XmlForm_Field * @param string owner * @return string */ - public function renderGrid ($values = null, $owner = null) + public function renderGrid ($values = array(), $owner = null) { $this->gridFieldType = 'textarea'; if ($owner->mode != 'view') { $this->renderMode = $this->modeForGrid; } - $result = array (); + + $result = array(); + $arrayOptions = array(); + $r = 1; foreach ($values as $v) { - $this->executeSQL( $owner, $r ); - if (isset( $this->sqlOption )) { - $firstElement = key( $this->sqlOption ); - if (isset( $firstElement )) { - $v = $firstElement; - } + $this->executeSQL($owner, $r); + + if (isset($this->sqlOption)) { + $firstElement = key($this->sqlOption); } + + if (isset($firstElement)) { + $v = $firstElement; + } + + $arrayOptions[$r] = $v; + $scrollStyle = $this->style . "overflow:scroll;overflow-y:scroll;overflow-x:hidden;overflow:-moz-scrollbars-vertical;"; $html = ''; if ($this->renderMode == 'edit') { @@ -2031,6 +2039,8 @@ class XmlForm_Field_Textarea extends XmlForm_Field $result[] = $html; $r ++; } + + $this->options = $arrayOptions; return $result; } } diff --git a/workflow/engine/classes/class.AppSolr.php b/workflow/engine/classes/class.AppSolr.php index 4d5667ee2..d45c7a05c 100755 --- a/workflow/engine/classes/class.AppSolr.php +++ b/workflow/engine/classes/class.AppSolr.php @@ -1547,7 +1547,7 @@ class AppSolr } // search data from DB $xmlDoc = "\n"; - $xmlDoc .= "\n"; + $xmlDoc .= "\n"; //get all application data from DB of all applications and delegations $aAPPUIDs = array(); diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index eea3faf7f..21499df7a 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -3288,5 +3288,30 @@ class wsBase return $result; } } + + /** + * ClaimCase + * + * @param string $userId + * @param string $guid + * @param string $delIndex + * @return $result will return an object + */ + public function claimCase($userId, $guid, $delIndex) + { + try { + G::LoadClass('case'); + $oCase = new Cases(); + $oCase->loadCase($guid); + $oCase->setCatchUser($guid, $delIndex, $userId); + + $result = new wsResponse(0, G::LoadTranslation("ID_COMMAND_EXECUTED_SUCCESSFULLY")); + return $result; + } catch (Exception $e) { + + $result = new wsResponse(100, $e->getMessage()); + return $result; + } + } } diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index c464d3aed..5e804b41c 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -1084,7 +1084,7 @@ class workspaceTools mysql_select_db($database); $script = file_get_contents($filename); - $lines = explode(";\n", $script); + $lines = explode("\n", $script); $previous = null; foreach ($lines as $j => $line) { // Remove comments from the script diff --git a/workflow/engine/classes/model/AdditionalTables.php b/workflow/engine/classes/model/AdditionalTables.php index 65cc7b5ca..22e511165 100755 --- a/workflow/engine/classes/model/AdditionalTables.php +++ b/workflow/engine/classes/model/AdditionalTables.php @@ -384,24 +384,31 @@ class AdditionalTables extends BaseAdditionalTables $countField = count($fieldsTable); $stringOr = '$oCriteria->add('; $cont = 0; + $fieldAppUid = ''; foreach ($fieldsTable as $value) { - if (($cont+1) == $countField) { - if ($aData['FIELDS'][$cont]['FLD_TYPE'] == 'VARCHAR') { - $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "%' . $filter . '%", Criteria::LIKE)'; - } else { - $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "' . $filter . '", Criteria::LIKE)'; - } + if ($value != 'APP_UID') { + if (($cont+1) == $countField) { + if ($aData['FIELDS'][$cont]['FLD_TYPE'] == 'VARCHAR') { + $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "%' . $filter . '%", Criteria::LIKE)'; + } else { + $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "' . $filter . '", Criteria::LIKE)'; + } + } else { + if ($aData['FIELDS'][$cont]['FLD_TYPE'] == 'VARCHAR') { + $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "%' . $filter . '%", Criteria::LIKE)->addOr('; + } else { + $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "' . $filter . '", Criteria::LIKE)->addOr('; + } + } } else { - if ($aData['FIELDS'][$cont]['FLD_TYPE'] == 'VARCHAR') { - $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "%' . $filter . '%", Criteria::LIKE)->addOr('; - } else { - $stringOr .= '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . strtoupper($value) . ', "' . $filter . '", Criteria::LIKE)->addOr('; - } + $fieldAppUid = $cont; } $cont++; } - for ($c = 1; $c < $countField; $c ++) { - $stringOr .= ')'; + for ($c = 0; $c < $countField-1; $c++) { + if ($fieldAppUid !== $c) { + $stringOr .= ')'; + } } $stringOr .= ');'; eval($stringOr); diff --git a/workflow/engine/methods/services/pmos2.wsdl b/workflow/engine/methods/services/pmos2.wsdl index 00da67108..507c175d8 100755 --- a/workflow/engine/methods/services/pmos2.wsdl +++ b/workflow/engine/methods/services/pmos2.wsdl @@ -873,6 +873,24 @@ + + + + + + + + + + + + + + + + + + @@ -1101,6 +1119,12 @@ + + + + + + @@ -1263,6 +1287,10 @@ + + + + @@ -1627,6 +1655,15 @@ + + + + + + + + + diff --git a/workflow/engine/methods/services/soap2.php b/workflow/engine/methods/services/soap2.php index 2f4c827c7..3a8395199 100755 --- a/workflow/engine/methods/services/soap2.php +++ b/workflow/engine/methods/services/soap2.php @@ -1208,6 +1208,30 @@ function addCaseNote($params) return $result; } +function claimCase($params) +{ + $vsResult = isValidSession($params->sessionId); + if ($vsResult->status_code !== 0) { + return $vsResult; + } + + if (ifPermission($params->sessionId, 'PM_CASES') == 0) { + $result = new wsResponse(2, G::LoadTranslation('ID_NOT_PRIVILEGES')); + + return $result; + } + + G::LoadClass('sessions'); + + $oSessions = new Sessions(); + $session = $oSessions->getSessionUser($params->sessionId); + + $ws = new wsBase(); + $res = $ws->claimCase($session['USR_UID'], $params->guid, $params->delIndex); + + return $res; +} + $server = new SoapServer($wsdl); $server->addFunction("Login"); @@ -1251,5 +1275,6 @@ $server->addFunction("cancelCase"); $server->addFunction("pauseCase"); $server->addFunction("unpauseCase"); $server->addFunction("addCaseNote"); +$server->addFunction("claimCase"); $server->handle();