[TASK] Remove dependency to $this->formEngine->RTEcounter 11/39111/6
authorTim Kandel <tim.kandel@typo3.org>
Thu, 30 Apr 2015 17:54:39 +0000 (19:54 +0200)
committerBenjamin Mack <benni@typo3.org>
Thu, 7 May 2015 17:17:08 +0000 (19:17 +0200)
There is a global counter in PHP to handle the sequence of
RTE's in one form. This is given along a long everywhere
but fits no real purpose. Parameter and usages are removed
with the patch.

Resolves: #63891
Releases: master
Change-Id: If10be8773ff13e5965b594c3a94da210d1c0f782
Reviewed-on: http://review.typo3.org/39111
Reviewed-by: Benjamin Mack <benni@typo3.org>
Tested-by: Benjamin Mack <benni@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
34 files changed:
typo3/sysext/backend/Classes/Form/Element/TextElement.php
typo3/sysext/backend/Classes/Form/FormEngine.php
typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js
typo3/sysext/rtehtmlarea/Classes/Controller/FrontendRteController.php
typo3/sysext/rtehtmlarea/Classes/Extension/Abbreviation.php
typo3/sysext/rtehtmlarea/Classes/Extension/AboutEditor.php
typo3/sysext/rtehtmlarea/Classes/Extension/BlockElements.php
typo3/sysext/rtehtmlarea/Classes/Extension/CharacterMap.php
typo3/sysext/rtehtmlarea/Classes/Extension/ContextMenu.php
typo3/sysext/rtehtmlarea/Classes/Extension/DefaultClean.php
typo3/sysext/rtehtmlarea/Classes/Extension/DefaultImage.php
typo3/sysext/rtehtmlarea/Classes/Extension/DefaultInline.php
typo3/sysext/rtehtmlarea/Classes/Extension/DefaultLink.php
typo3/sysext/rtehtmlarea/Classes/Extension/DefinitionList.php
typo3/sysext/rtehtmlarea/Classes/Extension/EditElement.php
typo3/sysext/rtehtmlarea/Classes/Extension/FindReplace.php
typo3/sysext/rtehtmlarea/Classes/Extension/InlineElements.php
typo3/sysext/rtehtmlarea/Classes/Extension/InsertSmiley.php
typo3/sysext/rtehtmlarea/Classes/Extension/Language.php
typo3/sysext/rtehtmlarea/Classes/Extension/MicroDataSchema.php
typo3/sysext/rtehtmlarea/Classes/Extension/Plaintext.php
typo3/sysext/rtehtmlarea/Classes/Extension/RemoveFormat.php
typo3/sysext/rtehtmlarea/Classes/Extension/SelectFont.php
typo3/sysext/rtehtmlarea/Classes/Extension/Spellchecker.php
typo3/sysext/rtehtmlarea/Classes/Extension/TableOperations.php
typo3/sysext/rtehtmlarea/Classes/Extension/TextIndicator.php
typo3/sysext/rtehtmlarea/Classes/Extension/Typo3Color.php
typo3/sysext/rtehtmlarea/Classes/Extension/Typo3HtmlParser.php
typo3/sysext/rtehtmlarea/Classes/Extension/Typo3Image.php
typo3/sysext/rtehtmlarea/Classes/Extension/Typo3Link.php
typo3/sysext/rtehtmlarea/Classes/Extension/UndoRedo.php
typo3/sysext/rtehtmlarea/Classes/Extension/UserElements.php
typo3/sysext/rtehtmlarea/Classes/RteHtmlAreaApi.php
typo3/sysext/rtehtmlarea/Classes/RteHtmlAreaBase.php

