Index: t3lib/class.t3lib_tceforms.php =================================================================== --- t3lib/class.t3lib_tceforms.php (révision 10013) +++ t3lib/class.t3lib_tceforms.php (copie de travail) @@ -1579,8 +1579,8 @@ $inlineParent = $this->inline->getStructureLevel(-1); if(is_array($inlineParent) && $inlineParent['uid']) { if ($inlineParent['config']['foreign_table'] == $table && $inlineParent['config']['foreign_unique'] == $field) { - $uniqueIds = $this->inline->inlineData['unique'][$this->inline->inlineNames['object'].'['.$table.']']['used']; - $PA['fieldChangeFunc']['inlineUnique'] = "inline.updateUnique(this,'".$this->inline->inlineNames['object'].'['.$table."]','".$this->inline->inlineNames['form']."','".$row['uid']."');"; + $uniqueIds = $this->inline->inlineData['unique'][$this->inline->inlineNames['object'] . t3lib_TCEforms_inline::Structure_Separator . $table]['used']; + $PA['fieldChangeFunc']['inlineUnique'] = "inline.updateUnique(this,'".$this->inline->inlineNames['object'] . t3lib_TCEforms_inline::Structure_Separator . $table."','".$this->inline->inlineNames['form']."','".$row['uid']."');"; } // hide uid of parent record for symmetric relations if ($inlineParent['config']['foreign_table'] == $table && ($inlineParent['config']['foreign_field'] == $field || $inlineParent['config']['symmetric_field'] == $field)) { @@ -3659,7 +3659,7 @@ $inlineParent = $this->inline->getStructureLevel(-1); if(is_array($inlineParent) && $inlineParent['uid']) { if ($inlineParent['config']['foreign_table'] == $table && $inlineParent['config']['foreign_unique'] == $field) { - $objectPrefix = $this->inline->inlineNames['object'].'['.$table.']'; + $objectPrefix = $this->inline->inlineNames['object'] . t3lib_TCEforms_inline::Structure_Separator . $table; $aOnClickInline = $objectPrefix.'|inline.checkUniqueElement|inline.setUniqueElement'; $rOnClickInline = 'inline.revertUnique(\''.$objectPrefix.'\',null,\''.$uid.'\');'; } Index: t3lib/class.t3lib_tceforms_inline.php =================================================================== --- t3lib/class.t3lib_tceforms_inline.php (révision 10013) +++ t3lib/class.t3lib_tceforms_inline.php (copie de travail) @@ -1316,7 +1316,9 @@ 'inline.domAddRecordDetails(\'' . $domObjectId . '\',\'' . $objectPrefix . '\',' . ($expandSingle ? '1' : '0') . ',json.data);', ) ); - + if ($config['foreign_unique']) { + $jsonArray['scriptCall'][] = 'inline.removeUsed(\'' . $objectPrefix . '\',\'' . $record['uid'] . '\');'; + } $this->getCommonScriptCalls($jsonArray, $config); // Collapse all other records if requested: if (!$collapseAll && $expandSingle) { Index: t3lib/jsfunc.inline.js =================================================================== --- t3lib/jsfunc.inline.js (révision 10013) +++ t3lib/jsfunc.inline.js (copie de travail) @@ -319,35 +319,72 @@ this.setUnique(objectId, recordUid, uid); }, + // Remove all select items already used + // from a newly retrieved/expanded record + removeUsed: function(objectId, recordUid) { + if (this.data.unique && this.data.unique[objectId]) { + var unique = this.data.unique[objectId]; + if (unique.type == 'select') { + var formName = this.prependFormFieldNames+this.parseObjectId('parts', objectId, 3, 1, true); + var formObj = document.getElementsByName(formName); + var recordObj = document.getElementsByName(this.prependFormFieldNames+'['+unique.table+']['+recordUid+']['+unique.field+']'); + var values = $H(unique.used).values(); + if (recordObj.length) { + var selectedValue = recordObj[0].options[recordObj[0].selectedIndex].value; + for (var i=0; i