SP:Composant:IncludeHandler
De Hegyd Doc.
Sommaire |
Gestionnaire d'inclusions
Le composant IncludeHandler gère les inclusions de fichiers javascript et css au sein de l'éditeur et du site.
Implémentation
Classe utilisée: IncludeHandler.
Configuration
Le composant utilise un fichier de configuration pour charger les différents fichiers à include pour chaque page. Le fichier est: conf/includeHandler.php.
il contient deux variables distinctes includesCSS et includesJS.
Configuration des fichiers CSS
La liste des fichiers CSS à inclure se trouve dans le tableau includesCSS. Voici la structure du tableau
array(
'common' => array(),//liste des fichiers inclus partout
'xxx' => array( //liste des fichiers inclus pour les pages se trouvant dans l'espace de nom editor (repertoire controlers/xxx & templates/xxx)
'common' => array() // fichier inclus sur toutes les pages de l'espace de nom xxx
'mapage' => array() //fichiers inclus dans la page mapage de l'espace de nom
)
Chaque ligne incluant un fichier se présente de la facon suivante:
array('url relative depuis la racine du projet','no' / true) //le second paramètre indique si le fichier peut être minifié ou non: 'no' pour non, et 'yes'/true si oui
Configuration des fichiers JS
La liste des fichiers CSS à inclure se trouve dans le tableau includesCSS. Voici la structure du tableau
array(
'common' => array(),//liste des fichiers inclus partout
'xxx' => array( //liste des fichiers inclus pour les pages se trouvant dans l'espace de nom editor (repertoire controlers/xxx & templates/xxx)
'common' => array() // fichier inclus sur toutes les pages de l'espace de nom xxx
'mapage' => array() //fichiers inclus dans la page mapage de l'espace de nom
)
Chaque ligne incluant un fichier correspond a son url relative depuis le répertoire www/js du projet.
Variables externes
Des variables externes peuvent être ajoutées pour constituer les noms de fichiers, par exemple:
monStyle.css?ts={CSS_LAST_EDIT}
Ensuite, il suffit de passer la variable lors de la construction de l'objet (voir initialisation). Si une variable externe n'est pas passé dans le constructeur, alors tous les nom de fichiers l'utilisant ne seront pas inclus.
Utilisation
Initialisation
Pour utiliser le composant sur les page, il faut initialiser l'object :
$includeHandler = new IncludeHandler(
$mapage, //nom de la page
array(
"MODEL"=>$siteClient->getModel()->modelSpaceName,
"CSS_LAST_EDIT"=>$siteClient->utsUpdateCSS
), //liste des variable externes
true,//flag indiquant si la compression et le cache doivent être activés ou non.
IncludeHandler::CMS_MODE//espace de nom dans lequel se trouve la page. Pour l'éditeur il en existe deux: cms & editor, enregistrés dans des constante
);
Des setteurs permettent apres l'initialisation de modifier la page, le mode, et d'activer / désactiver la compression
Recupération de la liste des fichiers
Pour récupérer la liste des fichiers à inclure, voici les fonctions à utiliser :
$includehandler->getJSFiles(); $includehandler->getCSSFiles();
Compression & Cache
Fonctionnement
Lors de la constitution de la liste des fichiers, si la compression est activée, l'object IncludeHandler remplace tous les fichiers pouvant être compréssé par un seul, dont l'url est contenu dans la constante CSS_COMPRESSED_URL pour le css, JS_COMPRESSED_URL pour le javascript.
Lors de l'affichage de la page, l'appel a chacun des fichiers via le htaccess, execute une page php qui fait appel aux fonctions de compression et de mise en cache du IncludeHandler. Ensuite elle récupère l'adresse du fichier de cache et affiche son contenu.
Ces méthodes ont le fonctionnement suivant: si aucun cache n'est spécifié, alors le IH (IncludeHandler) se charge de récupérer la liste des fichiers à compresser et cacher, les compresse, et crée un fichier de cache.
Precaution d'usage
Il est préférable en cas de modification d'un script javascript de tester sa version compressée avant mise en production. Le compresseur est tatillon le bon formatage du code javascript, et ne pardonne pas les erreurs d'étourderies (présence de ';', définition du scope des variables).
Pour tester la compression en dev, passez la variable COMPRESS_CACHE_DEV de la configuration à true.
Rafraichissement du cache
Le systeme de cache ne détecte pas de façon automatique les changements. Ainsi dans le cas de modifications, il faut le vider à la main. La console d'admin le permet.
Utilisation dans l'éditeur
L'intitialisation est réalisée dans www/index.php, puis la liste des fichiers sont passés à l'objet context en fin de fichier, qui se charge de les inclure dans le template global.
Les pages php appelées pour l'inclusion des fichiers de cache sont www/jsSiteClient.php et www/cssSiteClient.php
L'option de cache & compression est désactivé en environnement de dev.