index 39ff408..328b54a 100644 (file)
@@ -124,7 +124,6 @@ class TextElement extends AbstractFormElement {
                                        $rteTcaTypeValue = BackendUtility::getTCAtypeValue($table, $row);
                                        $rteSetupConfiguration = BackendUtility::RTEsetup($rteSetup['properties'], $table, $fieldName, $rteTcaTypeValue);
                                        if (!$rteSetupConfiguration['disabled']) {
-                                               FormEngine::$RTEcounter = FormEngine::$RTEcounter + 1;
                                                // Get RTE object, draw form and set flag:
                                                $rteObject = BackendUtility::RTEgetObj();
                                                $dummyFormEngine = new FormEngine();
index 4b4872c..11bc4cc 100644 (file)
@@ -168,14 +168,6 @@ class FormEngine {
        public $perms_clause_set = FALSE;
 
        /**
-        * Counter that is incremented before an RTE is created. Can be used for unique ids etc.
-        * @todo: Free the code from using this global state keeping counter.
-        *
-        * @var int
-        */
-       static public $RTEcounter = 0;
-
-       /**
         * Total wrapping for the table rows
         *
         * @var string
@@ -502,10 +494,8 @@ class FormEngine {
                        // @todo: ajaxArguments[2] is "returnUrl" in the first 3 calls - still needed?
                        switch ($ajaxMethod) {
                                case 'synchronizeLocalizeRecords':
-                                       // Set $this->RTEcounter to the current situation on client-side
-                                       $this->RTEcounter = $ajaxArguments[0];
-                                       $domObjectId = $ajaxArguments[1];
-                                       $type = $ajaxArguments[2];
+                                       $domObjectId = $ajaxArguments[0];
+                                       $type = $ajaxArguments[1];
                                        // Parse the DOM identifier (string), add the levels to the structure stack (array), load the TCA config:
                                        $this->inlineStackProcessor->initializeByParsingDomObjectIdString($domObjectId);
                                        $this->inlineStackProcessor->injectAjaxConfiguration($ajaxArguments['context']);
@@ -513,12 +503,10 @@ class FormEngine {
                                        $ajaxObj->setContent($this->renderInlineSynchronizeLocalizeRecords($type, $inlineFirstPid));
                                        break;
                                case 'createNewRecord':
-                                       // Set $this->RTEcounter to the current situation on client-side
-                                       $this->RTEcounter = $ajaxArguments[0];
-                                       $domObjectId = $ajaxArguments[1];
+                                       $domObjectId = $ajaxArguments[0];
                                        $createAfterUid = 0;
-                                       if (isset($ajaxArguments[2])) {
-                                               $createAfterUid = $ajaxArguments[2];
+                                       if (isset($ajaxArguments[1])) {
+                                               $createAfterUid = $ajaxArguments[1];
                                        }
                                        // Parse the DOM identifier (string), add the levels to the structure stack (array), load the TCA config:
                                        $this->inlineStackProcessor->initializeByParsingDomObjectIdString($domObjectId);
@@ -526,9 +514,7 @@ class FormEngine {
                                        $ajaxObj->setContent($this->renderInlineNewChildRecord($domObjectId, $createAfterUid));
                                        break;
                                case 'getRecordDetails':
-                                       // Set $this->RTEcounter to the current situation on client-side
-                                       $this->RTEcounter = $ajaxArguments[0];
-                                       $domObjectId = $ajaxArguments[1];
+                                       $domObjectId = $ajaxArguments[0];
                                        // Parse the DOM identifier (string), add the levels to the structure stack (array), load the TCA config:
                                        $this->inlineStackProcessor->initializeByParsingDomObjectIdString($domObjectId);
                                        $this->inlineStackProcessor->injectAjaxConfiguration($ajaxArguments['context']);
index d9d6cd6..6c0374f 100644 (file)
@@ -155,7 +155,7 @@ var inline = {
 
        getRecordDetails: function (objectId, returnURL) {
                var context = this.getContext(this.parseObjectId('full', objectId, 0, 1));
-               inline.makeAjaxCall('getRecordDetails', [inline.getNumberOfRTE(), objectId, returnURL], true, context);
+               inline.makeAjaxCall('getRecordDetails', [objectId, returnURL], true, context);
                return false;
        },
 
@@ -165,7 +165,7 @@ var inline = {
                        if (recordUid) {
                                objectId += this.structureSeparator + recordUid;
                        }
-                       this.makeAjaxCall('createNewRecord', [this.getNumberOfRTE(), objectId], true, context);
+                       this.makeAjaxCall('createNewRecord', [objectId], true, context);
                } else {
                        var message = TBE_EDITOR.labels.maxItemsAllowed.replace('{0}', this.data.config[objectId].max);
                        var matches = objectId.match(/^(data-\d+-.*?-\d+-.*?)-(.*?)$/);
@@ -180,7 +180,7 @@ var inline = {
 
        synchronizeLocalizeRecords: function (objectId, type) {
                var context = this.getContext(objectId);
-               var parameters = [this.getNumberOfRTE(), objectId, type];
+               var parameters = [objectId, type];
                this.makeAjaxCall('synchronizeLocalizeRecords', parameters, true, context);
        },
 
@@ -340,7 +340,7 @@ var inline = {
                        if (!this.data.unique || !this.data.unique[objectId]) {
                                $selector.find('option').eq(selectedIndex).prop('selected', false);
                        }
-                       this.makeAjaxCall('createNewRecord', [this.getNumberOfRTE(), objectId, selectedValue], true, context);
+                       this.makeAjaxCall('createNewRecord', [objectId, selectedValue], true, context);
                }
                return false;
        },
@@ -348,7 +348,7 @@ var inline = {
        // foreign_selector: used by element browser (type='group/db')
        importElement: function (objectId, table, uid, type) {
                var context = this.getContext(objectId);
-               inline.makeAjaxCall('createNewRecord', [inline.getNumberOfRTE(), objectId, uid], true, context);
+               inline.makeAjaxCall('createNewRecord', [objectId, uid], true, context);
        },
 
        importElementMultiple: function (objectId, table, uidArray, type) {
@@ -1261,14 +1261,6 @@ var inline = {
                }
        },
 
-       getNumberOfRTE: function () {
-               var number = 0;
-               if (typeof RTEarea != 'undefined' && RTEarea.length > 0) {
-                       number = RTEarea.length - 1;
-               }
-               return number;
-       },
-
        getObjectMD5: function (objectPrefix) {
                var md5 = false;
                if (this.data.config && this.data.config[objectPrefix] && this.data.config[objectPrefix].md5) {
index 91b7421..cb73acb 100644 (file)
@@ -141,7 +141,7 @@ class FrontendRteController extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaBase {
                // Register RTE windows:
                $this->TCEform->RTEwindows[] = $PA['itemFormElName'];
                $textAreaId = preg_replace('/[^a-zA-Z0-9_:.-]/', '_', $PA['itemFormElName']);
-               $textAreaId = htmlspecialchars(preg_replace('/^[^a-zA-Z]/', 'x', $textAreaId)) . '_' . strval($this->TCEform->RTEcounter);
+               $textAreaId = htmlspecialchars(preg_replace('/^[^a-zA-Z]/', 'x', $textAreaId));
                /* =======================================
                 * LANGUAGES & CHARACTER SETS
                 * =======================================
@@ -210,9 +210,9 @@ class FrontendRteController extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaBase {
                 */
                $this->getPageRenderer();
                // Register RTE in JS
-               $this->TCEform->additionalJS_post[] = $this->wrapCDATA($this->registerRTEinJS($this->TCEform->RTEcounter, '', '', '', $textAreaId));
+               $this->TCEform->additionalJS_post[] = $this->wrapCDATA($this->registerRTEinJS('', '', '', $textAreaId));
                // Set the save option for the RTE:
-               $this->TCEform->additionalJS_submit[] = $this->setSaveRTE($this->TCEform->RTEcounter, 'editform', $textAreaId);
+               $this->TCEform->additionalJS_submit[] = $this->setSaveRTE('editform', $textAreaId);
                $this->pageRenderer->loadRequireJs();
                // Loading ExtJs JavaScript files and inline code, if not configured in TS setup
                if (!is_array($GLOBALS['TSFE']->pSetup['javascriptLibs.']['ExtJs.'])) {
@@ -227,8 +227,8 @@ class FrontendRteController extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaBase {
                $this->addSkin();
                // Add RTE JavaScript
                $this->pageRenderer->loadJquery();
-               $this->addRteJsFiles($this->TCEform->RTEcounter);
-               $this->pageRenderer->addJsFile($this->buildJSMainLangFile($this->TCEform->RTEcounter));
+               $this->addRteJsFiles();
+               $this->pageRenderer->addJsFile($this->buildJSMainLangFile());
                $this->pageRenderer->addJsInlineCode('HTMLArea-init', $this->getRteInitJsCode(), TRUE);
                /* =======================================
                 * DRAW THE EDITOR
@@ -268,12 +268,11 @@ class FrontendRteController extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaBase {
         * Return the JS-Code for copy the HTML-Code from the editor in the hidden input field.
         * This is for submit function from the form.
         *
-        * @param int $RTEcounter: The index number of the RTE editing area.
         * @param string $form: the name of the form
         * @param string $textareaId: the id of the textarea
         * @return string the JS-Code
         */
-       public function setSaveRTE($RTEcounter, $form, $textareaId) {
+       public function setSaveRTE($form, $textareaId) {
                return '
                if (RTEarea[\'' . $textareaId . '\'] && !RTEarea[\'' . $textareaId . '\'].deleted) {
                        var field = document.getElementById(\'RTEarea' . $textareaId . '\');
index 4e5b32e..f811829 100644 (file)
@@ -146,26 +146,26 @@ class Abbreviation extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'abbreviation';
                if (in_array($button, $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.abbreviationUrl = "' . $this->htmlAreaRTE->writeTemporaryFile('', ('abbreviation_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $this->buildJSAbbreviationArray($this->htmlAreaRTE->contentLanguageUid)) . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.abbreviationUrl = "' . $this->htmlAreaRTE->writeTemporaryFile('', ('abbreviation_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $this->buildJSAbbreviationArray($this->htmlAreaRTE->contentLanguageUid)) . '";';
                        // <abbr> was not supported by IE before version 7
                        if ($this->htmlAreaRTE->client['browser'] == 'msie' && $this->htmlAreaRTE->client['version'] < 7) {
                                $this->abbreviationIndex = 0;
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.noAcronym = ' . ($this->acronymIndex ? 'false' : 'true') . ';
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.noAbbr =  ' . ($this->abbreviationIndex ? 'false' : 'true') . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.noAcronym = ' . ($this->acronymIndex ? 'false' : 'true') . ';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.noAbbr =  ' . ($this->abbreviationIndex ? 'false' : 'true') . ';';
                }
                return $registerRTEinJavascriptString;
        }
index eaad483..dff5d2c 100644 (file)
@@ -74,10 +74,10 @@ class AboutEditor extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index 9748f54..3ff9f5c 100644 (file)
@@ -109,15 +109,15 @@ class BlockElements extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                if (in_array('formatblock', $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.']['formatblock.'])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.formatblock = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.formatblock = new Object();';
                        }
                        // Default block elements
                        $hideItems = array();
@@ -200,7 +200,7 @@ class BlockElements extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                                $GLOBALS['TSFE']->csConvObj->convArray($JSBlockElements, $this->htmlAreaRTE->OutputCharset, 'utf-8');
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.formatblock.options = ' . json_encode($JSBlockElements) . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.formatblock.options = ' . json_encode($JSBlockElements) . ';';
                }
                return $registerRTEinJavascriptString;
        }
index 61136da..8005872 100644 (file)
@@ -75,10 +75,10 @@ class CharacterMap extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index c16ddaf..762fdc0 100644 (file)
@@ -77,21 +77,21 @@ class ContextMenu extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($editorId) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                if (is_array($this->thisConfig['contextMenu.'])) {
                        $registerRTEinJavascriptString .= '
-       RTEarea[' . $editorId . '].contextMenu =  ' . $this->htmlAreaRTE->buildNestedJSArray($this->thisConfig['contextMenu.']) . ';';
+       RTEarea[' . $rteNumberPlaceholder . '].contextMenu =  ' . $this->htmlAreaRTE->buildNestedJSArray($this->thisConfig['contextMenu.']) . ';';
                        if ($this->thisConfig['contextMenu.']['showButtons']) {
                                $registerRTEinJavascriptString .= '
-       RTEarea[' . $editorId . '].contextMenu.showButtons = ' . json_encode(\TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->htmlAreaRTE->cleanList(\TYPO3\CMS\Core\Utility\GeneralUtility::strtolower($this->thisConfig['contextMenu.']['showButtons'])), TRUE)) . ';';
+       RTEarea[' . $rteNumberPlaceholder . '].contextMenu.showButtons = ' . json_encode(\TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->htmlAreaRTE->cleanList(\TYPO3\CMS\Core\Utility\GeneralUtility::strtolower($this->thisConfig['contextMenu.']['showButtons'])), TRUE)) . ';';
                        }
                        if ($this->thisConfig['contextMenu.']['hideButtons']) {
                                $registerRTEinJavascriptString .= '
-       RTEarea[' . $editorId . '].contextMenu.hideButtons = ' . json_encode(\TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->htmlAreaRTE->cleanList(\TYPO3\CMS\Core\Utility\GeneralUtility::strtolower($this->thisConfig['contextMenu.']['hideButtons'])), TRUE)) . ';';
+       RTEarea[' . $rteNumberPlaceholder . '].contextMenu.hideButtons = ' . json_encode(\TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->htmlAreaRTE->cleanList(\TYPO3\CMS\Core\Utility\GeneralUtility::strtolower($this->thisConfig['contextMenu.']['hideButtons'])), TRUE)) . ';';
                        }
                }
                return $registerRTEinJavascriptString;
index afb49a0..c3be833 100644 (file)
@@ -78,19 +78,19 @@ class DefaultClean extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'cleanword';
                if (in_array($button, $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = {"hotKey" : "' . ($this->thisConfig['enableWordClean.']['hotKey'] ? $this->thisConfig['enableWordClean.']['hotKey'] : '0') . '"};';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = {"hotKey" : "' . ($this->thisConfig['enableWordClean.']['hotKey'] ? $this->thisConfig['enableWordClean.']['hotKey'] : '0') . '"};';
                }
                return $registerRTEinJavascriptString;
        }
index 7bf54d3..550eafe 100644 (file)
@@ -80,10 +80,10 @@ class DefaultImage extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index c97fae6..d7c966b 100644 (file)
@@ -79,10 +79,10 @@ class DefaultInline extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index cfb4406..ac31746 100644 (file)
@@ -75,19 +75,19 @@ class DefaultLink extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'link';
                if (in_array($button, $this->toolbar) && $this->htmlAreaRTE->is_FE()) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . ']["buttons"]["' . $button . '"] = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . ']["buttons"]["' . $button . '"] = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.stripBaseUrl = true;';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.stripBaseUrl = true;';
                }
                return $registerRTEinJavascriptString;
        }
index bd24a77..b10a3aa 100644 (file)
@@ -86,10 +86,10 @@ class DefinitionList extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index e33fcf5..72a0fe1 100644 (file)
@@ -77,10 +77,10 @@ class EditElement extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index dde9dce..4074227 100644 (file)
@@ -74,10 +74,10 @@ class FindReplace extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index 43f73bb..1671579 100644 (file)
@@ -151,15 +151,15 @@ class InlineElements extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                if (in_array('formattext', $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.']['formattext.'])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.formattext = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.formattext = new Object();';
                        }
                        // Default inline elements
                        $hideItems = array();
@@ -215,7 +215,7 @@ class InlineElements extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                                $GLOBALS['TSFE']->csConvObj->convArray($JSInlineElements, $this->htmlAreaRTE->OutputCharset, 'utf-8');
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.formattext.options = ' . json_encode($JSInlineElements) . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.formattext.options = ' . json_encode($JSInlineElements) . ';';
                }
                return $registerRTEinJavascriptString;
        }
index 2b43e80..530259c 100644 (file)
@@ -74,10 +74,10 @@ class InsertSmiley extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index a2c459f..f6e7582 100644 (file)
@@ -84,15 +84,15 @@ class Language extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $button = 'language';
                $registerRTEinJavascriptString = '';
                if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                }
                if ($this->htmlAreaRTE->is_FE()) {
                        $first = $GLOBALS['TSFE']->getLLL('No language mark', $this->LOCAL_LANG);
@@ -107,7 +107,7 @@ class Language extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                }
                $languagesJSArray = json_encode(array('options' => $languagesJSArray));
                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.dataUrl = "' . ($this->htmlAreaRTE->is_FE() && $GLOBALS['TSFE']->absRefPrefix ? $GLOBALS['TSFE']->absRefPrefix : '') . $this->htmlAreaRTE->writeTemporaryFile('', ($button . '_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $languagesJSArray) . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.dataUrl = "' . ($this->htmlAreaRTE->is_FE() && $GLOBALS['TSFE']->absRefPrefix ? $GLOBALS['TSFE']->absRefPrefix : '') . $this->htmlAreaRTE->writeTemporaryFile('', ($button . '_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $languagesJSArray) . '";';
                return $registerRTEinJavascriptString;
        }
 
index 4cc01c3..d3089dc 100644 (file)
@@ -76,10 +76,10 @@ class MicroDataSchema extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $schema = array(
                        'types' => array(),
index b761c1a..a4f76ab 100644 (file)
@@ -80,20 +80,20 @@ class Plaintext extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'pastebehaviour';
                // Get current TYPO3 User Setting, if available
                if (TYPO3_MODE === 'BE' && \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('setup') && is_array($GLOBALS['TYPO3_USER_SETTINGS']) && is_object($GLOBALS['BE_USER'])) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.current = "' . (isset($GLOBALS['BE_USER']->uc['rteCleanPasteBehaviour']) ? $GLOBALS['BE_USER']->uc['rteCleanPasteBehaviour'] : 'plainText') . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.current = "' . (isset($GLOBALS['BE_USER']->uc['rteCleanPasteBehaviour']) ? $GLOBALS['BE_USER']->uc['rteCleanPasteBehaviour'] : 'plainText') . '";';
                }
                return $registerRTEinJavascriptString;
        }
index 98916b4..979e200 100644 (file)
@@ -74,10 +74,10 @@ class RemoveFormat extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index 1dc62b5..dcda98e 100644 (file)
@@ -110,16 +110,16 @@ class SelectFont extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $pluginButtonsArray = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->pluginButtons);
                // Process Page TSConfig configuration for each button
                foreach ($pluginButtonsArray as $buttonId) {
                        if (in_array($buttonId, $this->toolbar)) {
-                               $registerRTEinJavascriptString .= $this->buildJSFontItemsConfig($RTEcounter, $buttonId);
+                               $registerRTEinJavascriptString .= $this->buildJSFontItemsConfig($rteNumberPlaceholder, $buttonId);
                        }
                }
                return $registerRTEinJavascriptString;
