From c522e29d67590973bd16c7a7f0cfc0649a04d4f4 Mon Sep 17 00:00:00 2001
From: Stanislas Rolland <typo3@sjbr.ca>
Date: Wed, 12 Feb 2014 22:07:40 -0500
Subject: [PATCH] [BUGFIX] RTE Image Wizard layout is inconsistent

Solution: Fix form markup inside table tag.
Remove old color class on labels.
Add rtehtmlarea skin file in order to size and position select and
checkboxes correctly in image update tab.
Position correctly window title.

Resolves: #55946
Releases: 6.2
Change-Id: I497c4a3005bd80b5b05edd64e7ebbca1dee3c0ce
Reviewed-on: https://review.typo3.org/27589
Reviewed-by: Stanislas Rolland
Tested-by: Stanislas Rolland
---
 .../rtehtmlarea/Classes/SelectImage.php       | 34 +++++++++----------
 .../htmlarea/skins/default/htmlarea.css       | 31 +++++++++++++++++
 typo3/sysext/t3skin/rtehtmlarea/htmlarea.css  | 31 +++++++++++++++++
 3 files changed, 79 insertions(+), 17 deletions(-)

diff --git a/typo3/sysext/rtehtmlarea/Classes/SelectImage.php b/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
index f1a4a5fd3b7d..c9333b50feab 100644
--- a/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
+++ b/typo3/sysext/rtehtmlarea/Classes/SelectImage.php
@@ -101,6 +101,7 @@ class SelectImage extends \TYPO3\CMS\Recordlist\Browser\ElementBrowser {
 		$this->doc->JScode .= $this->doc->wrapScriptTags('
 			Tree.ajaxID = "SC_alt_file_navframe::expandCollapse";
 		');
+		$this->doc->getPageRenderer()->addCssFile($this->doc->backPath . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3skin') . 'rtehtmlarea/htmlarea.css');
 		$this->doc->getContextMenuCode();
 	}
 
@@ -399,33 +400,32 @@ class SelectImage extends \TYPO3\CMS\Recordlist\Browser\ElementBrowser {
 					});
 					languageSelector += \'</select>\';
 				}
-				var bgColor=\' class="bgColor4"\';
 				var sz="";
