Ich nutze ein ähnliches Plugin (allerdings nicht für Joomla) das mit tidy arbeitet.
Ist ein ganz nettes Teil, auf das ich persönlich nicht mehr verzichten möchte, schon allein wenn es um das Aufspüren von Fehlern geht. Einziges Problem: Es kann nicht mit Html-Kommentaren innerhalb von JavaScript umgehen, da so etwas bei mir bisher nicht vorgekommen ist.
Vielleicht dient es ja irgendjemanden als Anregung;
<?php
/**
* Optimiert den ausgegebenen Quelltext.
*/
class Plugin_Tidy extends Zend_Controller_Plugin_Abstract
{
/**
* {@inheritDoc}
*
* @return void
*/
public function dispatchLoopShutdown()
{
if (!$this->_canOptimizeContent()) {
return;
}
$oTidy = $this->_getTidy(
$this->_removeHtmlComments(
$this->_getContent()));
if ($this->_isLogginEnabled()) {
$this->_logErrors($oTidy);
}
$oTidy->cleanRepair();
$this->_setContent($oTidy);
}
/**
* Kann der aktuell gesetzte Inhalt überhaupt optimiert werden?
* Von Bildern oder ähnlichem sollte man die Finger lassen.
*
* @return boolean
*/
protected function _canOptimizeContent()
{
if (count($this->getResponse()->getHeaders()) > 0) {
foreach ($this->getResponse()->getHeaders() AS $aHeader) {
if ($aHeader[\'name\'] === \'Content-Type\') {
return false;
}
}
}
return true;
}
/**
* Sollen die Fehler mitgeloggt werden?
*
* @return boolean
*/
protected function _isLogginEnabled()
{
return (APPLICATION_ENV !== \'production\');
}
/**
* Gibt den zu optimierenden Quelltext zurück.
*
* @return string
*/
protected function _getContent()
{
return $this->getResponse()->getBody();
}
/**
* Setzt den neuen Quelltext.
*
* @param tidy $oTidy
* @return Plugin_Tidy
*/
public function _setContent(tidy $oTidy)
{
$this->getResponse()->setBody((string) $oTidy);
return $this;
}
/**
* Entfernt die Kommentare aus dem Quelltext, belässt aber CCs.
*
* @param string $sText
* @return string
*/
protected function _removeHtmlComments($sText)
{
return preg_replace(\'//isU\', \'\', $sText);
}
/**
* Gibt das Tidy-Objekt zurück.
*
* @param string $sText
* @return tidy
*/
protected function _getTidy($sText)
{
return tidy_parse_string($sText, $this->_getTidyOptions(), \'utf8\');
}
/**
* Gibt die Optionen für tidy zurück.
*
* @return array
*/
protected function _getTidyOptions()
{
return array(
\'accessibility-check\' => 3, //Zugänglichkeit
\'drop-proprietary-attributes\' => true, //Entfernen von unschönen Attributen
\'drop-empty-paras\' => true, //Entfernen von leeren Paragraphen
\'hide-comments\' => false, //Kommentare entfernen wir selber
\'hide-endtags\' => true, //Endtags sollten für XHTML gesetzt werden
\'indent\' => false, //Einrücken benötigen wir nicht
\'indent-attributes\' => false, //Attribute müssen auch nicht eingerückt werden
\'output-xhtml\' => true, //Als Ausgabe wollen wir schönes XHTML haben
\'wrap\' => 0, //Wir benötigen keine zusätzlichen Zeilenumbrüche
);
}
/**
* Loggt die Fehler im Quelltext.
*
* @param tidy $oTidy
* @return Plugin_Tidy
*/
protected function _logErrors(tidy $oTidy)
{
$oTidy->diagnose();
$this->_doLog(\'For accessibility errors look at www.aprompt.ca/Tidy/accessibilitychecks.html\');
foreach ($this->_getErrors($oTidy) AS $sError) {
$this->_doLog($sError);
}
return $this;
}
/**
* Gibt die von tidy im Quelltext gefundenen Fehler zurück.
*
* @param tidy $oTidy
* @return array
*/
protected function _getErrors(tidy $oTidy)
{
$aLines = array_reverse(explode("\\n", $oTidy->errorBuffer));
array_shift($aLines);
return $aLines;
}
/**
* Loggt einen Fehler.
*
* @param string $sText
* @return Plugin_Tidy
*/
protected function _doLog($sText)
{
Zend_Registry::get(\'Zend_Log\')->log($sText, Zend_Log:
EBUG);
return $this;
}
}
Naturkosmetik in Bochum
Steppenhahn Ultramarathon-Community
Beitrag erstellen
EinloggenKostenlos registrieren