@@ -128,11 +128,11 @@ class SelectFont extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return Javascript configuration of font faces
         *
-        * @param int $RTEcounter: The index number of the current RTE editing area within the form.
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @param string $buttonId: button id
         * @return string Javascript configuration of font faces
         */
-       protected function buildJSFontItemsConfig($RTEcounter, $buttonId) {
+       protected function buildJSFontItemsConfig($rteNumberPlaceholder, $buttonId) {
                $configureRTEInJavascriptString = '';
                $hideItems = '';
                $addItems = array();
@@ -197,10 +197,10 @@ class SelectFont extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                // Adding to button JS configuration
                if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($buttonId . '.')])) {
                        $configureRTEInJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $buttonId . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $buttonId . ' = new Object();';
                }
                $configureRTEInJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $buttonId . '.dataUrl = "' . ($this->htmlAreaRTE->is_FE() && $GLOBALS['TSFE']->absRefPrefix ? $GLOBALS['TSFE']->absRefPrefix : '') . $this->htmlAreaRTE->writeTemporaryFile('', ($buttonId . '_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $itemsJSArray) . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $buttonId . '.dataUrl = "' . ($this->htmlAreaRTE->is_FE() && $GLOBALS['TSFE']->absRefPrefix ? $GLOBALS['TSFE']->absRefPrefix : '') . $this->htmlAreaRTE->writeTemporaryFile('', ($buttonId . '_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $itemsJSArray) . '";';
                return $configureRTEInJavascriptString;
        }
 
index c687ab5..f55f655 100644 (file)
@@ -82,10 +82,10 @@ class Spellchecker extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $button = 'spellcheck';
                // Set the SpellChecker mode
                $spellCheckerMode = isset($GLOBALS['BE_USER']->userTS['options.']['HTMLAreaPspellMode']) ? trim($GLOBALS['BE_USER']->userTS['options.']['HTMLAreaPspellMode']) : 'normal';
@@ -101,16 +101,16 @@ class Spellchecker extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                if (in_array($button, $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.contentTypo3Language = "' . $this->htmlAreaRTE->contentTypo3Language . '";
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.contentISOLanguage = "' . $this->htmlAreaRTE->contentISOLanguage . '";
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.contentCharset = "' . $this->htmlAreaRTE->contentCharset . '";
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.spellCheckerMode = "' . $spellCheckerMode . '";
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.enablePersonalDicts = ' . ($enablePersonalDicts ? 'true' : 'false') . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.contentTypo3Language = "' . $this->htmlAreaRTE->contentTypo3Language . '";
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.contentISOLanguage = "' . $this->htmlAreaRTE->contentISOLanguage . '";
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.contentCharset = "' . $this->htmlAreaRTE->contentCharset . '";
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.spellCheckerMode = "' . $spellCheckerMode . '";
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.enablePersonalDicts = ' . ($enablePersonalDicts ? 'true' : 'false') . ';';
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.path = "' . ($this->htmlAreaRTE->is_FE() || $this->htmlAreaRTE->isFrontendEditActive() ? ($GLOBALS['TSFE']->absRefPrefix ? $GLOBALS['TSFE']->absRefPrefix : '') . 'index.php?eID=rtehtmlarea_spellchecker' : BackendUtility::getAjaxUrl('rtehtmlarea::spellchecker')) . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.path = "' . ($this->htmlAreaRTE->is_FE() || $this->htmlAreaRTE->isFrontendEditActive() ? ($GLOBALS['TSFE']->absRefPrefix ? $GLOBALS['TSFE']->absRefPrefix : '') . 'index.php?eID=rtehtmlarea_spellchecker' : BackendUtility::getAjaxUrl('rtehtmlarea::spellchecker')) . '";';
                }
                return $registerRTEinJavascriptString;
        }
index db4c5fe..6bb20c9 100644 (file)
@@ -109,10 +109,10 @@ class TableOperations extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                if (in_array('table', $this->toolbar)) {
                        // Combining fieldset disablers as a list
@@ -130,20 +130,20 @@ class TableOperations extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                                        if (in_array($dialogue, $this->toolbar)) {
                                                if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($dialogue . '.')])) {
                                                        $registerRTEinJavascriptString .= '
-                                       RTEarea[' . $RTEcounter . '].buttons.' . $dialogue . ' = new Object();
-                                       RTEarea[' . $RTEcounter . '].buttons.' . $dialogue . '.removeFieldsets = "' . $disabledFieldsets . '";';
+                                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $dialogue . ' = new Object();
+                                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $dialogue . '.removeFieldsets = "' . $disabledFieldsets . '";';
                                                } elseif ($this->thisConfig['buttons.'][$dialogue . '.']['removeFieldsets']) {
                                                        $registerRTEinJavascriptString .= '
-                                       RTEarea[' . $RTEcounter . '].buttons.' . $dialogue . '.removeFieldsets += ",' . $disabledFieldsets . '";';
+                                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $dialogue . '.removeFieldsets += ",' . $disabledFieldsets . '";';
                                                } else {
                                                        $registerRTEinJavascriptString .= '
-                                       RTEarea[' . $RTEcounter . '].buttons.' . $dialogue . '.removeFieldsets = ",' . $disabledFieldsets . '";';
+                                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $dialogue . '.removeFieldsets = ",' . $disabledFieldsets . '";';
                                                }
                                        }
                                }
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].hideTableOperationsInToolbar = ' . (trim($this->thisConfig['hideTableOperationsInToolbar']) ? 'true' : 'false') . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].hideTableOperationsInToolbar = ' . (trim($this->thisConfig['hideTableOperationsInToolbar']) ? 'true' : 'false') . ';';
                }
                return $registerRTEinJavascriptString;
        }
