Changeset 112697 in spip-zone
- Timestamp:
- Dec 9, 2018, 8:36:18 PM (2 years ago)
- Location:
- _plugins_/n-core/trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/n-core/trunk/compiler_noisettes.html
r110245 r112697 15 15 @param array noisettes 16 16 Liste des descriptions de noisette à compiler dans l'ordre de leur rang. 17 @param string defaut_balise18 Valeur à utiliser si la noisette est paramétrée avec la valeur `defaut`.19 17 @param string stockage 20 18 Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin … … 32 30 #SET{conteneur, #ARRAY{type_noisette, #VALEUR{type_noisette}, id_noisette, #VALEUR{id_noisette}}} 33 31 <BOUCLE_noisettes_petits_enfants(BOUCLE_noisettes_enfants)></BOUCLE_noisettes_petits_enfants> 34 #SET{avec_div, #VALEUR{balise}|=={defaut}|?{#ENV{defaut_balise, oui}, #VALEUR{balise}}} 35 [[(#GET{avec_div}|oui)<div class="noisette[ noisette_(#VALEUR{type_noisette})][ (#VALEUR{css})]">] 36 (#NOISETTE_COMPILER{#VALEUR{id_noisette}, #ENV{stockage, ''}}) 37 [(#GET{avec_div}|oui)</div>]] 32 [(#NOISETTE_COMPILER{#VALEUR{id_noisette}, #ENV{stockage, ''}})] 38 33 </BOUCLE_noisettes_enfants> 39 34 [</(#GET{balise_conteneur})>] 40 35 </B_noisettes_enfants> 41 #SET{avec_div, #VALEUR{balise}|=={defaut}|?{#ENV{defaut_balise, oui}, #VALEUR{balise}}} 42 [[(#GET{avec_div}|oui)<div class="noisette[ noisette_(#VALEUR{type_noisette})][ (#VALEUR{css})]">] 43 (#NOISETTE_COMPILER{#VALEUR{id_noisette}, #ENV{stockage, ''}}) 44 [(#GET{avec_div}|oui)</div>]] 36 [(#NOISETTE_COMPILER{#VALEUR{id_noisette}, #ENV{stockage, ''}})] 45 37 </BOUCLE_noisettes> -
_plugins_/n-core/trunk/ncore/ncore.php
r110856 r112697 748 748 } 749 749 750 /** 751 * Renvoie la configuration par défaut de l'encapsulation d'une noisette en mode non auto. 752 * Cette information est utilisée si le mode d'encapsulation est manuel et si le champ `balise` de la noisette 753 * vaut `defaut`. 754 * 755 * Le service N-Core positionne cette valeur à `div`. 756 * 757 * @package SPIP\NCORE\NOISETTE\SERVICE 758 * 759 * @uses ncore_chercher_service() 760 * 761 * @param string $plugin 762 * Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou 763 * un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe. 764 * 765 * @return string 766 * VCapsule par defaut qui peut valoir `div` ou `aucune`. 767 */ 768 function ncore_noisette_initialiser_capsule($plugin) { 769 770 // On cherche le service de stockage à utiliser selon la logique suivante : 771 // - si le service de stockage est non vide on l'utilise en considérant que la fonction existe forcément; 772 // - sinon, on utilise la fonction du plugin appelant si elle existe; 773 // - et sinon, on utilise la fonction de N-Core. 774 include_spip('inc/ncore_utils'); 775 if ($configurer = ncore_chercher_service($plugin, 'noisette_initialiser_capsule', '')) { 776 // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage. 777 // On autorise la fonction du plugin à retourner autre chose que true ou false si tant est que l'on puisse 778 // en déduire un booléen (par exemple, 'on' et '' comme le retourne une case à cocher du plugin Saisies). 779 $defaut_capsule = $configurer($plugin); 780 } else { 781 // Le service ne propose pas de fonction propre, on utilise celle de N-Core. 782 $defaut_capsule = 'div'; 783 } 784 785 return $defaut_capsule; 786 } 787 750 788 751 789 // ----------------------------------------------------------------------- -
_plugins_/n-core/trunk/ncore_fonctions.php
r112626 r112697 7 7 return; 8 8 } 9 10 11 if (!defined('_NCORE_ENCAPSULATION_AUTO')) { 12 /** 13 * Mode d'encapsulation des noisettes. 14 * Le mode auto applique à chaque noisette une capsule propre au type de noisette ou à défaut la capsule de base. 15 * Dans ce mode, il n'est plus possible de choisir manuellement l'encapsulation de chaque noisette. 16 */ 17 define('_NCORE_ENCAPSULATION_AUTO', 'false'); 18 } 19 20 if (!defined('_NCORE_ENCAPSULATION_DEFAUT')) { 21 /** 22 * Dans le cas où le mode d'encapsulation auto est inactif, il est possible de choisir noisette par noisette 23 * le type d'encapsulation. Les noisettes sont initialisés avec la valeur 'defaut' qui fait référence à cette 24 * constante. N-Core initialise cette valeur à 'div' ce qui provoque l'encapsulation dans une balise div. 25 */ 26 define('_NCORE_ENCAPSULATION_DEFAUT', 'div'); 27 } 28 9 29 10 30 // ----------------------------------------------------------------------- … … 278 298 279 299 300 /** 301 * Encapsule, si demandé, le contenu de la noisette issu de la compilation dans un HTML plus ou moins complexe. 302 * 303 * @package SPIP\NCORE\NOISETTE\API 304 * 305 * @api 306 * @filtre 307 * 308 * @uses ncore_noisette_initialiser_capsule() 309 * 310 * @param string $plugin 311 * Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou 312 * un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe. 313 * @param string $contenu 314 * Contenu compilé de la noisette en cours avant encapsulation. 315 * @param string $balise 316 * Indicateur d'encapsulation du contenu par une balise div ou pas. 317 * @param string $css 318 * Styles à intégrer au div d'encapsulation si appliqué. 319 * @param string $type_noisette 320 * Identifiant du type de noisette. 321 * @param string $stockage 322 * Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin 323 * ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin 324 * fournissant le service de stockage souhaité. 325 * 326 * @return array 327 * Le tableau éventuellement vide des éléments de contexte de la noisette. 328 */ 329 function noisette_encapsuler($plugin, $contenu, $balise, $css, $type_noisette, $stockage = '') { 330 331 // Initialisation du tableau du HTML des capsules indexé par plugin et nom de capsule. 332 static $capsules = array(); 333 static $defaut_encapsulation = ''; 334 335 336 // Détermination du défaut d'encapsulation en mode non automatique uniquement (non utilisé en mode auto). 337 if (!_NCORE_ENCAPSULATION_AUTO and !$defaut_encapsulation) { 338 $defaut_encapsulation = ncore_noisette_initialiser_capsule($plugin); 339 } 340 341 // Si le mode d'encapsulation est positionné à auto ou si le mode d'encapsulation est manuel et que la noisette 342 // demande explicitement une encapsulation alors encapsule le contenu fourni. 343 // Sinon on renvoie le contenu compilé de la noisette tel que. 344 if (_NCORE_ENCAPSULATION_AUTO 345 or (!_NCORE_ENCAPSULATION_AUTO 346 and (($balise != 'aucune') or (($balise == 'defaut') and ($defaut_encapsulation != 'aucune'))))) { 347 // Détermination de la capsule à appliquer 348 // -- on cherche d'abord une capsule simple non liée au type de noisette. 349 $fond_capsule = ''; 350 if (!_NCORE_ENCAPSULATION_AUTO 351 and (($balise != 'auto') or (($balise == 'defaut') and ($defaut_encapsulation != 'auto')))) { 352 $fond_capsule = ($balise == 'defaut') ? $defaut_encapsulation : $balise; 353 $contexte_capsule = array('type_noisette' => $type_noisette, 'css' => $css); 354 } 355 356 // -- Si la capsule simple n'a pas été trouvée c'est qu'on veut appliquer une capsule liée au type de noisette. 357 if (!$fond_capsule) { 358 // On utilise soit la capsule propre à un type de noisette si elle existe, soit on utilise la capsule 359 // par défaut qui porte le nom 'dist'. 360 if (find_in_path("capsules/${type_noisette}.html")) { 361 $fond_capsule = "capsules/${type_noisette}"; 362 } else { 363 $fond_capsule = 'capsules/dist'; 364 } 365 $contexte_capsule = array('type_noisette' => $type_noisette); 366 } 367 368 // On recherche si la capsule est déjà disponible sinon on la calcule et on la met en cache. 369 if (!isset($capsules[$plugin][$fond_capsule])) { 370 $capsule = recuperer_fond($fond_capsule, $contexte_capsule); 371 $capsules[$plugin][$fond_capsule] = $capsule; 372 } 373 374 // On insère le contenu de la noisette dans la capsule qui contient toujours une indication d'insertion explicite. 375 if ($capsules[$plugin][$fond_capsule]) { 376 $contenu = str_replace('<!--noisettes-->', $contenu, $capsules[$plugin][$fond_capsule]); 377 } 378 } 379 380 return $contenu; 381 } 382 383 280 384 // ----------------------------------------------------------------------- 281 385 // ------------------------- BALISES CONTENEURS -------------------------- -
_plugins_/n-core/trunk/paquet.xml
r111464 r112697 2 2 prefix="ncore" 3 3 categorie="outil" 4 version="0. 4.11"4 version="0.5.0" 5 5 etat="dev" 6 6 compatibilite="[3.2.0;3.2.*]" -
_plugins_/n-core/trunk/public/noisette_compiler.php
r110859 r112697 39 39 $type_noisette = champ_sql('type_noisette', $p); 40 40 $parametres = champ_sql('parametres', $p); 41 $balise = champ_sql('balise', $p); 42 $css = champ_sql('css', $p); 41 43 $plugin = champ_sql('plugin', $p); 42 44 … … 54 56 \".var_export(array('ajax'=>(type_noisette_ajaxifier($plugin, $type_noisette, $stockage))),true).\" 55 57 );?>\""; 56 $inclusion_statique = "recuperer_fond( 57 type_noisette_localiser($plugin, $type_noisette), 58 array_merge(unserialize($parametres), noisette_contextualiser($plugin, $noisette, $type_noisette, $environnement, $stockage)), 59 array('ajax'=>(type_noisette_ajaxifier($plugin, $type_noisette, $stockage))) 58 $inclusion_statique = "noisette_encapsuler( 59 $plugin, 60 recuperer_fond( 61 type_noisette_localiser($plugin, $type_noisette), 62 array_merge(unserialize($parametres), noisette_contextualiser($plugin, $noisette, $type_noisette, $environnement, $stockage)), 63 array('ajax'=>(type_noisette_ajaxifier($plugin, $type_noisette, $stockage))) 64 ), 65 $balise, 66 $css, 67 $type_noisette, 68 $stockage 60 69 )"; 61 70 $code = "((type_noisette_dynamiser($plugin, $type_noisette, $stockage)) ? $inclusion_dynamique : $inclusion_statique)";
Note: See TracChangeset
for help on using the changeset viewer.