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