From f8dc68e9a1bd31e0bb509474387296da32e22b46 Mon Sep 17 00:00:00 2001
From: Susanne Moog <typo3@susannemoog.de>
Date: Tue, 19 Oct 2010 14:01:21 +0000
Subject: [PATCH] Fixed bug #13294: IRRE deleted combo records are still
 validated by TBE_EDITOR (Thanks to Marcel Greter)

git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@9166 709f56b5-9817-0410-a4d7-c38de5d9e867
---
 ChangeLog                  |  1 +
 t3lib/jsfunc.inline.js     | 14 ++++++++++----
 typo3/jsfunc.tbe_editor.js | 18 +++++++++++++-----
 3 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 143caf5e8c79..0962556bcbc3 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@
 2010-10-19  Susanne Moog  <typo3@susanne-moog.de>
 
 	* Fixed bug #15095: Bug: The Web>Versioning view has style issues resulting in "wrong layers"
+	* Fixed bug #13294: IRRE deleted combo records are still validated by TBE_EDITOR (Thanks to Marcel Greter)
 
 2010-10-18  Steffen Kamper  <steffen@typo3.org>
 
diff --git a/t3lib/jsfunc.inline.js b/t3lib/jsfunc.inline.js
index cfdb8635e2fb..6c6db631c914 100644
--- a/t3lib/jsfunc.inline.js
+++ b/t3lib/jsfunc.inline.js
@@ -61,8 +61,8 @@ var inline = {
 				$(objectId + '_iconcontainer').addClassName('loading-indicator');
 			}
 			return this.getRecordDetails(objectId, returnURL);
-		}		
-		
+		}
+
 		var currentState = '';
 		var collapse = new Array();
 		var expand = new Array();
@@ -118,7 +118,7 @@ var inline = {
 			ucFormObj[0].value = value;
 		}
 	},
-	
+
 	getRecordDetails: function(objectId, returnURL) {
 		inline.makeAjaxCall('getRecordDetails', [inline.getNumberOfRTE(), objectId, returnURL], true);
 		return false;
@@ -717,6 +717,12 @@ var inline = {
 			TBE_EDITOR.removeElementArray(removeStack);
 		}
 
+			// Mark this container as deleted
+		var deletedRecordContainer = $(objectId + '_div');
+		if (deletedRecordContainer) {
+			deletedRecordContainer.addClassName('inlineIsDeletedRecord');
+		}
+
 			// If the record is new and was never saved before, just remove it from DOM:
 		if (this.isNewRecord(objectId) || options && options.forceDirectRemoval) {
 			this.fadeAndRemove(objectId+'_div');
@@ -933,7 +939,7 @@ var inline = {
 
 	setVisibilityOfElementsWithClassName: function(action, selector, parentElement) {
 		var domObjects = Selector.findChildElements($(parentElement), [selector]);
-		if (action == 'hide') { 
+		if (action == 'hide') {
 			$A(domObjects).each(function(domObject) { new Effect.Fade(domObject); });
 		} else if (action == 'show') {
 			$A(domObjects).each(function(domObject) { new Effect.Appear(domObject); });
diff --git a/typo3/jsfunc.tbe_editor.js b/typo3/jsfunc.tbe_editor.js
index 8dc8db78fe7a..f8b1f42fa28d 100644
--- a/typo3/jsfunc.tbe_editor.js
+++ b/typo3/jsfunc.tbe_editor.js
@@ -73,7 +73,7 @@ var TBE_EDITOR = {
 		cm: new Image(),
 		sel: new Image(),
 		clear: new Image()
-	},	
+	},
 
 	// Handling of data structures:
 	addElements: function(elements) {
@@ -195,6 +195,14 @@ var TBE_EDITOR = {
 		if (type) {
 			if (type == 'required') {
 				form = document[TBE_EDITOR.formname][elementName];
+					// Check if we are within a deleted inline element
+				var testNode = $(form.parentNode);
+				while(testNode) {
+					if (testNode.hasClassName && testNode.hasClassName('inlineIsDeletedRecord')) {
+						return result;
+					}
+					testNode = $(testNode.parentNode);
+				}
 				if (form) {
 					var value = form.value;
 					if (!value || elementData.additional && elementData.additional.isPositiveNumber && (isNaN(value) || Number(value) <= 0)) {
@@ -220,7 +228,7 @@ var TBE_EDITOR = {
 						// special treatment for file uploads
 					var tempObj = document[TBE_EDITOR.formname][elementName.replace(/^data/, 'data_files')];
 					numberOfElements = form.length;
-					
+
 					if (tempObj && tempObj.type == 'file' && tempObj.value) {
 						numberOfElements++; // Add new uploaded file to the number of elements
 					}
@@ -475,7 +483,7 @@ var TBE_EDITOR = {
 	},
 	submitForm: function() {
 		if (TBE_EDITOR.doSaveFieldName) {
-			document[TBE_EDITOR.formname][TBE_EDITOR.doSaveFieldName].value=1;			
+			document[TBE_EDITOR.formname][TBE_EDITOR.doSaveFieldName].value=1;
 		}
 		document[TBE_EDITOR.formname].submit();
 	},
@@ -550,13 +558,13 @@ var TBE_EDITOR = {
 	},
 	toggle_display_states: function(id, state_1, state_2) {
 		var node = document.getElementById(id);
-		if (node) {	
+		if (node) {
 			switch (node.style.display) {
 				case state_1:
 					node.style.display = state_2;
 					break;
 				case state_2:
-					node.style.display = state_1; 
+					node.style.display = state_1;
 					break;
 			}
 		}
-- 
GitLab