Changeset 109905 in spip-zone


Ignore:
Timestamp:
Apr 15, 2018, 1:54:45 PM (3 years ago)
Author:
eric@…
Message:

Une première version complète du plugin.
Reste à voir si on peut traiter de façon plus générique la possibilité d'englober la noisette dans une div pouvant porter des css spécifiques. De cette façon, N-Core pourra proposer des inclusions génériques par liste de noisettes ou conteneur.

Location:
_plugins_/n-core/trunk
Files:
1 added
3 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/n-core/trunk/compiler_noisettes.html

    r109830 r109905  
    1 [(#REM) <!--  COMPILER_NOISETTES
     1[(#REM) <!--  #COMPILER_NOISETTES
    22
    3         Compile une liste de noisettes fournies en paramètres de l'inclusion. C'est l'appelant qui décide si cette liste
    4         est contenue ou pas dans un conteneur.
     3        Compile une liste de noisettes fournies en paramètres de l'inclusion.
     4        Ce fichier est donné à titre d'exemple : la valeur par défaut de l'utilisation d'une balise div englobante
     5        est donc à gérer par le plugin appelant (constante, configuration...).
    56
    67        @api
    78
    8     @param string $plugin
     9    @param string plugin
    910           Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
    1011           un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
    1112        @param array  noisettes
    12                Liste des descriptions de noisette à compiler dans l'ordre des rangs
     13               Liste des descriptions de noisette à compiler dans l'ordre de leur rang.
    1314        @param string stockage
    1415           Identifiant du service de stockage à utiliser si précisé. Dans ce cas, ni celui du plugin
     
    1617           fournissant le service de stockage souhaité.
    1718-->]
    18 <BOUCLE_compilation_noisettes(DATA){source table, #ENV{noisettes}}{par rang}>
    19         #SET{avec_div, #VALEUR{balise}|=={defaut}|?{#CONFIG{ncore/balise_noisette}, #VALEUR{balise}}}
     19<BOUCLE_compilation_noisettes(DATA){source table, #ENV{noisettes, #ARRAY}}{plugin}{par rang_noisette}>
     20        #SET{avec_div, #VALEUR{balise}|=={defaut}|?{oui, #VALEUR{balise}}}
    2021        [[(#GET{avec_div}|oui)<div class="noisette noisette_#NOISETTE[ (#VALEUR{css})]">]
    21                 (#NOISETTE_COMPILER{#ENV{plugin}, #ENV{stockage}})
     22                (#NOISETTE_COMPILER{#ENV{stockage, ''}})
    2223        [(#GET{avec_div}|oui)</div>]]
    2324</BOUCLE_compilation_noisettes>
  • _plugins_/n-core/trunk/inc/ncore_cache.php

    r109777 r109905  
    3232        define('_NCORE_NOMCACHE_TYPE_NOISETTE_DESCRIPTION', 'type_noisette_descriptions.php');
    3333}
    34 if (!defined('_NCORE_NOMCACHE_NOISETTE_AJAX')) {
     34if (!defined('_NCORE_NOMCACHE_TYPE_NOISETTE_AJAX')) {
    3535        /**
    3636         * Cache du paramétrage ajax des noisettes.
    37          * Contient le tableau sérialisé `[noisette] = true/false`.
     37         * Contient le tableau sérialisé `[type_noisette] = true/false`.
    3838         */
    39         define('_NCORE_NOMCACHE_NOISETTE_AJAX', 'noisette_ajax.php');
     39        define('_NCORE_NOMCACHE_TYPE_NOISETTE_AJAX', 'type_noisette_ajax.php');
    4040}
    41 if (!defined('_NCORE_NOMCACHE_NOISETTE_INCLUSION')) {
     41if (!defined('_NCORE_NOMCACHE_TYPE_NOISETTE_INCLUSION')) {
    4242        /**
    4343         * Cache du paramétrage d'inclusion dynamique des noisettes.
    44          * Contient le tableau sérialisé `[noisette] = true/false`.
     44         * Contient le tableau sérialisé `[type_noisette] = true/false`.
    4545         */
    46         define('_NCORE_NOMCACHE_NOISETTE_INCLUSION', 'noisette_inclusions.php');
     46        define('_NCORE_NOMCACHE_TYPE_NOISETTE_INCLUSION', 'type_noisette_inclusions.php');
    4747}
    4848if (!defined('_NCORE_NOMCACHE_TYPE_NOISETTE_CONTEXTE')) {
  • _plugins_/n-core/trunk/lang/paquet-ncore_fr.php

    r105707 r109905  
    99
    1010// N
    11         'ncore_description' => 'Framework de gestion de noisettes. Ce plugin fournit les mécanismes permettant de lister et de compiler les noisettes.',
     11        'ncore_description' => 'Framework de gestion de noisettes. Ce plugin fournit les API et les mécanismes permettant de gérer et de compiler les noisettes.',
    1212        'ncore_slogan' => 'Un cœur fondant aux noisettes',
    1313);
  • _plugins_/n-core/trunk/ncore/ncore.php

    r109830 r109905  
    259259
    260260        return $types_noisettes;
     261}
     262
     263/**
     264 * Renvoie la configuration par défaut de l'ajax à appliquer pour la compilation des noisettes.
     265 * Cette information est utilisée si la description YAML d'un type noisette ne contient pas de tag ajax
     266 * ou contient un tag ajax à `defaut`.
     267 *
     268 * Le service N-Core considère que toute noisette est par défaut insérée en ajax.
     269 *
     270 * @package SPIP\NCORE\SERVICE\TYPE_NOISETTE
     271 *
     272 * @uses ncore_chercher_service()
     273 *
     274 * @param string $plugin
     275 *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
     276 *        un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     277 *
     278 * @return bool
     279 *              `true` si par défaut une noisette est insérée en ajax, `false` sinon.
     280 */
     281function ncore_type_noisette_initialiser_ajax($plugin) {
     282
     283        // On cherche le service de stockage à utiliser selon la logique suivante :
     284        // - si le service de stockage est non vide on l'utilise en considérant que la fonction existe forcément;
     285        // - sinon, on utilise la fonction du plugin appelant si elle existe;
     286        // - et sinon, on utilise la fonction de N-Core.
     287        include_spip('inc/ncore_utils');
     288        if ($configurer = ncore_chercher_service($plugin, 'type_noisette_initialiser_ajax', '')) {
     289                // On passe le plugin appelant à la fonction car cela permet ainsi de mutualiser les services de stockage.
     290                // On autorise la fonction du plugin à retourner autre chose que true ou false si tant est que l'on puisse
     291                // en déduire un booléen (par exemple, 'on' et '' comme le retourne une case à cocher du plugin Saisies).
     292                $defaut_ajax = $configurer($plugin) ? true : false;
     293        } else {
     294                // Le service ne propose pas de fonction propre, on utilise celle de N-Core.
     295                $defaut_ajax = true;
     296        }
     297
     298        return $defaut_ajax;
    261299}
    262300
  • _plugins_/n-core/trunk/paquet.xml

    r106689 r109905  
    11<paquet
    2         prefix="Ncore"
     2        prefix="ncore"
    33        categorie="outil"
    4         version="0.2.0"
     4        version="0.3.0"
    55        etat="dev"
    6         compatibilite="[3.2.0-dev;3.2.*]"
     6        compatibilite="[3.2.0;3.2.*]"
    77        logo="ncore_logo-32.png"
    88>
     
    1515
    1616        <necessite nom="yaml" compatibilite="[1.5.2;[" />
    17         <necessite nom="saisies" compatibilite="[2.2.3;[" />
    1817</paquet>
  • _plugins_/n-core/trunk/public/noisette_compiler.php

    r109830 r109905  
    66}
    77
    8 function balise_NOISETTE_COMPILER_dist($p)
    9 {
    10         // TODO : il faudrait appeler une fonction de service du plugin pour choisir si on passe l'id_noisette ou le couple
    11         // (id_conteneur, rang)
     8function balise_NOISETTE_COMPILER_dist($p) {
     9
     10        // On passe dans le contexte toujours les deux identifiants d'une noisette, à savoir, l'id_noisette et le couple
     11        // (id_conteneur, rang).
    1212        $id_noisette = champ_sql('id_noisette', $p);
     13        $id_conteneur = champ_sql('id_conteneur', $p);
     14        $rang_noisette = champ_sql('rang_noisette', $p);
     15        $noisette = "array(
     16                'id_noisette' => $id_noisette,
     17                'id_conteneur' => $id_conteneur,
     18                'rang_noisette' => $rang_noisette
     19        )";
     20
     21        // On extrait les autres informations de la noisette
    1322        $type_noisette = champ_sql('type_noisette', $p);
    1423        $parametres = champ_sql('parametres', $p);
    1524        $plugin = champ_sql('plugin', $p);
    1625
    17         // A-t-on demandé un stockage spécifique
     26        // A-t-on demandé un stockage spécifique en paramètre de la balise ?
    1827        $stockage = interprete_argument_balise(1, $p);
    1928        $stockage = isset($stockage) ? str_replace('\'', '"', $stockage) : '""';
    2029
    21         // si pas de contexte attribuer, on passe tout le contexte que l'on recoit
    22         // sinon, on regarde si 'aucun' ou 'env' est indique :
    23         // si 'aucun' => aucun contexte
    24         // si 'env' => tout le contexte recu.
    25         // $id_noisette est toujours transmis dans l'environnement
    26         $environnement = "array_merge(\$Pile[0],array('id_noisette' => $id_noisette))";
     30        // On récupère l'environnement
     31        $environnement = "\$Pile[0]";
    2732
     33        // On prépare le code en fonction du type d'inclusion dynamique ou pas
    2834        $inclusion_dynamique = "\"<?php echo recuperer_fond(
    2935                'noisettes/\".$type_noisette.\"',
    30                 \".var_export(array_merge(unserialize($parametres), noizetier_choisir_contexte($type_noisette, $environnement, $id_noisette)),true).\",
    31                 \".var_export(array('ajax'=>($_ajax && noizetier_noisette_ajax($type_noisette))),true).\"
     36                \".var_export(array_merge(unserialize($parametres), noisette_contextualiser($plugin, $noisette, $type_noisette, $environnement, $stockage)),true).\",
     37                \".var_export(array('ajax'=>(type_noisette_ajaxifier($plugin, $type_noisette, $stockage))),true).\"
    3238        );?>\"";
    33 
    3439        $inclusion_statique = "recuperer_fond(
    3540                'noisettes/'.$type_noisette,
    36                 array_merge(unserialize($parametres), noisette_contextualiser($plugin, $id_noisette, $type_noisette, $environnement, $stockage)),
    37                 array('ajax'=>($_ajax && noizetier_noisette_ajax($type_noisette)))
     41                array_merge(unserialize($parametres), noisette_contextualiser($plugin, $noisette, $type_noisette, $environnement, $stockage)),
     42                array('ajax'=>(type_noisette_ajaxifier($plugin, $type_noisette, $stockage)))
    3843        )";
    39 
    40         $code = "((noizetier_noisette_dynamique($type_noisette)) ? $inclusion_dynamique : $inclusion_statique)";
     44        $code = "((type_noisette_dynamiser($plugin, $type_noisette, $stockage)) ? $inclusion_dynamique : $inclusion_statique)";
    4145
    4246        $p->code = "((!$id_noisette) ? _T('zbug_champ_hors_motif', array('champ'=>'ID_NOISETTE', 'motif'=>'NOISETTES')) : $code)";
Note: See TracChangeset for help on using the changeset viewer.