index 0866ea1..fea1f20 100644 (file)
@@ -74,10 +74,10 @@ class TextIndicator extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index 438261e..d673728 100644 (file)
@@ -79,22 +79,22 @@ class Typo3Color extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                // Process colors configuration
-               $registerRTEinJavascriptString = $this->buildJSColorsConfig($RTEcounter);
+               $registerRTEinJavascriptString = $this->buildJSColorsConfig($rteNumberPlaceholder);
                return $registerRTEinJavascriptString;
        }
 
        /**
         * Return Javascript configuration of colors
         *
-        * @param int $RTEcounter: The index number of the current RTE editing area within the form.
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string Javascript configuration of colors
         */
-       public function buildJSColorsConfig($RTEcounter) {
+       public function buildJSColorsConfig($rteNumberPlaceholder) {
                if ($this->htmlAreaRTE->is_FE()) {
                        $RTEProperties = $this->htmlAreaRTE->RTEsetup;
                } else {
@@ -102,7 +102,7 @@ class Typo3Color extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                }
                $configureRTEInJavascriptString = '';
                $configureRTEInJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].disableColorPicker = ' . (trim($this->thisConfig['disableColorPicker']) ? 'true' : 'false') . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].disableColorPicker = ' . (trim($this->thisConfig['disableColorPicker']) ? 'true' : 'false') . ';';
                // Building the array of configured colors
                if (is_array($RTEProperties['colors.'])) {
                        $HTMLAreaColorname = array();
@@ -125,7 +125,7 @@ class Typo3Color extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                                $GLOBALS['TSFE']->csConvObj->convArray($HTMLAreaJSColors, $this->htmlAreaRTE->OutputCharset, 'utf-8');
                        }
                        $configureRTEInJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].colors = ' . json_encode($HTMLAreaJSColors) . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].colors = ' . json_encode($HTMLAreaJSColors) . ';';
                }
                return $configureRTEInJavascriptString;
        }
