[BUGFIX] Wrong placement of image caption in text with image
[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 split.token.char = 10
787 split.token.if.isPositive = {$styles.content.imgtext.imageTextSplit} + {$styles.content.imgtext.captionSplit}
788 split.returnKey.data = register : IMAGE_NUM_CURRENT
789 }
790 stdWrap {
791 required = 1
792 typolink {
793 parameter {
794 field = longdescURL
795 trim = 1
796 split {
797 token {
798 char = 10
799 }
800 returnKey.data = register : IMAGE_NUM_CURRENT
801 }
802 if {
803 value = html5
804 equals.data = TSFE:config|config|doctype
805 }
806 }
807 ATagParams {
808 dataWrap = id="csc-longdesc-{field:uid}-{register:IMAGE_NUM_CURRENT}"
809 }
810 target = {$styles.content.links.target}
811 extTarget = {$styles.content.links.extTarget}
812 }
813 }
814 }
815 }
816
817 # captionSplit is deprecated, use imageTextSplit instead
818 captionSplit = {$styles.content.imgtext.captionSplit}
819 captionAlign.field = imagecaption_position
820 # caption/alttext/title/longdescURL splitting
821 imageTextSplit = {$styles.content.imgtext.imageTextSplit}
822
823 borderThick = {$styles.content.imgtext.borderThick}
824 borderClass = {$styles.content.imgtext.borderClass}
825 colSpace = {$styles.content.imgtext.colSpace}
826 textMargin = {$styles.content.imgtext.textMargin}
827
828 borderSpace = {$styles.content.imgtext.borderSpace}
829 separateRows = {$styles.content.imgtext.separateRows}
830 addClasses =
831 addClassesCol =
832 addClassesCol.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
833 addClassesCol.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
834 addClassesCol.override.if {
835 isGreaterThan.field = imagecols
836 value = 1
837 }
838
839 addClassesImage = csc-textpic-first |*| |*| csc-textpic-last
840
841 #
842 imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
843 imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
844
845 # if noRows is set, wrap around each column:
846 imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
847
848 layout = CASE
849 layout {
850 key.field = imageorient
851 # above-center
852 default = TEXT
853 default.value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
854 # above-right
855 1 = TEXT
856 1.value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
857 # above-left
858 2 = TEXT
859 2.value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div>
860 # below-center
861 8 = TEXT
862 8.value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
863 # below-right
864 9 = TEXT
865 9.value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
866 # below-left
867 10 = TEXT
868 10.value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div>
869 # intext-right
870 17 = TEXT
871 17.value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
872 # intext-left
873 18 = TEXT
874 18.value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
875 # intext-right-nowrap
876 25 = TEXT
877 25.value = <div class="csc-textpic csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES######TEXT###</div>
878 # intext-left-nowrap
879 26 = TEXT
880 26.value = <div class="csc-textpic csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES######TEXT###</div>
881 }
882
883 rendering {
884 # Single image - No caption
885 singleNoCaption {
886 # Choose another rendering for special edge cases
887 fallbackRendering = COA
888 fallbackRendering {
889 # Single image - Caption
890 10 = TEXT
891 10 {
892 if {
893 isTrue.field = imagecaption
894 value = 1
895 equals.data = register:imageCount
896 }
897 value = singleCaption
898 }
899
900 # Multiple images and split caption
901 20 = TEXT
902 20 {
903 if {
904 value = 1
905 isGreaterThan.data = register:imageCount
906 isTrue.if.isFalse.data = register:renderGlobalCaption
907 isTrue.field = imagecaption
908 }
909 value = splitCaption
910 }
911
912 # Multiple images and one global caption
913 30 = TEXT
914 30 {
915 if {
916 value = 1
917 isGreaterThan.data = register:imageCount
918 isTrue.if.isTrue.data = register:renderGlobalCaption
919 isTrue.field = imagecaption
920 }
921 value = globalCaption
922 }
923
924 # Multiple images and no caption at all
925 40 = TEXT
926 40 {
927 if {
928 value = 1
929 isGreaterThan.data = register:imageCount
930 isFalse.field = imagecaption
931 }
932 value = noCaption
933 }
934 }
935 allStdWrap {
936 dataWrap = <div class="csc-textpic-imagewrap"> | </div>
937 dataWrap {
938 override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
939 override {
940 if {
941 value = html5
942 equals.data = TSFE:config|config|doctype
943 }
944 }
945 }
946 innerWrap.cObject = CASE
947 innerWrap.cObject {
948 key.field = imageorient
949 # above-center
950 0 = TEXT
951 0.value = <div class="csc-textpic-center-outer"><div class="csc-textpic-center-inner"> | </div></div>
952 # below-center
953 8 < .0
954 }
955 }
956 singleStdWrap {
957 wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
958 wrap {
959 override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
960 override {
961 if {
962 value = html5
963 equals.data = TSFE:config|config|doctype
964 }
965 }
966 }
967 }
968 rowStdWrap.wrap = |
969 noRowsStdWrap.wrap = |
970 lastRowStdWrap.wrap = |
971 columnStdWrap.wrap = |
972 imgTagStdWrap.wrap = |
973 editIconsStdWrap.wrap = <div> | </div>
974 caption.wrap = |
975 }
976 noCaption {
977 # Multiple images and no caption at all
978 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
979 allStdWrap {
980 dataWrap = <div class="csc-textpic-imagewrap"> | </div>
981 dataWrap {
982 override = <div class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | </div>
983 override {
984 if {
985 value = html5
986 equals.data = TSFE:config|config|doctype
987 }
988 }
989 }
990 }
991 singleStdWrap {
992 wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
993 wrap {
994 override = <figure class="csc-textpic-image###CLASSES###"> | </figure>
995 }
996 }
997 rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
998 noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
999 lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
1000 columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
1001 }
1002 singleCaption {
1003 # Just one image with a caption
1004 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1005 singleStdWrap {
1006 wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
1007 wrap {
1008 override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
1009 override {
1010 if {
1011 value = html5
1012 equals.data = TSFE:config|config|doctype
1013 }
1014 }
1015 }
1016 }
1017 caption {
1018 required = 1
1019 wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
1020 wrap {
1021 override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
1022 override {
1023 if {
1024 value = html5
1025 equals.data = TSFE:config|config|doctype
1026 }
1027 }
1028 }
1029 }
1030 }
1031 splitCaption {
1032 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1033 singleStdWrap {
1034 wrap = <div class="csc-textpic-image###CLASSES###"><table>###CAPTION###<tbody><tr><td> | </td></tr></tbody></table></div>
1035 wrap {
1036 override = <figure class="csc-textpic-image###CLASSES###">|###CAPTION###</figure>
1037 override {
1038 if {
1039 value = html5
1040 equals.data = TSFE:config|config|doctype
1041 }
1042 }
1043 }
1044 }
1045 rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
1046 noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
1047 lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
1048 columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
1049 caption {
1050 required = 1
1051 wrap = <caption class="csc-textpic-caption###CLASSES###"> | </caption>
1052 wrap {
1053 override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
1054 override {
1055 if {
1056 value = html5
1057 equals.data = TSFE:config|config|doctype
1058 }
1059 }
1060 }
1061 }
1062 }
1063 globalCaption {
1064 # Just one image without a caption
1065 fallbackRendering < tt_content.image.20.rendering.singleNoCaption.fallbackRendering.10
1066 allStdWrap {
1067 dataWrap = <div class="csc-textpic-imagewrap"><table>###CAPTION###<tbody> | </tbody></table></div>
1068 dataWrap {
1069 override = <figure class="csc-textpic-imagewrap" data-csc-images="{register:imageCount}" data-csc-cols="{field:imagecols}"> | ###CAPTION###</figure>
1070 override {
1071 if {
1072 value = html5
1073 equals.data = TSFE:config|config|doctype
1074 }
1075 }
1076 }
1077 }
1078 singleStdWrap {
1079 wrap = <div class="csc-textpic-image###CLASSES###"> | </div>
1080 wrap {
1081 override = <div class="csc-textpic-image###CLASSES###"> | </div>
1082 }
1083 }
1084 rowStdWrap.wrap = <div class="csc-textpic-imagerow"> | </div>
1085 noRowsStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-none"> | </div>
1086 lastRowStdWrap.wrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
1087 columnStdWrap.wrap = <div class="csc-textpic-imagecolumn###CLASSES###"> | </div>
1088 caption {
1089 required = 1
1090 wrap = <caption class="csc-textpic-caption"> | </caption>
1091 wrap {
1092 override = <figcaption class="csc-textpic-caption###CLASSES###"> | </figcaption>
1093 override {
1094 if {
1095 value = html5
1096 equals.data = TSFE:config|config|doctype
1097 }
1098 }
1099 }
1100 }
1101 }
1102 }
1103 renderMethod = singleNoCaption
1104
1105 editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|image_noRows|imageborder],[image_link|image_zoom],[image_compression|image_effects|image_frames],imagecaption[imagecaption_position]
1106 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
1107
1108 caption.editIcons = tt_content : imagecaption[imagecaption_position]
1109 caption.editIcons.beforeLastTag=1
1110 caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption
1111
1112 stdWrap.prefixComment = 2 | Image block:
1113 }
1114
1115 # *****************
1116 # CType: textpic
1117 # *****************
1118 tt_content.textpic = COA
1119 tt_content.textpic {
1120 10 = COA
1121 10.if.value = 25
1122 10.if.isLessThan.field = imageorient
1123 10.10 = < lib.stdheader
1124
1125 20 = < tt_content.image.20
1126 20 {
1127 text.10 = COA
1128 text.10 {
1129 if.value = 24
1130 if.isGreaterThan.field = imageorient
1131 10 = < lib.stdheader
1132 10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
1133 }
1134 text.20 = < tt_content.text.20
1135 text.wrap = <div class="csc-textpic-text"> | </div>
1136 }
1137 }
1138
1139
1140
1141 # *****************
1142 # CType: bullet
1143 # *****************
1144 tt_content.bullets = COA
1145 tt_content.bullets {
1146 10 = < lib.stdheader
1147
1148 20 = TEXT
1149 20 {
1150 field = bodytext
1151 trim = 1
1152 split{
1153 token.char = 10
1154 cObjNum = |*|1|| 2|*|
1155 1.current = 1
1156 1.parseFunc =< lib.parseFunc
1157 1.wrap = <li class="odd">|</li>
1158
1159 2.current = 1
1160 2.parseFunc =< lib.parseFunc
1161 2.wrap = <li class="even">|</li>
1162 }
1163 dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
1164 editIcons = tt_content: bodytext, [layout]
1165 editIcons.beforeLastTag = 1
1166 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.php:eIcon.bullets
1167
1168 prefixComment = 2 | Bullet list:
1169 }
1170 }
1171
1172
1173 # *****************
1174 # CType: uploads
1175 # *****************
1176 tt_content.uploads = COA
1177 tt_content.uploads {
1178 10 = < lib.stdheader
1179
1180 20 = FILES
1181 20 {
1182 # get from file references:
1183 references {
1184 table = tt_content
1185 fieldName = media
1186 }
1187
1188 collections.field = file_collections
1189
1190 # get from path (backwards compatibility, contains strings like "fileadmin/user_uploads/")
1191 folders.field = select_key
1192
1193 sorting.field = filelink_sorting
1194
1195 # render the files
1196 renderObj = COA
1197 renderObj {
1198 10 = IMAGE
1199 10 {
1200 file.import.data = file:current:originalUid // file:current:uid
1201 file.width = 150
1202 stdWrap {
1203 if.value = 1
1204 if.isGreaterThan.field = layout
1205
1206 typolink {
1207 parameter.data = file:current:originalUid // file:current:uid
1208 parameter.wrap = file:|
1209 fileTarget < lib.parseTarget
1210 fileTarget =
1211 fileTarget.override = {$styles.content.uploads.target}
1212 fileTarget.override.override.field = target
1213 removePrependedNumbers = 1
1214
1215 /*
1216 jumpurl = {$styles.content.uploads.jumpurl}
1217 jumpurl {
1218 secure = {$styles.content.uploads.jumpurl_secure}
1219 secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
1220 }
1221 */
1222 }
1223 }
1224 }
1225
1226 # icon
1227 15 = IMAGE
1228 15 {
1229 file.import = typo3/gfx/fileicons/
1230 file.import.data = file:current:extension
1231 file.import.case = lower
1232 file.import.wrap = |.gif
1233 stdWrap {
1234 if {
1235 value = 0
1236 isGreaterThan.field = layout
1237
1238 # only show the icon if we don't have a thumbnail:
1239 isFalse.cObject = IMG_RESOURCE
1240 isFalse.cObject.file < tt_content.uploads.20.renderObj.10.file
1241 isFalse.cObject.stdWrap.if < tt_content.uploads.20.renderObj.10.stdWrap.if
1242 }
1243
1244 typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
1245 }
1246 }
1247
1248 # filename
1249 20 = TEXT
1250 20 {
1251 data = file:current:name
1252 htmlSpecialChars = 1
1253 required = 1
1254
1255 replacement {
1256 # equivalent to former useSpacesInLinkText = 0; remove using > to disable it
1257 10 {
1258 search = _
1259 replace.char = 32
1260 }
1261
1262 # equivalent to former stripFileExtensionFromLinkText = 0; move "_20" to "20" to enable it. Disabled by default.
1263 _20 {
1264 search = /(.*)(\..*)/
1265 replace = \1
1266 useRegExp = 1
1267 }
1268 }
1269
1270 typolink < tt_content.uploads.20.renderObj.10.stdWrap.typolink
1271
1272 wrap = <span class="csc-uploads-fileName">|</span>
1273 }
1274
1275 # description
1276 30 = TEXT
1277 30 {
1278 data = file:current:description
1279 htmlSpecialChars = 1
1280 wrap = <span class="csc-uploads-description">|</span>
1281
1282 required = 1
1283 }
1284
1285 # file size
1286 40 = TEXT
1287 40 {
1288 if.isTrue.field = filelink_size
1289 data = file:current:size
1290 wrap = <span class="csc-uploads-fileSize">|</span>
1291 bytes = 1
1292 bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
1293 }
1294
1295 # wrap of each listed file with odd/even class
1296 wrap.cObject = COA
1297 wrap.cObject {
1298 10 = LOAD_REGISTER
1299 10 {
1300 oddEvenClass = li-odd li-first |*| li-even || li-odd
1301 elementClass = csc-uploads-element csc-uploads-element-{file:current:extension}
1302 elementClass.insertData = 1
1303 }
1304
1305 20 = TEXT
1306 20 {
1307 value = <li class="{register:oddEvenClass} {register:elementClass}">|</li>
1308 insertData = 1
1309 }
1310 30 = RESTORE_REGISTER
1311 }
1312 }
1313
1314 # wrap around whole content element with <ul> and editIcons
1315 stdWrap {
1316 editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size
1317 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.filelist
1318 prefixComment = 2 | File list:
1319 dataWrap = <ul class="csc-uploads csc-uploads-{field:layout}">|</ul>
1320 }
1321 }
1322 }
1323
1324
1325
1326 # *****************
1327 # CType: table
1328 # *****************
1329 # Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
1330 tt_content.table = COA
1331 tt_content.table {
1332 10 = < lib.stdheader
1333
1334 20 = USER
1335 20.userFunc = tx_cssstyledcontent_pi1->render_table
1336 20.field = bodytext
1337
1338 20.color {
1339 default =
1340 1 = {$styles.content.table.backgroundColor.1}
1341 2 = {$styles.content.table.backgroundColor.2}
1342 200 =
1343 240 = {$styles.content.table.backgroundColor.240}
1344 241 = {$styles.content.table.backgroundColor.241}
1345 242 = {$styles.content.table.backgroundColor.242}
1346 243 = {$styles.content.table.backgroundColor.243}
1347 244 = {$styles.content.table.backgroundColor.244}
1348 }
1349 20.tableParams_0 {
1350 border =
1351 cellpadding =
1352 cellspacing =
1353 }
1354 20.tableParams_1 {
1355 border =
1356 cellpadding =
1357 cellspacing =
1358 }
1359 20.tableParams_2 {
1360 border =
1361 cellpadding =
1362 cellspacing =
1363 }
1364 20.tableParams_3 {
1365 border =
1366 cellpadding =
1367 cellspacing =
1368 }
1369 20.innerStdWrap.wrap = |
1370 20.innerStdWrap.parseFunc = < lib.parseFunc
1371
1372 20.stdWrap {
1373 editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
1374 editIcons.beforeLastTag = 1
1375 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.table
1376
1377 prefixComment = 2 | Table:
1378 }
1379 }
1380
1381 # ******************
1382 # CType: multimedia
1383 # ******************
1384 tt_content.multimedia = COA
1385 tt_content.multimedia {
1386 10 = < lib.stdheader
1387
1388 20 = MULTIMEDIA
1389 20.file.field = multimedia
1390 20.file.wrap = uploads/media/
1391 20.file.listNum = 0
1392 20.params.field = bodytext
1393
1394 20.stdWrap {
1395 editIcons = tt_content: multimedia, bodytext
1396 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
1397
1398 prefixComment = 2 | Multimedia element:
1399 }
1400 }
1401
1402 # *****************
1403 # CType: swfobject
1404 # *****************
1405 tt_content.swfobject = COA
1406 tt_content.swfobject {
1407 10 = < lib.stdheader
1408
1409 20 = SWFOBJECT
1410 20 {
1411 file =
1412 width =
1413 height =
1414
1415 flexParams.field = pi_flexform
1416
1417 alternativeContent.field = bodytext
1418
1419 layout = ###SWFOBJECT###
1420
1421 video {
1422 player = {$styles.content.media.videoPlayer}
1423
1424 defaultWidth = {$styles.content.media.defaultVideoWidth}
1425 defaultHeight = {$styles.content.media.defaultVideoHeight}
1426
1427 default {
1428 params.quality = high
1429 params.menu = false
1430 params.allowScriptAccess = sameDomain
1431 params.allowFullScreen = true
1432 }
1433 mapping {
1434
1435 }
1436 }
1437
1438 audio {
1439 player = {$styles.content.media.audioPlayer}
1440
1441 defaultWidth = {$styles.content.media.defaultAudioWidth}
1442 defaultHeight = {$styles.content.media.defaultAudioHeight}
1443
1444 default {
1445 params.quality = high
1446 params.allowScriptAccess = sameDomain
1447 params.menu = false
1448 }
1449 mapping {
1450 flashvars.file = soundFile
1451 }
1452 }
1453
1454 }
1455 20.stdWrap {
1456 editIcons = tt_content: multimedia, imagewidth, imageheight, pi_flexform, bodytext
1457 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
1458
1459 prefixComment = 2 | SWFobject element:
1460 }
1461 }
1462
1463 # *****************
1464 # CType: qtobject
1465 # *****************
1466 tt_content.qtobject = COA
1467 tt_content.qtobject {
1468 10 = < lib.stdheader
1469
1470 20 = QTOBJECT
1471 20 {
1472 file =
1473 width =
1474 height =
1475
1476 flexParams.field = pi_flexform
1477
1478 alternativeContent.field = bodytext
1479
1480 layout = ###QTOBJECT###
1481
1482 video {
1483 player = {$styles.content.media.videoPlayer}
1484
1485 defaultWidth = {$styles.content.media.defaultVideoWidth}
1486 defaultHeight = {$styles.content.media.defaultVideoHeight}
1487
1488 default {
1489 params.quality = high
1490 params.menu = false
1491 params.allowScriptAccess = sameDomain
1492 params.allowFullScreen = true
1493 }
1494 mapping {
1495
1496 }
1497 }
1498
1499 audio {
1500 player = {$styles.content.media.audioPlayer}
1501
1502 defaultWidth = {$styles.content.media.defaultAudioWidth}
1503 defaultHeight = {$styles.content.media.defaultAudioHeight}
1504
1505 default {
1506 params.quality = high
1507 params.allowScriptAccess = sameDomain
1508 params.menu = false
1509 }
1510 mapping {
1511 flashvars.file = soundFile
1512 }
1513 }
1514 }
1515 20.stdWrap {
1516 editIcons = tt_content: multimedia, imagewidth, imageheight, pi_flexform, bodytext
1517 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
1518
1519 prefixComment = 2 | QTobject element:
1520 }
1521 }
1522
1523 # *****************
1524 # CType: media
1525 # *****************
1526 tt_content.media = COA
1527 tt_content.media {
1528 10 = < lib.stdheader
1529
1530 20 = MEDIA
1531 20 {
1532
1533 flexParams.field = pi_flexform
1534 alternativeContent < tt_content.text.20
1535 alternativeContent.field = bodytext
1536
1537 type = video
1538 renderType = auto
1539 allowEmptyUrl = 0
1540 forcePlayer = 1
1541
1542 fileExtHandler {
1543 default = MEDIA
1544 avi = MEDIA
1545 asf = MEDIA
1546 class = MEDIA
1547 wmv = MEDIA
1548 mp3 = SWF
1549 mp4 = SWF
1550 m4v = SWF
1551 swa = SWF
1552 flv = SWF
1553 swf = SWF
1554 mov = QT
1555 m4v = QT
1556 m4a = QT
1557 }
1558
1559 mimeConf.swfobject < tt_content.swfobject.20
1560 mimeConf.qtobject < tt_content.qtobject.20
1561 mimeConf.flowplayer < tt_content.swfobject.20
1562 mimeConf.flowplayer.audio.player = {$styles.content.media.flowPlayer}
1563 mimeConf.flowplayer.video.player = {$styles.content.media.flowPlayer}
1564
1565 }
1566 20.stdWrap {
1567 editIcons = tt_content: pi_flexform, bodytext
1568 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
1569
1570 prefixComment = 2 | Media element:
1571 }
1572 }
1573
1574 # ******************
1575 # CType: mailform
1576 # ******************
1577 tt_content.mailform = COA
1578 tt_content.mailform.10 = < lib.stdheader
1579 tt_content.mailform.20 = FORM
1580 tt_content.mailform.20 {
1581 accessibility = 1
1582 noWrapAttr=1
1583 formName = mailform
1584 dontMd5FieldNames = 1
1585 layout = <div class="csc-mailform-field">###LABEL### ###FIELD###</div>
1586 labelWrap.wrap = |
1587 commentWrap.wrap = |
1588 radioWrap.wrap = |<br />
1589 radioWrap.accessibilityWrap = <fieldset###RADIO_FIELD_ID###><legend>###RADIO_GROUP_LABEL###</legend>|</fieldset>
1590 REQ = 1
1591 REQ.labelWrap.wrap = |
1592 COMMENT.layout = <div class="csc-mailform-label">###LABEL###</div>
1593 RADIO.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-radio">###FIELD###</span></div>
1594 LABEL.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-label">###FIELD###</span></div>
1595 target < lib.parseTarget
1596 target =
1597 target.override = {$styles.content.mailform.target}
1598 goodMess = {$styles.content.mailform.goodMess}
1599 badMess = {$styles.content.mailform.badMess}
1600 redirect.field = pages
1601 redirect.listNum = 0
1602 recipient.field = subheader
1603 data.field = bodytext
1604 locationData = 1
1605 hiddenFields.stdWrap.wrap = <div style="display:none;">|</div>
1606
1607 params.radio = class="csc-mailform-radio"
1608 params.check = class="csc-mailform-check"
1609 params.submit = class="csc-mailform-submit"
1610
1611 stdWrap.wrap = <fieldset class="csc-mailform"> | </fieldset>
1612 stdWrap {
1613 editIcons = tt_content: bodytext, pages, subheader
1614 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.form
1615
1616 prefixComment = 2 | Mail form inserted:
1617 }
1618 }
1619
1620
1621 # ******************
1622 # CType: search
1623 # ******************
1624 tt_content.search = COA
1625 tt_content.search.10 = < lib.stdheader
1626 # Result:
1627 tt_content.search.20 = SEARCHRESULT
1628 tt_content.search.20 {
1629 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
1630 languageField.tt_content = sys_language_uid
1631 renderObj = COA
1632 renderObj {
1633
1634 10 = TEXT
1635 10.field = pages_title
1636 10.htmlSpecialChars = 1
1637 10.typolink {
1638 parameter.field = uid
1639 target < lib.parseTarget
1640 target =
1641 target.override = {$styles.content.searchresult.resultTarget}
1642 additionalParams.data = register:SWORD_PARAMS
1643 additionalParams.required = 1
1644 additionalParams.wrap = &no_cache=1
1645 }
1646 10.htmlSpecialChars = 1
1647 10.wrap = <h3 class="csc-searchResultHeader">|</h3>
1648
1649 20 = COA
1650 20 {
1651 10 = TEXT
1652 10.field = tt_content_bodytext
1653 10.stripHtml = 1
1654 10.htmlSpecialChars = 1
1655 }
1656 20.stdWrap.crop = 200 | ...
1657 20.stdWrap.wrap = <p class="csc-searchResult">|</p>
1658 }
1659
1660 layout = COA
1661 layout {
1662 wrap = <table border="0" cellspacing="0" cellpadding="2" class="csc-searchResultInfo"><tr> | </tr></table> ###RESULT###
1663
1664 10 = TEXT
1665 10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.resultRange
1666 10.wrap = <td class="csc-searchResultRange"><p>|</p></td>
1667
1668 20 = TEXT
1669 20.value = ###PREV###&nbsp;&nbsp;&nbsp;###NEXT###
1670 20.wrap = <td class="csc-searchResultPrevNext"><p>|</p></td>
1671 }
1672
1673 noResultObj = COA
1674 noResultObj {
1675 10 = TEXT
1676 10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.emptySearch
1677 10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
1678 }
1679
1680 next = TEXT
1681 next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
1682
1683 prev = TEXT
1684 prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultPrev
1685
1686 target < lib.parseTarget
1687 target =
1688 target.override = {$styles.content.searchresult.target}
1689
1690 range = 20
1691
1692 stdWrap.prefixComment = 2 | Search result:
1693 }
1694
1695 # Form:
1696 tt_content.search.30 < tt_content.mailform.20
1697 tt_content.search.30 {
1698 goodMess = {$styles.content.searchform.goodMess}
1699 redirect >
1700 recipient >
1701 data >
1702 dataArray {
1703 10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchWord
1704 10.type = sword=input
1705 20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
1706 20.type = scols=select
1707 20.valueArray {
1708 10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
1709 10.value = pages.title-subtitle-keywords-description:tt_content.header
1710 20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.pageContent
1711 20.value = tt_content.header-bodytext-imagecaption
1712 }
1713 30.type = stype=hidden
1714 30.value = L0
1715 40.type = submit=submit
1716 40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchButton
1717 }
1718 type.field = pages
1719 type.listNum = 0
1720 locationData = HTTP_POST_VARS
1721 no_cache = 1
1722
1723 stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-searchform"> | </table>
1724 stdWrap {
1725 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.search
1726
1727 prefixComment = 2 | Search form inserted:
1728 }
1729 }
1730
1731
1732 # ****************
1733 # CType: menu
1734 # ****************
1735 tt_content.menu = COA
1736 tt_content.menu {
1737 10 = < lib.stdheader
1738
1739 20 = CASE
1740 20 {
1741 key.field = menu_type
1742
1743 # "Menu of these pages"
1744 default = HMENU
1745 default {
1746 special = list
1747 special.value.field = pages
1748 stdWrap {
1749 prepend = COA
1750 prepend {
1751 stdWrap {
1752 if.isTrue.field = accessibility_bypass
1753 }
1754 10 = LOAD_REGISTER
1755 10 {
1756 accessibility_bypass_text = TEXT
1757 accessibility_bypass_text {
1758 field = accessibility_bypass_text
1759 }
1760 }
1761 20 = CONTENT
1762 20 {
1763 table = tt_content
1764 select {
1765 pidInList = this
1766 orderBy = sorting
1767 andWhere {
1768 dataWrap = sorting>{field:sorting}
1769 }
1770 languageField = sys_language_uid
1771 max = 1
1772 }
1773 renderObj = TEXT
1774 renderObj {
1775 required = 1
1776 data = LLL:EXT:css_styled_content/pi1/locallang.xml:menu.bypassNavigation
1777 override.data = register:accessibility_bypass_text
1778 trim = 1
1779 htmlSpecialChars = 1
1780 typolink {
1781 parameter {
1782 field = pid
1783 }
1784 section {
1785 field = uid
1786 }
1787 }
1788 wrap = <li class="csc-nav-bypass">|</li>
1789 }
1790 }
1791 30 = RESTORE_REGISTER
1792 }
1793 outerWrap = <ul class="csc-menu csc-menu-def">|</ul>
1794 required = 1
1795 }
1796 1 = TMENU
1797 1 {
1798 target < lib.parseTarget
1799 target =
1800 target.override = {$PAGE_TARGET}
1801 NO {
1802 stdWrap.htmlSpecialChars = 1
1803 wrapItemAndSub = <li>|</li>
1804 ATagTitle.field = description // title
1805 }
1806 }
1807 }
1808
1809 # "Menu of subpages to these pages"
1810 1 < .default
1811 1 {
1812 special = directory
1813 stdWrap {
1814 outerWrap = <ul class="csc-menu csc-menu-1">|</ul>
1815 }
1816 }
1817
1818 # "Sitemap - liststyle"
1819 2 = HMENU
1820 2 {
1821 stdWrap < tt_content.menu.20.default.stdWrap
1822 stdWrap {
1823 outerWrap = <div class="csc-sitemap">|</div>
1824 }
1825 1 = TMENU
1826 1 {
1827 target < lib.parseTarget
1828 target =
1829 target.override = {$PAGE_TARGET}
1830 expAll = 1
1831 wrap = <ul>|</ul>
1832 NO {
1833 stdWrap.htmlSpecialChars = 1
1834 wrapItemAndSub = <li>|</li>
1835 ATagTitle.field = description // title
1836 }
1837 }
1838 2 < .1
1839 3 < .1
1840 4 < .1
1841 5 < .1
1842 6 < .1
1843 7 < .1
1844 }
1845
1846 # "Section index (pagecontent w/Index checked - liststyle)"
1847 3 < .default
1848 3 {
1849 special {
1850 value {
1851 override {
1852 data = page:uid
1853 if {
1854 isFalse.field = pages
1855 }
1856 }
1857 }
1858 }
1859 stdWrap {
1860 outerWrap = <ul class="csc-menu csc-menu-3">|</ul>
1861 }
1862 1 = TMENU
1863 1 {
1864 sectionIndex = 1
1865 sectionIndex.type = header
1866 NO.wrapItemAndSub = <li class="csc-section">|</li>
1867 }
1868 }
1869
1870 # "Menu of subpages to these pages (with abstract)"
1871 4 < .1
1872 4 {
1873 stdWrap {
1874 prepend.renderObj.wrap = <dt class="csc-nav-bypass">|</dt><dd>&nbsp;</dd>
1875 outerWrap = <dl class="csc-menu csc-menu-4">|</dl>
1876 }
1877 1.NO {
1878 wrapItemAndSub >
1879 linkWrap = <dt>|</dt>
1880 after {
1881 cObject = TEXT
1882 cObject {
1883 data = field : abstract // field : description // field : subtitle
1884 htmlSpecialChars = 1
1885 required = 1
1886 }
1887 ifBlank = &nbsp;
1888 wrap = <dd>|</dd>
1889 }
1890 ATagTitle.field = description // title
1891 }
1892 }
1893
1894 # "Recently updated pages"
1895 5 < .default
1896 5 {
1897 stdWrap {
1898 outerWrap = <ul class="csc-menu csc-menu-5">|</ul>
1899 }
1900 special = updated
1901 special {
1902 maxAge = 3600*24*7
1903 excludeNoSearchPages = 1
1904 }
1905 }
1906
1907 # "Related pages (based on keywords)"
1908 6 < .default
1909 6 {
1910 stdWrap {
1911 outerWrap = <ul class="csc-menu csc-menu-6">|</ul>
1912 }
1913 special = keywords
1914 special {
1915 excludeNoSearchPages = 1
1916 }
1917 }
1918
1919 # "Menu of subpages to these pages + sections - liststyle"
1920 7 < .1
1921 7 {
1922 stdWrap {
1923 outerWrap = <ul class="csc-menu csc-menu-7">|</ul>
1924 }
1925 1.expAll = 1
1926 2 < .1
1927 2 {
1928 sectionIndex = 1
1929 sectionIndex.type = header
1930 wrap = <ul>|</ul>
1931 NO.wrapItemAndSub = <li class="csc-section">|</li>
1932 }
1933 }
1934 # "Sitemaps of selected pages - liststyle"
1935 8 < .2
1936 8 {
1937 special = directory
1938 special.value.field = pages
1939 }
1940 }
1941
1942 20.stdWrap {
1943 wrap {
1944 cObject = COA
1945 cObject {
1946 10 = TEXT
1947 10 {
1948 field = accessibility_title
1949 htmlSpecialChars = 1
1950 dataWrap = <map id="map{field:uid}" title="|">
1951 dataWrap {
1952 override = <map name="map{field:uid}" title="|">
1953 override {
1954 if {
1955 isFalse.data = TSFE:xhtmlDoctype
1956 }
1957 }
1958 }
1959 }
1960
1961 20 = TEXT
1962 20 {
1963 value = |</map>
1964 }
1965 }
1966 if {
1967 isTrue {
1968 field = accessibility_title
1969 }
1970 }
1971 }
1972 editIcons = tt_content: menu_type, pages
1973 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.menuSitemap
1974
1975 prefixComment = 2 | Menu/Sitemap element:
1976 }
1977 }
1978
1979
1980
1981 # ****************
1982 # CType: shortcut
1983 # ****************
1984 # Should be a complete copy from the old static template "content (default)"
1985 tt_content.shortcut = COA
1986 tt_content.shortcut {
1987 20 = CASE
1988 20.key.field = layout
1989 20.0= RECORDS
1990 20.0 {
1991 source.field = records
1992 tables = {$content.shortcut.tables}
1993 }
1994 20.1= RECORDS
1995 20.1 {
1996 source.field = records
1997 tables = {$content.shortcut.tables}
1998 }
1999
2000 20.stdWrap {
2001 editIcons = tt_content: records
2002 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.recordList
2003
2004 prefixComment = 2 | Inclusion of other records (by reference):
2005 }
2006 }
2007
2008
2009 # ****************
2010 # CType: list
2011 # ****************
2012 # Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
2013 tt_content.list = COA
2014 tt_content.list {
2015 10 = < lib.stdheader
2016
2017 20 = CASE
2018 20.key.field = list_type
2019
2020 20.stdWrap {
2021 editIcons = tt_content: list_type, layout, select_key, pages [recursive]
2022 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.plugin
2023
2024 prefixComment = 2 | Plugin inserted:
2025 }
2026 }
2027
2028
2029 # ****************
2030 # CType: div
2031 # ****************
2032 tt_content.div = TEXT
2033 tt_content.div {
2034 value = <hr>
2035 override = <hr />
2036 override.if {
2037 isTrue.data = TSFE:xhtmlDoctype
2038 }
2039 wrap = <div class="divider">|</div>
2040 prefixComment = 2 | Div element
2041 }
2042
2043
2044 # ****************
2045 # CType: html
2046 # ****************
2047 # This truely IS a content object, launched from inside the PHP class of course.
2048 # Should be a complete copy from the old static template "content (default)"
2049 tt_content.html = TEXT
2050 tt_content.html {
2051 field = bodytext
2052
2053 editIcons = tt_content: pages
2054 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.html
2055
2056 prefixComment = 2 | Raw HTML content:
2057 }
2058
2059
2060 # ****************
2061 # Default error msg:
2062 # ****************
2063 tt_content.default = TEXT
2064 tt_content.default {
2065 field = CType
2066 wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
2067
2068 prefixComment = 2 | Unknown element message:
2069 }
2070
2071 # *********************************************************************
2072 # ACCESSIBILTY MODE
2073 # *********************************************************************
2074
2075
2076
2077
2078
2079
2080
2081 plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
2082 /* Headers */
2083 .csc-header-alignment-center { text-align: center; }
2084 .csc-header-alignment-right { text-align: right; }
2085 .csc-header-alignment-left { text-align: left; }
2086
2087 /* Clear floats after csc-textpic and after csc-textpic-imagerow */
2088 div.csc-textpic, div.csc-textpic div.csc-textpic-imagerow, ul.csc-uploads li { overflow: hidden; }
2089
2090 /* Set padding for tables */
2091 div.csc-textpic .csc-textpic-imagewrap table { border-collapse: collapse; border-spacing: 0; }
2092 div.csc-textpic .csc-textpic-imagewrap table tr td { padding: 0; vertical-align: top; }
2093
2094 /* Settings for figure and figcaption (HTML5) */
2095 div.csc-textpic .csc-textpic-imagewrap figure, div.csc-textpic figure.csc-textpic-imagewrap { margin: 0; display: table; }
2096
2097 /* Captions */
2098 figcaption.csc-textpic-caption { display: table-caption; }
2099 .csc-textpic-caption { text-align: left; caption-side: bottom; }
2100 div.csc-textpic-caption-c .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-c { text-align: center; }
2101 div.csc-textpic-caption-r .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-r { text-align: right; }
2102 div.csc-textpic-caption-l .csc-textpic-caption, .csc-textpic-imagewrap .csc-textpic-caption-l { text-align: left; }
2103
2104 /* Float the columns */
2105 div.csc-textpic div.csc-textpic-imagecolumn { float: left; }
2106
2107 /* Border just around the image */
2108 {$styles.content.imgtext.borderSelector} {
2109 border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
2110 padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
2111 }
2112
2113 div.csc-textpic .csc-textpic-imagewrap img { border: none; display: block; }
2114
2115 /* Space below each image (also in-between rows) */
2116 div.csc-textpic .csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
2117 div.csc-textpic .csc-textpic-imagewrap .csc-textpic-imagerow-last .csc-textpic-image { margin-bottom: 0; }
2118
2119 /* colSpace around image columns, except for last column */
2120 div.csc-textpic-imagecolumn, td.csc-textpic-imagecolumn .csc-textpic-image { margin-right: {$styles.content.imgtext.colSpace}px; }
2121 div.csc-textpic-imagecolumn.csc-textpic-lastcol, td.csc-textpic-imagecolumn.csc-textpic-lastcol .csc-textpic-image { margin-right: 0; }
2122
2123 /* Add margin from image-block to text (in case of "Text w/ images") */
2124 div.csc-textpic-intext-left .csc-textpic-imagewrap,
2125 div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap {
2126 margin-right: {$styles.content.imgtext.textMargin}px;
2127 }
2128 div.csc-textpic-intext-right .csc-textpic-imagewrap,
2129 div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap {
2130 margin-left: {$styles.content.imgtext.textMargin}px;
2131 }
2132
2133 /* Positioning of images: */
2134
2135 /* Center (above or below) */
2136 div.csc-textpic-center .csc-textpic-imagewrap, div.csc-textpic-center figure.csc-textpic-imagewrap { overflow: hidden; }
2137 div.csc-textpic-center .csc-textpic-center-outer { position: relative; float: right; right: 50%; }
2138 div.csc-textpic-center .csc-textpic-center-inner { position: relative; float: right; right: -50%; }
2139
2140 /* Right (above or below) */
2141 div.csc-textpic-right .csc-textpic-imagewrap { float: right; }
2142 div.csc-textpic-right div.csc-textpic-text { clear: right; }
2143
2144 /* Left (above or below) */
2145 div.csc-textpic-left .csc-textpic-imagewrap { float: left; }
2146 div.csc-textpic-left div.csc-textpic-text { clear: left; }
2147
2148 /* Left (in text) */
2149 div.csc-textpic-intext-left .csc-textpic-imagewrap { float: left; }
2150
2151 /* Right (in text) */
2152 div.csc-textpic-intext-right .csc-textpic-imagewrap { float: right; }
2153
2154 /* Right (in text, no wrap around) */
2155 div.csc-textpic-intext-right-nowrap .csc-textpic-imagewrap { float: right; }
2156
2157 /* Left (in text, no wrap around) */
2158 div.csc-textpic-intext-left-nowrap .csc-textpic-imagewrap { float: left; }
2159
2160 div.csc-textpic div.csc-textpic-imagerow-last, div.csc-textpic div.csc-textpic-imagerow-none div.csc-textpic-last { margin-bottom: 0; }
2161
2162 /* Browser fixes: */
2163
2164 /* Fix for unordered and ordered list with image "In text, left" */
2165 .csc-textpic-intext-left ol, .csc-textpic-intext-left ul { padding-left: 40px; overflow: auto; }
2166
2167 /* File Links */
2168 ul.csc-uploads { padding: 0; }
2169 ul.csc-uploads li { list-style: none outside none; margin: 1em 0; }
2170 ul.csc-uploads img { float: left; padding-right: 1em; vertical-align: top; }
2171 ul.csc-uploads span { display: block; }
2172 ul.csc-uploads span.csc-uploads-fileName { text-decoration: underline; }
2173
2174 /* Table background colors: */
2175
2176 table.contenttable-color-1 { background-color: {$styles.content.table.backgroundColor.1}; }
2177 table.contenttable-color-2 { background-color: {$styles.content.table.backgroundColor.2}; }
2178 table.contenttable-color-240 { background-color: {$styles.content.table.backgroundColor.240}; }
2179 table.contenttable-color-241 { background-color: {$styles.content.table.backgroundColor.241}; }
2180 table.contenttable-color-242 { background-color: {$styles.content.table.backgroundColor.242}; }
2181 table.contenttable-color-243 { background-color: {$styles.content.table.backgroundColor.243}; }
2182 table.contenttable-color-244 { background-color: {$styles.content.table.backgroundColor.244}; }
2183 )
2184