BUG 10253 Error al usar Dependent fields con Suggest field SOLVED
- El proceso adjunto muestra el error. - Several adjustments in suggest fields.
This commit is contained in:
@@ -162,9 +162,11 @@ function G_Field ( form, element, name )
|
||||
for(var i=0;i<newcont.length;i++) {
|
||||
//alert(newcont[i].name + '-' + newcont[i].value);
|
||||
var j=me.form.getElementIdByName(newcont[i].name);
|
||||
me.form.aElements[j].setValue(newcont[i].value);
|
||||
me.form.aElements[j].setContent(newcont[i].content);
|
||||
me.form.aElements[j].updateDepententFields();
|
||||
if (me.form.aElements[j] != 'undefined' ) {
|
||||
me.form.aElements[j].setValue(newcont[i].value);
|
||||
me.form.aElements[j].setContent(newcont[i].content);
|
||||
me.form.aElements[j].updateDepententFields();
|
||||
}
|
||||
/*if (me.form.aElements[j].element.fireEvent) {
|
||||
me.form.aElements[j].element.fireEvent("onchange");
|
||||
} else {
|
||||
|
||||
@@ -955,9 +955,9 @@ parent=parent.parentNode;parent.style.display='none';};this.show=function(parent
|
||||
parent=parent.parentNode;parent.style.display='';};this.setDependentFields=function(dependentFields){var i;if(dependentFields.indexOf(',')>-1){dependentFields=dependentFields.split(',');}
|
||||
else{dependentFields=dependentFields.split('|');}
|
||||
for(i=0;i<dependentFields.length;i++){if(me.form.getElementIdByName(dependentFields[i])>=0){me.dependentFields[i]=me.form.getElementByName(dependentFields[i]);me.dependentFields[i].addDependencie(me);}}};this.addDependencie=function(field){var exists=false;for(i=0;i<me.dependentOf.length;i++)
|
||||
if(me.dependentOf[i]===field)exists=true;if(!exists)me.dependentOf[i]=field;};this.updateDepententFields=function(event){var tempValue;if(me.dependentFields.length===0)return true;var fields=[],Fields=[],i,grid='',row=0;for(i in me.dependentFields){if(me.dependentFields[i].dependentOf){for(var j=0;j<me.dependentFields[i].dependentOf.length;j++){var oAux=me.dependentFields[i].dependentOf[j];if(oAux.name.indexOf('][')>-1){var aAux=oAux.name.split('][');grid=aAux[0];row=aAux[1];fieldName=aAux[2];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);}}
|
||||
if(me.dependentOf[i]===field)exists=true;if(!exists)me.dependentOf[i]=field;};this.updateDepententFields=function(event){var tempValue;if(me.dependentFields.length===0)return true;var fields=[],Fields=[],i,grid='',row=0;for(i in me.dependentFields){console.log("Campos dependient");console.log(i);if(me.dependentFields[i].dependentOf){for(var j=0;j<me.dependentFields[i].dependentOf.length;j++){var oAux=me.dependentFields[i].dependentOf[j];if(oAux.name.indexOf('][')>-1){var aAux=oAux.name.split('][');grid=aAux[0];row=aAux[1];fieldName=aAux[2];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:'')+(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;i<newcont.length;i++){var j=me.form.getElementIdByName(newcont[i].name);me.form.aElements[j].setValue(newcont[i].value);me.form.aElements[j].setContent(newcont[i].content);me.form.aElements[j].updateDepententFields();}}
|
||||
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:'')+(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;i<newcont.length;i++){var j=me.form.getElementIdByName(newcont[i].name);if(me.form.aElements[j]!='undefined'){me.form.aElements[j].setValue(newcont[i].value);me.form.aElements[j].setContent(newcont[i].content);me.form.aElements[j].updateDepententFields();}}}
|
||||
else{for(var i=0;i<newcont.length;i++){var oAux=me.form.getElementByName(grid);if(oAux){var oAux2=oAux.getElementByName(row,newcont[i].name);if(oAux2){oAux2.setValue(newcont[i].value);oAux2.setContent(newcont[i].content);oAux2.updateDepententFields();}}}}}else{alert('Invalid response: '+response);}
|
||||
return true;};this.setValue=function(newValue){me.element.value=newValue;};this.setContent=function(newContent){};this.setAttributes=function(attributes){for(var a in attributes){if(a=='formula'&&attributes[a]){sumaformu(this.element,attributes[a],attributes['mask']);}
|
||||
switch(typeof(attributes[a])){case'string':case'int':case'boolean':if(a!='strTo'){switch(true){case typeof(me[a])==='undefined':case typeof(me[a])==='object':case typeof(me[a])==='function':case a==='isObject':case a==='isArray':break;default:me[a]=attributes[a];}}
|
||||
|
||||
@@ -54,11 +54,16 @@ $G_FORM = new form( $xmlFile, $sPath );
|
||||
$G_FORM->id = urlDecode( $_POST['form'] );
|
||||
$G_FORM->values = isset( $_SESSION[$G_FORM->id] ) ? $_SESSION[$G_FORM->id] : array ();
|
||||
$newValues = (Bootstrap::json_decode( urlDecode( stripslashes( $_POST['fields'] ) ) ));
|
||||
if (isset($_POST['aFieldCurrent'])) {
|
||||
$currentValue = (Bootstrap::json_decode( urlDecode( stripslashes( $_POST['aFieldCurrent'] ) ) ));
|
||||
} else {
|
||||
$currentValue = (Bootstrap::json_decode( urlDecode( stripslashes( $_POST['fields'] ) ) ));
|
||||
}
|
||||
if (isset( $_POST['grid'] )) {
|
||||
$_POST['row'] = (int) $_POST['row'];
|
||||
$aAux = array ();
|
||||
|
||||
foreach ($newValues as $sKey => $newValue) {
|
||||
foreach ($currentValue as $sKey => $newValue) {
|
||||
$newValue = (array) $newValue;
|
||||
$aKeys = array_keys( $newValue );
|
||||
if (count($aKeys)>0) {
|
||||
@@ -154,8 +159,7 @@ foreach ($dependentFields as $d) {
|
||||
if ($sendContent[$r]->content->type != 'text') {
|
||||
$sendContent[$r]->content->{$attribute} = toJSArray( $value );
|
||||
} else {
|
||||
$sendContent[$r]->content->{$attribute} = toJSArray( (isset( $value[$_POST['row']] ) ? array ($value[$_POST['row']]
|
||||
) : array ()) );
|
||||
$sendContent[$r]->content->{$attribute} = toJSArray( (isset( $value[$_POST['row']] ) ? array ($value[$_POST['row']]) : array ()) );
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -199,10 +203,10 @@ function subDependencies ($k, &$G_FORM, &$aux, $grid = '')
|
||||
if ($myDependentFields[$r] == "")
|
||||
unset( $myDependentFields[$r] );
|
||||
}
|
||||
// $mD = $myDependentFields;
|
||||
// foreach( $mD as $ki) {
|
||||
// $myDependentFields = array_merge( $myDependentFields , subDependencies( $ki , $G_FORM , $aux ) );
|
||||
// }
|
||||
$mD = $myDependentFields;
|
||||
foreach( $mD as $ki) {
|
||||
$myDependentFields = array_merge( $myDependentFields , subDependencies( $ki , $G_FORM , $aux ) );
|
||||
}
|
||||
} else {
|
||||
if (! isset($G_FORM->fields[$grid])) {
|
||||
return array ();
|
||||
@@ -221,10 +225,10 @@ function subDependencies ($k, &$G_FORM, &$aux, $grid = '')
|
||||
if ($myDependentFields[$r] == "")
|
||||
unset( $myDependentFields[$r] );
|
||||
}
|
||||
// $mD = $myDependentFields;
|
||||
// foreach( $mD as $ki) {
|
||||
// $myDependentFields = array_merge( $myDependentFields , subDependencies( $ki , $G_FORM , $aux, $grid) );
|
||||
// }
|
||||
$mD = $myDependentFields;
|
||||
foreach( $mD as $ki) {
|
||||
$myDependentFields = array_merge( $myDependentFields , subDependencies( $ki , $G_FORM , $aux, $grid) );
|
||||
}
|
||||
}
|
||||
return $myDependentFields;
|
||||
}
|
||||
|
||||
@@ -1371,7 +1371,7 @@ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek
|
||||
$sSQL = $this->sql;
|
||||
$nCount = preg_match_all( '/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sSQL, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE );
|
||||
|
||||
$sResult = array ();
|
||||
$aResult = array ();
|
||||
if ($nCount) {
|
||||
for ($i = 0; $i < $nCount; $i ++) {
|
||||
if (isset( $match[0][$i][0] ) && isset( $match[2][$i][0] )) {
|
||||
@@ -1560,7 +1560,7 @@ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek
|
||||
$str .= 'value="' . $this->htmlentities( $formVariableKeyValue, ENT_COMPAT, 'utf-8' ) . '" ';
|
||||
$str .= 'type="hidden" />';
|
||||
|
||||
$str .= $this->renderHint();
|
||||
//$str .= $this->renderHint();
|
||||
if (trim( $this->callback ) != '') {
|
||||
$sCallBack = 'try{' . $this->callback . '}catch(e){alert("Suggest Widget call back error: "+e)}';
|
||||
} else {
|
||||
@@ -1571,7 +1571,7 @@ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek
|
||||
$sSQL = $this->sql;
|
||||
$nCount = preg_match_all( '/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/', $sSQL, $match, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE );
|
||||
|
||||
$sResult = array ();
|
||||
$aResult = array ();
|
||||
if ($nCount) {
|
||||
for ($i = 0; $i < $nCount; $i ++) {
|
||||
if (isset( $match[0][$i][0] ) && isset( $match[2][$i][0] )) {
|
||||
@@ -1581,6 +1581,7 @@ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek
|
||||
}
|
||||
|
||||
$depValues = '';
|
||||
$depFieldsLast = '';
|
||||
$i = 1;
|
||||
if (isset( $aResult ) && $aResult) {
|
||||
$sResult = '"' . implode( '","', $aResult ) . '"';
|
||||
@@ -1595,6 +1596,7 @@ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek
|
||||
}
|
||||
|
||||
}
|
||||
$depFieldsLast = 'getField(\''. $rowIdField . '[' . $field . '\').value';
|
||||
$depValues = '+' . $depValues . '+';
|
||||
} else {
|
||||
$sResult = '';
|
||||
@@ -1635,13 +1637,16 @@ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek
|
||||
$sOptions .= 'if (typeof obj != "undefined") { ';
|
||||
$sOptions .= ' var jField = { };';
|
||||
$sOptions .= ' var sField = "[]"; ';
|
||||
$sOptions .= ' var aFieldCurrent = {};';
|
||||
$sOptions .= ' aFieldCurrent[\'' . $this->name . '\'] = obj.id;';
|
||||
$sOptions .= ' var sFieldCurrent = "["+ encodeURIComponent(aFieldCurrent.toJSONString()) + "]"; ';
|
||||
|
||||
if ($count > 0) {
|
||||
for ($cnt = 0; $cnt < $count; $cnt ++) {
|
||||
if ( $this->name == $aDepFields[$cnt] ) {
|
||||
$sOptions .= ' jField[\'' . $aDepFields[$cnt] . '\'] = obj.id;';
|
||||
// } else {
|
||||
// $sOptions .= ' jField[\'' . $aDepFields[$cnt] . '\'] = getField(\'' . $rowIdField . '[' . $aDepFields[$cnt] . '\').value; ';
|
||||
} else {
|
||||
$sOptions .= ' jField[\'' . $aDepFields[$cnt] . '\'] = getField(\'' . $rowIdField . '[' . $aDepFields[$cnt] . '\').value; ';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1655,7 +1660,7 @@ class XmlForm_Field_Suggest extends XmlForm_Field_SimpleText //by neyek
|
||||
$sOptions .= 'indexFieldVal = indexField[0].replace(/\[|\]/g,""); ';
|
||||
|
||||
$sOptions .= 'var response = ajax_function("../gulliver/defaultAjaxDynaform", "reloadField", ';
|
||||
$sOptions .= ' "form=' . $sOwnerId . '&fields=" + sField + "&grid=' . $ownerName . '&row=" + indexFieldVal, "POST" ); ';
|
||||
$sOptions .= ' "form=' . $sOwnerId . '&fields=" + sField + "&grid=' . $ownerName . '&row=" + indexFieldVal + "&aFieldCurrent=" + sFieldCurrent, "POST" ); ';
|
||||
|
||||
$sOptions .= 'if (response.substr(0,1) === \'[\') { ';
|
||||
$sOptions .= ' var newcont; ';
|
||||
|
||||
Reference in New Issue
Block a user