[!!!][TASK] Remove stdWrap options space, spaceBefore, spaceAfter 02/54802/6
authorGeorg Ringer <georg.ringer@gmail.com>
Mon, 27 Nov 2017 19:24:41 +0000 (20:24 +0100)
committerSusanne Moog <susanne.moog@typo3.org>
Tue, 28 Nov 2017 22:34:24 +0000 (23:34 +0100)
The stdWrap options 'space', 'spaceBefore', 'spaceAfter'
are rarely used and should be better done completely by CSS.

Resolves: #83123
Releases: master
Change-Id: Ic3ed819e64e84f57f77fde1ff72404b78fd74009
Reviewed-on: https://review.typo3.org/54802
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
typo3/sysext/core/Documentation/Changelog/master/Breaking-83124-RemoveStdWrapOptionsSpaceSpaceBeforeSpaceAfter.rst [new file with mode: 0644]
typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
typo3/sysext/frontend/Tests/Unit/ContentObject/ContentObjectRendererTest.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
typo3/sysext/t3editor/Resources/Private/tsref.xml

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-83124-RemoveStdWrapOptionsSpaceSpaceBeforeSpaceAfter.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-83124-RemoveStdWrapOptionsSpaceSpaceBeforeSpaceAfter.rst
new file mode 100644 (file)
index 0000000..617d717
--- /dev/null
@@ -0,0 +1,40 @@
+.. include:: ../../Includes.txt
+
+========================================================================
+Breaking: #83124 - Remove stdWrap options space, spaceBefore, spaceAfter
+========================================================================
+
+See :issue:`83124`
+
+Description
+===========
+
+The stdWrap options :ts:`space`, :ts:`spaceBefore`, :ts:`spaceAfter` are rarely used and should be better done completely by CSS.
+
+
+Impact
+======
+
+The stdWrap options :ts:`space`, :ts:`spaceBefore`, :ts:`spaceAfter` do not work anymore. The following calls to :php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer` will trigger an error:
+
+- :php:`stdWrap_spaceBefore`
+- :php:`stdWrap_spaceAfter`
+- :php:`stdWrap_space`
+
+
+Affected Installations
+======================
+
+Any instance using the stdWrap option :ts:`space`, :ts:`spaceBefore`, :ts:`spaceAfter` or calls to :php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer` :
+
+- :php:`stdWrap_spaceBefore`
+- :php:`stdWrap_spaceAfter`
+- :php:`stdWrap_space`
+
+
+Migration
+=========
+
+Use CSS or a wrap option of stdWrap.
+
+.. index:: Frontend, TypoScript, PartiallyScanned
index b4d7427..1466524 100644 (file)
@@ -207,12 +207,6 @@ class ContentObjectRenderer
         'wrapAlign.' => 'array',
         'typolink.' => 'array',
         'TCAselectItem.' => 'array',
-        'space' => 'space',
-        'space.' => 'array',
-        'spaceBefore' => 'int',
-        'spaceBefore.' => 'array',
-        'spaceAfter' => 'int',
-        'spaceAfter.' => 'array',
         'wrap' => 'wrap',
         'wrap.' => 'array',
         'noTrimWrap' => 'wrap',
@@ -1577,10 +1571,6 @@ class ContentObjectRenderer
                         $functionName => $conf[$functionName],
                         $functionProperties => $conf[$functionProperties]
                     ];
