Commit 80fec593 authored by Benjamin Kott's avatar Benjamin Kott Committed by Benni Mack
Browse files

[!!!][FEATURE] Streamline Fluid Styled Content and CSS Styled Content

CSS Styled Content has been a long time the preferred way of rendering
content in the frontend. Fluid Styled Content was introduced as
successor of CSC, but the feature set diverged from the beginning. The
lack of flexibility and incomplete feature set in comparision to CSC
made it hard to migrate existing instances.

Since TYPO3 CMS 7.6 Fluid-Templates are the defined standard and
official recommendation for content rendering. The feature set of FSC is
now matching CSC. Both content renderings are now streamlined to be
fully compatible with each other. For the period of CMS 8 LTS CSC will
share the same capabilities to make an transition as easy as possible.
CSC is now deprecated and goes into maintenance mode and will be removed
with CMS 9.

For compatibility, CSC is now supporting Textmedia that was before
exclusive to FSC. But also FSC has learned some tricks from CSC. Fluid
Styled Content has now support for all content elements prior existing
only in CSC, this includes "Text", "Text and Images" and "Images". Also
for example "Frames", "Space before" and "Space after" are now again
featured across both content rendering methods.

Releases: master
Resolves: #79622
Resolves: #72422
Resolves: #75466
Resolves: #71570
Resolves: #71484
Change-Id: I7d2a9072baad508b6b87470b847444b91e7323fb
Reviewed-on: https://review.typo3.org/51065


