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