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