[TYPO3-german] RTE nervt - Paragraph, Schachtelung, Absatz-Tags

Uschi Renziehausen typo3news at otherone.de
Mon Jul 10 21:48:43 CEST 2006


Peter Niederlag wrote:
> Hallo,
> 
> Uschi Renziehausen schrieb:
>> Hi Carla,
> [...]
>> Solange keiner den Moloch HTMLparser und parseFunc anfasst, um die
>> beiden auf einheitliche Füße zu stellen und es wirklich funktionierende
>> und aufeinander abgestimmte Defaults für lib.parseFunc und
>> lib.parseFuncRTE sowie für die Transformation zwischen RTE und DB,
>> beißen auch diejenigen bisweilen frustriert in die Tastatur, die wissen,
>> wie Elemente RICHTIG verschachtelt werden und durchaus CSS können.
>>
>> Ich schreibe das in der Stimmung, die so entstehen kann, wenn frau zwei
>> Wochen lang Zeile für Zeile t3lib_htmlparser und t3lib_htmlparser_proc
>> debugged, um rauszufinden, an welcher Stelle denn eigentlich mein
>> VALIDER Code zunichte gemacht wird!
> [...]
>> Variante 1 ist mehr oder weniger ausgeschlossen, weil zumindest im
>> HTMLparser div und p hartkodiert gleichbehandelt werden und die strikte
>> Devise entweder/oder gilt. Stünde die Konfigurationsoptionen von
>> parseFunc auch für das BE zur Verfügung, gäbe es Wege aus der Krise und
>> als positiven Nebeneffekt gleich auch noch eine Entschlackung des
>> Vokabulars.
> 
> Sehr schöne Worte. :->
> 
> Das Problem ist nur, dass es wahrscheinlich keine ganz so triviale
> Aufgabe ist. Und wenn dann auch noch die Devise "rückwärtskompatibel"
> gilt: IMO unmöglich.
> 
> In der 5.0 oder einer anderen Version, die nicht mehr von dem
> Damoklesschwert "Rückwärtskompatibilität" bedroht ist, wird genau das
> sicherlich eine der wichtigen Aufgaben sein.
> 

Ich in meinem jugendlichen Leichtsinn sehe das gar nicht sooo 
pessimistisch, und ich möchte auch keinesfalls bis Version 5 warten, 
jedenfalls nicht mit ein paar kleinen, aber entscheidenden und vor allem 
notwendigen Verbesserungen, ich denke da eher Richtung 
Vorwärtskompatibilität.

Wenn ich das richtig kapiert habe, kann man ja so einen hybriden 
Metamode definieren, nennen wir den mal spasseshalber ts_realhtml. Der 
darf alles genauso machen wie ts_css mit Ausnahme dessen was passiert, 
wenn css_transform an der Reihe ist.

Folgendes würde ich anpeilen:

1) Was als Paragraph-Tag gilt, muss in den Händen des Site developers 
liegen. Damit wäre P=DIV schon fast aus der Welt. Ich nenne das Kind 
jetzt mal paragraphTags, Wert ist eine Kommaliste, also z.B.

RTE.default.proc.paragraphTags = p, para, par

TSconfig-Doku unter ->PROC
Here you can define all elements you would like to be regarded as 
paragraphs by the parser. Everything you define here will be remapped to 
  <p> or to whatever you have defined under 
RTE.default.proc.remapParagraphTag when first stored into the database.

2) Man könnte remapPragraphTag einen neuen Wert verpassen, e.g. 0, und 
wenn der gesetzt ist, dann wird eben nichts umgewandelt. Muss man überlegen.

3) Ob <p> in der Datenbank gespeichert wird, ist Sache des Site developers.
RTE.default.proc.storeParagraphTags =0/1 (also boolean)
Wenn 1, dann werden die <p>-Tags in der DB gespeichert und zwar bitte 
mit chr(10) hinter </p>, damit der Code lesbar bleibt.

4) Welche Blocks rekursiv geparsed werden sollen, muss ebenfalls in den 
Händen des Site developers liegen. Im Moment sind da nur Vorkehrungen 
für <blockquote> und ein paar andere Elemente getroffen (ol,ul,table):

