[!!!][TASK] Remove RTE transformation ts_preserve and preserveTags option 34/46134/3
authorBenni Mack <benni@typo3.org>
Thu, 21 Jan 2016 13:41:16 +0000 (14:41 +0100)
committerWouter Wolters <typo3@wouterwolters.nl>
Thu, 21 Jan 2016 17:58:53 +0000 (18:58 +0100)
The functionality can be completely built with allowTags and is
more flexible.

ts_preserve was only used in the "old" "content (default)" ts_transform
functionality, which was removed already.

Resolves: #72870
Releases: master
Change-Id: Ic4b8b9ce02c0f7672664c909be3e24955b17f873
Reviewed-on: https://review.typo3.org/46134
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/core/Classes/Html/RteHtmlParser.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-72870-RemovedRTETransformationTs_preserveAndPreserveTags.rst [new file with mode: 0644]

index 91f6fb7..fad46de 100644 (file)
@@ -89,13 +89,6 @@ class RteHtmlParser extends HtmlParser
     public $allowedClasses = array();
 
     /**
-     * Set to tags to preserve from Page TSconfig configuration
-     *
-     * @var string
-     */
-    public $preserveTags = '';
-
-    /**
      * Initialize, setting element reference and record PID
      *
      * @param string $elRef Element reference, eg "tt_content:bodytext
@@ -128,7 +121,6 @@ class RteHtmlParser extends HtmlParser
         // Init:
         $this->tsConfig = $thisConfig;
         $this->procOptions = (array)$thisConfig['proc.'];
-        $this->preserveTags = strtoupper(implode(',', GeneralUtility::trimExplode(',', $this->procOptions['preserveTags'])));
         // dynamic configuration of blockElementList
         if ($this->procOptions['blockElementList']) {
             $this->blockElementList = $this->procOptions['blockElementList'];
@@ -185,9 +177,6 @@ class RteHtmlParser extends HtmlParser
                         case 'ts_links':
                             $value = $this->TS_links_db($value);
                             break;
-                        case 'ts_preserve':
-                            $value = $this->TS_preserve_db($value);
-                            break;
                         case 'css_transform':
                             $this->allowedClasses = GeneralUtility::trimExplode(',', $this->procOptions['allowedClasses'], true);
                             // CR has a very disturbing effect, so just remove all CR and rely on LF
@@ -222,9 +211,6 @@ class RteHtmlParser extends HtmlParser
                         case 'ts_links':
                             $value = $this->TS_links_rte($value);
                             break;
-                        case 'ts_preserve':
-                            $value = $this->TS_preserve_rte($value);
-                            break;
                         case 'css_transform':
                             // Has a very disturbing effect, so just remove all '13' - depend on '10'
                             $value = str_replace(CR, '', $value);
@@ -736,54 +722,6 @@ class RteHtmlParser extends HtmlParser
     }
 
     /**
-     * Preserve special tags
-     *
-     * @param string $value Content input
-     * @return string Content output
-     */
-    public function TS_preserve_db($value)
-    {
-        if (!$this->preserveTags) {
-            return $value;
-        }
-        // Splitting into blocks for processing (span-tags are used for special tags)
-        $blockSplit = $this->splitIntoBlock('span', $value);
-        foreach ($blockSplit as $k => $v) {
-            // Block
-            if ($k % 2) {
-                list($attribArray) = $this->get_tag_attributes($this->getFirstTag($v));
-                if ($attribArray['specialtag']) {
-                    $theTag = rawurldecode($attribArray['specialtag']);
-                    $theTagName = $this->getFirstTagName($theTag);
-                    $blockSplit[$k] = $theTag . $this->removeFirstAndLastTag($blockSplit[$k]) . '</' . $theTagName . '>';
-                }
-            }
-        }
-        return implode('', $blockSplit);
-    }
-
-    /**
-     * Preserve special tags
-     *
-     * @param string $value Content input
-     * @return string Content output
-     */
-    public function TS_preserve_rte($value)
-    {
-        if (!$this->preserveTags) {
-            return $value;
-        }
-        $blockSplit = $this->splitIntoBlock($this->preserveTags, $value);
-        foreach ($blockSplit as $k => $v) {
-            // Block
-            if ($k % 2) {
-                $blockSplit[$k] = '<span specialtag="' . rawurlencode($this->getFirstTag($v)) . '">' . $this->removeFirstAndLastTag($blockSplit[$k]) . '</span>';
-            }
-        }
-        return implode('', $blockSplit);
-    }
-
-    /**
      * Transformation handler: 'css_transform' / direction: "db"
      * Cleaning (->db) for standard content elements (ts)
      *
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-72870-RemovedRTETransformationTs_preserveAndPreserveTags.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-72870-RemovedRTETransformationTs_preserveAndPreserveTags.rst
new file mode 100644 (file)
index 0000000..ab7b22e
--- /dev/null
@@ -0,0 +1,34 @@
+==========================================================================
+Breaking: #72870 - Removed RTE transformation ts_preserve and preserveTags
+==========================================================================
+
+Description
+===========
+
+The RTE configuration TSconfig option ``RTE.default.proc.preserveTags`` to preserve special tags was removed.
+
+The RTE transformation mode "ts_preserve" to change special preserved tags and migrate to <span> tags was removed.
+
+The according methods ``TS_preserve_db`` and ``TS_preserve_rte`` within RteHtmlParser were removed.
+
+
+Impact
+======
+
+Setting the TSconfig option or the RTE transformation mode has no effect anymore.
+
+Calling the removed PHP methods directly will result in fatal PHP errors.
+
+
+Affected Installations
+======================
+
+TYPO3 instances with custom RTE transformations using the removed "ts" transformation mode, or a custom transformation mode.
+
+
+Migration
+=========
+
+Use the RTE processing option "RTE.default.proc.allowTags" to include the tags without rewriting them to custom <span> tags.
+
+If special handling is still necessary, an existing hook can be used to re-implement the logic.
\ No newline at end of file