if {
isTrue {
field = subheader
}
value = html5
equals.data = TSFE:config|config|doctype
# Hide subheader for old style form element (it is used for recipient mail)
isFalse = 0
isFalse.override = 1
isFalse.override {
if.equals.field = CType
if.value = mailform
}
}
}
# HTML5 Date
40 = COA
40 {
stdWrap {
wrap =
|
innerWrap {
cObject = COA
cObject {
10 = TEXT
10 {
value =
}
}
}
required = 1
}
10 = TEXT
10 {
field = date
strftime = %B %e, %Y
}
if {
isTrue {
field = date
}
value = html5
equals.data = TSFE:config|config|doctype
}
}
# Pops the used registers off the stack:
98 = RESTORE_REGISTER
# Post-processing:
stdWrap.fieldRequired = header
stdWrap.if {
equals.field = header_layout
value = 100
negate = 1
}
stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
stdWrap.editIcons.beforeLastTag = 1
stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.header
stdWrap {
dataWrap =
|
dataWrap {
override = |
override {
if {
isTrue {
field = date
}
value = html5
equals.data = TSFE:config|config|doctype
}
}
}
}
stdWrap.prefixComment = 2 | Header:
}
#**********************************
# tt_content is started
#**********************************
tt_content >
tt_content = CASE
tt_content.key.field = CType
tt_content.stdWrap {
innerWrap.cObject = CASE
innerWrap.cObject {
key.field = section_frame
default = COA
default {
10 = TEXT
10 {
cObject = CASE
cObject {
key.field = CType
default = TEXT
default {
value =
renderSpace
space = before
constant = {$content.spaceBefore}
classStdWrap {
required = 1
noTrimWrap = |csc-space-before-| |
}
}
# Create class for space after content
30 = USER
30 {
userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
space = after
constant = {$content.spaceAfter}
classStdWrap {
required = 1
noTrimWrap = |csc-space-after-| |
}
}
stdWrap {
trim = 1
noTrimWrap = | class="|"|
required = 1
}
}
30 = TEXT
30 {
cObject = CASE
cObject {
key.field = CType
default = TEXT
default {
value = >|
}
menu < .default
menu {
override = >|
override {
if {
value = html5
equals.data = TSFE:config|config|doctype
}
}
}
}
}
}
1 =< tt_content.stdWrap.innerWrap.cObject.default
1.20.10.value = csc-frame csc-frame-invisible
5 =< tt_content.stdWrap.innerWrap.cObject.default
5.20.10.value = csc-frame csc-frame-rulerBefore
6 =< tt_content.stdWrap.innerWrap.cObject.default
6.20.10.value = csc-frame csc-frame-rulerAfter
10 =< tt_content.stdWrap.innerWrap.cObject.default
10.20.10.value = csc-frame csc-frame-indent
11 =< tt_content.stdWrap.innerWrap.cObject.default
11.20.10.value = csc-frame csc-frame-indent3366
12 =< tt_content.stdWrap.innerWrap.cObject.default
12.20.10.value = csc-frame csc-frame-indent6633
20 =< tt_content.stdWrap.innerWrap.cObject.default
20.20.10.value = csc-frame csc-frame-frame1
21 =< tt_content.stdWrap.innerWrap.cObject.default
21.20.10.value = csc-frame csc-frame-frame2
66 = COA
66 {
10 = TEXT
10 {
value =
insertData = 1
}
# Create div with class for space before content
20 = COA
20 {
10 = USER
10 {
userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
space = before
constant = {$content.spaceBefore}
classStdWrap {
required = 1
wrap = csc-space-before-|
}
}
stdWrap {
wrap =
required = 1
}
}
30 = TEXT
30 {
value = |
}
# Create div with class for space after content
40 < .20
40 {
10 {
space = after
constant = {$content.spaceAfter}
classStdWrap {
required = 1
wrap = csc-space-after-|
}
}
}
}
}
innerWrap2 = |
htmlSpecialChars = 1
if {
value = html5
equals.data = TSFE:config|config|doctype
negate = 1
}
editIcons = tt_content:subheader,layout
editIcons.beforeLastTag = 1
editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.subheader
prefixComment = 2 | Subheader:
}
}
# *****************
# CType: text
# *****************
tt_content.text = COA
tt_content.text {
10 = < lib.stdheader
20 = TEXT
20 {
field = bodytext
required = 1
parseFunc = < lib.parseFunc_RTE
editIcons = tt_content:bodytext
editIcons.beforeLastTag = 1
editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.bodytext
prefixComment = 2 | Text:
}
}
# *****************
# CType: image
# *****************
# (also used for rendering 'textpic' type):
tt_content.image = COA
tt_content.image.10 = < lib.stdheader
tt_content.image.20 = USER
tt_content.image.20 {
userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_textpic
preRenderRegisters {
// To optimize performance we load all image captions into a register
// because we need to know if at least one image has a caption at
// multiple places to determine the render method.
allImageCaptions.cObject = FILES
allImageCaptions.cObject {
references {
table = tt_content
fieldName = image
}
renderObj = TEXT
renderObj.data = file:current:description
}
}
# Image source
imgList.cObject = FILES
imgList.cObject {
references < tt_content.image.20.preRenderRegisters.allImageCaptions.cObject.references
renderObj = TEXT
renderObj.data = file:current:uid
renderObj.wrap = |,
}
imgPath = uploads/pics/
// This needs to be set because the UID list generated in the imgList
// setting contains UIDs of file references (not files).
imgListContainsReferenceUids = 1
# Single image rendering
imgObjNum = 1
1 {
file.import.data = file:current:uid
file.treatIdAsReference = 1
file.width.field = imagewidth
layoutKey = {$styles.content.imgtext.layoutKey}
layout {
default {
element =
}
srcset {
element =
source = |*|###SRC### ###SRCSETCANDIDATE###,|*|###SRC### ###SRCSETCANDIDATE###
}
picture {
element = ###SOURCECOLLECTION###
source =
}
data {
element =
source = data-###DATAKEY###="###SRC###"
source.noTrimWrap = ; ;;
source.noTrimWrap.splitChar = ;
}
}
# Default sourceCollection as an example
# Please write your own sourceCollection (highly recommended)
sourceCollection {
small {
width = 200
srcsetCandidate = 600w
mediaQuery = (max-device-width: 600px)
dataKey = small
}
smallRetina {
if {
value = {$styles.content.imgtext.layoutKey}
equals = default
negate = 1
}
width = 200
pixelDensity = 2
srcsetCandidate = 600w 2x
mediaQuery = (max-device-width: 600px) AND (min-resolution: 192dpi)
dataKey = smallRetina
}
}
imageLinkWrap = 1
imageLinkWrap {
bodyTag =
wrap = |
width = {$styles.content.imgtext.linkWrap.width}
height = {$styles.content.imgtext.linkWrap.height}
effects = {$styles.content.imgtext.linkWrap.effects}
JSwindow = 1
JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
JSwindow.if.isFalse = {$styles.content.imgtext.linkWrap.lightboxEnabled}
directImageLink = {$styles.content.imgtext.linkWrap.lightboxEnabled}
enable.field = image_zoom
enable.ifEmpty.typolink.parameter.data = file:current:link
enable.ifEmpty.typolink.returnLast = url
typolink.parameter.data = file:current:link
typolink.target < lib.parseTarget
typolink.target =
typolink.target.override = {$styles.content.links.target}
typolink.extTarget < lib.parseTarget
typolink.extTarget =
typolink.extTarget.override = {$styles.content.links.extTarget}
linkParams.ATagParams.dataWrap = class="{$styles.content.imgtext.linkWrap.lightboxCssClass}" rel="{$styles.content.imgtext.linkWrap.lightboxRelAttribute}"
}
altText = TEXT
altText {
data = file:current:alternative
stripHtml = 1
}
titleText < .altText
titleText.data = file:current:title
longdescURL {
parameter {
field = longdescURL
split {
token {
char = 10
}
returnKey.data = register : IMAGE_NUM_CURRENT
}
}
}
emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
titleInLink = {$styles.content.imgtext.titleInLink}
titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
}
textPos.field = imageorient
maxW = {$styles.content.imgtext.maxW}
maxW.override.data = register:maxImageWidth
maxWInText = {$styles.content.imgtext.maxWInText}
maxWInText.override.data = register:maxImageWidthInText
equalH.field = imageheight
image_compression.field = image_compression
image_effects.field = image_effects
noRows.field = image_noRows
cols.field = imagecols
border.field = imageborder
caption {
1 = COA
1 {
1 = TEXT
1 {
data = file:current:description
required = 1
htmlSpecialChars = 1
br = 1
}
}
}
captionAlign.field = imagecaption_position
// This needs to be set to TRUE because otherwise render_textpic will
// render a global caption which we do not have.
imageTextSplit = 1
borderThick = {$styles.content.imgtext.borderThick}
borderClass = {$styles.content.imgtext.borderClass}
colSpace = {$styles.content.imgtext.colSpace}
textMargin = {$styles.content.imgtext.textMargin}
borderSpace = {$styles.content.imgtext.borderSpace}
separateRows = {$styles.content.imgtext.separateRows}
addClasses =
addClassesCol =
addClassesCol.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
addClassesCol.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
addClassesCol.override.if {
isGreaterThan.field = imagecols
value = 1
}
addClassesImage = csc-textpic-first |*| |*| csc-textpic-last
#
imageStdWrap.dataWrap =
|
imageStdWrapNoWidth.wrap =
|
# if noRows is set, wrap around each column:
imageColumnStdWrap.dataWrap =
|
layout = CASE
layout {
key.field = imageorient
# above-center
default = TEXT
default {
value =
###IMAGES######TEXT###
override =
###IMAGES######TEXT###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# above-right
1 = TEXT
1 {
value =
###IMAGES######TEXT###
override =
###IMAGES######TEXT###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# above-left
2 = TEXT
2 {
value =
###IMAGES######TEXT###
override =
###IMAGES######TEXT###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# below-center
8 = TEXT
8 {
value =
###TEXT######IMAGES###
override =
###TEXT######IMAGES###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# below-right
9 = TEXT
9 {
value =
###TEXT######IMAGES###
override =
###TEXT######IMAGES###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# below-left
10 = TEXT
10 {
value =
###TEXT######IMAGES###
override =
###TEXT######IMAGES###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# intext-right
17 = TEXT
17 {
value =
###IMAGES######TEXT###
override =
###IMAGES######TEXT###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# intext-left
18 = TEXT
18 {
value =
###IMAGES######TEXT###
override =
###IMAGES######TEXT###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# intext-right-nowrap
25 = TEXT
25 {
value =
###IMAGES######TEXT###
override =
###IMAGES######TEXT###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
# intext-left-nowrap
26 = TEXT
26 {
value =
###IMAGES######TEXT###
override =
###IMAGES######TEXT###
override {
if {
value = default
equals = {$styles.content.imgtext.layoutKey}
negate = 1
}
}
}
}
rendering {
# Single image - No caption
singleNoCaption {
# Choose another rendering for special edge cases
fallbackRendering = COA
fallbackRendering {
# Single image - Caption
10 = TEXT
10 {
if {
isTrue.data = file:current:description
value = 1
equals.data = register:imageCount
}
value = singleCaption
}
# Multiple images and split caption
20 = TEXT
20 {
if {
value = 1
isGreaterThan.data = register:imageCount
isTrue.if.isFalse.data = register:renderGlobalCaption
isTrue.data = register:allImageCaptions
}
value = splitCaption
}
# Multiple images and no caption at all
40 = TEXT
40 {
if {
value = 1
isGreaterThan.data = register:imageCount
isFalse.data = register:allImageCaptions
}
value = noCaption
}
}
allStdWrap {
dataWrap =
|
dataWrap {
override =
|
override {
if {
value = html5
equals.data = TSFE:config|config|doctype
}
}
}
innerWrap.cObject = CASE
innerWrap.cObject {
key.field = imageorient
# above-center
0 = TEXT
0.value =
caption.wrap = |
}
noCaption {
# Multiple images and no caption at all
fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
allStdWrap {
dataWrap =
|
dataWrap {
override =
|
override {
if {
value = html5
equals.data = TSFE:config|config|doctype
}
}
}
}
singleStdWrap {
wrap =
|
wrap {
override = |
}
}
rowStdWrap.wrap =
|
noRowsStdWrap.wrap =
|
lastRowStdWrap.wrap =
|
columnStdWrap.wrap =
|
}
singleCaption {
# Just one image with a caption
fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
singleStdWrap {
wrap =