Browse Source

Premiers essais de prise en compte d'une noisette de type conteneur. On rajoute un indicateur dans le fichier YAML et on transmet cet indicateur dans les noisettes issues de ce type.

Modification de l'arborescence des packages.
Ajout d'une fonction d'initialisation du dossier des noisettes afin de pouvoir réutiliser ce dossier dans d'autres fonctions que celle de chargement. Modification du prototype de la fonction de chargement.
svn/root/tags/v0.10.0
eric@smellup.net 4 years ago
parent
commit
14fd21bffc
  1. 2
      inc/ncore_cache.php
  2. 2
      inc/ncore_conteneur.php
  3. 3
      inc/ncore_noisette.php
  4. 25
      inc/ncore_type_noisette.php
  5. 17
      lang/ncore_fr.php
  6. 63
      ncore/ncore.php
  7. 6
      ncore_fonctions.php
  8. 4
      noisettes/conteneur.html
  9. 26
      noisettes/conteneur.yaml

2
inc/ncore_cache.php

@ -2,7 +2,7 @@
/**
* Ce fichier contient les fonctions de gestion des caches utilisés par N-Core.
*
* @package SPIP\NCORE\API\CACHE
* @package SPIP\NCORE\CACHE\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;

2
inc/ncore_conteneur.php

@ -2,7 +2,7 @@
/**
* Ce fichier contient l'API N-Core de gestion des conteneurs.
*
* @package SPIP\NCORE\API\CONTENEUR
* @package SPIP\NCORE\CONTENEUR\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;

3
inc/ncore_noisette.php

@ -3,7 +3,7 @@
* Ce fichier contient l'API N-Core de gestion des noisettes, c'est-à-dire les instances paramétrées
* de types de noisette affectées à un conteneur.
*
* @package SPIP\NCORE\API\NOISETTE
* @package SPIP\NCORE\NOISETTE\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
@ -74,6 +74,7 @@ function noisette_ajouter($plugin, $type_noisette, $conteneur, $rang = 0, $stock
'conteneur' => serialize($conteneur),
'id_conteneur' => ncore_conteneur_identifier($plugin, $conteneur, $stockage),
'rang_noisette' => intval($rang),
'est_conteneur' => type_noisette_lire($plugin, $type_noisette, 'est_conteneur', false, $stockage),
'parametres' => serialize($parametres),
'balise' => 'defaut',
'css' => ''

25
inc/ncore_type_noisette.php

@ -2,7 +2,7 @@
/**
* Ce fichier contient l'API N-Core de gestion des types de noisette, c'est-à-dire les squelettes et leur YAML.
*
* @package SPIP\NCORE\API\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
@ -38,7 +38,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @return bool
* `false` si une erreur s'est produite, `true` sinon.
*/
function type_noisette_charger($plugin, $dossier = 'noisettes/', $recharger = false, $stockage = '') {
function type_noisette_charger($plugin, $recharger = false, $stockage = '') {
// Retour de la fonction
$retour = true;
@ -46,13 +46,16 @@ function type_noisette_charger($plugin, $dossier = 'noisettes/', $recharger = fa
// Initialiser le contexte de rechargement
// TODO : voir si on ajoute un var_mode=recalcul_noisettes ?
// On charge l'API de stockge de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une éventuelle fonction spécifique de stockage.
include_spip("ncore/ncore");
// On récupère la configuration du dossier relatif où chercher les types de noisettes à charger.
$dossier = ncore_type_noisette_initialiser_dossier($plugin);
// On recherche les types de noisette directement par leur fichier YAML de configuration car il est
// obligatoire. La recherche s'effectue dans le path en utilisant le dossier relatif fourni.
if ($fichiers = find_all_in_path($dossier, '.+[.]yaml$')) {
// On charge l'API de stockge de N-Core.
// Ce sont ces fonctions qui aiguillent ou pas vers une éventuelle fonction spécifique de stockage.
include_spip("ncore/ncore");
// Initialisation des tableaux de types de noisette.
$types_noisette_a_ajouter = $types_noisette_a_changer = $types_noisette_a_effacer = array();
@ -82,6 +85,7 @@ function type_noisette_charger($plugin, $dossier = 'noisettes/', $recharger = fa
'description' => '',
'icon' => 'noisette-24.png',
'necessite' => array(),
'conteneur' => 'non',
'contexte' => array(),
'ajax' => 'defaut',
'inclusion' => 'statique',
@ -130,7 +134,14 @@ function type_noisette_charger($plugin, $dossier = 'noisettes/', $recharger = fa
$description['signature'] = $md5;
// Complétude de la description avec les valeurs par défaut
$description = array_merge($description_defaut, $description);
// Sérialisation des champs necessite, contexte et parametres qui sont des tableaux
// Traitement spécifique d'un type de noisette conteneur : son contexte est toujours env et
// l'ajax et l'inclusion dynamique ne sont pas autorisés.
if ($description['conteneur'] == 'oui') {
$description['contexte'] = array('env');
$description['ajax'] = 'non';
$description['inclusion'] = 'statique';
}
// Sérialisation des champs 'necessite', 'contexte' et 'parametres' qui sont des tableaux
$description['necessite'] = serialize($description['necessite']);
$description['contexte'] = serialize($description['contexte']);
$description['parametres'] = serialize($description['parametres']);

17
lang/ncore_fr.php

@ -0,0 +1,17 @@
<?php
// Ceci est un fichier langue de SPIP -- This is a SPIP language file
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// L
'label_conteneur_balise' => 'Balise matérialisant le conteneur',
'label_conteneur_css' => 'Style à affecter à la balise conteneur',
// T
'type_noisette_conteneur_nom' => 'Bloc conteneur',
'type_noisette_conteneur_description' => 'Conteneur pouvant accueillir des noisettes',
);

63
ncore/ncore.php

@ -24,7 +24,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
*
* Le service N-Core stocke les descriptions dans un cache et les signatures dans un autre.
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
* @uses cache_lire()
@ -119,7 +119,7 @@ function ncore_type_noisette_stocker($plugin, $types_noisette, $recharger, $stoc
*
* Le plugin N-Core ne complète pas les types de noisette.
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
*
@ -159,7 +159,7 @@ function ncore_type_noisette_completer($plugin, $description, $stockage = '') {
*
* Le service N-Core lit la description du type de noisette concerné dans le cache des descriptions.
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
* @uses cache_lire()
@ -209,7 +209,7 @@ 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.
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
* @uses cache_lire()
@ -267,7 +267,7 @@ function ncore_type_noisette_lister($plugin, $information = '', $stockage = '')
*
* Le service N-Core considère que toute noisette est par défaut insérée en ajax.
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
*
@ -298,6 +298,43 @@ function ncore_type_noisette_initialiser_ajax($plugin) {
return $defaut_ajax;
}
/**
* Renvoie la configuration par défaut du dossier relatif où trouver les types de noisettes.
* Cette information est utilisée a minima au chargement des types de noisettes disponibles.
*
* Le service N-Core considère que par défaut le dossier relatif des types de noisette est 'noisettes/'.
*
* @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
*
* @uses ncore_chercher_service()
*
* @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.
*
* @return string
* Chemin relatif du dossier où chercher les types de noisette.
*/
function ncore_type_noisette_initialiser_dossier($plugin) {
// On cherche le service de stockage à utiliser selon la logique suivante :
// - si le service de stockage est non vide on l'utilise en considérant que la fonction existe forcément;
// - sinon, on utilise la fonction du plugin appelant si elle existe;
// - et sinon, on utilise la fonction de N-Core.
include_spip('inc/ncore_utils');
if ($configurer = ncore_chercher_service($plugin, 'type_noisette_initialiser_dossier', '')) {
// On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
// On autorise la fonction du plugin à retourner autre chose que true ou false si tant est que l'on puisse
// en déduire un booléen (par exemple, 'on' et '' comme le retourne une case à cocher du plugin Saisies).
$dossier = $configurer($plugin);
} else {
// Le service ne propose pas de fonction propre, on utilise celle de N-Core.
$dossier = 'noisettes/';
}
return $dossier;
}
// -----------------------------------------------------------------------
// ----------------------------- NOISETTES -------------------------------
@ -307,7 +344,7 @@ function ncore_type_noisette_initialiser_ajax($plugin) {
* Stocke la description d'une nouvelle noisette et calcule son identifiant unique, ou met à jour les paramètres
* d'affichage d'une noisette existante.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
*
@ -391,7 +428,7 @@ function ncore_noisette_stocker($plugin, $description, $stockage = '') {
*
* Le plugin N-Core ne complète pas les descriptions de noisette.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
*
@ -429,7 +466,7 @@ function ncore_noisette_completer($plugin, $description, $stockage = '') {
/**
* Positionne une noisette à un rang différent de celui qu'elle occupe dans le conteneur.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
*
@ -494,7 +531,7 @@ function ncore_noisette_ranger($plugin, $description, $rang_destination, $stocka
/**
* Retire, de l'espace de stockage, une noisette donnée de son conteneur.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
*
@ -553,7 +590,7 @@ 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.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
* @uses ncore_conteneur_identifier()
@ -634,7 +671,7 @@ function ncore_noisette_lister($plugin, $conteneur = array(), $information = '',
* Renvoie la description brute d'une noisette sans traitement typo des champs textuels ni désérialisation
* des champs de type tableau sérialisé.
*
* @package SPIP\NCORE\SERVICE\NOISETTE
* @package SPIP\NCORE\NOISETTE\SERVICE
*
* @uses ncore_chercher_service()
*
@ -720,7 +757,7 @@ function ncore_noisette_decrire($plugin, $noisette, $stockage = '') {
* Cette fonction est juste un aiguillage vers la fonction éventuelle du plugin utilisateur
* car N-Core ne fournit pas de calcul par défaut.
*
* @package SPIP\NCORE\SERVICE\CONTENEUR
* @package SPIP\NCORE\CONTENEUR\SERVICE
*
* @uses ncore_chercher_service()
*
@ -760,7 +797,7 @@ function ncore_conteneur_identifier($plugin, $conteneur, $stockage) {
/**
* Retire, de l'espace de stockage, toutes les noisettes d'un conteneur.
*
* @package SPIP\NCORE\SERVICE\CONTENEUR
* @package SPIP\NCORE\CONTENEUR\SERVICE
*
* @uses ncore_chercher_service()
* @uses ncore_conteneur_identifier()

6
ncore_fonctions.php

@ -12,7 +12,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Détermine si le type de noisette spécifié doit être inclus en AJAX ou pas. Cette fonction gère un cache
* des indicateurs ajax.
*
* @package SPIP\NCORE\API\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\API
*
* @api
* @filtre
@ -83,7 +83,7 @@ function type_noisette_ajaxifier($plugin, $type_noisette, $stockage = '') {
* Détermine si la noisette spécifiée doit être incluse dynamiquement ou pas. Cette fonction gère un cache
* des indicateurs d'inclusion dynamique.
*
* @package SPIP\NCORE\API\TYPE_NOISETTE
* @package SPIP\NCORE\TYPE_NOISETTE\API
*
* @api
* @filtre
@ -148,7 +148,7 @@ function type_noisette_dynamiser($plugin, $type_noisette, $stockage = '') {
* 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.
*
* @package SPIP\NCORE\API\NOISETTE
* @package SPIP\NCORE\NOISETTE\API
*
* @api
* @filtre

4
noisettes/conteneur.html

@ -0,0 +1,4 @@
#SET{balise, #ENV{conteneur_balise, div}}
[<(#GET{balise})[ class="(#ENV{conteneur_css})"]>
<!--noisettes-->
</[(#GET{balise})]>]

26
noisettes/conteneur.yaml

@ -0,0 +1,26 @@
nom: '<:ncore:type_noisette_conteneur_nom:>'
description: '<:ncore:type_noisette_conteneur_description:>'
icon: 'conteneur-24.png'
conteneur: 'oui'
contexte: 'aucun'
ajax: 'non'
parametres:
-
saisie: 'selection'
options:
nom: 'conteneur_balise'
label: '<:ncore:label_conteneur_balise:>'
defaut: 'div'
cacher_option_intro: 'oui'
datas:
div: 'div'
section: 'section'
article: 'article'
aside: 'aside'
nav: 'nav'
p: 'p'
-
saisie: 'input'
options:
nom: 'conteneur_css'
label: '<:ncore:label_conteneur_css:>'
Loading…
Cancel
Save