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