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