NDCMS : Gestions des fichiers JS/CSS/...
Par Nicolas Desaleux. lundi, juin 7 2010, 20:18. ND_CMS | Lien permanent.
Suite à la vision du screencast \"protecting assets with zend controller plugins\", j'ai détourné le plugin afin de me permettre l'utilisation de ressources situées en plusieurs endroits.
En effet, il est possible que le module doivent charger ces propres CSS/images/Javascript pour avoir un fonctionnement optimal. Hors, je ne souhaite pas à chaque nouveau site, devoir recopier les ressources spécifiques.
De plus, je devais aussi gérer le fait que les différents sites aient le même fichier index.php, les informations propres aux sites se situant dans le répertoire applications.
<?php class ND_Controller_Plugin_Resources extends Zend_Controller_Plugin_Abstract{ public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request){ if ( $request->getControllerName() != 'resources' ) return ; $from = $request->getParam('from','default') ; switch( $from ){ case 'common' : $file = COMMON_PATH. '/file' ; break; case 'default': $file = APPLICATION_PATH. '/file' ; break; default : $file = MODULES_PATH . '/' . $from ; break; } $file .= '/statics/' . $request->getParam('file') ; if ( file_exists($file) ){ header('Content-Type:', finfo_file(finfo_open(FILEINFO_MIME_TYPE), $file) ); $content = file_get_contents($file); // permet de gerer les urls dans les css if ( substr($request->getParam('file'),0,3) == 'css' ){ $content = str_replace('url(../', 'url(resources?from='.$from.'&file=', $content ); } echo $content ; } exit; } }