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