-                    // In this special case 'spaceBefore' and 'spaceAfter' need additional stuff from 'space.''
-                    if ($functionName === 'spaceBefore' || $functionName === 'spaceAfter') {
-                        $singleConf['space.'] = $conf['space.'];
-                    }
                     // Hand over the whole $conf array to the stdWrapHookObjects
                     if ($functionType === 'hook') {
                         $singleConf = $conf;
@@ -2627,49 +2617,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * spaceBefore
-     * Will add space before the current content
-     * By default this is done with a clear.gif but it can be done with CSS margins by setting the property space.useDiv to TRUE
-     *
-     * @param string $content Input value undergoing processing in this function.
-     * @param array $conf stdWrap properties for spaceBefore and space.
-     * @return string The processed input value
-     */
-    public function stdWrap_spaceBefore($content = '', $conf = [])
-    {
-        return $this->wrapSpace($content, trim($conf['spaceBefore']) . '|', $conf['space.']);
-    }
-
-    /**
-     * spaceAfter
-     * Will add space after the current content
-     * By default this is done with a clear.gif but it can be done with CSS margins by setting the property space.useDiv to TRUE
-     *
-     * @param string $content Input value undergoing processing in this function.
-     * @param array $conf stdWrap properties for spaceAfter and space.
-     * @return string The processed input value
-     */
-    public function stdWrap_spaceAfter($content = '', $conf = [])
-    {
-        return $this->wrapSpace($content, '|' . trim($conf['spaceAfter']), $conf['space.']);
-    }
-
-    /**
-     * space
-     * Will add space before or after the current content
-     * By default this is done with a clear.gif but it can be done with CSS margins by setting the property space.useDiv to TRUE
-     * See wrap
-     *
-     * @param string $content Input value undergoing processing in this function.
-     * @param array $conf stdWrap properties for space.
-     * @return string The processed input value
-     */
-    public function stdWrap_space($content = '', $conf = [])
-    {
-        return $this->wrapSpace($content, trim($conf['space']), $conf['space.']);
-    }
-
-    /**
      * wrap
      * This is the "mother" of all wraps
      * Third of a set of different wraps which will be applied in a certain order before or after other functions that modify the content
@@ -5816,39 +5763,6 @@ class ContentObjectRenderer
     }
 
     /**
-     * Adds space above/below the input HTML string. It is done by adding a clear-gif and <br /> tag before and/or after the content.
-     *
-     * @param string $content The content to add space above/below to.
-     * @param string $wrap A value like "10 | 20" where the first part denotes the space BEFORE and the second part denotes the space AFTER (in pixels)
-     * @param array $conf Configuration from TypoScript
-     * @return string Wrapped string
-     */
-    public function wrapSpace($content, $wrap, array $conf = null)
-    {
-        if (trim($wrap)) {
-            $wrapArray = explode('|', $wrap);
-            $wrapBefore = (int)$wrapArray[0];
-            $wrapAfter = (int)$wrapArray[1];
-            $useDivTag = isset($conf['useDiv']) && $conf['useDiv'];
-            if ($wrapBefore) {
-                if ($useDivTag) {
-                    $content = '<div class="content-spacer spacer-before" style="height:' . $wrapBefore . 'px;"></div>' . $content;
-                } else {
-                    $content = '<span style="width: 1px; height: ' . $wrapBefore . 'px; display: inline-block;"></span><br />' . $content;
-                }
-            }
-            if ($wrapAfter) {
-                if ($useDivTag) {
-                    $content .= '<div class="content-spacer spacer-after" style="height:' . $wrapAfter . 'px;"></div>';
-                } else {
-                    $content .= '<span style="width: 1px; height: ' . $wrapAfter . 'px; display: inline-block;"></span><br />';
-                }
-            }
-        }
-        return $content;
-    }
-
-    /**
      * Calling a user function/class-method
      * Notice: For classes the instantiated object will have the internal variable, $cObj, set to be a *reference* to $this (the parent/calling object).
      *
index 40f1004..19f6860 100644 (file)
@@ -3487,7 +3487,7 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
             }
         }
         $this->assertSame(1, $notCallable);
-        $this->assertSame(89, $callable);
+        $this->assertSame(86, $callable);
     }
 
     /**
@@ -3534,7 +3534,7 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
             }
         }
         $this->assertSame($expectExceptions, $exceptions);
-        $this->assertSame(89, $count);
+        $this->assertSame(86, $count);
     }
 
     /***************************************************************************
@@ -6909,113 +6909,6 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Unit\UnitTe
     }
 
     /**
-     * Check if stdWrap_space works properly.
-     *
-     * Show:
-     *
-     *  - Delegates to method wrapSpace.
-     *  - Parameter 1 is $content.
-     *  - Parameter 2 is $conf['space'],
-     *  - trimmed.
-     *  - Parameter 3 is $conf['space.'].
-     *  - Returns the return value.
-     *
-     *  @test
-     */
-    public function stdWrap_space()
-    {
-        $content = $this->getUniqueId('content');
-        $trimmed = $this->getUniqueId('space trimmed');
-        $conf = [
-            'space' => TAB . ' ' . $trimmed . ' ' . TAB,
-            'space.' => [$this->getUniqueId('space.')],
-        ];
-        $return = $this->getUniqueId('return');
-        $subject = $this->getMockBuilder(ContentObjectRenderer::class)
-            ->setMethods(['wrapSpace'])->getMock();
-        $subject
-            ->expects($this->once())
-            ->method('wrapSpace')
-            ->with($content, $trimmed, $conf['space.'])
-            ->willReturn($return);
-        $this->assertSame($return, $subject->stdWrap_space($content, $conf));
-    }
-
-    /**
-     * Check if stdWrap_spaceAfter works properly.
-     *
-     * Show:
-     *
-     *  - Delegates to method wrapSpace.
-     *  - Parameter 1 is $content.
-     *  - Parameter 2 is $conf['spaceAfter'],
-     *  - trimmed,
-     *  - prepended with '|'.
-     *  - Parameter 3 is $conf['space.'] !!!
-     *  - Returns the return value.
-     *
-     *  @test
-     */
-    public function stdWrap_spaceAfter()
-    {
-        $content = $this->getUniqueId('content');
-        $trimmed = $this->getUniqueId('spaceAfter trimmed');
-        $conf = [
-            'spaceAfter' => TAB . ' ' . $trimmed . ' ' . TAB,
-            'space.' => [$this->getUniqueId('space.')],
-        ];
-        $return = $this->getUniqueId('return');
-        $subject = $this->getMockBuilder(ContentObjectRenderer::class)
-            ->setMethods(['wrapSpace'])->getMock();
-        $subject
-            ->expects($this->once())
-            ->method('wrapSpace')
-            ->with($content, '|' . $trimmed, $conf['space.'])
-            ->willReturn($return);
-        $this->assertSame(
-            $return,
-            $subject->stdWrap_spaceAfter($content, $conf)
-        );
-    }
-
-    /**
-     * Check if stdWrap_spaceBefore works properly.
-     *
-     * Show:
-     *
-     *  - Delegates to method wrapSpace.
-     *  - Parameter 1 is $content.
-     *  - Parameter 2 is $conf['spaceBefore'],
-     *  - trimmed,
-     *  - appended with '|'.
-     *  - Parameter 3 is $conf['space.'] !!!
-     *  - Returns the return value.
-     *
-     *  @test
-     */
-    public function stdWrap_spaceBefore()
-    {
-        $content = $this->getUniqueId('content');
-        $trimmed = $this->getUniqueId('spaceBefore trimmed');
-        $conf = [
-            'spaceBefore' => TAB . ' ' . $trimmed . ' ' . TAB,
-            'space.' => [$this->getUniqueId('space.')],
-        ];
-        $return = $this->getUniqueId('return');
-        $subject = $this->getMockBuilder(ContentObjectRenderer::class)
-            ->setMethods(['wrapSpace'])->getMock();
-        $subject
-            ->expects($this->once())
-            ->method('wrapSpace')
-            ->with($content, $trimmed . '|', $conf['space.'])
-            ->willReturn($return);
-        $this->assertSame(
-            $return,
-            $subject->stdWrap_spaceBefore($content, $conf)
-        );
-    }
-
-    /**
      * Check if stdWrap_split works properly.
      *
      * Show:
index cb94db7..61d0b46 100644 (file)
@@ -1416,4 +1416,25 @@ return [
             'Deprecation-83118-DeleteClauseMethods.rst',
         ],
     ],
+    'TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_spaceBefore' => [
+        'numberOfMandatoryArguments' => 0,
+        'maximumNumberOfArguments' => 2,
+        'restFiles' => [
+            'Breaking-83124-RemoveStdWrapOptionsSpaceSpaceBeforeSpaceAfter.rst',
+        ],
+    ],
+    'TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_spaceAfter' => [
+        'numberOfMandatoryArguments' => 0,
+        'maximumNumberOfArguments' => 2,
+        'restFiles' => [
+            'Breaking-83124-RemoveStdWrapOptionsSpaceSpaceBeforeSpaceAfter.rst',
+        ],
+    ],
+    'TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_space' => [
+        'numberOfMandatoryArguments' => 0,
+        'maximumNumberOfArguments' => 2,
+        'restFiles' => [
+            'Breaking-83124-RemoveStdWrapOptionsSpaceSpaceBeforeSpaceAfter.rst',
+        ],
+    ],
 ];
index 649cc7b..2fb3a92 100644 (file)
@@ -6766,26 +6766,6 @@ temp.number {
                        <default><![CDATA[
 ]]></default>
                </property>
-               <property name="space" type="stdWrap">
-                       <description><![CDATA[[space /stdWrap
-                       spaceBefore]   |   [spaceAfter]
-
-Additional property:
-.useDiv = 1
-If set, a clear gif is not used by rather a <div> tag with a style-attribute setting the height. (Affects spaceBefore and spaceAfter as well).]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="spaceAfter" type="stdWrap">
-                       <description><![CDATA[Pixels space after. Done with a clear-gif; <img ...><BR>]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="spaceBefore" type="stdWrap">
-                       <description><![CDATA[Pixels space before. Done with a clear-gif; <img ...><BR>]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
                <property name="split" type="split">
                        <description><![CDATA[
 ]]></description>