7dc64c68ae433a4e06f4929375f2b840acda0cb2
[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 uid.field = uid
646 fieldName = image
647 }
648 renderObj = TEXT
649 renderObj.data = file:current:description
650 }
651 }
652
653 # Image source
654 imgList.cObject = FILES
655 imgList.cObject {
656 references < tt_content.image.20.preRenderRegisters.allImageCaptions.cObject.references
657 renderObj = TEXT
658 renderObj.data = file:current:uid
659 renderObj.wrap = |,
660 }
661 imgPath = uploads/pics/
662
663 // This needs to be set because the UID list generated in the imgList
664 // setting contains UIDs of file references (not files).
665 imgListContainsReferenceUids = 1
666
667 # Single image rendering
668 imgObjNum = 1
669 1 {
670 file.import.data = file:current:uid
671 file.treatIdAsReference = 1
672 file.width.field = imagewidth
673
674 layoutKey = {$styles.content.imgtext.layoutKey}
675 layout {
676 default {
677 element = <img src="###SRC###" width="###WIDTH###" height="###HEIGHT###" ###PARAMS######ALTPARAMS######BORDER######SELFCLOSINGTAGSLASH###>
678 }
679 srcset {
680 element = <img src="###SRC###" srcset="###SOURCECOLLECTION###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
681 source = |*|###SRC### ###SRCSETCANDIDATE###,|*|###SRC### ###SRCSETCANDIDATE###
682 }
683 picture {
684 element = <picture>###SOURCECOLLECTION###<img src="###SRC###"###PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###></picture>
685 source = <source src="###SRC###" media="###MEDIAQUERY###"###SELFCLOSINGTAGSLASH###>
686 }
687 data {
688 element = <img src="###SRC###"###SOURCECOLLECTION######PARAMS######ALTPARAMS######SELFCLOSINGTAGSLASH###>
689 source = data-###DATAKEY###="###SRC###"
690 source.noTrimWrap = ; ;;
691 source.noTrimWrap.splitChar = ;
692 }
693 }
694 # Default sourceCollection as an example
695 # Please write your own sourceCollection (highly recommended)
696 sourceCollection {
697 small {
698 width = 200
699
700 srcsetCandidate = 600w
701 mediaQuery = (max-device-width: 600px)
702 dataKey = small
703 }
704 smallRetina {
705 if {
706 value = {$styles.content.imgtext.layoutKey}
707 equals = default
708 negate = 1
709 }
710
711 width = 200
712 pixelDensity = 2
713
714 srcsetCandidate = 600w 2x
715 mediaQuery = (max-device-width: 600px) AND (min-resolution: 192dpi)
716 dataKey = smallRetina
717 }
718 }
719
720 imageLinkWrap = 1
721 imageLinkWrap {
722 bodyTag = <body style="margin:0; background:#fff;">
723 wrap = <a href="javascript:close();"> | </a>
724 width = {$styles.content.imgtext.linkWrap.width}
725 height = {$styles.content.imgtext.linkWrap.height}
726 effects = {$styles.content.imgtext.linkWrap.effects}
727
728 JSwindow = 1
729 JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
730 JSwindow.if.isFalse = {$styles.content.imgtext.linkWrap.lightboxEnabled}
731
732 directImageLink = {$styles.content.imgtext.linkWrap.lightboxEnabled}
733
734 enable.field = image_zoom
735 enable.ifEmpty.typolink.parameter.data = file:current:link
736 enable.ifEmpty.typolink.returnLast = url
737
738 typolink.parameter.data = file:current:link
739
740 typolink.target < lib.parseTarget
741 typolink.target =
742 typolink.target.override = {$styles.content.links.target}
743
744 typolink.extTarget < lib.parseTarget
745 typolink.extTarget =
746 typolink.extTarget.override = {$styles.content.links.extTarget}
747
748 linkParams.ATagParams.dataWrap = class="{$styles.content.imgtext.linkWrap.lightboxCssClass}" rel="{$styles.content.imgtext.linkWrap.lightboxRelAttribute}"
749 }
750
751 altText = TEXT
752 altText {
753 data = file:current:alternative
754 stripHtml = 1
755 }
756
757 titleText < .altText
758 titleText.data = file:current:title
759
760 longdescURL {
761 parameter {
762 field = longdescURL
763 split {
764 token {
765 char = 10
766 }
767 returnKey.data = register : IMAGE_NUM_CURRENT
768 }
769 }
770 }
771
772 emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
773 titleInLink = {$styles.content.imgtext.titleInLink}
774 titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
775 }
776
777 textPos.field = imageorient
778 maxW = {$styles.content.imgtext.maxW}
779 maxW.override.data = register:maxImageWidth
780 maxWInText = {$styles.content.imgtext.maxWInText}
781 maxWInText.override.data = register:maxImageWidthInText
782
783 equalH.field = imageheight
784
785 image_compression.field = image_compression
786 image_effects.field = image_effects
787
788 noRows.field = image_noRows
789
790 cols.field = imagecols
791 border.field = imageborder
792
793 caption {
794 1 = COA
795 1 {
796 1 = TEXT
797 1 {
798 data = file:current:description
799 required = 1
800 parseFunc =< lib.parseFunc
801 br = 1
802 }
803 }
804 }
805
806 captionAlign.field = imagecaption_position
807
808 // This needs to be set to TRUE because otherwise render_textpic will
809 // render a global caption which we do not have.
810 imageTextSplit = 1
811
812 borderThick = {$styles.content.imgtext.borderThick}
813 borderClass = {$styles.content.imgtext.borderClass}
814 colSpace = {$styles.content.imgtext.colSpace}
815 textMargin = {$styles.content.imgtext.textMargin}
816
817 borderSpace = {$styles.content.imgtext.borderSpace}
818 separateRows = {$styles.content.imgtext.separateRows}
819 addClasses =
820 addClassesCol =
821 addClassesCol.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
822 addClassesCol.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
823 addClassesCol.override.if {
824 isGreaterThan.field = imagecols
825 value = 1
826 }
827
828 addClassesImage = csc-textpic-first |*| |*| csc-textpic-last
829
830 #
831 imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
832 imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
833
834 # if noRows is set, wrap around each column:
835 imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
836
837 layout = CASE
838 layout {
839 key.field = imageorient
840 # above-center
841 default = TEXT
842 default {
843 value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
844 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
845 override {
846 if {
847 value = default
848 equals = {$styles.content.imgtext.layoutKey}
849 negate = 1
850 }
851 }
852 }
853 # above-right
854 1 = TEXT
855 1 {
856 value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
857 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
858 override {
859 if {
860 value = default
861 equals = {$styles.content.imgtext.layoutKey}
862 negate = 1
863 }
864 }
865 }
866 # above-left
867 2 = TEXT
868 2 {
869 value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
870 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
871 override {
872 if {
873 value = default
874 equals = {$styles.content.imgtext.layoutKey}
875 negate = 1
876 }
877 }
878 }
879 # below-center
880 8 = TEXT
881 8 {
882 value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
883 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
884 override {
885 if {
886 value = default
887 equals = {$styles.content.imgtext.layoutKey}
888 negate = 1
889 }
890 }
891 }
892 # below-right
893 9 = TEXT
894 9 {
895 value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
896 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
897 override {
898 if {
899 value = default
900 equals = {$styles.content.imgtext.layoutKey}
901 negate = 1
902 }
903 }
904 }
905 # below-left
906 10 = TEXT
907 10 {
908 value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
909 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
910 override {
911 if {
912 value = default
913 equals = {$styles.content.imgtext.layoutKey}
914 negate = 1
915 }
916 }
917 }
918 # intext-right
919 17 = TEXT
920 17 {
921 value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
922 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
923 override {
924 if {
925 value = default
926 equals = {$styles.content.imgtext.layoutKey}
927 negate = 1
928 }
929 }
930 }
931 # intext-left
932 18 = TEXT
933 18 {
934 value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
935 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
936 override {
937 if {
938 value = default
939 equals = {$styles.content.imgtext.layoutKey}
940 negate = 1
941 }
942 }
943 }
944 # intext-right-nowrap
945 25 = TEXT
946 25 {
947 value = <div class="csc-textpic csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
948 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
949 override {
950 if {
951 value = default
952 equals = {$styles.content.imgtext.layoutKey}
953 negate = 1
954 }
955 }
956 }
957 # intext-left-nowrap
958 26 = TEXT
959 26 {
960 value = <div class="csc-textpic csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
961 override = <div class="csc-textpic csc-textpic-responsive csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
962 override {
963 if {
964 value = default
965 equals = {$styles.content.imgtext.layoutKey}
966 negate = 1
967 }
968 }
969 }
970 }
971
972 rendering {
973 # Single image - No caption
974 singleNoCaption {
975 # Choose another rendering for special edge cases
976 fallbackRendering = COA
977 fallbackRendering {
978 # Single image - Caption
979 10 = TEXT
980 10 {
981 if {
982 isTrue.data = file:current:description
983 value = 1
984 equals.data = register:imageCount
985 }
986 value = singleCaption
987 }
988
989 # Multiple images and split caption
990 20 = TEXT
991 20 {
992 if {
993 value = 1
994 isGreaterThan.data = register:imageCount
995 isTrue.if.isFalse.data = register:renderGlobalCaption
996 isTrue.data = register:allImageCaptions
997 }
998 value = splitCaption
999 }
1000
1001 # Multiple images and no caption at all
1002 40 = TEXT
1003 40 {
1004 if {
1005 value = 1
1006 isGreaterThan.data = register:imageCount
1007 isFalse.data = register:allImageCaptions
1008 }
1009 value = noCaption
1010 }
1011 }
1012 allStdWrap {
1013 dataWrap = <div class="csc-textpic-imagewrap"> | </div>
1014 dataWrap {
1015 override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
1016 override {
1017 if {
1018 value = html5
1019 equals.data = TSFE:config|config|doctype
1020 }
1021 }
1022 }
1023 innerWrap.cObject = CASE
1024 innerWrap.cObject {
1025 key.field = imageorient
1026 # above-center
1027 0 = TEXT
1028 0.value = <div class="csc-textpic-center-outer"><div class="csc-textpic-center-inner"> | </div></div>
1029 # below-center
1030 8 < .0
1031 }
1032 }
1033 singleStdWrap {
1034 wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
1035 wrap {
1036 override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
1037 override {
1038 if {
1039 value = html5
1040 equals.data = TSFE:config|config|doctype
1041 }
1042 }
1043 }
1044 }
1045 rowStdWrap.wrap = |
1046 noRowsStdWrap.wrap = |
1047 lastRowStdWrap.wrap = |
1048 columnStdWrap.wrap = |
1049 imgTagStdWrap.wrap = |
1050 editIconsStdWrap.wrap = <div> | </div>
1051 caption.wrap = |
1052 }
1053 noCaption {
1054 # Multiple images and no caption at all
1055 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1056 allStdWrap {
1057 dataWrap = <div class="csc-textpic-imagewrap"> | </div>
1058 dataWrap {
1059 override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
1060 override {
1061 if {
1062 value = html5
1063 equals.data = TSFE:config|config|doctype
1064 }
1065 }
1066 }
1067 }
1068 singleStdWrap {
1069 wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
1070 wrap {
1071 override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
1072 }
1073 }
1074 rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
1075 noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
1076 lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
1077 columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
1078 }
1079 singleCaption {
1080 # Just one image with a caption
1081 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1082 singleStdWrap {
1083 wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
1084 wrap {
1085 override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
1086 override {
1087 if {
1088 value = html5
1089 equals.data = TSFE:config|config|doctype
1090 }
1091 }
1092 }
1093 }
1094 caption {
1095 required = 1
1096 wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
1097 wrap {
1098 override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
1099 override {
1100 if {
1101 value = html5
1102 equals.data = TSFE:config|config|doctype
1103 }
1104 }
1105 }
1106 }
1107 }
1108 splitCaption {
1109 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1110 singleStdWrap {
1111 wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
1112 wrap {
1113 override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
1114 override {
1115 if {
1116 value = html5
1117 equals.data = TSFE:config|config|doctype
1118 }
1119 }
1120 }
1121 }
1122 rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
1123 noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
1124 lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
1125 columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
1126 caption {
1127 required = 1
1128 wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
1129 wrap {
1130 override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
1131 override {
1132 if {
1133 value = html5
1134 equals.data = TSFE:config|config|doctype
1135 }
1136 }
1137 }
1138 }
1139 }
1140 }
1141 renderMethod = singleNoCaption
1142
1143 editIcons = tt_content : image [imageorient|imagewidth|imageheight],[imagecols|image_noRows|imageborder],[image_zoom],[image_compression|image_effects|image_frames],[imagecaption_position]
1144 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
1145
1146 caption.editIcons = tt_content : imagecaption_position
1147 caption.editIcons.beforeLastTag=1
1148 caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption_position
1149
1150 stdWrap.prefixComment = 2 | Image block:
1151 }
1152
1153 # *****************
1154 # CType: textpic
1155 # *****************
1156 tt_content.textpic = COA
1157 tt_content.textpic {
1158 10 = COA
1159 10.if.value = 25
1160 10.if.isLessThan.field = imageorient
1161 10.10 = < lib.stdheader
1162
1163 20 = < tt_content.image.20
1164 20 {
1165 text.10 = COA
1166 text.10 {
1167 if.value = 24
1168 if.isGreaterThan.field = imageorient
1169 10 = < lib.stdheader
1170 10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
1171 }
1172 text.20 = < tt_content.text.20
1173 text.wrap = <div class="csc-textpic-text"> | </div>
1174 }
1175 }
1176
1177
1178
1179 # *****************
1180 # CType: bullet
1181 # *****************
1182 tt_content.bullets = COA
1183 tt_content.bullets {
1184 10 = < lib.stdheader
1185
1186 20 = TEXT
1187 20 {
1188 field = bodytext
1189 trim = 1
1190 split{
1191 token.char = 10
1192 cObjNum = |*|1|| 2|*|
1193 1.current = 1
1194 1.parseFunc =< lib.parseFunc
1195 1.wrap = <li class="odd">|</li>
1196
1197 2.current = 1
1198 2.parseFunc =< lib.parseFunc
1199 2.wrap = <li class="even">|</li>
1200 }
1201 dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
1202 editIcons = tt_content: bodytext, [layout]
1203 editIcons.beforeLastTag = 1
1204 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xlf:eIcon.bullets
1205
1206 prefixComment = 2 | Bullet list:
1207 }
1208 }
1209
1210
1211 # *****************
1212 # CType: uploads
1213 # *****************
1214 tt_content.uploads = COA
1215 tt_content.uploads {
1216 10 = < lib.stdheader
1217
1218 20 = FILES
1219 20 {
1220 # get from file references:
1221 references {
1222 table = tt_content
1223 fieldName = media
1224 }
1225
1226 collections.field = file_collections
1227
1228 # get from path (backwards compatibility, contains strings like "fileadmin/user_uploads/")
1229 folders.field = select_key
1230
1231 sorting.field = filelink_sorting
1232
1233 # render the files
1234 renderObj = COA
1235 renderObj {
1236 10 = IMAGE
1237 10 {
1238 file.import.data = file:current:originalUid // file:current:uid
1239 file.width = 150
1240 stdWrap {
1241 if.value = 1
1242 if.isGreaterThan.field = layout
1243
1244 typolink {
1245 parameter.data = file:current:originalUid // file:current:uid
1246 parameter.wrap = file:|
1247 fileTarget < lib.parseTarget
1248 fileTarget =
1249 fileTarget.override = {$styles.content.uploads.target}
1250 fileTarget.override.override.field = target
1251 removePrependedNumbers = 1
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: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml:search.emptySearch
1716 10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
1717 }
1718
1719 next = TEXT
1720 next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
1721
1722 prev = TEXT
1723 prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml: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/pi1/locallang.xml:search.searchWord
1743 10.type = sword=input
1744 20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
1745 20.type = scols=select
1746 20.valueArray {
1747 10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
1748 10.value = pages.title-subtitle-keywords-description:tt_content.header
1749 20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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 andWhere {
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/pi1/locallang.xml: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.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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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/pi1/locallang.xml: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; padding-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 )
2250