Reviewed-by: Andreas Fernandez's avatarAndreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez's avatarAndreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Markus Klein's avatarMarkus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein's avatarMarkus Klein <markus.klein@typo3.org>
Reviewed-by: Benni Mack's avatarBenni Mack <benni@typo3.org>
Tested-by: Benni Mack's avatarBenni Mack <benni@typo3.org>
parent 28ee049e
......@@ -6,8 +6,9 @@
.label-beta:extend(.label-warning){};
.label-alpha:extend(.label-danger){};
.label-obsolete:extend(.label-default){};
.label-experimental:extend(.label-default){}
.label-test:extend(.label-default){}
.label-experimental:extend(.label-info){};
.label-test:extend(.label-default){};
.label-deprecated:extend(.label-danger){};
.label-excludeFromUpdates:extend(.label-default){}
.label-inline,
......@@ -24,4 +25,4 @@
}
.label-space-right {
margin-right: 1em;
}
\ No newline at end of file
}
......@@ -265,11 +265,8 @@ class TableController extends AbstractWizardController
public function getConfigCode($row)
{
// Get delimiter settings
$flexForm = GeneralUtility::xml2array($row['pi_flexform']);
if (is_array($flexForm)) {
$this->tableParsing_quote = $flexForm['data']['s_parsing']['lDEF']['tableparsing_quote']['vDEF'] ? chr((int)$flexForm['data']['s_parsing']['lDEF']['tableparsing_quote']['vDEF']) : '';
$this->tableParsing_delimiter = $flexForm['data']['s_parsing']['lDEF']['tableparsing_delimiter']['vDEF'] ? chr((int)$flexForm['data']['s_parsing']['lDEF']['tableparsing_delimiter']['vDEF']) : '|';
}
$this->tableParsing_quote = $row['table_enclosure'] ? chr((int)$row['table_enclosure']) : '';
$this->tableParsing_delimiter = $row['table_delimiter'] ? chr((int)$row['table_delimiter']) : '|';
// If some data has been submitted, then construct
if (isset($this->TABLECFG['c'])) {
// Process incoming:
......
......@@ -459,7 +459,7 @@ class PagePositionMap
} elseif ($columnConfig['colPos']) {
$table .= '<em>' . $this->wrapColumnHeader($this->getLanguageService()->getLL('noAccess'), '', '') . '</em>';
} else {
$table .= '<em>' . $this->wrapColumnHeader(($columnConfig['name']?: '') . ' (' . $this->getLanguageService()->getLL('notAssigned') . ')', '', '') . '</em>';
$table .= '<em>' . $this->wrapColumnHeader(($this->getLanguageService()->sL($columnConfig['name']) ?: '') . ' (' . $this->getLanguageService()->getLL('notAssigned') . ')', '', '') . '</em>';
}
$table .= '</p>';
// Render lines
......
# dummy placeholders for item groups
mod.wizards.newContentElement.wizardItems {
common.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common
special.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special
forms.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:forms
plugins.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins
plugins.elements {
general {
iconIdentifier = content-plugin
title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_title
description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_description
tt_content_defValues.CType = list
}
}
plugins.show = *
}
# dummy placeholders for item groups
mod.wizards.newContentElement.wizardItems {
common.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:common
menu.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:menu
special.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special
forms.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:forms
plugins.header = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins
plugins.elements {
general {
iconIdentifier = content-plugin
title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_title
description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:plugins_general_description
tt_content_defValues.CType = list
}
}
plugins.show = *
}
......@@ -54,6 +54,75 @@
<trans-unit id="common_table_description">
<source>A simple table.</source>
</trans-unit>
<trans-unit id="menu">
<source>Menu</source>
</trans-unit>
<trans-unit id="menu_abstract.title">
<source>Abstracts</source>
</trans-unit>
<trans-unit id="menu_abstract.description">
<source>Menu of subpages of selected pages including abstracts</source>
</trans-unit>
<trans-unit id="menu_categorized_content.title">
<source>Categorized content</source>
</trans-unit>
<trans-unit id="menu_categorized_content.description">
<source>Content elements for selected categories</source>
</trans-unit>
<trans-unit id="menu_categorized_pages.title">
<source>Categorized pages</source>
</trans-unit>
<trans-unit id="menu_pages.title">
<source>Pages</source>
</trans-unit>
<trans-unit id="menu_pages.description">
<source>Menu of selected pages</source>
</trans-unit>
<trans-unit id="menu_subpages.title">
<source>Subpages</source>
</trans-unit>
<trans-unit id="menu_subpages.description">
<source>Menu of subpages of selected pages</source>
</trans-unit>
<trans-unit id="menu_categorized_pages.description">
<source>Pages for selected categories</source>
</trans-unit>
<trans-unit id="menu_recently_updated.title">
<source>Recently updated pages</source>
</trans-unit>
<trans-unit id="menu_recently_updated.description">
<source>Menu of recenlty updated pages</source>
</trans-unit>
<trans-unit id="menu_related_pages.title">
<source>Related pages</source>
</trans-unit>
<trans-unit id="menu_related_pages.description">
<source>Menu of related pages based on keywords</source>
</trans-unit>
<trans-unit id="menu_section.title">
<source>Section index</source>
</trans-unit>
<trans-unit id="menu_section.description">
<source>Page content marked for section menus</source>
</trans-unit>
<trans-unit id="menu_section_pages.title">
<source>Section index of subpages from selected pages</source>
</trans-unit>
<trans-unit id="menu_section_pages.description">
<source>Menu of subpages of selected pages including sections</source>
</trans-unit>
<trans-unit id="menu_sitemap.title">
<source>Sitemap</source>
</trans-unit>
<trans-unit id="menu_sitemap.description">
<source>Expanded menu of all pages and subpages for selected pages</source>
</trans-unit>
<trans-unit id="menu_sitemap_pages.title">
<source>Sitemaps of selected pages</source>
</trans-unit>
<trans-unit id="menu_sitemap_pages.description">
<source>Expanded menu of all subpages for selected pages</source>
</trans-unit>
<trans-unit id="special">
<source>Special elements</source>
</trans-unit>
......
......@@ -320,7 +320,8 @@ th {
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
filter: none;
-webkit-filter: none;
filter: none;
}
.fa-stack {
position: relative;
......@@ -5726,7 +5727,6 @@ a.label:focus {
}
.label-default,
.label-obsolete,
.label-experimental,
.label-test,
.label-excludeFromUpdates {
background-color: #d7d7d7;
......@@ -5750,7 +5750,8 @@ a.label:focus {
.label-success[href]:focus {
background-color: #5f8139;
}
.label-info {
.label-info,
.label-experimental {
background-color: #6daae0;
}
.label-info[href]:hover,
......@@ -5766,7 +5767,8 @@ a.label:focus {
background-color: #d88b1a;
}
.label-danger,
.label-alpha {
.label-alpha,
.label-deprecated {
background-color: #c83c3c;
}
.label-danger[href]:hover,
......@@ -8901,7 +8903,7 @@ div.dropdown-menu {
}
/*!
* Datetimepicker for Bootstrap 3
* version : 4.17.44
* version : 4.17.42
* https://github.com/Eonasdan/bootstrap-datetimepicker/
*/
.bootstrap-datetimepicker-widget {
......
......@@ -40,5 +40,5 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php'
$GLOBALS['TYPO3_CONF_VARS']['SYS']['livesearch']['page'] = 'pages';
// Include base TSconfig setup
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/PageTSconfig/NewContentElementWizard.ts">');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/UserTSconfig/Options.ts">');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/TSconfig/Page/Mod/Wizards/NewContentElement.ts">');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:backend/Configuration/TSconfig/User/Options.ts">');
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Menu;
namespace TYPO3\CMS\Compatibility7\ViewHelpers\Menu;
/*
* This file is part of the TYPO3 CMS project.
......
#
# Define content elements in "New Content Element Wizard"
#
mod.wizards.newContentElement.wizardItems {
menu.elements {
menu {
iconIdentifier = content-special-menu
title = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_title
description = LLL:EXT:backend/Resources/Private/Language/locallang_db_new_content_el.xlf:special_menus_description
tt_content_defValues {
CType = menu
menu_type = 0
}
}
}
menu.show := addToList(menu)
}
<?php
defined('TYPO3_MODE') or die();
if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('css_styled_content')) {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'compatibility7',
'Configuration/TypoScript/ContentElement/CssStyledContent/',
'CSS Styled Content TYPO3 v7'
);
}
if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('fluid_styled_content')) {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'compatibility7',
'Configuration/TypoScript/ContentElement/FluidStyledContent/',
'Fluid Styled Content TYPO3 v7'
);
}
......@@ -19,7 +19,10 @@ $fields = [
// Register "old" FE plugin and hide layout, select_key and pages fields in BE
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
['LLL:EXT:indexed_search/Resources/Private/Language/locallang_main.xlf:mod_indexed_search', 'indexed_search'],
[
'LLL:EXT:indexed_search/Resources/Private/Language/locallang_main.xlf:mod_indexed_search',
'indexed_search'
],
'list_type',
'indexed_search'
);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment