Breaking: #79622 - SpaceBefore and SpaceAfter adjustments for CSS Styled Content

See forge#79622

Description

CSS Styled Content provided the possibility to the editor to fine-tune distances between content elements. The concept of CSC relied on the editor understanding what margins are, how they are calculated and had to maintain an overview of pixels that were used on the site he/she is maintaining.

This led to different problems not only for the editor but also for the integrator because he had no control about what the editor fills into these fields. Also it was hardly controllable when these distances should be variable and change on certain viewports for mobile usage.

To regain control over this behaviour we are now introducing a new concept that purely relies on CSS classes, that can be defined by the integrator.

The original fields spaceAfter and spaceBefore have been dropped, and also the method \TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController::renderSpace() is not called anymore.

Old TypoScript Rendering

tt_content.stdWrap.innerWrap.cObject.default.20.20 = USER
tt_content.stdWrap.innerWrap.cObject.default.20.20 {
   userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
   space = before
   constant = {$content.spaceBefore}
   classStdWrap {
      required = 1
      noTrimWrap = |csc-space-before-| |
   }
}

New TypoScript Rendering

tt_content.stdWrap.innerWrap.cObject.default.20.20 = TEXT
tt_content.stdWrap.innerWrap.cObject.default.20.20 {
   field = space_before_class
   required = 1
   noTrimWrap = |csc-space-before-| |
}

Impact

User-defined distances between content elements are missing.

Affected Installations

All instances that use CSS Styled Content and have spaceBefore or spaceAfter values set to generate more space between their content elements.

Check if your site is affected

SELECT
   uid,
   pid,
   spaceBefore,
   spaceAfter
FROM
   tt_content
WHERE
   (spaceBefore > 0 OR spaceAfter > 0)
   AND deleted = 0

Migration

There is no automatic migration available. If a migration is necessary you need to check the new presets available and migrate the pixels defined before to the a preset of your choice.

Example

UPDATE
   tt_content
SET
   spaceAfter = 0,
   space_after_class = 'medium'
WHERE
   spaceAfter >= 42
   AND spaceAfter < 56

Replacement Documentation

For detailed information about the replacement of spaceBefore and spaceAfter, please head over to the feature documentation of SpaceBefore- and SpaceAfterClass for CSS Styled Content.

Feature-79622-SpaceBeforeAndSpaceAfterClassForCssStyledContent.rst