Browse Source

Revue qualité du PHPDoc et quelques déplacements de fichiers et de fonctions.

On fait un up de z pour synchroniser le noiZetier avec cette version fonctionnelle.
svn/root/tags/v0.10.0
eric@smellup.net 4 years ago
parent
commit
9f0ce42686
  1. 3
      .gitattributes
  2. 6
      avertir_preview.html
  3. 37
      compiler_noisettes.html
  4. 4
      conteneur_compiler.html
  5. 4
      inc/ncore_conteneur.php
  6. 60
      inc/ncore_noisette.php
  7. 24
      inc/ncore_type_noisette.php
  8. BIN
      ncore-128.png
  9. BIN
      ncore-16.png
  10. BIN
      ncore-24.png
  11. 54
      ncore/ncore.php
  12. 104
      ncore_fonctions.php
  13. 10
      noisettes/conteneur-preview.html
  14. 10
      noisettes/conteneur.html
  15. 0
      noisettes/type_noisette.schema.json
  16. 0
      noisettes/type_noisette.template.yaml
  17. 2
      paquet.xml
  18. 6
      public/conteneur_identifier.php
  19. 7
      public/noisette_compiler.php
  20. 2
      public/noisette_preview.php
  21. 28
      public/noisette_repertorier.php

3
.gitattributes vendored

@ -1,8 +1,5 @@
* text=auto !eol
/Guide[!!-~]N[!!-~]-[!!-~]Le[!!-~]plugin[!!-~]N-Core.pdf -text
/conteneur_compiler.html -text
/ncore-128.png -text
/ncore-16.png -text
/ncore-24.png -text
/ncore-32.png -text
/ncore.svg -text

6
avertir_preview.html

