[BUGFIX] Re-add parsing for list elements
[Packages/TYPO3.CMS.git] / typo3 / sysext / css_styled_content / static / setup.txt
1 # ***************************************************************************
2 # Notice: "styles." (and "temp.") objects are UNSET after template parsing!
3 # Use "lib." for persisting storage of objects.
4 # ***************************************************************************
5
6 # Clear out any constants in this reserved room!
7 styles.content >
8
9 # get content
10 styles.content.get = CONTENT
11 styles.content.get {
12 table = tt_content
13 select.orderBy = sorting
14 select.where = colPos=0
15 select.languageField = sys_language_uid
16 }
17
18 # get content, left
19 styles.content.getLeft < styles.content.get
20 styles.content.getLeft.select.where = colPos=1
21
22 # get content, right
23 styles.content.getRight < styles.content.get
24 styles.content.getRight.select.where = colPos=2
25
26 # get content, margin
27 styles.content.getBorder < styles.content.get
28 styles.content.getBorder.select.where = colPos=3
29
30 # get news
31 styles.content.getNews < styles.content.get
32 styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
33
34 # Edit page object:
35 styles.content.editPanelPage = COA
36 styles.content.editPanelPage {
37 10 = EDITPANEL
38 10 {
39 allow = toolbar,move,hide
40 label.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.page
41 label.wrap = |&nbsp;<b>%s</b>
42 }
43 }
44
45
46
47
48
49 # default link target for external URLs
50 config.extTarget = {$styles.content.links.extTarget}
51
52
53
54
55 # *********************************************************************
56 # "lib." objects are preserved from unsetting after template parsing
57 # *********************************************************************
58
59 # Creates a condition for targets. Not allowed in XHTML except for xhtml frames DTD
60 lib.parseTarget {
61 override =
62 override.if {
63 isTrue.data = TSFE:dtdAllowsFrames
64 }
65 }
66
67 # Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
68 lib.parseFunc {
69 makelinks = 1
70 makelinks.http.keep = {$styles.content.links.keep}
71 makelinks.http.extTarget < lib.parseTarget
72 makelinks.http.extTarget =
73 makelinks.http.extTarget.override = {$styles.content.links.extTarget}
74 makelinks.mailto.keep = path
75 tags {
76 link = TEXT
77 link {
78 current = 1
79 typolink.parameter.data = parameters : allParams
80 typolink.extTarget < lib.parseTarget
81 typolink.extTarget =
82 typolink.extTarget.override = {$styles.content.links.extTarget}
83 typolink.target < lib.parseTarget
84 typolink.target =
85 typolink.target.override = {$styles.content.links.target}
86 parseFunc.constants =1
87 }
88 }
89 allowTags = {$styles.content.links.allowTags}
90 denyTags = *
91 sword = <span class="csc-sword">|</span>
92 constants = 1
93
94 nonTypoTagStdWrap.HTMLparser = 1
95 nonTypoTagStdWrap.HTMLparser {
96 keepNonMatchedTags = 1
97 htmlSpecialChars = 2
98 }
99 }
100
101 # good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
102 styles.content.parseFunc < lib.parseFunc
103
104 # Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
105 lib.parseFunc_RTE < lib.parseFunc
106 lib.parseFunc_RTE {
107 // makelinks >
108 # Processing <table> and <blockquote> blocks separately
109 externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul
110 externalBlocks {
111 # The blockquote content is passed into parseFunc again...
112 blockquote.stripNL=1
113 blockquote.callRecursive=1
114
115 table.stripNL=1
116 table.stdWrap.HTMLparser = 1
117 table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
118 default = contenttable
119 always = 1
120 list = contenttable
121 }
122 table.stdWrap.HTMLparser.keepNonMatchedTags = 1
123 table.HTMLtableCells=1
124 table.HTMLtableCells {
125 # Recursive call to self but without wrapping non-wrapped cell content
126 default.stdWrap {
127 parseFunc =< lib.parseFunc_RTE
128 parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag =
129 }
130 addChr10BetweenParagraphs=1
131 }
132 div.stripNL = 1
133 div.callRecursive = 1
134
135 article < .div
136 aside < .div
137 footer < .div
138 header < .div
139 nav < .div
140 section < .div
141
142 # List processing
143 dl < .div
144 dd < .div
145 ol < .div
146 ul < .div
147 li.stdWrap.parseFunc < lib.parseFunc
148 }
149 nonTypoTagStdWrap.encapsLines {
150 encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt,li
151 remapTag.DIV = P
152 nonWrappedTag = P
153 innerStdWrap_all.ifBlank = &nbsp;
154 addAttributes.P.class = bodytext
155 addAttributes.P.class.setOnly=blank
156 }
157 nonTypoTagStdWrap.HTMLparser = 1
158 nonTypoTagStdWrap.HTMLparser {
159 keepNonMatchedTags = 1
160 htmlSpecialChars = 2
161 }
162 }
163
164
165 # Content header:
166 lib.stdheader = COA
167 lib.stdheader {
168
169 # Create class attribute for <Hx> tags
170 3 = LOAD_REGISTER
171 3 {
172 headerClass {
173 cObject = COA
174 cObject {
175 # Create alignment class for <Hx> tags
176 10 = TEXT
177 10 {
178 field = header_position
179 required = 1
180 noTrimWrap = |csc-header-alignment-| |
181 }
182 # Create "csc-firstHeader" class for <Hx> tags
183 20 = TEXT
184 20 {
185 value = csc-firstHeader
186 if {
187 value = 1
188 equals.data = cObj:parentRecordNumber
189 }
190 }
191 stdWrap {
192 trim = 1
193 noTrimWrap = | class="|"|
194 required = 1
195 }
196 }
197 }
198 }
199
200 # Date format (not HTML5)
201 5 = TEXT
202 5 {
203 field = date
204 if {
205 isTrue {
206 field = date
207 }
208 isFalse = 1
209 isFalse {
210 if {
211 value = html5
212 equals.data = TSFE:config|config|doctype
213 }
214 }
215 }
216 strftime = %x
217 wrap = <p class="csc-header-date">|</p>
218 prefixComment = 2 | Header date:
219 }
220
221 # This CASE cObject renders the header content:
222 # currentValue is set to the header data, possibly wrapped in link-tags.
223 10 = CASE
224 10.setCurrent {
225 field = header
226 htmlSpecialChars = 1
227 typolink.parameter.field = header_link
228 }
229 10.key.field = header_layout
230 10.key.ifEmpty = {$content.defaultHeaderType}
231 10.key.ifEmpty.override.data = register: defaultHeaderType
232
233 10.1 = TEXT
234 10.1.current = 1
235 10.1.dataWrap = <h1{register:headerClass}>|</h1>
236
237 10.2 < .10.1
238 10.2.dataWrap = <h2{register:headerClass}>|</h2>
239
240 10.3 < .10.1
241 10.3.dataWrap = <h3{register:headerClass}>|</h3>
242
243 10.4 < .10.1
244 10.4.dataWrap = <h4{register:headerClass}>|</h4>
245
246 10.5 < .10.1
247 10.5.dataWrap = <h5{register:headerClass}>|</h5>
248
249 # HTML5 subheader
250 20 = CASE
251 20 {
252 key {
253 field = header_layout
254 }
255
256 default = TEXT
257 default {
258 wrap = <h2>|</h2>
259 htmlSpecialChars = 1
260 field = subheader
261 }
262
263 1 < .default
264
265 2 < .default
266 2.wrap = <h3>|</h3>
267
268 3 < .default
269 3.wrap = <h4>|</h4>
270
271 4 < .default
272 4.wrap = <h5>|</h5>
273
274 5 < .default
275 5.wrap = <h6>|</h6>
276
277 if {
278 isTrue {
279 field = subheader
280 }
281 value = html5
282 equals.data = TSFE:config|config|doctype
283 }
284 }
285
286 # HTML5 Date
287 40 = COA
288 40 {
289
290 stdWrap {
291 wrap = <p class="csc-header-date">|</p>
292 innerWrap {
293 cObject = COA
294 cObject {
295 10 = TEXT
296 10 {
297 value = <time
298 }
299 20 = TEXT
300 20 {
301 noTrimWrap = | datetime="|"|
302 field = date
303 strftime = %Y-%m-%d
304 }
305 30 = TEXT
306 30 {
307 value = >|</time>
308 }
309 }
310 }
311 required = 1
312 }
313 10 = TEXT
314 10 {
315 field = date
316 strftime = %B %e, %Y
317 }
318 if {
319 isTrue {
320 field = date
321 }
322 value = html5
323 equals.data = TSFE:config|config|doctype
324 }
325 }
326
327 # Pops the used registers off the stack:
328 98 = RESTORE_REGISTER
329
330 # Post-processing:
331 stdWrap.fieldRequired = header
332 stdWrap.if {
333 equals.field = header_layout
334 value = 100
335 negate = 1
336 }
337
338 stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
339 stdWrap.editIcons.beforeLastTag = 1
340 stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.header
341
342 stdWrap {
343 dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
344 dataWrap {
345 override = <header class="csc-header csc-header-n{cObj:parentRecordNumber}">|</header>
346 override {
347 if {
348 isTrue {
349 field = date
350 }
351 value = html5
352 equals.data = TSFE:config|config|doctype
353 }
354 }
355 }
356 }
357 stdWrap.prefixComment = 2 | Header:
358 }
359
360
361
362
363
364 #**********************************
365 # tt_content is started
366 #**********************************
367 tt_content >
368 tt_content = CASE
369 tt_content.key.field = CType
370 tt_content.stdWrap {
371 innerWrap.cObject = CASE
372 innerWrap.cObject {
373 key.field = section_frame
374
375 default = COA
376 default {
377 10 = TEXT
378 10 {
379 cObject = CASE
380 cObject {
381 key.field = CType
382
383 default = TEXT
384 default {
385 value = <div id="c{field:uid}"
386 }
387
388 div = TEXT
389 div {
390 value = <div
391 }
392
393 menu < .default
394 menu {
395 override = <nav id="c{field:uid}"
396 override {
397 if {
398 value = html5
399 equals.data = TSFE:config|config|doctype
400 }
401 }
402 }
403 }
404 insertData = 1
405 }
406
407 20 = COA
408 20 {
409 # Create default class for content
410 10 = TEXT
411 10 {
412 value = csc-default
413 required = 1
414 noTrimWrap = || |
415 }
416 # Create class for space before content
417 20 = USER
418 20 {
419 userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
420 space = before
421 constant = {$content.spaceBefore}
422 classStdWrap {
423 noTrimWrap = |csc-space-before-| |
424 }
425 }
426 # Create class for space after content
427 30 = USER
428 30 {
429 userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
430 space = after
431 constant = {$content.spaceAfter}
432 classStdWrap {
433 noTrimWrap = |csc-space-after-| |
434 }
435 }
436 stdWrap {
437 trim = 1
438 noTrimWrap = | class="|"|
439 required = 1
440 }
441 }
442
443 30 = TEXT
444 30 {
445 cObject = CASE
446 cObject {
447 key.field = CType
448
449 default = TEXT
450 default {
451 value = >|</div>
452 }
453
454 menu < .default
455 menu {
456 override = >|</nav>
457 override {
458 if {
459 value = html5
460 equals.data = TSFE:config|config|doctype
461 }
462 }
463 }
464 }
465 }
466 }
467
468 1 =< tt_content.stdWrap.innerWrap.cObject.default
469 1.20.10.value = csc-frame csc-frame-invisible
470
471 5 =< tt_content.stdWrap.innerWrap.cObject.default
472 5.20.10.value = csc-frame csc-frame-rulerBefore
473
474 6 =< tt_content.stdWrap.innerWrap.cObject.default
475 6.20.10.value = csc-frame csc-frame-rulerAfter
476
477 10 =< tt_content.stdWrap.innerWrap.cObject.default
478 10.20.10.value = csc-frame csc-frame-indent
479
480 11 =< tt_content.stdWrap.innerWrap.cObject.default
481 11.20.10.value = csc-frame csc-frame-indent3366
482
483 12 =< tt_content.stdWrap.innerWrap.cObject.default
484 12.20.10.value = csc-frame csc-frame-indent6633
485
486 20 =< tt_content.stdWrap.innerWrap.cObject.default
487 20.20.10.value = csc-frame csc-frame-frame1
488
489 21 =< tt_content.stdWrap.innerWrap.cObject.default
490 21.20.10.value = csc-frame csc-frame-frame2
491
492 66 = COA
493 66 {
494 10 = TEXT
495 10 {
496 value = <a id="c{field:uid}"></a>
497 insertData = 1
498 }
499 # Create div with class for space before content
500 20 = COA
501 20 {
502 10 = USER
503 10 {
504 userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->renderSpace
505 space = before
506 constant = {$content.spaceBefore}
507 classStdWrap {
508 wrap = csc-space-before-|
509 }
510 }
511 stdWrap {
512 wrap = <div class="|"></div>
513 required = 1
514 }
515 }
516
517 30 = TEXT
518 30 {
519 value = |
520 }
521
522 # Create div with class for space after content
523 40 < .20
524 40 {
525 10 {
526 space = after
527 constant = {$content.spaceAfter}
528 classStdWrap {
529 wrap = csc-space-after-|
530 }
531 }
532 }
533 }
534 }
535
536 innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:label.toTop}</a></p>
537 innerWrap2.insertData = 1
538 innerWrap2.fieldRequired = linkToTop
539
540 prepend = TEXT
541 prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
542 prepend.if.isTrue.field = _LOCALIZED_UID
543
544 editPanel = 1
545 editPanel {
546 allow = move,new,edit,hide,delete
547 line = 5
548 label = %s
549 onlyCurrentPid = 1
550 previewBorder = 4
551 edit.displayRecord = 1
552 }
553
554 prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
555 }
556
557
558
559 # *****************
560 # CType: header
561 # *****************
562 # See Object path "lib.stdheader"
563 tt_content.header = COA
564 tt_content.header {
565 10 = < lib.stdheader
566
567 20 = TEXT
568 20 {
569 field = subheader
570 required = 1
571
572 dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
573 htmlSpecialChars = 1
574
575 if {
576 value = html5
577 equals.data = TSFE:config|config|doctype
578 negate = 1
579 }
580
581 editIcons = tt_content:subheader,layout
582 editIcons.beforeLastTag = 1
583 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.subheader
584
585 prefixComment = 2 | Subheader:
586 }
587 }
588
589
590
591 # *****************
592 # CType: text
593 # *****************
594 tt_content.text = COA
595 tt_content.text {
596 10 = < lib.stdheader
597
598 20 = TEXT
599 20 {
600 field = bodytext
601 required = 1
602
603 parseFunc = < lib.parseFunc_RTE
604
605 editIcons = tt_content:bodytext, rte_enabled
606 editIcons.beforeLastTag = 1
607 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.bodytext
608
609 prefixComment = 2 | Text:
610 }
611 }
612
613
614
615 # *****************
616 # CType: image
617 # *****************
618 # (also used for rendering 'textpic' type):
619 tt_content.image = COA
620 tt_content.image.10 = < lib.stdheader
621 tt_content.image.20 = USER
622 tt_content.image.20 {
623 userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_textpic
624
625 preRenderRegisters {
626 // To optimize performance we load all image captions into a register
627 // because we need to know if at least one image has a caption at
628 // multiple places to determine the render method.
629 allImageCaptions.cObject = FILES
630 allImageCaptions.cObject {
631 references {
632 table = tt_content
633 fieldName = image
634 }
635 renderObj = TEXT
636 renderObj.data = file:current:description
637 }
638 }
639
640 # Image source
641 imgList.cObject = FILES
642 imgList.cObject {
643 references < tt_content.image.20.preRenderRegisters.allImageCaptions.cObject.references
644 renderObj = TEXT
645 renderObj.data = file:current:uid
646 renderObj.wrap = |,
647 }
648 imgPath = uploads/pics/
649
650 // This needs to be set because the UID list generated in the imgList
651 // setting contains UIDs of file references (not files).
652 imgListContainsReferenceUids = 1
653
654 # Single image rendering
655 imgObjNum = 1
656 1 {
657 file.import.data = file:current:uid
658 file.treatIdAsReference = 1
659 file.width.field = imagewidth
660
661 layoutKey = {$styles.content.imgtext.layoutKey}
662 layout {
663 default {
664 element = <img src="###SRC###" width="###WIDTH###" height="###HEIGHT###"###PARAMS######ALTPARAMS######BORDER######SELFCLOSINGTAGSLASH###>
665 }
666 srcset {
667 element = <img src="###SRC###" srcset="###SOURCECOLLECTION###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
668 source = |*|###SRC### ###SRCSETCANDIDATE###,|*|###SRC### ###SRCSETCANDIDATE###
669 }
670 picture {
671 element = <picture>###SOURCECOLLECTION###<img src="###SRC###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###></picture>
672 source = <source srcset="###SRC###" media="###MEDIAQUERY###"###SELFCLOSINGTAGSLASH###>
673 }
674 data {
675 element = <img src="###SRC###"###SOURCECOLLECTION######PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
676 source = data-###DATAKEY###="###SRC###"
677 source.noTrimWrap = ; ;;
678 source.noTrimWrap.splitChar = ;
679 }
680 }
681 # Default sourceCollection as an example
682 # Please write your own sourceCollection (highly recommended)
683 sourceCollection {
684 small {
685 width = 200
686
687 srcsetCandidate = 600w
688 mediaQuery = (max-device-width: 600px)
689 dataKey = small
690 }
691 smallRetina {
692 if {
693 value = {$styles.content.imgtext.layoutKey}
694 equals = default
695 negate = 1
696 }
697
698 width = 200
699 pixelDensity = 2
700
701 srcsetCandidate = 600w 2x
702 mediaQuery = (max-device-width: 600px) AND (min-resolution: 192dpi)
703 dataKey = smallRetina
704 }
705 }
706
707 imageLinkWrap = 1
708 imageLinkWrap {
709 bodyTag = <body style="margin:0; background:#fff;">
710 wrap = <a href="javascript:close();"> | </a>
711 width = {$styles.content.imgtext.linkWrap.width}
712 height = {$styles.content.imgtext.linkWrap.height}
713 effects = {$styles.content.imgtext.linkWrap.effects}
714
715 JSwindow = 1
716 JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
717 JSwindow.if.isFalse = {$styles.content.imgtext.linkWrap.lightboxEnabled}
718
719 directImageLink = {$styles.content.imgtext.linkWrap.lightboxEnabled}
720
721 enable.field = image_zoom
722 enable.ifEmpty.typolink.parameter.data = file:current:link
723 enable.ifEmpty.typolink.returnLast = url
724
725 typolink.parameter.data = file:current:link
726
727 typolink.target < lib.parseTarget
728 typolink.target =
729 typolink.target.override = {$styles.content.links.target}
730
731 typolink.extTarget < lib.parseTarget
732 typolink.extTarget =
733 typolink.extTarget.override = {$styles.content.links.extTarget}
734
735 linkParams.ATagParams.dataWrap = class="{$styles.content.imgtext.linkWrap.lightboxCssClass}" rel="{$styles.content.imgtext.linkWrap.lightboxRelAttribute}"
736 }
737
738 altText = TEXT
739 altText {
740 data = file:current:alternative
741 stripHtml = 1
742 }
743
744 titleText < .altText
745 titleText.data = file:current:title
746
747 longdescURL {
748 parameter {
749 field = longdescURL
750 split {
751 token {
752 char = 10
753 }
754 returnKey.data = register : IMAGE_NUM_CURRENT
755 }
756 }
757 }
758
759 emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
760 titleInLink = {$styles.content.imgtext.titleInLink}
761 titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
762 }
763
764 textPos.field = imageorient
765 maxW = {$styles.content.imgtext.maxW}
766 maxW.override.data = register:maxImageWidth
767 maxWInText = {$styles.content.imgtext.maxWInText}
768 maxWInText.override.data = register:maxImageWidthInText
769
770 equalH.field = imageheight
771
772 image_compression.field = image_compression
773 image_effects.field = image_effects
774
775 noRows.field = image_noRows
776
777 cols.field = imagecols
778 border.field = imageborder
779
780 caption {
781 1 = COA
782 1 {
783 1 = TEXT
784 1 {
785 data = file:current:description
786 required = 1
787 parseFunc =< lib.parseFunc
788 br = 1
789 }
790 }
791 }
792
793 captionAlign.field = imagecaption_position
794
795 // This needs to be set to TRUE because otherwise render_textpic will
796 // render a global caption which we do not have.
797 imageTextSplit = 1
798
799 borderThick = {$styles.content.imgtext.borderThick}
800 borderClass = {$styles.content.imgtext.borderClass}
801 colSpace = {$styles.content.imgtext.colSpace}
802 textMargin = {$styles.content.imgtext.textMargin}
803
804 borderSpace = {$styles.content.imgtext.borderSpace}
805 separateRows = {$styles.content.imgtext.separateRows}
806 addClasses =
807 addClassesCol =
808 addClassesCol.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
809 addClassesCol.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
810 addClassesCol.override.if {
811 isGreaterThan.field = imagecols
812 value = 1
813 }
814
815 addClassesImage = csc-textpic-first |*| |*| csc-textpic-last
816
817 #
818 imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
819 imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
820
821 # if noRows is set, wrap around each column:
822 imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
823
824 layout = CASE
825 layout {
826 key.field = imageorient
827 # above-center
828 default = TEXT
829 default {
830 value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
831 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
832 override {
833 if {
834 value = default
835 equals = {$styles.content.imgtext.layoutKey}
836 negate = 1
837 }
838 }
839 }
840 # above-right
841 1 = TEXT
842 1 {
843 value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
844 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
845 override {
846 if {
847 value = default
848 equals = {$styles.content.imgtext.layoutKey}
849 negate = 1
850 }
851 }
852 }
853 # above-left
854 2 = TEXT
855 2 {
856 value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
857 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
858 override {
859 if {
860 value = default
861 equals = {$styles.content.imgtext.layoutKey}
862 negate = 1
863 }
864 }
865 }
866 # below-center
867 8 = TEXT
868 8 {
869 value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
870 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
871 override {
872 if {
873 value = default
874 equals = {$styles.content.imgtext.layoutKey}
875 negate = 1
876 }
877 }
878 }
879 # below-right
880 9 = TEXT
881 9 {
882 value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
883 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
884 override {
885 if {
886 value = default
887 equals = {$styles.content.imgtext.layoutKey}
888 negate = 1
889 }
890 }
891 }
892 # below-left
893 10 = TEXT
894 10 {
895 value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
896 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
897 override {
898 if {
899 value = default
900 equals = {$styles.content.imgtext.layoutKey}
901 negate = 1
902 }
903 }
904 }
905 # intext-right
906 17 = TEXT
907 17 {
908 value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
909 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
910 override {
911 if {
912 value = default
913 equals = {$styles.content.imgtext.layoutKey}
914 negate = 1
915 }
916 }
917 }
918 # intext-left
919 18 = TEXT
920 18 {
921 value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
922 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
923 override {
924 if {
925 value = default
926 equals = {$styles.content.imgtext.layoutKey}
927 negate = 1
928 }
929 }
930 }
931 # intext-right-nowrap
932 25 = TEXT
933 25 {
934 value = <div class="csc-textpic csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
935 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
936 override {
937 if {
938 value = default
939 equals = {$styles.content.imgtext.layoutKey}
940 negate = 1
941 }
942 }
943 }
944 # intext-left-nowrap
945 26 = TEXT
946 26 {
947 value = <div class="csc-textpic csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
948 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
949 override {
950 if {
951 value = default
952 equals = {$styles.content.imgtext.layoutKey}
953 negate = 1
954 }
955 }
956 }
957 }
958
959 rendering {
960 # Single image - No caption
961 singleNoCaption {
962 # Choose another rendering for special edge cases
963 fallbackRendering = COA
964 fallbackRendering {
965 # Single image - Caption
966 10 = TEXT
967 10 {
968 if {
969 isTrue.data = file:current:description
970 value = 1
971 equals.data = register:imageCount
972 }
973 value = singleCaption
974 }
975
976 # Multiple images and split caption
977 20 = TEXT
978 20 {
979 if {
980 value = 1
981 isGreaterThan.data = register:imageCount
982 isTrue.if.isFalse.data = register:renderGlobalCaption
983 isTrue.data = register:allImageCaptions
984 }
985 value = splitCaption
986 }
987
988 # Multiple images and no caption at all
989 40 = TEXT
990 40 {
991 if {
992 value = 1
993 isGreaterThan.data = register:imageCount
994 isFalse.data = register:allImageCaptions
995 }
996 value = noCaption
997 }
998 }
999 allStdWrap {
1000 dataWrap = <div class="csc-textpic-imagewrap"> | </div>
1001 dataWrap {
1002 override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
1003 override {
1004 if {
1005 value = html5
1006 equals.data = TSFE:config|config|doctype
1007 }
1008 }
1009 }
1010 innerWrap.cObject = CASE
1011 innerWrap.cObject {
1012 key.field = imageorient
1013 # above-center
1014 0 = TEXT
1015 0.value = <div class="csc-textpic-center-outer"><div class="csc-textpic-center-inner"> | </div></div>
1016 # below-center
1017 8 < .0
1018 }
1019 }
1020 singleStdWrap {
1021 wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
1022 wrap {
1023 override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
1024 override {
1025 if {
1026 value = html5
1027 equals.data = TSFE:config|config|doctype
1028 }
1029 }
1030 }
1031 }
1032 rowStdWrap.wrap = |
1033 noRowsStdWrap.wrap = |
1034 lastRowStdWrap.wrap = |
1035 columnStdWrap.wrap = |
1036 imgTagStdWrap.wrap = |
1037 editIconsStdWrap.wrap = <div> | </div>
1038 caption.wrap = |
1039 }
1040 noCaption {
1041 # Multiple images and no caption at all
1042 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1043 allStdWrap {
1044 dataWrap = <div class="csc-textpic-imagewrap"> | </div>
1045 dataWrap {
1046 override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
1047 override {
1048 if {
1049 value = html5
1050 equals.data = TSFE:config|config|doctype
1051 }
1052 }
1053 }
1054 }
1055 singleStdWrap {
1056 wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
1057 wrap {
1058 override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
1059 }
1060 }
1061 rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
1062 noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
1063 lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
1064 columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
1065 }
1066 singleCaption {
1067 # Just one image with a caption
1068 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1069 singleStdWrap {
1070 wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
1071 wrap {
1072 override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
1073 override {
1074 if {
1075 value = html5
1076 equals.data = TSFE:config|config|doctype
1077 }
1078 }
1079 }
1080 }
1081 caption {
1082 required = 1
1083 wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
1084 wrap {
1085 override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
1086 override {
1087 if {
1088 value = html5
1089 equals.data = TSFE:config|config|doctype
1090 }
1091 }
1092 }
1093 }
1094 }
1095 splitCaption {
1096 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1097 singleStdWrap {
1098 wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
1099 wrap {
1100 override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
1101 override {
1102 if {
1103 value = html5
1104 equals.data = TSFE:config|config|doctype
1105 }
1106 }
1107 }
1108 }
1109 rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
1110 noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
1111 lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
1112 columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
1113 caption {
1114 required = 1
1115 wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
1116 wrap {
1117 override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
1118 override {
1119 if {
1120 value = html5
1121 equals.data = TSFE:config|config|doctype
1122 }
1123 }
1124 }
1125 }
1126 }
1127 }
1128 renderMethod = singleNoCaption
1129
1130 editIcons = tt_content : image [imageorient|imagewidth|imageheight],[imagecols|image_noRows|imageborder],[image_zoom],[image_compression|image_effects|image_frames],[imagecaption_position]
1131 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.images
1132
1133 caption.editIcons = tt_content : imagecaption_position
1134 caption.editIcons.beforeLastTag=1
1135 caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.caption_position
1136
1137 stdWrap.prefixComment = 2 | Image block:
1138 }
1139
1140 # *****************
1141 # CType: textpic
1142 # *****************
1143 tt_content.textpic = COA
1144 tt_content.textpic {
1145 10 = COA
1146 10.if.value = 25
1147 10.if.isLessThan.field = imageorient
1148 10.10 = < lib.stdheader
1149
1150 20 = < tt_content.image.20
1151 20 {
1152 text.10 = COA
1153 text.10 {
1154 if.value = 24
1155 if.isGreaterThan.field = imageorient
1156 10 = < lib.stdheader
1157 10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
1158 }
1159 text.20 = < tt_content.text.20
1160 text.wrap = <div class="csc-textpic-text"> | </div>
1161 }
1162 }
1163
1164
1165
1166 # *****************
1167 # CType: bullet
1168 # *****************
1169 tt_content.bullets = COA
1170 tt_content.bullets {
1171 10 = < lib.stdheader
1172
1173 20 = TEXT
1174 20 {
1175 field = bodytext
1176 trim = 1
1177 split{
1178 token.char = 10
1179 cObjNum = |*|1|| 2|*|
1180 1.current = 1
1181 1.parseFunc =< lib.parseFunc
1182 1.wrap = <li class="odd">|</li>
1183
1184 2.current = 1
1185 2.parseFunc =< lib.parseFunc
1186 2.wrap = <li class="even">|</li>
1187 }
1188 dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
1189 editIcons = tt_content: bodytext, [layout]
1190 editIcons.beforeLastTag = 1
1191 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xlf:eIcon.bullets
1192
1193 prefixComment = 2 | Bullet list:
1194 }
1195 }
1196
1197
1198 # *****************
1199 # CType: uploads
1200 # *****************
1201 tt_content.uploads = COA
1202 tt_content.uploads {
1203 10 = < lib.stdheader
1204
1205 20 = FILES
1206 20 {
1207 # get from file references:
1208 references {
1209 table = tt_content
1210 fieldName = media
1211 }
1212
1213 collections.field = file_collections
1214
1215 # get from path (backwards compatibility, contains strings like "fileadmin/user_uploads/")
1216 folders.field = select_key
1217
1218 sorting.field = filelink_sorting
1219
1220 # render the files
1221 renderObj = COA
1222 renderObj {
1223 10 = IMAGE
1224 10 {
1225 file.import.data = file:current:originalUid // file:current:uid
1226 file.width = 150
1227 stdWrap {
1228 if.value = 1
1229 if.isGreaterThan.field = layout
1230
1231 typolink {
1232 parameter.data = file:current:originalUid // file:current:uid
1233 parameter.wrap = file:|
1234 fileTarget < lib.parseTarget
1235 fileTarget =
1236 fileTarget.override = {$styles.content.uploads.target}
1237 fileTarget.override.override.field = target
1238 removePrependedNumbers = 1
1239
1240 title {
1241 data = file:current:title
1242 htmlSpecialChars = 1
1243 }
1244
1245 /*
1246 jumpurl = {$styles.content.uploads.jumpurl}
1247 jumpurl {
1248 secure = {$styles.content.uploads.jumpurl_secure}
1249 secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
1250 }
1251 */
1252 }
1253 }
1254 }
1255
1256 # icon
1257 15 = IMAGE
1258 15 {
1259 file.import = typo3/gfx/fileicons/
1260 file.import.data = file:current:extension
1261 file.import.case = lower
1262 file.import.wrap = |.gif
1263 stdWrap {
1264 if {
1265 value = 0
1266 isGreaterThan.field = layout
1267
1268 # only show the icon if we don't have a thumbnail:
1269 isFalse.cObject = IMG_RESOURCE
1270 isFalse.cObject.file < tt_content.uploads.20.renderObj.10.file
1271 isFalse.cObject.stdWrap.if < tt_content.uploads.20.renderObj.10.stdWrap.if
1272 }
1273
1274 typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
1275 }
1276 }
1277
1278 # filename
1279 20 = TEXT
1280 20 {
1281 data = file:current:title // file:current:name
1282 htmlSpecialChars = 1
1283 required = 1
1284
1285 replacement {
1286 # equivalent to former useSpacesInLinkText = 0; remove using > to disable it
1287 10 {
1288 search = _
1289 replace.char = 32
1290 }
1291
1292 # equivalent to former stripFileExtensionFromLinkText = 0; move "_20" to "20" to enable it. Disabled by default.
1293 _20 {
1294 search = /(.*)(\..*)/
1295 replace = \1
1296 useRegExp = 1
1297 }
1298 }
1299
1300 typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
1301
1302 wrap = <span class="csc-uploads-fileName">|</span>
1303 }
1304
1305 # description
1306 30 = TEXT
1307 30 {
1308 data = file:current:description
1309 htmlSpecialChars = 1
1310 wrap = <span class="csc-uploads-description">|</span>
1311
1312 required = 1
1313 }
1314
1315 # file size
1316 40 = TEXT
1317 40 {
1318 if.isTrue.field = filelink_size
1319 data = file:current:size
1320 wrap = <span class="csc-uploads-fileSize">|</span>
1321 bytes = 1
1322 bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
1323 }
1324
1325 # wrap of each listed file with odd/even class
1326 wrap.cObject = COA
1327 wrap.cObject {
1328 10 = LOAD_REGISTER
1329 10 {
1330 oddEvenClass = li-odd li-first |*| li-even || li-odd
1331 elementClass = csc-uploads-element csc-uploads-element-{file:current:extension}
1332 elementClass.insertData = 1
1333 }
1334
1335 20 = TEXT
1336 20 {
1337 value = <li class="{register:oddEvenClass} {register:elementClass}">|</li>
1338 insertData = 1
1339 }
1340 30 = RESTORE_REGISTER
1341 }
1342 }
1343
1344 # wrap around whole content element with <ul> and editIcons
1345 stdWrap {
1346 editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size
1347 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.filelist
1348 prefixComment = 2 | File list:
1349 dataWrap = <ul class="csc-uploads csc-uploads-{field:layout}">|</ul>
1350 }
1351 }
1352 }
1353
1354
1355
1356 # *****************
1357 # CType: table
1358 # *****************
1359 # Rendered by a PHP function specifically written to handle CE tables. See EXT:css_styled_content/Classes/Controller/CssStyledContentController.php
1360 tt_content.table = COA
1361 tt_content.table {
1362 10 = < lib.stdheader
1363
1364 20 = USER
1365 20.userFunc = TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController->render_table
1366 20.field = bodytext
1367
1368 20.color {
1369 default =
1370 1 = {$styles.content.table.backgroundColor.1}
1371 2 = {$styles.content.table.backgroundColor.2}
1372 200 =
1373 240 = {$styles.content.table.backgroundColor.240}
1374 241 = {$styles.content.table.backgroundColor.241}
1375 242 = {$styles.content.table.backgroundColor.242}
1376 243 = {$styles.content.table.backgroundColor.243}
1377 244 = {$styles.content.table.backgroundColor.244}
1378 }
1379 20.tableParams_0 {
1380 border =
1381 cellpadding =
1382 cellspacing =
1383 }
1384 20.tableParams_1 {
1385 border =
1386 cellpadding =
1387 cellspacing =
1388 }
1389 20.tableParams_2 {
1390 border =
1391 cellpadding =
1392 cellspacing =
1393 }
1394 20.tableParams_3 {
1395 border =
1396 cellpadding =
1397 cellspacing =
1398 }
1399 20.innerStdWrap.wrap = |
1400 20.innerStdWrap.parseFunc = < lib.parseFunc
1401
1402 20.stdWrap {
1403 editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
1404 editIcons.beforeLastTag = 1
1405 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.table
1406
1407 prefixComment = 2 | Table:
1408 }
1409 }
1410
1411 # ****************
1412 # CType: menu
1413 # ****************
1414 tt_content.menu = COA
1415 tt_content.menu {
1416 10 = < lib.stdheader
1417
1418 20 = CASE
1419 20 {
1420 key.field = menu_type
1421
1422 # "Menu of these pages"
1423 default = HMENU
1424 default {
1425 special = list
1426 special.value.field = pages
1427 stdWrap {
1428 prepend = COA
1429 prepend {
1430 stdWrap {
1431 if.isTrue.field = accessibility_bypass
1432 }
1433 10 = LOAD_REGISTER
1434 10 {
1435 accessibility_bypass_text = TEXT
1436 accessibility_bypass_text {
1437 field = accessibility_bypass_text
1438 }
1439 }
1440 20 = CONTENT
1441 20 {
1442 table = tt_content
1443 select {
1444 pidInList = this
1445 orderBy = sorting
1446 where {
1447 dataWrap = sorting>{field:sorting}
1448 }
1449 languageField = sys_language_uid
1450 max = 1
1451 }
1452 renderObj = TEXT
1453 renderObj {
1454 required = 1
1455 data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:menu.bypassNavigation
1456 override.data = register:accessibility_bypass_text
1457 trim = 1
1458 htmlSpecialChars = 1
1459 typolink {
1460 parameter {
1461 field = pid
1462 }
1463 section {
1464 field = uid
1465 }
1466 }
1467 wrap = <li class="csc-nav-bypass">|</li>
1468 }
1469 }
1470 30 = RESTORE_REGISTER
1471 }
1472 outerWrap = <ul class="csc-menu csc-menu-def">|</ul>
1473 required = 1
1474 }
1475 1 = TMENU
1476 1 {
1477 target < lib.parseTarget
1478 target =
1479 target.override = {$PAGE_TARGET}
1480 NO {
1481 stdWrap.htmlSpecialChars = 1
1482 wrapItemAndSub = <li>|</li>
1483 ATagTitle.field = description // title
1484 }
1485 }
1486 }
1487
1488 # "Menu of subpages to these pages"
1489 1 < .default
1490 1 {
1491 special = directory
1492 stdWrap {
1493 outerWrap = <ul class="csc-menu csc-menu-1">|</ul>
1494 }
1495 }
1496
1497 # "Sitemap - liststyle"
1498 2 = HMENU
1499 2 {
1500 stdWrap < tt_content.menu.20.default.stdWrap
1501 stdWrap {
1502 outerWrap = <div class="csc-sitemap">|</div>
1503 }
1504 1 = TMENU
1505 1 {
1506 target < lib.parseTarget
1507 target =
1508 target.override = {$PAGE_TARGET}
1509 expAll = 1
1510 wrap = <ul>|</ul>
1511 NO {
1512 stdWrap.htmlSpecialChars = 1
1513 wrapItemAndSub = <li>|</li>
1514 ATagTitle.field = description // title
1515 }
1516 }
1517 2 < .1
1518 3 < .1
1519 4 < .1
1520 5 < .1
1521 6 < .1
1522 7 < .1
1523 }
1524
1525 # "Section index (pagecontent w/Index checked - liststyle)"
1526 3 < .default
1527 3 {
1528 special {
1529 value {
1530 override {
1531 data = page:uid
1532 if {
1533 isFalse.field = pages
1534 }
1535 }
1536 }
1537 }
1538 stdWrap {
1539 outerWrap = <ul class="csc-menu csc-menu-3">|</ul>
1540 }
1541 1 = TMENU
1542 1 {
1543 sectionIndex = 1
1544 sectionIndex.type = header
1545 NO.wrapItemAndSub = <li class="csc-section">|</li>
1546 }
1547 }
1548
1549 # "Menu of subpages to these pages (with abstract)"
1550 4 < .1
1551 4 {
1552 stdWrap {
1553 prepend.20.renderObj.wrap = <dt class="csc-nav-bypass">|</dt><dd>&nbsp;</dd>
1554 outerWrap = <dl class="csc-menu csc-menu-4">|</dl>
1555 }
1556 1.NO {
1557 wrapItemAndSub >
1558 linkWrap = <dt>|</dt>
1559 after {
1560 cObject = TEXT
1561 cObject {
1562 data = field : abstract // field : description // field : subtitle
1563 htmlSpecialChars = 1
1564 required = 1
1565 }
1566 ifBlank = &nbsp;
1567 wrap = <dd>|</dd>
1568 }
1569 ATagTitle.field = description // title
1570 }
1571 }
1572
1573 # "Recently updated pages"
1574 5 < .default
1575 5 {
1576 stdWrap {
1577 outerWrap = <ul class="csc-menu csc-menu-5">|</ul>
1578 }
1579 special = updated
1580 special {
1581 maxAge = 3600*24*7
1582 excludeNoSearchPages = 1
1583 }
1584 }
1585
1586 # "Related pages (based on keywords)"
1587 6 < .default
1588 6 {
1589 stdWrap {
1590 outerWrap = <ul class="csc-menu csc-menu-6">|</ul>
1591 }
1592 special = keywords
1593 special {
1594 excludeNoSearchPages = 1
1595 }
1596 }
1597
1598 # "Menu of subpages to these pages + sections - liststyle"
1599 7 < .1
1600 7 {
1601 stdWrap {
1602 outerWrap = <ul class="csc-menu csc-menu-7">|</ul>
1603 }
1604 1.expAll = 1
1605 2 < .1
1606 2 {
1607 sectionIndex = 1
1608 sectionIndex.type = header
1609 wrap = <ul>|</ul>
1610 NO.wrapItemAndSub = <li class="csc-section">|</li>
1611 }
1612 }
1613
1614 # "Sitemaps of selected pages - liststyle"
1615 8 < .2
1616 8 {
1617 special = directory
1618 special.value.field = pages
1619 }
1620
1621 # Menu of categorized pages
1622 categorized_pages < .default
1623 categorized_pages {
1624 special = categories
1625 special.value.field = selected_categories
1626 special.relation.field = category_field
1627 special.sorting = title
1628 special.order = asc
1629 stdWrap {
1630 outerWrap = <ul class="csc-menu csc-menu-categorized-pages">|</ul>
1631 }
1632 }
1633
1634 # Menu of categorized content elements
1635 categorized_content = RECORDS
1636 categorized_content {
1637 categories.field = selected_categories
1638 categories.relation.field = category_field
1639 tables = tt_content
1640 conf.tt_content = TEXT
1641 conf.tt_content {
1642 field = header
1643 typolink.parameter = {field:pid}#{field:uid}
1644 typolink.parameter.insertData = 1
1645 wrap = <li>|</li>
1646 }
1647 wrap = <ul>|</ul>
1648 }
1649 }
1650
1651 20.stdWrap {
1652 wrap {
1653 cObject = COA
1654 cObject {
1655 10 = TEXT
1656 10 {
1657 field = accessibility_title
1658 htmlSpecialChars = 1
1659 dataWrap = <map id="map{field:uid}" title="|">
1660 dataWrap {
1661 override = <map name="map{field:uid}" title="|">
1662 override {
1663 if {
1664 isFalse.data = TSFE:xhtmlDoctype
1665 }
1666 }
1667 }
1668 }
1669
1670 20 = TEXT
1671 20 {
1672 value = |</map>
1673 }
1674 }
1675 if {
1676 isTrue {
1677 field = accessibility_title
1678 }
1679 }
1680 }
1681 editIcons = tt_content: menu_type, pages
1682 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.menuSitemap
1683
1684 prefixComment = 2 | Menu/Sitemap element:
1685 }
1686 }
1687
1688
1689
1690 # ****************
1691 # CType: shortcut
1692 # ****************
1693 # Should be a complete copy from the old static template "content (default)"
1694 tt_content.shortcut = COA
1695 tt_content.shortcut {
1696
1697 20 = RECORDS
1698 20 {
1699 source.field = records
1700 tables = {$content.shortcut.tables}
1701 }
1702
1703 20.stdWrap {
1704 editIcons = tt_content: records
1705 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.recordList
1706
1707 prefixComment = 2 | Inclusion of other records (by reference):
1708 }
1709 }
1710
1711
1712 # ****************
1713 # CType: list
1714 # ****************
1715 # Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
1716 tt_content.list = COA
1717 tt_content.list {
1718 10 = < lib.stdheader
1719
1720 20 = CASE
1721 20.key.field = list_type
1722
1723 20.stdWrap {
1724 editIcons = tt_content: list_type, layout, select_key, pages [recursive]
1725 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.plugin
1726
1727 prefixComment = 2 | Plugin inserted:
1728 }
1729 }
1730
1731
1732 # ****************
1733 # CType: div
1734 # ****************
1735 tt_content.div = TEXT
1736 tt_content.div {
1737 value = <hr>
1738 override = <hr />
1739 override.if {
1740 isTrue.data = TSFE:xhtmlDoctype
1741 }
1742 wrap = <div class="divider">|</div>
1743 prefixComment = 2 | Div element
1744 }
1745
1746
1747 # ****************
1748 # CType: html
1749 # ****************
1750 # This truely IS a content object, launched from inside the PHP class of course.
1751 # Should be a complete copy from the old static template "content (default)"
1752 tt_content.html = TEXT
1753 tt_content.html {
1754 field = bodytext
1755
1756 editIcons = tt_content:bodytext
1757 editIcons.beforeLastTag = 1
1758 editIcons.iconTitle.data = LLL:EXT:css_styled_content/Resources/Private/Language/locallang.xlf:eIcon.html
1759
1760 prefixComment = 2 | Raw HTML content:
1761 }
1762
1763
1764 # ****************
1765 # Default error msg:
1766 # ****************
1767 tt_content.default = TEXT
1768 tt_content.default {
1769 field = CType
1770 wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
1771
1772 prefixComment = 2 | Unknown element message:
1773 }
1774
1775 # *********************************************************************
1776 # ACCESSIBILTY MODE
1777 # *********************************************************************
1778
1779
1780
1781
1782
1783
1784
1785 plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
1786 /* Headers */
1787 .csc-header-alignment-center { text-align: center; }
1788 .csc-header-alignment-right { text-align: right; }
1789 .csc-header-alignment-left { text-align: left; }
1790
1791 div.csc-textpic-responsive, div.csc-textpic-responsive * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
1792
1793 /* Clear floats after csc-textpic and after csc-textpic-imagerow */
1794 div.csc-textpic, div.csc-textpic div.csc-textpic-imagerow, ul.csc-uploads li { overflow: hidden; }
1795
1796 /* Set padding for tables */
1797 div.csc-textpic .csc-textpic-imagewrap table { border-collapse: collapse; border-spacing: 0; }
1798 div.csc-textpic .csc-textpic-imagewrap table tr td { padding: 0; vertical-align: top; }
1799
1800 /* Settings for figure and figcaption (HTML5) */
1801 div.csc-textpic .csc-textpic-imagewrap figure, div.csc-textpic figure.csc-textpic-imagewrap { margin: 0; display: table; }
1802
1803 /* Captions */
1804 figcaption.csc-textpic-caption { display: table-caption; }
1805 .csc-textpic-caption { text-align: left; caption-side: bottom; }
1806 div.csc-textpic-caption-c .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-c { text-align: center; }
1807 div.csc-textpic-caption-r .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-r { text-align: right; }
1808 div.csc-textpic-caption-l .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-l { text-align: left; }
1809
1810 /* Float the columns */
1811 div.csc-textpic div.csc-textpic-imagecolumn { float: left; }
1812
1813 /* Border just around the image */
1814 {$styles.content.imgtext.borderSelector} {
1815 border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
1816 padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
1817 }
1818
1819 div.csc-textpic .csc-textpic-imagewrap img { border: none; display: block; }
1820
1821 /* Space below each image (also in-between rows) */
1822 div.csc-textpic .csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
1823 div.csc-textpic .csc-textpic-imagewrap .csc-textpic-imagerow-last .csc-textpic-image { margin-bottom: 0; }
1824
1825 /* colSpace around image columns, except for last column */
1826 div.csc-textpic-imagecolumn, td.csc-textpic-imagecolumn .csc-textpic-image { margin-right: {$styles.content.imgtext.colSpace}px; }
1827 div.csc-textpic-imagecolumn.csc-textpic-lastcol, td.csc-textpic-imagecolumn.csc-textpic-lastcol .csc-textpic-image { margin-right: 0; }
1828
1829 /* Add margin from image-block to text (in case of "Text & Images") */
1830 div.csc-textpic-intext-left .csc-textpic-imagewrap,
1831 div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap {
1832 margin-right: {$styles.content.imgtext.textMargin}px;
1833 }
1834 div.csc-textpic-intext-right .csc-textpic-imagewrap,
1835 div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap {
1836 margin-left: {$styles.content.imgtext.textMargin}px;
1837 }
1838
1839 /* Positioning of images: */
1840
1841 /* Center (above or below) */
1842 div.csc-textpic-center .csc-textpic-imagewrap, div.csc-textpic-center figure.csc-textpic-imagewrap { overflow: hidden; }
1843 div.csc-textpic-center .csc-textpic-center-outer { position: relative; float: right; right: 50%; }
1844 div.csc-textpic-center .csc-textpic-center-inner { position: relative; float: right; right: -50%; }
1845
1846 /* Right (above or below) */
1847 div.csc-textpic-right .csc-textpic-imagewrap { float: right; }
1848 div.csc-textpic-right div.csc-textpic-text { clear: right; }
1849
1850 /* Left (above or below) */
1851 div.csc-textpic-left .csc-textpic-imagewrap { float: left; }
1852 div.csc-textpic-left div.csc-textpic-text { clear: left; }
1853
1854 /* Left (in text) */
1855 div.csc-textpic-intext-left .csc-textpic-imagewrap { float: left; }
1856
1857 /* Right (in text) */
1858 div.csc-textpic-intext-right .csc-textpic-imagewrap { float: right; }
1859
1860 /* Right (in text, no wrap around) */
1861 div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap { float: right; }
1862
1863 /* Left (in text, no wrap around) */
1864 div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap { float: left; }
1865
1866 div.csc-textpic div.csc-textpic-imagerow-last, div.csc-textpic div.csc-textpic-imagerow-none div.csc-textpic-last { margin-bottom: 0; }
1867
1868 /* Browser fixes: */
1869
1870 /* Fix for unordered and ordered list with image "In text, left" */
1871 .csc-textpic-intext-left ol, .csc-textpic-intext-left ul { padding-left: 40px; overflow: auto; }
1872
1873 /* File Links */
1874 ul.csc-uploads { padding: 0; }
1875 ul.csc-uploads li { list-style: none outside none; margin: 1em 0; }
1876 ul.csc-uploads img { float: left; margin-right: 1em; vertical-align: top; }
1877 ul.csc-uploads span { display: block; }
1878 ul.csc-uploads span.csc-uploads-fileName { text-decoration: underline; }
1879
1880 /* Table background colors: */
1881
1882 table.contenttable-color-1 { background-color: {$styles.content.table.backgroundColor.1}; }
1883 table.contenttable-color-2 { background-color: {$styles.content.table.backgroundColor.2}; }
1884 table.contenttable-color-240 { background-color: {$styles.content.table.backgroundColor.240}; }
1885 table.contenttable-color-241 { background-color: {$styles.content.table.backgroundColor.241}; }
1886 table.contenttable-color-242 { background-color: {$styles.content.table.backgroundColor.242}; }
1887 table.contenttable-color-243 { background-color: {$styles.content.table.backgroundColor.243}; }
1888 table.contenttable-color-244 { background-color: {$styles.content.table.backgroundColor.244}; }
1889 )