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