@ -1,10 +1,12 @@
[(#REM) <!-- PREVIEW_NOTICE
[(#REM) <!-- AVERTIR_PREVIEW
Affiche un avertissement sur le fait que la noisette prévisualisée est d'un type qui n'est plus actif
car au moins un des plugins qu'elle nécessite n'est pas activé.
@param string type_noisette
Identifiant du type de noisette
Identifiant du type de noisette.
@param string plugins_inactifs
Liste des plugins inactifs.
-->]
<div class="notice">
<:ncore:erreur_type_noisette_inactif{type_noisette=#TYPE_NOISETTE, plugins=#PLUGINS_INACTIFS}:>

37
compiler_noisettes.html

@ -1,37 +0,0 @@
[(#REM) <!-- COMPILER_NOISETTES
Compile une liste de noisettes fournies en paramètres de l'inclusion et gère de fait l'utilisation
d'une balise div englobante pour chaque noisette suivant son paramétrage.
Les noisettes de type conteneur ne sont pas incluses avec la balise #NOISETTE_COMPILER mais englobent
les noisettes qui lui sont rattachées. En effet, on considère qu'une noisette conteneur est toujours limitée
à une balise ouvrante/fermante éventuellement stylée.
Les niveaux d'imbrication ne sont pas limités.
@api
@param string plugin
Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
@param array noisettes
Liste des descriptions de noisette à compiler dans l'ordre de leur rang.
@param string stockage
Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
fournissant le service de stockage souhaité.
-->]
<BOUCLE_noisettes(DATA) {source table, #ENV{noisettes, #ARRAY}}{plugin}{par rang_noisette}>
#SET{conteneur, #ARRAY{type_noisette, #VALEUR{type_noisette}, id_noisette, #VALEUR{id_noisette}}}
<B_noisettes_enfants>
#SET{balise_conteneur, #VALEUR{conteneur_balise}|sinon{div}}
[<(#GET{balise_conteneur})[ class="(#VALEUR{conteneur_css})"]>]
<BOUCLE_noisettes_enfants(DATA)
{source table, #NOISETTE_REPERTORIER{#ENV{plugin}, #GET{conteneur}, #ENV{stockage}}}
{par rang_noisette}>
#SET{conteneur, #ARRAY{type_noisette, #VALEUR{type_noisette}, id_noisette, #VALEUR{id_noisette}}}
<BOUCLE_noisettes_petits_enfants(BOUCLE_noisettes_enfants)></BOUCLE_noisettes_petits_enfants>
[(#NOISETTE_COMPILER{#VALEUR{id_noisette}, #ENV{stockage, ''}})]
</BOUCLE_noisettes_enfants>
[</(#GET{balise_conteneur})>]
</B_noisettes_enfants>
[(#NOISETTE_COMPILER{#VALEUR{id_noisette}, #ENV{stockage, ''}})]
</BOUCLE_noisettes>

4
conteneur_compiler.html

@ -12,9 +12,7 @@
@param string id_conteneur
Identifiant du conteneur.
@param string stockage
Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
fournissant le service de stockage souhaité.
Identifiant du service de stockage à utiliser si précisé.
-->]
#SET{noisettes, #NOISETTE_REPERTORIER{#ENV{plugin}, #ENV{id_conteneur}, #ENV{stockage}}}
<BOUCLE_noisette_conteneur(DATA) {source table, #ENV{noisettes, #ARRAY}}{plugin}{par rang_noisette}>

4
inc/ncore_conteneur.php

@ -22,9 +22,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @param array|string $conteneur
* Tableau descriptif du conteneur ou identifiant du conteneur.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
*/

60
inc/ncore_noisette.php

@ -458,63 +458,3 @@ function noisette_deplacer($plugin, $noisette, $rang_destination, $stockage = ''
return $retour;
}
/**
* Renvoie une liste de descriptions de noisettes appartenant à un conteneur donné ou pas et éventuellement filtrée
* sur certains champs.
* Le tableau retourné est indexé soit par identifiant de noisette soit par identifiant du conteneur et rang.
*
* @api
* @uses ncore_noisette_lister()
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
* ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param array|string $conteneur
* Tableau descriptif du conteneur ou identifiant du conteneur ou vide si on souhaite adresser tous les
* conteneurs.
* @param string $cle
* Champ de la description d'une noisette servant d'index du tableau. On utilisera soit `id_noisette`
* soit `rang_noisette` (défaut).
* @param array $filtres
* Tableau associatif `[champ] = valeur` de critères de filtres sur les descriptions de types de noisette.
* Le seul opérateur possible est l'égalité.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
*
* @return array
* Tableau des descriptions des noisettes du conteneur indexé par le champ fourni en argument (par défaut le
* rang).
*/
function noisette_repertorier($plugin, $conteneur = array(), $cle = 'rang_noisette', $filtres = array(), $stockage = '') {
// On indexe le tableau des noisettes par le plugin appelant en cas d'appel sur le même hit
// par deux plugins différents et aussi par la clé d'indexation.
static $noisettes = array();
if (!isset($noisettes[$plugin][$cle])) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On récupère la description complète de tous les types de noisettes détectés par le plugin appelant
$noisettes[$plugin][$cle] = ncore_noisette_lister($plugin, $conteneur, '', $cle, $stockage);
}
// Application des filtres éventuellement demandés en argument de la fonction
$noisettes_filtrees = $noisettes[$plugin][$cle];
if ($filtres) {
foreach ($noisettes_filtrees as $_noisette => $_description) {
foreach ($filtres as $_critere => $_valeur) {
if (isset($_description[$_critere]) and ($_description[$_critere] != $_valeur)) {
unset($noisettes_filtrees[$_noisette]);
break;
}
}
}
}
return $noisettes_filtrees;
}

24
inc/ncore_type_noisette.php

@ -12,10 +12,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
/**
* Charge ou recharge les descriptions des types de noisette à partir des fichiers YAML.
* Les types de noisettes sont recherchés dans un répertoire relatif fourni en argument.
* La fonction optimise le chargement en effectuant uniquement les traitements nécessaires
* en fonction des modifications, ajouts et suppressions des types de noisettes identifiés en comparant
* les md5 des fichiers YAML.
* en fonction des modifications, ajouts et suppressions des types de noisette identifiés
* en comparant les md5 des fichiers YAML.
*
* @api
* @uses ncore_type_noisette_initialiser_dossier()
@ -27,12 +26,10 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
* ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param bool $recharger
* Si `true` force le rechargement de toutes les types de noisettes, sinon le chargement se base sur le
* Si `true` force le rechargement de tous les types de noisette, sinon le chargement se base sur le
* md5 des fichiers YAML. Par défaut vaut `false`.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
* `false` si une erreur s'est produite, `true` sinon.
@ -241,8 +238,6 @@ function type_noisette_charger($plugin, $recharger = false, $stockage = '') {
* @param string $plugin
* Le service permet de distinguer l'appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* La fonction utilisera la fonction de lecture de la description brute d'un type de noisette, spécifique
* au service, ou à défaut, celle fournie par N-Core.
* @param string $type_noisette
* Identifiant du type de noisette.
* @param string $information
@ -252,9 +247,7 @@ function type_noisette_charger($plugin, $recharger = false, $stockage = '') {
* en utilisant la fonction _T_ou_typo. Par défaut l'indicateur vaut `false`.
* Les champs sérialisés sont eux toujours désérialisés.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array|string
* La description complète ou champ précis demandé pour un type de noisette donné. Les champs
@ -316,7 +309,8 @@ function type_noisette_lire($plugin, $type_noisette, $information = '', $traiter
}
/**
* Renvoie une liste de descriptions de types de noisette éventuellement filtrée sur certains champs.
* Renvoie une liste de descriptions de types de noisette éventuellement filtrée sur certains champs
* fournis en argument.
*
* @api
* @uses ncore_type_noisette_lister()
@ -328,9 +322,7 @@ function type_noisette_lire($plugin, $type_noisette, $information = '', $traiter
* Tableau associatif `[champ] = valeur` de critères de filtres sur les descriptions de types de noisette.
* Le seul opérateur possible est l'égalité.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Tableau des descriptions des types de noisette trouvés indexé par le type de noisette.

BIN
ncore-128.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

BIN
ncore-16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

BIN
ncore-24.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

54
ncore/ncore.php

@ -44,8 +44,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Indique si le chargement en cours est forcé ou pas. Cela permet à la fonction N-Core ou au service
* concerné d'optimiser le traitement sachant que seules les types de noisette nouveaux sont fournis.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
* `true` si le traitement s'est bien déroulé, `false` sinon.
@ -130,8 +129,7 @@ function ncore_type_noisette_stocker($plugin, $types_noisette, $recharger, $stoc
* Description du type de noisette issue de la lecture du fichier YAML. Suivant le plugin utilisateur elle
* nécessite d'être compléter avant son stockage.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Description du type de noisette éventuellement complétée par le plugin utilisateur.
@ -170,8 +168,7 @@ function ncore_type_noisette_completer($plugin, $description, $stockage = '') {
* @param string $type_noisette
* Identifiant du type de noisette.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Tableau de la description du type de noisette. Les champs textuels et les champs de type tableau sérialisé
@ -206,8 +203,8 @@ function ncore_type_noisette_decrire($plugin, $type_noisette, $stockage = '') {
}
/**
* Renvoie l'information brute demandée pour l'ensemble des types de noisette utilisés par le plugin appelant
* ou toute les descriptions si aucune information n'est explicitement demandée.
* Renvoie, pour l'ensemble des types de noisette, l'information brute demandée
* ou toute la description si aucune information n'est explicitement demandée.
*
* @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
*
@ -222,8 +219,7 @@ function ncore_type_noisette_decrire($plugin, $type_noisette, $stockage = '') {
* Si l'argument est vide, la fonction renvoie les descriptions complètes et si l'argument est
* un champ invalide la fonction renvoie un tableau vide.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Tableau de la forme `[noisette] = information ou description complète`.
@ -355,8 +351,7 @@ function ncore_type_noisette_initialiser_dossier($plugin) {
* Description de la noisette. Soit la description ne contient pas l'id de la noisette et c'est un ajout,
* soit la description contient l'id et c'est une mise à jour.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return int|string
* Id de la noisette de type entier ou chaine.
@ -436,11 +431,10 @@ function ncore_noisette_stocker($plugin, $description, $stockage = '') {
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param array $description
* Description de la noisette par défaut. Suivant le plugin utilisateur elle nécessite d'être compléter
* Description standard de la noisette. Suivant le plugin utilisateur elle nécessite d'être compléter
* avant son stockage.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Description de la noisette éventuellement complétée par le plugin utilisateur.
@ -478,8 +472,7 @@ function ncore_noisette_completer($plugin, $description, $stockage = '') {
* @param int $rang_destination
* Position à laquelle ranger la noisette au sein du conteneur.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
* `true` si le traitement s'est bien déroulé, `false` sinon.
@ -541,8 +534,7 @@ function ncore_noisette_ranger($plugin, $description, $rang_destination, $stocka
* @param array|string $description
* Description complète de la noisette.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
* `true` si le traitement s'est bien déroulé, `false` sinon.
@ -588,7 +580,8 @@ function ncore_noisette_destocker($plugin, $description, $stockage = '') {
/**
* Renvoie un champ ou toute la description des noisettes d'un conteneur ou de tous les conteneurs.
* Le tableau retourné est indexé soit par identifiant de noisette soit par identifiant du conteneur et rang.
* Le tableau retourné est indexé soit par identifiant de noisette soit par identifiant du conteneur et rang
* de noisette.
*
* @package SPIP\NCORE\NOISETTE\SERVICE
*
@ -602,15 +595,14 @@ function ncore_noisette_destocker($plugin, $description, $stockage = '') {
* Tableau descriptif du conteneur ou identifiant du conteneur ou vide si on souhaite adresser tous les
* conteneurs.
* @param string $information
* Identifiant d'un champ de la description d'une type de noisette.
* Identifiant d'un champ de la description d'une noisette.
* Si l'argument est vide, la fonction renvoie les descriptions complètes et si l'argument est
* un champ invalide la fonction renvoie un tableau vide.
* @param string $cle
* Champ de la description d'une noisette servant d'index du tableau. En général on utilisera soit `id_noisette`
* soit `rang`.
* soit `rang_noisette`.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Tableau de la liste des informations demandées indexé par identifiant de noisette ou par rang.
@ -680,10 +672,9 @@ function ncore_noisette_lister($plugin, $conteneur = array(), $information = '',
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param mixed $noisette
* Identifiant de la noisette qui peut prendre soit la forme d'un entier ou d'une chaine unique, soit la forme
* d'un couple (conteneur, rang).
* d'un couple (conteneur, rang de noisette).
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Tableau de la description du type de noisette. Les champs textuels et les champs de type tableau sérialisé
@ -749,7 +740,7 @@ function ncore_noisette_decrire($plugin, $noisette, $stockage = '') {
/**
* Renvoie la configuration par défaut de l'encapsulation d'une noisette.
* Cette information est utilisée si le champ `balise` de la noisette vaut `defaut`.
* Cette information est utilisée si le champ `encapsulation` de la noisette vaut `defaut`.
*
* Le service N-Core positionne cette valeur à `true`.
*
@ -807,8 +798,7 @@ function ncore_noisette_initialiser_encapsulation($plugin) {
* sans lien avec un squelette. Dans tous les cas, les index, à l'exception de `squelette`, sont spécifiques
* à l'utilisation qui en est faite par le plugin.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return string
* Identifiant du conteneur ou chaine vide en cas d'erreur.
@ -819,6 +809,7 @@ function ncore_conteneur_identifier($plugin, $conteneur, $stockage) {
// N-Core ne propose pas de fonction par défaut car l'élaboration de l'identifiant est totalement spécifique
// au plugin utilisateur.
// Il est donc indispensable que le plugin utilisateur propose toujours une fonction de calcul de l'identifiant.
// TODO : ne faudrait-il pas calculer automatiquement l'id pour une noisette conteneur ?
$id_conteneur = '';
if ($conteneur) {
include_spip('inc/ncore_utils');
@ -847,8 +838,7 @@ function ncore_conteneur_identifier($plugin, $conteneur, $stockage) {
* @param array|string $conteneur
* Tableau descriptif du conteneur ou identifiant du conteneur.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin ni celui de N-Core
* ne seront utilisés. En général, cet identifiant est le préfixe du plugin fournissant le stockage.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
* `true` si le traitement s'est bien déroulé, `false` sinon.

104
ncore_fonctions.php

@ -32,9 +32,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @param string $type_noisette
* Identifiant du type de noisette.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
* `true` si la noisette doit être ajaxée, `false` sinon.
@ -101,9 +99,7 @@ function type_noisette_ajaxifier($plugin, $type_noisette, $stockage = '') {
* @param string $type_noisette
* Identifiant du type de noisette.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return bool
* `true` si le type de noisette doit être inclus dynamiquement, `false` sinon.
@ -150,7 +146,7 @@ function type_noisette_dynamiser($plugin, $type_noisette, $stockage = '') {
* Renvoie le dossier relatif des types de noisette pour le plugin appelant ou la localisation
* du type de noisette demandé.
* Cette fonction gère le cas particulier de la noisette conteneur fournie par N-Core qui est elle
* toujours dans le dossier par défaut de N-Core.
* toujours dans le dossier par défaut de N-Core et n'est donc pas surchargeable.
*
* @package SPIP\NCORE\TYPE_NOISETTE\API
*
@ -195,7 +191,7 @@ include_spip('public/noisette_repertorier');
/**
* Renvoie le contexte de la noisette sous la forme d'un tableau éventuellement vide. Cette fonction gère un cache
* des contextes génériques des types de noisette disponibles.
* des contextes non valorisés des types de noisette disponibles.
*
* @package SPIP\NCORE\NOISETTE\API
*
@ -211,15 +207,14 @@ include_spip('public/noisette_repertorier');
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param mixed $noisette
* Tableau des identifiants de la noisette qui peut prendre la forme d'un tableau avec pour index
* id_noisette, id conteneur et rang_noisette, ce qui permet d'utiliser l'un ou l'autre des identifiants.
* id_noisette, id conteneur et rang_noisette, ce qui permet d'utiliser l'un ou l'autre des identifiants
* de la noisette.
* @param string $type_noisette
* Identifiant du type de noisette.
* @param array $environnement
* Tableau de l'environnement reçu par la noisette.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Le tableau éventuellement vide des éléments de contexte de la noisette.
@ -279,7 +274,9 @@ function noisette_contextualiser($plugin, $noisette, $type_noisette, $environnem
/**
* Encapsule, si demandé, le contenu de la noisette issu de la compilation dans un HTML plus ou moins complexe.
* Encapsule, si demandé, le contenu compile d'une ou d'un ensemble de noisettes dans un balisage HTML
* plus ou moins complexe appelé une capsule.
* Une noisette conteneur est considérée comme une capsule et donc traitée en tant que tel.
*
* @package SPIP\NCORE\NOISETTE\API
*
@ -287,25 +284,25 @@ function noisette_contextualiser($plugin, $noisette, $type_noisette, $environnem
* @filtre
*
* @uses ncore_noisette_initialiser_encapsulation()
* @uses type_noisette_localiser()
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param string $contenu
* Contenu compilé de la noisette en cours avant encapsulation.
* Contenu compilé à encapsuler.
* @param string $encapsulation
* Indicateur d'encapsulation du contenu par un capsule ou par une noisette conteneur. Prend les valeurs
* oui, non, defaut pour une capsule et conteneur pour une noisette conteneur.
* `oui`, `non`, `defaut` pour une capsule et `conteneur` pour une noisette conteneur.
* @param string $parametres
* Liste des paramètres de l'encapsulation. Pour une capsule, les index sont limités à type_noisette, id_noisette et
* css. Pour une noisette conteneur cette liste correspond au champ paramètres de la noisette et à son type.
* Liste des paramètres de l'encapsulation. Pour une capsule, les index sont limités à `type_noisette`,
* `id_noisette` et `css`. Pour une noisette conteneur cette liste correspond au champ `parametres` de la
* noisette et à son type.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
* ni celui de N-Core ne seront utilisés. En général, cet identifiant est le préfixe d'un plugin
* fournissant le service de stockage souhaité.
* Identifiant du service de stockage à utiliser si précisé.
*
* @return string
* Le contenu fourni encapsulé dans du HTML ou tel que fourni en entrée si pas d'encapsulation.
* Le contenu fourni encapsulé dans un balisage HTML ou tel que fourni en entrée si pas d'encapsulation.
*/
function noisette_encapsuler($plugin, $contenu, $encapsulation, $parametres, $stockage = '') {
@ -361,6 +358,69 @@ function noisette_encapsuler($plugin, $contenu, $encapsulation, $parametres, $st
return $contenu;
}
/**
* Renvoie une liste de descriptions de noisettes appartenant à un conteneur donné ou pas et éventuellement filtrée
* sur certains champs.
* Le tableau retourné est indexé soit par identifiant de noisette soit par identifiant du conteneur et rang de la
* noisette.
*
* @package SPIP\NCORE\NOISETTE\API
*
* @api
*
* @uses ncore_noisette_lister()
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier
* ou un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param array|string $conteneur
* Tableau descriptif du conteneur ou identifiant du conteneur ou vide si on souhaite adresser tous les
* conteneurs.
* @param string $cle
* Champ de la description d'une noisette servant d'index du tableau. On utilisera soit `id_noisette`
* soit `rang_noisette` (défaut).
* @param array $filtres
* Tableau associatif `[champ] = valeur` de critères de filtres sur les descriptions de types de noisette.
* Le seul opérateur possible est l'égalité.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Tableau des descriptions des noisettes du conteneur indexé par le champ fourni en argument (par défaut le
* rang).
*/
function noisette_repertorier($plugin, $conteneur = array(), $cle = 'rang_noisette', $filtres = array(), $stockage = '') {
// On indexe le tableau des noisettes par le plugin appelant en cas d'appel sur le même hit
// par deux plugins différents et aussi par la clé d'indexation.
static $noisettes = array();
if (!isset($noisettes[$plugin][$cle])) {
// On charge l'API de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une fonction spécifique du service.
include_spip("ncore/ncore");
// On récupère la description complète de tous les types de noisettes détectés par le plugin appelant
$noisettes[$plugin][$cle] = ncore_noisette_lister($plugin, $conteneur, '', $cle, $stockage);
}
// Application des filtres éventuellement demandés en argument de la fonction
$noisettes_filtrees = $noisettes[$plugin][$cle];
if ($filtres) {
foreach ($noisettes_filtrees as $_noisette => $_description) {
foreach ($filtres as $_critere => $_valeur) {
if (isset($_description[$_critere]) and ($_description[$_critere] != $_valeur)) {
unset($noisettes_filtrees[$_noisette]);
break;
}
}
}
}
return $noisettes_filtrees;
}
// -----------------------------------------------------------------------
// --------------------- FILTRES & BALISES CONTENEURS --------------------
@ -377,6 +437,8 @@ include_spip('public/conteneur_identifier');
* @api
* @filtre
*
* @uses ncore_conteneur_identifier()
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.

10
noisettes/conteneur-preview.html

@ -1,2 +1,10 @@
[(#REM) <!-- CONTENEUR-PREVIEW
Fichier HTML de prévisualisation de la noisette associée : conteneur.html.
La prévisualisation affiche uniquement la balise choisie.
@param string conteneur_balise
Balise englobante. Peut prendre les valeurs div, section, article, aside, nav et p.
-->]
#SET{balise, #ENV{conteneur_balise, div}}
<:ncore:type_noisette_conteneur_preview{balise=#GET{balise}}:>
<:ncore:type_noisette_conteneur_preview{balise=#GET{balise}}:>

10
noisettes/conteneur.html

@ -1,3 +1,13 @@
[(#REM) <!-- CONTENEUR
Noisette conteneur standard fourni par N-Core. Cette noisette n'est pas surchargeable.
Il est possible de choisir la balise et des styles spécifiques.
@param string conteneur_balise
Balise englobante. Peut prendre les valeurs div, section, article, aside, nav et p.
@param string conteneur_css
Classes supplémentaires associées à la balise.
-->]
[<(#ENV{conteneur_balise}) class="noisette[ noisette_(#ENV{type_noisette})][ (#ENV{conteneur_css})]">]
<!--noisettes-->
[</(#ENV{conteneur_balise})>]

0
type_noisette.schema.json → noisettes/type_noisette.schema.json

0
type_noisette.template.yaml → noisettes/type_noisette.template.yaml

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="ncore"
categorie="outil"
version="0.5.4"
version="0.5.5"
etat="dev"
compatibilite="[3.2.0;3.2.*]"
logo="ncore-32.png"

6
public/conteneur_identifier.php

@ -15,6 +15,8 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
* @balise
*
* @uses conteneur_identifier()
*
* @param Champ $p
* Pile au niveau de la balise.
*
@ -24,8 +26,6 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function balise_CONTENEUR_IDENTIFIER_dist($p) {
// Récupération des arguments.
// -- la balise utilise toujours le rangement par rang au sein du conteneur
// -- et ne permet de filtrer les noisettes autrement que sur le conteneur.
$plugin = interprete_argument_balise(1, $p);
$plugin = isset($plugin) ? str_replace('\'', '"', $plugin) : '""';
$conteneur = interprete_argument_balise(2, $p);
@ -33,7 +33,7 @@ function balise_CONTENEUR_IDENTIFIER_dist($p) {
$stockage = interprete_argument_balise(3, $p);
$stockage = isset($stockage) ? str_replace('\'', '"', $stockage) : '""';
// On appelle la fonction de calcul de la liste des noisette
// On appelle la fonction de calcul de l'identifiant du conteneur.
$p->code = "conteneur_identifier($plugin, $conteneur, $stockage)";
return $p;

7
public/noisette_compiler.php

@ -14,6 +14,13 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
* @balise
*
* @uses conteneur_identifier()
* @uses noisette_encapsuler()
* @uses noisette_contextualiser()
* @uses type_noisette_localiser()
* @uses type_noisette_ajaxifier()
* @uses type_noisette_dynamiser()
*
* @param Champ $p
* Pile au niveau de la balise.
*

2
public/noisette_preview.php

@ -82,7 +82,7 @@ function balise_NOISETTE_PREVIEW_dist($p) {
* éventuel sur les plugins inactifs.
*
* @return string
* Code HTML généré pour la noisette.
* Code HTML de prévisualisation de la noisette.
*/
function calculer_preview_noisette($plugin, $noisette, $type_noisette_actif, $type_noisette_necessite) {

28
public/noisette_repertorier.php

@ -12,9 +12,10 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Compile la balise `#NOISETTE_REPERTORIER` qui renvoie la liste des noisettes incluses dans un conteneur donné.
* La signature de la balise est : `#NOISETTE_REPERTORIER{plugin, conteneur[, stockage]}`.
*
* @package SPIP\NCORE\NOISETTE\BALISE
* @balise
*
* @uses noisette_repertorier()
*
* @param Champ $p
* Pile au niveau de la balise.
*
@ -34,30 +35,7 @@ function balise_NOISETTE_REPERTORIER_dist($p) {
$stockage = isset($stockage) ? str_replace('\'', '"', $stockage) : '""';
// On appelle la fonction de calcul de la liste des noisette
$p->code = "calculer_liste_noisettes($plugin, $conteneur, $stockage)";
$p->code = "noisette_repertorier($plugin, $conteneur, 'rang_noisette', array(), $stockage)";
return $p;
}
/**
* Récupère la liste des noisettes d'un conteneur pour la balise #CONTENEUR_IDENTIFIER.
* Cette fonction est juste un wrapper pour la fonction d'API noisette_repertorier().
*
* @param string $plugin
* Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
* un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
* @param array $conteneur
* Tableau associatif descriptif du conteneur accueillant la noisette.
* @param string $stockage
* Identifiant du service de stockage à utiliser si précisé.
*
* @return array
* Tableau des descriptions des noisettes du conteneur indexé par le rang de chaque noisette.
*/
function calculer_liste_noisettes($plugin, $conteneur, $stockage) {
include_spip('inc/ncore_noisette');
$noisettes = noisette_repertorier($plugin, $conteneur, 'rang_noisette', array(), $stockage);
return $noisettes;
}

Loading…
Cancel
Save