index 9c83269..8b03469 100644 (file)
@@ -81,21 +81,21 @@ class Typo3HtmlParser extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'cleanword';
                if (in_array($button, $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.pathParseHtmlModule = ' .
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.pathParseHtmlModule = ' .
                                GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('rtehtmlarea_wizard_parse_html')) . ';
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.hotKey = "' . ($this->thisConfig['enableWordClean.']['hotKey'] ?: '0') . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.hotKey = "' . ($this->thisConfig['enableWordClean.']['hotKey'] ?: '0') . '";';
                }
                return $registerRTEinJavascriptString;
        }
index 1333630..832609f 100644 (file)
@@ -85,19 +85,19 @@ class Typo3Image extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'image';
                if (in_array($button, $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . ']["buttons"]["' . $button . '"] = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . ']["buttons"]["' . $button . '"] = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.pathImageModule = ' .
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.pathImageModule = ' .
                                GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('rtehtmlarea_wizard_select_image')) . ';';
                }
                return $registerRTEinJavascriptString;
index 371794d..56efdbe 100644 (file)
@@ -84,19 +84,19 @@ class Typo3Link extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'link';
                if (in_array($button, $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.pathLinkModule = ' . GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('rtehtmlarea_wizard_browse_links')) . ';';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.pathLinkModule = ' . GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('rtehtmlarea_wizard_browse_links')) . ';';
                        if ($this->htmlAreaRTE->is_FE()) {
                                $RTEProperties = $this->htmlAreaRTE->RTEsetup;
                        } else {
@@ -104,10 +104,10 @@ class Typo3Link extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
                        }
                        if (is_array($RTEProperties['classesAnchor.'])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.classesAnchorUrl = "' . $this->htmlAreaRTE->writeTemporaryFile('', ('classesAnchor_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $this->buildJSClassesAnchorArray(), TRUE) . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.classesAnchorUrl = "' . $this->htmlAreaRTE->writeTemporaryFile('', ('classesAnchor_' . $this->htmlAreaRTE->contentLanguageUid), 'js', $this->buildJSClassesAnchorArray(), TRUE) . '";';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.additionalAttributes = "data-htmlarea-external' . ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] ? ',' . $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] : '') . '";';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.additionalAttributes = "data-htmlarea-external' . ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] ? ',' . $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] : '') . '";';
                }
                return $registerRTEinJavascriptString;
        }
