73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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;
 | 
						|
}
 |