TYPO3: RTE / HTMLArea Typoscript Configuration

It’s basically all here: http://www.typo3.net/forum/beitraege/rich_text_editor/69156/

TYPOSCRIPT Page Properties:
RTE.config.tt_content.bodytext.types.text.proc.overruleMode = ts_images, ts_links
RTE.config.tt_content.bodytext.types.textpic.proc.overruleMode = ts_images, ts_links

# Angaben, wie die Ausrichtungen (left, center, right)
# dargestellt und behandelt werden sollen
RTE.classes {
align-left {
name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifyleft
value = text-align: left;
}
align-center {
name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifycenter
value = text-align: center;
}
align-right {
name = LLL:EXT:rtehtmlarea/htmlarea/locallang_tooltips.xml:justifyright
value = text-align: right;
}
}

# Wenn man in der Basiskonfiguration die Option
# 'Enable links accessibility icons' angewählt hat, werden nach dem
# Einfügen von Links im RTE kleine Icons vor diesen platziert
# Mit den folgenden Angaben können diese leicht wieder entfernt
# oder gar durch eigene Bilder ausgetauscht werden, indem man
# beispielsweise schreibt:
# image = fileadmin/templates/images/icon.gif
RTE.classesAnchor {
internalLink {
class =
type = page
image >
titleText >
}
externalLink {
class =
type = url
image >
titleText >
}
externalLinkInNewWindow {
class =
type = url
image >
titleText >
}
internalLinkInNewWindow {
class =
type = page
image >
titleText >
}
download {
class =
type = file
image >
titleText >
}
mail {
class =
type = mail
image >
titleText >
}
}

# Default-Konfiguration
RTE.default {

# Der Inhalt im RTE lässt sich getrennt mit einem Stylesheet
# versehen, das hier angegeben werden kann
#contentCSS = fileadmin/css/rte_style.css

# Beim Kopieren von Text aus Word und anderen
# Textverarbeitungsprogrammen werden leider nicht nur der sichtbare
# Text, sondern auch unsichtbare Formatierungen mitgenommen, was zu
# unerwünschten Formaten führt. Dieser Eintrag versucht das
# meiste davon zu bereinigen.
enableWordClean = 1

# Entfernt ein
, das am Anfang eines Blockelementes steht.
removeTrailingBR = 1

# entfernt HTML-Kommentare aus dem Quelltext. Dies ist besonders dann
# ganz hilfreich, wenn man Text aus HTML-Seiten kopiert und
# damit u.U. unsichtbare HTML-Kommentare mitkopiert hat.
removeComments = 1

# Folgende Tags werden entfernt, wenn man vom Quelltext-Modus in den
# HTML-Modus umschaltet
removeTags = center, font, o:p, sdfield, strike, u

# Folgede Tags UND deren Inhalt werden entfernt
removeTagsAndContents = style,script

# Buttons, die in der RTE-Oberfläche angezeigt werden.
# Die Position gibt zugleich die Reihenfolge an.
showButtons = textstyle, textstylelabel, blockstyle, blockstylelabel, bold, italic, underline, left, center, right, orderedlist, unorderedlist, insertcharacter, line, link, image, removeformat, chMode, table, toggleborders, tableproperties, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter, columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge, findreplace,insertcharacter, undo, redo, showhelp, about

# Buttons, die NICHT in der RTE-Oberfläche angezeigt werden.
# Die Position gibt zugleich die Reihenfolge an.
hideButtons = fontstyle, formatblock, fontsize, strikethrough, lefttoright, righttoleft, textcolor, bgcolor, textindicator, emoticon, user, spellcheck, inserttag, outdent, indent, justifyfull, subscript, superscript, acronym, copy, cut, paste

# Bewirkt, dass Buttons, die zu einer Gruppe gehören, in einer Zeile
# angezeigt werden. Gruppen werden durch senkrechte Striche
# getrennt. Dies wird allerdings bislang nur von Firefox unterstützt.
keepButtonGroupTogether = 1

# Zeigt unterhalb des RTE-Eingabefeldes eine Statuszeile an, in der
# die Schachtelung der Tags angezeigt wird.
showStatusBar = 1

# Inline-Styles für die Ausrichtung in Absätzen und Tabellenzellen
# hinzufügen
inlineStyle.text-alignment (
p.align-left, h1.align-left, h2.align-left, h3.align-left, h4.align-left, h5.align-left, h6.align-left, td.align-left { text-align:left; }
p.align-center, h1.align-center, h2.align-center, h3.align-center, h4.align-center, h5.align-center, h6.align-center, td.align-center {text-align: center; }
p.align-right, h1.align-right, h2.align-right, h3.align-right, h4.align-right, h5.align-right, h6.align-right, td.align-right { textalign:right; }
)

# Wenn Sie diese Option auf den Wert 1 setzen, wird das oben über
# contentCSS eingebundene Stylesheet verwendet. Dann allerdings
# werden die gerade eben definierten Inline-Styles verworfen.
# Wollen Sie dies umdrehen, so müssen Sie die nachfolgende
# Option auf den Wert 0 setzen
ignoreMainStyleOverride = 1

# Hier wird die Transformation zwischen RTE und Datenbank
# konfiguriert
proc {

# Alle Tags, die überhaupt erlaubt sind und damit in die Datenbank
# geschrieben werden
allowTags = table, tbody, tr, th, td, h1, h2, h3, h4, h5, h6, div, p, br, span, ul, ol, li, re, blockquote, strong, em, b, i, u, sub, sup, strike, a, img, nobr, hr, tt, q, cite, abbr, acronym, center

# Die hier angegebenen Tags sind nicht erlaubt und werden daher
# nicht in die Datenbank geschrieben, sondern vorher entfernt
denyTags = font

# Wenn Sie nicht wollen, dass
-Tags zu

-Tags konvertiert
# werden sollen, müssen Sie hier den Wert 1 setzen.
dontConvBRtoParagraph = 1

# Lediglich die folgenden Tags sind außerhalb von

-Tags und
#

-Tags erlaubt
allowTagsOutside = img,hr

# Folgende Attribute sind innerhalb von

-Tags und

-Tags
# erlaubt. Alle anderen Attribute werden entfernt
keepPDIVattribs = align,class,style,id

# Folgende Klassen sind prinzipiell erlaubt
allowedClasses (
external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail, align-left, aligncenter, align-right, author
)

# Generelle Einstellungen für den HTML-Parser
HTMLparser_rte {

# Die Liste der erlaubten Tags wird von oben kopiert
allowTags < RTE.default.proc.allowTags # Ebenso die Liste der nicht erlaubten Tags denyTags < RTE.default.proc.denyTags # Tags, die direkt entfernt werden, sind hier angegeben removeTags = font # Dies entfernt die HTML-Kommentare removeComments = 1 # Tags, die nicht richtig verschachtelt sind, werden entfernt keepNonMatchedTags = 0 } # Transformationsweg: Vom RTE in die Datenbank (siehe 28.2) entryHTMLparser_db = 1 entryHTMLparser_db { # Die Liste der erlaubten Tags wird von oben kopiert allowTags < RTE.default.proc.allowTags # Ebenso die Liste der nicht erlaubten Tags denyTags < RTE.default.proc.denyTags # Für folgende Tags sind keine Attribute erlaubt noAttrib = b, i, u, strike, sub, sup, strong, em, quote, blockquote, cite, tt, br, center # Diese Tags werden entfernt, wenn sie KEINE Attribute # aufweisen rmTagIfNoAttrib = span,div,font # Sonderzeichen werden in Entities umgewandelt htmlSpecialChars = 1 ## align attribute werden erlaubt tags { p.fixAttrib.align.unset >
p.allowedAttribs = class,style,align
div.fixAttrib.align.unset >
hr.allowedAttribs = class

# b und i tags werden ersetzt (em / strong)
b.remap = strong
i.remap = em

## img tags werden erlaubt
img >
}
}

# Transformationsweg: Vom RTE in die Datenbank
exitHTMLparser_db = 1
exitHTMLparser_db {

# Das -Tag wird durch ersetzt
tags.b.remap = strong

# Das -Tag wird durch ersetzt
tags.i.remap = em

# Alle nun noch vorhandenen Tags, die kein Matching besitzen,
# werden an dieser Stelle behalten, da die unerwünschten Tags
# ohnehin beim Entry bereits herausgefiltert wurden.
keepNonMatchedTags = 1

# Eine doppelte Umwandlung von Sonderzeichen in Entities
# muss verhindert werden.
htmlSpecialChars = 0
}
}

