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