index 2469745..2b71d22 100644 (file)
@@ -75,10 +75,10 @@ class UndoRedo extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                return $registerRTEinJavascriptString;
        }
index dd04fe0..e7fbe3f 100644 (file)
@@ -77,19 +77,19 @@ class UserElements extends \TYPO3\CMS\Rtehtmlarea\RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins, in this case, JS configuration of block elements
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $button = 'user';
                if (in_array($button, $this->toolbar)) {
                        if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                        }
                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . '.pathUserModule = ' .
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . '.pathUserModule = ' .
                                GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('rtehtmlarea_wizard_user_elements')) . ';';
                }
                return $registerRTEinJavascriptString;
index b9b9f31..c3f78fa 100644 (file)
@@ -134,17 +134,17 @@ abstract class RteHtmlAreaApi {
        /**
         * Return JS configuration of the htmlArea plugins registered by the extension
         *
-        * @param int Relative id of the RTE editing area in the form
+        * @param string $rteNumberPlaceholder A dummy string for JS arrays
         * @return string JS configuration for registered plugins
         */
-       public function buildJavascriptConfiguration($RTEcounter) {
+       public function buildJavascriptConfiguration($rteNumberPlaceholder) {
                $registerRTEinJavascriptString = '';
                $pluginButtons = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $this->pluginButtons, TRUE);
                foreach ($pluginButtons as $button) {
                        if (in_array($button, $this->toolbar)) {
                                if (!is_array($this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][($button . '.')])) {
                                        $registerRTEinJavascriptString .= '
-                       RTEarea[' . $RTEcounter . '].buttons.' . $button . ' = new Object();';
+                       RTEarea[' . $rteNumberPlaceholder . '].buttons.' . $button . ' = new Object();';
                                }
                        }
                }
index 5338742..0290f91 100644 (file)
@@ -468,16 +468,16 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
                $resultArray = $this->addPageStyle($resultArray);
                $resultArray = $this->addSkin($resultArray);
                // Register RTE in JS
-               $resultArray['additionalJavaScriptPost'][] = $this->registerRTEinJS(FormEngine::$RTEcounter, $table, $row['uid'], $field, $textAreaId);
+               $resultArray['additionalJavaScriptPost'][] = $this->registerRTEinJS(NULL, $table, $row['uid'], $field, $textAreaId);
                // Set the save option for the RTE
-               $resultArray['additionalJavaScriptSubmit'][] = $this->setSaveRTE(FormEngine::$RTEcounter, 'editform', $textAreaId, $PA['itemFormElName']);
+               $resultArray['additionalJavaScriptSubmit'][] = $this->setSaveRTE(NULL, 'editform', $textAreaId, $PA['itemFormElName']);
                // Loading ExtJs inline code
                $this->pageRenderer->enableExtJSQuickTips();
                // Add TYPO3 notifications JavaScript
                $this->pageRenderer->addJsFile('sysext/backend/Resources/Public/JavaScript/notifications.js');
                // Add RTE JavaScript
-               $this->addRteJsFiles(FormEngine::$RTEcounter);
-               $this->pageRenderer->addJsFile($this->buildJSMainLangFile(FormEngine::$RTEcounter));
+               $this->addRteJsFiles();
+               $this->pageRenderer->addJsFile($this->buildJSMainLangFile());
                $this->pageRenderer->addJsInlineCode('HTMLArea-init', $this->getRteInitJsCode(), TRUE);
                /* =======================================
                 * DRAW THE EDITOR
@@ -562,7 +562,7 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
                // Main skin
                $resultArray = $this->addStyleSheet('rtehtmlarea-skin', $this->editorCSS, '', 'stylesheet', $resultArray);
                // Additional icons from registered plugins
-               foreach ($this->pluginEnabledCumulativeArray[FormEngine::$RTEcounter] as $pluginId) {
+               foreach ($this->pluginEnabledCumulativeArray as $pluginId) {
                        if (is_object($this->registeredPlugins[$pluginId])) {
                                $pathToSkin = $this->registeredPlugins[$pluginId]->getPathToSkin();
                                if ($pathToSkin) {
@@ -606,7 +606,6 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
         * @return void
         */
        protected function initializeToolbarConfiguration() {
-               $rteCounter = FormEngine::$RTEcounter;
                // Enable registred plugins
                $this->enableRegisteredPlugins();
                // Configure toolbar
@@ -614,10 +613,7 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
                // Check if some plugins need to be disabled
                $this->setPlugins();
                // Merge the list of enabled plugins with the lists from the previous RTE editing areas on the same form
-               $this->pluginEnabledCumulativeArray[$rteCounter] = $this->pluginEnabledArray;
-               if ($rteCounter > 1 && isset($this->pluginEnabledCumulativeArray[$rteCounter - 1]) && is_array($this->pluginEnabledCumulativeArray[$rteCounter - 1])) {
-                       $this->pluginEnabledCumulativeArray[$rteCounter] = array_unique(array_values(array_merge($this->pluginEnabledArray, $this->pluginEnabledCumulativeArray[$rteCounter - 1])));
-               }
+               $this->pluginEnabledCumulativeArray = $this->pluginEnabledArray;
        }
 
        /**
@@ -817,10 +813,14 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
        /**
         * Add RTE main scripts and plugin scripts
         *
-        * @param string $RTEcounter:  The index number of the current RTE editing area within the form.
+        * @param int $RTEcounter: The index number of the current RTE editing area within the form. @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
         * @return void
         */
-       protected function addRteJsFiles($RTEcounter) {
+       protected function addRteJsFiles($RTEcounter = NULL) {
+               if ($RTEcounter !== NULL) {
+                       GeneralUtility::deprecationLog('$RTEcounter parameter is deprecated and ignored');
+               }
+
                // Component files. Order is important.
                $components = array(
                        'Util/Wrap.open',
@@ -863,7 +863,7 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
                foreach ($components as $component) {
                        $this->pageRenderer->addJsFile($this->getFullFileName('EXT:' . $this->ID . '/Resources/Public/JavaScript/HTMLArea/' . $component . '.js'));
                }
-               foreach ($this->pluginEnabledCumulativeArray[$RTEcounter] as $pluginId) {
+               foreach ($this->pluginEnabledCumulativeArray as $pluginId) {
                        $extensionKey = is_object($this->registeredPlugins[$pluginId]) ? $this->registeredPlugins[$pluginId]->getExtensionKey() : $this->ID;
                        $fileName = 'EXT:' . $extensionKey . '/Resources/Public/JavaScript/Plugins/' . $pluginId . '.js';
                        $absolutePath = GeneralUtility::getFileAbsFileName($fileName);
@@ -928,14 +928,17 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
        /**
         * Return the Javascript code for configuring the RTE
         *
-        * @param int $RTEcounter: The index number of the current RTE editing area within the form.
+        * @param int $RTEcounter: The index number of the current RTE editing area within the form. @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
         * @param string $table: The table that includes this RTE (optional, necessary for IRRE).
         * @param string $uid: The uid of that table that includes this RTE (optional, necessary for IRRE).
         * @param string $field: The field of that record that includes this RTE (optional).
         * @param string $textAreaId ID of the textarea, to have a unigue number for the editor
         * @return string the Javascript code for configuring the RTE
         */
-       public function registerRTEinJS($RTEcounter, $table = '', $uid = '', $field = '', $textAreaId = '') {
+       public function registerRTEinJS($RTEcounter = NULL, $table = '', $uid = '', $field = '', $textAreaId = '') {
+               if ($RTEcounter !== NULL) {
+                       GeneralUtility::deprecationLog('$RTEcounter parameter is deprecated and ignored');
+               }
                $configureRTEInJavascriptString = '
                        if (typeof configureEditorInstance === "undefined") {
                                configureEditorInstance = new Object();
@@ -1046,7 +1049,7 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
                        }
                }
                if ($classesConfigurationRequired) {
-                       $configureRTEInJavascriptString .= $this->buildJSClassesConfig($RTEcounter);
+                       $configureRTEInJavascriptString .= $this->buildJSClassesConfig();
                }
                // Add Javascript configuration for registered plugins
                foreach ($this->registeredPlugins as $pluginId => $plugin) {
@@ -1078,10 +1081,13 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
        /**
         * Return Javascript configuration of classes
         *
-        * @param int $RTEcounter: The index number of the current RTE editing area within the form.
+        * @param int $RTEcounter: The index number of the current RTE editing area within the form. @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
         * @return string Javascript configuration of classes
         */
-       public function buildJSClassesConfig($RTEcounter) {
+       public function buildJSClassesConfig($RTEcounter = NULL) {
+               if ($RTEcounter !== NULL) {
+                       GeneralUtility::deprecationLog('$RTEcounter parameter is deprecated and ignored');
+               }
                // Include JS arrays of configured classes
                $configureRTEInJavascriptString = '
                        RTEarea[editornumber].classesUrl = "' . ($this->is_FE() && $GLOBALS['TSFE']->absRefPrefix ? $GLOBALS['TSFE']->absRefPrefix : '') . $this->writeTemporaryFile('', ('classes_' . $this->language), 'js', $this->buildJSClassesArray(), TRUE) . '";';
@@ -1276,12 +1282,15 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
        /**
         * Return a file name containing the main JS language array for HTMLArea
         *
-        * @param int $RTEcounter: The index number of the current RTE editing area within the form.
+        * @param int $RTEcounter: The index number of the current RTE editing area within the form. @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
         * @return string filename
         */
-       public function buildJSMainLangFile($RTEcounter) {
+       public function buildJSMainLangFile($RTEcounter = NULL) {
+               if ($RTEcounter !== NULL) {
+                       GeneralUtility::deprecationLog('$RTEcounter parameter is deprecated and ignored');
+               }
                $contents = $this->buildJSMainLangArray() . LF;
-               foreach ($this->pluginEnabledCumulativeArray[$RTEcounter] as $pluginId) {
+               foreach ($this->pluginEnabledCumulativeArray as $pluginId) {
                        $contents .= $this->buildJSLangArray($pluginId) . LF;
                }
                return $this->writeTemporaryFile('', $this->language . '_' . $this->OutputCharset, 'js', $contents, TRUE);
@@ -1440,13 +1449,16 @@ class RteHtmlAreaBase extends \TYPO3\CMS\Backend\Rte\AbstractRte {
         * Return the Javascript code for copying the HTML code from the editor into the hidden input field.
         * This is for submit function of the form.
         *
-        * @param int $RTEcounter: The index number of the current RTE editing area within the form.
+        * @param int $RTEcounter: The index number of the current RTE editing area within the form. @deprecated since TYPO3 CMS 7, will be removed with TYPO3 CMS 8
         * @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
         */
        public function setSaveRTE($RTEcounter, $formName, $textareaId, $textareaName) {
+               if ($RTEcounter !== NULL) {
+                       GeneralUtility::deprecationLog('$RTEcounter parameter is deprecated and ignored');
+               }
                return 'if (RTEarea["' . $textareaId . '"]) { document.' . $formName . '["' . $textareaName . '"].value = RTEarea["' . $textareaId . '"].editor.getHTML(); } else { OK = 0; };';
        }