nur-sery/nur_src/v/model/IPlugin.php

73 lines
2.2 KiB
PHP
Raw Normal View History

2023-12-03 22:10:18 +04:00
<?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;
}