Joomla 1.7 Fehlermeldungen

Innerhalb der Struktur des Fehlerhandlings in Joomla 1.7 hat sich eine Änderung ergeben, die leider dazu führt, dass die Art und Weise, wie ich innerhalb der Templates auf den Fehler reagiere, nicht mehr funkioniert.

Noch in 1.6 war es nicht möglich eine Fehlermeldung auszugeben, wenn sich dieser innerhalb eines Modules ereignete. Die Lösung war den zeitlichen Ablauf der Schritte umzustellen.Das hat allerdings zu neuen Schwierigkeiten geführt.

Ein Beispiel macht es vielleicht deutlich.
Ich bin in der Situation, dass es zu 2 Fehlermeldungen gekommen ist. Eine aus einem Modul und eine aus einer Komponente. Innerhalb des Moduls weiß Joomla nun, dass es ich um zwei Fehlermeldungen handelt.
Da aber der Fehler in der Komponente erst nach dem Modulfehler ausgegeben wird, verliert Joomla die Information über den Fehler im Modul. Das ist ein Problem. Jetzt aber zurück zum eigentlichen Templateproblem. In beiden Beez-Templates von Joomla 1.6 befindet sich noch folgende Anweisung:

<?php if ($this->getBuffer('message')) : ?>
<div class="error">
<h2>
<?php echo JText::_('JNOTICE'); ?>
</h2> <jdoc:include type="message" />
</div>
<?php endif; ?>

Um sehbehinderten Menschen den Zugang zu der Fehlermeldung zu erleichtern. Frage ich ab ob es eine Fehlermeldung mit textlichem Inhalt gibt und wenn ja, dann wird diese, mit einer Überschrift versehen, ausgegeben. Verwendet man nun diese Art der Fehlermeldung in einem 1.7- Template wird die Überschrift der Fehlermeldung immer ausgegeben - auch wenn es keinen Fehler gibt. Das ist natürlich nicht gewollt. Der Grund hierfür liegt in einer weiteren Änderung die im Rahmen, der oben Beschriebenen gemacht wurde.

Man wollte, dass das System um jede Fehlermeldung automatisch ein DIV-Element herum legt, hat allerdings dieses Element außerhalb des Arrays mit den Fehlermeldungen platziert. Dies führt dazu, dass $this->getBuffer('message') immer wahr ist und deshalb die Überschrift der Fehlermeldungen immer erscheint.

In 1.7 hat man aus diesem Grunde die Abfrage aus den Templates entfernt und gibt lediglich die Fehlermeldung selbst aus. Schade eigentlich.
Im Moment gibt es zu diesem Thema gerade eine Diskussion im Joomla- Bug - Tracker.

Mögliche Lösungen:

Es ist natürlich wünschenswert, dass dieser Fehler innerhalb des Systems schnell behoben wird, was aber nicht so einfach möglich ist, ich hoffe jedoch, dass man wenigstens die Logik und damit den Wert von $this->getBuffer('message') entsprechend anpasst. Ein Workaround besteht darin die Abfrage umzustellen und nicht auf $this->getBuffer('message') sondern auf $iserror=$app->getMessageQueue() zu reagieren.

<?php
$iserror=$app->getMessageQueue();
if( !empty($iserror)) :?>
<div class="error">
<h2>
<?php echo JText::_('TPL_BEEZ5_SYSTEM_MESSAGE'); ?>
</h2>
<jdoc:include type="message" />
</div>
<?php endif ; ?>

Dies führt zum gleichen Ergebnis, beachtet allerdings nicht die Fehlermeldungen, die aus den Modulen kommen, da diese vor dem Fehlermeldungen aus den Komponenten gerendert werden .Ob dies eine sinnvolle Vorgehensweise ist weiß ich im Moment nicht. Schöner wäre sicher das Problem würde auf tiefere Ebene gelöst.