075b331ae6fa0c452999e5a07d5fcbf1ba5abecf
[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 persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
60 lib.parseFunc {
61         makelinks = 1
62         makelinks.http.keep = {$styles.content.links.keep}
63         makelinks.http.extTarget = {$styles.content.links.extTarget}
64         makelinks.mailto.keep = path
65         tags {
66                 link = TEXT
67                 link {
68                         current = 1
69                         typolink.parameter.data = parameters : allParams
70                         typolink.extTarget = {$styles.content.links.extTarget}
71                         typolink.target = {$styles.content.links.target}
72                         parseFunc.constants =1
73                 }
74         }
75         allowTags = {$styles.content.links.allowTags}
76         denyTags = *
77         sword = <span class="csc-sword">|</span>
78         constants = 1
79
80         nonTypoTagStdWrap.HTMLparser = 1
81         nonTypoTagStdWrap.HTMLparser {
82                 keepNonMatchedTags = 1
83                 htmlSpecialChars = 2
84         }
85 }
86
87 # good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
88 styles.content.parseFunc < lib.parseFunc
89
90 # Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
91 lib.parseFunc_RTE < lib.parseFunc
92 lib.parseFunc_RTE {
93         //  makelinks >
94         # Processing <table> and <blockquote> blocks separately
95         externalBlocks = table, blockquote, ol,ul, div
96         externalBlocks {
97                 # The blockquote content is passed into parseFunc again...
98                 blockquote.stripNL=1
99                 blockquote.callRecursive=1
100                 blockquote.callRecursive.tagStdWrap.HTMLparser = 1
101                 blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
102
103                 ol.stripNL=1
104                 ol.stdWrap.parseFunc = < lib.parseFunc
105
106                 ul.stripNL=1
107                 ul.stdWrap.parseFunc = < lib.parseFunc
108
109                 table.stripNL=1
110                 table.stdWrap.HTMLparser = 1
111                 table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
112                         default = contenttable
113                         always = 1
114                         list = contenttable
115                 }
116                 table.stdWrap.HTMLparser.keepNonMatchedTags = 1
117                 table.HTMLtableCells=1
118                 table.HTMLtableCells {
119                         # Recursive call to self but without wrapping non-wrapped cell content
120                         default.stdWrap {
121                                 parseFunc =< lib.parseFunc_RTE
122                                 parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag = 
123                         }
124                         addChr10BetweenParagraphs=1
125                 }
126                 div.stripNL = 1
127                 div.callRecursive = 1
128         }
129         nonTypoTagStdWrap.encapsLines {
130                 encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr
131                 remapTag.DIV = P
132                 nonWrappedTag = P
133                 innerStdWrap_all.ifBlank = &nbsp;
134                 addAttributes.P.class = bodytext
135                 addAttributes.P.class.setOnly=blank
136         }
137         nonTypoTagStdWrap.HTMLparser = 1
138         nonTypoTagStdWrap.HTMLparser {
139                 keepNonMatchedTags = 1
140                 htmlSpecialChars = 2
141         }
142 }
143
144
145 # Content header:
146 lib.stdheader = COA
147 lib.stdheader {
148
149         # Create align style-attribute for <Hx> tags
150         2 = LOAD_REGISTER
151         2.headerStyle.field = header_position
152         2.headerStyle.required = 1
153         2.headerStyle.noTrimWrap = | style="text-align:|;"|
154
155         # Create class="csc-firstHeader" attribute for <Hx> tags
156         3 = LOAD_REGISTER
157         3.headerClass = csc-firstHeader
158         3.headerClass.if.value=1
159         3.headerClass.if.equals.data = cObj:parentRecordNumber
160         3.headerClass.noTrimWrap = | class="|"|
161
162         # Date format:
163         5 = TEXT
164         5.field = date
165         5.if.isTrue.field = date
166         5.strftime = %x
167         5.wrap = <p class="csc-header-date">|</p>
168         5.prefixComment = 2 | Header date:
169
170         # This CASE cObject renders the header content:
171         # currentValue is set to the header data, possibly wrapped in link-tags.
172         10 = CASE
173         10.setCurrent {
174                 field = header
175                 htmlSpecialChars = 1
176                 typolink.parameter.field = header_link
177         }
178         10.key.field = header_layout
179         10.key.ifEmpty = {$content.defaultHeaderType}
180         10.key.ifEmpty.override.data = register: defaultHeaderType
181
182         10.1 = TEXT
183         10.1.current = 1
184         10.1.dataWrap = <h1{register:headerStyle}{register:headerClass}>|</h1>
185
186         10.2 < .10.1
187         10.2.dataWrap = <h2{register:headerStyle}{register:headerClass}>|</h2>
188
189         10.3 < .10.1
190         10.3.dataWrap = <h3{register:headerStyle}{register:headerClass}>|</h3>
191
192         10.4 < .10.1
193         10.4.dataWrap = <h4{register:headerStyle}{register:headerClass}>|</h4>
194
195         10.5 < .10.1
196         10.5.dataWrap = <h5{register:headerStyle}{register:headerClass}>|</h5>
197
198         # Pops the used registers off the stack:
199         98 = RESTORE_REGISTER
200         99 = RESTORE_REGISTER
201
202         # Post-processing:
203         stdWrap.fieldRequired = header
204         stdWrap.if {
205                 equals.field = header_layout
206                 value = 100
207                 negate = 1
208         }
209
210         stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
211         stdWrap.editIcons.beforeLastTag = 1
212         stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.header
213
214         stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
215         stdWrap.prefixComment = 2 | Header:
216 }
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232 #******************************************************
233 # Including library for processing of some elements:
234 #******************************************************
235 includeLibs.tx_cssstyledcontent_pi1 = EXT:css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
236
237
238 #**********************************
239 # tt_content is started
240 #**********************************
241 tt_content >
242 tt_content = CASE
243 tt_content.key.field = CType
244 tt_content.stdWrap {
245         innerWrap.cObject = CASE
246         innerWrap.cObject {
247                 key.field = section_frame
248
249                 default = COA
250                 default {
251                         10 = TEXT
252                         10 {
253                                 value = <div id="c{field:uid}"
254                                 override.cObject = TEXT
255                                 override.cObject {
256                                         value = <div
257                                         if.value = div
258                                         if.equals.field = CType
259                                 }
260                                 insertData = 1
261                         }
262
263                         15 = TEXT
264                         15 {
265                                 value = csc-default
266                                 noTrimWrap = | class="|" |
267                                 required = 1
268                         }
269
270                         20 = COA
271                         20 {
272                                 10 = COA
273                                 10 {
274                                         10 = TEXT
275                                         10 {
276                                                 value = {$content.spaceBefore}
277                                                 wrap = |+
278                                                 if.isTrue = {$content.spaceBefore}
279                                         }
280
281                                         20 = TEXT
282                                         20 {
283                                                 field = spaceBefore
284                                         }
285
286                                         stdWrap {
287                                                 prioriCalc = intval
288                                                 wrap = margin-top:|px;
289                                                 required = 1
290                                                 ifEmpty.value =
291                                         }
292                                 }
293
294                                 20 = COA
295                                 20 {
296                                         10 = TEXT
297                                         10 {
298                                                 value = {$content.spaceAfter}
299                                                 wrap = |+
300                                                 if.isTrue = {$content.spaceAfter}
301                                         }
302
303                                         20 = TEXT
304                                         20 {
305                                                 field = spaceAfter
306                                         }
307
308                                         stdWrap {
309                                                 prioriCalc = intval
310                                                 wrap = margin-bottom:|px;
311                                                 required = 1
312                                                 ifEmpty.value =
313                                         }
314                                 }
315
316                                 stdWrap.noTrimWrap = | style="|" |
317                                 stdWrap.required = 1
318                         }
319                         30 = TEXT
320                         30.value = >|</div>
321                 }
322
323                 1 =< tt_content.stdWrap.innerWrap.cObject.default
324                 1.15.value = csc-frame csc-frame-invisible
325
326                 5 =< tt_content.stdWrap.innerWrap.cObject.default
327                 5.15.value = csc-frame csc-frame-rulerBefore
328
329                 6 =< tt_content.stdWrap.innerWrap.cObject.default
330                 6.15.value = csc-frame csc-frame-rulerAfter
331
332                 10 =< tt_content.stdWrap.innerWrap.cObject.default
333                 10.15.value = csc-frame csc-frame-indent
334
335                 11 =< tt_content.stdWrap.innerWrap.cObject.default
336                 11.15.value = csc-frame csc-frame-indent3366
337
338                 12 =< tt_content.stdWrap.innerWrap.cObject.default
339                 12.15.value = csc-frame csc-frame-indent6633
340
341                 20 =< tt_content.stdWrap.innerWrap.cObject.default
342                 20.15.value = csc-frame csc-frame-frame1
343
344                 21 =< tt_content.stdWrap.innerWrap.cObject.default
345                 21.15.value = csc-frame csc-frame-frame2
346
347                 66 = COA
348                 66 {
349                         10 = TEXT
350                         10 {
351                                 value = <a id="c{field:uid}"></a>
352                                 insertData = 1
353                         }
354
355                         20 = COA
356                         20 {
357                                 10 = TEXT
358                                 10 {
359                                         value = {$content.spaceBefore}
360                                         wrap = |+
361                                         if.isTrue = {$content.spaceBefore}
362                                 }
363
364                                 20 = TEXT
365                                 20 {
366                                         field = spaceBefore
367                                 }
368
369                                 stdWrap {
370                                         prioriCalc = intval
371                                         wrap = margin-top:|px;
372                                         required = 1
373                                         ifEmpty.value =
374                                         wrap2 = <div style="|"></div>
375                                 }
376                         }
377
378                         30 = TEXT
379                         30 {
380                                 value = |
381                         }
382
383                         40 < .20
384                         40 {
385                                 10 {
386                                         value = {$content.spaceAfter}
387                                         if.isTrue = {$content.spaceAfter}
388                                 }
389                                 20.field = spaceAfter
390                                 stdWrap.wrap = margin-bottom:|px;
391                         }
392                 }
393
394         }
395
396         innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/pi1/locallang.xml:label.toTop}</a></p>
397         innerWrap2.insertData = 1
398         innerWrap2.fieldRequired = linkToTop
399
400         prepend = TEXT
401         prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
402         prepend.if.isTrue.field = _LOCALIZED_UID
403
404         editPanel = 1
405         editPanel {
406                 allow = move,new,edit,hide,delete
407                 line = 5
408                 label = %s
409                 onlyCurrentPid = 1
410                 previewBorder = 4
411                 edit.displayRecord = 1
412         }
413
414         prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
415 }
416
417
418
419 # *****************
420 # CType: header
421 # *****************
422 # See Object path "lib.stdheader"
423 tt_content.header = COA
424 tt_content.header {
425         10 = < lib.stdheader
426
427         20 = TEXT
428         20 {
429                 field = subheader
430                 required = 1
431
432                 dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
433                 htmlSpecialChars = 1
434
435                 editIcons = tt_content:subheader,layout
436                 editIcons.beforeLastTag = 1
437                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.subheader
438
439                 prefixComment = 2 | Subheader:
440         }
441 }
442
443
444
445 # *****************
446 # CType: text
447 # *****************
448 tt_content.text = COA
449 tt_content.text {
450         10 = < lib.stdheader
451
452         20 = TEXT
453         20 {
454                 field = bodytext
455                 required = 1
456
457                 parseFunc = < lib.parseFunc_RTE
458
459                 editIcons = tt_content:bodytext, rte_enabled
460                 editIcons.beforeLastTag = 1
461                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
462
463                 prefixComment = 2 | Text:
464         }
465 }
466
467
468
469 # *****************
470 # CType: image
471 # *****************
472 # (also used for rendering 'textpic' type):
473 tt_content.image = COA
474 tt_content.image.10 = < lib.stdheader
475 tt_content.image.20 = USER
476 tt_content.image.20 {
477         userFunc = tx_cssstyledcontent_pi1->render_textpic
478
479         # Image source
480         imgList.field = image
481         imgPath = uploads/pics/
482
483         # Single image rendering
484         imgObjNum = 1
485         1 {
486                 file.import.current = 1
487                 file.width.field = imagewidth
488                 imageLinkWrap = 1
489                 imageLinkWrap {
490                         bodyTag = <body style="margin:0; background:#fff;">
491                         wrap = <a href="javascript:close();"> | </a>
492                         width = {$styles.content.imgtext.linkWrap.width}
493                         height = {$styles.content.imgtext.linkWrap.height}
494                         effects = {$styles.content.imgtext.linkWrap.effects}
495
496                         JSwindow = 1
497                         JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
498                         JSwindow.if.isFalse = {$styles.content.imgtext.linkWrap.lightboxEnabled}
499
500                         directImageLink = {$styles.content.imgtext.linkWrap.lightboxEnabled}
501
502                         enable.field = image_zoom
503                         enable.ifEmpty.typolink.parameter.field = image_link
504                         enable.ifEmpty.typolink.parameter.listNum.splitChar = 10
505                         enable.ifEmpty.typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
506                         enable.ifEmpty.typolink.returnLast = url
507
508                         typolink.parameter.field = image_link
509                         typolink.parameter.listNum.splitChar = 10
510                         typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
511                         typolink.target = {$styles.content.links.target}
512                         typolink.extTarget = {$styles.content.links.extTarget}
513
514                         linkParams.ATagParams.dataWrap =  class="{$styles.content.imgtext.linkWrap.lightboxCssClass}" rel="{$styles.content.imgtext.linkWrap.lightboxRelAttribute}"
515                 }
516
517                 altText = TEXT
518                 altText {
519                         field = altText
520                         stripHtml = 1
521                         split.token.char = 10
522                         split.token.if.isTrue = {$styles.content.imgtext.imageTextSplit}
523                         split.returnKey.data = register : IMAGE_NUM_CURRENT
524                 }
525
526                 titleText < .altText
527                 titleText.field = titleText
528
529                 longdescURL < .altText
530                 longdescURL.field = longdescURL
531
532                 emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
533                 titleInLink = {$styles.content.imgtext.titleInLink}
534                 titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
535         }
536
537         textPos.field = imageorient
538         maxW = {$styles.content.imgtext.maxW}
539         maxW.override.data = register:maxImageWidth
540         maxWInText = {$styles.content.imgtext.maxWInText}
541         maxWInText.override.data = register:maxImageWidthInText
542
543         equalH.field = imageheight
544
545         image_compression.field = image_compression
546         image_effects.field = image_effects
547
548         noRows.field = image_noRows
549
550         cols.field = imagecols
551         border.field = imageborder
552
553         caption {
554                 1 = TEXT
555                 1 {
556                         field = imagecaption
557                         required = 1
558                         parseFunc =< lib.parseFunc
559                         br = 1
560                         split.token.char = 10
561                         split.token.if.isPositive = {$styles.content.imgtext.imageTextSplit} + {$styles.content.imgtext.captionSplit}
562                         split.returnKey.data = register : IMAGE_NUM_CURRENT
563                 }
564         }
565         # captionSplit is deprecated, use imageTextSplit instead
566         captionSplit = {$styles.content.imgtext.captionSplit}
567         captionAlign.field = imagecaption_position
568         # caption/alttext/title/longdescURL splitting
569         imageTextSplit = {$styles.content.imgtext.imageTextSplit}
570
571         borderCol = {$styles.content.imgtext.borderColor}
572         borderThick = {$styles.content.imgtext.borderThick}
573         borderClass = {$styles.content.imgtext.borderClass}
574         colSpace = {$styles.content.imgtext.colSpace}
575         rowSpace = {$styles.content.imgtext.rowSpace}
576         textMargin = {$styles.content.imgtext.textMargin}
577
578         borderSpace = {$styles.content.imgtext.borderSpace}
579         separateRows = {$styles.content.imgtext.separateRows}
580         addClasses =
581         addClassesImage =
582         addClassesImage.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
583         addClassesImage.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
584         addClassesImage.override.if {
585                 isGreaterThan.field = imagecols
586                 value = 1
587         }
588
589         #
590         imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
591         imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
592
593         # if noRows is set, wrap around each column:
594         imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
595
596         layout = CASE
597         layout {
598                 key.field = imageorient
599                 # above-center
600                 default = TEXT
601                 default.value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
602                 # above-right
603                 1 = TEXT
604                 1.value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
605                 # above-left
606                 2 = TEXT
607                 2.value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
608                 # below-center
609                 8 = TEXT
610                 8.value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
611                 # below-right
612                 9 = TEXT
613                 9.value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
614                 # below-left
615                 10 = TEXT
616                 10.value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
617                 # intext-right
618                 17 = TEXT
619                 17.value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
620                 17.override = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
621                 17.override.if.isTrue = {$styles.content.imgtext.addIntextClearer}
622                 # intext-left
623                 18 = TEXT
624                 18.value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
625                 18.override = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
626                 18.override.if.isTrue = {$styles.content.imgtext.addIntextClearer}
627                 # intext-right-nowrap
628                 25 = TEXT
629                 25.value = <div class="csc-textpic csc-textpic-intext-right-nowrap###CLASSES###">###IMAGES###<div style="margin-right:{register:rowWidthPlusTextMargin}px;">###TEXT###</div></div><div class="csc-textpic-clear"><!-- --></div>
630                 25.insertData = 1
631                 # intext-left-nowrap
632                 26 = TEXT
633                 26.value = <div class="csc-textpic csc-textpic-intext-left-nowrap###CLASSES###">###IMAGES###<div style="margin-left:{register:rowWidthPlusTextMargin}px;">###TEXT###</div></div><div class="csc-textpic-clear"><!-- --></div>
634                 26.insertData = 1
635         }
636
637         rendering {
638                 dl {
639                         # Choose another rendering for special edge cases
640                         fallbackRendering = COA
641                         fallbackRendering {
642                                 # Just one image without a caption => don't need the dl-overhead, use the "simple" rendering
643                                 10 = TEXT
644                                 10 {
645                                         if {
646                                                 isFalse.field = imagecaption
647                                                 value = 1
648                                                 equals.data = register:imageCount
649                                         }
650                                         value = simple
651                                 }
652
653                                 # Multiple images and one global caption => "ul"
654                                 20 = TEXT
655                                 20 {
656                                         if {
657                                                 value = 1
658                                                 isGreaterThan.data = register:imageCount
659                                                 isTrue.if.isTrue.data = register:renderGlobalCaption
660                                                 isTrue.field = imagecaption
661                                         }
662                                         value = ul
663                                 }
664
665                                 # Multiple images and no caption at all => "ul"
666                                 30 = TEXT
667                                 30 {
668                                         if {
669                                                 value = 1
670                                                 isGreaterThan.data = register:imageCount
671                                                 isFalse.field = imagecaption
672                                         }
673                                         value = ul
674                                 }
675                         }
676                         imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
677                         imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
678                         noRowsStdWrap.wrap =
679                         oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </dl>
680                         imgTagStdWrap.wrap = <dt> | </dt>
681                         editIconsStdWrap.wrap = <dd> | </dd>
682                         caption {
683                                 required = 1
684                                 wrap = <dd class="csc-textpic-caption"> | </dd>
685                         }
686                 }
687                 ul {
688                         # Just one image without a caption => don't need the ul-overhead, use the "simple" rendering
689                         fallbackRendering < tt_content.image.20.rendering.dl.fallbackRendering.10
690                         imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"><ul> | </ul></div>
691                         imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"><ul> | </ul></div>
692                         noRowsStdWrap.wrap = <ul> | </ul>
693                         oneImageStdWrap.dataWrap = <li class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </li>
694                         imgTagStdWrap.wrap =
695                         editIconsStdWrap.wrap = <div> | </div>
696                         caption.wrap = <div class="csc-textpic-caption"> | </div>
697                 }
698                 div {
699                         # Just one image without a caption => don't need the div-overhead, use the "simple" rendering
700                         fallbackRendering < tt_content.image.20.rendering.dl.fallbackRendering.10
701                         imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
702                         imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
703                         noRowsStdWrap.wrap =
704                         oneImageStdWrap.dataWrap = <div class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </div>
705                         imgTagStdWrap.wrap = <div> | </div>
706                         editIconsStdWrap.wrap = <div> | </div>
707                         caption.wrap = <div class="csc-textpic-caption"> | </div>
708                 }
709                 simple {
710                         imageRowStdWrap.dataWrap = |
711                         imageLastRowStdWrap.dataWrap = |
712                         noRowsStdWrap.wrap =
713                         oneImageStdWrap.dataWrap = |
714                         imgTagStdWrap.wrap = |
715                         editIconsStdWrap.wrap = |
716                         caption.wrap = <div class="csc-textpic-caption"> | </div>
717                         imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap csc-textpic-single-image" style="width:{register:totalwidth}px;"> | </div>
718                         imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap csc-textpic-single-image"> | </div>
719                 }
720         }
721         renderMethod = dl
722
723         editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|image_noRows|imageborder],[image_link|image_zoom],[image_compression|image_effects|image_frames],imagecaption[imagecaption_position]
724         editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
725
726         caption.editIcons = tt_content : imagecaption[imagecaption_position]
727         caption.editIcons.beforeLastTag=1
728         caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption
729
730         stdWrap.prefixComment = 2 | Image block:
731 }
732
733 # *****************
734 # CType: textpic
735 # *****************
736 tt_content.textpic = COA
737 tt_content.textpic {
738         10 = COA
739         10.if.value = 25
740         10.if.isLessThan.field = imageorient
741         10.10 = < lib.stdheader
742
743         20  = < tt_content.image.20
744         20 {
745                 text.10 = COA
746                 text.10 {
747                         if.value = 24
748                         if.isGreaterThan.field = imageorient
749                         10 = < lib.stdheader
750                         10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
751                 }
752                 text.20 = < tt_content.text.20
753                 text.wrap = <div class="csc-textpic-text"> | </div>
754         }
755 }
756
757
758
759 # *****************
760 # CType: bullet
761 # *****************
762 tt_content.bullets = COA
763 tt_content.bullets {
764         10 = < lib.stdheader
765
766         20 = TEXT
767         20 {
768                 field = bodytext
769                 trim = 1
770                 split{
771                         token.char = 10
772                         cObjNum = |*|1|| 2|*|
773                         1.current = 1
774                         1.parseFunc =< lib.parseFunc
775                         1.wrap = <li class="odd">|</li>
776
777                         2.current = 1
778                         2.parseFunc =< lib.parseFunc
779                         2.wrap = <li class="even">|</li>
780                 }
781                 dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
782                 editIcons = tt_content: bodytext, [layout]
783                 editIcons.beforeLastTag = 1
784                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.php:eIcon.bullets
785
786                 prefixComment = 2 | Bullet list:
787         }
788 }
789
790
791
792 # *****************
793 # CType: table
794 # *****************
795 # Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
796 tt_content.table = COA
797 tt_content.table {
798         10 = < lib.stdheader
799
800         20 = USER
801         20.userFunc = tx_cssstyledcontent_pi1->render_table
802         20.field = bodytext
803
804         20.color {
805                 default =
806                 1 = #EDEBF1
807                 2 = #F5FFAA
808         }
809         20.tableParams_0 {
810                 border =
811                 cellpadding =
812                 cellspacing =
813         }
814         20.tableParams_1 {
815                 border =
816                 cellpadding =
817                 cellspacing =
818         }
819         20.tableParams_2 {
820                 border =
821                 cellpadding =
822                 cellspacing =
823         }
824         20.tableParams_3 {
825                 border =
826                 cellpadding =
827                 cellspacing =
828         }
829         20.innerStdWrap.wrap = |
830         20.innerStdWrap.parseFunc = < lib.parseFunc
831
832         20.stdWrap {
833                 editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
834                 editIcons.beforeLastTag = 1
835                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.table
836
837                 prefixComment = 2 | Table:
838         }
839 }
840
841
842 # *****************
843 # CType: uploads
844 # *****************
845 # Rendered by a PHP function specifically written to handle CE filelists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
846 tt_content.uploads = COA
847 tt_content.uploads {
848         10 = < lib.stdheader
849
850         20 = USER
851         20.userFunc = tx_cssstyledcontent_pi1->render_uploads
852         20.field = media
853         20.filePath.field = select_key
854
855         20 {
856                 # Rendering for each file (e.g. rows of the table) as a cObject
857                 itemRendering = COA
858                 itemRendering {
859                         wrap = <tr class="tr-odd tr-first">|</tr> |*| <tr class="tr-even">|</tr> || <tr class="tr-odd">|</tr> |*|
860
861                         10 = TEXT
862                         10.data = register:linkedIcon
863                         10.wrap = <td class="csc-uploads-icon">|</td>
864                         10.if.isPositive.field = layout
865
866                         20 = COA
867                         20.wrap = <td class="csc-uploads-fileName">|</td>
868                         20.1 = TEXT
869                         20.1 {
870                                 data = register:linkedLabel
871                                 wrap = <p>|</p>
872                         }
873                         20.2 = TEXT
874                         20.2 {
875                                 data = register:description
876                                 wrap = <p class="csc-uploads-description">|</p>
877                                 required = 1
878                         }
879
880                         30 = TEXT
881                         30.if.isTrue.field = filelink_size
882                         30.data = register:fileSize
883                         30.wrap = <td class="csc-uploads-fileSize">|</td>
884                         30.bytes = 1
885                         30.bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
886                 }
887                 useSpacesInLinkText = 0
888                 stripFileExtensionFromLinkText = 0
889         }
890
891         20.color {
892                 default =
893                 1 = #EDEBF1
894                 2 = #F5FFAA
895         }
896         20.tableParams_0 {
897                 border =
898                 cellpadding =
899                 cellspacing =
900         }
901         20.tableParams_1 {
902                 border =
903                 cellpadding =
904                 cellspacing =
905         }
906         20.tableParams_2 {
907                 border =
908                 cellpadding =
909                 cellspacing =
910         }
911         20.tableParams_3 {
912                 border =
913                 cellpadding =
914                 cellspacing =
915         }
916
917         20.linkProc {
918                 target = _blank
919                 jumpurl = {$styles.content.uploads.jumpurl}
920                 jumpurl.secure = {$styles.content.uploads.jumpurl_secure}
921                 jumpurl.secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
922                 removePrependedNumbers = 1
923
924                 iconCObject = IMAGE
925                 iconCObject.file.import.data = register : ICON_REL_PATH
926                 iconCObject.file.width = 150
927         }
928
929         20.filesize {
930                 bytes = 1
931                 bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
932         }
933
934         20.stdWrap {
935                 editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size, imagecaption
936                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.filelist
937
938                 prefixComment = 2 | File list:
939         }
940 }
941
942
943 # ******************
944 # CType: multimedia
945 # ******************
946 tt_content.multimedia = COA
947 tt_content.multimedia {
948         10 = < lib.stdheader
949
950         20 = MULTIMEDIA
951         20.file.field = multimedia
952         20.file.wrap = uploads/media/
953         20.file.listNum = 0
954         20.params.field = bodytext
955
956         20.stdWrap {
957                 editIcons = tt_content: multimedia, bodytext
958                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
959
960                 prefixComment = 2 | Multimedia element:
961         }
962 }
963
964 # *****************
965 # CType: swfobject
966 # *****************
967 tt_content.swfobject = COA
968 tt_content.swfobject {
969         10 = < lib.stdheader
970
971         20 = SWFOBJECT
972         20 {
973                 file =
974                 width =
975                 height =
976
977                 flexParams.field = pi_flexform
978
979                 alternativeContent.field = bodytext
980
981                 layout = ###SWFOBJECT###
982
983                 video {
984                         player = {$styles.content.media.videoPlayer}
985
986                         defaultWidth  = {$styles.content.media.defaultVideoWidth}
987                         defaultHeight  = {$styles.content.media.defaultVideoHeight}
988
989                         default {
990                                 params.quality = high
991                                 params.menu = false
992                                 params.allowScriptAccess = sameDomain
993                                 params.allowFullScreen = true
994                         }
995                         mapping {
996
997                         }
998                 }
999
1000                 audio {
1001                         player = {$styles.content.media.audioPlayer}
1002
1003                         defaultWidth = {$styles.content.media.defaultAudioWidth}
1004                         defaultHeight = {$styles.content.media.defaultAudioHeight}
1005
1006                         default {
1007                                 params.quality = high
1008                                 params.allowScriptAccess = sameDomain
1009                                 params.menu = false
1010                         }
1011                         mapping {
1012                                 flashvars.file = soundFile
1013                         }
1014                 }
1015
1016         }
1017         20.stdWrap {
1018                 editIcons = tt_content: multimedia, imagewidth, imageheight, pi_flexform, bodytext
1019                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
1020
1021                 prefixComment = 2 | SWFobject element:
1022         }
1023 }
1024
1025 # *****************
1026 # CType: qtobject
1027 # *****************
1028 tt_content.qtobject = COA
1029 tt_content.qtobject {
1030         10 = < lib.stdheader
1031
1032         20 = QTOBJECT
1033         20 {
1034                 file =
1035                 width =
1036                 height =
1037
1038                 flexParams.field = pi_flexform
1039
1040                 alternativeContent.field = bodytext
1041
1042                 layout = ###QTOBJECT###
1043
1044                 video {
1045                         player = {$styles.content.media.videoPlayer}
1046
1047                         defaultWidth  = {$styles.content.media.defaultVideoWidth}
1048                         defaultHeight  = {$styles.content.media.defaultVideoHeight}
1049
1050                         default {
1051                                 params.quality = high
1052                                 params.menu = false
1053                                 params.allowScriptAccess = sameDomain
1054                                 params.allowFullScreen = true
1055                         }
1056                         mapping {
1057
1058                         }
1059                 }
1060
1061                 audio {
1062                         player = {$styles.content.media.audioPlayer}
1063
1064                         defaultWidth = {$styles.content.media.defaultAudioWidth}
1065                         defaultHeight = {$styles.content.media.defaultAudioHeight}
1066
1067                         default {
1068                                 params.quality = high
1069                                 params.allowScriptAccess = sameDomain
1070                                 params.menu = false
1071                         }
1072                         mapping {
1073                                 flashvars.file = soundFile
1074                         }
1075                 }
1076         }
1077         20.stdWrap {
1078                 editIcons = tt_content: multimedia, imagewidth, imageheight, pi_flexform, bodytext
1079                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
1080
1081                 prefixComment = 2 | QTobject element:
1082         }
1083 }
1084
1085 # *****************
1086 # CType: media
1087 # *****************
1088 tt_content.media = COA
1089 tt_content.media {
1090         10 = < lib.stdheader
1091
1092         20 = MEDIA
1093         20 {
1094
1095                 flexParams.field = pi_flexform
1096                 alternativeContent < tt_content.text.20
1097                 alternativeContent.field = bodytext
1098
1099                 type = video
1100                 renderType = auto
1101                 allowEmptyUrl = 0
1102                 forcePlayer = 1
1103
1104                 fileExtHandler {
1105                         default = MEDIA
1106                         avi = MEDIA
1107                         asf = MEDIA
1108                         class = MEDIA
1109                         wmv = MEDIA
1110                         mp3 = SWF
1111                         mp4 = SWF
1112                         m4v = SWF
1113                         swa = SWF
1114                         flv = SWF
1115                         swf = SWF
1116                         mov = QT
1117                         m4v = QT
1118                         m4a = QT
1119                 }
1120
1121                 mimeConf.swfobject < tt_content.swfobject.20
1122                 mimeConf.qtobject < tt_content.qtobject.20
1123
1124         }
1125         20.stdWrap {
1126                 editIcons = tt_content: pi_flexform, bodytext
1127                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
1128
1129                 prefixComment = 2 | Media element:
1130         }
1131 }
1132
1133 # ******************
1134 # CType: mailform
1135 # ******************
1136 tt_content.mailform = COA
1137 tt_content.mailform.10 = < lib.stdheader
1138 tt_content.mailform.20 = FORM
1139 tt_content.mailform.20 {
1140         accessibility = 1
1141         noWrapAttr=1
1142         formName = mailform
1143         dontMd5FieldNames = 1
1144         layout = <div class="csc-mailform-field">###LABEL### ###FIELD###</div>
1145         labelWrap.wrap = |
1146         commentWrap.wrap = |
1147         radioWrap.wrap = |<br />
1148         radioWrap.accessibilityWrap = <fieldset###RADIO_FIELD_ID###><legend>###RADIO_GROUP_LABEL###</legend>|</fieldset>
1149         REQ = 1
1150         REQ.labelWrap.wrap = |
1151         COMMENT.layout = <div class="csc-mailform-label">###LABEL###</div>
1152         RADIO.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-radio">###FIELD###</span></div>
1153         LABEL.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-label">###FIELD###</span></div>
1154         target = {$styles.content.mailform.target}
1155         goodMess = {$styles.content.mailform.goodMess}
1156         badMess = {$styles.content.mailform.badMess}
1157         redirect.field = pages
1158         redirect.listNum = 0
1159         recipient.field = subheader
1160         data.field = bodytext
1161         locationData = 1
1162         hiddenFields.stdWrap.wrap = <div style="display:none;">|</div>
1163
1164         params.radio = class="csc-mailform-radio"
1165         params.check = class="csc-mailform-check"
1166         params.submit = class="csc-mailform-submit"
1167
1168         stdWrap.wrap = <fieldset class="csc-mailform"> | </fieldset>
1169         stdWrap {
1170                 editIcons = tt_content: bodytext, pages, subheader
1171                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.form
1172
1173                 prefixComment = 2 | Mail form inserted:
1174         }
1175 }
1176
1177
1178 # ******************
1179 # CType: search
1180 # ******************
1181 tt_content.search = COA
1182 tt_content.search.10 = < lib.stdheader
1183 # Result:
1184 tt_content.search.20 = SEARCHRESULT
1185 tt_content.search.20 {
1186         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
1187         languageField.tt_content = sys_language_uid
1188         renderObj = COA
1189         renderObj {
1190
1191                 10 = TEXT
1192                 10.field = pages_title
1193                 10.htmlSpecialChars = 1
1194                 10.typolink {
1195                         parameter.field = uid
1196                         target = {$styles.content.searchresult.resultTarget}
1197                         additionalParams.data = register:SWORD_PARAMS
1198                         additionalParams.required = 1
1199                         additionalParams.wrap = &no_cache=1
1200                 }
1201                 10.htmlSpecialChars = 1
1202                 10.wrap = <h3 class="csc-searchResultHeader">|</h3>
1203
1204                 20 = COA
1205                 20 {
1206                         10 = TEXT
1207                         10.field = tt_content_bodytext
1208                         10.stripHtml = 1
1209                         10.htmlSpecialChars = 1
1210                 }
1211                 20.stdWrap.crop = 200 | ...
1212                 20.stdWrap.wrap = <p class="csc-searchResult">|</p>
1213         }
1214
1215         layout = COA
1216         layout {
1217                 wrap = <table border="0" cellspacing="0" cellpadding="2" class="csc-searchResultInfo"><tr> | </tr></table> ###RESULT###
1218
1219                 10 = TEXT
1220                 10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.resultRange
1221                 10.wrap = <td class="csc-searchResultRange"><p>|</p></td>
1222
1223                 20 = TEXT
1224                 20.value = ###PREV###&nbsp;&nbsp;&nbsp;###NEXT###
1225                 20.wrap = <td class="csc-searchResultPrevNext"><p>|</p></td>
1226         }
1227
1228         noResultObj = COA
1229         noResultObj {
1230                 10 = TEXT
1231                 10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.emptySearch
1232                 10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
1233         }
1234
1235         next = TEXT
1236         next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
1237
1238         prev = TEXT
1239         prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultPrev
1240
1241         target = {$styles.content.searchresult.target}
1242         range = 20
1243
1244         stdWrap.prefixComment = 2 | Search result:
1245 }
1246
1247 # Form:
1248 tt_content.search.30 < tt_content.mailform.20
1249 tt_content.search.30 {
1250         goodMess = {$styles.content.searchform.goodMess}
1251         redirect >
1252         recipient >
1253         data >
1254         dataArray {
1255                 10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchWord
1256                 10.type = sword=input
1257                 20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
1258                 20.type = scols=select
1259                 20.valueArray {
1260                         10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
1261                         10.value = pages.title-subtitle-keywords-description:tt_content.header
1262                         20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.pageContent
1263                         20.value = tt_content.header-bodytext-imagecaption
1264                 }
1265                 30.type = stype=hidden
1266                 30.value = L0
1267                 40.type = submit=submit
1268                 40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchButton
1269         }
1270         type.field = pages
1271         type.listNum = 0
1272         locationData = HTTP_POST_VARS
1273         no_cache = 1
1274
1275         stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-searchform">  | </table>
1276         stdWrap {
1277                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.search
1278
1279                 prefixComment = 2 | Search form inserted:
1280         }
1281 }
1282
1283 # ******************
1284 # CType: splash
1285 # ******************
1286 # Deprecated element.
1287 # Still here for backwards compliance with plugins using the "text box" type.
1288 tt_content.splash = CASE
1289 tt_content.splash.key.field = splash_layout
1290 tt_content.splash.stdWrap {
1291         prefixComment = 2 | Textbox inserted (Deprecated)
1292 }
1293 tt_content.splash.default = COA
1294 tt_content.splash.default {
1295         20 = CTABLE
1296         20 {
1297                 c.1 = < tt_content.text
1298                 lm.1 = IMAGE
1299                 lm.1.file {
1300                         import = uploads/pics/
1301                         import.field = image
1302                         import.listNum = 0
1303                         maxW.field = imagewidth
1304                         maxW.ifEmpty = 200
1305                 }
1306                 cMargins = 30,0,0,0
1307         }
1308 }
1309 tt_content.splash.1 < tt_content.splash.default
1310 tt_content.splash.1.20.lm.1.file >
1311 tt_content.splash.1.20.lm.1.file = GIFBUILDER
1312 tt_content.splash.1.20.lm.1.file {
1313         XY = [10.w]+10,[10.h]+10
1314         backColor = {$content.splash.bgCol}
1315         backColor.override.data = register:pageColor
1316         format = jpg
1317         5 = BOX
1318         5.dimensions = 3,3,[10.w],[10.h]
1319         5.color = #333333
1320         7 = EFFECT
1321         7.value = blur=99|blur=99|blur=99|blur=99|blur=99|blur=99|blur=99
1322         10 = IMAGE
1323         10.file {
1324                 import = uploads/pics/
1325                 import.field = image
1326                 import.listNum = 0
1327                 maxW.field = imagewidth
1328                 maxW.ifEmpty = 200
1329         }
1330 }
1331 // The image frames are not available unless TypoScript code from styles.content.imgFrames.x is provided manually:
1332 tt_content.splash.2 < tt_content.splash.default
1333 #tt_content.splash.2.20.lm.1.file.m < styles.content.imgFrames.1
1334 tt_content.splash.3 < tt_content.splash.default
1335 #tt_content.splash.3.20.lm.1.file.m < styles.content.imgFrames.2
1336
1337 // From plugin.postit1, if included:
1338 tt_content.splash.20 = < plugin.postit1
1339
1340
1341
1342 # ****************
1343 # CType: menu
1344 # ****************
1345 tt_content.menu = COA
1346 tt_content.menu {
1347         10 = < lib.stdheader
1348
1349         20 = CASE
1350         20 {
1351                 key.field = menu_type
1352
1353                 # "Menu of these pages"
1354                 default = HMENU
1355                 default {
1356                         special = list
1357                         special.value.field = pages
1358                         wrap = <ul class="csc-menu csc-menu-def">|</ul>
1359                         1 = TMENU
1360                         1 {
1361                                 target = {$PAGE_TARGET}
1362                                 NO {
1363                                         stdWrap.htmlSpecialChars = 1
1364                                         wrapItemAndSub = <li>|</li>
1365                                         ATagTitle.field = description // title
1366                                 }
1367                                 noBlur = 1
1368                         }
1369                 }
1370
1371                 # "Menu of subpages to these pages"
1372                 1 < .default
1373                 1 {
1374                         special = directory
1375                         wrap = <ul class="csc-menu csc-menu-1">|</ul>
1376                 }
1377
1378                 # "Sitemap - liststyle"
1379                 2 = HMENU
1380                 2 {
1381                         wrap = <div class="csc-sitemap">|</div>
1382                         1 = TMENU
1383                         1 {
1384                                 target = {$PAGE_TARGET}
1385                                 noBlur = 1
1386                                 expAll = 1
1387                                 wrap = <ul>|</ul>
1388                                 NO {
1389                                         stdWrap.htmlSpecialChars = 1
1390                                         wrapItemAndSub = <li>|</li>
1391                                         ATagTitle.field = description // title
1392                                 }
1393                         }
1394                         2 < .1
1395                         3 < .1
1396                         4 < .1
1397                         5 < .1
1398                         6 < .1
1399                         7 < .1
1400                 }
1401
1402                 # "Section index (pagecontent w/Index checked - liststyle)"
1403                 3 < styles.content.get
1404                 3 {
1405                         wrap = <ul class="csc-menu csc-menu-3">|</ul>
1406                         select.andWhere = sectionIndex!=0
1407                         select.pidInList.override.field = pages
1408                         renderObj = TEXT
1409                         renderObj {
1410                                 fieldRequired = header
1411                                 trim = 1
1412                                 field = header
1413                                 htmlSpecialChars = 1
1414                                 noBlur = 1
1415                                 wrap = <li class="csc-section">|</li>
1416                                 typolink.parameter.field = pid
1417                                 typolink.section.field = uid
1418                         }
1419                 }
1420
1421                 # "Menu of subpages to these pages (with abstract)"
1422                 4 < .1
1423                 4 {
1424                         wrap = <dl class="csc-menu csc-menu-4">|</dl>
1425                         1.NO {
1426                                 wrapItemAndSub >
1427                                 linkWrap = <dt>|</dt>
1428                                 after {
1429                                         data = field : abstract // field : description // field : subtitle
1430                                         required = 1
1431                                         htmlSpecialChars = 1
1432                                         wrap = <dd>|</dd>
1433                                 }
1434                                 ATagTitle.field = description // title
1435                         }
1436                 }
1437
1438                 # "Recently updated pages"
1439                 5 < .default
1440                 5 {
1441                         wrap = <ul class="csc-menu csc-menu-5">|</ul>
1442                         special = updated
1443                         special {
1444                                 maxAge = 3600*24*7
1445                                 excludeNoSearchPages = 1
1446                         }
1447                 }
1448
1449                 # "Related pages (based on keywords)"
1450                 6 < .default
1451                 6 {
1452                         wrap = <ul class="csc-menu csc-menu-6">|</ul>
1453                         special = keywords
1454                         special {
1455                                 excludeNoSearchPages = 1
1456                         }
1457                 }
1458
1459                 # "Menu of subpages to these pages + sections - liststyle"
1460                 7 < .1
1461                 7 {
1462                         wrap = <ul class="csc-menu csc-menu-7">|</ul>
1463                         1.expAll = 1
1464                         2 < .1
1465                         2 {
1466                                 sectionIndex = 1
1467                                 sectionIndex.type = header
1468                                 wrap = <ul>|</ul>
1469                                 NO.wrapItemAndSub = <li class="csc-section">|</li>
1470                         }
1471                 }
1472         }
1473
1474         20.stdWrap {
1475                 editIcons = tt_content: menu_type, pages
1476                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.menuSitemap
1477
1478                 prefixComment = 2 | Menu/Sitemap element:
1479         }
1480 }
1481
1482
1483
1484 # ****************
1485 # CType: shortcut
1486 # ****************
1487 # Should be a complete copy from the old static template "content (default)"
1488 tt_content.shortcut = COA
1489 tt_content.shortcut {
1490         20 = CASE
1491         20.key.field = layout
1492         20.0= RECORDS
1493         20.0 {
1494                 source.field = records
1495                 tables = {$content.shortcut.tables}
1496         }
1497         20.1= RECORDS
1498         20.1 {
1499                 source.field = records
1500                 tables = {$content.shortcut.tables}
1501         }
1502
1503         20.stdWrap {
1504                 editIcons = tt_content: records
1505                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.recordList
1506
1507                 prefixComment = 2 | Inclusion of other records (by reference):
1508         }
1509 }
1510
1511
1512 # ****************
1513 # CType: list
1514 # ****************
1515 # Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
1516 tt_content.list = COA
1517 tt_content.list {
1518         10 = < lib.stdheader
1519
1520         20 = CASE
1521         20.key.field = list_type
1522
1523         20.stdWrap {
1524                 editIcons = tt_content: list_type, layout, select_key, pages [recursive]
1525                 editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.plugin
1526
1527                 prefixComment = 2 | Plugin inserted:
1528         }
1529 }
1530
1531
1532 # ****************
1533 # CType: script
1534 # ****************
1535 # OBSOLETE! Please make extensions instead. The "script" content element was meant for these custom purposes in the past. Today extensions will do the job better.
1536 tt_content.script = TEXT
1537 tt_content.script {
1538         value =
1539
1540         prefixComment = 2 | Script element (Deprecated)
1541 }
1542
1543
1544 # ****************
1545 # CType: div
1546 # ****************
1547 tt_content.div = TEXT
1548 tt_content.div {
1549         value = <hr />
1550         wrap = <div class="divider">|</div>
1551         prefixComment = 2 | Div element
1552 }
1553
1554
1555 # ****************
1556 # CType: html
1557 # ****************
1558 # This truely IS a content object, launched from inside the PHP class of course.
1559 # Should be a complete copy from the old static template "content (default)"
1560 tt_content.html = TEXT
1561 tt_content.html {
1562         field = bodytext
1563
1564         editIcons = tt_content: pages
1565         editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.html
1566
1567         prefixComment = 2 | Raw HTML content:
1568 }
1569
1570
1571 # ****************
1572 # Default error msg:
1573 # ****************
1574 tt_content.default = TEXT
1575 tt_content.default {
1576         field = CType
1577         wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
1578
1579         prefixComment = 2 | Unknown element message:
1580 }
1581
1582 # *********************************************************************
1583 # ACCESSIBILTY MODE
1584 # *********************************************************************
1585
1586
1587
1588
1589
1590
1591
1592 plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
1593         /* Captions */
1594         DIV.csc-textpic-caption-c .csc-textpic-caption { text-align: center; }
1595         DIV.csc-textpic-caption-r .csc-textpic-caption { text-align: right; }
1596         DIV.csc-textpic-caption-l .csc-textpic-caption { text-align: left; }
1597
1598         /* Needed for noRows setting */
1599         DIV.csc-textpic DIV.csc-textpic-imagecolumn { float: left; display: inline; }
1600
1601         /* Border just around the image */
1602         {$styles.content.imgtext.borderSelector} {
1603                 border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
1604                 padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
1605         }
1606
1607         DIV.csc-textpic-imagewrap { padding: 0; }
1608
1609         DIV.csc-textpic IMG { border: none; }
1610
1611         /* DIV: This will place the images side by side */
1612         DIV.csc-textpic DIV.csc-textpic-imagewrap DIV.csc-textpic-image { float: left; }
1613
1614         /* UL: This will place the images side by side */
1615         DIV.csc-textpic DIV.csc-textpic-imagewrap UL { list-style: none; margin: 0; padding: 0; }
1616         DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI { float: left; margin: 0; padding: 0; }
1617
1618         /* DL: This will place the images side by side */
1619         DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image { float: left; }
1620         DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DT { float: none; }
1621         DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD { float: none; }
1622         DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD IMG { border: none; } /* FE-Editing Icons */
1623         DL.csc-textpic-image { margin: 0; }
1624         DL.csc-textpic-image DT { margin: 0; display: inline; }
1625         DL.csc-textpic-image DD { margin: 0; }
1626
1627         /* Clearer */
1628         DIV.csc-textpic-clear { clear: both; }
1629
1630         /* Margins around images: */
1631
1632         /* Pictures on left, add margin on right */
1633         DIV.csc-textpic-left DIV.csc-textpic-imagewrap .csc-textpic-image,
1634         DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
1635         DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap .csc-textpic-image {
1636                 display: inline; /* IE fix for double-margin bug */
1637                 margin-right: {$styles.content.imgtext.colSpace}px;
1638         }
1639
1640         /* Pictures on right, add margin on left */
1641         DIV.csc-textpic-right DIV.csc-textpic-imagewrap .csc-textpic-image,
1642         DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
1643         DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap .csc-textpic-image {
1644                 display: inline; /* IE fix for double-margin bug */
1645                 margin-left: {$styles.content.imgtext.colSpace}px;
1646         }
1647
1648         /* Pictures centered, add margin on left */
1649         DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image {
1650                 display: inline; /* IE fix for double-margin bug */
1651                 margin-left: {$styles.content.imgtext.colSpace}px;
1652         }
1653         DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image .csc-textpic-caption { margin: 0; }
1654         DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image IMG { margin: 0; vertical-align:bottom; }
1655
1656         /* Space below each image (also in-between rows) */
1657         DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
1658         DIV.csc-textpic-equalheight DIV.csc-textpic-imagerow { margin-bottom: {$styles.content.imgtext.rowSpace}px; display: block; }
1659         DIV.csc-textpic DIV.csc-textpic-imagerow { clear: both; }
1660         DIV.csc-textpic DIV.csc-textpic-single-image IMG { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
1661
1662         /* IE7 hack for margin between image rows */
1663         *+html DIV.csc-textpic DIV.csc-textpic-imagerow .csc-textpic-image { margin-bottom: 0; }
1664         *+html DIV.csc-textpic DIV.csc-textpic-imagerow { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
1665
1666         /* No margins around the whole image-block */
1667         DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-firstcol { margin-left: 0px !important; }
1668         DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-lastcol { margin-right: 0px !important; }
1669
1670         /* Add margin from image-block to text (in case of "Text w/ images") */
1671         DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap,
1672         DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap {
1673                 margin-right: {$styles.content.imgtext.textMargin}px !important;
1674         }
1675         DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap,
1676         DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap {
1677                 margin-left: {$styles.content.imgtext.textMargin}px !important;
1678         }
1679
1680         /* Positioning of images: */
1681
1682         /* Above */
1683         DIV.csc-textpic-above DIV.csc-textpic-text { clear: both; }
1684
1685         /* Center (above or below) */
1686         DIV.csc-textpic-center { text-align: center; /* IE-hack */ }
1687         DIV.csc-textpic-center DIV.csc-textpic-imagewrap { margin: 0 auto; }
1688         DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image { text-align: left; /* Remove IE-hack */ }
1689         DIV.csc-textpic-center DIV.csc-textpic-text { text-align: left; /* Remove IE-hack */ }
1690
1691         /* Right (above or below) */
1692         DIV.csc-textpic-right DIV.csc-textpic-imagewrap { float: right; }
1693         DIV.csc-textpic-right DIV.csc-textpic-text { clear: right; }
1694
1695         /* Left (above or below) */
1696         DIV.csc-textpic-left DIV.csc-textpic-imagewrap { float: left; }
1697         DIV.csc-textpic-left DIV.csc-textpic-text { clear: left; }
1698
1699         /* Left (in text) */
1700         DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap { float: left; }
1701
1702         /* Right (in text) */
1703         DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap { float: right; }
1704
1705         /* Right (in text, no wrap around) */
1706         DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap { float: right; clear: both; }
1707         /* Hide from IE5-mac. Only IE-win sees this. \*/
1708         * html DIV.csc-textpic-intext-right-nowrap .csc-textpic-text { height: 1%; }
1709         /* End hide from IE5/mac */
1710
1711         /* Left (in text, no wrap around) */
1712         DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap { float: left; clear: both; }
1713         /* Hide from IE5-mac. Only IE-win sees this. \*/
1714         * html DIV.csc-textpic-intext-left-nowrap .csc-textpic-text,
1715         * html .csc-textpic-intext-left ol,
1716         * html .csc-textpic-intext-left ul { height: 1%; }
1717         /* End hide from IE5/mac */
1718
1719         DIV.csc-textpic DIV.csc-textpic-imagerow-last { margin-bottom: 0; }
1720
1721         /* Browser fixes: */
1722
1723         /* Fix for unordered and ordered list with image "In text, left" */
1724         .csc-textpic-intext-left ol, .csc-textpic-intext-left ul {padding-left: 40px; overflow: auto; }
1725 )
1726