Index: t3lib/class.t3lib_tceforms.php =================================================================== --- t3lib/class.t3lib_tceforms.php (revision 10402) +++ t3lib/class.t3lib_tceforms.php (working copy) @@ -5681,43 +5681,65 @@ function setFormValueFromBrowseWin(fName,value,label,exclusiveValues) { // var formObj = setFormValue_getFObj(fName); if (formObj && value !== "--div--") { - fObj = formObj[fName+"_list"]; + // Check if the form object has a "_list" element or not + // The "_list" element exists for multiple selection select types + var isMultiple = true; + if (formObj[fName + "_list"]) { + fObj = formObj[fName + "_list"]; + } else { + fObj = formObj[fName]; + var isMultiple = false; + } var len = fObj.length; - // Clear elements if exclusive values are found - if (exclusiveValues) { - var m = new RegExp("(^|,)"+value+"($|,)"); - if (exclusiveValues.match(m)) { - // the new value is exclusive - for (a = len - 1; a >= 0; a--) { - fObj[a] = null; - } - len = 0; - } else if (len == 1) { - m = new RegExp("(^|,)"+fObj.options[0].value+"($|,)"); + + if (isMultiple) { + // Clear elements if exclusive values are found + if (exclusiveValues) { + var m = new RegExp("(^|,)"+value+"($|,)"); if (exclusiveValues.match(m)) { - // the old value is exclusive - fObj[0] = null; + // the new value is exclusive + for (a = len - 1; a >= 0; a--) { + fObj[a] = null; + } len = 0; + } else if (len == 1) { + m = new RegExp("(^|,)"+fObj.options[0].value+"($|,)"); + if (exclusiveValues.match(m)) { + // the old value is exclusive + fObj[0] = null; + len = 0; + } } } - } - // Inserting element - var setOK = 1; - if (!formObj[fName+"_mul"] || formObj[fName+"_mul"].value==0) { - for (a=0;aTBE_EDITOR_fieldChanged_func . ' + // Traversing list and set the hidden-field + setHiddenFromList(fObj,formObj[fName]); + ' . $this->TBE_EDITOR_fieldChanged_func . ' + } + } else { + // The incoming value consists of the table name, an underscore and the uid + // For a single selection field we need only the uid, so we extract it + var uidValue = value; + var pattern = /_(\d+)$/; + var result = value.match(pattern); + if (result != null) { + uidValue = result[1]; + } + // Change the selected value + fObj.value = uidValue; } } } @@ -5863,8 +5885,9 @@ } function setFormValue_getFObj(fName) { // var formObj = ' . $formObj . '; - if (formObj) { - if (formObj[fName] && formObj[fName+"_list"] && formObj[fName+"_list"].type=="select-multiple") { + if (formObj) { + // Take the form object if it is either of type select-one or of type-multiple and it has a "_list" element + if (formObj[fName] && ((formObj[fName].type == "select-one") || (formObj[fName + "_list"] && formObj[fName + "_list"].type == "select-multiple"))) { return formObj; } else { alert("Formfields missing:\n fName: "+formObj[fName]+"\n fName_list:"+formObj[fName+"_list"]+"\n type:"+formObj[fName+"_list"].type+"\n fName:"+fName);