Feature #10320: Split CSS styled content templates in version templates to get rid...
authorFrancois Suter <francois.suter@typo3.org>
Mon, 30 Mar 2009 18:53:50 +0000 (18:53 +0000)
committerFrancois Suter <francois.suter@typo3.org>
Mon, 30 Mar 2009 18:53:50 +0000 (18:53 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@5242 709f56b5-9817-0410-a4d7-c38de5d9e867

18 files changed:
ChangeLog
NEWS.txt
t3lib/class.t3lib_extmgm.php
typo3/sysext/css_styled_content/ext_tables.php
typo3/sysext/css_styled_content/static/constants.txt [deleted file]
typo3/sysext/css_styled_content/static/current/constants.txt [new file with mode: 0644]
typo3/sysext/css_styled_content/static/current/setup.txt [new file with mode: 0644]
typo3/sysext/css_styled_content/static/setup.txt [deleted file]
typo3/sysext/css_styled_content/static/v3.8/constants.txt [new file with mode: 0644]
typo3/sysext/css_styled_content/static/v3.8/setup.txt [new file with mode: 0644]
typo3/sysext/css_styled_content/static/v3.9/constants.txt [new file with mode: 0644]
typo3/sysext/css_styled_content/static/v3.9/setup.txt [new file with mode: 0644]
typo3/sysext/css_styled_content/static/v4.2/constants.txt [new file with mode: 0644]
typo3/sysext/css_styled_content/static/v4.2/setup.txt [new file with mode: 0644]
typo3/sysext/install/ext_localconf.php
typo3/sysext/install/mod/class.tx_install.php
typo3/sysext/install/updates/class.tx_coreupdates_compatversion.php
typo3/sysext/install/updates/class.tx_coreupdates_cscsplit.php [new file with mode: 0644]

index 00c5d2e..3741033 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-03-27  Francois Suter  <francois@typo3.org>
+
+       * Feature #10320: Split CSS styled content templates in version templates to get rid of the compat version checks (thanks to Susanne Moog)
+
 2009-03-30  Benjamin Mack  <benni@typo3.org>
 
        * Feature #10718: Make tce_file usable via AJAX, uploads, file manipulation etc via AJAX in the Backend now possible
index c69ba66..a578f33 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -95,6 +95,10 @@ Frontend
          is on the same host because it will only slow down the process. However if MySQL
          is on another host, this option may improve performance significally.
 
+       * CSS styled content was split into separate files for each compatibility versions of TYPO3
+         (3.8, 3.9, 4.2 and current). When including the static template of css_styled_content,
+         a specific version must be chosen (also see Compatibility below).
+
 Compatibility
 =============
 
@@ -113,6 +117,10 @@ Compatibility
 
        * The help modules "about" and "cshmanual" were extracted into separate system extensions with the same name.
 
+       * As mentioned in "Frontend" CSS styled content has been split into several files.
+         The update wizard can switch the versions of the static includes by refering to
+         the TYPO3 compatibility version.
+
 Development
 ===========
 
index 1defcc7..9549316 100644 (file)
@@ -1117,8 +1117,12 @@ tt_content.'.$key.$prefix.' {
 '.$content;
                        if ($afterStaticUid) {
                                $TYPO3_CONF_VARS['FE']['defaultTypoScript_'.$type.'.'][$afterStaticUid].=$content;
+                                       // TODO: find a dynamic way to add default TS to all versions of css_style_content
                                if ($afterStaticUid==43)        {       // If 'content (default)' is targeted, also add to other 'content rendering templates', eg. css_styled_content
-                                       $TYPO3_CONF_VARS['FE']['defaultTypoScript_'.$type.'.']['cssstyledcontent/static/'].=$content;
+                                       $TYPO3_CONF_VARS['FE']['defaultTypoScript_'.$type.'.']['cssstyledcontent/static/current/'] .= $content;
+                                       $TYPO3_CONF_VARS['FE']['defaultTypoScript_'.$type.'.']['cssstyledcontent/static/v4.2/'] .= $content;
+                                       $TYPO3_CONF_VARS['FE']['defaultTypoScript_'.$type.'.']['cssstyledcontent/static/v3.9/'] .= $content;
+                                       $TYPO3_CONF_VARS['FE']['defaultTypoScript_'.$type.'.']['cssstyledcontent/static/v3.8/'] .= $content;
                                }
                        } else {
                                $TYPO3_CONF_VARS['FE']['defaultTypoScript_'.$type].=$content;
index e947fec..4f1a23d 100755 (executable)
@@ -8,6 +8,9 @@ $TCA['tt_content']['types']['table']['showitem']='CType;;4;;1-1-1, hidden, heade
                        --div--;LLL:EXT:cms/locallang_ttc.xml:CType.I.5, layout;;10;;3-3-3, cols, bodytext;;9;nowrap:wizards[table], text_properties, pi_flexform,
                        --div--;LLL:EXT:cms/locallang_tca.xml:pages.tabs.access, starttime, endtime';
 
-t3lib_extMgm::addStaticFile($_EXTKEY,'static/','CSS Styled Content');
+t3lib_extMgm::addStaticFile($_EXTKEY, 'static/current/', 'CSS Styled Content');
+t3lib_extMgm::addStaticFile($_EXTKEY, 'static/v3.8/', 'CSS Styled Content TYPO3 v3.8');
+t3lib_extMgm::addStaticFile($_EXTKEY, 'static/v3.9/', 'CSS Styled Content TYPO3 v3.9');
+t3lib_extMgm::addStaticFile($_EXTKEY, 'static/v4.2/', 'CSS Styled Content TYPO3 v4.2');
 
 ?>
\ No newline at end of file
diff --git a/typo3/sysext/css_styled_content/static/constants.txt b/typo3/sysext/css_styled_content/static/constants.txt
deleted file mode 100755 (executable)
index 6091f02..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-  # Clear out any constants in this reserved room!
-styles.content >
-
-content {
-    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
-  defaultHeaderType = 1
-    # cat=advanced/links; type=small; label=Pageframe object: The name of the "contentframe". Normally set to "page" if the site has a frameset. Otherwise it should be an empty value. This is important, as it determines the target of internal links!
-  pageFrameObj = page
-
-  shortcut.tables = tt_content,tt_address,tt_links,tt_guest,tt_board,tt_calender,tt_products,tt_news,tt_rating,tt_poll
-    # cat=content/other/c; type=wrap; label= Content Element margins: Space above / below each content element (pixels of a clear-gif) in versions below TYPO3 4.3.0.
-  space = 0|0
-
-  splash.bgCol = white
-}
-
-[compatVersion = 4.3.0]
-    # cat=content/other/a; type=small; label= Content Element margins (before): Space before each content element.
-content.spaceBefore = 0
-    # cat=content/other/b; type=small; label= Content Element margins (after): Space after each content element.
-content.spaceAfter = 0
-[global]
-
-    # cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
-styles.content.getNews.newsPid = 0
-
-styles.content.links {
-  keep = path
-    # cat=content/links; type=small; label= Target for external links
-  extTarget = _blank
-  target = {$PAGE_TARGET}
-  allowTags = b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,h1,h2,h3,h4,h5,h6
-}
-[compatVersion = 4.2.0]
-styles.content.links.allowTags := addToList(address)
-[global]
-
-
-styles.content.imgtext {
-    # TIP! if register[maxImageWidth] is set, this will override maxW
-    # cat=content,basic/cImage/a_maxw1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
-  maxW = 600
-    # cat=content/cImage/a_maxw2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width
-  maxWInText =
-    # cat=content/cImage/b; type=color; label= Image border color: Bordercolor of images in content elements when "Border"-option for element is set.
-  borderColor = black
-    # cat=content/cImage/b; type=int[0-100]; label= Image border thickness: Thickness of border around images in content elements when "Border"-option for element is set.
-  borderThick = 2
-    # cat=content/cImage/x; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Image" or "Text w/Image".
-  colSpace = 10
-    # cat=content/cImage/x; type=int[0-100]; label= Advanced, Row space: Vertical distance between images in a block in content elements of type "Image" or "Text w/Image".
-  rowSpace = 10
-    # cat=content/cImage/x; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text w/Image".
-  textMargin = 10
-  linkWrap.width = 800m
-  linkWrap.height = 600m
-  linkWrap.effects =
-    # cat=content/cImage/x; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
-  linkWrap.newWindow = 0
-    # cat=content/cImage/c; type=boolean; label= Images, caption split: If this is checked, then the image caption will be split by each line and they will appear underneath the corresponding image in the imagelist.
-  captionSplit = 0
-    # cat=content/cImage/c1; type=boolean; label= Images, text split: If this is checked, then the image text (alt, title, longdesc) will be split by each line and they will appear on the corresponding images in the imagelist.
-  imageTextSplit = 0
-    # cat=content/cImage/c2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
-  emptyTitleHandling = useAlt
-
-  titleInLink = 0
-  titleInLinkAndImg = 0
-}
-
-styles.content.uploads {
-  jumpurl_secure =
-  jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
-  jumpurl =
-    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
-  filesizeBytesLabels = " | K| M| G"
-}
-
-styles.content.mailform {
-  target = {$PAGE_TARGET}
-    # cat=content/cMailform; type=; label= Message, Formmail OK: This is the message (if any) that is popped-up (JavaScript) when a user clicks "send" with an email-form
-  goodMess =
-    # cat=content/cMailform; type=; label= Message, Formmail Missing: This is the message that is popped-up when a user has NOT filled required fields in an email-form
-  badMess =
-}
-
-styles.content.loginform {
-  target = _top
-    # cat=content/cLogin; type=int+; label= PID of user archive: Enter the page-uid number (PID) of the sysFolder where you keep your fe_users that are supposed to login on this site. This setting is necessary, if login is going to work!
-  pid =
-    # cat=content/cLogin; type=; label= Message, Login: This is the message (if any) that is popped-up when a user logs in as a front-end user
-  goodMess =
-}
-
-styles.content.searchform {
-    # cat=content/cSearch; type=; label= Message, Searchform: This is the message (if any) that is popped-up when a user performs a search
-  goodMess =
-}
-
-styles.content.searchresult {
-  resultTarget = {$PAGE_TARGET}
-  target = {$PAGE_TARGET}
-}
-
-  # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: Set to "page" if you have frames in the template. If not, set to "" (empty)
-PAGE_TARGET = page
-
-[compatVersion = 4.2.0]
-
-  # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
-PAGE_TARGET =
-
-content.pageFrameObj =
-[end]
-
-
-[compatVersion = 3.9.0]
-
-styles.content.imgtext >
-styles.content.imgtext {
-    # TIP! if register[maxImageWidth] is set, this will override maxW
-    # cat=content/cImage/b1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
-  maxW = 600
-    # cat=content/cImage/b2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width.
-  maxWInText =
-    # cat=content/cImage/c1; type=int+; label= Default Image Width: This indicates that default number of pixels (width) a block of images inserted as content will consume, if the user didn't specify otherwise in the content object.
-  linkWrap.width = 800m
-  linkWrap.height = 600m
-  linkWrap.effects =
-
-    # cat=content/cImage/x; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
-  linkWrap.newWindow = 0
-
-  captionSplit = 0
-    # cat=content/cImage/e1; type=boolean; label= Images, text split: If this is checked, then the image text (caption, alt, title, longdesc) will be split by each line and they will appear on the corresponding images in the imagelist.
-  imageTextSplit = 1
-    # cat=content/cImage/e2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
-  emptyTitleHandling = removeAttr
-    # cat=content/cImage/e3; type=boolean; label= Images, title in link: Do you want the 'title' attribute to be added to the surrounding <a> tag, if present? Recommended for accessibility is "true".
-  titleInLink = 1
-    # cat=content/cImage/e4; type=boolean; label= Images, title in link and IMG: If you have the title in the <a>-tag (titleInLink=true), you don't get the 'title' in the <img>-tag. IE will not show the tooltip anymore. So to get the 'title' in <img> too (to keep IE happy), set this too. Recommended for accessibility is "false". For correct tooltips on IE, set this to "true".
-  titleInLinkAndImg = 0
-
-    # cat=content/cImage/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
-  colSpace = 10
-    # cat=content/cImage/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
-  rowSpace = 5
-    # cat=content/cImage/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text w/Image".
-  textMargin = 10
-
-    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
-  borderColor = black
-    # cat=content/cImage/i2; type=int[0-100]; label= Image border, thickness: Thickness of border around images in content elements when "Border"-option for element is set.
-  borderThick = 2
-    # cat=content/cImage/i3; type=int+; label= Image border, padding: Padding left and right to the image, around the border.
-  borderSpace = 0
-    # cat=content/cImage/i4; type=string; label= Image border CSS-selector: If you want your border to apply elsewhere, change this setting. E.g. to apply to the whole image+caption, use 'DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image'.
-  borderSelector = DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image IMG
-    # cat=content/cImage/i5; type=boolean; label= Image row separation: Whether images should be rendered/wrapped in separated rows, e.g. inside a DIV.csc-textpic-imagerow element
-  separateRows = 1
-}
-
-[END]
-
-# TYPO3 SVN ID: $Id$
-
diff --git a/typo3/sysext/css_styled_content/static/current/constants.txt b/typo3/sysext/css_styled_content/static/current/constants.txt
new file mode 100644 (file)
index 0000000..797a6ed
--- /dev/null
@@ -0,0 +1,114 @@
+  # Clear out any constants in this reserved room!
+styles.content >
+
+content {
+    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
+  defaultHeaderType = 1
+    # cat=advanced/links; type=small; label=Pageframe object: The name of the "contentframe". Normally set to "page" if the site has a frameset. Otherwise it should be an empty value. This is important, as it determines the target of internal links!
+  pageFrameObj = 
+  
+  shortcut.tables = tt_content,tt_address,tt_links,tt_guest,tt_board,tt_calender,tt_products,tt_news,tt_rating,tt_poll
+   
+    # cat=content/other/a; type=small; label= Content Element margins (before): Space before each content element.
+  spaceBefore = 0
+    # cat=content/other/b; type=small; label= Content Element margins (after): Space after each content element.
+  spaceAfter = 0
+
+  splash.bgCol = white
+}
+
+
+    # cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
+styles.content.getNews.newsPid = 0
+
+styles.content.links {
+  keep = path
+    # cat=content/links; type=small; label= Target for external links
+  extTarget = _blank
+  target = {$PAGE_TARGET}
+  allowTags = b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,h1,h2,h3,h4,h5,h6,address
+}
+
+styles.content.imgtext {
+    # TIP! if register[maxImageWidth] is set, this will override maxW
+    # cat=content/cImage/b1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
+  maxW = 600
+    # cat=content/cImage/b2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width.
+  maxWInText =
+    # cat=content/cImage/c1; type=int+; label= Default Image Width: This indicates that default number of pixels (width) a block of images inserted as content will consume, if the user didn't specify otherwise in the content object.
+  linkWrap.width = 800m
+  linkWrap.height = 600m
+  linkWrap.effects =
+
+    # cat=content/cImage/x; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
+  linkWrap.newWindow = 0
+
+  captionSplit = 0
+    # cat=content/cImage/e1; type=boolean; label= Images, text split: If this is checked, then the image text (caption, alt, title, longdesc) will be split by each line and they will appear on the corresponding images in the imagelist.
+  imageTextSplit = 1
+    # cat=content/cImage/e2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
+  emptyTitleHandling = removeAttr
+    # cat=content/cImage/e3; type=boolean; label= Images, title in link: Do you want the 'title' attribute to be added to the surrounding <a> tag, if present? Recommended for accessibility is "true".
+  titleInLink = 1
+    # cat=content/cImage/e4; type=boolean; label= Images, title in link and IMG: If you have the title in the <a>-tag (titleInLink=true), you don't get the 'title' in the <img>-tag. IE will not show the tooltip anymore. So to get the 'title' in <img> too (to keep IE happy), set this too. Recommended for accessibility is "false". For correct tooltips on IE, set this to "true".
+  titleInLinkAndImg = 0
+
+    # cat=content/cImage/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
+  colSpace = 10
+    # cat=content/cImage/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
+  rowSpace = 5
+    # cat=content/cImage/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text w/Image".
+  textMargin = 10
+
+    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
+  borderColor = black
+    # cat=content/cImage/i2; type=int[0-100]; label= Image border, thickness: Thickness of border around images in content elements when "Border"-option for element is set.
+  borderThick = 2
+    # cat=content/cImage/i3; type=int+; label= Image border, padding: Padding left and right to the image, around the border.
+  borderSpace = 0
+    # cat=content/cImage/i4; type=string; label= Image border CSS-selector: If you want your border to apply elsewhere, change this setting. E.g. to apply to the whole image+caption, use 'DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image'.
+  borderSelector = DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image IMG
+    # cat=content/cImage/i5; type=boolean; label= Image row separation: Whether images should be rendered/wrapped in separated rows, e.g. inside a DIV.csc-textpic-imagerow element
+  separateRows = 1
+}
+
+styles.content.uploads {
+  jumpurl_secure =
+  jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
+  jumpurl =
+    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
+  filesizeBytesLabels = " | K| M| G"
+}
+
+styles.content.mailform {
+  target = {$PAGE_TARGET}
+    # cat=content/cMailform; type=; label= Message, Formmail OK: This is the message (if any) that is popped-up (JavaScript) when a user clicks "send" with an email-form
+  goodMess =
+    # cat=content/cMailform; type=; label= Message, Formmail Missing: This is the message that is popped-up when a user has NOT filled required fields in an email-form
+  badMess =
+}
+
+styles.content.loginform {
+  target = _top
+    # cat=content/cLogin; type=int+; label= PID of user archive: Enter the page-uid number (PID) of the sysFolder where you keep your fe_users that are supposed to login on this site. This setting is necessary, if login is going to work!
+  pid =
+    # cat=content/cLogin; type=; label= Message, Login: This is the message (if any) that is popped-up when a user logs in as a front-end user
+  goodMess =
+}
+
+styles.content.searchform {
+    # cat=content/cSearch; type=; label= Message, Searchform: This is the message (if any) that is popped-up when a user performs a search
+  goodMess =
+}
+
+styles.content.searchresult {
+  resultTarget = {$PAGE_TARGET}
+  target = {$PAGE_TARGET}
+}
+
+ # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
+PAGE_TARGET =
+
+
+# TYPO3 SVN ID: $Id: constants.txt 4493 2008-11-27 21:06:50Z steffenk $
+
diff --git a/typo3/sysext/css_styled_content/static/current/setup.txt b/typo3/sysext/css_styled_content/static/current/setup.txt
new file mode 100644 (file)
index 0000000..b8d639c
--- /dev/null
@@ -0,0 +1,1506 @@
+# ***************************************************************************
+# Notice: "styles." (and "temp.") objects are UNSET after template parsing!
+# Use "lib." for persisting storage of objects.
+# ***************************************************************************
+
+# Clear out any constants in this reserved room!
+styles.content >
+
+# get content
+styles.content.get = CONTENT
+styles.content.get {
+       table = tt_content
+       select.orderBy = sorting
+       select.where = colPos=0
+       select.languageField = sys_language_uid
+}
+
+# get content, left
+styles.content.getLeft < styles.content.get
+styles.content.getLeft.select.where = colPos=1
+
+# get content, right
+styles.content.getRight < styles.content.get
+styles.content.getRight.select.where = colPos=2
+
+# get content, margin
+styles.content.getBorder < styles.content.get
+styles.content.getBorder.select.where = colPos=3
+
+# get news
+styles.content.getNews < styles.content.get
+styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
+
+# Edit page object:
+styles.content.editPanelPage = COA
+styles.content.editPanelPage {
+       10 = EDITPANEL
+       10 {
+               allow = toolbar,move,hide
+               label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.page
+               label.wrap = |&nbsp;<b>%s</b>
+       }
+}
+
+
+
+
+
+
+
+
+
+
+
+# *********************************************************************
+# "lib." objects are preserved from unsetting after template parsing
+# *********************************************************************
+
+# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
+lib.parseFunc {
+       makelinks = 1
+       makelinks.http.keep = {$styles.content.links.keep}
+       makelinks.http.extTarget = {$styles.content.links.extTarget}
+       makelinks.mailto.keep = path
+       tags {
+               link = TEXT
+               link {
+                       current = 1
+                       typolink.parameter.data = parameters : allParams
+                       typolink.extTarget = {$styles.content.links.extTarget}
+                       typolink.target = {$styles.content.links.target}
+                       parseFunc.constants =1
+               }
+       }
+       allowTags = {$styles.content.links.allowTags}
+       denyTags = *
+       sword = <span class="csc-sword">|</span>
+       constants = 1
+
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
+styles.content.parseFunc < lib.parseFunc
+
+# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
+lib.parseFunc_RTE < lib.parseFunc
+lib.parseFunc_RTE {
+       //  makelinks >
+       # Processing <table> and <blockquote> blocks separately
+       externalBlocks = table, blockquote, ol,ul, div
+       externalBlocks {
+               # The blockquote content is passed into parseFunc again...
+               blockquote.stripNL=1
+               blockquote.callRecursive=1
+               blockquote.callRecursive.tagStdWrap.HTMLparser = 1
+               blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
+
+               ol.stripNL=1
+               ol.stdWrap.parseFunc = < lib.parseFunc
+
+               ul.stripNL=1
+               ul.stdWrap.parseFunc = < lib.parseFunc
+
+               table.stripNL=1
+               table.stdWrap.HTMLparser = 1
+               table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
+                       default = contenttable
+                       always = 1
+                       list = contenttable
+               }
+               table.stdWrap.HTMLparser.keepNonMatchedTags = 1
+               table.HTMLtableCells=1
+               table.HTMLtableCells {
+                       default.callRecursive=1
+                       addChr10BetweenParagraphs=1
+               }
+               div.stripNL = 1
+               div.callRecursive = 1 
+       }
+       nonTypoTagStdWrap.encapsLines {
+               encapsTagList = p,pre,h1,h2,h3,h4,h5,h6
+               remapTag.DIV = P
+               nonWrappedTag = P
+               innerStdWrap_all.ifBlank = &nbsp;
+               addAttributes.P.class = bodytext
+               addAttributes.P.class.setOnly=blank
+       }
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+
+# Content header:
+lib.stdheader = COA
+lib.stdheader {
+
+       # Create align style-attribute for <Hx> tags
+       2 = LOAD_REGISTER
+       2.headerStyle.field = header_position
+       2.headerStyle.required = 1
+       2.headerStyle.noTrimWrap = | style="text-align:|;"|
+
+       # Create class="csc-firstHeader" attribute for <Hx> tags
+       3 = LOAD_REGISTER
+       3.headerClass = csc-firstHeader
+       3.headerClass.if.value=1
+       3.headerClass.if.equals.data = cObj:parentRecordNumber
+       3.headerClass.noTrimWrap = | class="|"|
+
+       # Date format:
+       5 = TEXT
+       5.field = date
+       5.if.isTrue.field = date
+       5.strftime = %x
+       5.wrap = <p class="csc-header-date">|</p>
+       5.prefixComment = 2 | Header date:
+
+       # This CASE cObject renders the header content:
+       # currentValue is set to the header data, possibly wrapped in link-tags.
+       10 = CASE
+       10.setCurrent {
+               field = header
+               htmlSpecialChars = 1
+               typolink.parameter.field = header_link
+       }
+       10.key.field = header_layout
+       10.key.ifEmpty = {$content.defaultHeaderType}
+       10.key.ifEmpty.override.data = register: defaultHeaderType
+
+       10.1 = TEXT
+       10.1.current = 1
+       10.1.insertData = 1
+       10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
+
+       10.2 < .10.1
+       10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
+
+       10.3 < .10.1
+       10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
+
+       10.4 < .10.1
+       10.4.fontTag = <h4{register:headerStyle}{register:headerClass}>|</h4>
+
+       10.5 < .10.1
+       10.5.fontTag = <h5{register:headerStyle}{register:headerClass}>|</h5>
+
+       # Pops the used registers off the stack:
+       98 = RESTORE_REGISTER
+       99 = RESTORE_REGISTER
+
+       # Post-processing:
+       stdWrap.fieldRequired = header
+       stdWrap.if {
+               equals.field = header_layout
+               value = 100
+               negate = 1
+       }
+
+       stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
+       stdWrap.editIcons.beforeLastTag = 1
+       stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.header
+
+       stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
+       stdWrap.prefixComment = 2 | Header:
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#******************************************************
+# Including library for processing of some elements:
+#******************************************************
+includeLibs.tx_cssstyledcontent_pi1 = EXT:css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+
+
+#**********************************
+# tt_content is started
+#**********************************
+tt_content >
+tt_content = CASE
+tt_content.key.field = CType
+tt_content.stdWrap {
+       innerWrap.cObject = CASE
+       innerWrap.cObject {
+               key.field = section_frame
+
+               default = COA
+               default {
+                       10 = TEXT
+                       10 {
+                               value = <div id="c{field:uid}"
+                               override.cObject = TEXT
+                               override.cObject {
+                                       value = <div
+                                       if.value = div
+                                       if.equals.field = CType
+                               }
+                               insertData = 1
+                       }
+
+                       15 = TEXT
+                       15 {
+                               value = csc-default
+                               noTrimWrap = | class="|" |
+                               required = 1
+                       }
+
+                       20 = COA
+                       20 {
+                               10 = COA
+                               10 {
+                                       10 = TEXT
+                                       10 {
+                                               value = {$content.spaceBefore}
+                                               wrap = |+
+                                               if.isTrue = {$content.spaceBefore}
+                                       }
+
+                                       20 = TEXT
+                                       20 {
+                                               field = spaceBefore
+                                       }
+
+                                       stdWrap {
+                                               prioriCalc = intval
+                                               wrap = margin-top:|px;
+                                               required = 1
+                                               ifEmpty.value =
+                                       }
+                               }
+
+                               20 = COA
+                               20 {
+                                       10 = TEXT
+                                       10 {
+                                               value = {$content.spaceAfter}
+                                               wrap = |+
+                                               if.isTrue = {$content.spaceAfter}
+                                       }
+
+                                       20 = TEXT
+                                       20 {
+                                               field = spaceAfter
+                                       }
+
+                                       stdWrap {
+                                               prioriCalc = intval
+                                               wrap = margin-bottom:|px; 
+                                               required = 1
+                                               ifEmpty.value =
+                                       }
+                               }
+
+                               stdWrap.noTrimWrap = | style="|" |
+                               stdWrap.required = 1
+                       }
+                       30 = TEXT
+                       30.value = >|</div>
+               }
+
+               1 =< tt_content.stdWrap.innerWrap.cObject.default
+               1.15.value = csc-frame csc-frame-invisible
+
+               5 =< tt_content.stdWrap.innerWrap.cObject.default
+               5.15.value = csc-frame csc-frame-rulerBefore
+
+               6 =< tt_content.stdWrap.innerWrap.cObject.default
+               6.15.value = csc-frame csc-frame-rulerAfter
+
+               10 =< tt_content.stdWrap.innerWrap.cObject.default
+               10.15.value = csc-frame csc-frame-indent
+
+               11 =< tt_content.stdWrap.innerWrap.cObject.default
+               11.15.value = csc-frame csc-frame-indent3366
+
+               12 =< tt_content.stdWrap.innerWrap.cObject.default
+               12.15.value = csc-frame csc-frame-indent6633
+
+               20 =< tt_content.stdWrap.innerWrap.cObject.default
+               20.15.value = csc-frame csc-frame-frame1
+
+               21 =< tt_content.stdWrap.innerWrap.cObject.default
+               21.15.value = csc-frame csc-frame-frame2
+       }
+       
+       innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/pi1/locallang.xml:label.toTop}</a></p>
+       innerWrap2.insertData = 1
+       innerWrap2.fieldRequired = linkToTop
+       
+       prepend = TEXT
+       prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
+       prepend.if.isTrue.field = _LOCALIZED_UID
+
+       editPanel = 1
+       editPanel {
+               allow = move,new,edit,hide,delete
+               line = 5
+               label = %s
+               onlyCurrentPid = 1
+               previewBorder = 4
+               edit.displayRecord = 1
+       }
+
+       prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
+}
+
+
+
+# *****************
+# CType: header
+# *****************
+# See Object path "lib.stdheader"
+tt_content.header = COA
+tt_content.header {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = subheader
+               required = 1
+
+               dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
+               htmlSpecialChars = 1
+
+               editIcons = tt_content:subheader,layout
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.subheader
+
+               prefixComment = 2 | Subheader:
+       }
+}
+
+
+
+# *****************
+# CType: text
+# *****************
+tt_content.text = COA
+tt_content.text {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = bodytext
+               required = 1
+
+               parseFunc = < lib.parseFunc_RTE
+
+               editIcons = tt_content:bodytext, rte_enabled
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
+
+               prefixComment = 2 | Text:
+       }
+}
+
+
+
+# *****************
+# CType: image
+# *****************
+# (also used for rendering 'textpic' type):
+tt_content.image = COA
+tt_content.image.10 = < lib.stdheader
+tt_content.image.20 = USER
+tt_content.image.20 {
+       userFunc = tx_cssstyledcontent_pi1->render_textpic
+
+       # Image source
+       imgList.field = image
+       imgPath = uploads/pics/
+
+       # Single image rendering
+       imgObjNum = 1
+       1 {
+               file.import.current = 1
+               file.width.field = imagewidth
+               imageLinkWrap = 1
+               imageLinkWrap {
+                       bodyTag = <body style="margin:0; background:#fff;">
+                       wrap = <a href="javascript:close();"> | </a>
+                       width = {$styles.content.imgtext.linkWrap.width}
+                       height = {$styles.content.imgtext.linkWrap.height}
+                       effects = {$styles.content.imgtext.linkWrap.effects}
+
+                       JSwindow = 1
+                       JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
+
+                       enable.field = image_zoom
+                       enable.ifEmpty.typolink.parameter.field = image_link
+                       enable.ifEmpty.typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       enable.ifEmpty.typolink.returnLast = url
+
+                       typolink.parameter.field = image_link
+                       typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       typolink.target = {$styles.content.links.target}
+                       typolink.extTarget = {$styles.content.links.extTarget}
+               }
+
+               altText = TEXT
+               altText {
+                       field = altText
+                       stripHtml = 1
+                       split.token.char = 10
+                       split.token.if.isTrue = {$styles.content.imgtext.imageTextSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+
+               titleText < .altText
+               titleText.field = titleText
+
+               longdescURL < .altText
+               longdescURL.field = longdescURL
+
+               emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
+               titleInLink = {$styles.content.imgtext.titleInLink}
+               titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
+       }
+
+       maxW = {$styles.content.imgtext.maxW}
+       maxW.override.data = register:maxImageWidth
+       maxWInText = {$styles.content.imgtext.maxWInText}
+       maxWInText.override.data = register:maxImageWidthInText
+
+       equalH.field = imageheight
+
+       image_compression.field = image_compression
+       image_effects.field = image_effects
+
+       noRows.field = image_noRows
+
+       cols.field = imagecols
+       border.field = imageborder
+
+       caption {
+               1 = TEXT
+               1 {
+                       field = imagecaption
+                       required = 1
+                       parseFunc =< lib.parseFunc
+                       br = 1
+                       split.token.char = 10
+                       split.token.if.isPositive = {$styles.content.imgtext.imageTextSplit} + {$styles.content.imgtext.captionSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+       }
+       # captionSplit is deprecated, use imageTextSplit instead
+       captionSplit = {$styles.content.imgtext.captionSplit}
+       captionAlign.field = imagecaption_position
+       # caption/alttext/title/longdescURL splitting
+       imageTextSplit = {$styles.content.imgtext.imageTextSplit}
+
+       borderCol = {$styles.content.imgtext.borderColor}
+       borderThick = {$styles.content.imgtext.borderThick}
+       colSpace = {$styles.content.imgtext.colSpace}
+       rowSpace = {$styles.content.imgtext.rowSpace}
+       textMargin = {$styles.content.imgtext.textMargin}
+
+       borderSpace = {$styles.content.imgtext.borderSpace}
+       separateRows = {$styles.content.imgtext.separateRows}
+       addClasses =
+       addClassesImage =
+       addClassesImage.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
+       addClassesImage.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
+       addClassesImage.override.if {
+               isGreaterThan.field = imagecols
+               value = 1
+       }
+
+       #
+       imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
+       imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
+
+       # if noRows is set, wrap around each column:
+       imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
+
+       layout = CASE
+       layout {
+               key.field = imageorient
+               # above-center
+               default = TEXT
+               default.value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # above-right
+               1 = TEXT
+               1.value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # above-left
+               2 = TEXT
+               2.value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-center
+               8 = TEXT
+               8.value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-right
+               9 = TEXT
+               9.value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-left
+               10 = TEXT
+               10.value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # intext-right
+               17 = TEXT
+               17.value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
+               # intext-left
+               18 = TEXT
+               18.value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
+               # intext-right-nowrap
+               25 = TEXT
+               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>
+               25.insertData = 1
+               # intext-left-nowrap
+               26 = TEXT
+               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>
+               26.insertData = 1
+       }
+
+       rendering {
+               dl {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
+                       imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
+                       noRowsStdWrap.wrap =
+                       oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </dl>
+                       imgTagStdWrap.wrap = <dt> | </dt>
+                       editIconsStdWrap.wrap = <dd> | </dd>
+                       caption {
+                               required = 1
+                               wrap = <dd class="csc-textpic-caption"> | </dd>
+                       }
+               }
+               ul {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"><ul> | </ul></div>
+                       imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"><ul> | </ul></div>
+                       noRowsStdWrap.wrap = <ul> | </ul>
+                       oneImageStdWrap.dataWrap = <li class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </li>
+                       imgTagStdWrap.wrap =
+                       editIconsStdWrap.wrap = <div> | </div>
+                       caption.wrap = <div class="csc-textpic-caption"> | </div>
+               }
+               div {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
+                       imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
+                       noRowsStdWrap.wrap =
+                       oneImageStdWrap.dataWrap = <div class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </div>
+                       imgTagStdWrap.wrap = <div> | </div>
+                       editIconsStdWrap.wrap = <div> | </div>
+                       caption.wrap = <div class="csc-textpic-caption"> | </div>
+               }
+       }
+       renderMethod = dl
+
+       editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|image_noRows|imageborder],[image_link|image_zoom],[image_compression|image_effects|image_frames],imagecaption[imagecaption_position]
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
+
+       caption.editIcons = tt_content : imagecaption[imagecaption_position]
+       caption.editIcons.beforeLastTag=1
+       caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption
+
+       stdWrap.prefixComment = 2 | Image block:
+}
+
+
+
+# *****************
+# CType: textpic
+# *****************
+tt_content.textpic = COA
+tt_content.textpic {
+       10 = COA
+       10.if.value = 25
+       10.if.isLessThan.field = imageorient
+       10.10 = < lib.stdheader
+
+       20  = < tt_content.image.20
+       20 {
+               text.10 = COA
+               text.10 {
+                       if.value = 24
+                       if.isGreaterThan.field = imageorient
+                       10 = < lib.stdheader
+                       10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
+               }
+               text.20 = < tt_content.text.20
+               text.wrap = <div class="csc-textpic-text"> | </div>
+       }
+}
+
+
+
+# *****************
+# CType: bullet
+# *****************
+tt_content.bullets = COA
+tt_content.bullets {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = bodytext
+               trim = 1
+               split{
+                       token.char = 10
+                       cObjNum = |*|1|| 2|*|
+                       1.current = 1
+                       1.parseFunc =< lib.parseFunc
+                       1.wrap = <li class="odd">|</li>
+       
+                       2.current = 1
+                       2.parseFunc =< lib.parseFunc
+                       2.wrap = <li class="even">|</li>
+               }
+               dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
+               editIcons = tt_content: bodytext, [layout]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.php:eIcon.bullets
+       
+               prefixComment = 2 | Bullet list:
+       }
+}
+
+
+
+# *****************
+# CType: table
+# *****************
+# Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.table = COA
+tt_content.table {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_table
+       20.field = bodytext
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.innerStdWrap.wrap = |
+       20.innerStdWrap.parseFunc = < lib.parseFunc
+
+       20.stdWrap {
+               editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.table
+
+               prefixComment = 2 | Table:
+       }
+}
+
+
+# *****************
+# CType: uploads
+# *****************
+# Rendered by a PHP function specifically written to handle CE filelists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.uploads = COA
+tt_content.uploads {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_uploads
+       20.field = media
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+
+       20.linkProc {
+               target = _blank
+               jumpurl = {$styles.content.uploads.jumpurl}
+               jumpurl.secure = {$styles.content.uploads.jumpurl_secure}
+               jumpurl.secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
+               removePrependedNumbers = 1
+
+               iconCObject = IMAGE
+               iconCObject.file.import.data = register : ICON_REL_PATH
+               iconCObject.file.width = 150
+       }
+
+       20.filesize {
+               bytes = 1
+               bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size, imagecaption
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.filelist
+
+               prefixComment = 2 | File list:
+       }
+}
+
+
+# ******************
+# CType: multimedia
+# ******************
+tt_content.multimedia = COA
+tt_content.multimedia {
+       10 = < lib.stdheader
+
+       20 = MULTIMEDIA
+       20.file.field = multimedia
+       20.file.wrap = uploads/media/
+       20.file.listNum = 0
+       20.params.field = bodytext
+
+       20.stdWrap {
+               editIcons = tt_content: multimedia, bodytext
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
+
+               prefixComment = 2 | Multimedia element:
+       }
+}
+
+
+# ******************
+# CType: mailform
+# ******************
+tt_content.mailform = COA
+tt_content.mailform.10 = < lib.stdheader
+tt_content.mailform.20 = FORM
+tt_content.mailform.20 {
+       accessibility = 1
+       noWrapAttr=1
+       formName = mailform
+       dontMd5FieldNames = 1
+       layout = <div class="csc-mailform-field">###LABEL### ###FIELD###</div>
+       labelWrap.wrap = |
+       commentWrap.wrap = |
+       radioWrap.wrap = |<br />
+       radioWrap.accessibilityWrap = <fieldset###RADIO_FIELD_ID###><legend>###RADIO_GROUP_LABEL###</legend>|</fieldset>
+       REQ = 1
+       REQ.labelWrap.wrap = |
+       COMMENT.layout = <div class="csc-mailform-label">###LABEL###</div>
+       RADIO.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-radio">###FIELD###</span></div>
+       LABEL.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-label">###FIELD###</span></div>
+       target = {$styles.content.mailform.target}
+       goodMess = {$styles.content.mailform.goodMess}
+       badMess = {$styles.content.mailform.badMess}
+       redirect.field = pages
+       redirect.listNum = 0
+       recipient.field = subheader
+       data.field = bodytext
+       locationData = 1
+       
+       params.radio = class="csc-mailform-radio"
+       params.check = class="csc-mailform-check"
+       params.submit = class="csc-mailform-submit"
+
+       stdWrap.wrap = <fieldset class="csc-mailform"> | </fieldset>
+       stdWrap {
+               editIcons = tt_content: bodytext, pages, subheader
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.form
+
+               prefixComment = 2 | Mail form inserted:
+       }
+}
+
+
+# ******************
+# CType: search
+# ******************
+tt_content.search = COA
+tt_content.search.10 = < lib.stdheader
+# Result:
+tt_content.search.20 = SEARCHRESULT
+tt_content.search.20 {
+       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
+       languageField.tt_content = sys_language_uid
+       renderObj = COA
+       renderObj {
+
+               10 = TEXT
+               10.field = pages_title
+               10.htmlSpecialChars = 1
+               10.typolink {
+                       parameter.field = uid
+                       target = {$styles.content.searchresult.resultTarget}
+                       additionalParams.data = register:SWORD_PARAMS
+                       additionalParams.required = 1
+                       additionalParams.wrap = &no_cache=1
+               }
+               10.htmlSpecialChars = 1
+               10.wrap = <h3 class="csc-searchResultHeader">|</h3>
+
+               20 = COA
+               20 {
+                       10 = TEXT
+                       10.field = tt_content_bodytext
+                       10.stripHtml = 1
+                       10.htmlSpecialChars = 1
+               }
+               20.stdWrap.crop = 200 | ...
+               20.stdWrap.wrap = <p class="csc-searchResult">|</p>
+       }
+
+       layout = COA
+       layout {
+               wrap = <table border="0" cellspacing="0" cellpadding="2" class="csc-searchResultInfo"><tr> | </tr></table> ###RESULT###
+
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.resultRange
+               10.wrap = <td class="csc-searchResultRange"><p>|</p></td>
+
+               20 = TEXT
+               20.value = ###PREV###&nbsp;&nbsp;&nbsp;###NEXT###
+               20.wrap = <td class="csc-searchResultPrevNext"><p>|</p></td>
+       }
+
+       noResultObj = COA
+       noResultObj {
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.emptySearch
+               10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
+       }
+
+       next = TEXT
+       next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
+
+       prev = TEXT
+       prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultPrev
+
+       target = {$styles.content.searchresult.target}
+       range = 20
+
+       stdWrap.prefixComment = 2 | Search result:
+}
+
+# Form:
+tt_content.search.30 < tt_content.mailform.20
+tt_content.search.30 {
+       goodMess = {$styles.content.searchform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchWord
+               10.type = sword=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
+               20.type = scols=select
+               20.valueArray {
+                       10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
+                       10.value = pages.title-subtitle-keywords-description:tt_content.header
+                       20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.pageContent
+                       20.value = tt_content.header-bodytext-imagecaption
+               }
+               30.type = stype=hidden
+               30.value = L0
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchButton
+       }
+       type.field = pages
+       type.listNum = 0
+       locationData = HTTP_POST_VARS
+       no_cache = 1
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-searchform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.search
+
+               prefixComment = 2 | Search form inserted:
+       }
+}
+
+
+# ******************
+# CType: login
+# ******************
+tt_content.login < tt_content.mailform
+tt_content.login.10 = < lib.stdheader
+tt_content.login.20 {
+       goodMess = {$styles.content.loginform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.type = *user=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.password
+               20.type = *pass=password
+               30.type = logintype=hidden
+               30.value = login
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.login
+       }
+       type.field = pages
+       type.listNum = 0
+       target = {$styles.content.loginform.target}
+       locationData = 0
+       hiddenFields.pid = TEXT
+       hiddenFields.pid {
+               value = {$styles.content.loginform.pid}
+               override.field = pages
+               override.listNum = 1
+       }
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-loginform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.login
+
+               prefixComment = 2 | Login/Logout form:
+       }
+}
+[loginUser = *]
+tt_content.login.20 {
+       dataArray >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.label.wrap = |&nbsp;<!--###USERNAME###-->
+               30.type = logintype=hidden
+               30.value = logout
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.logout
+       }
+}
+[global]
+
+
+# ******************
+# CType: splash
+# ******************
+# Deprecated element.
+# Still here for backwards compliance with plugins using the "text box" type.
+tt_content.splash = CASE
+tt_content.splash.key.field = splash_layout
+tt_content.splash.stdWrap {
+       prefixComment = 2 | Textbox inserted (Deprecated)
+}
+tt_content.splash.default = COA
+tt_content.splash.default {
+       20 = CTABLE
+       20 {
+               c.1 = < tt_content.text
+               lm.1 = IMAGE
+               lm.1.file {
+                       import = uploads/pics/
+                       import.field = image
+                       import.listNum = 0
+                       maxW.field = imagewidth
+                       maxW.ifEmpty = 200
+               }
+               cMargins = 30,0,0,0
+       }
+}
+tt_content.splash.1 < tt_content.splash.default
+tt_content.splash.1.20.lm.1.file >
+tt_content.splash.1.20.lm.1.file = GIFBUILDER
+tt_content.splash.1.20.lm.1.file {
+       XY = [10.w]+10,[10.h]+10
+       backColor = {$content.splash.bgCol}
+       backColor.override.data = register:pageColor
+       format = jpg
+       5 = BOX
+       5.dimensions = 3,3,[10.w],[10.h]
+       5.color = #333333
+       7 = EFFECT
+       7.value = blur=99|blur=99|blur=99|blur=99|blur=99|blur=99|blur=99
+       10 = IMAGE
+       10.file {
+               import = uploads/pics/
+               import.field = image
+               import.listNum = 0
+               maxW.field = imagewidth
+               maxW.ifEmpty = 200
+       }
+}
+// The image frames are not available unless TypoScript code from styles.content.imgFrames.x is provided manually:
+tt_content.splash.2 < tt_content.splash.default
+#tt_content.splash.2.20.lm.1.file.m < styles.content.imgFrames.1
+tt_content.splash.3 < tt_content.splash.default
+#tt_content.splash.3.20.lm.1.file.m < styles.content.imgFrames.2
+
+// From plugin.postit1, if included:
+tt_content.splash.20 = < plugin.postit1
+
+
+
+# ****************
+# CType: menu
+# ****************
+tt_content.menu = COA
+tt_content.menu {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20 {
+               key.field = menu_type
+
+               # "Menu of these pages"
+               default = HMENU
+               default {
+                       special = list
+                       special.value.field = pages
+                       wrap = <ul class="csc-menu csc-menu-def">|</ul>
+                       1 = TMENU
+                       1 {
+                               target = {$PAGE_TARGET}
+                               NO.wrapItemAndSub = <li>|</li>
+                               NO.ATagTitle.field = description // title
+                       }
+               }
+
+               # "Menu of subpages to these pages"
+               1 < .default
+               1 {
+                       special = directory
+                       wrap = <ul class="csc-menu csc-menu-1">|</ul>
+               }
+       
+               # "Sitemap - liststyle"
+               2 = HMENU
+               2 {
+                       wrap = <div class="csc-sitemap">|</div>
+                       1 = TMENU
+                       1 {
+                               target = {$PAGE_TARGET}
+                               noBlur = 1
+                               expAll = 1
+                               wrap = <ul>|</ul>
+                               NO {
+                                       stdWrap.htmlSpecialChars = 1
+                                       wrapItemAndSub = <li>|</li>
+                                       ATagTitle.field = description // title
+                               }
+                       }
+                       2 < .1
+                       3 < .1
+                       4 < .1
+                       5 < .1
+                       6 < .1
+                       7 < .1
+               }
+       
+               # "Section index (pagecontent w/Index checked - liststyle)"
+               3 < styles.content.get
+               3 {
+                       wrap = <ul class="csc-menu csc-menu-3">|</ul>
+                       select.andWhere = sectionIndex!=0
+                       select.pidInList.override.field = pages
+                       renderObj = TEXT
+                       renderObj {
+                               fieldRequired = header
+                               trim = 1
+                               field = header
+                               htmlSpecialChars = 1
+                               noBlur = 1
+                               wrap = <li class="csc-section">|</li>
+                               typolink.parameter.field = pid
+                               typolink.section.field = uid
+                       }
+               }
+       
+               # "Menu of subpages to these pages (with abstract)"
+               4 < .1
+               4 {
+                       wrap = <dl class="csc-menu csc-menu-4">|</dl>
+                       1.NO {
+                               wrapItemAndSub >
+                               linkWrap = <dt>|</dt>
+                               after {
+                                       data = field : abstract // field : description // field : subtitle
+                                       required = 1
+                                       htmlSpecialChars = 1
+                                       wrap = <dd>|</dd>
+                               }
+                               ATagTitle.field = description // title
+                       }
+               }
+       
+               # "Recently updated pages"
+               5 < .default
+               5 {
+                       wrap = <ul class="csc-menu csc-menu-5">|</ul>
+                       special = updated
+                       special {
+                               maxAge = 3600*24*7
+                               excludeNoSearchPages = 1
+                       }
+               }
+       
+               # "Related pages (based on keywords)"
+               6 < .default
+               6 {
+                       wrap = <ul class="csc-menu csc-menu-6">|</ul>
+                       special = keywords
+                       special {
+                               excludeNoSearchPages = 1
+                       }
+               }
+       
+               # "Menu of subpages to these pages + sections - liststyle"
+               7 < .1
+               7 {
+                       wrap = <ul class="csc-menu csc-menu-7">|</ul>
+                       1.expAll = 1
+                       2 < .1
+                       2 {
+                               sectionIndex = 1
+                               sectionIndex.type = header
+                               wrap = <ul>|</ul>
+                               NO.wrapItemAndSub = <li class="csc-section">|</li>
+                       }
+               }
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: menu_type, pages
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.menuSitemap
+
+               prefixComment = 2 | Menu/Sitemap element:
+       }
+}
+
+
+
+# ****************
+# CType: shortcut
+# ****************
+# Should be a complete copy from the old static template "content (default)"
+tt_content.shortcut = COA
+tt_content.shortcut {
+       20 = CASE
+       20.key.field = layout
+       20.0= RECORDS
+       20.0 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               conf.tt_content = < tt_content
+               conf.tt_address = < tt_address
+               conf.tt_links = < tt_links
+               conf.tt_guest = < tt_guest
+               conf.tt_board = < tt_board
+               conf.tt_calender = < tt_calender
+               conf.tt_rating < tt_rating
+               conf.tt_products = < tt_products
+               conf.tt_news = < tt_news
+               conf.tt_poll = < plugin.tt_poll
+       }
+       20.1= RECORDS
+       20.1 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               conf.tt_poll = < plugin.tt_poll
+               conf.tt_poll.code = RESULT,SUBMITTEDVOTE
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: records
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.recordList
+
+               prefixComment = 2 | Inclusion of other records (by reference):
+       }
+}
+
+
+# ****************
+# CType: list
+# ****************
+# Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
+tt_content.list = COA
+tt_content.list {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20.key.field = list_type
+       20 {
+               # LIST element references (NOT copy of objects!)
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               3 = CASE
+               3.key.field = layout
+               3.0 = < plugin.tt_guest
+
+               4 = CASE
+               4.key.field = layout
+               4.0 = < plugin.tt_board_list
+               4.1 = < plugin.tt_board_tree
+
+               2 = CASE
+               2.key.field = layout
+               2.0 = < plugin.tt_board_tree
+
+               5 = CASE
+               5.key.field = layout
+               5.0 = < plugin.tt_products
+
+               7 = CASE
+               7.key.field = layout
+               7.0 = < plugin.tt_calender
+
+               8 = CASE
+               8.key.field = layout
+               8.0 = < plugin.tt_rating
+
+               9 = CASE
+               9.key.field = layout
+               9.0 = < plugin.tt_news
+
+               11 = CASE
+               11.key.field = layout
+               11.0 = < plugin.tipafriend
+
+               20 = CASE
+               20.key.field = layout
+               20.0 = < plugin.feadmin.fe_users
+
+               21 = CASE
+               21.key.field = layout
+               21.0 = < plugin.feadmin.dmailsubscription
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: list_type, layout, select_key, pages [recursive]
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.plugin
+
+               prefixComment = 2 | Plugin inserted:
+       }
+}
+
+
+# ****************
+# CType: script
+# ****************
+# 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.
+tt_content.script = TEXT
+tt_content.script {
+       value =
+
+       prefixComment = 2 | Script element (Deprecated)
+}
+
+
+# ****************
+# CType: div
+# ****************
+tt_content.div = TEXT
+tt_content.div {
+       value =
+       prefixComment = 2 | Div element
+}
+
+
+# ****************
+# CType: html
+# ****************
+# This truely IS a content object, launched from inside the PHP class of course.
+# Should be a complete copy from the old static template "content (default)"
+tt_content.html = TEXT
+tt_content.html {
+       field = bodytext
+
+       editIcons = tt_content: pages
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.html
+
+       prefixComment = 2 | Raw HTML content:
+}
+
+
+# ****************
+# Default error msg:
+# ****************
+tt_content.default = TEXT
+tt_content.default {
+       field = CType
+       wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
+
+       prefixComment = 2 | Unknown element message:
+}
+
+# *********************************************************************
+# ACCESSIBILTY MODE
+# *********************************************************************
+
+
+
+
+
+
+
+plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
+       /* Captions */
+       DIV.csc-textpic-caption-c .csc-textpic-caption { text-align: center; }
+       DIV.csc-textpic-caption-r .csc-textpic-caption { text-align: right; }
+       DIV.csc-textpic-caption-l .csc-textpic-caption { text-align: left; }
+
+       /* Needed for noRows setting */
+       DIV.csc-textpic DIV.csc-textpic-imagecolumn { float: left; display: inline; }
+
+       /* Border just around the image */
+       {$styles.content.imgtext.borderSelector} {
+               border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
+               padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
+       }
+
+       DIV.csc-textpic-imagewrap { padding: 0; }
+
+       DIV.csc-textpic IMG { border: none; }
+
+       /* DIV: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DIV.csc-textpic-image { float: left; }
+
+       /* UL: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap UL { list-style: none; margin: 0; padding: 0; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI { float: left; margin: 0; padding: 0; }
+
+       /* DL: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image { float: left; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DT { float: none; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD { float: none; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD IMG { border: none; } /* FE-Editing Icons */
+       DL.csc-textpic-image { margin: 0; }
+       DL.csc-textpic-image DT { margin: 0; display: inline; }
+       DL.csc-textpic-image DD { margin: 0; }
+
+       /* Clearer */
+       DIV.csc-textpic-clear { clear: both; }
+
+       /* Margins around images: */
+
+       /* Pictures on left, add margin on right */
+       DIV.csc-textpic-left DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-right: {$styles.content.imgtext.colSpace}px;
+       }
+
+       /* Pictures on right, add margin on left */
+       DIV.csc-textpic-right DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-left: {$styles.content.imgtext.colSpace}px;
+       }
+
+       /* Pictures centered, add margin on left */
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-left: {$styles.content.imgtext.colSpace}px;
+       }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image .csc-textpic-caption { margin: 0; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image IMG { margin: 0; }
+
+       /* Space below each image (also in-between rows) */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
+       DIV.csc-textpic-equalheight DIV.csc-textpic-imagerow { margin-bottom: {$styles.content.imgtext.rowSpace}px; display: block; }
+       DIV.csc-textpic DIV.csc-textpic-imagerow { clear: both; }
+
+       /* No margins around the whole image-block */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-firstcol { margin-left: 0px !important; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-lastcol { margin-right: 0px !important; }
+
+       /* Add margin from image-block to text (in case of "Text w/ images") */
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap,
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap {
+               margin-right: {$styles.content.imgtext.textMargin}px !important;
+       }
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap,
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap {
+               margin-left: {$styles.content.imgtext.textMargin}px !important;
+       }
+
+       /* Positioning of images: */
+
+       /* Above */
+       DIV.csc-textpic-above DIV.csc-textpic-text { clear: both; }
+
+       /* Center (above or below) */
+       DIV.csc-textpic-center { text-align: center; /* IE-hack */ }
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap { margin: 0 auto; }
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image { text-align: left; /* Remove IE-hack */ }
+       DIV.csc-textpic-center DIV.csc-textpic-text { text-align: left; /* Remove IE-hack */ }
+
+       /* Right (above or below) */
+       DIV.csc-textpic-right DIV.csc-textpic-imagewrap { float: right; }
+       DIV.csc-textpic-right DIV.csc-textpic-text { clear: right; }
+
+       /* Left (above or below) */
+       DIV.csc-textpic-left DIV.csc-textpic-imagewrap { float: left; }
+       DIV.csc-textpic-left DIV.csc-textpic-text { clear: left; }
+
+       /* Left (in text) */
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap { float: left; }
+
+       /* Right (in text) */
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap { float: right; }
+
+       /* Right (in text, no wrap around) */
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap { float: right; clear: both; }
+       /* Hide from IE5-mac. Only IE-win sees this. \*/
+       * html DIV.csc-textpic-intext-right-nowrap .csc-textpic-text { height: 1%; }
+       /* End hide from IE5/mac */
+
+       /* Left (in text, no wrap around) */
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap { float: left; clear: both; }
+       /* Hide from IE5-mac. Only IE-win sees this. \*/
+       * html DIV.csc-textpic-intext-left-nowrap .csc-textpic-text { height: 1%; }
+       /* End hide from IE5/mac */
+       
+       DIV.csc-textpic DIV.csc-textpic-imagerow-last { margin-bottom: 0; }
+
+       /* Browser fixes: */
+
+       /* Fix for unordered and ordered list with image "In text, left" */
+       .csc-textpic-intext-left ol, .csc-textpic-intext-left ul {padding-left: 40px; overflow: auto; height: 1%; }
+)
+
+# TYPO3 SVN ID: $Id: setup.txt 4493 2008-11-27 21:06:50Z steffenk $
diff --git a/typo3/sysext/css_styled_content/static/setup.txt b/typo3/sysext/css_styled_content/static/setup.txt
deleted file mode 100755 (executable)
index 6c27ebc..0000000
+++ /dev/null
@@ -1,1682 +0,0 @@
-# ***************************************************************************
-# Notice: "styles." (and "temp.") objects are UNSET after template parsing!
-# Use "lib." for persisting storage of objects.
-# ***************************************************************************
-
-# Clear out any constants in this reserved room!
-styles.content >
-
-# get content
-styles.content.get = CONTENT
-styles.content.get {
-       table = tt_content
-       select.orderBy = sorting
-       select.where = colPos=0
-       select.languageField = sys_language_uid
-}
-
-# get content, left
-styles.content.getLeft < styles.content.get
-styles.content.getLeft.select.where = colPos=1
-
-# get content, right
-styles.content.getRight < styles.content.get
-styles.content.getRight.select.where = colPos=2
-
-# get content, margin
-styles.content.getBorder < styles.content.get
-styles.content.getBorder.select.where = colPos=3
-
-# get news
-styles.content.getNews < styles.content.get
-styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
-
-# Edit page object:
-styles.content.editPanelPage = COA
-styles.content.editPanelPage {
-       10 = EDITPANEL
-       10 {
-               allow = toolbar,move,hide
-               label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.page
-               label.wrap = |&nbsp;<b>%s</b>
-       }
-}
-
-
-
-
-
-
-
-
-
-
-
-# *********************************************************************
-# "lib." objects are preserved from unsetting after template parsing
-# *********************************************************************
-
-# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
-lib.parseFunc {
-       makelinks = 1
-       makelinks.http.keep = {$styles.content.links.keep}
-       makelinks.http.extTarget = {$styles.content.links.extTarget}
-       makelinks.mailto.keep = path
-       tags {
-               link = TEXT
-               link {
-                       current = 1
-                       typolink.parameter.data = parameters : allParams
-                       typolink.extTarget = {$styles.content.links.extTarget}
-                       typolink.target = {$styles.content.links.target}
-                       parseFunc.constants =1
-               }
-       }
-       allowTags = {$styles.content.links.allowTags}
-       denyTags = *
-       sword = <span class="csc-sword">|</span>
-       constants = 1
-
-       nonTypoTagStdWrap.HTMLparser = 1
-       nonTypoTagStdWrap.HTMLparser {
-               keepNonMatchedTags = 1
-               htmlSpecialChars = 2
-       }
-}
-
-# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
-styles.content.parseFunc < lib.parseFunc
-
-# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
-lib.parseFunc_RTE < lib.parseFunc
-lib.parseFunc_RTE {
-       //  makelinks >
-       # Processing <table> and <blockquote> blocks separately
-       externalBlocks = table, blockquote, ol,ul
-       externalBlocks {
-               # The blockquote content is passed into parseFunc again...
-               blockquote.stripNL=1
-               blockquote.callRecursive=1
-               blockquote.callRecursive.tagStdWrap.HTMLparser = 1
-               blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
-
-               ol.stripNL=1
-               ol.stdWrap.parseFunc = < lib.parseFunc
-
-               ul.stripNL=1
-               ul.stdWrap.parseFunc = < lib.parseFunc
-
-               table.stripNL=1
-               table.stdWrap.HTMLparser = 1
-               table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
-                       default = contenttable
-                       always = 1
-                       list = contenttable
-               }
-               table.stdWrap.HTMLparser.keepNonMatchedTags = 1
-               table.HTMLtableCells=1
-               table.HTMLtableCells {
-                       default.callRecursive=1
-                       addChr10BetweenParagraphs=1
-               }
-       }
-       nonTypoTagStdWrap.encapsLines {
-               encapsTagList = div,p,pre,h1,h2,h3,h4,h5,h6
-               remapTag.DIV = P
-               nonWrappedTag = P
-               innerStdWrap_all.ifBlank = &nbsp;
-               addAttributes.P.class = bodytext
-               addAttributes.P.class.setOnly=blank
-       }
-       nonTypoTagStdWrap.HTMLparser = 1
-       nonTypoTagStdWrap.HTMLparser {
-               keepNonMatchedTags = 1
-               htmlSpecialChars = 2
-       }
-}
-
-
-# Content header:
-lib.stdheader = COA
-lib.stdheader {
-
-       # Create align style-attribute for <Hx> tags
-       2 = LOAD_REGISTER
-       2.headerStyle.field = header_position
-       2.headerStyle.required = 1
-       2.headerStyle.noTrimWrap = | style="text-align:|;"|
-
-       # Create class="csc-firstHeader" attribute for <Hx> tags
-       3 = LOAD_REGISTER
-       3.headerClass = csc-firstHeader
-       3.headerClass.if.value=1
-       3.headerClass.if.equals.data = cObj:parentRecordNumber
-       3.headerClass.noTrimWrap = | class="|"|
-
-       # Date format:
-       5 = TEXT
-       5.field = date
-       5.if.isTrue.field = date
-       5.date = d/m Y
-       5.wrap = <p class="csc-header-date">|</p>
-       5.prefixComment = 2 | Header date:
-
-       # This CASE cObject renders the header content:
-       # currentValue is set to the header data, possibly wrapped in link-tags.
-       10 = CASE
-       10.setCurrent {
-               field = header
-               htmlSpecialChars = 1
-               typolink.parameter.field = header_link
-       }
-       10.key.field = header_layout
-       10.key.ifEmpty = {$content.defaultHeaderType}
-       10.key.ifEmpty.override.data = register: defaultHeaderType
-
-       10.1 = TEXT
-       10.1.current = 1
-       10.1.insertData = 1
-       10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
-
-       10.2 < .10.1
-       10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
-
-       10.3 < .10.1
-       10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
-
-       10.4 < .10.1
-       10.4.fontTag = <h4{register:headerStyle}{register:headerClass}>|</h4>
-
-       10.5 < .10.1
-       10.5.fontTag = <h5{register:headerStyle}{register:headerClass}>|</h5>
-
-       # Pops the used registers off the stack:
-       98 = RESTORE_REGISTER
-       99 = RESTORE_REGISTER
-
-       # Post-processing:
-       stdWrap.fieldRequired = header
-       stdWrap.if {
-               equals.field = header_layout
-               value = 100
-               negate = 1
-       }
-
-       stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
-       stdWrap.editIcons.beforeLastTag = 1
-       stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.header
-
-       stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
-       stdWrap.prefixComment = 2 | Header:
-}
-
-[compatVersion = 4.2.0]
-lib.stdheader.5.date >
-lib.stdheader.5.strftime = %x
-[end]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#******************************************************
-# Including library for processing of some elements:
-#******************************************************
-includeLibs.tx_cssstyledcontent_pi1 = EXT:css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
-
-
-#**********************************
-# tt_content is started
-#**********************************
-tt_content >
-tt_content = CASE
-tt_content.key.field = CType
-tt_content.stdWrap {
-
-       spaceBefore.field = spaceBefore
-       spaceAfter.field = spaceAfter
-       space = {$content.space}
-
-       innerWrap.cObject = CASE
-       innerWrap.cObject {
-               key.field = section_frame
-
-               1 = TEXT
-               1.value = <div class="csc-frame csc-frame-invisible">|</div>
-
-               5 = TEXT
-               5.value = <div class="csc-frame csc-frame-rulerBefore"></div>|
-
-               6 = TEXT
-               6.value = |<div class="csc-frame csc-frame-rulerAfter"></div>
-
-               10 = TEXT
-               10.value = <div class="csc-frame csc-frame-indent">|</div>
-
-               11 = TEXT
-               11.value = <div class="csc-frame csc-frame-indent3366">|</div>
-
-               12 = TEXT
-               12.value = <div class="csc-frame csc-frame-indent6633">|</div>
-
-               20 = TEXT
-               20.value = <div class="csc-frame csc-frame-frame1">|</div>
-
-               21 = TEXT
-               21.value = <div class="csc-frame csc-frame-frame2">|</div>
-       }
-
-       innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/pi1/locallang.xml:label.toTop}</a></p>
-       innerWrap2.insertData = 1
-       innerWrap2.fieldRequired = linkToTop
-
-       dataWrap = <a id="c{field:uid}"></a> |
-
-       prepend = TEXT
-       prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
-       prepend.if.isTrue.field = _LOCALIZED_UID
-
-       editPanel = 1
-       editPanel {
-               allow = move,new,edit,hide,delete
-               line = 5
-               label = %s
-               onlyCurrentPid = 1
-               previewBorder = 4
-               edit.displayRecord = 1
-       }
-
-       prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
-
-}
-
-[compatVersion = 4.3.0]
-tt_content.stdWrap {
-       spaceBefore.field >
-       spaceAfter >
-       space >
-       dataWrap >
-       innerWrap.cObject >
-
-       innerWrap.cObject = CASE
-       innerWrap.cObject {
-               key.field = section_frame
-
-               default = COA
-               default {
-                       10 = TEXT
-                       10 {
-                               value = <div id="c{field:uid}"
-                               override.cObject = TEXT
-                               override.cObject {
-                                       value = <div
-                                       if.value = div
-                                       if.equals.field = CType
-                               }
-                               insertData = 1
-                       }
-
-                       15 = TEXT
-                       15 {
-                               value = csc-default
-                               noTrimWrap = | class="|" |
-                               required = 1
-                       }
-
-                       20 = COA
-                       20 {
-                               10 = COA
-                               10 {
-                                       10 = TEXT
-                                       10 {
-                                               value = {$content.spaceBefore}
-                                               wrap = |+
-                                               if.isTrue = {$content.spaceBefore}
-                                       }
-
-                                       20 = TEXT
-                                       20 {
-                                               field = spaceBefore
-                                       }
-
-                                       stdWrap {
-                                               prioriCalc = intval
-                                               wrap = margin-top:|px;
-                                               required = 1
-                                               ifEmpty.value =
-                                       }
-                               }
-
-                               20 = COA
-                               20 {
-                                       10 = TEXT
-                                       10 {
-                                               value = {$content.spaceAfter}
-                                               wrap = |+
-                                               if.isTrue = {$content.spaceAfter}
-                                       }
-
-                                       20 = TEXT
-                                       20 {
-                                               field = spaceAfter
-                                       }
-
-                                       stdWrap {
-                                               prioriCalc = intval
-                                               wrap = margin-bottom:|px; 
-                                               required = 1
-                                               ifEmpty.value =
-                                       }
-                               }
-
-                               stdWrap.noTrimWrap = | style="|" |
-                               stdWrap.required = 1
-                       }
-                       30 = TEXT
-                       30.value = >|</div>
-               }
-
-               1 =< tt_content.stdWrap.innerWrap.cObject.default
-               1.15.value = csc-frame csc-frame-invisible
-
-               5 =< tt_content.stdWrap.innerWrap.cObject.default
-               5.15.value = csc-frame csc-frame-rulerBefore
-
-               6 =< tt_content.stdWrap.innerWrap.cObject.default
-               6.15.value = csc-frame csc-frame-rulerAfter
-
-               10 =< tt_content.stdWrap.innerWrap.cObject.default
-               10.15.value = csc-frame csc-frame-indent
-
-               11 =< tt_content.stdWrap.innerWrap.cObject.default
-               11.15.value = csc-frame csc-frame-indent3366
-
-               12 =< tt_content.stdWrap.innerWrap.cObject.default
-               12.15.value = csc-frame csc-frame-indent6633
-
-               20 =< tt_content.stdWrap.innerWrap.cObject.default
-               20.15.value = csc-frame csc-frame-frame1
-
-               21 =< tt_content.stdWrap.innerWrap.cObject.default
-               21.15.value = csc-frame csc-frame-frame2
-       }
-}
-[end]
-
-
-# *****************
-# CType: header
-# *****************
-# See Object path "lib.stdheader"
-tt_content.header = COA
-tt_content.header {
-       10 = < lib.stdheader
-
-       20 = TEXT
-       20 {
-               field = subheader
-               required = 1
-
-               dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
-               htmlSpecialChars = 1
-
-               editIcons = tt_content:subheader,layout
-               editIcons.beforeLastTag = 1
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.subheader
-
-               prefixComment = 2 | Subheader:
-       }
-}
-
-
-# *****************
-# CType: text
-# *****************
-tt_content.text = COA
-tt_content.text {
-       10 = < lib.stdheader
-
-       20 = TEXT
-       20 {
-               field = bodytext
-               required = 1
-
-               parseFunc = < lib.parseFunc_RTE
-
-               editIcons = tt_content:bodytext, rte_enabled
-               editIcons.beforeLastTag = 1
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
-
-               prefixComment = 2 | Text:
-       }
-}
-
-
-# *****************
-# CType: image
-# *****************
-# (also used for rendering 'textpic' type):
-tt_content.image = COA
-tt_content.image.10 = < lib.stdheader
-tt_content.image.20 = IMGTEXT
-tt_content.image.20 {
-       imgList.field = image
-       textPos.field = imageorient
-       imgPath = uploads/pics/
-       imgObjNum = 1
-       1 {
-               file.import.current = 1
-               file.width.field = imagewidth
-               params = align="top"
-               imageLinkWrap = 1
-               imageLinkWrap {
-                       bodyTag = <body bgcolor="black">
-                       wrap = <a href="javascript:close();"> | </a>
-                       width = {$styles.content.imgtext.linkWrap.width}
-                       height = {$styles.content.imgtext.linkWrap.height}
-                       effects = {$styles.content.imgtext.linkWrap.effects}
-
-                       JSwindow = 1
-                       JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
-                       JSwindow.expand = 17,20
-
-                       enable.field = image_zoom
-                       enable.ifEmpty.typolink.parameter.field = image_link
-                       enable.ifEmpty.typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
-                       enable.ifEmpty.typolink.returnLast = url
-
-                       typolink.parameter.field = image_link
-                       typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
-                       typolink.target = {$styles.content.links.target}
-                       typolink.extTarget = {$styles.content.links.extTarget}
-               }
-
-               altText = TEXT
-               altText {
-                       field = altText
-                       stripHtml = 1
-                       split.token.char = 10
-                       split.token.if.isTrue = {$styles.content.imgtext.imageTextSplit}
-                       split.returnKey.data = register : IMAGE_NUM_CURRENT
-               }
-
-               titleText < .altText
-               titleText.field = titleText
-
-               longdescURL < .altText
-               longdescURL.field = longdescURL
-
-               emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
-               titleInLink = {$styles.content.imgtext.titleInLink}
-               titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
-       }
-
-       maxW = {$styles.content.imgtext.maxW}
-       maxW.override.data = register:maxImageWidth
-       maxWInText = {$styles.content.imgtext.maxWInText}
-       maxWInText.override.data = register:maxImageWidthInText
-
-       equalH.field = imageheight
-       spaceBelowAbove = 6
-
-       image_compression.field = image_compression
-       image_effects.field = image_effects
-
-       noRows.field = image_noRows
-
-       cols.field = imagecols
-       border.field = imageborder
-       caption {
-               1 = TEXT
-               1 {
-                       field = imagecaption
-                       required = 1
-                       parseFunc =< lib.parseFunc
-                       br = 1
-                       fontTag = <p class="csc-caption">|</p>
-                       wrapAlign.field = imagecaption_position
-                       split.token.char = 10
-                       split.token.if.isPositive = {$styles.content.imgtext.imageTextSplit} + {$styles.content.imgtext.captionSplit}
-                       split.returnKey.data = register : IMAGE_NUM_CURRENT
-               }
-       }
-       # captionSplit is deprecated, use imageTextSplit instead
-       captionSplit = {$styles.content.imgtext.captionSplit}
-       # caption/alttext/title/longdescURL splitting
-       imageTextSplit = {$styles.content.imgtext.imageTextSplit}
-
-       borderCol = {$styles.content.imgtext.borderColor}
-       borderThick = {$styles.content.imgtext.borderThick}
-       colSpace = {$styles.content.imgtext.colSpace}
-       rowSpace = {$styles.content.imgtext.rowSpace}
-       textMargin = {$styles.content.imgtext.textMargin}
-
-       editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|image_noRows|imageborder],[image_link|image_zoom],[image_compression|image_effects|image_frames],imagecaption[imagecaption_position]
-       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
-
-       caption.editIcons = tt_content : imagecaption[imagecaption_position]
-       caption.editIcons.beforeLastTag=1
-       caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption
-
-       stdWrap.prefixComment = 2 | Image block:
-}
-
-
-# *****************
-# CType: textpic
-# *****************
-tt_content.textpic = COA
-tt_content.textpic {
-       10 = COA
-       10.if.value = 25
-       10.if.isLessThan.field = imageorient
-       10.10 = < lib.stdheader
-
-       20  = < tt_content.image.20
-       20.text.10 = COA
-       20.text.10 {
-               if.value = 24
-               if.isGreaterThan.field = imageorient
-               10 = < lib.stdheader
-               10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
-       }
-       20.text.20 = < tt_content.text.20
-}
-
-
-# *****************
-# CType: bullet
-# *****************
-# Rendered by a PHP function specifically written to handle CE bullet lists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
-tt_content.bullets = COA
-tt_content.bullets {
-       10 = < lib.stdheader
-
-       20 = USER
-       20.userFunc = tx_cssstyledcontent_pi1->render_bullets
-       20.field = bodytext
-
-       20.innerStdWrap.parseFunc = < lib.parseFunc
-
-       20.stdWrap {
-               editIcons = tt_content: bodytext, [layout]
-               editIcons.beforeLastTag = 1
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bullets
-
-               prefixComment = 2 | Bullet list:
-       }
-}
-
-[compatVersion = 4.2.0]
-tt_content.bullets.20 >
-tt_content.bullets.20 = TEXT
-tt_content.bullets.20 {
-       field = bodytext
-       trim = 1
-       split{
-               token.char = 10
-               cObjNum = |*|1|| 2|*|
-               1.current = 1
-               1.parseFunc =< lib.parseFunc
-               1.wrap = <li class="odd">|</li>
-
-               2.current = 1
-               2.parseFunc =< lib.parseFunc
-               2.wrap = <li class="even">|</li>
-       }
-       dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
-       editIcons = tt_content: bodytext, [layout]
-       editIcons.beforeLastTag = 1
-       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.php:eIcon.bullets
-
-       prefixComment = 2 | Bullet list:
-}
-[end]
-
-# *****************
-# CType: table
-# *****************
-# Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
-tt_content.table = COA
-tt_content.table {
-       10 = < lib.stdheader
-
-       20 = USER
-       20.userFunc = tx_cssstyledcontent_pi1->render_table
-       20.field = bodytext
-
-       20.color {
-               default =
-               1 = #EDEBF1
-               2 = #F5FFAA
-       }
-       20.tableParams_0 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-       20.tableParams_1 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-       20.tableParams_2 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-       20.tableParams_3 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-       20.innerStdWrap.wrap = <p>|</p>
-       20.innerStdWrap.parseFunc = < lib.parseFunc
-
-       20.stdWrap {
-               editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
-               editIcons.beforeLastTag = 1
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.table
-
-               prefixComment = 2 | Table:
-       }
-}
-
-
-# *****************
-# CType: uploads
-# *****************
-# Rendered by a PHP function specifically written to handle CE filelists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
-tt_content.uploads = COA
-tt_content.uploads {
-       10 = < lib.stdheader
-
-       20 = USER
-       20.userFunc = tx_cssstyledcontent_pi1->render_uploads
-       20.field = media
-
-       20.color {
-               default =
-               1 = #EDEBF1
-               2 = #F5FFAA
-       }
-       20.tableParams_0 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-       20.tableParams_1 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-       20.tableParams_2 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-       20.tableParams_3 {
-               border =
-               cellpadding =
-               cellspacing =
-       }
-
-       20.linkProc {
-               target = _blank
-               jumpurl = {$styles.content.uploads.jumpurl}
-               jumpurl.secure = {$styles.content.uploads.jumpurl_secure}
-               jumpurl.secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
-               removePrependedNumbers = 1
-
-               iconCObject = IMAGE
-               iconCObject.file.import.data = register : ICON_REL_PATH
-               iconCObject.file.width = 150
-       }
-
-       20.filesize {
-               bytes = 1
-               bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
-       }
-
-       20.stdWrap {
-               editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size, imagecaption
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.filelist
-
-               prefixComment = 2 | File list:
-       }
-}
-
-
-# ******************
-# CType: multimedia
-# ******************
-tt_content.multimedia = COA
-tt_content.multimedia {
-       10 = < lib.stdheader
-
-       20 = MULTIMEDIA
-       20.file.field = multimedia
-       20.file.wrap = uploads/media/
-       20.file.listNum = 0
-       20.params.field = bodytext
-
-       20.stdWrap {
-               editIcons = tt_content: multimedia, bodytext
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
-
-               prefixComment = 2 | Multimedia element:
-       }
-}
-
-
-# ******************
-# CType: mailform
-# ******************
-tt_content.mailform = COA
-tt_content.mailform.10 = < lib.stdheader
-tt_content.mailform.20 = FORM
-tt_content.mailform.20 {
-       layout = <tr><td class="csc-form-labelcell">###LABEL###</td><td class="csc-form-fieldcell">###FIELD###</td></tr>
-       labelWrap.wrap = <p class="csc-form-label">|</p>
-       commentWrap.wrap = <p class="csc-form-comment">|</p>
-       radioWrap.wrap = <span class="csc-form-radio">|</span><br />
-       REQ = 1
-       REQ.labelWrap.wrap = <p class="csc-form-label-req">|</p>
-       COMMENT.layout = <tr><td colspan="2" class="csc-form-commentcell">###LABEL###</td></tr>
-       target = {$styles.content.mailform.target}
-       goodMess = {$styles.content.mailform.goodMess}
-       badMess = {$styles.content.mailform.badMess}
-       redirect.field = pages
-       redirect.listNum = 0
-       recipient.field = subheader
-       data.field = bodytext
-       locationData = 1
-
-       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-mailform">  | </table>
-       stdWrap {
-               editIcons = tt_content: bodytext, pages, subheader
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.form
-
-               prefixComment = 2 | Mail form inserted:
-       }
-}
-
-
-# ******************
-# CType: search
-# ******************
-tt_content.search = COA
-tt_content.search.10 = < lib.stdheader
-# Result:
-tt_content.search.20 = SEARCHRESULT
-tt_content.search.20 {
-       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
-       languageField.tt_content = sys_language_uid
-       renderObj = COA
-       renderObj {
-
-               10 = TEXT
-               10.field = pages_title
-               10.htmlSpecialChars = 1
-               10.typolink {
-                       parameter.field = uid
-                       target = {$styles.content.searchresult.resultTarget}
-                       additionalParams.data = register:SWORD_PARAMS
-                       additionalParams.required = 1
-                       additionalParams.wrap = &no_cache=1
-               }
-               10.htmlSpecialChars = 1
-               10.wrap = <h3 class="csc-searchResultHeader">|</h3>
-
-               20 = COA
-               20 {
-                       10 = TEXT
-                       10.field = tt_content_bodytext
-                       10.stripHtml = 1
-                       10.htmlSpecialChars = 1
-               }
-               20.stdWrap.crop = 200 | ...
-               20.stdWrap.wrap = <p class="csc-searchResult">|</p>
-       }
-
-       layout = COA
-       layout {
-               wrap = <table border="0" cellspacing="0" cellpadding="2" class="csc-searchResultInfo"><tr> | </tr></table> ###RESULT###
-
-               10 = TEXT
-               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.resultRange
-               10.wrap = <td class="csc-searchResultRange"><p>|</p></td>
-
-               20 = TEXT
-               20.value = ###PREV###&nbsp;&nbsp;&nbsp;###NEXT###
-               20.wrap = <td class="csc-searchResultPrevNext"><p>|</p></td>
-       }
-
-       noResultObj = COA
-       noResultObj {
-               10 = TEXT
-               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.emptySearch
-               10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
-       }
-
-       next = TEXT
-       next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
-
-       prev = TEXT
-       prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultPrev
-
-       target = {$styles.content.searchresult.target}
-       range = 20
-
-       stdWrap.prefixComment = 2 | Search result:
-}
-
-# Form:
-tt_content.search.30 < tt_content.mailform.20
-tt_content.search.30 {
-       goodMess = {$styles.content.searchform.goodMess}
-       redirect >
-       recipient >
-       data >
-       dataArray {
-               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchWord
-               10.type = sword=input
-               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
-               20.type = scols=select
-               20.valueArray {
-                       10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
-                       10.value = pages.title-subtitle-keywords-description:tt_content.header
-                       20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.pageContent
-                       20.value = tt_content.header-bodytext-imagecaption
-               }
-               30.type = stype=hidden
-               30.value = L0
-               40.type = submit=submit
-               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchButton
-       }
-       type.field = pages
-       type.listNum = 0
-       locationData = HTTP_POST_VARS
-       no_cache = 1
-
-       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-searchform">  | </table>
-       stdWrap {
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.search
-
-               prefixComment = 2 | Search form inserted:
-       }
-}
-
-
-# ******************
-# CType: login
-# ******************
-tt_content.login < tt_content.mailform
-tt_content.login.10 = < lib.stdheader
-tt_content.login.20 {
-       goodMess = {$styles.content.loginform.goodMess}
-       redirect >
-       recipient >
-       data >
-       dataArray {
-               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
-               10.type = *user=input
-               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.password
-               20.type = *pass=password
-               30.type = logintype=hidden
-               30.value = login
-               40.type = submit=submit
-               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.login
-       }
-       type.field = pages
-       type.listNum = 0
-       target = {$styles.content.loginform.target}
-       locationData = 0
-       hiddenFields.pid = TEXT
-       hiddenFields.pid {
-               value = {$styles.content.loginform.pid}
-               override.field = pages
-               override.listNum = 1
-       }
-
-       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-loginform">  | </table>
-       stdWrap {
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.login
-
-               prefixComment = 2 | Login/Logout form:
-       }
-}
-[loginUser = *]
-tt_content.login.20 {
-       dataArray >
-       dataArray {
-               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
-               10.label.wrap = |&nbsp;<!--###USERNAME###-->
-               30.type = logintype=hidden
-               30.value = logout
-               40.type = submit=submit
-               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.logout
-       }
-}
-[global]
-
-
-# ******************
-# CType: splash
-# ******************
-# Deprecated element.
-# Still here for backwards compliance with plugins using the "text box" type.
-tt_content.splash = CASE
-tt_content.splash.key.field = splash_layout
-tt_content.splash.stdWrap {
-       prefixComment = 2 | Textbox inserted (Deprecated)
-}
-tt_content.splash.default = COA
-tt_content.splash.default {
-       20 = CTABLE
-       20 {
-               c.1 = < tt_content.text
-               lm.1 = IMAGE
-               lm.1.file {
-                       import = uploads/pics/
-                       import.field = image
-                       import.listNum = 0
-                       maxW.field = imagewidth
-                       maxW.ifEmpty = 200
-               }
-               cMargins = 30,0,0,0
-       }
-}
-tt_content.splash.1 < tt_content.splash.default
-tt_content.splash.1.20.lm.1.file >
-tt_content.splash.1.20.lm.1.file = GIFBUILDER
-tt_content.splash.1.20.lm.1.file {
-       XY = [10.w]+10,[10.h]+10
-       backColor = {$content.splash.bgCol}
-       backColor.override.data = register:pageColor
-       format = jpg
-       5 = BOX
-       5.dimensions = 3,3,[10.w],[10.h]
-       5.color = #333333
-       7 = EFFECT
-       7.value = blur=99|blur=99|blur=99|blur=99|blur=99|blur=99|blur=99
-       10 = IMAGE
-       10.file {
-               import = uploads/pics/
-               import.field = image
-               import.listNum = 0
-               maxW.field = imagewidth
-               maxW.ifEmpty = 200
-       }
-}
-// The image frames are not available unless TypoScript code from styles.content.imgFrames.x is provided manually:
-tt_content.splash.2 < tt_content.splash.default
-#tt_content.splash.2.20.lm.1.file.m < styles.content.imgFrames.1
-tt_content.splash.3 < tt_content.splash.default
-#tt_content.splash.3.20.lm.1.file.m < styles.content.imgFrames.2
-
-// From plugin.postit1, if included:
-tt_content.splash.20 = < plugin.postit1
-
-
-
-
-# ****************
-# CType: menu
-# ****************
-tt_content.menu = COA
-tt_content.menu {
-       10 = < lib.stdheader
-
-       20 = CASE
-       20 {
-               key.field = menu_type
-
-               # "Menu of these pages"
-               default = HMENU
-               default.wrap = <div class="csc-menu csc-menu-def">|</div>
-               default {
-                       special = list
-                       special.value.field = pages
-                       1 = TMENU
-                       1.NO.allWrap = <p>|</p>
-                       1.NO.stdWrap.htmlSpecialChars = 1
-                       1.target = {$content.pageFrameObj}
-               }
-
-               # "Menu of subpages to these pages"
-               1 < .default
-               1.special = directory
-               1.wrap = <div class="csc-menu csc-menu-1">|</div>
-
-               # "Sitemap"
-               2 = HMENU
-               2.wrap = <div class="csc-menu csc-menu-2">|</div>
-               2 {
-                       1 = TMENU
-                       1.NO.allWrap = <p class="csc-sitemap csc-sitemap-level1">|</p>
-                       1.NO.stdWrap.htmlSpecialChars = 1
-                       1.target = {$content.pageFrameObj}
-                       1.expAll = 1
-
-                       2 < .1
-                       2.NO.allWrap = <p class="csc-sitemap csc-sitemap-level2">|</p>
-
-                       3 < .1
-                       3.NO.allWrap = <p class="csc-sitemap csc-sitemap-level3">|</p>
-
-                       4 < .1
-                       4.NO.allWrap = <p class="csc-sitemap csc-sitemap-level4">|</p>
-                       4.expAll = 0
-               }
-
-               # "Section index (pagecontent w/Index checked)"
-               3 < styles.content.get
-               3.wrap = <div class="csc-menu csc-menu-3">|</div>
-               3.select.andWhere = sectionIndex!=0
-               3.select.pidInList.override.field = pages
-               3.renderObj = TEXT
-               3.renderObj {
-                       fieldRequired = header
-                       trim=1
-                       field = header
-                       htmlSpecialChars = 1
-                       wrap = <p class="csc-section">|</p>
-                       typolink.parameter.field = pid
-                       typolink.section.field = uid
-               }
-
-               # "Menu of subpages to these pages (with abstract)"
-               4 < .1
-               4.wrap = <div class="csc-menu csc-menu-4">|</div>
-               4.1.NO {
-                       allWrap = <p>|</p>
-                       after.required = 1
-                       after.data = field : abstract // field : description // field : subtitle
-                       after.htmlSpecialChars = 1
-                       after.wrap = </p><p class="csc-abstract">|
-               }
-
-               # "Recently updated pages"
-               5 < .default
-               5.wrap = <div class="csc-menu csc-menu-5">|</div>
-               5.special = updated
-               5.special {
-                       maxAge = 3600*24*7
-                       excludeNoSearchPages = 1
-               }
-
-               # "Related pages (based on keywords)"
-               6 < .default
-               6.wrap = <div class="csc-menu csc-menu-6">|</div>
-               6.special = keywords
-               6.special {
-                       excludeNoSearchPages = 1
-               }
-
-               # "Menu of subpages to these pages + sections"
-               7 < .1
-               7.wrap = <div class="csc-menu csc-menu-7">|</div>
-               7.1.expAll = 1
-               7.2 < .7.1
-               7.2.sectionIndex = 1
-               7.2.sectionIndex.type = header
-               7.2.NO.allWrap = <p class="csc-section">|</p>
-       }
-
-       20.stdWrap {
-               editIcons = tt_content: menu_type, pages
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.menuSitemap
-
-               prefixComment = 2 | Menu/Sitemap element:
-       }
-}
-
-# Match TYPO3 4.2.0 and later
-[compatVersion = 4.2.0]
-tt_content.menu.20.default.1.target = {$PAGE_TARGET}
-tt_content.menu.20.2.1.target = {$PAGE_TARGET}
-[end]
-
-# ****************
-# CType: shortcut
-# ****************
-# Should be a complete copy from the old static template "content (default)"
-tt_content.shortcut = COA
-tt_content.shortcut {
-       20 = CASE
-       20.key.field = layout
-       20.0= RECORDS
-       20.0 {
-               source.field = records
-               tables = {$content.shortcut.tables}
-               # THESE are OLD plugins. Modern plugins registers themselves automatically!
-               conf.tt_content = < tt_content
-               conf.tt_address = < tt_address
-               conf.tt_links = < tt_links
-               conf.tt_guest = < tt_guest
-               conf.tt_board = < tt_board
-               conf.tt_calender = < tt_calender
-               conf.tt_rating < tt_rating
-               conf.tt_products = < tt_products
-               conf.tt_news = < tt_news
-               conf.tt_poll = < plugin.tt_poll
-       }
-       20.1= RECORDS
-       20.1 {
-               source.field = records
-               tables = {$content.shortcut.tables}
-               conf.tt_poll = < plugin.tt_poll
-               conf.tt_poll.code = RESULT,SUBMITTEDVOTE
-       }
-
-       20.stdWrap {
-               editIcons = tt_content: records
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.recordList
-
-               prefixComment = 2 | Inclusion of other records (by reference):
-       }
-}
-
-
-# ****************
-# CType: list
-# ****************
-# Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
-tt_content.list = COA
-tt_content.list {
-       10 = < lib.stdheader
-
-       20 = CASE
-       20.key.field = list_type
-       20 {
-               # LIST element references (NOT copy of objects!)
-               # THESE are OLD plugins. Modern plugins registers themselves automatically!
-               3 = CASE
-               3.key.field = layout
-               3.0 = < plugin.tt_guest
-
-               4 = CASE
-               4.key.field = layout
-               4.0 = < plugin.tt_board_list
-               4.1 = < plugin.tt_board_tree
-
-               2 = CASE
-               2.key.field = layout
-               2.0 = < plugin.tt_board_tree
-
-               5 = CASE
-               5.key.field = layout
-               5.0 = < plugin.tt_products
-
-               7 = CASE
-               7.key.field = layout
-               7.0 = < plugin.tt_calender
-
-               8 = CASE
-               8.key.field = layout
-               8.0 = < plugin.tt_rating
-
-               9 = CASE
-               9.key.field = layout
-               9.0 = < plugin.tt_news
-
-               11 = CASE
-               11.key.field = layout
-               11.0 = < plugin.tipafriend
-
-               20 = CASE
-               20.key.field = layout
-               20.0 = < plugin.feadmin.fe_users
-
-               21 = CASE
-               21.key.field = layout
-               21.0 = < plugin.feadmin.dmailsubscription
-       }
-
-       20.stdWrap {
-               editIcons = tt_content: list_type, layout, select_key, pages [recursive]
-               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.plugin
-
-               prefixComment = 2 | Plugin inserted:
-       }
-}
-
-
-# ****************
-# CType: script
-# ****************
-# 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.
-tt_content.script = TEXT
-tt_content.script {
-       value =
-
-       prefixComment = 2 | Script element (Deprecated)
-}
-
-
-# ****************
-# CType: div
-# ****************
-tt_content.div = TEXT
-tt_content.div {
-       value =
-       prefixComment = 2 | Div element
-}
-
-
-# ****************
-# CType: html
-# ****************
-# This truely IS a content object, launched from inside the PHP class of course.
-# Should be a complete copy from the old static template "content (default)"
-tt_content.html = TEXT
-tt_content.html {
-       field = bodytext
-
-       editIcons = tt_content: pages
-       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.html
-
-       prefixComment = 2 | Raw HTML content:
-}
-
-
-# ****************
-# Default error msg:
-# ****************
-tt_content.default = TEXT
-tt_content.default {
-       field = CType
-       wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
-
-       prefixComment = 2 | Unknown element message:
-}
-
-
-# *********************************************************************
-# ACCESSIBILTY MODE
-# *********************************************************************
-
-# Match TYPO3 3.9.0 and later
-[compatVersion = 3.9.0]
-
-# switch off <p>-Tags in table cells
-tt_content.table.20.innerStdWrap.wrap = |
-
-# change mailform to accesssible mode
-tt_content.mailform.20 {
-       accessibility = 1
-       noWrapAttr=1
-       formName = mailform
-       dontMd5FieldNames = 1
-       REQ = 1
-       layout = <div class="csc-mailform-field">###LABEL### ###FIELD###</div>
-       COMMENT.layout = <div class="csc-mailform-label">###LABEL###</div>
-       RADIO.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-radio">###FIELD###</span></div>
-       LABEL.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-label">###FIELD###</span></div>
-       labelWrap.wrap = |
-       commentWrap.wrap = |
-       radioWrap.wrap = |<br />
-       radioWrap.accessibilityWrap = <fieldset###RADIO_FIELD_ID###><legend>###RADIO_GROUP_LABEL###</legend>|</fieldset>
-       REQ.labelWrap.wrap = |
-       stdWrap.wrap = <fieldset class="csc-mailform"> | </fieldset>
-       params.radio = class="csc-mailform-radio"
-       params.check = class="csc-mailform-check"
-       params.submit = class="csc-mailform-submit"
-}
-
-# accessible menu
-tt_content.menu.20 {
-       # "Menu of these pages"
-       default.wrap = <ul class="csc-menu csc-menu-def">|</ul>
-       default.1.NO.allWrap >
-       default.1.NO.wrapItemAndSub = <li>|</li>
-       default.1.NO.ATagTitle.field = description // title
-
-       # "Menu of subpages to these pages"
-       1.wrap = <ul class="csc-menu csc-menu-1">|</ul>
-       1.1.NO.allWrap >
-       1.1.NO.wrapItemAndSub = <li>|</li>
-
-       # "Sitemap - liststyle"
-       2 >
-       2 = HMENU
-       2 {
-               wrap = <div class="csc-sitemap">|</div>
-               1 = TMENU
-               1 {
-                       noBlur=1
-                       expAll=1
-                       wrap = <ul>|</ul>
-                       NO {
-                               stdWrap.htmlSpecialChars = 1
-                               wrapItemAndSub = <li>|</li>
-                               ATagTitle.field = description // title
-                       }
-               }
-               2<.1
-               3<.1
-               4<.1
-               5<.1
-               6<.1
-               7<.1
-       }
-
-       # "Section index (pagecontent w/Index checked - liststyle)"
-       3.wrap = <ul class="csc-menu csc-menu-3">|</ul>
-       3.renderObj.noBlur = 1
-       3.renderObj.wrap = <li class="csc-section">|</li>
-
-       # "Menu of subpages to these pages (with abstract)"
-       4.wrap = <dl class="csc-menu csc-menu-4">|</dl>
-       4.1.NO {
-               allWrap >
-               linkWrap = <dt>|</dt>
-               after.wrap = <dd>|</dd>
-               ATagTitle.field = description // title
-       }
-
-       # "Recently updated pages"
-       5.wrap = <ul class="csc-menu csc-menu-5">|</ul>
-       5.1.NO.allWrap >
-       5.1.NO.wrapItemAndSub = <li>|</li>
-
-       # "Related pages (based on keywords)"
-       6.wrap = <ul class="csc-menu csc-menu-6">|</ul>
-       6.1.NO.allWrap >
-       6.1.NO.wrapItemAndSub = <li>|</li>
-
-       # "Menu of subpages to these pages + sections - liststyle"
-       7.wrap = <ul class="csc-menu csc-menu-7">|</ul>
-       7.1.NO.allWrap >
-       7.1.NO.wrapItemAndSub = <li>|</li>
-       7.2.wrap = <ul>|</ul>
-       7.2.NO.allWrap >
-       7.2.NO.wrapItemAndSub = <li class="csc-section">|</li>
-       7.2.NO.ATagTitle.field = description // title
-}
-
-# cObject: Image
-
-tt_content.image.20 = USER
-tt_content.image.20 {
-       userFunc = tx_cssstyledcontent_pi1->render_textpic
-
-       1 {
-               params >
-               imageLinkWrap {
-                       bodyTag = <body style="margin:0; background:#fff;">
-                       JSwindow.expand =
-               }
-       }
-
-       caption.1.wrapAlign >
-       caption.1.fontTag >
-
-       captionAlign.field = imagecaption_position
-
-       borderSpace = {$styles.content.imgtext.borderSpace}
-       separateRows = {$styles.content.imgtext.separateRows}
-       addClasses =
-       addClassesImage =
-       addClassesImage.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
-       addClassesImage.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
-       addClassesImage.override.if {
-               isGreaterThan.field = imagecols
-               value = 1
-       }
-
-       #
-       imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
-       imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
-
-       # if noRows is set, wrap around each column:
-       imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
-
-       layout = CASE
-       layout {
-               key.field = imageorient
-               # above-center
-               default = TEXT
-               default.value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
-               # above-right
-               1 = TEXT
-               1.value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
-               # above-left
-               2 = TEXT
-               2.value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
-               # below-center
-               8 = TEXT
-               8.value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
-               # below-right
-               9 = TEXT
-               9.value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
-               # below-left
-               10 = TEXT
-               10.value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
-               # intext-right
-               17 = TEXT
-               17.value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
-               # intext-left
-               18 = TEXT
-               18.value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
-               # intext-right-nowrap
-               25 = TEXT
-               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>
-               25.insertData = 1
-               # intext-left-nowrap
-               26 = TEXT
-               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>
-               26.insertData = 1
-       }
-
-       rendering {
-               dl {
-                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
-                       noRowsStdWrap.wrap =
-                       oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </dl>
-                       imgTagStdWrap.wrap = <dt> | </dt>
-                       editIconsStdWrap.wrap = <dd> | </dd>
-                       caption {
-                               required = 1
-                               wrap = <dd class="csc-textpic-caption"> | </dd>
-                       }
-               }
-               ul {
-                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"><ul> | </ul></div>
-                       noRowsStdWrap.wrap = <ul> | </ul>
-                       oneImageStdWrap.dataWrap = <li class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </li>
-                       imgTagStdWrap.wrap =
-                       editIconsStdWrap.wrap = <div> | </div>
-                       caption.wrap = <div class="csc-textpic-caption"> | </div>
-               }
-               div {
-                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
-                       noRowsStdWrap.wrap =
-                       oneImageStdWrap.dataWrap = <div class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </div>
-                       imgTagStdWrap.wrap = <div> | </div>
-                       editIconsStdWrap.wrap = <div> | </div>
-                       caption.wrap = <div class="csc-textpic-caption"> | </div>
-               }
-       }
-       renderMethod = dl
-}
-
-# cObject: Text with image
-
-tt_content.textpic.20 =< tt_content.image.20
-tt_content.textpic.20 {
-       text.10 = COA
-       text.10 {
-               if.value = 24
-               if.isGreaterThan.field = imageorient
-               10 = < lib.stdheader
-               10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
-       }
-       text.20 = < tt_content.text.20
-       text.wrap = <div class="csc-textpic-text"> | </div>
-}
-
-
-plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
-       /* Captions */
-       DIV.csc-textpic-caption-c .csc-textpic-caption { text-align: center; }
-       DIV.csc-textpic-caption-r .csc-textpic-caption { text-align: right; }
-       DIV.csc-textpic-caption-l .csc-textpic-caption { text-align: left; }
-
-       /* Needed for noRows setting */
-       DIV.csc-textpic DIV.csc-textpic-imagecolumn { float: left; display: inline; }
-
-       /* Border just around the image */
-       {$styles.content.imgtext.borderSelector} {
-               border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
-               padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
-       }
-
-       DIV.csc-textpic-imagewrap { padding: 0; }
-
-       DIV.csc-textpic IMG { border: none; }
-
-       /* DIV: This will place the images side by side */
-       DIV.csc-textpic DIV.csc-textpic-imagewrap DIV.csc-textpic-image { float: left; }
-
-       /* UL: This will place the images side by side */
-       DIV.csc-textpic DIV.csc-textpic-imagewrap UL { list-style: none; margin: 0; padding: 0; }
-       DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI { float: left; margin: 0; padding: 0; }
-
-       /* DL: This will place the images side by side */
-       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image { float: left; }
-       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DT { float: none; }
-       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD { float: none; }
-       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD IMG { border: none; } /* FE-Editing Icons */
-       DL.csc-textpic-image { margin: 0; }
-       DL.csc-textpic-image DT { margin: 0; display: inline; }
-       DL.csc-textpic-image DD { margin: 0; }
-
-       /* Clearer */
-       DIV.csc-textpic-clear { clear: both; }
-
-       /* Margins around images: */
-
-       /* Pictures on left, add margin on right */
-       DIV.csc-textpic-left DIV.csc-textpic-imagewrap .csc-textpic-image,
-       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
-       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap .csc-textpic-image {
-               display: inline; /* IE fix for double-margin bug */
-               margin-right: {$styles.content.imgtext.colSpace}px;
-       }
-
-       /* Pictures on right, add margin on left */
-       DIV.csc-textpic-right DIV.csc-textpic-imagewrap .csc-textpic-image,
-       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
-       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap .csc-textpic-image {
-               display: inline; /* IE fix for double-margin bug */
-               margin-left: {$styles.content.imgtext.colSpace}px;
-       }
-
-       /* Pictures centered, add margin on left */
-       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image {
-               display: inline; /* IE fix for double-margin bug */
-               margin-left: {$styles.content.imgtext.colSpace}px;
-       }
-       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image .csc-textpic-caption { margin: 0; }
-       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image IMG { margin: 0; }
-
-       /* Space below each image (also in-between rows) */
-       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
-       DIV.csc-textpic-equalheight DIV.csc-textpic-imagerow { margin-bottom: {$styles.content.imgtext.rowSpace}px; display: block; }
-       DIV.csc-textpic DIV.csc-textpic-imagerow { clear: both; }
-
-       /* No margins around the whole image-block */
-       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-firstcol { margin-left: 0px !important; }
-       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-lastcol { margin-right: 0px !important; }
-
-       /* Add margin from image-block to text (in case of "Text w/ images") */
-       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap,
-       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap {
-               margin-right: {$styles.content.imgtext.textMargin}px !important;
-       }
-       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap,
-       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap {
-               margin-left: {$styles.content.imgtext.textMargin}px !important;
-       }
-
-       /* Positioning of images: */
-
-       /* Above */
-       DIV.csc-textpic-above DIV.csc-textpic-text { clear: both; }
-
-       /* Center (above or below) */
-       DIV.csc-textpic-center { text-align: center; /* IE-hack */ }
-       DIV.csc-textpic-center DIV.csc-textpic-imagewrap { margin: 0 auto; }
-       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image { text-align: left; /* Remove IE-hack */ }
-       DIV.csc-textpic-center DIV.csc-textpic-text { text-align: left; /* Remove IE-hack */ }
-
-       /* Right (above or below) */
-       DIV.csc-textpic-right DIV.csc-textpic-imagewrap { float: right; }
-       DIV.csc-textpic-right DIV.csc-textpic-text { clear: right; }
-
-       /* Left (above or below) */
-       DIV.csc-textpic-left DIV.csc-textpic-imagewrap { float: left; }
-       DIV.csc-textpic-left DIV.csc-textpic-text { clear: left; }
-
-       /* Left (in text) */
-       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap { float: left; }
-
-       /* Right (in text) */
-       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap { float: right; }
-
-       /* Right (in text, no wrap around) */
-       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap { float: right; clear: both; }
-       /* Hide from IE5-mac. Only IE-win sees this. \*/
-       * html DIV.csc-textpic-intext-right-nowrap .csc-textpic-text { height: 1%; }
-       /* End hide from IE5/mac */
-
-       /* Left (in text, no wrap around) */
-       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap { float: left; clear: both; }
-       /* Hide from IE5-mac. Only IE-win sees this. \*/
-       * html DIV.csc-textpic-intext-left-nowrap .csc-textpic-text { height: 1%; }
-       /* End hide from IE5/mac */
-       
-       /* Browser fixes: */
-       
-       /* Fix for unordered and ordered list with image "In text, left" */
-       .csc-textpic-intext-left ol, .csc-textpic-intext-left ul { padding-left: 40px; overflow: auto; height: 1%; }
-)
-
-[END]
-
-# new IMAGE features with last row configuration
-[compatVersion = 4.2.0]
-
-plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE := appendString(\nDIV.csc-textpic DIV.csc-textpic-imagerow-last { margin-bottom: 0; })
-
-tt_content.image.20.rendering {
-       dl.imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
-       ul.imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"><ul> | </ul></div>
-       div.imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
-}
-
-[END]
-
-# new RTE indentation using div element
-[compatVersion = 4.2.0]
-
-lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList := removeFromList(div)
-lib.parseFunc_RTE.externalBlocks := addToList(div)
-lib.parseFunc_RTE.externalBlocks.div.stripNL = 1
-lib.parseFunc_RTE.externalBlocks.div.callRecursive = 1 
-
-[END]
-
-# TYPO3 SVN ID: $Id$
diff --git a/typo3/sysext/css_styled_content/static/v3.8/constants.txt b/typo3/sysext/css_styled_content/static/v3.8/constants.txt
new file mode 100644 (file)
index 0000000..9bdaa70
--- /dev/null
@@ -0,0 +1,101 @@
+  # Clear out any constants in this reserved room!
+styles.content >
+
+content {
+    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
+  defaultHeaderType = 1
+    # cat=advanced/links; type=small; label=Pageframe object: The name of the "contentframe". Normally set to "page" if the site has a frameset. Otherwise it should be an empty value. This is important, as it determines the target of internal links!
+  pageFrameObj = page
+
+  shortcut.tables = tt_content,tt_address,tt_links,tt_guest,tt_board,tt_calender,tt_products,tt_news,tt_rating,tt_poll
+    # cat=content/other/c; type=wrap; label= Content Element margins: Space above / below each content element (pixels of a clear-gif) in versions below TYPO3 4.3.0.
+  space = 0|0
+
+  splash.bgCol = white
+}
+
+
+    # cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
+styles.content.getNews.newsPid = 0
+
+styles.content.links {
+  keep = path
+    # cat=content/links; type=small; label= Target for external links
+  extTarget = _blank
+  target = {$PAGE_TARGET}
+  allowTags = b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,h1,h2,h3,h4,h5,h6
+}
+
+
+styles.content.imgtext {
+    # TIP! if register[maxImageWidth] is set, this will override maxW
+    # cat=content,basic/cImage/a_maxw1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
+  maxW = 600
+    # cat=content/cImage/a_maxw2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width
+  maxWInText =
+    # cat=content/cImage/b; type=color; label= Image border color: Bordercolor of images in content elements when "Border"-option for element is set.
+  borderColor = black
+    # cat=content/cImage/b; type=int[0-100]; label= Image border thickness: Thickness of border around images in content elements when "Border"-option for element is set.
+  borderThick = 2
+    # cat=content/cImage/x; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Image" or "Text w/Image".
+  colSpace = 10
+    # cat=content/cImage/x; type=int[0-100]; label= Advanced, Row space: Vertical distance between images in a block in content elements of type "Image" or "Text w/Image".
+  rowSpace = 10
+    # cat=content/cImage/x; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text w/Image".
+  textMargin = 10
+  linkWrap.width = 800m
+  linkWrap.height = 600m
+  linkWrap.effects =
+    # cat=content/cImage/x; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
+  linkWrap.newWindow = 0
+    # cat=content/cImage/c; type=boolean; label= Images, caption split: If this is checked, then the image caption will be split by each line and they will appear underneath the corresponding image in the imagelist.
+  captionSplit = 0
+    # cat=content/cImage/c1; type=boolean; label= Images, text split: If this is checked, then the image text (alt, title, longdesc) will be split by each line and they will appear on the corresponding images in the imagelist.
+  imageTextSplit = 0
+    # cat=content/cImage/c2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
+  emptyTitleHandling = useAlt
+
+  titleInLink = 0
+  titleInLinkAndImg = 0
+}
+
+styles.content.uploads {
+  jumpurl_secure =
+  jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
+  jumpurl =
+    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
+  filesizeBytesLabels = " | K| M| G"
+}
+
+styles.content.mailform {
+  target = {$PAGE_TARGET}
+    # cat=content/cMailform; type=; label= Message, Formmail OK: This is the message (if any) that is popped-up (JavaScript) when a user clicks "send" with an email-form
+  goodMess =
+    # cat=content/cMailform; type=; label= Message, Formmail Missing: This is the message that is popped-up when a user has NOT filled required fields in an email-form
+  badMess =
+}
+
+styles.content.loginform {
+  target = _top
+    # cat=content/cLogin; type=int+; label= PID of user archive: Enter the page-uid number (PID) of the sysFolder where you keep your fe_users that are supposed to login on this site. This setting is necessary, if login is going to work!
+  pid =
+    # cat=content/cLogin; type=; label= Message, Login: This is the message (if any) that is popped-up when a user logs in as a front-end user
+  goodMess =
+}
+
+styles.content.searchform {
+    # cat=content/cSearch; type=; label= Message, Searchform: This is the message (if any) that is popped-up when a user performs a search
+  goodMess =
+}
+
+styles.content.searchresult {
+  resultTarget = {$PAGE_TARGET}
+  target = {$PAGE_TARGET}
+}
+
+  # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: Set to "page" if you have frames in the template. If not, set to "" (empty)
+PAGE_TARGET = page
+
+
+# TYPO3 SVN ID: $Id: constants.txt 4493 2008-11-27 21:06:50Z steffenk $
+
diff --git a/typo3/sysext/css_styled_content/static/v3.8/setup.txt b/typo3/sysext/css_styled_content/static/v3.8/setup.txt
new file mode 100644 (file)
index 0000000..348d433
--- /dev/null
@@ -0,0 +1,1159 @@
+# ***************************************************************************
+# Notice: "styles." (and "temp.") objects are UNSET after template parsing!
+# Use "lib." for persisting storage of objects.
+# ***************************************************************************
+
+# Clear out any constants in this reserved room!
+styles.content >
+
+# get content
+styles.content.get = CONTENT
+styles.content.get {
+       table = tt_content
+       select.orderBy = sorting
+       select.where = colPos=0
+       select.languageField = sys_language_uid
+}
+
+# get content, left
+styles.content.getLeft < styles.content.get
+styles.content.getLeft.select.where = colPos=1
+
+# get content, right
+styles.content.getRight < styles.content.get
+styles.content.getRight.select.where = colPos=2
+
+# get content, margin
+styles.content.getBorder < styles.content.get
+styles.content.getBorder.select.where = colPos=3
+
+# get news
+styles.content.getNews < styles.content.get
+styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
+
+# Edit page object:
+styles.content.editPanelPage = COA
+styles.content.editPanelPage {
+       10 = EDITPANEL
+       10 {
+               allow = toolbar,move,hide
+               label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.page
+               label.wrap = |&nbsp;<b>%s</b>
+       }
+}
+
+
+
+
+
+
+
+
+
+
+
+# *********************************************************************
+# "lib." objects are preserved from unsetting after template parsing
+# *********************************************************************
+
+# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
+lib.parseFunc {
+       makelinks = 1
+       makelinks.http.keep = {$styles.content.links.keep}
+       makelinks.http.extTarget = {$styles.content.links.extTarget}
+       makelinks.mailto.keep = path
+       tags {
+               link = TEXT
+               link {
+                       current = 1
+                       typolink.parameter.data = parameters : allParams
+                       typolink.extTarget = {$styles.content.links.extTarget}
+                       typolink.target = {$styles.content.links.target}
+                       parseFunc.constants =1
+               }
+       }
+       allowTags = {$styles.content.links.allowTags}
+       denyTags = *
+       sword = <span class="csc-sword">|</span>
+       constants = 1
+
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
+styles.content.parseFunc < lib.parseFunc
+
+# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
+lib.parseFunc_RTE < lib.parseFunc
+lib.parseFunc_RTE {
+       //  makelinks >
+       # Processing <table> and <blockquote> blocks separately
+       externalBlocks = table, blockquote, ol,ul
+       externalBlocks {
+               # The blockquote content is passed into parseFunc again...
+               blockquote.stripNL=1
+               blockquote.callRecursive=1
+               blockquote.callRecursive.tagStdWrap.HTMLparser = 1
+               blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
+
+               ol.stripNL=1
+               ol.stdWrap.parseFunc = < lib.parseFunc
+
+               ul.stripNL=1
+               ul.stdWrap.parseFunc = < lib.parseFunc
+
+               table.stripNL=1
+               table.stdWrap.HTMLparser = 1
+               table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
+                       default = contenttable
+                       always = 1
+                       list = contenttable
+               }
+               table.stdWrap.HTMLparser.keepNonMatchedTags = 1
+               table.HTMLtableCells=1
+               table.HTMLtableCells {
+                       default.callRecursive=1
+                       addChr10BetweenParagraphs=1
+               }
+       }
+       nonTypoTagStdWrap.encapsLines {
+               encapsTagList = div,p,pre,h1,h2,h3,h4,h5,h6
+               remapTag.DIV = P
+               nonWrappedTag = P
+               innerStdWrap_all.ifBlank = &nbsp;
+               addAttributes.P.class = bodytext
+               addAttributes.P.class.setOnly=blank
+       }
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+
+# Content header:
+lib.stdheader = COA
+lib.stdheader {
+
+       # Create align style-attribute for <Hx> tags
+       2 = LOAD_REGISTER
+       2.headerStyle.field = header_position
+       2.headerStyle.required = 1
+       2.headerStyle.noTrimWrap = | style="text-align:|;"|
+
+       # Create class="csc-firstHeader" attribute for <Hx> tags
+       3 = LOAD_REGISTER
+       3.headerClass = csc-firstHeader
+       3.headerClass.if.value=1
+       3.headerClass.if.equals.data = cObj:parentRecordNumber
+       3.headerClass.noTrimWrap = | class="|"|
+
+       # Date format:
+       5 = TEXT
+       5.field = date
+       5.if.isTrue.field = date
+       5.date = d/m Y
+       5.wrap = <p class="csc-header-date">|</p>
+       5.prefixComment = 2 | Header date:
+
+       # This CASE cObject renders the header content:
+       # currentValue is set to the header data, possibly wrapped in link-tags.
+       10 = CASE
+       10.setCurrent {
+               field = header
+               htmlSpecialChars = 1
+               typolink.parameter.field = header_link
+       }
+       10.key.field = header_layout
+       10.key.ifEmpty = {$content.defaultHeaderType}
+       10.key.ifEmpty.override.data = register: defaultHeaderType
+
+       10.1 = TEXT
+       10.1.current = 1
+       10.1.insertData = 1
+       10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
+
+       10.2 < .10.1
+       10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
+
+       10.3 < .10.1
+       10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
+
+       10.4 < .10.1
+       10.4.fontTag = <h4{register:headerStyle}{register:headerClass}>|</h4>
+
+       10.5 < .10.1
+       10.5.fontTag = <h5{register:headerStyle}{register:headerClass}>|</h5>
+
+       # Pops the used registers off the stack:
+       98 = RESTORE_REGISTER
+       99 = RESTORE_REGISTER
+
+       # Post-processing:
+       stdWrap.fieldRequired = header
+       stdWrap.if {
+               equals.field = header_layout
+               value = 100
+               negate = 1
+       }
+
+       stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
+       stdWrap.editIcons.beforeLastTag = 1
+       stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.header
+
+       stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
+       stdWrap.prefixComment = 2 | Header:
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#******************************************************
+# Including library for processing of some elements:
+#******************************************************
+includeLibs.tx_cssstyledcontent_pi1 = EXT:css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+
+
+#**********************************
+# tt_content is started
+#**********************************
+tt_content >
+tt_content = CASE
+tt_content.key.field = CType
+tt_content.stdWrap {
+
+       spaceBefore.field = spaceBefore
+       spaceAfter.field = spaceAfter
+       space = {$content.space}
+
+       innerWrap.cObject = CASE
+       innerWrap.cObject {
+               key.field = section_frame
+
+               1 = TEXT
+               1.value = <div class="csc-frame csc-frame-invisible">|</div>
+
+               5 = TEXT
+               5.value = <div class="csc-frame csc-frame-rulerBefore"></div>|
+
+               6 = TEXT
+               6.value = |<div class="csc-frame csc-frame-rulerAfter"></div>
+
+               10 = TEXT
+               10.value = <div class="csc-frame csc-frame-indent">|</div>
+
+               11 = TEXT
+               11.value = <div class="csc-frame csc-frame-indent3366">|</div>
+
+               12 = TEXT
+               12.value = <div class="csc-frame csc-frame-indent6633">|</div>
+
+               20 = TEXT
+               20.value = <div class="csc-frame csc-frame-frame1">|</div>
+
+               21 = TEXT
+               21.value = <div class="csc-frame csc-frame-frame2">|</div>
+       }
+
+       innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/pi1/locallang.xml:label.toTop}</a></p>
+       innerWrap2.insertData = 1
+       innerWrap2.fieldRequired = linkToTop
+
+       dataWrap = <a id="c{field:uid}"></a> |
+
+       prepend = TEXT
+       prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
+       prepend.if.isTrue.field = _LOCALIZED_UID
+
+       editPanel = 1
+       editPanel {
+               allow = move,new,edit,hide,delete
+               line = 5
+               label = %s
+               onlyCurrentPid = 1
+               previewBorder = 4
+               edit.displayRecord = 1
+       }
+
+       prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
+
+}
+
+
+
+# *****************
+# CType: header
+# *****************
+# See Object path "lib.stdheader"
+tt_content.header = COA
+tt_content.header {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = subheader
+               required = 1
+
+               dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
+               htmlSpecialChars = 1
+
+               editIcons = tt_content:subheader,layout
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.subheader
+
+               prefixComment = 2 | Subheader:
+       }
+}
+
+
+# *****************
+# CType: text
+# *****************
+tt_content.text = COA
+tt_content.text {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = bodytext
+               required = 1
+
+               parseFunc = < lib.parseFunc_RTE
+
+               editIcons = tt_content:bodytext, rte_enabled
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
+
+               prefixComment = 2 | Text:
+       }
+}
+
+
+# *****************
+# CType: image
+# *****************
+# (also used for rendering 'textpic' type):
+tt_content.image = COA
+tt_content.image.10 = < lib.stdheader
+tt_content.image.20 = IMGTEXT
+tt_content.image.20 {
+       imgList.field = image
+       textPos.field = imageorient
+       imgPath = uploads/pics/
+       imgObjNum = 1
+       1 {
+               file.import.current = 1
+               file.width.field = imagewidth
+               params = align="top"
+               imageLinkWrap = 1
+               imageLinkWrap {
+                       bodyTag = <body bgcolor="black">
+                       wrap = <a href="javascript:close();"> | </a>
+                       width = {$styles.content.imgtext.linkWrap.width}
+                       height = {$styles.content.imgtext.linkWrap.height}
+                       effects = {$styles.content.imgtext.linkWrap.effects}
+
+                       JSwindow = 1
+                       JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
+                       JSwindow.expand = 17,20
+
+                       enable.field = image_zoom
+                       enable.ifEmpty.typolink.parameter.field = image_link
+                       enable.ifEmpty.typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       enable.ifEmpty.typolink.returnLast = url
+
+                       typolink.parameter.field = image_link
+                       typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       typolink.target = {$styles.content.links.target}
+                       typolink.extTarget = {$styles.content.links.extTarget}
+               }
+
+               altText = TEXT
+               altText {
+                       field = altText
+                       stripHtml = 1
+                       split.token.char = 10
+                       split.token.if.isTrue = {$styles.content.imgtext.imageTextSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+
+               titleText < .altText
+               titleText.field = titleText
+
+               longdescURL < .altText
+               longdescURL.field = longdescURL
+
+               emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
+               titleInLink = {$styles.content.imgtext.titleInLink}
+               titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
+       }
+
+       maxW = {$styles.content.imgtext.maxW}
+       maxW.override.data = register:maxImageWidth
+       maxWInText = {$styles.content.imgtext.maxWInText}
+       maxWInText.override.data = register:maxImageWidthInText
+
+       equalH.field = imageheight
+       spaceBelowAbove = 6
+
+       image_compression.field = image_compression
+       image_effects.field = image_effects
+
+       noRows.field = image_noRows
+
+       cols.field = imagecols
+       border.field = imageborder
+       caption {
+               1 = TEXT
+               1 {
+                       field = imagecaption
+                       required = 1
+                       parseFunc =< lib.parseFunc
+                       br = 1
+                       fontTag = <p class="csc-caption">|</p>
+                       wrapAlign.field = imagecaption_position
+                       split.token.char = 10
+                       split.token.if.isPositive = {$styles.content.imgtext.imageTextSplit} + {$styles.content.imgtext.captionSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+       }
+       # captionSplit is deprecated, use imageTextSplit instead
+       captionSplit = {$styles.content.imgtext.captionSplit}
+       # caption/alttext/title/longdescURL splitting
+       imageTextSplit = {$styles.content.imgtext.imageTextSplit}
+
+       borderCol = {$styles.content.imgtext.borderColor}
+       borderThick = {$styles.content.imgtext.borderThick}
+       colSpace = {$styles.content.imgtext.colSpace}
+       rowSpace = {$styles.content.imgtext.rowSpace}
+       textMargin = {$styles.content.imgtext.textMargin}
+
+       editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|image_noRows|imageborder],[image_link|image_zoom],[image_compression|image_effects|image_frames],imagecaption[imagecaption_position]
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
+
+       caption.editIcons = tt_content : imagecaption[imagecaption_position]
+       caption.editIcons.beforeLastTag=1
+       caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption
+
+       stdWrap.prefixComment = 2 | Image block:
+}
+
+
+# *****************
+# CType: textpic
+# *****************
+tt_content.textpic = COA
+tt_content.textpic {
+       10 = COA
+       10.if.value = 25
+       10.if.isLessThan.field = imageorient
+       10.10 = < lib.stdheader
+
+       20  = < tt_content.image.20
+       20.text.10 = COA
+       20.text.10 {
+               if.value = 24
+               if.isGreaterThan.field = imageorient
+               10 = < lib.stdheader
+               10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
+       }
+       20.text.20 = < tt_content.text.20
+}
+
+
+# *****************
+# CType: bullet
+# *****************
+# Rendered by a PHP function specifically written to handle CE bullet lists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.bullets = COA
+tt_content.bullets {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_bullets
+       20.field = bodytext
+
+       20.innerStdWrap.parseFunc = < lib.parseFunc
+
+       20.stdWrap {
+               editIcons = tt_content: bodytext, [layout]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bullets
+
+               prefixComment = 2 | Bullet list:
+       }
+}
+
+
+# *****************
+# CType: table
+# *****************
+# Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.table = COA
+tt_content.table {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_table
+       20.field = bodytext
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.innerStdWrap.wrap = <p>|</p>
+       20.innerStdWrap.parseFunc = < lib.parseFunc
+
+       20.stdWrap {
+               editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.table
+
+               prefixComment = 2 | Table:
+       }
+}
+
+
+# *****************
+# CType: uploads
+# *****************
+# Rendered by a PHP function specifically written to handle CE filelists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.uploads = COA
+tt_content.uploads {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_uploads
+       20.field = media
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+
+       20.linkProc {
+               target = _blank
+               jumpurl = {$styles.content.uploads.jumpurl}
+               jumpurl.secure = {$styles.content.uploads.jumpurl_secure}
+               jumpurl.secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
+               removePrependedNumbers = 1
+
+               iconCObject = IMAGE
+               iconCObject.file.import.data = register : ICON_REL_PATH
+               iconCObject.file.width = 150
+       }
+
+       20.filesize {
+               bytes = 1
+               bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size, imagecaption
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.filelist
+
+               prefixComment = 2 | File list:
+       }
+}
+
+
+# ******************
+# CType: multimedia
+# ******************
+tt_content.multimedia = COA
+tt_content.multimedia {
+       10 = < lib.stdheader
+
+       20 = MULTIMEDIA
+       20.file.field = multimedia
+       20.file.wrap = uploads/media/
+       20.file.listNum = 0
+       20.params.field = bodytext
+
+       20.stdWrap {
+               editIcons = tt_content: multimedia, bodytext
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
+
+               prefixComment = 2 | Multimedia element:
+       }
+}
+
+
+# ******************
+# CType: mailform
+# ******************
+tt_content.mailform = COA
+tt_content.mailform.10 = < lib.stdheader
+tt_content.mailform.20 = FORM
+tt_content.mailform.20 {
+       layout = <tr><td class="csc-form-labelcell">###LABEL###</td><td class="csc-form-fieldcell">###FIELD###</td></tr>
+       labelWrap.wrap = <p class="csc-form-label">|</p>
+       commentWrap.wrap = <p class="csc-form-comment">|</p>
+       radioWrap.wrap = <span class="csc-form-radio">|</span><br />
+       REQ = 1
+       REQ.labelWrap.wrap = <p class="csc-form-label-req">|</p>
+       COMMENT.layout = <tr><td colspan="2" class="csc-form-commentcell">###LABEL###</td></tr>
+       target = {$styles.content.mailform.target}
+       goodMess = {$styles.content.mailform.goodMess}
+       badMess = {$styles.content.mailform.badMess}
+       redirect.field = pages
+       redirect.listNum = 0
+       recipient.field = subheader
+       data.field = bodytext
+       locationData = 1
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-mailform">  | </table>
+       stdWrap {
+               editIcons = tt_content: bodytext, pages, subheader
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.form
+
+               prefixComment = 2 | Mail form inserted:
+       }
+}
+
+
+# ******************
+# CType: search
+# ******************
+tt_content.search = COA
+tt_content.search.10 = < lib.stdheader
+# Result:
+tt_content.search.20 = SEARCHRESULT
+tt_content.search.20 {
+       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
+       languageField.tt_content = sys_language_uid
+       renderObj = COA
+       renderObj {
+
+               10 = TEXT
+               10.field = pages_title
+               10.htmlSpecialChars = 1
+               10.typolink {
+                       parameter.field = uid
+                       target = {$styles.content.searchresult.resultTarget}
+                       additionalParams.data = register:SWORD_PARAMS
+                       additionalParams.required = 1
+                       additionalParams.wrap = &no_cache=1
+               }
+               10.htmlSpecialChars = 1
+               10.wrap = <h3 class="csc-searchResultHeader">|</h3>
+
+               20 = COA
+               20 {
+                       10 = TEXT
+                       10.field = tt_content_bodytext
+                       10.stripHtml = 1
+                       10.htmlSpecialChars = 1
+               }
+               20.stdWrap.crop = 200 | ...
+               20.stdWrap.wrap = <p class="csc-searchResult">|</p>
+       }
+
+       layout = COA
+       layout {
+               wrap = <table border="0" cellspacing="0" cellpadding="2" class="csc-searchResultInfo"><tr> | </tr></table> ###RESULT###
+
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.resultRange
+               10.wrap = <td class="csc-searchResultRange"><p>|</p></td>
+
+               20 = TEXT
+               20.value = ###PREV###&nbsp;&nbsp;&nbsp;###NEXT###
+               20.wrap = <td class="csc-searchResultPrevNext"><p>|</p></td>
+       }
+
+       noResultObj = COA
+       noResultObj {
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.emptySearch
+               10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
+       }
+
+       next = TEXT
+       next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
+
+       prev = TEXT
+       prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultPrev
+
+       target = {$styles.content.searchresult.target}
+       range = 20
+
+       stdWrap.prefixComment = 2 | Search result:
+}
+
+# Form:
+tt_content.search.30 < tt_content.mailform.20
+tt_content.search.30 {
+       goodMess = {$styles.content.searchform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchWord
+               10.type = sword=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
+               20.type = scols=select
+               20.valueArray {
+                       10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
+                       10.value = pages.title-subtitle-keywords-description:tt_content.header
+                       20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.pageContent
+                       20.value = tt_content.header-bodytext-imagecaption
+               }
+               30.type = stype=hidden
+               30.value = L0
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchButton
+       }
+       type.field = pages
+       type.listNum = 0
+       locationData = HTTP_POST_VARS
+       no_cache = 1
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-searchform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.search
+
+               prefixComment = 2 | Search form inserted:
+       }
+}
+
+
+# ******************
+# CType: login
+# ******************
+tt_content.login < tt_content.mailform
+tt_content.login.10 = < lib.stdheader
+tt_content.login.20 {
+       goodMess = {$styles.content.loginform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.type = *user=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.password
+               20.type = *pass=password
+               30.type = logintype=hidden
+               30.value = login
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.login
+       }
+       type.field = pages
+       type.listNum = 0
+       target = {$styles.content.loginform.target}
+       locationData = 0
+       hiddenFields.pid = TEXT
+       hiddenFields.pid {
+               value = {$styles.content.loginform.pid}
+               override.field = pages
+               override.listNum = 1
+       }
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-loginform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.login
+
+               prefixComment = 2 | Login/Logout form:
+       }
+}
+[loginUser = *]
+tt_content.login.20 {
+       dataArray >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.label.wrap = |&nbsp;<!--###USERNAME###-->
+               30.type = logintype=hidden
+               30.value = logout
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.logout
+       }
+}
+[global]
+
+
+# ******************
+# CType: splash
+# ******************
+# Deprecated element.
+# Still here for backwards compliance with plugins using the "text box" type.
+tt_content.splash = CASE
+tt_content.splash.key.field = splash_layout
+tt_content.splash.stdWrap {
+       prefixComment = 2 | Textbox inserted (Deprecated)
+}
+tt_content.splash.default = COA
+tt_content.splash.default {
+       20 = CTABLE
+       20 {
+               c.1 = < tt_content.text
+               lm.1 = IMAGE
+               lm.1.file {
+                       import = uploads/pics/
+                       import.field = image
+                       import.listNum = 0
+                       maxW.field = imagewidth
+                       maxW.ifEmpty = 200
+               }
+               cMargins = 30,0,0,0
+       }
+}
+tt_content.splash.1 < tt_content.splash.default
+tt_content.splash.1.20.lm.1.file >
+tt_content.splash.1.20.lm.1.file = GIFBUILDER
+tt_content.splash.1.20.lm.1.file {
+       XY = [10.w]+10,[10.h]+10
+       backColor = {$content.splash.bgCol}
+       backColor.override.data = register:pageColor
+       format = jpg
+       5 = BOX
+       5.dimensions = 3,3,[10.w],[10.h]
+       5.color = #333333
+       7 = EFFECT
+       7.value = blur=99|blur=99|blur=99|blur=99|blur=99|blur=99|blur=99
+       10 = IMAGE
+       10.file {
+               import = uploads/pics/
+               import.field = image
+               import.listNum = 0
+               maxW.field = imagewidth
+               maxW.ifEmpty = 200
+       }
+}
+// The image frames are not available unless TypoScript code from styles.content.imgFrames.x is provided manually:
+tt_content.splash.2 < tt_content.splash.default
+#tt_content.splash.2.20.lm.1.file.m < styles.content.imgFrames.1
+tt_content.splash.3 < tt_content.splash.default
+#tt_content.splash.3.20.lm.1.file.m < styles.content.imgFrames.2
+
+// From plugin.postit1, if included:
+tt_content.splash.20 = < plugin.postit1
+
+
+
+
+# ****************
+# CType: menu
+# ****************
+tt_content.menu = COA
+tt_content.menu {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20 {
+               key.field = menu_type
+
+               # "Menu of these pages"
+               default = HMENU
+               default.wrap = <div class="csc-menu csc-menu-def">|</div>
+               default {
+                       special = list
+                       special.value.field = pages
+                       1 = TMENU
+                       1.NO.allWrap = <p>|</p>
+                       1.NO.stdWrap.htmlSpecialChars = 1
+                       1.target = {$content.pageFrameObj}
+               }
+
+               # "Menu of subpages to these pages"
+               1 < .default
+               1.special = directory
+               1.wrap = <div class="csc-menu csc-menu-1">|</div>
+
+               # "Sitemap"
+               2 = HMENU
+               2.wrap = <div class="csc-menu csc-menu-2">|</div>
+               2 {
+                       1 = TMENU
+                       1.NO.allWrap = <p class="csc-sitemap csc-sitemap-level1">|</p>
+                       1.NO.stdWrap.htmlSpecialChars = 1
+                       1.target = {$content.pageFrameObj}
+                       1.expAll = 1
+
+                       2 < .1
+                       2.NO.allWrap = <p class="csc-sitemap csc-sitemap-level2">|</p>
+
+                       3 < .1
+                       3.NO.allWrap = <p class="csc-sitemap csc-sitemap-level3">|</p>
+
+                       4 < .1
+                       4.NO.allWrap = <p class="csc-sitemap csc-sitemap-level4">|</p>
+                       4.expAll = 0
+               }
+
+               # "Section index (pagecontent w/Index checked)"
+               3 < styles.content.get
+               3.wrap = <div class="csc-menu csc-menu-3">|</div>
+               3.select.andWhere = sectionIndex!=0
+               3.select.pidInList.override.field = pages
+               3.renderObj = TEXT
+               3.renderObj {
+                       fieldRequired = header
+                       trim=1
+                       field = header
+                       htmlSpecialChars = 1
+                       wrap = <p class="csc-section">|</p>
+                       typolink.parameter.field = pid
+                       typolink.section.field = uid
+               }
+
+               # "Menu of subpages to these pages (with abstract)"
+               4 < .1
+               4.wrap = <div class="csc-menu csc-menu-4">|</div>
+               4.1.NO {
+                       allWrap = <p>|</p>
+                       after.required = 1
+                       after.data = field : abstract // field : description // field : subtitle
+                       after.htmlSpecialChars = 1
+                       after.wrap = </p><p class="csc-abstract">|
+               }
+
+               # "Recently updated pages"
+               5 < .default
+               5.wrap = <div class="csc-menu csc-menu-5">|</div>
+               5.special = updated
+               5.special {
+                       maxAge = 3600*24*7
+                       excludeNoSearchPages = 1
+               }
+
+               # "Related pages (based on keywords)"
+               6 < .default
+               6.wrap = <div class="csc-menu csc-menu-6">|</div>
+               6.special = keywords
+               6.special {
+                       excludeNoSearchPages = 1
+               }
+
+               # "Menu of subpages to these pages + sections"
+               7 < .1
+               7.wrap = <div class="csc-menu csc-menu-7">|</div>
+               7.1.expAll = 1
+               7.2 < .7.1
+               7.2.sectionIndex = 1
+               7.2.sectionIndex.type = header
+               7.2.NO.allWrap = <p class="csc-section">|</p>
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: menu_type, pages
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.menuSitemap
+
+               prefixComment = 2 | Menu/Sitemap element:
+       }
+}
+
+
+# ****************
+# CType: shortcut
+# ****************
+# Should be a complete copy from the old static template "content (default)"
+tt_content.shortcut = COA
+tt_content.shortcut {
+       20 = CASE
+       20.key.field = layout
+       20.0= RECORDS
+       20.0 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               conf.tt_content = < tt_content
+               conf.tt_address = < tt_address
+               conf.tt_links = < tt_links
+               conf.tt_guest = < tt_guest
+               conf.tt_board = < tt_board
+               conf.tt_calender = < tt_calender
+               conf.tt_rating < tt_rating
+               conf.tt_products = < tt_products
+               conf.tt_news = < tt_news
+               conf.tt_poll = < plugin.tt_poll
+       }
+       20.1= RECORDS
+       20.1 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               conf.tt_poll = < plugin.tt_poll
+               conf.tt_poll.code = RESULT,SUBMITTEDVOTE
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: records
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.recordList
+
+               prefixComment = 2 | Inclusion of other records (by reference):
+       }
+}
+
+
+# ****************
+# CType: list
+# ****************
+# Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
+tt_content.list = COA
+tt_content.list {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20.key.field = list_type
+       20 {
+               # LIST element references (NOT copy of objects!)
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               3 = CASE
+               3.key.field = layout
+               3.0 = < plugin.tt_guest
+
+               4 = CASE
+               4.key.field = layout
+               4.0 = < plugin.tt_board_list
+               4.1 = < plugin.tt_board_tree
+
+               2 = CASE
+               2.key.field = layout
+               2.0 = < plugin.tt_board_tree
+
+               5 = CASE
+               5.key.field = layout
+               5.0 = < plugin.tt_products
+
+               7 = CASE
+               7.key.field = layout
+               7.0 = < plugin.tt_calender
+
+               8 = CASE
+               8.key.field = layout
+               8.0 = < plugin.tt_rating
+
+               9 = CASE
+               9.key.field = layout
+               9.0 = < plugin.tt_news
+
+               11 = CASE
+               11.key.field = layout
+               11.0 = < plugin.tipafriend
+
+               20 = CASE
+               20.key.field = layout
+               20.0 = < plugin.feadmin.fe_users
+
+               21 = CASE
+               21.key.field = layout
+               21.0 = < plugin.feadmin.dmailsubscription
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: list_type, layout, select_key, pages [recursive]
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.plugin
+
+               prefixComment = 2 | Plugin inserted:
+       }
+}
+
+
+# ****************
+# CType: script
+# ****************
+# 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.
+tt_content.script = TEXT
+tt_content.script {
+       value =
+
+       prefixComment = 2 | Script element (Deprecated)
+}
+
+
+# ****************
+# CType: div
+# ****************
+tt_content.div = TEXT
+tt_content.div {
+       value =
+       prefixComment = 2 | Div element
+}
+
+
+# ****************
+# CType: html
+# ****************
+# This truely IS a content object, launched from inside the PHP class of course.
+# Should be a complete copy from the old static template "content (default)"
+tt_content.html = TEXT
+tt_content.html {
+       field = bodytext
+
+       editIcons = tt_content: pages
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.html
+
+       prefixComment = 2 | Raw HTML content:
+}
+
+
+# ****************
+# Default error msg:
+# ****************
+tt_content.default = TEXT
+tt_content.default {
+       field = CType
+       wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
+
+       prefixComment = 2 | Unknown element message:
+}
+
+
+# TYPO3 SVN ID: $Id: setup.txt 4493 2008-11-27 21:06:50Z steffenk $
diff --git a/typo3/sysext/css_styled_content/static/v3.9/constants.txt b/typo3/sysext/css_styled_content/static/v3.9/constants.txt
new file mode 100644 (file)
index 0000000..4a9bfc9
--- /dev/null
@@ -0,0 +1,111 @@
+  # Clear out any constants in this reserved room!
+styles.content >
+
+content {
+    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
+  defaultHeaderType = 1
+    # cat=advanced/links; type=small; label=Pageframe object: The name of the "contentframe". Normally set to "page" if the site has a frameset. Otherwise it should be an empty value. This is important, as it determines the target of internal links!
+  pageFrameObj = page
+
+  shortcut.tables = tt_content,tt_address,tt_links,tt_guest,tt_board,tt_calender,tt_products,tt_news,tt_rating,tt_poll
+    # cat=content/other/c; type=wrap; label= Content Element margins: Space above / below each content element (pixels of a clear-gif) in versions below TYPO3 4.3.0.
+  space = 0|0
+
+  splash.bgCol = white
+}
+
+
+    # cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
+styles.content.getNews.newsPid = 0
+
+styles.content.links {
+  keep = path
+    # cat=content/links; type=small; label= Target for external links
+  extTarget = _blank
+  target = {$PAGE_TARGET}
+  allowTags = b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,h1,h2,h3,h4,h5,h6
+}
+
+styles.content.imgtext {
+    # TIP! if register[maxImageWidth] is set, this will override maxW
+    # cat=content/cImage/b1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
+  maxW = 600
+    # cat=content/cImage/b2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width.
+  maxWInText =
+    # cat=content/cImage/c1; type=int+; label= Default Image Width: This indicates that default number of pixels (width) a block of images inserted as content will consume, if the user didn't specify otherwise in the content object.
+  linkWrap.width = 800m
+  linkWrap.height = 600m
+  linkWrap.effects =
+
+    # cat=content/cImage/x; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
+  linkWrap.newWindow = 0
+
+  captionSplit = 0
+    # cat=content/cImage/e1; type=boolean; label= Images, text split: If this is checked, then the image text (caption, alt, title, longdesc) will be split by each line and they will appear on the corresponding images in the imagelist.
+  imageTextSplit = 1
+    # cat=content/cImage/e2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
+  emptyTitleHandling = removeAttr
+    # cat=content/cImage/e3; type=boolean; label= Images, title in link: Do you want the 'title' attribute to be added to the surrounding <a> tag, if present? Recommended for accessibility is "true".
+  titleInLink = 1
+    # cat=content/cImage/e4; type=boolean; label= Images, title in link and IMG: If you have the title in the <a>-tag (titleInLink=true), you don't get the 'title' in the <img>-tag. IE will not show the tooltip anymore. So to get the 'title' in <img> too (to keep IE happy), set this too. Recommended for accessibility is "false". For correct tooltips on IE, set this to "true".
+  titleInLinkAndImg = 0
+
+    # cat=content/cImage/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
+  colSpace = 10
+    # cat=content/cImage/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
+  rowSpace = 5
+    # cat=content/cImage/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text w/Image".
+  textMargin = 10
+
+    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
+  borderColor = black
+    # cat=content/cImage/i2; type=int[0-100]; label= Image border, thickness: Thickness of border around images in content elements when "Border"-option for element is set.
+  borderThick = 2
+    # cat=content/cImage/i3; type=int+; label= Image border, padding: Padding left and right to the image, around the border.
+  borderSpace = 0
+    # cat=content/cImage/i4; type=string; label= Image border CSS-selector: If you want your border to apply elsewhere, change this setting. E.g. to apply to the whole image+caption, use 'DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image'.
+  borderSelector = DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image IMG
+    # cat=content/cImage/i5; type=boolean; label= Image row separation: Whether images should be rendered/wrapped in separated rows, e.g. inside a DIV.csc-textpic-imagerow element
+  separateRows = 1
+}
+
+styles.content.uploads {
+  jumpurl_secure =
+  jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
+  jumpurl =
+    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
+  filesizeBytesLabels = " | K| M| G"
+}
+
+styles.content.mailform {
+  target = {$PAGE_TARGET}
+    # cat=content/cMailform; type=; label= Message, Formmail OK: This is the message (if any) that is popped-up (JavaScript) when a user clicks "send" with an email-form
+  goodMess =
+    # cat=content/cMailform; type=; label= Message, Formmail Missing: This is the message that is popped-up when a user has NOT filled required fields in an email-form
+  badMess =
+}
+
+styles.content.loginform {
+  target = _top
+    # cat=content/cLogin; type=int+; label= PID of user archive: Enter the page-uid number (PID) of the sysFolder where you keep your fe_users that are supposed to login on this site. This setting is necessary, if login is going to work!
+  pid =
+    # cat=content/cLogin; type=; label= Message, Login: This is the message (if any) that is popped-up when a user logs in as a front-end user
+  goodMess =
+}
+
+styles.content.searchform {
+    # cat=content/cSearch; type=; label= Message, Searchform: This is the message (if any) that is popped-up when a user performs a search
+  goodMess =
+}
+
+styles.content.searchresult {
+  resultTarget = {$PAGE_TARGET}
+  target = {$PAGE_TARGET}
+}
+
+  # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: Set to "page" if you have frames in the template. If not, set to "" (empty)
+PAGE_TARGET = page
+
+
+# TYPO3 SVN ID: $Id: constants.txt 4493 2008-11-27 21:06:50Z steffenk $
+
diff --git a/typo3/sysext/css_styled_content/static/v3.9/setup.txt b/typo3/sysext/css_styled_content/static/v3.9/setup.txt
new file mode 100644 (file)
index 0000000..d0b4cef
--- /dev/null
@@ -0,0 +1,1423 @@
+# ***************************************************************************
+# Notice: "styles." (and "temp.") objects are UNSET after template parsing!
+# Use "lib." for persisting storage of objects.
+# ***************************************************************************
+
+# Clear out any constants in this reserved room!
+styles.content >
+
+# get content
+styles.content.get = CONTENT
+styles.content.get {
+       table = tt_content
+       select.orderBy = sorting
+       select.where = colPos=0
+       select.languageField = sys_language_uid
+}
+
+# get content, left
+styles.content.getLeft < styles.content.get
+styles.content.getLeft.select.where = colPos=1
+
+# get content, right
+styles.content.getRight < styles.content.get
+styles.content.getRight.select.where = colPos=2
+
+# get content, margin
+styles.content.getBorder < styles.content.get
+styles.content.getBorder.select.where = colPos=3
+
+# get news
+styles.content.getNews < styles.content.get
+styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
+
+# Edit page object:
+styles.content.editPanelPage = COA
+styles.content.editPanelPage {
+       10 = EDITPANEL
+       10 {
+               allow = toolbar,move,hide
+               label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.page
+               label.wrap = |&nbsp;<b>%s</b>
+       }
+}
+
+
+
+
+
+
+
+
+
+
+
+# *********************************************************************
+# "lib." objects are preserved from unsetting after template parsing
+# *********************************************************************
+
+# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
+lib.parseFunc {
+       makelinks = 1
+       makelinks.http.keep = {$styles.content.links.keep}
+       makelinks.http.extTarget = {$styles.content.links.extTarget}
+       makelinks.mailto.keep = path
+       tags {
+               link = TEXT
+               link {
+                       current = 1
+                       typolink.parameter.data = parameters : allParams
+                       typolink.extTarget = {$styles.content.links.extTarget}
+                       typolink.target = {$styles.content.links.target}
+                       parseFunc.constants =1
+               }
+       }
+       allowTags = {$styles.content.links.allowTags}
+       denyTags = *
+       sword = <span class="csc-sword">|</span>
+       constants = 1
+
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
+styles.content.parseFunc < lib.parseFunc
+
+# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
+lib.parseFunc_RTE < lib.parseFunc
+lib.parseFunc_RTE {
+       //  makelinks >
+       # Processing <table> and <blockquote> blocks separately
+       externalBlocks = table, blockquote, ol,ul
+       externalBlocks {
+               # The blockquote content is passed into parseFunc again...
+               blockquote.stripNL=1
+               blockquote.callRecursive=1
+               blockquote.callRecursive.tagStdWrap.HTMLparser = 1
+               blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
+
+               ol.stripNL=1
+               ol.stdWrap.parseFunc = < lib.parseFunc
+
+               ul.stripNL=1
+               ul.stdWrap.parseFunc = < lib.parseFunc
+
+               table.stripNL=1
+               table.stdWrap.HTMLparser = 1
+               table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
+                       default = contenttable
+                       always = 1
+                       list = contenttable
+               }
+               table.stdWrap.HTMLparser.keepNonMatchedTags = 1
+               table.HTMLtableCells=1
+               table.HTMLtableCells {
+                       default.callRecursive=1
+                       addChr10BetweenParagraphs=1
+               }
+       }
+       nonTypoTagStdWrap.encapsLines {
+               encapsTagList = div,p,pre,h1,h2,h3,h4,h5,h6
+               remapTag.DIV = P
+               nonWrappedTag = P
+               innerStdWrap_all.ifBlank = &nbsp;
+               addAttributes.P.class = bodytext
+               addAttributes.P.class.setOnly=blank
+       }
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+
+# Content header:
+lib.stdheader = COA
+lib.stdheader {
+
+       # Create align style-attribute for <Hx> tags
+       2 = LOAD_REGISTER
+       2.headerStyle.field = header_position
+       2.headerStyle.required = 1
+       2.headerStyle.noTrimWrap = | style="text-align:|;"|
+
+       # Create class="csc-firstHeader" attribute for <Hx> tags
+       3 = LOAD_REGISTER
+       3.headerClass = csc-firstHeader
+       3.headerClass.if.value=1
+       3.headerClass.if.equals.data = cObj:parentRecordNumber
+       3.headerClass.noTrimWrap = | class="|"|
+
+       # Date format:
+       5 = TEXT
+       5.field = date
+       5.if.isTrue.field = date
+       5.date = d/m Y
+       5.wrap = <p class="csc-header-date">|</p>
+       5.prefixComment = 2 | Header date:
+
+       # This CASE cObject renders the header content:
+       # currentValue is set to the header data, possibly wrapped in link-tags.
+       10 = CASE
+       10.setCurrent {
+               field = header
+               htmlSpecialChars = 1
+               typolink.parameter.field = header_link
+       }
+       10.key.field = header_layout
+       10.key.ifEmpty = {$content.defaultHeaderType}
+       10.key.ifEmpty.override.data = register: defaultHeaderType
+
+       10.1 = TEXT
+       10.1.current = 1
+       10.1.insertData = 1
+       10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
+
+       10.2 < .10.1
+       10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
+
+       10.3 < .10.1
+       10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
+
+       10.4 < .10.1
+       10.4.fontTag = <h4{register:headerStyle}{register:headerClass}>|</h4>
+
+       10.5 < .10.1
+       10.5.fontTag = <h5{register:headerStyle}{register:headerClass}>|</h5>
+
+       # Pops the used registers off the stack:
+       98 = RESTORE_REGISTER
+       99 = RESTORE_REGISTER
+
+       # Post-processing:
+       stdWrap.fieldRequired = header
+       stdWrap.if {
+               equals.field = header_layout
+               value = 100
+               negate = 1
+       }
+
+       stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
+       stdWrap.editIcons.beforeLastTag = 1
+       stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.header
+
+       stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
+       stdWrap.prefixComment = 2 | Header:
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#******************************************************
+# Including library for processing of some elements:
+#******************************************************
+includeLibs.tx_cssstyledcontent_pi1 = EXT:css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+
+
+#**********************************
+# tt_content is started
+#**********************************
+tt_content >
+tt_content = CASE
+tt_content.key.field = CType
+tt_content.stdWrap {
+
+       spaceBefore.field = spaceBefore
+       spaceAfter.field = spaceAfter
+       space = {$content.space}
+
+       innerWrap.cObject = CASE
+       innerWrap.cObject {
+               key.field = section_frame
+
+               1 = TEXT
+               1.value = <div class="csc-frame csc-frame-invisible">|</div>
+
+               5 = TEXT
+               5.value = <div class="csc-frame csc-frame-rulerBefore"></div>|
+
+               6 = TEXT
+               6.value = |<div class="csc-frame csc-frame-rulerAfter"></div>
+
+               10 = TEXT
+               10.value = <div class="csc-frame csc-frame-indent">|</div>
+
+               11 = TEXT
+               11.value = <div class="csc-frame csc-frame-indent3366">|</div>
+
+               12 = TEXT
+               12.value = <div class="csc-frame csc-frame-indent6633">|</div>
+
+               20 = TEXT
+               20.value = <div class="csc-frame csc-frame-frame1">|</div>
+
+               21 = TEXT
+               21.value = <div class="csc-frame csc-frame-frame2">|</div>
+       }
+
+       innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/pi1/locallang.xml:label.toTop}</a></p>
+       innerWrap2.insertData = 1
+       innerWrap2.fieldRequired = linkToTop
+
+       dataWrap = <a id="c{field:uid}"></a> |
+
+       prepend = TEXT
+       prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
+       prepend.if.isTrue.field = _LOCALIZED_UID
+
+       editPanel = 1
+       editPanel {
+               allow = move,new,edit,hide,delete
+               line = 5
+               label = %s
+               onlyCurrentPid = 1
+               previewBorder = 4
+               edit.displayRecord = 1
+       }
+
+       prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
+
+}
+
+
+
+# *****************
+# CType: header
+# *****************
+# See Object path "lib.stdheader"
+tt_content.header = COA
+tt_content.header {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = subheader
+               required = 1
+
+               dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
+               htmlSpecialChars = 1
+
+               editIcons = tt_content:subheader,layout
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.subheader
+
+               prefixComment = 2 | Subheader:
+       }
+}
+
+
+
+# *****************
+# CType: text
+# *****************
+tt_content.text = COA
+tt_content.text {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = bodytext
+               required = 1
+
+               parseFunc = < lib.parseFunc_RTE
+
+               editIcons = tt_content:bodytext, rte_enabled
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
+
+               prefixComment = 2 | Text:
+       }
+}
+
+
+# *****************
+# CType: image
+# *****************
+# (also used for rendering 'textpic' type):
+tt_content.image = COA
+tt_content.image.10 = < lib.stdheader
+tt_content.image.20 = USER
+tt_content.image.20 {
+       userFunc = tx_cssstyledcontent_pi1->render_textpic
+
+       # Image source
+       imgList.field = image
+       imgPath = uploads/pics/
+
+       # Single image rendering
+       imgObjNum = 1
+       1 {
+               file.import.current = 1
+               file.width.field = imagewidth
+               imageLinkWrap = 1
+               imageLinkWrap {
+                       bodyTag = <body style="margin:0; background:#fff;">
+                       wrap = <a href="javascript:close();"> | </a>
+                       width = {$styles.content.imgtext.linkWrap.width}
+                       height = {$styles.content.imgtext.linkWrap.height}
+                       effects = {$styles.content.imgtext.linkWrap.effects}
+
+                       JSwindow = 1
+                       JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
+
+                       enable.field = image_zoom
+                       enable.ifEmpty.typolink.parameter.field = image_link
+                       enable.ifEmpty.typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       enable.ifEmpty.typolink.returnLast = url
+
+                       typolink.parameter.field = image_link
+                       typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       typolink.target = {$styles.content.links.target}
+                       typolink.extTarget = {$styles.content.links.extTarget}
+               }
+
+               altText = TEXT
+               altText {
+                       field = altText
+                       stripHtml = 1
+                       split.token.char = 10
+                       split.token.if.isTrue = {$styles.content.imgtext.imageTextSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+
+               titleText < .altText
+               titleText.field = titleText
+
+               longdescURL < .altText
+               longdescURL.field = longdescURL
+
+               emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
+               titleInLink = {$styles.content.imgtext.titleInLink}
+               titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
+       }
+
+       maxW = {$styles.content.imgtext.maxW}
+       maxW.override.data = register:maxImageWidth
+       maxWInText = {$styles.content.imgtext.maxWInText}
+       maxWInText.override.data = register:maxImageWidthInText
+
+       equalH.field = imageheight
+
+       image_compression.field = image_compression
+       image_effects.field = image_effects
+
+       noRows.field = image_noRows
+
+       cols.field = imagecols
+       border.field = imageborder
+
+       caption {
+               1 = TEXT
+               1 {
+                       field = imagecaption
+                       required = 1
+                       parseFunc =< lib.parseFunc
+                       br = 1
+                       split.token.char = 10
+                       split.token.if.isPositive = {$styles.content.imgtext.imageTextSplit} + {$styles.content.imgtext.captionSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+       }
+       # captionSplit is deprecated, use imageTextSplit instead
+       captionSplit = {$styles.content.imgtext.captionSplit}
+       captionAlign.field = imagecaption_position
+       # caption/alttext/title/longdescURL splitting
+       imageTextSplit = {$styles.content.imgtext.imageTextSplit}
+
+       borderCol = {$styles.content.imgtext.borderColor}
+       borderThick = {$styles.content.imgtext.borderThick}
+       colSpace = {$styles.content.imgtext.colSpace}
+       rowSpace = {$styles.content.imgtext.rowSpace}
+       textMargin = {$styles.content.imgtext.textMargin}
+
+       borderSpace = {$styles.content.imgtext.borderSpace}
+       separateRows = {$styles.content.imgtext.separateRows}
+       addClasses =
+       addClassesImage =
+       addClassesImage.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
+       addClassesImage.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
+       addClassesImage.override.if {
+               isGreaterThan.field = imagecols
+               value = 1
+       }
+
+       #
+       imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
+       imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
+
+       # if noRows is set, wrap around each column:
+       imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
+
+       layout = CASE
+       layout {
+               key.field = imageorient
+               # above-center
+               default = TEXT
+               default.value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # above-right
+               1 = TEXT
+               1.value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # above-left
+               2 = TEXT
+               2.value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-center
+               8 = TEXT
+               8.value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-right
+               9 = TEXT
+               9.value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-left
+               10 = TEXT
+               10.value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # intext-right
+               17 = TEXT
+               17.value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
+               # intext-left
+               18 = TEXT
+               18.value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
+               # intext-right-nowrap
+               25 = TEXT
+               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>
+               25.insertData = 1
+               # intext-left-nowrap
+               26 = TEXT
+               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>
+               26.insertData = 1
+       }
+
+       rendering {
+               dl {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
+                       noRowsStdWrap.wrap =
+                       oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </dl>
+                       imgTagStdWrap.wrap = <dt> | </dt>
+                       editIconsStdWrap.wrap = <dd> | </dd>
+                       caption {
+                               required = 1
+                               wrap = <dd class="csc-textpic-caption"> | </dd>
+                       }
+               }
+               ul {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"><ul> | </ul></div>
+                       noRowsStdWrap.wrap = <ul> | </ul>
+                       oneImageStdWrap.dataWrap = <li class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </li>
+                       imgTagStdWrap.wrap =
+                       editIconsStdWrap.wrap = <div> | </div>
+                       caption.wrap = <div class="csc-textpic-caption"> | </div>
+               }
+               div {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
+                       noRowsStdWrap.wrap =
+                       oneImageStdWrap.dataWrap = <div class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </div>
+                       imgTagStdWrap.wrap = <div> | </div>
+                       editIconsStdWrap.wrap = <div> | </div>
+                       caption.wrap = <div class="csc-textpic-caption"> | </div>
+               }
+       }
+       renderMethod = dl
+
+       editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|image_noRows|imageborder],[image_link|image_zoom],[image_compression|image_effects|image_frames],imagecaption[imagecaption_position]
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
+
+       caption.editIcons = tt_content : imagecaption[imagecaption_position]
+       caption.editIcons.beforeLastTag=1
+       caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption
+
+       stdWrap.prefixComment = 2 | Image block:
+}
+
+
+
+# *****************
+# CType: textpic
+# *****************
+tt_content.textpic = COA
+tt_content.textpic {
+       10 = COA
+       10.if.value = 25
+       10.if.isLessThan.field = imageorient
+       10.10 = < lib.stdheader
+
+       20  = < tt_content.image.20
+       20 {
+               text.10 = COA
+               text.10 {
+                       if.value = 24
+                       if.isGreaterThan.field = imageorient
+                       10 = < lib.stdheader
+                       10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
+               }
+               text.20 = < tt_content.text.20
+               text.wrap = <div class="csc-textpic-text"> | </div>
+       }
+}
+
+
+# *****************
+# CType: bullet
+# *****************
+# Rendered by a PHP function specifically written to handle CE bullet lists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.bullets = COA
+tt_content.bullets {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_bullets
+       20.field = bodytext
+
+       20.innerStdWrap.parseFunc = < lib.parseFunc
+
+       20.stdWrap {
+               editIcons = tt_content: bodytext, [layout]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bullets
+
+               prefixComment = 2 | Bullet list:
+       }
+}
+
+
+# *****************
+# CType: table
+# *****************
+# Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.table = COA
+tt_content.table {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_table
+       20.field = bodytext
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.innerStdWrap.wrap = |
+       20.innerStdWrap.parseFunc = < lib.parseFunc
+
+       20.stdWrap {
+               editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.table
+
+               prefixComment = 2 | Table:
+       }
+}
+
+
+# *****************
+# CType: uploads
+# *****************
+# Rendered by a PHP function specifically written to handle CE filelists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.uploads = COA
+tt_content.uploads {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_uploads
+       20.field = media
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+
+       20.linkProc {
+               target = _blank
+               jumpurl = {$styles.content.uploads.jumpurl}
+               jumpurl.secure = {$styles.content.uploads.jumpurl_secure}
+               jumpurl.secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
+               removePrependedNumbers = 1
+
+               iconCObject = IMAGE
+               iconCObject.file.import.data = register : ICON_REL_PATH
+               iconCObject.file.width = 150
+       }
+
+       20.filesize {
+               bytes = 1
+               bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size, imagecaption
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.filelist
+
+               prefixComment = 2 | File list:
+       }
+}
+
+
+# ******************
+# CType: multimedia
+# ******************
+tt_content.multimedia = COA
+tt_content.multimedia {
+       10 = < lib.stdheader
+
+       20 = MULTIMEDIA
+       20.file.field = multimedia
+       20.file.wrap = uploads/media/
+       20.file.listNum = 0
+       20.params.field = bodytext
+
+       20.stdWrap {
+               editIcons = tt_content: multimedia, bodytext
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
+
+               prefixComment = 2 | Multimedia element:
+       }
+}
+
+
+# ******************
+# CType: mailform
+# ******************
+tt_content.mailform = COA
+tt_content.mailform.10 = < lib.stdheader
+tt_content.mailform.20 = FORM
+tt_content.mailform.20 {
+       accessibility = 1
+       noWrapAttr=1
+       formName = mailform
+       dontMd5FieldNames = 1
+       layout = <div class="csc-mailform-field">###LABEL### ###FIELD###</div>
+       labelWrap.wrap = |
+       commentWrap.wrap = |
+       radioWrap.wrap = |<br />
+       radioWrap.accessibilityWrap = <fieldset###RADIO_FIELD_ID###><legend>###RADIO_GROUP_LABEL###</legend>|</fieldset>
+       REQ = 1
+       REQ.labelWrap.wrap = |
+       COMMENT.layout = <div class="csc-mailform-label">###LABEL###</div>
+       RADIO.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-radio">###FIELD###</span></div>
+       LABEL.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-label">###FIELD###</span></div>
+       target = {$styles.content.mailform.target}
+       goodMess = {$styles.content.mailform.goodMess}
+       badMess = {$styles.content.mailform.badMess}
+       redirect.field = pages
+       redirect.listNum = 0
+       recipient.field = subheader
+       data.field = bodytext
+       locationData = 1
+       
+       params.radio = class="csc-mailform-radio"
+       params.check = class="csc-mailform-check"
+       params.submit = class="csc-mailform-submit"
+
+       stdWrap.wrap = <fieldset class="csc-mailform"> | </fieldset>
+       stdWrap {
+               editIcons = tt_content: bodytext, pages, subheader
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.form
+
+               prefixComment = 2 | Mail form inserted:
+       }
+}
+
+
+# ******************
+# CType: search
+# ******************
+tt_content.search = COA
+tt_content.search.10 = < lib.stdheader
+# Result:
+tt_content.search.20 = SEARCHRESULT
+tt_content.search.20 {
+       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
+       languageField.tt_content = sys_language_uid
+       renderObj = COA
+       renderObj {
+
+               10 = TEXT
+               10.field = pages_title
+               10.htmlSpecialChars = 1
+               10.typolink {
+                       parameter.field = uid
+                       target = {$styles.content.searchresult.resultTarget}
+                       additionalParams.data = register:SWORD_PARAMS
+                       additionalParams.required = 1
+                       additionalParams.wrap = &no_cache=1
+               }
+               10.htmlSpecialChars = 1
+               10.wrap = <h3 class="csc-searchResultHeader">|</h3>
+
+               20 = COA
+               20 {
+                       10 = TEXT
+                       10.field = tt_content_bodytext
+                       10.stripHtml = 1
+                       10.htmlSpecialChars = 1
+               }
+               20.stdWrap.crop = 200 | ...
+               20.stdWrap.wrap = <p class="csc-searchResult">|</p>
+       }
+
+       layout = COA
+       layout {
+               wrap = <table border="0" cellspacing="0" cellpadding="2" class="csc-searchResultInfo"><tr> | </tr></table> ###RESULT###
+
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.resultRange
+               10.wrap = <td class="csc-searchResultRange"><p>|</p></td>
+
+               20 = TEXT
+               20.value = ###PREV###&nbsp;&nbsp;&nbsp;###NEXT###
+               20.wrap = <td class="csc-searchResultPrevNext"><p>|</p></td>
+       }
+
+       noResultObj = COA
+       noResultObj {
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.emptySearch
+               10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
+       }
+
+       next = TEXT
+       next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
+
+       prev = TEXT
+       prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultPrev
+
+       target = {$styles.content.searchresult.target}
+       range = 20
+
+       stdWrap.prefixComment = 2 | Search result:
+}
+
+# Form:
+tt_content.search.30 < tt_content.mailform.20
+tt_content.search.30 {
+       goodMess = {$styles.content.searchform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchWord
+               10.type = sword=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
+               20.type = scols=select
+               20.valueArray {
+                       10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
+                       10.value = pages.title-subtitle-keywords-description:tt_content.header
+                       20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.pageContent
+                       20.value = tt_content.header-bodytext-imagecaption
+               }
+               30.type = stype=hidden
+               30.value = L0
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchButton
+       }
+       type.field = pages
+       type.listNum = 0
+       locationData = HTTP_POST_VARS
+       no_cache = 1
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-searchform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.search
+
+               prefixComment = 2 | Search form inserted:
+       }
+}
+
+
+# ******************
+# CType: login
+# ******************
+tt_content.login < tt_content.mailform
+tt_content.login.10 = < lib.stdheader
+tt_content.login.20 {
+       goodMess = {$styles.content.loginform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.type = *user=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.password
+               20.type = *pass=password
+               30.type = logintype=hidden
+               30.value = login
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.login
+       }
+       type.field = pages
+       type.listNum = 0
+       target = {$styles.content.loginform.target}
+       locationData = 0
+       hiddenFields.pid = TEXT
+       hiddenFields.pid {
+               value = {$styles.content.loginform.pid}
+               override.field = pages
+               override.listNum = 1
+       }
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-loginform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.login
+
+               prefixComment = 2 | Login/Logout form:
+       }
+}
+[loginUser = *]
+tt_content.login.20 {
+       dataArray >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.label.wrap = |&nbsp;<!--###USERNAME###-->
+               30.type = logintype=hidden
+               30.value = logout
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.logout
+       }
+}
+[global]
+
+
+# ******************
+# CType: splash
+# ******************
+# Deprecated element.
+# Still here for backwards compliance with plugins using the "text box" type.
+tt_content.splash = CASE
+tt_content.splash.key.field = splash_layout
+tt_content.splash.stdWrap {
+       prefixComment = 2 | Textbox inserted (Deprecated)
+}
+tt_content.splash.default = COA
+tt_content.splash.default {
+       20 = CTABLE
+       20 {
+               c.1 = < tt_content.text
+               lm.1 = IMAGE
+               lm.1.file {
+                       import = uploads/pics/
+                       import.field = image
+                       import.listNum = 0
+                       maxW.field = imagewidth
+                       maxW.ifEmpty = 200
+               }
+               cMargins = 30,0,0,0
+       }
+}
+tt_content.splash.1 < tt_content.splash.default
+tt_content.splash.1.20.lm.1.file >
+tt_content.splash.1.20.lm.1.file = GIFBUILDER
+tt_content.splash.1.20.lm.1.file {
+       XY = [10.w]+10,[10.h]+10
+       backColor = {$content.splash.bgCol}
+       backColor.override.data = register:pageColor
+       format = jpg
+       5 = BOX
+       5.dimensions = 3,3,[10.w],[10.h]
+       5.color = #333333
+       7 = EFFECT
+       7.value = blur=99|blur=99|blur=99|blur=99|blur=99|blur=99|blur=99
+       10 = IMAGE
+       10.file {
+               import = uploads/pics/
+               import.field = image
+               import.listNum = 0
+               maxW.field = imagewidth
+               maxW.ifEmpty = 200
+       }
+}
+// The image frames are not available unless TypoScript code from styles.content.imgFrames.x is provided manually:
+tt_content.splash.2 < tt_content.splash.default
+#tt_content.splash.2.20.lm.1.file.m < styles.content.imgFrames.1
+tt_content.splash.3 < tt_content.splash.default
+#tt_content.splash.3.20.lm.1.file.m < styles.content.imgFrames.2
+
+// From plugin.postit1, if included:
+tt_content.splash.20 = < plugin.postit1
+
+
+
+# ****************
+# CType: menu
+# ****************
+tt_content.menu = COA
+tt_content.menu {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20 {
+               key.field = menu_type
+
+               # "Menu of these pages"
+               default = HMENU
+               default {
+                       special = list
+                       special.value.field = pages
+                       wrap = <ul class="csc-menu csc-menu-def">|</ul>
+                       1 = TMENU
+                       1 {
+                               target = {$PAGE_TARGET}
+                               NO.wrapItemAndSub = <li>|</li>
+                               NO.ATagTitle.field = description // title
+                       }
+               }
+
+               # "Menu of subpages to these pages"
+               1 < .default
+               1 {
+                       special = directory
+                       wrap = <ul class="csc-menu csc-menu-1">|</ul>
+               }
+
+               # "Sitemap - liststyle"
+               2 = HMENU
+               2 {
+                       wrap = <div class="csc-sitemap">|</div>
+                       1 = TMENU
+                       1 {
+                               target = {$PAGE_TARGET}
+                               noBlur = 1
+                               expAll = 1
+                               wrap = <ul>|</ul>
+                               NO {
+                                       stdWrap.htmlSpecialChars = 1
+                                       wrapItemAndSub = <li>|</li>
+                                       ATagTitle.field = description // title
+                               }
+                       }
+                       2 < .1
+                       3 < .1
+                       4 < .1
+                       5 < .1
+                       6 < .1
+                       7 < .1
+               }
+
+               # "Section index (pagecontent w/Index checked - liststyle)"
+               3 < styles.content.get
+               3 {
+                       wrap = <ul class="csc-menu csc-menu-3">|</ul>
+                       select.andWhere = sectionIndex!=0
+                       select.pidInList.override.field = pages
+                       renderObj = TEXT
+                       renderObj {
+                               fieldRequired = header
+                               trim = 1
+                               field = header
+                               htmlSpecialChars = 1
+                               noBlur = 1
+                               wrap = <li class="csc-section">|</li>
+                               typolink.parameter.field = pid
+                               typolink.section.field = uid
+                       }
+               }
+
+               # "Menu of subpages to these pages (with abstract)"
+               4 < .1
+               4 {
+                       wrap = <dl class="csc-menu csc-menu-4">|</dl>
+                       1.NO {
+                               wrapItemAndSub >
+                               linkWrap = <dt>|</dt>
+                               after {
+                                       data = field : abstract // field : description // field : subtitle
+                                       required = 1
+                                       htmlSpecialChars = 1
+                                       wrap = <dd>|</dd>
+                               }
+                               ATagTitle.field = description // title
+                       }
+               }
+
+               # "Recently updated pages"
+               5 < .default
+               5 {
+                       wrap = <ul class="csc-menu csc-menu-5">|</ul>
+                       special = updated
+                       special {
+                               maxAge = 3600*24*7
+                               excludeNoSearchPages = 1
+                       }
+               }
+
+               # "Related pages (based on keywords)"
+               6 < .default
+               6 {
+                       wrap = <ul class="csc-menu csc-menu-6">|</ul>
+                       special = keywords
+                       special {
+                               excludeNoSearchPages = 1
+                       }
+               }
+
+               # "Menu of subpages to these pages + sections - liststyle"
+               7 < .1
+               7 {
+                       wrap = <ul class="csc-menu csc-menu-7">|</ul>
+                       1.expAll = 1
+                       2 < .1
+                       2 {
+                               sectionIndex = 1
+                               sectionIndex.type = header
+                               wrap = <ul>|</ul>
+                               NO.wrapItemAndSub = <li class="csc-section">|</li>
+                       }
+               }
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: menu_type, pages
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.menuSitemap
+
+               prefixComment = 2 | Menu/Sitemap element:
+       }
+}
+
+
+
+# ****************
+# CType: shortcut
+# ****************
+# Should be a complete copy from the old static template "content (default)"
+tt_content.shortcut = COA
+tt_content.shortcut {
+       20 = CASE
+       20.key.field = layout
+       20.0= RECORDS
+       20.0 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               conf.tt_content = < tt_content
+               conf.tt_address = < tt_address
+               conf.tt_links = < tt_links
+               conf.tt_guest = < tt_guest
+               conf.tt_board = < tt_board
+               conf.tt_calender = < tt_calender
+               conf.tt_rating < tt_rating
+               conf.tt_products = < tt_products
+               conf.tt_news = < tt_news
+               conf.tt_poll = < plugin.tt_poll
+       }
+       20.1= RECORDS
+       20.1 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               conf.tt_poll = < plugin.tt_poll
+               conf.tt_poll.code = RESULT,SUBMITTEDVOTE
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: records
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.recordList
+
+               prefixComment = 2 | Inclusion of other records (by reference):
+       }
+}
+
+
+# ****************
+# CType: list
+# ****************
+# Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
+tt_content.list = COA
+tt_content.list {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20.key.field = list_type
+       20 {
+               # LIST element references (NOT copy of objects!)
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               3 = CASE
+               3.key.field = layout
+               3.0 = < plugin.tt_guest
+
+               4 = CASE
+               4.key.field = layout
+               4.0 = < plugin.tt_board_list
+               4.1 = < plugin.tt_board_tree
+
+               2 = CASE
+               2.key.field = layout
+               2.0 = < plugin.tt_board_tree
+
+               5 = CASE
+               5.key.field = layout
+               5.0 = < plugin.tt_products
+
+               7 = CASE
+               7.key.field = layout
+               7.0 = < plugin.tt_calender
+
+               8 = CASE
+               8.key.field = layout
+               8.0 = < plugin.tt_rating
+
+               9 = CASE
+               9.key.field = layout
+               9.0 = < plugin.tt_news
+
+               11 = CASE
+               11.key.field = layout
+               11.0 = < plugin.tipafriend
+
+               20 = CASE
+               20.key.field = layout
+               20.0 = < plugin.feadmin.fe_users
+
+               21 = CASE
+               21.key.field = layout
+               21.0 = < plugin.feadmin.dmailsubscription
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: list_type, layout, select_key, pages [recursive]
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.plugin
+
+               prefixComment = 2 | Plugin inserted:
+       }
+}
+
+
+# ****************
+# CType: script
+# ****************
+# 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.
+tt_content.script = TEXT
+tt_content.script {
+       value =
+
+       prefixComment = 2 | Script element (Deprecated)
+}
+
+
+# ****************
+# CType: div
+# ****************
+tt_content.div = TEXT
+tt_content.div {
+       value =
+       prefixComment = 2 | Div element
+}
+
+
+# ****************
+# CType: html
+# ****************
+# This truely IS a content object, launched from inside the PHP class of course.
+# Should be a complete copy from the old static template "content (default)"
+tt_content.html = TEXT
+tt_content.html {
+       field = bodytext
+
+       editIcons = tt_content: pages
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.html
+
+       prefixComment = 2 | Raw HTML content:
+}
+
+
+# ****************
+# Default error msg:
+# ****************
+tt_content.default = TEXT
+tt_content.default {
+       field = CType
+       wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
+
+       prefixComment = 2 | Unknown element message:
+}
+
+# *********************************************************************
+# ACCESSIBILTY MODE
+# *********************************************************************
+
+
+
+
+
+
+
+plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
+       /* Captions */
+       DIV.csc-textpic-caption-c .csc-textpic-caption { text-align: center; }
+       DIV.csc-textpic-caption-r .csc-textpic-caption { text-align: right; }
+       DIV.csc-textpic-caption-l .csc-textpic-caption { text-align: left; }
+
+       /* Needed for noRows setting */
+       DIV.csc-textpic DIV.csc-textpic-imagecolumn { float: left; display: inline; }
+
+       /* Border just around the image */
+       {$styles.content.imgtext.borderSelector} {
+               border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
+               padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
+       }
+
+       DIV.csc-textpic-imagewrap { padding: 0; }
+
+       DIV.csc-textpic IMG { border: none; }
+
+       /* DIV: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DIV.csc-textpic-image { float: left; }
+
+       /* UL: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap UL { list-style: none; margin: 0; padding: 0; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI { float: left; margin: 0; padding: 0; }
+
+       /* DL: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image { float: left; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DT { float: none; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD { float: none; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD IMG { border: none; } /* FE-Editing Icons */
+       DL.csc-textpic-image { margin: 0; }
+       DL.csc-textpic-image DT { margin: 0; display: inline; }
+       DL.csc-textpic-image DD { margin: 0; }
+
+       /* Clearer */
+       DIV.csc-textpic-clear { clear: both; }
+
+       /* Margins around images: */
+
+       /* Pictures on left, add margin on right */
+       DIV.csc-textpic-left DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-right: {$styles.content.imgtext.colSpace}px;
+       }
+
+       /* Pictures on right, add margin on left */
+       DIV.csc-textpic-right DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-left: {$styles.content.imgtext.colSpace}px;
+       }
+
+       /* Pictures centered, add margin on left */
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-left: {$styles.content.imgtext.colSpace}px;
+       }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image .csc-textpic-caption { margin: 0; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image IMG { margin: 0; }
+
+       /* Space below each image (also in-between rows) */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
+       DIV.csc-textpic-equalheight DIV.csc-textpic-imagerow { margin-bottom: {$styles.content.imgtext.rowSpace}px; display: block; }
+       DIV.csc-textpic DIV.csc-textpic-imagerow { clear: both; }
+
+       /* No margins around the whole image-block */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-firstcol { margin-left: 0px !important; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-lastcol { margin-right: 0px !important; }
+
+       /* Add margin from image-block to text (in case of "Text w/ images") */
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap,
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap {
+               margin-right: {$styles.content.imgtext.textMargin}px !important;
+       }
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap,
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap {
+               margin-left: {$styles.content.imgtext.textMargin}px !important;
+       }
+
+       /* Positioning of images: */
+
+       /* Above */
+       DIV.csc-textpic-above DIV.csc-textpic-text { clear: both; }
+
+       /* Center (above or below) */
+       DIV.csc-textpic-center { text-align: center; /* IE-hack */ }
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap { margin: 0 auto; }
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image { text-align: left; /* Remove IE-hack */ }
+       DIV.csc-textpic-center DIV.csc-textpic-text { text-align: left; /* Remove IE-hack */ }
+
+       /* Right (above or below) */
+       DIV.csc-textpic-right DIV.csc-textpic-imagewrap { float: right; }
+       DIV.csc-textpic-right DIV.csc-textpic-text { clear: right; }
+
+       /* Left (above or below) */
+       DIV.csc-textpic-left DIV.csc-textpic-imagewrap { float: left; }
+       DIV.csc-textpic-left DIV.csc-textpic-text { clear: left; }
+
+       /* Left (in text) */
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap { float: left; }
+
+       /* Right (in text) */
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap { float: right; }
+
+       /* Right (in text, no wrap around) */
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap { float: right; clear: both; }
+       /* Hide from IE5-mac. Only IE-win sees this. \*/
+       * html DIV.csc-textpic-intext-right-nowrap .csc-textpic-text { height: 1%; }
+       /* End hide from IE5/mac */
+
+       /* Left (in text, no wrap around) */
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap { float: left; clear: both; }
+       /* Hide from IE5-mac. Only IE-win sees this. \*/
+       * html DIV.csc-textpic-intext-left-nowrap .csc-textpic-text { height: 1%; }
+       /* End hide from IE5/mac */
+
+       /* Browser fixes: */
+
+       /* Fix for unordered and ordered list with image "In text, left" */
+       .csc-textpic-intext-left ol, .csc-textpic-intext-left ul {padding-left: 40px; overflow: auto; height: 1%; }
+)
+
+
+# TYPO3 SVN ID: $Id: setup.txt 4493 2008-11-27 21:06:50Z steffenk $
diff --git a/typo3/sysext/css_styled_content/static/v4.2/constants.txt b/typo3/sysext/css_styled_content/static/v4.2/constants.txt
new file mode 100644 (file)
index 0000000..3997840
--- /dev/null
@@ -0,0 +1,111 @@
+  # Clear out any constants in this reserved room!
+styles.content >
+
+content {
+    # cat=content/cHeader/h0; type=int[1-5]; label=Default Header type: Enter the number of the header layout to be used by default.
+  defaultHeaderType = 1
+    # cat=advanced/links; type=small; label=Pageframe object: The name of the "contentframe". Normally set to "page" if the site has a frameset. Otherwise it should be an empty value. This is important, as it determines the target of internal links!
+  pageFrameObj = 
+
+  shortcut.tables = tt_content,tt_address,tt_links,tt_guest,tt_board,tt_calender,tt_products,tt_news,tt_rating,tt_poll
+    # cat=content/other/c; type=wrap; label= Content Element margins: Space above / below each content element (pixels of a clear-gif) in versions below TYPO3 4.3.0.
+  space = 0|0
+
+  splash.bgCol = white
+}
+
+
+    # cat=advanced; type=int+; label= News Content PID: If your template has a column with "news"-content fetched from another page-id, this is where you enter the id-number of that page!
+styles.content.getNews.newsPid = 0
+
+styles.content.links {
+  keep = path
+    # cat=content/links; type=small; label= Target for external links
+  extTarget = _blank
+  target = {$PAGE_TARGET}
+  allowTags = b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,h1,h2,h3,h4,h5,h6,address
+}
+
+styles.content.imgtext {
+    # TIP! if register[maxImageWidth] is set, this will override maxW
+    # cat=content/cImage/b1; type=int+; label= Max Image Width: This indicates that maximum number of pixels (width) a block of images inserted as content is allowed to consume.
+  maxW = 600
+    # cat=content/cImage/b2; type=int+; label= Max Image Width (Text): Same as above, but this is the maximum width when text is wrapped around an imageblock. Default is 50% of the normal Max Image Width.
+  maxWInText =
+    # cat=content/cImage/c1; type=int+; label= Default Image Width: This indicates that default number of pixels (width) a block of images inserted as content will consume, if the user didn't specify otherwise in the content object.
+  linkWrap.width = 800m
+  linkWrap.height = 600m
+  linkWrap.effects =
+
+    # cat=content/cImage/x; type=boolean; label= Advanced, New window: If set, every click-enlarged image will open in it's own popup window and not the current popup window (which may have a wrong size for the image to fit in)
+  linkWrap.newWindow = 0
+
+  captionSplit = 0
+    # cat=content/cImage/e1; type=boolean; label= Images, text split: If this is checked, then the image text (caption, alt, title, longdesc) will be split by each line and they will appear on the corresponding images in the imagelist.
+  imageTextSplit = 1
+    # cat=content/cImage/e2; type=string; label= Images, empty title handling: How will the 'title' attribute be handled if no title is given for an image. Possible choices: "keepEmpty", "useAlt" or "removeAttr". Recommended for accessibility is "removeAttr". For correct tooltips on IE, use "keepEmpty". For previous TYPO3 behaviour, use "useAlt".
+  emptyTitleHandling = removeAttr
+    # cat=content/cImage/e3; type=boolean; label= Images, title in link: Do you want the 'title' attribute to be added to the surrounding <a> tag, if present? Recommended for accessibility is "true".
+  titleInLink = 1
+    # cat=content/cImage/e4; type=boolean; label= Images, title in link and IMG: If you have the title in the <a>-tag (titleInLink=true), you don't get the 'title' in the <img>-tag. IE will not show the tooltip anymore. So to get the 'title' in <img> too (to keep IE happy), set this too. Recommended for accessibility is "false". For correct tooltips on IE, set this to "true".
+  titleInLinkAndImg = 0
+
+    # cat=content/cImage/g1; type=int[0-100]; label= Advanced, Column space: Horizontal distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
+  colSpace = 10
+    # cat=content/cImage/g2; type=int[0-100]; label= Advanced, Row space: Vertical distance between images in a block in content elements of type "Image" or "Text w/Image". If you change this manually in your CSS, you need to adjust this setting accordingly.
+  rowSpace = 5
+    # cat=content/cImage/g3; type=int[0-100]; label= Advanced, Margin to text: Horizontal distance between an imageblock and text in content elements of type "Text w/Image".
+  textMargin = 10
+
+    # cat=content/cImage/i1; type=color; label= Image border, color: Bordercolor of images in content elements when "Border"-option for element is set.
+  borderColor = black
+    # cat=content/cImage/i2; type=int[0-100]; label= Image border, thickness: Thickness of border around images in content elements when "Border"-option for element is set.
+  borderThick = 2
+    # cat=content/cImage/i3; type=int+; label= Image border, padding: Padding left and right to the image, around the border.
+  borderSpace = 0
+    # cat=content/cImage/i4; type=string; label= Image border CSS-selector: If you want your border to apply elsewhere, change this setting. E.g. to apply to the whole image+caption, use 'DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image'.
+  borderSelector = DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image IMG
+    # cat=content/cImage/i5; type=boolean; label= Image row separation: Whether images should be rendered/wrapped in separated rows, e.g. inside a DIV.csc-textpic-imagerow element
+  separateRows = 1
+}
+
+styles.content.uploads {
+  jumpurl_secure =
+  jumpurl_secure_mimeTypes = pdf=application/pdf, doc=application/msword
+  jumpurl =
+    # cat=content/cUploads; type=string; label=Labels of file sizes: The labels for bytes, kilobytes, megabytes and gigabytes
+  filesizeBytesLabels = " | K| M| G"
+}
+
+styles.content.mailform {
+  target = {$PAGE_TARGET}
+    # cat=content/cMailform; type=; label= Message, Formmail OK: This is the message (if any) that is popped-up (JavaScript) when a user clicks "send" with an email-form
+  goodMess =
+    # cat=content/cMailform; type=; label= Message, Formmail Missing: This is the message that is popped-up when a user has NOT filled required fields in an email-form
+  badMess =
+}
+
+styles.content.loginform {
+  target = _top
+    # cat=content/cLogin; type=int+; label= PID of user archive: Enter the page-uid number (PID) of the sysFolder where you keep your fe_users that are supposed to login on this site. This setting is necessary, if login is going to work!
+  pid =
+    # cat=content/cLogin; type=; label= Message, Login: This is the message (if any) that is popped-up when a user logs in as a front-end user
+  goodMess =
+}
+
+styles.content.searchform {
+    # cat=content/cSearch; type=; label= Message, Searchform: This is the message (if any) that is popped-up when a user performs a search
+  goodMess =
+}
+
+styles.content.searchresult {
+  resultTarget = {$PAGE_TARGET}
+  target = {$PAGE_TARGET}
+}
+
+ # cat=advanced/links; type=small; label= Target for internal links: Should match the name of the content PAGE-object in TypoScript when used with frames. Most cases: set to "" (empty). If you have frames in the template set to "page"
+PAGE_TARGET =
+
+
+# TYPO3 SVN ID: $Id: constants.txt 4493 2008-11-27 21:06:50Z steffenk $
+
diff --git a/typo3/sysext/css_styled_content/static/v4.2/setup.txt b/typo3/sysext/css_styled_content/static/v4.2/setup.txt
new file mode 100644 (file)
index 0000000..21e9529
--- /dev/null
@@ -0,0 +1,1441 @@
+# ***************************************************************************
+# Notice: "styles." (and "temp.") objects are UNSET after template parsing!
+# Use "lib." for persisting storage of objects.
+# ***************************************************************************
+
+# Clear out any constants in this reserved room!
+styles.content >
+
+# get content
+styles.content.get = CONTENT
+styles.content.get {
+       table = tt_content
+       select.orderBy = sorting
+       select.where = colPos=0
+       select.languageField = sys_language_uid
+}
+
+# get content, left
+styles.content.getLeft < styles.content.get
+styles.content.getLeft.select.where = colPos=1
+
+# get content, right
+styles.content.getRight < styles.content.get
+styles.content.getRight.select.where = colPos=2
+
+# get content, margin
+styles.content.getBorder < styles.content.get
+styles.content.getBorder.select.where = colPos=3
+
+# get news
+styles.content.getNews < styles.content.get
+styles.content.getNews.select.pidInList = {$styles.content.getNews.newsPid}
+
+# Edit page object:
+styles.content.editPanelPage = COA
+styles.content.editPanelPage {
+       10 = EDITPANEL
+       10 {
+               allow = toolbar,move,hide
+               label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.page
+               label.wrap = |&nbsp;<b>%s</b>
+       }
+}
+
+
+
+
+
+
+
+
+
+
+
+# *********************************************************************
+# "lib." objects are preserved from unsetting after template parsing
+# *********************************************************************
+
+# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
+lib.parseFunc {
+       makelinks = 1
+       makelinks.http.keep = {$styles.content.links.keep}
+       makelinks.http.extTarget = {$styles.content.links.extTarget}
+       makelinks.mailto.keep = path
+       tags {
+               link = TEXT
+               link {
+                       current = 1
+                       typolink.parameter.data = parameters : allParams
+                       typolink.extTarget = {$styles.content.links.extTarget}
+                       typolink.target = {$styles.content.links.target}
+                       parseFunc.constants =1
+               }
+       }
+       allowTags = {$styles.content.links.allowTags}
+       denyTags = *
+       sword = <span class="csc-sword">|</span>
+       constants = 1
+
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+# good old parsefunc in "styles.content.parseFunc" is created for backwards compatibility. Don't use it, just ignore.
+styles.content.parseFunc < lib.parseFunc
+
+# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation.
+lib.parseFunc_RTE < lib.parseFunc
+lib.parseFunc_RTE {
+       //  makelinks >
+       # Processing <table> and <blockquote> blocks separately
+       externalBlocks = table, blockquote, ol,ul, div
+       externalBlocks {
+               # The blockquote content is passed into parseFunc again...
+               blockquote.stripNL=1
+               blockquote.callRecursive=1
+               blockquote.callRecursive.tagStdWrap.HTMLparser = 1
+               blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;"
+
+               ol.stripNL=1
+               ol.stdWrap.parseFunc = < lib.parseFunc
+
+               ul.stripNL=1
+               ul.stdWrap.parseFunc = < lib.parseFunc
+
+               table.stripNL=1
+               table.stdWrap.HTMLparser = 1
+               table.stdWrap.HTMLparser.tags.table.fixAttrib.class {
+                       default = contenttable
+                       always = 1
+                       list = contenttable
+               }
+               table.stdWrap.HTMLparser.keepNonMatchedTags = 1
+               table.HTMLtableCells=1
+               table.HTMLtableCells {
+                       default.callRecursive=1
+                       addChr10BetweenParagraphs=1
+               }
+               div.stripNL = 1
+               div.callRecursive = 1 
+       }
+       nonTypoTagStdWrap.encapsLines {
+               encapsTagList = p,pre,h1,h2,h3,h4,h5,h6
+               remapTag.DIV = P
+               nonWrappedTag = P
+               innerStdWrap_all.ifBlank = &nbsp;
+               addAttributes.P.class = bodytext
+               addAttributes.P.class.setOnly=blank
+       }
+       nonTypoTagStdWrap.HTMLparser = 1
+       nonTypoTagStdWrap.HTMLparser {
+               keepNonMatchedTags = 1
+               htmlSpecialChars = 2
+       }
+}
+
+
+# Content header:
+lib.stdheader = COA
+lib.stdheader {
+
+       # Create align style-attribute for <Hx> tags
+       2 = LOAD_REGISTER
+       2.headerStyle.field = header_position
+       2.headerStyle.required = 1
+       2.headerStyle.noTrimWrap = | style="text-align:|;"|
+
+       # Create class="csc-firstHeader" attribute for <Hx> tags
+       3 = LOAD_REGISTER
+       3.headerClass = csc-firstHeader
+       3.headerClass.if.value=1
+       3.headerClass.if.equals.data = cObj:parentRecordNumber
+       3.headerClass.noTrimWrap = | class="|"|
+
+       # Date format:
+       5 = TEXT
+       5.field = date
+       5.if.isTrue.field = date
+       5.strftime = %x
+       5.wrap = <p class="csc-header-date">|</p>
+       5.prefixComment = 2 | Header date:
+
+       # This CASE cObject renders the header content:
+       # currentValue is set to the header data, possibly wrapped in link-tags.
+       10 = CASE
+       10.setCurrent {
+               field = header
+               htmlSpecialChars = 1
+               typolink.parameter.field = header_link
+       }
+       10.key.field = header_layout
+       10.key.ifEmpty = {$content.defaultHeaderType}
+       10.key.ifEmpty.override.data = register: defaultHeaderType
+
+       10.1 = TEXT
+       10.1.current = 1
+       10.1.insertData = 1
+       10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
+
+       10.2 < .10.1
+       10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
+
+       10.3 < .10.1
+       10.3.fontTag = <h3{register:headerStyle}{register:headerClass}>|</h3>
+
+       10.4 < .10.1
+       10.4.fontTag = <h4{register:headerStyle}{register:headerClass}>|</h4>
+
+       10.5 < .10.1
+       10.5.fontTag = <h5{register:headerStyle}{register:headerClass}>|</h5>
+
+       # Pops the used registers off the stack:
+       98 = RESTORE_REGISTER
+       99 = RESTORE_REGISTER
+
+       # Post-processing:
+       stdWrap.fieldRequired = header
+       stdWrap.if {
+               equals.field = header_layout
+               value = 100
+               negate = 1
+       }
+
+       stdWrap.editIcons = tt_content : header, [header_layout | header_position], [header_link|date]
+       stdWrap.editIcons.beforeLastTag = 1
+       stdWrap.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.header
+
+       stdWrap.dataWrap = <div class="csc-header csc-header-n{cObj:parentRecordNumber}">|</div>
+       stdWrap.prefixComment = 2 | Header:
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#******************************************************
+# Including library for processing of some elements:
+#******************************************************
+includeLibs.tx_cssstyledcontent_pi1 = EXT:css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+
+
+#**********************************
+# tt_content is started
+#**********************************
+tt_content >
+tt_content = CASE
+tt_content.key.field = CType
+tt_content.stdWrap {
+
+       spaceBefore.field = spaceBefore
+       spaceAfter.field = spaceAfter
+       space = {$content.space}
+
+       innerWrap.cObject = CASE
+       innerWrap.cObject {
+               key.field = section_frame
+
+               1 = TEXT
+               1.value = <div class="csc-frame csc-frame-invisible">|</div>
+
+               5 = TEXT
+               5.value = <div class="csc-frame csc-frame-rulerBefore"></div>|
+
+               6 = TEXT
+               6.value = |<div class="csc-frame csc-frame-rulerAfter"></div>
+
+               10 = TEXT
+               10.value = <div class="csc-frame csc-frame-indent">|</div>
+
+               11 = TEXT
+               11.value = <div class="csc-frame csc-frame-indent3366">|</div>
+
+               12 = TEXT
+               12.value = <div class="csc-frame csc-frame-indent6633">|</div>
+
+               20 = TEXT
+               20.value = <div class="csc-frame csc-frame-frame1">|</div>
+
+               21 = TEXT
+               21.value = <div class="csc-frame csc-frame-frame2">|</div>
+       }
+
+       innerWrap2 = | <p class="csc-linkToTop"><a href="#">{LLL:EXT:css_styled_content/pi1/locallang.xml:label.toTop}</a></p>
+       innerWrap2.insertData = 1
+       innerWrap2.fieldRequired = linkToTop
+
+       dataWrap = <a id="c{field:uid}"></a> |
+
+       prepend = TEXT
+       prepend.dataWrap = <a id="c{field:_LOCALIZED_UID}"></a>
+       prepend.if.isTrue.field = _LOCALIZED_UID
+
+       editPanel = 1
+       editPanel {
+               allow = move,new,edit,hide,delete
+               line = 5
+               label = %s
+               onlyCurrentPid = 1
+               previewBorder = 4
+               edit.displayRecord = 1
+       }
+
+       prefixComment = 1 | CONTENT ELEMENT, uid:{field:uid}/{field:CType}
+
+}
+
+
+
+# *****************
+# CType: header
+# *****************
+# See Object path "lib.stdheader"
+tt_content.header = COA
+tt_content.header {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = subheader
+               required = 1
+
+               dataWrap = <p class="csc-subheader csc-subheader-{field:layout}">|</p>
+               htmlSpecialChars = 1
+
+               editIcons = tt_content:subheader,layout
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.subheader
+
+               prefixComment = 2 | Subheader:
+       }
+}
+
+
+
+# *****************
+# CType: text
+# *****************
+tt_content.text = COA
+tt_content.text {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = bodytext
+               required = 1
+
+               parseFunc = < lib.parseFunc_RTE
+
+               editIcons = tt_content:bodytext, rte_enabled
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.bodytext
+
+               prefixComment = 2 | Text:
+       }
+}
+
+
+
+# *****************
+# CType: image
+# *****************
+# (also used for rendering 'textpic' type):
+tt_content.image = COA
+tt_content.image.10 = < lib.stdheader
+tt_content.image.20 = USER
+tt_content.image.20 {
+       userFunc = tx_cssstyledcontent_pi1->render_textpic
+
+       # Image source
+       imgList.field = image
+       imgPath = uploads/pics/
+
+       # Single image rendering
+       imgObjNum = 1
+       1 {
+               file.import.current = 1
+               file.width.field = imagewidth
+               imageLinkWrap = 1
+               imageLinkWrap {
+                       bodyTag = <body style="margin:0; background:#fff;">
+                       wrap = <a href="javascript:close();"> | </a>
+                       width = {$styles.content.imgtext.linkWrap.width}
+                       height = {$styles.content.imgtext.linkWrap.height}
+                       effects = {$styles.content.imgtext.linkWrap.effects}
+
+                       JSwindow = 1
+                       JSwindow.newWindow = {$styles.content.imgtext.linkWrap.newWindow}
+
+                       enable.field = image_zoom
+                       enable.ifEmpty.typolink.parameter.field = image_link
+                       enable.ifEmpty.typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       enable.ifEmpty.typolink.returnLast = url
+
+                       typolink.parameter.field = image_link
+                       typolink.parameter.listNum.stdWrap.data = register : IMAGE_NUM_CURRENT
+                       typolink.target = {$styles.content.links.target}
+                       typolink.extTarget = {$styles.content.links.extTarget}
+               }
+
+               altText = TEXT
+               altText {
+                       field = altText
+                       stripHtml = 1
+                       split.token.char = 10
+                       split.token.if.isTrue = {$styles.content.imgtext.imageTextSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+
+               titleText < .altText
+               titleText.field = titleText
+
+               longdescURL < .altText
+               longdescURL.field = longdescURL
+
+               emptyTitleHandling = {$styles.content.imgtext.emptyTitleHandling}
+               titleInLink = {$styles.content.imgtext.titleInLink}
+               titleInLinkAndImg = {$styles.content.imgtext.titleInLinkAndImg}
+       }
+
+       maxW = {$styles.content.imgtext.maxW}
+       maxW.override.data = register:maxImageWidth
+       maxWInText = {$styles.content.imgtext.maxWInText}
+       maxWInText.override.data = register:maxImageWidthInText
+
+       equalH.field = imageheight
+
+       image_compression.field = image_compression
+       image_effects.field = image_effects
+
+       noRows.field = image_noRows
+
+       cols.field = imagecols
+       border.field = imageborder
+
+       caption {
+               1 = TEXT
+               1 {
+                       field = imagecaption
+                       required = 1
+                       parseFunc =< lib.parseFunc
+                       br = 1
+                       split.token.char = 10
+                       split.token.if.isPositive = {$styles.content.imgtext.imageTextSplit} + {$styles.content.imgtext.captionSplit}
+                       split.returnKey.data = register : IMAGE_NUM_CURRENT
+               }
+       }
+       # captionSplit is deprecated, use imageTextSplit instead
+       captionSplit = {$styles.content.imgtext.captionSplit}
+       captionAlign.field = imagecaption_position
+       # caption/alttext/title/longdescURL splitting
+       imageTextSplit = {$styles.content.imgtext.imageTextSplit}
+
+       borderCol = {$styles.content.imgtext.borderColor}
+       borderThick = {$styles.content.imgtext.borderThick}
+       colSpace = {$styles.content.imgtext.colSpace}
+       rowSpace = {$styles.content.imgtext.rowSpace}
+       textMargin = {$styles.content.imgtext.textMargin}
+
+       borderSpace = {$styles.content.imgtext.borderSpace}
+       separateRows = {$styles.content.imgtext.separateRows}
+       addClasses =
+       addClassesImage =
+       addClassesImage.ifEmpty = csc-textpic-firstcol csc-textpic-lastcol
+       addClassesImage.override = csc-textpic-firstcol |*| |*| csc-textpic-lastcol
+       addClassesImage.override.if {
+               isGreaterThan.field = imagecols
+               value = 1
+       }
+
+       #
+       imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap" style="width:{register:totalwidth}px;"> | </div>
+       imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap"> | </div>
+
+       # if noRows is set, wrap around each column:
+       imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn" style="width:{register:columnwidth}px;"> | </div>
+
+       layout = CASE
+       layout {
+               key.field = imageorient
+               # above-center
+               default = TEXT
+               default.value = <div class="csc-textpic csc-textpic-center csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # above-right
+               1 = TEXT
+               1.value = <div class="csc-textpic csc-textpic-right csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # above-left
+               2 = TEXT
+               2.value = <div class="csc-textpic csc-textpic-left csc-textpic-above###CLASSES###">###IMAGES######TEXT###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-center
+               8 = TEXT
+               8.value = <div class="csc-textpic csc-textpic-center csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-right
+               9 = TEXT
+               9.value = <div class="csc-textpic csc-textpic-right csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # below-left
+               10 = TEXT
+               10.value = <div class="csc-textpic csc-textpic-left csc-textpic-below###CLASSES###">###TEXT######IMAGES###</div><div class="csc-textpic-clear"><!-- --></div>
+               # intext-right
+               17 = TEXT
+               17.value = <div class="csc-textpic csc-textpic-intext-right###CLASSES###">###IMAGES######TEXT###</div>
+               # intext-left
+               18 = TEXT
+               18.value = <div class="csc-textpic csc-textpic-intext-left###CLASSES###">###IMAGES######TEXT###</div>
+               # intext-right-nowrap
+               25 = TEXT
+               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>
+               25.insertData = 1
+               # intext-left-nowrap
+               26 = TEXT
+               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>
+               26.insertData = 1
+       }
+
+       rendering {
+               dl {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
+                       imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
+                       noRowsStdWrap.wrap =
+                       oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </dl>
+                       imgTagStdWrap.wrap = <dt> | </dt>
+                       editIconsStdWrap.wrap = <dd> | </dd>
+                       caption {
+                               required = 1
+                               wrap = <dd class="csc-textpic-caption"> | </dd>
+                       }
+               }
+               ul {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"><ul> | </ul></div>
+                       imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"><ul> | </ul></div>
+                       noRowsStdWrap.wrap = <ul> | </ul>
+                       oneImageStdWrap.dataWrap = <li class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </li>
+                       imgTagStdWrap.wrap =
+                       editIconsStdWrap.wrap = <div> | </div>
+                       caption.wrap = <div class="csc-textpic-caption"> | </div>
+               }
+               div {
+                       imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow" style="width:{register:rowwidth}px;"> | </div>
+                       imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last" style="width:{register:rowwidth}px;"> | </div>
+                       noRowsStdWrap.wrap =
+                       oneImageStdWrap.dataWrap = <div class="csc-textpic-image###CLASSES###" style="width:{register:imagespace}px;"> | </div>
+                       imgTagStdWrap.wrap = <div> | </div>
+                       editIconsStdWrap.wrap = <div> | </div>
+                       caption.wrap = <div class="csc-textpic-caption"> | </div>
+               }
+       }
+       renderMethod = dl
+
+       editIcons = tt_content : image [imageorient|imagewidth|imageheight], [imagecols|image_noRows|imageborder],[image_link|image_zoom],[image_compression|image_effects|image_frames],imagecaption[imagecaption_position]
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.images
+
+       caption.editIcons = tt_content : imagecaption[imagecaption_position]
+       caption.editIcons.beforeLastTag=1
+       caption.editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.caption
+
+       stdWrap.prefixComment = 2 | Image block:
+}
+
+
+
+# *****************
+# CType: textpic
+# *****************
+tt_content.textpic = COA
+tt_content.textpic {
+       10 = COA
+       10.if.value = 25
+       10.if.isLessThan.field = imageorient
+       10.10 = < lib.stdheader
+
+       20  = < tt_content.image.20
+       20 {
+               text.10 = COA
+               text.10 {
+                       if.value = 24
+                       if.isGreaterThan.field = imageorient
+                       10 = < lib.stdheader
+                       10.stdWrap.dataWrap = <div class="csc-textpicHeader csc-textpicHeader-{field:imageorient}">|</div>
+               }
+               text.20 = < tt_content.text.20
+               text.wrap = <div class="csc-textpic-text"> | </div>
+       }
+}
+
+
+
+# *****************
+# CType: bullet
+# *****************
+tt_content.bullets = COA
+tt_content.bullets {
+       10 = < lib.stdheader
+
+       20 = TEXT
+       20 {
+               field = bodytext
+               trim = 1
+               split{
+                       token.char = 10
+                       cObjNum = |*|1|| 2|*|
+                       1.current = 1
+                       1.parseFunc =< lib.parseFunc
+                       1.wrap = <li class="odd">|</li>
+       
+                       2.current = 1
+                       2.parseFunc =< lib.parseFunc
+                       2.wrap = <li class="even">|</li>
+               }
+               dataWrap = <ul class="csc-bulletlist csc-bulletlist-{field:layout}">|</ul>
+               editIcons = tt_content: bodytext, [layout]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.php:eIcon.bullets
+       
+               prefixComment = 2 | Bullet list:
+       }
+}
+
+
+
+# *****************
+# CType: table
+# *****************
+# Rendered by a PHP function specifically written to handle CE tables. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.table = COA
+tt_content.table {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_table
+       20.field = bodytext
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.innerStdWrap.wrap = |
+       20.innerStdWrap.parseFunc = < lib.parseFunc
+
+       20.stdWrap {
+               editIcons = tt_content: cols, bodytext, [layout], [table_bgColor|table_border|table_cellspacing|table_cellpadding]
+               editIcons.beforeLastTag = 1
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.table
+
+               prefixComment = 2 | Table:
+       }
+}
+
+
+# *****************
+# CType: uploads
+# *****************
+# Rendered by a PHP function specifically written to handle CE filelists. See css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php
+tt_content.uploads = COA
+tt_content.uploads {
+       10 = < lib.stdheader
+
+       20 = USER
+       20.userFunc = tx_cssstyledcontent_pi1->render_uploads
+       20.field = media
+
+       20.color {
+               default =
+               1 = #EDEBF1
+               2 = #F5FFAA
+       }
+       20.tableParams_0 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_1 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_2 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+       20.tableParams_3 {
+               border =
+               cellpadding =
+               cellspacing =
+       }
+
+       20.linkProc {
+               target = _blank
+               jumpurl = {$styles.content.uploads.jumpurl}
+               jumpurl.secure = {$styles.content.uploads.jumpurl_secure}
+               jumpurl.secure.mimeTypes = {$styles.content.uploads.jumpurl_secure_mimeTypes}
+               removePrependedNumbers = 1
+
+               iconCObject = IMAGE
+               iconCObject.file.import.data = register : ICON_REL_PATH
+               iconCObject.file.width = 150
+       }
+
+       20.filesize {
+               bytes = 1
+               bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: media, layout [table_bgColor|table_border|table_cellspacing|table_cellpadding], filelink_size, imagecaption
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.filelist
+
+               prefixComment = 2 | File list:
+       }
+}
+
+
+# ******************
+# CType: multimedia
+# ******************
+tt_content.multimedia = COA
+tt_content.multimedia {
+       10 = < lib.stdheader
+
+       20 = MULTIMEDIA
+       20.file.field = multimedia
+       20.file.wrap = uploads/media/
+       20.file.listNum = 0
+       20.params.field = bodytext
+
+       20.stdWrap {
+               editIcons = tt_content: multimedia, bodytext
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.multimedia
+
+               prefixComment = 2 | Multimedia element:
+       }
+}
+
+
+# ******************
+# CType: mailform
+# ******************
+tt_content.mailform = COA
+tt_content.mailform.10 = < lib.stdheader
+tt_content.mailform.20 = FORM
+tt_content.mailform.20 {
+       accessibility = 1
+       noWrapAttr=1
+       formName = mailform
+       dontMd5FieldNames = 1
+       layout = <div class="csc-mailform-field">###LABEL### ###FIELD###</div>
+       labelWrap.wrap = |
+       commentWrap.wrap = |
+       radioWrap.wrap = |<br />
+       radioWrap.accessibilityWrap = <fieldset###RADIO_FIELD_ID###><legend>###RADIO_GROUP_LABEL###</legend>|</fieldset>
+       REQ = 1
+       REQ.labelWrap.wrap = |
+       COMMENT.layout = <div class="csc-mailform-label">###LABEL###</div>
+       RADIO.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-radio">###FIELD###</span></div>
+       LABEL.layout = <div class="csc-mailform-field">###LABEL### <span class="csc-mailform-label">###FIELD###</span></div>
+       target = {$styles.content.mailform.target}
+       goodMess = {$styles.content.mailform.goodMess}
+       badMess = {$styles.content.mailform.badMess}
+       redirect.field = pages
+       redirect.listNum = 0
+       recipient.field = subheader
+       data.field = bodytext
+       locationData = 1
+       
+       params.radio = class="csc-mailform-radio"
+       params.check = class="csc-mailform-check"
+       params.submit = class="csc-mailform-submit"
+
+       stdWrap.wrap = <fieldset class="csc-mailform"> | </fieldset>
+       stdWrap {
+               editIcons = tt_content: bodytext, pages, subheader
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.form
+
+               prefixComment = 2 | Mail form inserted:
+       }
+}
+
+
+# ******************
+# CType: search
+# ******************
+tt_content.search = COA
+tt_content.search.10 = < lib.stdheader
+# Result:
+tt_content.search.20 = SEARCHRESULT
+tt_content.search.20 {
+       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
+       languageField.tt_content = sys_language_uid
+       renderObj = COA
+       renderObj {
+
+               10 = TEXT
+               10.field = pages_title
+               10.htmlSpecialChars = 1
+               10.typolink {
+                       parameter.field = uid
+                       target = {$styles.content.searchresult.resultTarget}
+                       additionalParams.data = register:SWORD_PARAMS
+                       additionalParams.required = 1
+                       additionalParams.wrap = &no_cache=1
+               }
+               10.htmlSpecialChars = 1
+               10.wrap = <h3 class="csc-searchResultHeader">|</h3>
+
+               20 = COA
+               20 {
+                       10 = TEXT
+                       10.field = tt_content_bodytext
+                       10.stripHtml = 1
+                       10.htmlSpecialChars = 1
+               }
+               20.stdWrap.crop = 200 | ...
+               20.stdWrap.wrap = <p class="csc-searchResult">|</p>
+       }
+
+       layout = COA
+       layout {
+               wrap = <table border="0" cellspacing="0" cellpadding="2" class="csc-searchResultInfo"><tr> | </tr></table> ###RESULT###
+
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.resultRange
+               10.wrap = <td class="csc-searchResultRange"><p>|</p></td>
+
+               20 = TEXT
+               20.value = ###PREV###&nbsp;&nbsp;&nbsp;###NEXT###
+               20.wrap = <td class="csc-searchResultPrevNext"><p>|</p></td>
+       }
+
+       noResultObj = COA
+       noResultObj {
+               10 = TEXT
+               10.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.emptySearch
+               10.wrap = <h3 class="csc-noSearchResultMsg">|</h3>
+       }
+
+       next = TEXT
+       next.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultNext
+
+       prev = TEXT
+       prev.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchResultPrev
+
+       target = {$styles.content.searchresult.target}
+       range = 20
+
+       stdWrap.prefixComment = 2 | Search result:
+}
+
+# Form:
+tt_content.search.30 < tt_content.mailform.20
+tt_content.search.30 {
+       goodMess = {$styles.content.searchform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchWord
+               10.type = sword=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchIn
+               20.type = scols=select
+               20.valueArray {
+                       10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.headersKeywords
+                       10.value = pages.title-subtitle-keywords-description:tt_content.header
+                       20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.pageContent
+                       20.value = tt_content.header-bodytext-imagecaption
+               }
+               30.type = stype=hidden
+               30.value = L0
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:search.searchButton
+       }
+       type.field = pages
+       type.listNum = 0
+       locationData = HTTP_POST_VARS
+       no_cache = 1
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-searchform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.search
+
+               prefixComment = 2 | Search form inserted:
+       }
+}
+
+
+# ******************
+# CType: login
+# ******************
+tt_content.login < tt_content.mailform
+tt_content.login.10 = < lib.stdheader
+tt_content.login.20 {
+       goodMess = {$styles.content.loginform.goodMess}
+       redirect >
+       recipient >
+       data >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.type = *user=input
+               20.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.password
+               20.type = *pass=password
+               30.type = logintype=hidden
+               30.value = login
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.login
+       }
+       type.field = pages
+       type.listNum = 0
+       target = {$styles.content.loginform.target}
+       locationData = 0
+       hiddenFields.pid = TEXT
+       hiddenFields.pid {
+               value = {$styles.content.loginform.pid}
+               override.field = pages
+               override.listNum = 1
+       }
+
+       stdWrap.wrap = <table border="0" cellspacing="1" cellpadding="1" class="csc-loginform">  | </table>
+       stdWrap {
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.login
+
+               prefixComment = 2 | Login/Logout form:
+       }
+}
+[loginUser = *]
+tt_content.login.20 {
+       dataArray >
+       dataArray {
+               10.label.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.username
+               10.label.wrap = |&nbsp;<!--###USERNAME###-->
+               30.type = logintype=hidden
+               30.value = logout
+               40.type = submit=submit
+               40.value.data = LLL:EXT:css_styled_content/pi1/locallang.xml:login.logout
+       }
+}
+[global]
+
+
+# ******************
+# CType: splash
+# ******************
+# Deprecated element.
+# Still here for backwards compliance with plugins using the "text box" type.
+tt_content.splash = CASE
+tt_content.splash.key.field = splash_layout
+tt_content.splash.stdWrap {
+       prefixComment = 2 | Textbox inserted (Deprecated)
+}
+tt_content.splash.default = COA
+tt_content.splash.default {
+       20 = CTABLE
+       20 {
+               c.1 = < tt_content.text
+               lm.1 = IMAGE
+               lm.1.file {
+                       import = uploads/pics/
+                       import.field = image
+                       import.listNum = 0
+                       maxW.field = imagewidth
+                       maxW.ifEmpty = 200
+               }
+               cMargins = 30,0,0,0
+       }
+}
+tt_content.splash.1 < tt_content.splash.default
+tt_content.splash.1.20.lm.1.file >
+tt_content.splash.1.20.lm.1.file = GIFBUILDER
+tt_content.splash.1.20.lm.1.file {
+       XY = [10.w]+10,[10.h]+10
+       backColor = {$content.splash.bgCol}
+       backColor.override.data = register:pageColor
+       format = jpg
+       5 = BOX
+       5.dimensions = 3,3,[10.w],[10.h]
+       5.color = #333333
+       7 = EFFECT
+       7.value = blur=99|blur=99|blur=99|blur=99|blur=99|blur=99|blur=99
+       10 = IMAGE
+       10.file {
+               import = uploads/pics/
+               import.field = image
+               import.listNum = 0
+               maxW.field = imagewidth
+               maxW.ifEmpty = 200
+       }
+}
+// The image frames are not available unless TypoScript code from styles.content.imgFrames.x is provided manually:
+tt_content.splash.2 < tt_content.splash.default
+#tt_content.splash.2.20.lm.1.file.m < styles.content.imgFrames.1
+tt_content.splash.3 < tt_content.splash.default
+#tt_content.splash.3.20.lm.1.file.m < styles.content.imgFrames.2
+
+// From plugin.postit1, if included:
+tt_content.splash.20 = < plugin.postit1
+
+
+
+# ****************
+# CType: menu
+# ****************
+tt_content.menu = COA
+tt_content.menu {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20 {
+               key.field = menu_type
+
+               # "Menu of these pages"
+               default = HMENU
+               default {
+                       special = list
+                       special.value.field = pages
+                       wrap = <ul class="csc-menu csc-menu-def">|</ul>
+                       1 = TMENU
+                       1 {
+                               target = {$PAGE_TARGET}
+                               NO.wrapItemAndSub = <li>|</li>
+                               NO.ATagTitle.field = description // title
+                       }
+               }
+
+               # "Menu of subpages to these pages"
+               1 < .default
+               1 {
+                       special = directory
+                       wrap = <ul class="csc-menu csc-menu-1">|</ul>
+               }
+
+               # "Sitemap - liststyle"
+               2 = HMENU
+               2 {
+                       wrap = <div class="csc-sitemap">|</div>
+                       1 = TMENU
+                       1 {
+                               target = {$PAGE_TARGET}
+                               noBlur = 1
+                               expAll = 1
+                               wrap = <ul>|</ul>
+                               NO {
+                                       stdWrap.htmlSpecialChars = 1
+                                       wrapItemAndSub = <li>|</li>
+                                       ATagTitle.field = description // title
+                               }
+                       }
+                       2 < .1
+                       3 < .1
+                       4 < .1
+                       5 < .1
+                       6 < .1
+                       7 < .1
+               }
+
+               # "Section index (pagecontent w/Index checked - liststyle)"
+               3 < styles.content.get
+               3 {
+                       wrap = <ul class="csc-menu csc-menu-3">|</ul>
+                       select.andWhere = sectionIndex!=0
+                       select.pidInList.override.field = pages
+                       renderObj = TEXT
+                       renderObj {
+                               fieldRequired = header
+                               trim = 1
+                               field = header
+                               htmlSpecialChars = 1
+                               noBlur = 1
+                               wrap = <li class="csc-section">|</li>
+                               typolink.parameter.field = pid
+                               typolink.section.field = uid
+                       }
+               }
+
+               # "Menu of subpages to these pages (with abstract)"
+               4 < .1
+               4 {
+                       wrap = <dl class="csc-menu csc-menu-4">|</dl>
+                       1.NO {
+                               wrapItemAndSub >
+                               linkWrap = <dt>|</dt>
+                               after {
+                                       data = field : abstract // field : description // field : subtitle
+                                       required = 1
+                                       htmlSpecialChars = 1
+                                       wrap = <dd>|</dd>
+                               }
+                               ATagTitle.field = description // title
+                       }
+               }
+
+               # "Recently updated pages"
+               5 < .default
+               5 {
+                       wrap = <ul class="csc-menu csc-menu-5">|</ul>
+                       special = updated
+                       special {
+                               maxAge = 3600*24*7
+                               excludeNoSearchPages = 1
+                       }
+               }
+
+               # "Related pages (based on keywords)"
+               6 < .default
+               6 {
+                       wrap = <ul class="csc-menu csc-menu-6">|</ul>
+                       special = keywords
+                       special {
+                               excludeNoSearchPages = 1
+                       }
+               }
+
+               # "Menu of subpages to these pages + sections - liststyle"
+               7 < .1
+               7 {
+                       wrap = <ul class="csc-menu csc-menu-7">|</ul>
+                       1.expAll = 1
+                       2 < .1
+                       2 {
+                               sectionIndex = 1
+                               sectionIndex.type = header
+                               wrap = <ul>|</ul>
+                               NO.wrapItemAndSub = <li class="csc-section">|</li>
+                       }
+               }
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: menu_type, pages
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.menuSitemap
+
+               prefixComment = 2 | Menu/Sitemap element:
+       }
+}
+
+
+
+# ****************
+# CType: shortcut
+# ****************
+# Should be a complete copy from the old static template "content (default)"
+tt_content.shortcut = COA
+tt_content.shortcut {
+       20 = CASE
+       20.key.field = layout
+       20.0= RECORDS
+       20.0 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               conf.tt_content = < tt_content
+               conf.tt_address = < tt_address
+               conf.tt_links = < tt_links
+               conf.tt_guest = < tt_guest
+               conf.tt_board = < tt_board
+               conf.tt_calender = < tt_calender
+               conf.tt_rating < tt_rating
+               conf.tt_products = < tt_products
+               conf.tt_news = < tt_news
+               conf.tt_poll = < plugin.tt_poll
+       }
+       20.1= RECORDS
+       20.1 {
+               source.field = records
+               tables = {$content.shortcut.tables}
+               conf.tt_poll = < plugin.tt_poll
+               conf.tt_poll.code = RESULT,SUBMITTEDVOTE
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: records
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.recordList
+
+               prefixComment = 2 | Inclusion of other records (by reference):
+       }
+}
+
+
+# ****************
+# CType: list
+# ****************
+# Should be a complete copy from the old static template "content (default)" (except "lib.stdheader")
+tt_content.list = COA
+tt_content.list {
+       10 = < lib.stdheader
+
+       20 = CASE
+       20.key.field = list_type
+       20 {
+               # LIST element references (NOT copy of objects!)
+               # THESE are OLD plugins. Modern plugins registers themselves automatically!
+               3 = CASE
+               3.key.field = layout
+               3.0 = < plugin.tt_guest
+
+               4 = CASE
+               4.key.field = layout
+               4.0 = < plugin.tt_board_list
+               4.1 = < plugin.tt_board_tree
+
+               2 = CASE
+               2.key.field = layout
+               2.0 = < plugin.tt_board_tree
+
+               5 = CASE
+               5.key.field = layout
+               5.0 = < plugin.tt_products
+
+               7 = CASE
+               7.key.field = layout
+               7.0 = < plugin.tt_calender
+
+               8 = CASE
+               8.key.field = layout
+               8.0 = < plugin.tt_rating
+
+               9 = CASE
+               9.key.field = layout
+               9.0 = < plugin.tt_news
+
+               11 = CASE
+               11.key.field = layout
+               11.0 = < plugin.tipafriend
+
+               20 = CASE
+               20.key.field = layout
+               20.0 = < plugin.feadmin.fe_users
+
+               21 = CASE
+               21.key.field = layout
+               21.0 = < plugin.feadmin.dmailsubscription
+       }
+
+       20.stdWrap {
+               editIcons = tt_content: list_type, layout, select_key, pages [recursive]
+               editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.plugin
+
+               prefixComment = 2 | Plugin inserted:
+       }
+}
+
+
+# ****************
+# CType: script
+# ****************
+# 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.
+tt_content.script = TEXT
+tt_content.script {
+       value =
+
+       prefixComment = 2 | Script element (Deprecated)
+}
+
+
+# ****************
+# CType: div
+# ****************
+tt_content.div = TEXT
+tt_content.div {
+       value =
+       prefixComment = 2 | Div element
+}
+
+
+# ****************
+# CType: html
+# ****************
+# This truely IS a content object, launched from inside the PHP class of course.
+# Should be a complete copy from the old static template "content (default)"
+tt_content.html = TEXT
+tt_content.html {
+       field = bodytext
+
+       editIcons = tt_content: pages
+       editIcons.iconTitle.data = LLL:EXT:css_styled_content/pi1/locallang.xml:eIcon.html
+
+       prefixComment = 2 | Raw HTML content:
+}
+
+
+# ****************
+# Default error msg:
+# ****************
+tt_content.default = TEXT
+tt_content.default {
+       field = CType
+       wrap = <p style="background-color: yellow;"><b>ERROR:</b> Content Element type "|" has no rendering definition!</p>
+
+       prefixComment = 2 | Unknown element message:
+}
+
+# *********************************************************************
+# ACCESSIBILTY MODE
+# *********************************************************************
+
+
+
+
+
+
+
+plugin.tx_cssstyledcontent._CSS_DEFAULT_STYLE (
+       /* Captions */
+       DIV.csc-textpic-caption-c .csc-textpic-caption { text-align: center; }
+       DIV.csc-textpic-caption-r .csc-textpic-caption { text-align: right; }
+       DIV.csc-textpic-caption-l .csc-textpic-caption { text-align: left; }
+
+       /* Needed for noRows setting */
+       DIV.csc-textpic DIV.csc-textpic-imagecolumn { float: left; display: inline; }
+
+       /* Border just around the image */
+       {$styles.content.imgtext.borderSelector} {
+               border: {$styles.content.imgtext.borderThick}px solid {$styles.content.imgtext.borderColor};
+               padding: {$styles.content.imgtext.borderSpace}px {$styles.content.imgtext.borderSpace}px;
+       }
+
+       DIV.csc-textpic-imagewrap { padding: 0; }
+
+       DIV.csc-textpic IMG { border: none; }
+
+       /* DIV: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DIV.csc-textpic-image { float: left; }
+
+       /* UL: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap UL { list-style: none; margin: 0; padding: 0; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI { float: left; margin: 0; padding: 0; }
+
+       /* DL: This will place the images side by side */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image { float: left; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DT { float: none; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD { float: none; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD IMG { border: none; } /* FE-Editing Icons */
+       DL.csc-textpic-image { margin: 0; }
+       DL.csc-textpic-image DT { margin: 0; display: inline; }
+       DL.csc-textpic-image DD { margin: 0; }
+
+       /* Clearer */
+       DIV.csc-textpic-clear { clear: both; }
+
+       /* Margins around images: */
+
+       /* Pictures on left, add margin on right */
+       DIV.csc-textpic-left DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-right: {$styles.content.imgtext.colSpace}px;
+       }
+
+       /* Pictures on right, add margin on left */
+       DIV.csc-textpic-right DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap .csc-textpic-image,
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-left: {$styles.content.imgtext.colSpace}px;
+       }
+
+       /* Pictures centered, add margin on left */
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image {
+               display: inline; /* IE fix for double-margin bug */
+               margin-left: {$styles.content.imgtext.colSpace}px;
+       }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image .csc-textpic-caption { margin: 0; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image IMG { margin: 0; }
+
+       /* Space below each image (also in-between rows) */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image { margin-bottom: {$styles.content.imgtext.rowSpace}px; }
+       DIV.csc-textpic-equalheight DIV.csc-textpic-imagerow { margin-bottom: {$styles.content.imgtext.rowSpace}px; display: block; }
+       DIV.csc-textpic DIV.csc-textpic-imagerow { clear: both; }
+
+       /* No margins around the whole image-block */
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-firstcol { margin-left: 0px !important; }
+       DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-lastcol { margin-right: 0px !important; }
+
+       /* Add margin from image-block to text (in case of "Text w/ images") */
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap,
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap {
+               margin-right: {$styles.content.imgtext.textMargin}px !important;
+       }
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap,
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap {
+               margin-left: {$styles.content.imgtext.textMargin}px !important;
+       }
+
+       /* Positioning of images: */
+
+       /* Above */
+       DIV.csc-textpic-above DIV.csc-textpic-text { clear: both; }
+
+       /* Center (above or below) */
+       DIV.csc-textpic-center { text-align: center; /* IE-hack */ }
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap { margin: 0 auto; }
+       DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image { text-align: left; /* Remove IE-hack */ }
+       DIV.csc-textpic-center DIV.csc-textpic-text { text-align: left; /* Remove IE-hack */ }
+
+       /* Right (above or below) */
+       DIV.csc-textpic-right DIV.csc-textpic-imagewrap { float: right; }
+       DIV.csc-textpic-right DIV.csc-textpic-text { clear: right; }
+
+       /* Left (above or below) */
+       DIV.csc-textpic-left DIV.csc-textpic-imagewrap { float: left; }
+       DIV.csc-textpic-left DIV.csc-textpic-text { clear: left; }
+
+       /* Left (in text) */
+       DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap { float: left; }
+
+       /* Right (in text) */
+       DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap { float: right; }
+
+       /* Right (in text, no wrap around) */
+       DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap { float: right; clear: both; }
+       /* Hide from IE5-mac. Only IE-win sees this. \*/
+       * html DIV.csc-textpic-intext-right-nowrap .csc-textpic-text { height: 1%; }
+       /* End hide from IE5/mac */
+
+       /* Left (in text, no wrap around) */
+       DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap { float: left; clear: both; }
+       /* Hide from IE5-mac. Only IE-win sees this. \*/
+       * html DIV.csc-textpic-intext-left-nowrap .csc-textpic-text { height: 1%; }
+       /* End hide from IE5/mac */
+       
+       DIV.csc-textpic DIV.csc-textpic-imagerow-last { margin-bottom: 0; }
+
+       /* Browser fixes: */
+
+       /* Fix for unordered and ordered list with image "In text, left" */
+       .csc-textpic-intext-left ol, .csc-textpic-intext-left ul {padding-left: 40px; overflow: auto; height: 1%; }
+)
+
+
+# TYPO3 SVN ID: $Id: setup.txt 4493 2008-11-27 21:06:50Z steffenk $
index d4458a0..f9c9bc7 100644 (file)
@@ -3,6 +3,9 @@ if (!defined ('TYPO3_MODE'))    die ('Access denied.');
 
 $TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['update']['changeCompatibilityVersion'] = 'tx_coreupdates_compatversion';
 
+       // manage split includes of css_styled_contents since TYPO3 4.3
+$TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['update']['splitCscToMultipleTemplates'] = 'tx_coreupdates_cscsplit';
+
        // remove pagetype "not in menu" since TYPO3 4.2
        // as there is an option in every pagetype
 $TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['update']['removeNotInMenuDoktypeConversion'] = 'tx_coreupdates_notinmenu';
index 87e245e..0f7b120 100755 (executable)
@@ -153,6 +153,7 @@ require_once (PATH_t3lib.'class.t3lib_stdgraphic.php');
 
 // include update classes
 require_once(t3lib_extMgm::extPath('install').'updates/class.tx_coreupdates_compatversion.php');
+require_once(t3lib_extMgm::extPath('install').'updates/class.tx_coreupdates_cscsplit.php');
 require_once(t3lib_extMgm::extPath('install').'updates/class.tx_coreupdates_notinmenu.php');
 require_once(t3lib_extMgm::extPath('install').'updates/class.tx_coreupdates_mergeadvanced.php');
 require_once(t3lib_extMgm::extPath('install').'updates/class.tx_coreupdates_installsysexts.php');
index 4f0ef1c..390d9ab 100644 (file)
@@ -86,6 +86,7 @@ class tx_coreupdates_compatversion {
                        $versions = array(
                                '3.8' => '<= 3.8',
                                '4.1' => '<= 4.1',
+                               '4.2' => '<= 4.2',
                        );
                        foreach ($versions as $singleVersion => $caption)       {
                                $content .= '<option value="'.$singleVersion.'">'.$caption.'</option>';
diff --git a/typo3/sysext/install/updates/class.tx_coreupdates_cscsplit.php b/typo3/sysext/install/updates/class.tx_coreupdates_cscsplit.php
new file mode 100644 (file)
index 0000000..3102a2b
--- /dev/null
@@ -0,0 +1,146 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 1999-2008 Susanne Moog <typo3@susanne-moog.de>
+*  All rights reserved
+*
+*  This script is part of the TYPO3 project. The TYPO3 project is
+*  free software; you can redistribute it and/or modify
+*  it under the terms of the GNU General Public License as published by
+*  the Free Software Foundation; either version 2 of the License, or
+*  (at your option) any later version.
+*
+*  The GNU General Public License can be found at
+*  http://www.gnu.org/copyleft/gpl.html.
+*  A copy is found in the textfile GPL.txt and important notices to the license
+*  from the author is found in LICENSE.txt distributed with these scripts.
+*
+*
+*  This script is distributed in the hope that it will be useful,
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*  GNU General Public License for more details.
+*
+*  This copyright notice MUST APPEAR in all copies of the script!
+***************************************************************/
+
+/**
+ * Contains the update class for the split of css styled content templates. Used by the update wizard in the install tool.
+ *
+ * @author Susanne Moog <typo3@susanne-moog.de>
+ * @version $Id: $
+ */
+class tx_coreupdates_cscsplit {
+
+       /**
+        * Function which checks if update is needed. Called in the beginning of an update process. 
+        *
+        * @param       string          pointer to description for the update
+        * @return      boolean         true if update is needs to be performed, false otherwise.
+        */
+       function checkForUpdate(&$description) {
+               global $TYPO3_CONF_VARS;
+
+               $description = '<p>Run this wizard if you use CSS styled content in your templates, as the inclusion of the static templates changed. </p>' . 
+                                               '<p>You are currently using css styled content in <strong>' . count($this->getTemplates($dbQueries, $customMessages)) . '&nbsp;templates</strong>  (including deleted and hidden),' . 
+                                               ' so if you did not run this wizard before, <strong>do it now</strong>.</p>' . 
+                                               '<p>The wizard will automatically choose the right template according to your compatibility version. So if you want to ' . 
+                                               'change the rendering back to an older version, you will have to use the changeCompatibilityVersion wizard above ' .
+                                               'first, and then return back to this one.</p>';
+
+               return true;
+       }
+
+       /**
+        * Performs the update itself
+        *
+        * @param       array           pointer where to insert all DB queries made, so they can be shown to the user if wanted
+        * @param       string          pointer to output custom messages
+        * @return      boolean         true if update succeeded, false otherwise
+        */
+       function performUpdate(&$dbQueries, &$customMessages) {
+               $this->setTemplates($this->getTemplates($dbQueries, $customMessages), $dbQueries, $customMessages);
+               if ($customMessages) {
+                       return false;
+               } else {
+                       return true;    
+               }
+       }
+       
+       /**
+        * Gets the templates that include the static css styled content template
+        *
+        * @param       array           pointer where to insert all DB queries made, so they can be shown to the user if wanted
+        * @param       string          pointer to output custom messages
+        * @return      array           uid and inclusion string for the templates, that include csc
+        */
+       function getTemplates(&$dbQueries, &$customMessages) {
+               $fields = 'uid, include_static_file';
+               $table = 'sys_template';
+               $where = 'include_static_file LIKE "%EXT:css_styled_content/static/%"';
+               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $table, $where);
+
+               $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);   
+
+               if ($GLOBALS['TYPO3_DB']->sql_error()) {
+                       $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
+               }
+
+               $templates = array();
+               while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
+                       $templates[] = $row;                    
+               }
+               return $templates;
+       }
+
+       /**
+        * updates the template records to include the new css styled content templates, according to the current compat version
+        *
+        * @param       array           template records to update, fetched by getTemplates()
+        * @param       array           pointer where to insert all DB queries made, so they can be shown to the user if wanted
+        * @param       string          pointer to output custom messages
+        */
+       function setTemplates($templates, &$dbQueries, &$customMessages){
+               global $TYPO3_CONF_VARS;
+
+               $compatVersion = t3lib_div::int_from_ver($TYPO3_CONF_VARS['SYS']['compat_version']);
+               $currentVersion = t3lib_div::int_from_ver(TYPO3_branch);
+
+               $templatesCount = count($templates);
+               for ($i = 0; $i < $templatesCount; $i++) {
+                       $includedTemplates = explode(',', $templates[$i]['include_static_file']);
+                       $includedTemplatesCount = count($includedTemplates);
+                       for ($j = 0; $j < $includedTemplatesCount; $j++) {
+                               if (strpos($includedTemplates[$j], 'css_styled_content') !== false) {
+                                       if ($compatVersion <= t3lib_div::int_from_ver('3.8')) {
+                                               $includedTemplates[$j] = 'EXT:css_styled_content/static/v3.8/'; 
+                                       } elseif ($compatVersion <= t3lib_div::int_from_ver('4.1')) {
+                                               $includedTemplates[$j] = 'EXT:css_styled_content/static/v3.9/'; 
+                                       } elseif ($compatVersion <= t3lib_div::int_from_ver('4.2')) {
+                                               $includedTemplates[$j] = 'EXT:css_styled_content/static/v4.2/'; 
+                                       } elseif ($compatVersion == $currentVersion || $compatVersion > '4.2') {
+                                               $includedTemplates[$j] = 'EXT:css_styled_content/static/current/';                              
+                                       }
+                               }
+                       }
+                       $templates[$i]['include_static_file'] = implode(',', $includedTemplates);
+               }
+
+               foreach ($templates as $template) {
+                       $table = 'sys_template';
+                       $where = 'uid =' . $template['uid'];
+                       $field_values = array(
+                               'include_static_file' => $template['include_static_file']
+                       );
+
+                       $GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, $where, $field_values);
+                       $dbQueries[] = str_replace(chr(10), ' ', $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
+                       
+                       if ($GLOBALS['TYPO3_DB']->sql_error()) {
+                               $customMessages = 'SQL-ERROR: ' . htmlspecialchars($GLOBALS['TYPO3_DB']->sql_error());
+                       } 
+               }       
+       }
+}
+?>
\ No newline at end of file