
Hallo,
es gibt eine kurze Diskussion zu Zeilenumbrüchen im FAQ-Modul
von OTRS vom März 2007. So wie ich das sehe hat sich diesbezüglich
nichts getan in der Zwischenzeit so dass ich das Thema als "neuer"
OTRS-Nutzer gerne nochmal aufgreifen möchte.
In der Tat wird ein FAQ-Beitrag nach einer festen Anzahl
Zeichen umgebrochen und in der HTML-Darstellung durch ein
<br> ersetzt. Die Anzahl der Zeichen wird anscheinend von der
Breite des Formularfeldes bestimmt, in das der Beitrag
eingegeben wird. Die automatischen Zeilenumbrüche im Formularfeld
wandern dann anscheinend als \n in die Datenbank und werden bei der
Darstellung entsprechend ersetzt.
Das hat wohl den Sinn, dass selbst eingegebene Zeilenumbrüche
im Text (\n) auch in HTML als solche dargestellt werden.
Es ist mir allerdings nicht klar, warum ich, falls ich für
das FAQ-Modul die Darstellung HTML gewählt habe, meine
Textgestaltung nicht komplett in HTML machen sollte, also
selbst tags wie <br> oder <p> oder ... verwenden sollte
um das zu erreichen was ich möchte.
Richtig störend ist das automatische Ersetzen von \n durch
<br> dann wenn das Formularfeld Zeilenumbrüche an Stellen
macht, an denen Sie bei der Darstellung dazu führen den
Text zu zerhacken. Das passiert bei mir etwa bei der
Verwendung des Konquerors unter OpenSUSE 10.3 und sieht dann
so aus:
...
Das Kernelupdate schreibt neue Einträge in das Bootmenu
von grub
was dazu führt, dass der neue Kernel von einer
anderen
Partition aus gestartet werden will. Statt
...
Was ich nun gemacht habe, ist, diese Ersetzung im FAQ-Modul
in Zeile 542 auszukommentieren, wie im folgeden Ausschnitt:
# html quoting
for my $Key (qw (Field1 Field2 Field3 Field4 Field5 Field6)) {
if ( $Self->{ConfigObject}->Get('FAQ::Item::HTML') ) {
my @Array = split /pre>/, $ItemData{$Key};
my $Text = '';
for (@Array) {
if ( $_ =~ /(.*)\<\/$/ ) {
$Text .= 'pre>' . $_ . 'pre>';
}
else {
# $_ =~ s/\n/\
/g;
$Text .= $_;
}
}
$ItemData{$Key} = $Text;
}
else {
$ItemData{$Key} = $Self->{LayoutObject}->Ascii2Html(
NewLine => 0,
Text => $ItemData{$Key},
VMax => 5000,
HTMLResultMode => 1,
LinkFeature => 1,
);
}
}
if ( !%ItemData ) {
return $Self->{LayoutObject}->ErrorScreen();
}
Damit kann ich dann zwar kein Return mehr nutzen, um Zeilenumbrüche
in HTML zu erzwingen, aber das ist es mir Wert. Eine andere Lösung,
und vielleicht sogar eine bessere, könnte darin bestehen, die
*automatischen* Zeilenumbrüche gar nicht erst in die Datenbank zu
übernehmen, falls das machbar wäre.
Ansonsten plädiere ich für die obige Lösung, da es mir stringenter
erscheint, wirklich auch HTML zu nutzen wenn ich das will und dann
auch in der Pflicht bin, Zeilenumbrüche in meinem HTML Code durch
<br /> oder was auch immer zu erzwingen.
Grüße
Klaus
--
[ Dr. Klaus Braun
Institut für Physische Geographie
Universität Freiburg
Werthmannstraße 4, D-79085 Freiburg
Phone: +49-761-203-9223
Fax: +49-761-203-3596
Email: klaus.braun@geographie.uni-freiburg.de ]