====== Ressources ====== Chaque widget Pxxo se veut indépendant et même extérieur à l'application qui l'utilise. Or, un widget utilise en plus de son template, des fichiers annexes comme des images, des feuilles de styles (CSS), des scripts (Javascript). Tout ceci représente les ressources du widget. Les ressources sont stockées dans le répertoire de thèmes du widget. Elle sont de 2 types : * statique : les fichiers binaires (typiquement des images) * dynamique : les fichiers textes (HTML, JS, CSS, XML, etc...) Toutes les ressources dynamiques sont considérées comme des fichiers "templates". Par convention le nom du fichier est suffixé par le type du contenu à produire précédé de **.php**, exemple : index.php.html, style.php.css, script.php.js. Qu'elles soient dynamiques ou statiques toutes les ressources sont générées ou recopiées dans le répertoire des ressources (par convention nommé **rsc**). C'est ce répertoire, qui sera public, qui est accessible par les navigateurs web. ===== Moteur de template ===== Le moteur de template est depuis Pxxo 5, celui du Zend Framework à savoir [[http://framework.zend.com/manual/fr/zend.view.html|Zend_View]]. ==== Variables utilisables dans un template ==== * toutes les variables de la classe PHP d'un widget sauf les variables privées. * toutes les variables générées par les méthodes [[fr:doc:pxxo:reference:methods|putData]] et [[fr:doc:pxxo:reference:methods|putWidget]] * quelques variables spéciales (Self) ==== Méthodes utilisables dans un template ==== === Accès aux helpers === Tous les helpers fournit par Zend_View sont théoriquement utilisables dans les templates. === Accès aux méthodes de la classe === La variable Self est disponible dans les templates : elle donne accès à l'instance de la classe ayant exécuté le template. Exemple : Objet : setTemplateRaw('defaut', '----'); } function defaut() { // ... } function ma_fonction() { return 'OK'; } } ?> Template : defaut.php.html Self->ma_fonction(); ?> ===== Trier des ressources ===== On peut trier les ressources via un poids. Cela est utile notamment pour les fichiers javascript qui doivent être chargés dans un ordre donné. La ressource à laquelle on associe le plus gros poids est chargée en premier. Exemple : $id = $this->putScript('second.php.js'); $this->Resources->get($id)->setWeight(3000); $id = $this->putScript('premier.php.js'); $this->Resources->get($id)->setWeight(4000); ===== Regrouper des ressources ===== Les ressources de type CSS ou Javascript peuvent regroupées en un seul fichier. Cela permet d'améliorer nettement les performances. Le groupement de ressources est actif si : * le widget n'a aucun parent * [[fr:doc:pxxo:reference:variables|MinifyLevel]] possède le drapeau ''P_M_COMBINE'' (anciennement la variable StripSpacesMode était utilisée) ===== Accès aux méta données d'une ressource ===== Il est parfois nécessaire de connaître en détail les caractéristiques des ressources d'un widget (js,css). Une information importante pour les identifier est le nom du fichier utilisé pour générer la ressource. Cette information peut être récupérée avec la méthode **''getFilename()''** dont voici un exemple d'utilisation : $prototype_js_url = "/"; foreach($this->Resources as $r) { if ($r->getFilename() == 'prototype.js') { $prototype_js_url = $r->get(); break; } } Ce code va rechercher l'url de la ressource du widget ''$this'' dont le nom de fichier est ''prototype.js''.