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