# Folgende Klassen zur Auszeichnung von Absätzen sind erlaubt
classesParagraph (
align-left, align-center, align-right
)

# zeigt alle CSS-Klassen an, die im Stylesheet noch nicht zugeordnet
# wurden
showTagFreeClasses = 1

# Folgende Tags dürfen generell nicht eingefügt werden.
hideTags = font

# Tabellen-Optionen in der RTE Toolbar
hideTableOperationsInToolbar = 0
keepToggleBordersInToolbar = 1

# Tabellen-Editierungs-Optionen (cellspacing / cellpadding / border)
disableSpacingFieldsetInTableOperations = 1
disableAlignmentFieldsetInTableOperations = 1
disableColorFieldsetInTableOperations = 1
disableLayoutFieldsetInTableOperations = 1
disableBordersFieldsetInTableOperations = 0
}

RTE.default.enableWordClean.HTMLparser < RTE.default.proc.entryHTMLparser_db # Frontend Konfiguration des RTE # (wird für die Anzeige des RTE beim Frontend-Editing # benötigt) RTE.default.FE < RTE.default RTE.default.FE.userElements >
RTE.default.FE.userLinks >

# Breite des RTE in Fullscreen-Ansicht
TCEFORM.tt_content.bodytext.RTEfullScreenWidth = 90%

Sowie zusätzlich noch im Setup Bereich folgende RTE Einstellungen:

TYPOSCRIPT Template:
#--- RTE Tuning
lib.parseFunc_RTE.nonTypoTagStdWrap >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.DIV.class >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.remapTag.DIV = DIV

#--- Angabe von Tags, die nicht mit einem zusätzlichen wrap umgeben werden dürfen
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, pre, p, hr, h1, h2, h3, h4, h5, h6, table, tr, td