MyBB.de Forum

Normale Version: Fehler bei Validierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ins Forum,

ich habe eine Frage zur Anzeige eines Beitrags als "Announcement" auf der Portal-Seite.

Die Validierung ergibt einen Fehler, wenn innerhalb eines Beitrags die Textausrichtung benutzt wird; hierzu ein Beispiel:

ein Text-(abschnitt) soll zentriert dargestellt werden, also
Code:
[align=center]TEXT[/align]
Wenn ich es richtig verstehe, wird im Template "postbit" der Text innerhalb von
Code:
...
<p>
{$post['message']}
</p>
...
eingebunden, ergo
Code:
...
<p>
[align=center]TEXT[/align]
</p>
...
So weit, so gut.

Die Datei "class_parser.php" wandelt diesen nun in HTML-Code um:
Code:
...
<p>
<p style="text-align: center;">TEXT</p>
</p>
...
Dies führt dann zum Fehler(-hinweis)
Zitat:Fehler:
p ist an dieser Stelle nicht erlaubt. Es fehlt ein `object`, `applet`, `map`, `iframe`, `button`, `ins`, `del` Element.

Fehlerstelle:
...><p><p style="text..
.
d. h., ein zweiter Absatz in einem Absatz ist nicht möglich.

Die möglichen HTML-Elternelemente sind m. E. für "normalen" Text nicht relevant, da weder z. B. "Flash/Movie" angezeigt noch etwas gelöscht/eingefügt werden soll.

Hat jemand einen Ansatz, was ich ändern kann, um diesen Fehler auszuschließen?
Du kannst die class_parser.php so anpassen, dass mit div-Tags gearbeitet wird:
Code:
<div style="text-align: center;">TEXT</div>
Wenn du dann noch die p-Tags aus dem postbit Template entfernst bzw. gegen <br />s ersetzt sollte es keine Probleme mehr geben.
Die Änderung in <div>-Tags
PHP-Code:
        $standard_mycode['align']['regex'] = "#\[align=(left|center|right|justify)\](.*?)\[/align\]#si";
        
//    $standard_mycode['align']['replacement'] = "<p style=\"text-align: $1;\">$2</p>"; 
        
$standard_mycode['align']['replacement'] = "<div style=\"text-align: $1;\">$2</div>"
und im Template "postbit":
Code:
...
<div id="pid_{$post['pid']}">
<br />
{$post['message']}
<br />
</div>
{$post['attachments']}
...
führt zum gleichen Fehler(-hinweis), da die "neuen" <div>-Tags dann wiederum in <div>-Tags stehen:
Zitat:Fehler:
div ist an dieser Stelle nicht erlaubt. Es fehlt ein `object`, `applet`, `map`, `iframe`, `button`, `ins`, `del` Element.

Fehlerstelle:
...><strong><div ><div style="text-align: center;">...

Zum Ersetzen der <p>-tags durch <br />-Tags habe ich noch eine Frage:
was mache ich dann mit der "class"-Definition?
Code:
...
<div id="pid_{$post['pid']}">
<p class="postmsg">
{$post['message']}
</p>
</div>
{$post['attachments']}
...
Ich glaube dazu gabs mal eine Diskussion im englischen Forum. Da es, egal wie man es macht, immer zu Problemen kommt, wurde es fürs erste dabei gelassen. Ich denke nicht, dass du hier eine zufriedenstellende Lösung finden wirst, da span-Tags soweit ich weiß hier auch nicht funktionieren.
Es gibt aber immernoch die möglihkeit <center></center><right></right><left></left> einzubinden.
Das müsste dann so aussehen:
PHP-Code:
$standard_mycode['align']['replacement'] = "<$1>$2</$1>"
Kannst ja das mal probierenWink
vielen Dank für eure Hilfe.

Ich habe nun eine (Interims-)Lösung gefunden, die ein wenig "von hinten durch die Brust ins Auge" führt:

in einem ansonsten geschlossenen Forum > "HTML erlauben".

Dadurch ist es zumindest möglich, die Absatz-Formatierung des Templates "postbit"
Code:
...
<p>
{$post['message']}
</p>
...
für Beiträge "on/off" zu schalten:
Code:
Texteingabe in Editor:

Standard-Text...
</p>
<br />
<p style="...:...;">Formatierter Text<br />
</p>
<p>
Standard-Text...

Dies ist nicht gerade sehr komfortabel, wird aber auch nicht täglich benötigt.
Andererseits ist damit bei der Validierung alles "im grünen Bereich". Wink

@ modercol: danke für deinen Ansatz. Ich verstehe ihn noch nicht zu 100%, werde aber versuchen, ihn umzusetzen.
Wenn ich nicht weiterkomme, melde ich mich eben wieder.

Nochmals danke an euch und...