<?php namespace nur\v\model; /** * Interface IPlugin: un composant qui apporte une fonctionnalité à une page, * mais qui n'a aucun affichage. la fonctionnalité passe par le chargement de * feuilles CSS ou de scripts */ interface IPlugin { /** * @return ?string|array url d'une feuille de style à charger pour ce plugin */ function getCss(); /** * indiquer que la feuille de style est générée dynamiquement: il faut la * charger même si elle est déjà mentionnée par d'autres plugins */ function isDynamicCss(): bool; /** afficher les tags pour charger les feuilles de style */ function printCss(): void; /** * @return ?string|array url d'un script à charger pour ce plugin */ function getJs(); /** * indiquer que le script est généré dynamiquement: il faut le charger même * s'il est déjà mentionné par d'autres plugins */ function isDynamicJs(): bool; /** afficher les tags pour charger les scripts */ function printJs(): void; /** la méthode {@link printScript()} affiche-t-elle quelque chose? */ function haveScript(): bool; /** * afficher le script générique * * pour simplifier l'intégration, si la première ligne affichée est exactement * <script type="text/javascript"> * et la dernière ligne * </script> * alors ces lignes sont supprimées de la sortie, et le script est intégré * dans une balise globale. Sinon, si la première ligne contient une balise * <script> quelconque, alors l'affichage est fait tel quel */ function printScript(): void; /** la méthode {@link printJquery()} affiche-t-elle quelque chose? */ function haveJquery(): bool; /** * afficher le script JQuery * * pour simplifier l'intégration, si les deux premières lignes affichées sont * exactement * <script type="text/javascript"> * jQuery.noConflict()(function($) { * et les deux dernières lignes * }); * </script> * alors ces lignes sont supprimées de la sortie, et le script est intégré * dans une section partagée globale. Sinon, si la première ligne contient * une balise <script> quelconque, alors l'affichage est fait tel quel */ function printJquery(): void; }