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:41:38 +0000 (23:41 +0000)
committerStanislas Rolland <typo3@sjbr.ca>
Tue, 2 Dec 2008 23:41:38 +0000 (23:41 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@4525 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
typo3/sysext/rtehtmlarea/extensions/SelectFont/class.tx_rtehtmlarea_selectfont.php

index 5746024..327876a 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-12-02  Stanislas Rolland  <typo3@sjbr.ca>
+
+       * Fixed bug #9878: htmlArea RTE: js error may be raised when loading through IRRE Ajax call
+
 2008-12-02  Martin Kutschker  <masi@typo3.org>
 
        * Fixed bug #6131: 'last login' of BE and FE users not shown in the BE (thanks to Christian Kuhn)
index f3e06db..368b81a 100644 (file)
@@ -1,3 +1,7 @@
+2008-12-02  Stanislas Rolland  <typo3@sjbr.ca>
+
+       * Fixed bug #9878: htmlArea RTE: js error may be raised when loading through IRRE Ajax call
+
 2008-11-22  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Follow up for feature #9775: htmlArea RTE: additional features for link insertion dialogue
index f8a5482..7e3990b 100644 (file)
@@ -157,6 +157,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..c80175f 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2008 Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
+*  (c) 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 @@
 /**
  * Default Font plugin for htmlArea RTE
  *
- * @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
+ * @author Stanislas Rolland <typo3(arobas)sjbr.ca>
  *
  * TYPO3 SVN ID: $Id$
  *
@@ -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) {
@@ -253,4 +260,4 @@ if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtml
        include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/extensions/DefaultFont/class.tx_rtehtmlarea_defaultfont.php']);
 }
 
-?>
\ No newline at end of file
+?>
index 1152cdc..68846ba 100644 (file)
@@ -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"';
index 14fe576..6a8c7ec 100644 (file)
@@ -137,7 +137,9 @@ class tx_rtehtmlarea_selectfont extends tx_rtehtmlareaapi {
                        "' . $GLOBALS['TSFE']->getLLL((($buttonId == 'fontstyle') ? 'No font' : 'No size'), $this->LOCAL_LANG) . '" : ""';
                } else {
                        $items['none'] = '
-                               "' . $GLOBALS['LANG']->getLL(($buttonId == 'fontstyle') ? 'No font' : 'No size') . '" : ""';
+                       "' . ($this->htmlAreaRTE->TCEform->inline->isAjaxCall 
+                                       ? $GLOBALS['LANG']->csConvObj->utf8_encode($GLOBALS['LANG']->getLL(($buttonId == 'fontstyle') ? 'No font' : 'No size'), $GLOBALS['LANG']->charSet) 
+                                       : $GLOBALS['LANG']->getLL(($buttonId == 'fontstyle') ? 'No font' : 'No size')) . '" : ""';
                }
                $defaultItems = 'none,';
 
@@ -150,9 +152,10 @@ class tx_rtehtmlarea_selectfont extends tx_rtehtmlareaapi {
                                                $label = $GLOBALS['TSFE']->getLLL($name,$this->LOCAL_LANG);
                                        } else {
                                                $label = $GLOBALS['LANG']->getLL($name);
+                                               $label = $this->htmlAreaRTE->TCEform->inline->isAjaxCall ? $GLOBALS['LANG']->csConvObj->utf8_encode($label, $GLOBALS['LANG']->charSet) : $label;
                                        }
                                        $items[$name] = '
-                               "' . $name . '" : "' . $this->htmlAreaRTE->cleanList($value) . '"';
+                               "' . $label . '" : "' . $this->htmlAreaRTE->cleanList($value) . '"';
                                        $defaultItems .= $name . ',';
                                }
                                $index++;
@@ -163,6 +166,7 @@ class tx_rtehtmlarea_selectfont extends tx_rtehtmlareaapi {
                        foreach ($this->RTEProperties[($buttonId == 'fontstyle') ? 'fonts.' : 'fontSizes.'] as $name => $conf) {
                                $name = substr($name,0,-1);
                                $label = $this->htmlAreaRTE->getPageConfigLabel($conf['name'],0);
+                               $label = (!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) ? $GLOBALS['LANG']->csConvObj->utf8_encode($label, $GLOBALS['LANG']->charSet) : $label;
                                $items[$name] = '
                                "' . $label . '" : "' . $this->htmlAreaRTE->cleanList($conf['value']) . '"';
                        }