RTE.default.proc.externalBlocks.tagname.callRecursive

Auf dem Weg DB=>RTE muss genau dasselbe passieren wie auf dem Weg 
DB=>FE, schließlich geht es beide Male darum, aus dem, was in der DB 
steht, wieder RTE- respektive FE-fähiges HTML zu machen.
Und für den Weg RTE=>DB, da schaumerma.

5) In jedem Fall muss abgesichert sein, dass keine leeren 
Inline-Elemente stehen bleiben, also sowas hier: <span 
style=".."><strong></strong></span>. Das darf absolut kaputtautomatisch 
passieren.

6) GANZ WICHTIG: Diese hsc-Frage! So wie das jetzt ist, treibt das jeden 
in den Wahnsinn. ERST gucken, ob bewusst irgendwelche Entities 
eingegeben wurde, diese irgendwie schützen (und sei es durch Umwandlung 
in einen fiesen MD5-String) und DANN alles htmlSpecialChars 0/1/2/-1 und 
dann MD5-Strings zurückverwandeln in Entitities.

Tja, und wenn dann die Power noch reicht, könnte man ja auch noch ein 
paar Goodies einbauen, die es vielleicht ermöglichen würden, aus Word 
und Konsorten gepasteten Inhalt so zu transformieren, dass nicht gleich 
alle Formatierungen gnadenlos gehimmelt werden, so in Abhängigkeit von 
Attributen und deren Werten :). Dann könnte man z.B. aus dem HTML-Code 
auch DOC BOOK machen oder umgekehrt und Doku damit schreiben und hach, 
unbegrenzte Möglichkeiten.

Beim Betrachten von tslib_cObj->parseFunc ist mir aufgefallen, dass 
ohnehin ein Großteil der Transformationen ohnehin mittels 
t3lib_parseHTML ausgeführt werden. Wenn man das vielleicht ein wenig 
konsequenter durchführen könnte ... MUSS doch gehen, und was nicht 
passt, wird halt passend gemacht ;-)

> Vielleicht hast Du ja Lust deinen Frust in ein paar Idee/Ansätze
> umzuformulieren und irgendwo festzuhalten? Wie könnte sowas
> funktionieren? Was sollte gewährleistet sein? Wie sollte es
> konfigurierbar sein? ... und ab als mail oder ins wiki damit.
> 

Ich musste das erstmal jetzt hier so hinschreiben, damit es raus ist. 
Ich habe mich übrigens bereits im Wiki zum Thema RTE. Ich wäre dir 
dankbar, wenn du dir das incl. der zugehörigen 'Philosophie' mal 
durchläsest und deine Meinung mitteilst.

Irgendwie habe ich zu lange im eigenen Saft geschmort und abgesehen 
davon weiss ich meist nicht, in welcher News group ich was posten 
sollte. Ich lese derzeit dev, hci, extension-coordination, typo3.org, 
rte, content-rendering, tempavoila, documentation und ein bisschen 
english und german und alles durcheinander, um halbwegs den Durchblick 
zu kriegen. Die Dinge hängen alle so eeekelhaft zusammen.



> Für mich ist die große Gretechenfrage, ob der Ansatz so wenig Markup wie
> möglich zu speichern (bspw. chr(10) statt <p>|</p>) nicht auch einfach
> fallengelassen werden sollte. Das würde nämlich schonmal wieder einiges
> an Arbeit/Komplexität rausnehmen.
> 
> Das wäre doch schonmal Klasse!
> 

Hm, also ich habe mich das so ähnlich auch gefragt, und ich glaube, so 
als echte Zukunftsmusik würde ich es betrachten, wenn die Schnipsel in 
der DB valides XML sind, und dann auf dem Weg zur Textarea transformiert 
  wird, wenn der RTE nicht zur Verfügung steht. Diese Transformation 
könnte man dann auch bleiben lassen, wenn man sie nicht braucht. Dieser 
Schritt allerdings muesste, denke ich, wirklich bis 5 warten.

Liebe Grüße, Uschi
> Gruß,
> Peter



More information about the TYPO3-german mailing list