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