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