Fixed bug #9878: htmlArea RTE: js error may be raised when loading through IRRE Ajax...
authorStanislas Rolland <typo3@sjbr.ca>
Tue, 2 Dec 2008 23:45:50 +0000 (23:45 +0000)
committerStanislas Rolland <typo3@sjbr.ca>
Tue, 2 Dec 2008 23:45:50 +0000 (23:45 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-2@4526 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/sysext/rtehtmlarea/ChangeLog
typo3/sysext/rtehtmlarea/extensions/BlockElements/class.tx_rtehtmlarea_blockelements.php
typo3/sysext/rtehtmlarea/extensions/DefaultFont/class.tx_rtehtmlarea_defaultfont.php
typo3/sysext/rtehtmlarea/extensions/InlineElements/class.tx_rtehtmlarea_inlineelements.php

index d08f6b4..0f283a9 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2008-12-02  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Updated htmlArea RTE version to 1.7.8 for TYPO3 4.2.4
+       * Fixed bug #9878: htmlArea RTE: js error may be raised when loading through IRRE Ajax call
 
 2008-12-01  Dmitry Dulepov  <dmitry@typo3.org>
 
index 2eb2fe2..cf97ccd 100644 (file)
@@ -1,6 +1,7 @@
 2008-12-02  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Updated htmlArea RTE version to 1.7.8 for TYPO3 4.2.4
+       * Fixed bug #9878: htmlArea RTE: js error may be raised when loading through IRRE Ajax call
 
 2008-10-22  Stanislas Rolland  <typo3@sjbr.ca>
 
index 8e061f0..beecd2e 100644 (file)
@@ -147,6 +147,12 @@ class tx_rtehtmlarea_blockelements extends tx_rtehtmlareaapi {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.']['formatblock.']) || !$this->thisConfig['buttons.']['formatblock.']['orderItems']) {
                                asort($blockElementsOptions);
                        }
+                               // utf8-encode labels if we are responding to an IRRE ajax call
+                       if (!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) {
+                               foreach ($blockElementsOptions as $item => $label) {
+                                       $blockElementsOptions[$item] = $GLOBALS['LANG']->csConvObj->utf8_encode($label, $GLOBALS['LANG']->charSet);
+                               }
+                       }
                                // Generating the javascript options
                        $JSBlockElements = '{
                        "'. $first.'" : "none"';
index 6706c22..143d9ae 100644 (file)
@@ -128,16 +128,17 @@ class tx_rtehtmlarea_defaultfont extends tx_rtehtmlareaapi {
                $configureRTEInJavascriptString = '';
 
                        // Builing JS array of default font faces
+                       // utf8-encode labels if we are responding to an IRRE ajax call
                $HTMLAreaFontname = array();
                $HTMLAreaFontname['nofont'] = '
                                "' . $fontName . '" : "' . $this->htmlAreaRTE->cleanList($fontValue) . '"';
                $defaultFontFacesList = 'nofont,';
                if ($this->htmlAreaRTE->is_FE()) {
                        $HTMLAreaFontname['nofont'] = '
-                               "' . $TSFE->getLLL('No font', $this->LOCAL_LANG) . '" : ""';
+                               "' . $GLOBALS['TSFE']->getLLL('No font', $this->LOCAL_LANG) . '" : ""';
                } else {
                        $HTMLAreaFontname['nofont'] = '
-                               "' . $LANG->getLL('No font') . '" : ""';
+                       "' . ($this->htmlAreaRTE->TCEform->inline->isAjaxCall ? $GLOBALS['LANG']->csConvObj->utf8_encode($GLOBALS['LANG']->getLL('No font'), $GLOBALS['LANG']->charSet) : $GLOBALS['LANG']->getLL('No font')) . '" : ""';
                }
 
                $hideFontFaces = $this->htmlAreaRTE->cleanList($this->thisConfig['hideFontFaces']);
@@ -146,7 +147,7 @@ class tx_rtehtmlarea_defaultfont extends tx_rtehtmlareaapi {
                        foreach ($this->defaultFontFaces as $fontName => $fontValue) {
                                if (!t3lib_div::inList($hideFontFaces, $index+1)) {
                                        $HTMLAreaFontname[$fontName] = '
-                               "' . $fontName . '" : "' . $this->htmlAreaRTE->cleanList($fontValue) . '"';
+                                       "' . ((!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) ? $GLOBALS['LANG']->csConvObj->utf8_encode($fontName, $GLOBALS['LANG']->charSet) : $fontName) . '" : "' . $this->htmlAreaRTE->cleanList($fontValue) . '"';
                                        $defaultFontFacesList .= $fontName . ',';
                                }
                                $index++;
@@ -159,7 +160,7 @@ class tx_rtehtmlarea_defaultfont extends tx_rtehtmlareaapi {
                                $fontName = substr($fontName,0,-1);
                                $fontLabel = $this->htmlAreaRTE->getPageConfigLabel($conf['name'],0);
                                $HTMLAreaFontname[$fontName] = '
-                               "' . $fontLabel . '" : "' . $this->htmlAreaRTE->cleanList($conf['value']) . '"';
+                               "' . ((!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) ? $GLOBALS['LANG']->csConvObj->utf8_encode($fontLabel, $GLOBALS['LANG']->charSet) : $fontLabel) . '" : "' . $this->htmlAreaRTE->cleanList($conf['value']) . '"';
                        }
                }
 
@@ -224,6 +225,12 @@ class tx_rtehtmlarea_defaultfont extends tx_rtehtmlareaapi {
 
                $HTMLAreaJSFontSize = '{';
                if ($this->htmlAreaRTE->cleanList($this->thisConfig['hideFontSizes']) != '*') {
+                               // utf8-encode labels if we are responding to an IRRE ajax call
+                       if (!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) {
+                               foreach ($HTMLAreaFontSizes as $FontSizeItem => $FontSizeLabel) {
+                                       $HTMLAreaFontSizes[$FontSizeItem] = $GLOBALS['LANG']->csConvObj->utf8_encode($FontSizeLabel, $GLOBALS['LANG']->charSet);
+                               }
+                       }
                        $HTMLAreaFontSizeIndex = 0;
                        foreach ($HTMLAreaFontSizes as $FontSizeItem => $FontSizeLabel) {
                                if($HTMLAreaFontSizeIndex) {
index 1152cdc..4dc1f8e 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2007-2008 Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
+*  (c) 2007-2008 Stanislas Rolland <typo3(arobas)sjbr.ca>
 *  All rights reserved
 *
 *  This script is part of the Typo3 project. The Typo3 project is
@@ -24,7 +24,7 @@
 /**
  * InlineElements plugin for htmlArea RTE
  *
- * @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
+ * @author Stanislas Rolland <typo3(arobas)sjbr.ca>
  *
  * TYPO3 SVN ID: $Id$
  *
@@ -193,6 +193,12 @@ class tx_rtehtmlarea_inlineelements extends tx_rtehtmlareaapi {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.']['formattext.']) || !$this->thisConfig['buttons.']['formattext.']['orderItems']) {
                                asort($inlineElementsOptions);
                        }
+                               // utf8-encode labels if we are responding to an IRRE ajax call
+                       if (!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) {
+                               foreach ($inlineElementsOptions as $item => $label) {
+                                       $inlineElementsOptions[$item] = $GLOBALS['LANG']->csConvObj->utf8_encode($label, $GLOBALS['LANG']->charSet);
+                               }
+                       }
                                // Generating the javascript options
                        $JSInlineElements = '{
                        "'. $first.'" : "none"';