SP:Composant:IncludeHandler

De Hegyd Doc.

(Différences entre les versions)
Ligne 1 : Ligne 1 :
-
[Category:SP:Composants]]
+
[[Category:SP:Composants]]
= Gestionnaire d'inclusions =  
= Gestionnaire d'inclusions =  

Version du 24 juin 2010 à 16:40


Sommaire

Gestionnaire d'inclusions

Le composant IncludeHandler gère les inclusions de fichiers javascript et css au sein de l'éditeur et du site.


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éré 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é avant mise en production. Le compresseur est très a cheval sur les ";" et le bon formatage du code javascript.

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.