first commit

This commit is contained in:
salam committed 2026-10-19 08:18:39 +02:00
commit 1218dd1517
12716 files changed
+989233

No files matched your search

@@ -0,0 +1,97 @@
<?php
namespace TYPO3\CMS\FluidStyledContent\ViewHelpers\Link;
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
use TYPO3\CMS\Core\Resource\FileInterface;
use TYPO3\CMS\Core\TypoScript\TypoScriptService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
/**
* A ViewHelper for creating a link for an image popup.
*
* = Example =
*
* <code title="enlarge image on click">
* <ce:link.clickEnlarge image="{image}" configuration="{settings.images.popup}"><img src=""></ce:link.clickEnlarge>
* </code>
*
* <output>
* <a href="url" onclick="javascript" target="thePicture"><img src=""></a>
* </output>
*
* @internal this is not part of TYPO3 Core API.
*/
class ClickEnlargeViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* @var bool
*/
protected $escapeOutput = false;
/**
* Initialize ViewHelper arguments
*/
public function initializeArguments()
{
$this->registerArgument('image', FileInterface::class, 'The original image file', true);
$this->registerArgument(
'configuration',
'mixed',
'String, \TYPO3\CMS\Core\Resource\File or \TYPO3\CMS\Core\Resource\FileReference with link configuration',
true
);
}
/**
* @param array $arguments
* @param \Closure $renderChildrenClosure
* @param RenderingContextInterface $renderingContext
* @return string
*/
public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
{
$image = $arguments['image'];
if ($image instanceof FileInterface) {
self::getContentObjectRenderer()->setCurrentFile($image);
}
$configuration = self::getTypoScriptService()->convertPlainArrayToTypoScriptArray($arguments['configuration']);
$content = $renderChildrenClosure();
$configuration['enable'] = true;
return self::getContentObjectRenderer()->imageLinkWrap($content, $image, $configuration);
}
/**
* @return ContentObjectRenderer
*/
protected static function getContentObjectRenderer()
{
return $GLOBALS['TSFE']->cObj;
}
/**
* @return TypoScriptService
*/
protected static function getTypoScriptService(): TypoScriptService
{
return GeneralUtility::makeInstance(TypoScriptService::class);
}
}
@@ -0,0 +1,13 @@
<?php
defined('TYPO3_MODE') or die();
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'fluid_styled_content',
'Configuration/TypoScript/',
'Fluid Content Elements'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'fluid_styled_content',
'Configuration/TypoScript/Styling/',
'Fluid Content Elements CSS (optional)'
);
@@ -0,0 +1,38 @@
# Bullet List:
# A single bullet list.
#
# CType: bullets
tt_content.bullets =< lib.contentElement
tt_content.bullets {
templateName = Bullets
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\SplitProcessor
10 {
if {
value = 2
isLessThan.field = bullets_type
}
fieldName = bodytext
removeEmptyEntries = 1
as = bullets
}
20 = TYPO3\CMS\Frontend\DataProcessing\CommaSeparatedValueProcessor
20 {
fieldName = bodytext
if {
value = 2
equals.field = bullets_type
}
fieldDelimiter = |
as = bullets
}
}
stdWrap {
editIcons = tt_content: header [header_layout], bodytext [bullets_type]
editIcons {
beforeLastTag = 1
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.bullets
}
}
}
@@ -0,0 +1,9 @@
# Divider:
# This element inserts a visual divider, which is by default a horizontal line.
#
# CType: div
tt_content.div =< lib.contentElement
tt_content.div {
templateName = Div
}
@@ -0,0 +1,16 @@
# Header Only:
# Adds a header only.
#
# CType: header
tt_content.header =< lib.contentElement
tt_content.header {
templateName = Header
stdWrap {
editIcons = tt_content: header [header_layout|header_link], subheader, date
editIcons {
beforeLastTag = 1
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.header
}
}
}
@@ -0,0 +1,16 @@
# Plain HTML:
# With this element you can output raw HTML code on the page.
#
# CType: html
tt_content.html =< lib.contentElement
tt_content.html {
templateName = Html
stdWrap {
editIcons = tt_content: bodytext
editIcons {
beforeLastTag = 1
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.html
}
}
}
@@ -0,0 +1,29 @@
# Image:
# ...
#
# CType: image
tt_content.image =< lib.contentElement
tt_content.image {
templateName = Image
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = image
}
20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
20 {
maxGalleryWidth = {$styles.content.textmedia.maxW}
maxGalleryWidthInText = {$styles.content.textmedia.maxWInText}
columnSpacing = {$styles.content.textmedia.columnSpacing}
borderWidth = {$styles.content.textmedia.borderWidth}
borderPadding = {$styles.content.textmedia.borderPadding}
}
}
stdWrap {
editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|imageborder], image_zoom
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.image
}
}
}
@@ -0,0 +1,15 @@
# General Plugin:
# This is the default rendering definition for plugins.
#
# CType: list
tt_content.list =< lib.contentElement
tt_content.list {
templateName = List
stdWrap {
editIcons = tt_content: header [header_layout], list_type, layout, pages [recursive]
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.list
}
}
}
@@ -0,0 +1,28 @@
# Menu of subpages of selected pages including abstracts:
# ...
#
# CType: menu_abstract
tt_content.menu_abstract =< lib.contentElement
tt_content.menu_abstract {
templateName = MenuAbstract
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = directory
special.value.field = pages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,37 @@
# Content elements for selected categories:
# ...
#
# CType: menu_categorized_content
tt_content.menu_categorized_content =< lib.contentElement
tt_content.menu_categorized_content {
templateName = MenuCategorizedContent
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
10 {
table = tt_content
selectFields = tt_content.*
groupBy = uid
pidInList.data = leveluid : 0
recursive = 99
join.data = field:selected_categories
join.wrap = sys_category_record_mm ON uid = sys_category_record_mm.uid_foreign AND sys_category_record_mm.uid_local IN(|)
where.data = field:category_field
where.wrap = tablenames='tt_content' and fieldname='|'
orderBy = tt_content.sorting
as = content
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = image
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], selected_categories, category_field
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,33 @@
# Pages for selected categories:
# ...
#
# CType: menu_categorized_pages
tt_content.menu_categorized_pages =< lib.contentElement
tt_content.menu_categorized_pages {
templateName = MenuCategorizedPages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = categories
special {
value.field = selected_categories
relation.field = category_field
sorting = title
order = asc
}
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], selected_categories, category_field
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,28 @@
# Menu of selected pages:
# ...
#
# CType: menu_pages
tt_content.menu_pages =< lib.contentElement
tt_content.menu_pages {
templateName = MenuPages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = list
special.value.field = pages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,32 @@
# Recently updated pages:
# ...
#
# CType: menu_recently_updated
tt_content.menu_recently_updated =< lib.contentElement
tt_content.menu_recently_updated {
templateName = MenuRecentlyUpdated
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = updated
special {
value.field = pages
maxAge = 3600*24*7
excludeNoSearchPages = 1
}
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,32 @@
# Related pages (based on keywords):
# ...
#
# CType: menu_related_pages
tt_content.menu_related_pages =< lib.contentElement
tt_content.menu_related_pages {
templateName = MenuRelatedPages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = keywords
special {
value.field = pages
excludeNoSearchPages = 1
}
alternativeSortingField = title
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,55 @@
# Section index (page content marked for section menus):
# ...
#
# CType: menu_section
tt_content.menu_section =< lib.contentElement
tt_content.menu_section {
templateName = MenuSection
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
// Always activate includeNotInMenu for a section menu of the current page
includeNotInMenu.override = 1
includeNotInMenu.override.if.isFalse.field = pages
special = list
special {
value {
field = pages
override {
data = page:uid
if {
isFalse.field = pages
}
}
}
}
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
20 {
table = tt_content
pidInList.field = uid
as = content
where = sectionIndex = 1
orderBy = sorting
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = image
}
}
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,41 @@
# Menu of subpages of selected pages including sections:
# ...
#
# CType: menu_section_pages
tt_content.menu_section_pages =< lib.contentElement
tt_content.menu_section_pages {
templateName = MenuSectionPages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = directory
special.value.field = pages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
20 {
table = tt_content
pidInList.field = uid
orderBy = sorting
as = content
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = image
}
}
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,27 @@
# Sitemap:
# ...
#
# CType: menu_sitemap
tt_content.menu_sitemap =< lib.contentElement
tt_content.menu_sitemap {
templateName = MenuSitemap
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
levels = 7
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,29 @@
# Sitemaps of selected pages:
# ...
#
# CType: menu_sitemap_pages
tt_content.menu_sitemap_pages =< lib.contentElement
tt_content.menu_sitemap_pages {
templateName = MenuSitemapPages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = directory
special.value.field = pages
levels = 7
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,28 @@
# Menu of subpages of selected pages:
# ...
#
# CType: menu_subpages
tt_content.menu_subpages =< lib.contentElement
tt_content.menu_subpages {
templateName = MenuSubpages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
special = directory
special.value.field = pages
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
}
}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], pages
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
}
}
}
@@ -0,0 +1,23 @@
# Insert records:
# This element embeds other content elements.
#
# CType: shortcut
tt_content.shortcut =< lib.contentElement
tt_content.shortcut {
templateName = Shortcut
# Keep this, since the "conf" option can be used
variables.shortcuts = RECORDS
variables.shortcuts {
source.field = records
tables = {$styles.content.shortcut.tables}
}
stdWrap {
editIcons = tt_content: header [header_layout], records
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.shortcut
}
}
}
@@ -0,0 +1,39 @@
# Table:
# A simple table.
#
# CType: table
tt_content.table =< lib.contentElement
tt_content.table {
templateName = Table
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\CommaSeparatedValueProcessor
10 {
fieldName = bodytext
fieldDelimiter.char.cObject = TEXT
fieldDelimiter.char.cObject {
field = table_delimiter
}
fieldEnclosure.char.cObject = TEXT
fieldEnclosure.char.cObject {
field = table_enclosure
}
fieldEnclosure {
if {
value = 0
equals.field = table_enclosure
negate = 1
}
}
maximumColumns.field = cols
as = table
}
}
stdWrap {
editIcons = tt_content: header [header_layout], bodytext, [table_caption|cols|table_header_position|table_tfoot]
editIcons {
beforeLastTag = 1
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.table
}
}
}
@@ -0,0 +1,16 @@
# Regular Text Element:
# A regular text element with header and bodytext fields.
#
# CType: text
tt_content.text =< lib.contentElement
tt_content.text {
templateName = Text
stdWrap {
editIcons = tt_content: bodytext
editIcons {
beforeLastTag = 1
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.html
}
}
}
@@ -0,0 +1,29 @@
# Text & Media:
# Any number of media wrapped right around a regular text element.
#
# CType: textmedia
tt_content.textmedia =< lib.contentElement
tt_content.textmedia {
templateName = Textmedia
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = assets
}
20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
20 {
maxGalleryWidth = {$styles.content.textmedia.maxW}
maxGalleryWidthInText = {$styles.content.textmedia.maxWInText}
columnSpacing = {$styles.content.textmedia.columnSpacing}
borderWidth = {$styles.content.textmedia.borderWidth}
borderPadding = {$styles.content.textmedia.borderPadding}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], bodytext, assets [imageorient|imagewidth|imageheight], [imagecols|imageborder], image_zoom
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.textmedia
}
}
}
@@ -0,0 +1,29 @@
# Text and Images:
# Text with images.
#
# CType: textpic
tt_content.textpic =< lib.contentElement
tt_content.textpic {
templateName = Textpic
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = image
}
20 = TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor
20 {
maxGalleryWidth = {$styles.content.textmedia.maxW}
maxGalleryWidthInText = {$styles.content.textmedia.maxWInText}
columnSpacing = {$styles.content.textmedia.columnSpacing}
borderWidth = {$styles.content.textmedia.borderWidth}
borderPadding = {$styles.content.textmedia.borderPadding}
}
}
stdWrap {
editIcons = tt_content: header [header_layout], bodytext, image [imageorient|imagewidth|imageheight], [imagecols|imageborder], image_zoom
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.textpic
}
}
}
@@ -0,0 +1,24 @@
# File Links:
# Makes a list of files for download.
#
# CType: uploads
tt_content.uploads =< lib.contentElement
tt_content.uploads {
templateName = Uploads
dataProcessing {
10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
10 {
references.fieldName = media
collections.field = file_collections
sorting.field = filelink_sorting
sorting.direction.field = filelink_sorting_direction
}
}
stdWrap {
editIcons = tt_content: header [header_layout], media, file_collections, filelink_sorting, [filelink_size|uploads_description|uploads_type]
editIcons {
iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.uploads
}
}
}
@@ -0,0 +1,40 @@
# Default configuration for content elements which are using FLUIDTEMPLATE directly
lib.contentElement >
lib.contentElement = FLUIDTEMPLATE
lib.contentElement {
templateName = Default
templateRootPaths {
0 = EXT:fluid_styled_content/Resources/Private/Templates/
10 = {$styles.templates.templateRootPath}
}
partialRootPaths {
0 = EXT:fluid_styled_content/Resources/Private/Partials/
10 = {$styles.templates.partialRootPath}
}
layoutRootPaths {
0 = EXT:fluid_styled_content/Resources/Private/Layouts/
10 = {$styles.templates.layoutRootPath}
}
settings {
defaultHeaderType = {$styles.content.defaultHeaderType}
media {
popup {
bodyTag = <body style="margin:0; background:#fff;">
wrap = <a href="javascript:close();"> | </a>
width = {$styles.content.textmedia.linkWrap.width}
height = {$styles.content.textmedia.linkWrap.height}
crop.data = file:current:crop
JSwindow = 1
JSwindow {
newWindow = {$styles.content.textmedia.linkWrap.newWindow}
if.isFalse = {$styles.content.textmedia.linkWrap.lightboxEnabled}
}
directImageLink = {$styles.content.textmedia.linkWrap.lightboxEnabled}
linkParams.ATagParams.dataWrap = class="{$styles.content.textmedia.linkWrap.lightboxCssClass}" rel="{$styles.content.textmedia.linkWrap.lightboxRelAttribute}"
}
additionalConfig {
no-cookie = 1
}
}
}
}
@@ -0,0 +1,124 @@
# Creates persistent ParseFunc setup for non-HTML content.
lib.parseFunc {
makelinks = 1
makelinks {
http {
keep = {$styles.content.links.keep}
extTarget = {$styles.content.links.extTarget}
}
mailto {
keep = path
}
}
tags {
link = TEXT
link {
current = 1
typolink {
parameter.data = parameters : allParams
extTarget = {$styles.content.links.extTarget}
}
parseFunc.constants = 1
}
a = TEXT
a {
current = 1
typolink {
parameter.data = parameters:href
title.data = parameters:title
ATagParams.data = parameters:allParams
# the target attribute takes precedence over config.intTarget
target.ifEmpty.data = parameters:target
# the target attribute takes precedence over the constant (styles.content.links.extTarget)
# which takes precedence over config.extTarget
# do not pass extTarget as reference, as it might not be set resulting in the string being
# written to the target attribute
extTarget.ifEmpty < config.extTarget
extTarget.ifEmpty.override = {$styles.content.links.extTarget}
extTarget.override.data = parameters:target
}
}
}
allowTags = {$styles.content.allowTags}
denyTags = *
sword = <span class="ce-sword">|</span>
constants = 1
nonTypoTagStdWrap {
HTMLparser = 1
HTMLparser {
keepNonMatchedTags = 1
htmlSpecialChars = 2
}
}
htmlSanitize = 1
}
# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "default" transformation.
lib.parseFunc_RTE < lib.parseFunc
lib.parseFunc_RTE {
# Processing <ol>, <ul> and <table> blocks separately
externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul, pre
externalBlocks {
ol {
stripNL = 1
stdWrap.parseFunc = < lib.parseFunc
}
ul {
stripNL = 1
stdWrap.parseFunc = < lib.parseFunc
}
pre {
stdWrap.parseFunc < lib.parseFunc
}
table {
stripNL = 1
stdWrap {
HTMLparser = 1
HTMLparser {
tags.table.fixAttrib.class {
default = contenttable
always = 1
list = contenttable
}
keepNonMatchedTags = 1
}
}
HTMLtableCells = 1
HTMLtableCells {
# Recursive call to self but without wrapping non-wrapped cell content
default.stdWrap {
parseFunc = < lib.parseFunc_RTE
parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag =
}
addChr10BetweenParagraphs = 1
}
}
div {
stripNL = 1
callRecursive = 1
}
article < .div
aside < .div
blockquote < .div
footer < .div
header < .div
nav < .div
section < .div
dl < .div
dd < .div
}
nonTypoTagStdWrap {
HTMLparser = 1
HTMLparser {
keepNonMatchedTags = 1
htmlSpecialChars = 2
}
encapsLines {
encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt
remapTag.DIV = P
nonWrappedTag = P
innerStdWrap_all.ifBlank = &nbsp;
}
}
}
@@ -0,0 +1,79 @@
plugin.tx_frontend._CSS_DEFAULT_STYLE (
.ce-align-left { text-align: left; }
.ce-align-center { text-align: center; }
.ce-align-right { text-align: right; }
.ce-table td, .ce-table th { vertical-align: top; }
.ce-textpic, .ce-image, .ce-nowrap .ce-bodytext, .ce-gallery, .ce-row, .ce-uploads li, .ce-uploads div { overflow: hidden; }
.ce-left .ce-gallery, .ce-column { float: left; }
.ce-center .ce-outer { position: relative; float: right; right: 50%; }
.ce-center .ce-inner { position: relative; float: right; right: -50%; }
.ce-right .ce-gallery { float: right; }
.ce-gallery figure { display: table; margin: 0; }
.ce-gallery figcaption { display: table-caption; caption-side: bottom; }
.ce-gallery img { display: block; }
.ce-gallery iframe { border-width: 0; }
.ce-border img,
.ce-border iframe {
border: {$styles.content.textmedia.borderWidth}px solid {$styles.content.textmedia.borderColor};
padding: {$styles.content.textmedia.borderPadding}px;
}
.ce-intext.ce-right .ce-gallery, .ce-intext.ce-left .ce-gallery, .ce-above .ce-gallery {
margin-bottom: {$styles.content.textmedia.textMargin}px;
}
.ce-intext.ce-right .ce-gallery { margin-left: {$styles.content.textmedia.textMargin}px; }
.ce-intext.ce-left .ce-gallery { margin-right: {$styles.content.textmedia.textMargin}px; }
.ce-below .ce-gallery { margin-top: {$styles.content.textmedia.textMargin}px; }
.ce-column { margin-right: {$styles.content.textmedia.columnSpacing}px; }
.ce-column:last-child { margin-right: 0; }
.ce-row { margin-bottom: {$styles.content.textmedia.rowSpacing}px; }
.ce-row:last-child { margin-bottom: 0; }
.ce-above .ce-bodytext { clear: both; }
.ce-intext.ce-left ol, .ce-intext.ce-left ul { padding-left: 40px; overflow: auto; }
/* Headline */
.ce-headline-left { text-align: left; }
.ce-headline-center { text-align: center; }
.ce-headline-right { text-align: right; }
/* Uploads */
.ce-uploads { margin: 0; padding: 0; }
.ce-uploads li { list-style: none outside none; margin: 1em 0; }
.ce-uploads img { float: left; padding-right: 1em; vertical-align: top; }
.ce-uploads span { display: block; }
/* Table */
.ce-table { width: 100%; max-width: 100%; }
.ce-table th, .ce-table td { padding: 0.5em 0.75em; vertical-align: top; }
.ce-table thead th { border-bottom: 2px solid #dadada; }
.ce-table th, .ce-table td { border-top: 1px solid #dadada; }
.ce-table-striped tbody tr:nth-of-type(odd) { background-color: rgba(0,0,0,.05); }
.ce-table-bordered th, .ce-table-bordered td { border: 1px solid #dadada; }
/* Space */
.frame-space-before-extra-small { margin-top: 1em; }
.frame-space-before-small { margin-top: 2em; }
.frame-space-before-medium { margin-top: 3em; }
.frame-space-before-large { margin-top: 4em; }
.frame-space-before-extra-large { margin-top: 5em; }
.frame-space-after-extra-small { margin-bottom: 1em; }
.frame-space-after-small { margin-bottom: 2em; }
.frame-space-after-medium { margin-bottom: 3em; }
.frame-space-after-large { margin-bottom: 4em; }
.frame-space-after-extra-large { margin-bottom: 5em; }
/* Frame */
.frame-ruler-before:before { content: ''; display: block; border-top: 1px solid rgba(0,0,0,0.25); margin-bottom: 2em; }
.frame-ruler-after:after { content: ''; display: block; border-bottom: 1px solid rgba(0,0,0,0.25); margin-top: 2em; }
.frame-indent { margin-left: 15%; margin-right: 15%; }
.frame-indent-left { margin-left: 33%; }
.frame-indent-right { margin-right: 33%; }
)
@@ -0,0 +1,60 @@
styles.templates {
# cat=content/templates/b1; type=string; label= Path of Fluid Templates for all defined content elements
templateRootPath =
# cat=content/templates/b2; type=string; label= Path of Fluid Partials for all defined content elements
partialRootPath =
# cat=content/templates/b3; type=string; label= Path of Fluid Layouts for all defined content elements
layoutRootPath =
}
styles.content {
# cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default
defaultHeaderType = 2
# cat=content/cShortcut/t0; type=string; label=List of accepted tables
shortcut.tables = tt_content
# cat=content/parseFunc/a0; type=string; label=List of allowed HTML tags when rendering RTE content
allowTags = a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, s, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var
textmedia {
# cat=content/cTextmedia/b1; type=int+; label= Max Image/Media Width: This indicates that maximum number of pixels (width) a block of media elements inserted as content is allowed to consume
maxW = 600
# cat=content/cTextmedia/b2; type=int+; label= Max Image/Media Width (Text): Same as above, but this is the maximum width when text is wrapped around an block of media elements. Default is 50% of the normal Max Media Item Width
maxWInText = 300
# cat=content/cTextmedia/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between media elements in a block in content elements of type "Media & Images". If you change this manually in your CSS, you need to adjust this setting accordingly
columnSpacing = 10
# cat=content/cTextmedia/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance after each media elements row in content elements of type ""Text & Media". If you change this manually in your CSS, you need to adjust this setting accordingly
rowSpacing = 10
# cat=content/cTextmedia/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text & Images"
textMargin = 10
# cat=content/cTextmedia/i1; type=color; label= Media element border, color: Bordercolor of media elements in content elements when "Border"-option for an element is set
borderColor = #000000
# cat=content/cTextmedia/i2; type=int[0-100]; label= Media element border, thickness: Thickness of border around media elements in content elements when "Border"-option for element is set
borderWidth = 2
# cat=content/cTextmedia/i3; type=int+; label= Media element border, padding: Padding left and right to the media element, around the border
borderPadding = 0
# cat=content/cTextmedia/c1; type=string; label= Click-enlarge Media Width: This specifies the width of the enlarged media element when click-enlarge is enabled
linkWrap.width = 800m
# cat=content/cTextmedia/c2; type=string; label= Click-enlarge Media Height: This specifies the height of the enlarged media element when click-enlarge is enabled
linkWrap.height = 600m
# cat=content/cTextmedia/c3; type=boolean; label= Advanced, New window: If set, every click-enlarged media element will open in it's own popup window and not the current popup window (which may have a wrong size for the media element to fit in)
linkWrap.newWindow = 0
# cat=content/cTextmedia/c4; type=boolean; label= Lightbox click-enlarge rendering: Whether media elements with click-enlarge checked should be rendered lightbox-compliant
linkWrap.lightboxEnabled = 0
# cat=content/cTextmedia/c5; type=string; label= Lightbox CSS class: Which CSS class to use for lightbox links (only applicable if lightbox rendering is enabled)
linkWrap.lightboxCssClass = lightbox
# cat=content/cTextmedia/c6; type=string; label= Lightbox rel="" attribute: Which rel="" attribute to use for lightbox links (only applicable if lightbox rendering is enabled)
linkWrap.lightboxRelAttribute = lightbox[{field:uid}]
}
links {
# cat=content/links/l2; type=small; label= Target for external links
extTarget = _blank
# cat=content/links/l3; type=string; label= Parts to keep when building links: Comma separated list of the link parts to show when building the link-text: scheme,path,query. Example: "" (empty) => www.example.com, "scheme,path" => http://www.example.com
keep = path
}
}
@@ -0,0 +1,48 @@
# Include setup
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/Helper/ContentElement.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/Helper/ParseFunc.typoscript">
# Content element rendering
tt_content {
stdWrap {
# Setup the edit panel for all content elements
editPanel = 1
editPanel {
allow = move, new, edit, hide, delete
label = %s
onlyCurrentPid = 1
previewBorder = 1
edit.displayRecord = 1
}
}
}
# Typical content elements
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Bullets.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Div.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Header.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Html.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Image.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/List.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Shortcut.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Table.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Text.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Textmedia.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Textpic.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/Uploads.typoscript">
# Menu content elements
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuAbstract.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedContent.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuCategorizedPages.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuPages.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSubpages.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSection.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSectionPages.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRelatedPages.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemap.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuSitemapPages.typoscript">
@@ -0,0 +1,17 @@
.. include:: ../Includes.txt
.. _adding-your-own-content-elements:
================================
Adding Your Own Content Elements
================================
.. attention::
This page has been merged into :ref:`TYPO3 Explained <t3coreapi:adding-your-own-content-elements>`
since core version 8.7.
**Older versions:**
Please refer to "Related Links" in the lower left corner of the page.
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,47 @@
.. include:: ../../Includes.txt
.. _constant-editor:
===============
Constant Editor
===============
The Constant Editor can be found in the module "Web > Template".
.. figure:: Images/WebTemplate.png
:alt: Location of the Template module
Web > Template
Select the page in the page tree which contains the root template of your website. This is
mostly the root page of your website as well.
.. figure:: Images/RootPage.png
:alt: Location of the Root Page in the page tree
The Root Page in the page tree
Select "Constant Editor" in the dropdown at the top of the "Web > Template" module. This
should show the root template of your website if it is available below the sentence
"Edit constants for template".
.. figure:: Images/DropDown.png
:alt: Location of the dropdown in the Template module
The dropdown in the template module
In the dropdown list "Category" select the category "Content".
.. figure:: Images/CategoryDropdown.png
:alt: Location of the category dropdown in the Template module
The category dropdown in the template module
This will give you a list with all the constants of this extension. All constants are
described and can be edited by clicking the pencil in front of the current value or by
editing the available field.
Don't forget to save the new values afterwards by using the appropriate button at the top
of the module. The new values will be stored in the "Constants" field of the root template
of your website.
@@ -0,0 +1,31 @@
.. include:: ../Includes.txt
.. _configuration:
=============
Configuration
=============
Configuring content elements can be done for the frontend and for the backend.
The easiest way to change the appearance of content elements in the frontend is by using
the "Constant Editor". These settings are global, which means they are not configurable in
a single content element. Constants are predefined.
TYPO3 CMS is using TypoScript as a configuration language and is used by the frontend
rendering. By overriding TypoScript you can influence the rendering of most of the
frontend.
For the backend, fields can be shown or hidden, depending on the fields you are using or
the fields an editor is allowed to use. Configuration like this is done using
"Page TSconfig" or "User TSconfig".
.. toctree::
:maxdepth: 5
:titlesonly:
:glob:
ConstantEditor/Index
TypoScript/Index
OverridingFluidTemplates/Index
@@ -0,0 +1,48 @@
.. include:: ../../Includes.txt
.. _overriding-fluid-templates:
==============================
Overriding the FLUID templates
==============================
At :ref:`typoscript` we have described the way content elements are rendered.
By default these settings are done in the file :file:`setup.typoscript` which can be found in the
folder :file:`EXT:fluid_styled_content/Configuration/TypoScript/`.
.. _overriding-fluid-templates-using-lib-fluidcontent:
Using lib.contentElement
========================
This option gives you the possibility to add another `templateRootPath` and can be defined
the same as `partialRootPaths` and `layoutRootPaths`:
.. code-block:: typoscript
lib.contentElement {
templateRootPaths {
200 = EXT:your_extension_key/Resources/Private/Templates/
}
partialRootPaths {
200 = EXT:your_extension_key/Resources/Private/Partials/
}
layoutRootPaths {
200 = EXT:your_extension_key/Resources/Private/Layouts/
}
}
A content element is using a `templateName`, which is defined in :file:`setup.typoscript`. You
can override this value, but the template from the extension "fluid_styled_content" will
not be loaded then, since its name is still the default value.
.. code-block:: typoscript
tt_content {
bullets {
templateName = ChangedName
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

@@ -0,0 +1,95 @@
.. include:: ../../Includes.txt
.. _typoscript:
==========
TypoScript
==========
At the section :ref:`using-the-rendering-definitions` you've already added the static
templates. Static templates are a collection of TypoScript files. These files are located
in the directory :file:`EXT:fluid_styled_content/Configuration/TypoScript/`.
.. figure:: Images/FileStructure.png
:alt: Structure of the TypoScript files
Structure of the TypoScript files
In this folder there are two files:
- :file:`constants.typoscript` - The file with the default constants. The "Constant Editor", as
described above, is using this file for its default settings.
- :file:`setup.typoscript` - This file will first include some other files which are located in
the "Setup" folder in the same directory. More about these files later.
In the folder :file:`ContentElement` there are files which are included by the file
:file:`setup.typoscript` as mentioned above. These files contain the rendering definitions of all
content elements, that are provided by the TYPO3 core. These are:
- :file:`Bullets.typoscript` - Configuration for Content Element "Bullet List"
- :file:`Div.typoscript` - Configuration for Content Element "Divider"
- :file:`Header.typoscript` - Configuration for Content Element "Header Only"
- :file:`Html.typoscript` - Configuration for Content Element "Plain HTML"
- :file:`Image.typoscript` - Configuration for Content Element "Image"
- :file:`List.typoscript` - Configuration for Content Element "General Plugin"
- :file:`MenuAbstract.typoscript` - Configuration for Content Element "Menu of subpages of selected pages including abstracts"
- :file:`MenuCategorizedContent.typoscript` - Configuration for Content Element "Content elements for selected categories"
- :file:`MenuCategorizedPages.typoscript` - Configuration for Content Element "Pages for selected categories"
- :file:`MenuPages.typoscript` - Configuration for Content Element "Menu of selected pages"
- :file:`MenuRecentlyUpdated.typoscript` - Configuration for Content Element "Recently updated pages"
- :file:`MenuRelatedPages.typoscript` - Configuration for Content Element "Related pages (based on keywords)"
- :file:`MenuSection.typoscript` - Configuration for Content Element "Section index (page content marked for section menus)"
- :file:`MenuSectionPages.typoscript` - Configuration for Content Element "Menu of subpages of selected pages including sections"
- :file:`MenuSitemap.typoscript` - Configuration for Content Element "Sitemap"
- :file:`MenuSitemapPages.typoscript` - Configuration for Content Element "Sitemaps of selected pages"
- :file:`MenuSubpages.typoscript` - Configuration for Content Element "Menu of subpages of selected pages"
- :file:`Shortcut.typoscript` - Configuration for Content Element "Insert records"
- :file:`Table.typoscript` - Configuration for Content Element "Table"
- :file:`Text.typoscript` - Configuration for Content Element "Regular Text Element"
- :file:`Textmedia.typoscript` - Configuration for Content Element "Text and Media"
- :file:`Textpic.typoscript` - Configuration for Content Element "Text and Images"
- :file:`Uploads.typoscript` - Configuration for Content Element "File Links"
Since we move away from TypoScript as much as possible, these rendering
definitions only declare the following:
- Can FLUIDTEMPLATE be used immediately or do we need data processing first?
A processor is sometimes used to do some data manipulation before all the data is sent
to the Fluid template.
- Assigning the Fluid template file for each type of content element separately.
- The configuration of the edit panel and the edit buttons for frontend editing. You
need to activate the extension "Frontend Editing (feedit)" in the Extension Manager to
see this in action.
In the folder :file:`Helper` there are files which are included by the file
:file:`setup.typoscript` as mentioned above. These are:
- :file:`ContentElement.typoscript` - Default configuration for content elements using
FLUIDTEMPLATE
- :file:`ParseFunc.typoscript` - Creates persistent ParseFunc setup for non-HTML content
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@@ -0,0 +1,45 @@
.. include:: ../../Includes.txt
.. _content-element-bullets:
===========
Bullet list
===========
.. figure:: Images/BackendFieldBodytext.png
:alt: Backend display of the field for the Bullet list in the General tab
The field "Bullet list" in the "General" tab
With this content element you can provide unordered and ordered bullet lists, but also a
definition list, in the frontend.
The content is added in the field "Bullet list", where each new line is a new bullet.
.. code-block:: none
Bullet 1
Bullet 2
Bullet 3
For definition lists you use one line for a single definition which starts with the term,
followed by the description, separated by a vertical bar "|".
.. code-block:: none
Term 1|Description 1
Term 2|Description 2
Term 3|Description 3
.. figure:: Images/BackendTabAppearance.png
:alt: Backend display of the Appearance tab
The "Appearance" tab
The type of list can be defined with the field "Type of bullets", available in the
"Appearance" tab.
.. figure:: Images/Frontend.png
:alt: Frontend rendering of the content element Bullet list
Frontend output, showing all three types of bullet lists.
@@ -0,0 +1,10 @@
.. include:: ../../Includes.txt
.. _content-element-div:
=======
Divider
=======
Nothing more than a horizontal rule.
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,23 @@
.. include:: ../../Includes.txt
.. _content-element-header:
======
Header
======
.. figure:: Images/BackendFields.png
:alt: Backend display of the fields to configure the content element Header
The backend fields
The content element "Header" will render a header, which can be linked. There is the
possibility to add a subheader and a date. The fields used for this content elements are
the same as :ref:`content-elements-general-header`, but with a field for the subheader.
.. figure:: Images/Frontend.png
:alt: Frontend rendering of the content element header, with a subheader and date
grouped together
Frontend rendering of the content element header, with a subheader and date
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@@ -0,0 +1,15 @@
.. include:: ../../Includes.txt
.. _content-element-html:
====
HTML
====
.. figure:: Images/BackendFieldsHtml.png
:alt: Backend display of the fields for the HTML content element in the General tab
The fields for "HTML" in the "General" tab.
Insert HTML directly using this content element.
Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

@@ -0,0 +1,142 @@
.. include:: ../Includes.txt
.. _content-elements:
====================
The content elements
====================
This chapter will describe the basic set of content elements provided by the TYPO3 CMS
core. It will show you a description, screenshots of the backend fields and a screenshot
of the frontend rendering, only styled with the basic styling provided by the static
template "Content Elements CSS (optional) (fluid_styled_content)" described in chapter
:ref:`using-the-rendering-definitions`.
The screenshots of the fields are made with the extension configuration option
"Show only a minimum set of editing fields" SET TO OFF as described in chapter
:ref:`extension-manager-configuration`.
.. _content-elements-general:
General fields
==============
These are fields which are used by (almost) every content element.
.. _content-elements-general-header:
Header
------
.. figure:: Images/PaletteHeader.png
:alt: The header fields in the backend
The header fields
Almost every content element can contain a header, which consists of the following parts:
Header
The text of the header
Type
The type of heading (heading 1, heading 2, heading 3 ... or if the header is hidden).
When not choosing an option, the default heading will be used, which can be configured
at :ref:`constant-editor`.
Date
Have the possibility to group the header with a date
Link
Link wrapping the header text. This can be a TYPO3 CMS page, an external page, an email
address or a link to a file.
The header fields can be found in the "General" tab of a content element.
.. figure:: Images/LinkedHeaderAndDate.png
:alt: Frontend rendering of a linked header with a date
Frontend rendering of a linked header with a date
.. _content-elements-general-show-in-section-menus:
Show in section menu's
----------------------
Using this option will only be visible when using menu's based on sections. This will be
described in the chapter :ref:`content-element-menu`.
This field can be found in the *Appearance* tab.
.. figure:: Images/ShowInSectionMenus.png
:alt: Backend display of the field to show the content element in section menu's
The field "Show In Section Menu's"
.. _content-elements-general-link-to-top:
Append with Link to Top of Page
-------------------------------
.. figure:: Images/AppendWithLinkToTopOfPage.png
:alt: Backend display of the field to show a link to the top of the page
The field "Append with link to top of page"
When checked, this will render a link below the content element to bring the visitor the
top of the page. This will be very convenient for your visitors when having long pages.
.. figure:: Images/FrontendToTop.png
:alt: Frontend rendering of the To Top link
Frontend rendering of the To Top link
.. _content-elements-general-access:
Access
------
.. figure:: Images/Access.png
:alt: Backend display of the Access tab
The Access tab with all its fields
These fields define if and when a visitor has access to this content element. The access
fields all reside in the *Access* tab:
Visibility of content element
By checking this option the content element will not be visible to any visitor.
Publish Date
The date on which the content has to be published, which means making visible at a
certain date.
Expiration Date
The date on which the content will be expired, which means the content will be hidden
on a certain date
Usergroup Access Rights
Here you can select whether the content element only is available to a certain
frontend user group, if it has to be visible only when the visitor is logged in or if
it has to be hidden at a login.
.. toctree::
:maxdepth: 5
:titlesonly:
:glob:
Header/Index
TextMedia/Index
Bullets/Index
Table/Index
Uploads/Index
Menu/Index
Shortcut/Index
List/Index
Div/Index
Html/Index
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

@@ -0,0 +1,19 @@
.. include:: ../../Includes.txt
.. _content-element-list:
=============
Insert plugin
=============
.. figure:: Images/BackendTabPlugin.png
:alt: Backend display of the fields for the Insert Plugin content element in the
Plugin tab
The fields for "Insert Plugin" in the "Plugin" tab. This can be different for selected
plugins.
Extensions sometimes provide plugins to render frontend output, but basically they are the
same as content elements. When an extension depends on a plugin, select the plugin in this
content element. The fields might change depending on the plugin.
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@@ -0,0 +1,75 @@
.. include:: ../../Includes.txt
.. _content-element-menu:
=====
Menus
=====
In websites menus are often created outside the content element scope, because they have
to reappear within every page. These could be the main menu, a sub menu, a bread crumb or
a language menu. However, there are situations where you would like to create a menu
specifically on one page. The following content elements will give you some options to render
a menu. These available content elements are:
Menu of selected pages
The menu consists of links to the selected pages in the TYPO3 CMS backend.
Menu of subpages of selected pages
The menu consists of links to the subpages of the selected pages in the TYPO3 CMS
backend.
Menu of subpages of selected pages including abstracts
The same as above, but showing the abstract of these pages as well, when not empty.
Menu of subpages of selected pages including sections
This will render a menu of the subpages of the selected pages. Below each subpage an
extra menu will be showing the titles of content elements which belong to that certain
subpage, which have the option "Show in Section Menus" in the Appearance tab enabled.
This makes it possible for the website visitor to jump to the selected content element,
within that page, immediately.
Sitemap
Render a full sitemap of the website, starting at the root page.
Sitemaps of selected pages
Render one or more sitemaps at once. The starting point of each site map will be a
single selected page.
Section index (page content marked for section menus)
Menu of content elements within the selected page, which have the option "Show in
Section Menus" in the Appearance tab enabled. This makes it possible for the website
visitor to jump to the selected content element, within that page, immediately.
Recently updated pages
Shows a list of pages which are updated in the last 7 days. Updated does only mean a
change in the page properties, not the content on the page.
Related pages (based on keywords)
Shows a list of the selected page and all other pages, which have one or more keywords,
entered in the page properties, in common.
Pages for selected categories
Displays a menu of all pages which have been assigned one or more of the selected
categories.
Content elements for selected categories
Displays a menu of all content elements which have been assigned one or more of the
selected categories.
The availability of links in each type of menu will depend on access rights. If a website
visitor has no access to a certain part (with a frontend login), the link will not be
shown.
.. figure:: Images/BackendFieldsMenuAndSitemap.png
:alt: Backend display of the fields for the Menu in the General tab
The fields for "Menu and Sitemap" in the "General" tab
In case no pages are selected (in most options), the menu will be rendered from the
current page where the menu is put on.
.. figure:: Images/Frontend.png
:alt: Frontend example of a menu with type 'Menu of subpages of selected pages including sections'
Example of the frontend output of a menu
Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

@@ -0,0 +1,30 @@
.. include:: ../../Includes.txt
.. _content-element-shortcut:
==============
Insert Records
==============
Ever have content on one page that you want on another one? But you don't want to have to
maintain both, keeping them in sync? And you don't want to show the whole content from one
page on another. Using insert records you can add one content element from a page or all
the content elements from a page. You can also add content element from several pages.
.. figure:: Images/BackendFieldsRecords.png
:alt: Backend display of the fields for the Insert Records content element in the General tab
The fields for "Insert Records" in the "General" tab
Just select the content elements you want to display and if necessary, put them in the
right order.
In the frontend the referenced content elements will show up the same as the original one
(if the styling is not different for that page)
.. note::
This is the only content element still using a bit of TypoScript in the rendering
process. This is done because you can add different rendering for records from
different tables. Take a look at :ts:`tt_content.shortcut.20`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

@@ -0,0 +1,58 @@
.. include:: ../../Includes.txt
.. _content-element-table:
=====
Table
=====
The "Table" content element allows to provide data as "comma separated values (CSV)", a
plain text form of storing tabular data (numbers and text). This form is often used to
move tabular data between two programs that natively operate on incompatible (often
proprietary and/or undocumented) formats, like Microsoft Office Excel. These programs
often provide CSV as an export method.
.. figure:: Images/BackendFieldsTable.png
:alt: Backend display of the fields for the Table in the General tab
The "General" table settings
Each line in the field *Table content* represents a row in the table. Columns are
separated by a *field delimiter*, which can be configured with the corresponding field.
Columns can be enclosed by a character, configured in the field
*Text enclosure*. This is especially helpful when you want to have newlines within a
column. By default the *Field delimiter* is a vertical bar "|", the *Text enclosure* set
to **none**.
.. code-block:: none
row 1 column 1|row 1 column 2|row 1 column 3
row 2 column 1|row 2 column 2|row 2 column 3
row 3 column 1|row 3 column 2|row 3 column 3
A *Table caption* can be provided as a heading for the table.
.. figure:: Images/BackendTabAppearance.png
:alt: Backend display of the Appearance tab
The "Appearance" tab
Also some appearance options are available for the table. These can be found in the
*Appearance* tab:
Columns
The maximum amount of columns. Even when more columns are defined in the
*Table content* field, the table will only show the maximum amount of columns.
Table header position
The first row or the first column can be used as a table header.
Use table footer
The last row will be used to group the table’s footer area (which may be a summary, an
addition of column values, or some call to action based on the preceding content).
.. figure:: Images/Frontend.png
:alt: Frontend rendering of two tables, one with a header position on top, the other one on the left
Frontend output, showing the different options of "Table header position"
Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

@@ -0,0 +1,43 @@
.. include:: ../../Includes.txt
.. _content-element-textmedia:
============
Text & Media
============
This content element allows to combine text and media elements, like images and/or movies.
The text can be entered in the Rich Text Editor (RTE) on the "General" tab.
.. figure:: Images/BackendFieldsRte.png
:alt: Backend display of the fields for the Rich Text Editor in the General tab
The Rich Text Editor (RTE) in the "General" tab
The media elements can be added in the "Media" tab. In this tab there is also the option
to turn the "enlarge on click" behaviour on for images.
.. figure:: Images/BackendTabMedia.png
:alt: Backend display of the Media tab
The "Media" tab
Multiple images and movies are combined as a gallery, which can be configured using the
"Appearance" tab. Options there are specific width or height for each element, if a border
should be shown around each element, the position of the gallery in relation to the text
and the amount of columns which should be used for the gallery.
.. figure:: Images/BackendTabAppearance.png
:alt: Backend display of the Appearance tab
The "Appearance" tab
The maximum width of the gallery can be different when the gallery is on top or bottom of
the text, or inside the text. This can be set using the :ref:`constant-editor`:
.. figure:: Images/Frontend.png
:alt: Frontend rendering of the content element Text & Media
Frontend output, using one image aligned left of the text. The text is wrapping the
image.
Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

@@ -0,0 +1,50 @@
.. include:: ../../Includes.txt
.. _content-element-uploads:
==========
File links
==========
This content element gives you the opportunity to offer downloadable files to the visitors
of your website.
.. figure:: Images/BackendFieldsFiles.png
:alt: Backend display of the fields for the File links in the General tab
The "General" file links fields
You can add or select single files but also use a file collection. A file collection can
be one of the following:
- A static selection of files
- A folder within a storage, holding the files
- A file selection by category
When combining both methods, single files and file collections, all files from these
methods will be presented to the website visitor.
.. figure:: Images/BackendTabAppearance.png
:alt: Backend display of the Appearance tab for the File links
The "Appearance" settings for file links
In the "Appearance" tab you will find several options how the files will be presented:
Display file/icon/thumbnail
In this dropdown you can select if you only want to show the file name, the file name
and a corresponding icon, based on the file extension, or the file name with a
thumbnail, if it is possible for TYPO3 CMS to generate a thumbnail from the file.
Display file size information
Will show the file size calculated from the amount of bytes and presented as a human
readable string with the proper unit (B, KB, MB ...).
Display description
Will display the description of each file, if available.
.. figure:: Images/Frontend.png
:alt: Frontend rendering of a file, with thumbnail, description and file size set
Frontend output of a file, with thumbnail, description and file size set
@@ -0,0 +1,13 @@
.. This is 'Includes.txt'. It is included at the very top of each and
.. every ReST source file in this documentation project (= manual).
.. role:: typoscript(code)
.. role:: ts(typoscript)
:class: typoscript
.. role:: php(code)
.. highlight:: php
.. default-role:: code
@@ -0,0 +1,58 @@
.. include:: Includes.txt
.. _start:
===============================
Content Elements based on Fluid
===============================
:Extension key:
fluid_styled_content
:Version:
|release|
:Language:
en
:Description:
Frontend rendering for TYPO3 CMS.
:Keywords:
frontend, content, fluid
:Copyright:
2015-2021
:Author:
TYPO3 CMS Core Development Team
:License:
Open Content License available from http://www.opencontent.org/opl.shtml
:Rendered:
|today|
The content of this document is related to TYPO3,
a GNU/GPL CMS/Framework available from http://typo3.org
.. only:: html
.. tip::
:ref:`Sitemap`
**Table of Contents**
.. toctree::
:maxdepth: 5
:titlesonly:
:glob:
Introduction/Index
Installation/Index
Configuration/Index
ContentElements/Index
AddingYourOwnContentElements/Index
Targets
Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

@@ -0,0 +1,45 @@
.. include:: ../../Includes.txt
.. _extension-manager:
=================
Extension Manager
=================
The extension is a system extension and is installed by default.
.. figure:: Images/ExtensionManager.png
:alt: fluid_styled_content in the Extension Manager
"fluid_styled_content" is installed by default in the Extension Manager
.. _extension-manager-configuration:
Configuration
=============
In the extension manager you have the possibility to configure the extension. Click on the
name of the extension or click the "cogwheel" icon under "Actions" behind the extension
name.
.. figure:: Images/ConfigurationButton.png
:alt: Location of the configuration button in the Extension Manager
The location of the "cogwheel" icon under "Actions"
At the configuration screen you will find the next configuration options:
- **Load Page TSconfig with "New Content Element Wizard" definitions. The definitions can also**
**be loaded manually by including it in a page.** - When this option is selected, the PageTSconfig
of the extension is automatically included and does not need to be included manually. Use this
if you have a TYPO3 installation that uses `fluid_styled_content` everywhere without exception.
.. figure:: Images/Configuration.png
:alt: The configuration options in the Extension Manager
The configuration options in the Extension manager
When you are done configuring the extension, you can store your preferences by clicking
the "Save" (you will stay at the configuration screen) or "Save and Close" button (you
will be redirected to the extension list).
@@ -0,0 +1,19 @@
.. include:: ../Includes.txt
.. _installation:
============
Installation
============
This chapter describes the installation process.
.. toctree::
:maxdepth: 5
:titlesonly:
:glob:
ExtensionManager/Index
Upgrading/Index
UsingTheRenderingDefinitions/Index
InsertingContentPageTemplate/Index
@@ -0,0 +1,103 @@
.. include:: ../../Includes.txt
.. _inserting-content-page-template:
=======================================
Inserting content in your page template
=======================================
To get the different columns from the backend displayed in the frontend you can use
predefined CONTENT objects. Depending on the page templating you are using you would do
something in your TypoScript template like the following examples.
.. _inserting-content-page-template-template:
Based on the TEMPLATE content object (cObj)
===========================================
.. code-block:: typoscript
page = PAGE
page {
10 = TEMPLATE
10 {
file = your/html/template.html
subparts {
MAIN_CONTENT = CONTENT
MAIN_CONTENT {
table = tt_content
select {
orderBy = sorting
where = {#colPos}=0
languageField = sys_language_uid
}
}
}
}
}
.. _inserting-content-page-template-fluidtemplate:
Based on the FLUIDTEMPLATE content object (cObj)
================================================
.. code-block:: typoscript
lib.dynamicContent = COA
lib.dynamicContent {
10 = LOAD_REGISTER
10.colPos.cObject = TEXT
10.colPos.cObject {
field = colPos
ifEmpty.cObject = TEXT
ifEmpty.cObject {
value.current = 1
ifEmpty = 0
}
}
20 = CONTENT
20 {
table = tt_content
select {
orderBy = sorting
where = colPos={register:colPos}
where.insertData = 1
}
}
90 = RESTORE_REGISTER
}
page = PAGE
page {
10 = FLUIDTEMPLATE
10 {
templateName = Default
templateRootPaths {
0 = EXT:example_package/Resources/Private/Templates/Page/
}
partialRootPaths {
0 = EXT:example_package/Resources/Private/Partials/Page/
}
layoutRootPaths {
0 = EXT:example_package/Resources/Private/Layouts/Page/
}
}
}
.. code-block:: html
<f:layout name="Default" />
<f:section name="Main">
<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '0'}" />
</f:section>
.. seealso::
See the note about the removal of the predefined CONTENT objects like
:typoscript:`styles.content.get` at :ref:`upgrading`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

@@ -0,0 +1,58 @@
.. include:: ../../Includes.txt
.. _upgrading:
=========
Upgrading
=========
If you upgrade your TYPO3 CMS installation from one major version to another (for example
7.6 to 8.7), it is advised to run the Upgrade Wizards. They guide you through the
necessary steps to upgrade your database records or explicitly install extensions that
ship with the latest TYPO3 CMS version.
Some database fields of the table tt_content are no longer used, the fields of FlexForms
have been moved to proper database fields. To make sure you do not lose any information
or the content elements look differently on your upgraded website run these Upgrade Wizards.
The upgrade wizards can be found in the Install tool.
.. figure:: Images/UpgradeWizard.png
:alt: Location of the Upgrade Wizard in the Install Tool
Upgrade Wizard
.. attention::
The predefined CONTENT objects :ts:`styles.content.getLeft`,
:ts:`styles.content.getRight` and :ts:`styles.content.getBorder` are not
provided anymore. :ts:`styles.content.get` still exists for your convenience. Most of
the current websites are using "backend layouts", where the predefined numbering of the
columns does not make sense.
.. tip::
If you are still using the predefined CONTENT objects, you can use the following
TypoScript:
.. code-block:: typoscript
styles.content {
# get content, left
getLeft < styles.content.get
getLeft.select.where = {#colPos}=1
# get content, right
getRight < styles.content.get
getRight.select.where = {#colPos}=2
# get content, border
getBorder < styles.content.get
getBorder.select.where = {#colPos}=3
# get news
getNews < styles.content.get
getNews.select.pidInList = {$styles.content.getNews.newsPid}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,65 @@
.. include:: ../../Includes.txt
.. _using-the-rendering-definitions:
===============================
Using the rendering definitions
===============================
To use the default rendering definitions "fluid_styled_content" provides, you have to add
the static template to your TypoScript template. Go to the module "Web > Template":
.. figure:: Images/WebTemplate.png
:alt: Location of the Template module
Web > Template
In the page tree select the page which contains the root template of your website. This is
mostly the root page of your website as well:
.. figure:: Images/RootPage.png
:alt: Location of the Root Page in the page tree
The Root Page in the page tree
Select "Info/Modify" in the dropdown at the top of the "Web > Template" module. This
should show you the root template of your website if it is available:
.. figure:: Images/DropDown.png
:alt: Location of the dropdown in the Template module
The dropdown in the template module
Select ``Edit the whole template record`` at the bottom. This will open all the settings
of the root template:
.. figure:: Images/EditWholeTemplate.png
:alt: Location of the link to edit the whole template in the Template module
Edit the whole template record
Click on the tab "Includes" and select "Content Elements (fluid_styled_content)" in the part
"Available items" under "Include static (from extensions)". The selection will move to the
"Selected items":
.. figure:: Images/IncludesOne.png
:alt: The Include tab and the available items in Include Static
Including a static template from an extension
TYPO3 CMS is now using the rendering definitions of "fluid_styled_content" for the basic set of
content elements. This is basically unstyled HTML5 markup.
Unless you know what you are doing also include "Content Elements CSS (optional)
(fluid_styled_content)". Some CSS styling will be added to the output of your page to make sure all
the parts of a content elements have basic styling, like alignment and position. The
styling will not add any colors, do font changes or similar which should be related to
your website styles. This static include is optional, because some integrators want to
override even the basic styling.
.. figure:: Images/IncludesBoth.png
:alt: Inclusion of both static templates from the extension frontend
Including the static template for CSS styling
Save the template by using the appropriate button at the top of the module.
@@ -0,0 +1,73 @@
.. include:: ../Includes.txt
.. _introduction:
============
Introduction
============
.. _what-does-it-do:
What does it do?
================
The extension "fluid_styled_content" handles the rendering of the default set of content elements
shipped with the core by using the template engine "fluid".
"fluid_styled_content" provides a basic set of content elements which you can use for your
website. These can be used out-of-the-box, but can be adapted to your or your client
needs. You are not bound to using only these content elements. For custom made
functionality it is possible to add extra content elements to the basic set. How to adapt,
enhance or add content elements will be described in this document.
The rendering of the provided set of content elements is based on HTML5. Nowadays most of
the websites are built with this core technology markup language used for
structuring and presenting content in the World Wide Web. If your website is using
another markup, like HTML4 or XHTML, it is easy to exchange the provided templates with
your own.
.. _history:
A little bit of history
=======================
At the beginning of TYPO3 CMS content elements were rendered by the static template called
*content (default)*. This was mainly based on font-tags for styling and tables for
positioning which was needed to achieve the visual constructions in old versions of web
browsers.
Some time later the extension "css_styled_content" was introduced, which focused on
reducing the amount of TypoScript and providing XHTML/HTML5 markup which could be styled
by Cascading Style Sheets (CSS), a style sheet language used for describing the look and
formatting of a document written in a markup language. Still this extension was heavily
based on TypoScript and did allow custom modifications up to some point.
Since the introduction of the templating engine Fluid, more websites are using this for
page templating. Newer TYPO3 CMS packages (extensions) are also using Fluid as their base
templating engine. The content elements which were provided with TYPO3 CMS by default were
still using TypoScript and partly PHP code.
Since TYPO3 CMS version 7.5 the default content elements have been moved to this
extension **fluid_styled_content**, also using Fluid as their templating engine. The benefits are that
hardly any knowledge of TypoScript is needed to make changes. Integrators can easily
exchange the base content element Fluid templates with their own. In Fluid more complex
functionality that exceed the simple output of values has to be implemented with
ViewHelpers. Every ViewHelper has its own PHP class. Several basic ViewHelpers are
provided by Fluid. When using your own Fluid templates, developers can add extra
functionality with their own ViewHelpers, extending the possibilities of the content
elements.
.. _support:
Support
=======
Please see/report problems on TYPO3 Forge
`https://forge.typo3.org/projects/typo3cms-core/issues
<https://forge.typo3.org/projects/typo3cms-core/issues>`_
under category content rendering.
You may get support in the use of this extension by subscribing to
`https://forum.typo3.org/index.php/f/41/ <https://forum.typo3.org/index.php/f/41/>`_ .
@@ -0,0 +1,41 @@
[general]
; endless list of all of the general simple settings
; you can use in 'conf.py'
project = Content Elements based on Fluid (fluid_styled_content)
version = latest (9-dev)
release = latest (9-dev)
t3author = TYPO3 Core Team + Contributors, TYPO3 Documentation Team
copyright = 2015-2021
description = This documentation is about TYPO3's system extension
"fluid_styled_content" which provides content elements and uses Fluid to render
frontend output.
[html_theme_options]
; for theme t3SphinxThemeRtd
# Add 'Edit me on Github' button
github_branch = master
github_repository = typo3/typo3
path_to_documentation_dir = typo3/sysext/fluid_styled_content/Documentation
# show as related links
project_contact =
project_discussions = http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-content-rendering
project_home = https://forge.typo3.org/projects/typo3cms-core
project_issues = https://forge.typo3.org/projects/typo3cms-core/issues
project_repository = https://github.com/typo3/typo3
use_opensearch =
[intersphinx_mapping]
# These are common mappings. Uncomment only what you really use!
#
# see https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/GeneralConventions/DirectoryFilenames.html#intersphinx-mapping
t3coreapi = https://docs.typo3.org/m/typo3/reference-coreapi/9.5/en-us/
@@ -0,0 +1,14 @@
:orphan:
.. include:: Includes.txt
.. only:: html
.. _Sitemap:
Sitemap
=======
.. toctree::
Index
@@ -0,0 +1,10 @@
.. include:: Includes.txt
.. _labels-for-crossreferencing:
============================
Labels for cross-referencing
============================
.. ref-targets-list::
@@ -0,0 +1,345 @@
Some icons used in the TYPO3 project are retrieved from the "Silk" icon set of
Mark James, which can be found at http://famfamfam.com/lab/icons/silk/. This
set is distributed under a Creative Commons Attribution 2.5 License. The
license can be found at http://creativecommons.org/licenses/by/2.5/.
---------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
<file t3:id="1428662501" source-language="en" datatype="plaintext" original="EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf" date="2014-02-07T20:22:32Z" product-name="fluid_styled_content">
<header/>
<body>
<trans-unit id="editIcon.bullets" resname="editIcon.bullets">
<source>Edit bullet list</source>
</trans-unit>
<trans-unit id="editIcon.header" resname="editIcon.header">
<source>Edit header</source>
</trans-unit>
<trans-unit id="editIcon.html" resname="editIcon.html">
<source>Edit pure HTML content</source>
</trans-unit>
<trans-unit id="editIcon.list" resname="editIcon.list">
<source>Change/configure plugin</source>
</trans-unit>
<trans-unit id="editIcon.menu" resname="editIcon.menu">
<source>Edit menu/sitemap</source>
</trans-unit>
<trans-unit id="editIcon.shortcut" resname="editIcon.shortcut">
<source>Edit record list</source>
</trans-unit>
<trans-unit id="editIcon.table" resname="editIcon.table">
<source>Edit table</source>
</trans-unit>
<trans-unit id="editIcon.image" resname="editIcon.image">
<source>Edit image</source>
</trans-unit>
<trans-unit id="editIcon.textmedia" resname="editIcon.textmedia">
<source>Edit text &amp; media</source>
</trans-unit>
<trans-unit id="editIcon.textpic" resname="editIcon.textpic">
<source>Edit text &amp; images</source>
</trans-unit>
<trans-unit id="editIcon.uploads" resname="editIcon.uploads">
<source>Edit file list</source>
</trans-unit>
</body>
</file>
</xliff>
Loaded 100 of 12716 files, more files were not shown because too many files have changed in this diff. Show more