Fixed bug #15326: htmlArea RTE: W3C Markup Validation issues
authorStanislas Rolland <typo3@sjbr.ca>
Sat, 4 Sep 2010 16:42:48 +0000 (16:42 +0000)
committerStanislas Rolland <typo3@sjbr.ca>
Sat, 4 Sep 2010 16:42:48 +0000 (16:42 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-4@8759 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/sysext/rtehtmlarea/ChangeLog
typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php
typo3/sysext/rtehtmlarea/pi2/class.tx_rtehtmlarea_pi2.php

index c1b876e..9f0960d 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-04  Stanislas Rolland  <typo3@sjbr.ca>
+
+       * Fixed bug #15326: htmlArea RTE: W3C Markup Validation issues
+
 2010-09-03  Steffen Kamper  <steffen@typo3.org>
 
        * Fixed bug #15637: HTML regression in rev 7893
index dc99b8d..bf7aedf 100644 (file)
@@ -1,3 +1,7 @@
+2010-09-04  Stanislas Rolland  <typo3@sjbr.ca>
+
+       * Fixed bug #15326: htmlArea RTE: W3C Markup Validation issues
+
 2010-08-31  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Fixed bug #15068: htmlArea RTE: Not loading in Firefox 3.0.3
index ced5fc4..f6c27ea 100644 (file)
@@ -380,7 +380,7 @@ class tx_rtehtmlarea_base extends t3lib_rteapi {
                        }
                                // Register RTE windows
                        $this->TCEform->RTEwindows[] = $PA['itemFormElName'];
-                       $textAreaId = htmlspecialchars($PA['itemFormElName']);
+                       $textAreaId = htmlspecialchars(preg_replace('/\[|\]/', '_', $PA['itemFormElName']));
 
                                // Check if wizard_rte called this for fullscreen edtition; if so, change the size of the RTE to fullscreen using JS
                        if (basename(PATH_thisScript) == 'wizard_rte.php') {
@@ -394,7 +394,7 @@ class tx_rtehtmlarea_base extends t3lib_rteapi {
                        $this->TCEform->additionalJS_post[] = $this->registerRTEinJS($this->TCEform->RTEcounter, $table, $row['uid'], $field, $textAreaId);
 
                                // Set the save option for the RTE:
-                       $this->TCEform->additionalJS_submit[] = $this->setSaveRTE($this->TCEform->RTEcounter, $this->TCEform->formName, $textAreaId);
+                       $this->TCEform->additionalJS_submit[] = $this->setSaveRTE($this->TCEform->RTEcounter, $this->TCEform->formName, $textAreaId, $PA['itemFormElName']);
                        $this->TCEform->additionalJS_delete[] = $this->setDeleteRTE($this->TCEform->RTEcounter, $this->TCEform->formName, $textAreaId);
 
                                // Draw the textarea
@@ -402,7 +402,7 @@ class tx_rtehtmlarea_base extends t3lib_rteapi {
                        $item = $this->triggerField($PA['itemFormElName']).'
                                <div id="pleasewait' . $textAreaId . '" class="pleasewait" style="display: block;" >' . $LANG->getLL('Please wait') . '</div>
                                <div id="editorWrap' . $textAreaId . '" class="editorWrap" style="visibility: hidden; width:' . $editorWrapWidth . '; height:' . $editorWrapHeight . ';">
-                               <textarea id="RTEarea' . $textAreaId . '" name="'.htmlspecialchars($PA['itemFormElName']).'" style="'.t3lib_div::deHSCentities(htmlspecialchars($this->RTEdivStyle)).'">'.t3lib_div::formatForTextarea($value).'</textarea>
+                               <textarea id="RTEarea' . $textAreaId . '" name="'.htmlspecialchars($PA['itemFormElName']).'" rows="0" cols="0" style="'.t3lib_div::deHSCentities(htmlspecialchars($this->RTEdivStyle)).'">'.t3lib_div::formatForTextarea($value).'</textarea>
                                </div>' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableDebugMode'] ? '<div id="HTMLAreaLog"></div>' : '') . '
                                ';
                }
@@ -1341,11 +1341,12 @@ class tx_rtehtmlarea_base extends t3lib_rteapi {
         * @param       integer         $RTEcounter: The index number of the current RTE editing area within the form.
         * @param       string          $formName: the name of the form
         * @param       string          $textareaId: the id of the textarea
+        * @param       string          $textareaName: the name of the textarea
         *
         * @return      string          Javascript code
         */
-       function setSaveRTE($RTEcounter, $formName, $textareaId) {
-               return 'if (RTEarea["' . $textareaId . '"]) { document.' . $formName . '["' . $textareaId . '"].value = RTEarea["' . $textareaId . '"].editor.getHTML(); } else { OK = 0; };';
+       function setSaveRTE($RTEcounter, $formName, $textareaId, $textareaName) {
+               return 'if (RTEarea["' . $textareaId . '"]) { document.' . $formName . '["' . $textareaName . '"].value = RTEarea["' . $textareaId . '"].editor.getHTML(); } else { OK = 0; };';
        }
 
        /**
index 8dbfe20..7fba476 100644 (file)
@@ -248,7 +248,7 @@ class tx_rtehtmlarea_pi2 extends tx_rtehtmlarea_base {
 
                        // Register RTE windows:
                $this->TCEform->RTEwindows[] = $PA['itemFormElName'];
-               $textAreaId = htmlspecialchars($PA['itemFormElName']) . '_' . strval($this->TCEform->RTEcounter);
+               $textAreaId = htmlspecialchars(preg_replace('/\[|\]/', '_', $PA['itemFormElName'])) . '_' . strval($this->TCEform->RTEcounter);
 
                        // Register RTE in JS:
                $this->TCEform->additionalJS_post[] = $this->registerRTEinJS($this->TCEform->RTEcounter, '', '', '',$textAreaId);
@@ -260,7 +260,7 @@ class tx_rtehtmlarea_pi2 extends tx_rtehtmlarea_base {
                $item = $this->triggerField($PA['itemFormElName']).'
                        <div id="pleasewait' . $textAreaId . '" class="pleasewait" style="display: block;" >' . $TSFE->csConvObj->conv($TSFE->getLLL('Please wait',$this->LOCAL_LANG), $this->charset, $TSFE->renderCharset) . '</div>
                        <div id="editorWrap' . $textAreaId . '" class="editorWrap" style="visibility: hidden; '. htmlspecialchars($this->RTEWrapStyle). '">
-                       <textarea id="RTEarea' . $textAreaId . '" name="'.htmlspecialchars($PA['itemFormElName']).'" style="'.htmlspecialchars($this->RTEdivStyle).'">'.t3lib_div::formatForTextarea($value).'</textarea>
+                       <textarea id="RTEarea' . $textAreaId . '" name="'.htmlspecialchars($PA['itemFormElName']).'" rows="0" cols="0" style="'.htmlspecialchars($this->RTEdivStyle).'">'.t3lib_div::formatForTextarea($value).'</textarea>
                        </div>' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableDebugMode'] ? '<div id="HTMLAreaLog"></div>' : '') . '
                        ';
                return $item;