OpenDocument-Template: Umwandlung von HTML-Feldern gefixt
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 5 Oct 2015 10:52:40 +0000 (12:52 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 5 Oct 2015 10:57:19 +0000 (12:57 +0200)
commita2be45a1fb3e4f1ad0a906699095985b42e05ed5
tree1cb3044d65cd94d29f0b860d7861e966274b7540
parent31347b09de4258cab0dd7c251ea69a4485e5f40b
OpenDocument-Template: Umwandlung von HTML-Feldern gefixt

OpenDocument hat gewisse Probleme mit Verschachtelung von gewissen
Konstrukten, z.B. kein <text:p> innerhalb von <text:p><text:span>. Die
HTML-Felder aber sind immer in ein <p>…</p> eingeschlossen.

Bisheriger Ansatz war, davon auszugehen, dass der aktuell offene Tag im
XML ein <text:p> ist. Dafür wurde im HTML schlicht das erste <p> und das
letzte </p> entfernt. Das funktioniert, wenn das HTML-Feld der einzige
Inhalt in z.B. einer Tabellenzelle ist, z.B. eine Zelle, in der nur
<%longdescription%> steht.

Es geht aber in die Hose, wenn der innerste offene Tag eben nicht
<text:p> ist, was sehr schnell passiert, z.B. wenn man Konstrukte wie
<%description%><%if longdescription%><%longdescription%><%end%>
nutzt.

Lösung ist, die aktuell offenen Tags in einem Stack zu verfolgen. Das
HTML-Formatieren kann dann alle offenen Tags bis zum letzten <text:p>
schließen und am Ende wieder öffnen.

Potenzieller Fix für Redmine #83.
SL/Template/OpenDocument.pm