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