-				sz+=\'<table border="0" cellpadding="1" cellspacing="1"><form action="" name="imageData">\';
+				sz+=\'<form action="" name="imageData"><table class="htmlarea-window-table">\';
 				' . (in_array('class', $removedProperties) ? '' : '
 				if(classesImage) {
-					sz+=\'<tr><td\'+bgColor+\'><label for="iClass">' . $GLOBALS['LANG']->getLL('class') . ': </label></td><td>\'+styleSelector+\'</td></tr>\';
+					sz+=\'<tr><td><label for="iClass">' . $GLOBALS['LANG']->getLL('class') . ': </label></td><td>\'+styleSelector+\'</td></tr>\';
 				}') . (in_array('width', $removedProperties) ? '' : '
 				if (!(selectedImageRef && selectedImageRef.src.indexOf("RTEmagic") == -1 && ' . $lockPlainWidth . ')) {
-					sz+=\'<tr><td\'+bgColor+\'><label for="iWidth">' . $GLOBALS['LANG']->getLL('width') . ': </label></td><td><input type="text" id="iWidth" name="iWidth" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';
+					sz+=\'<tr><td><label for="iWidth">' . $GLOBALS['LANG']->getLL('width') . ': </label></td><td><input type="text" id="iWidth" name="iWidth" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';
 				}') . (in_array('height', $removedProperties) ? '' : '
 				if (!(selectedImageRef && selectedImageRef.src.indexOf("RTEmagic") == -1 && ' . $lockPlainHeight . ')) {
-					sz+=\'<tr><td\'+bgColor+\'><label for="iHeight">' . $GLOBALS['LANG']->getLL('height') . ': </label></td><td><input type="text" id="iHeight" name="iHeight" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';
+					sz+=\'<tr><td><label for="iHeight">' . $GLOBALS['LANG']->getLL('height') . ': </label></td><td><input type="text" id="iHeight" name="iHeight" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';
 				}') . (in_array('border', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iBorder">' . $GLOBALS['LANG']->getLL('border') . ': </label></td><td><input type="checkbox" id="iBorder" name="iBorder" value="1" /></td></tr>\';') . (in_array('float', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iFloat">' . $GLOBALS['LANG']->getLL('float') . ': </label></td><td>\'+floatSelector+\'</td></tr>\';') . (in_array('paddingTop', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iPaddingTop">' . $GLOBALS['LANG']->getLL('padding_top') . ': </label></td><td><input type="text" id="iPaddingTop" name="iPaddingTop" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . '></td></tr>\';') . (in_array('paddingRight', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iPaddingRight">' . $GLOBALS['LANG']->getLL('padding_right') . ': </label></td><td><input type="text" id="iPaddingRight" name="iPaddingRight" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';') . (in_array('paddingBottom', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iPaddingBottom">' . $GLOBALS['LANG']->getLL('padding_bottom') . ': </label></td><td><input type="text" id="iPaddingBottom" name="iPaddingBottom" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';') . (in_array('paddingLeft', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iPaddingLeft">' . $GLOBALS['LANG']->getLL('padding_left') . ': </label></td><td><input type="text" id="iPaddingLeft" name="iPaddingLeft" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';') . (in_array('title', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iTitle">' . $GLOBALS['LANG']->getLL('title') . ': </label></td><td><input type="text" id="iTitle" name="iTitle"' . $GLOBALS['TBE_TEMPLATE']->formWidth(20) . ' /></td></tr>\';') . (in_array('alt', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iAlt">' . $GLOBALS['LANG']->getLL('alt') . ': </label></td><td><input type="text" id="iAlt" name="iAlt"' . $GLOBALS['TBE_TEMPLATE']->formWidth(20) . ' /></td></tr>\';') . (in_array('lang', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iBorder">' . $GLOBALS['LANG']->getLL('border') . ': </label></td><td><input type="checkbox" id="iBorder" name="iBorder" value="1" /></td></tr>\';') . (in_array('float', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iFloat">' . $GLOBALS['LANG']->getLL('float') . ': </label></td><td>\'+floatSelector+\'</td></tr>\';') . (in_array('paddingTop', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iPaddingTop">' . $GLOBALS['LANG']->getLL('padding_top') . ': </label></td><td><input type="text" id="iPaddingTop" name="iPaddingTop" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . '></td></tr>\';') . (in_array('paddingRight', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iPaddingRight">' . $GLOBALS['LANG']->getLL('padding_right') . ': </label></td><td><input type="text" id="iPaddingRight" name="iPaddingRight" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';') . (in_array('paddingBottom', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iPaddingBottom">' . $GLOBALS['LANG']->getLL('padding_bottom') . ': </label></td><td><input type="text" id="iPaddingBottom" name="iPaddingBottom" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';') . (in_array('paddingLeft', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iPaddingLeft">' . $GLOBALS['LANG']->getLL('padding_left') . ': </label></td><td><input type="text" id="iPaddingLeft" name="iPaddingLeft" value=""' . $GLOBALS['TBE_TEMPLATE']->formWidth(4) . ' /></td></tr>\';') . (in_array('title', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iTitle">' . $GLOBALS['LANG']->getLL('title') . ': </label></td><td><input type="text" id="iTitle" name="iTitle"' . $GLOBALS['TBE_TEMPLATE']->formWidth(20) . ' /></td></tr>\';') . (in_array('alt', $removedProperties) ? '' : '
+				sz+=\'<tr><td><label for="iAlt">' . $GLOBALS['LANG']->getLL('alt') . ': </label></td><td><input type="text" id="iAlt" name="iAlt"' . $GLOBALS['TBE_TEMPLATE']->formWidth(20) . ' /></td></tr>\';') . (in_array('lang', $removedProperties) ? '' : '
 				if (plugin.getButton("Language")) {
-					sz+=\'<tr><td\'+bgColor+\'><label for="iLang">\' + plugin.editor.getPlugin("Language").localize(\'Language-Tooltip\') + \': </label></td><td>\' + languageSelector + \'</td></tr>\';
+					sz+=\'<tr><td><label for="iLang">\' + plugin.editor.getPlugin("Language").localize(\'Language-Tooltip\') + \': </label></td><td>\' + languageSelector + \'</td></tr>\';
 				}') . (in_array('clickenlarge', $removedProperties) || in_array('data-htmlarea-clickenlarge', $removedProperties) ? '' : '
-				sz+=\'<tr><td\'+bgColor+\'><label for="iClickEnlarge">' . $GLOBALS['LANG']->sL('LLL:EXT:cms/locallang_ttc.xlf:image_zoom', TRUE) . ' </label></td><td><input type="checkbox" name="iClickEnlarge" id="iClickEnlarge" value="0" /></td></tr>\';') . '
-				sz+=\'<tr><td><input type="submit" value="' . $GLOBALS['LANG']->getLL('update') . '" onClick="return setImageProperties();"></td></tr>\';
-				sz+=\'</form></table>\';
+				sz+=\'<tr><td><label for="iClickEnlarge">' . $GLOBALS['LANG']->sL('LLL:EXT:cms/locallang_ttc.xlf:image_zoom', TRUE) . ' </label></td><td><input type="checkbox" name="iClickEnlarge" id="iClickEnlarge" value="0" /></td></tr>\';') . '
+				sz+=\'<tr><td></td><td><input type="submit" value="' . $GLOBALS['LANG']->getLL('update') . '" onClick="return setImageProperties();"></td></tr>\';
+				sz+=\'</table></form>\';
 				return sz;
 			}
 			function setImageProperties() {
diff --git a/typo3/sysext/rtehtmlarea/htmlarea/skins/default/htmlarea.css b/typo3/sysext/rtehtmlarea/htmlarea/skins/default/htmlarea.css
index 1dadf9973afa..2a93088bda71 100644
--- a/typo3/sysext/rtehtmlarea/htmlarea/skins/default/htmlarea.css
+++ b/typo3/sysext/rtehtmlarea/htmlarea/skins/default/htmlarea.css
@@ -221,6 +221,11 @@ body.ext-ie6 .htmlarea-context-menu .buttonActive,
 body.ext-ie6 .htmlarea-window .x-panel-icon {
 	background-image: url("images/sprites/actions.gif");
 }
+.htmlarea-window .x-window-header-text {
+	display: inline-block;
+	margin-top: -4px !important;
+	vertical-align: top;
+}
 .htmlarea-window .x-window-header .t3-help-link {
 	color: #fff;
 }
@@ -249,6 +254,32 @@ body.ext-ie6 .htmlarea-window .x-panel-icon {
 .ext-ie .htmlarea-window .x-fieldset-bwrap {
 	clear: left;
 }
+/* Selector htmlarea-window-table is used in the element browsers */
+.htmlarea-window-table td {
+	padding: 0 2px;
+}
+.htmlarea-window-table td label {
+	display: inline-block;
+	height: 100%;
+	vertical-align: top;
+}
+.htmlarea-window-table input[type="checkbox"] {
+	margin-bottom: 10px;
+	margin-top: 7px;
+}
+.htmlarea-window-table select {
+	border: solid 1px #888;
+	height: 24px;
+	line-height: 20px;
+	margin-bottom: 5px;
+	margin-bottom: 5px;
+	padding-left: 3px;
+}
+.htmlarea-window-table option {
+	height: 20px;
+	line-height: 20px;
+	padding-top: 5px;
+}
 .htmlarea-window .x-form-item-label {
 	font-size: 10px;
 	text-align: right;
diff --git a/typo3/sysext/t3skin/rtehtmlarea/htmlarea.css b/typo3/sysext/t3skin/rtehtmlarea/htmlarea.css
index 2a521d736158..1a7d12e16ebd 100644
--- a/typo3/sysext/t3skin/rtehtmlarea/htmlarea.css
+++ b/typo3/sysext/t3skin/rtehtmlarea/htmlarea.css
@@ -227,6 +227,11 @@ body.ext-ie6 .htmlarea-context-menu .buttonActive,
 body.ext-ie6 .htmlarea-window .x-panel-icon {
 	background-image: url("images/sprites/actions.gif");
 }
+.htmlarea-window .x-window-header-text {
+	display: inline-block;
+	margin-top: -4px !important;
+	vertical-align: top;
+}
 .htmlarea-window .x-window-header .t3-help-link {
 	color: #fff;
 }
@@ -249,6 +254,32 @@ body.ext-ie6 .htmlarea-window .x-panel-icon {
 .ext-ie .htmlarea-window .x-fieldset-bwrap {
 	clear: left;
 }
+/* Selector htmlarea-window-table is used in the element browsers */
+.htmlarea-window-table td {
+	padding: 0 2px;
+}
+.htmlarea-window-table td label {
+	display: inline-block;
+	height: 100%;
+	vertical-align: top;
+}
+.htmlarea-window-table input[type="checkbox"] {
+	margin-bottom: 10px;
+	margin-top: 7px;
+}
+.htmlarea-window-table select {
+	border: solid 1px #888;
+	height: 24px;
+	line-height: 20px;
+	margin-bottom: 5px;
+	margin-bottom: 5px;
+	padding-left: 3px;
+}
+.htmlarea-window-table option {
+	height: 20px;
+	line-height: 20px;
+	padding-top: 5px;
+}
 .htmlarea-window .x-form-item-label {
 	font-size: 10px;
 	text-align: right;
-- 
GitLab