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