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