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