Changeset 109907 in spip-zone


Ignore:
Timestamp:
Apr 15, 2018, 5:15:17 PM (3 years ago)
Author:
eric@…
Message:

Gros nettoyage de code du à la prise en compte de l'API de compilation de N-Core.
Il reste encore pas mal de boulot pour gérer avec moins de répétition de code les conversion entre page, objet, bloc et conteneur.

Location:
_plugins_/noizetier/trunk
Files:
2 deleted
12 edited
3 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier/trunk/action/supprimer_noisette.php

    r109831 r109907  
    2121
    2222        // Securisation et autorisation.
    23         // L'id de la noisette est le seul arguement attendu.
     23        // L'id de la noisette est le seul argument attendu.
    2424        $securiser_action = charger_fonction('securiser_action', 'inc');
    2525        $argument = $securiser_action();
  • _plugins_/noizetier/trunk/bloc_compiler.html

    r109906 r109907  
    1 #SET{type, #OBJET|?{'',#ENV{type, #ENV{type-page, #ENV{page}}}}}
     1#SET{type, #OBJET|?{'', #ENV{type, #ENV{type-page, #ENV{page}}}}}
    22#SET{composition, #OBJET|?{'', #ENV{composition}}}
    3 <BOUCLE_noisettes(NOISETTES){plugin=noizetier}{objet?}{id_objet?}{bloc=#ENV{bloc}}{type=#GET{type}}{composition=#GET{composition}}{par rang_noisette}>
     3<BOUCLE_noisettes(NOISETTES){plugin=noizetier}{objet?}{id_objet?}{type=#GET{type}}{composition=#GET{composition}}{bloc=#ENV{bloc}}{par rang_noisette}>
    44        #SET{avec_div, #CHAMP_SQL{balise}|=={defaut}|?{#CONFIG{noizetier/balise_noisette}, #CHAMP_SQL{balise}}}
    55        [[(#GET{avec_div}|oui)<div class="noisette noisette_#TYPE_NOISETTE[ (#CHAMP_SQL{css})]">]
    6                 (#NOIZETIER_AFFICHER_NOISETTE)
     6                (#NOISETTE_COMPILER)
    77        [(#GET{avec_div}|oui)</div>]]
    88</BOUCLE_noisettes>
  • _plugins_/noizetier/trunk/bloc_preview.html

    r109906 r109907  
    2222
    2323        <BOUCLE_noisettes(NOISETTES){plugin=noizetier}{objet?}{id_objet?}{bloc=#ENV{bloc}}{type=#GET{type}}{composition=#GET{composition}}{par rang_noisette}>
    24         <div class="noizetier-noisette" id="noizetier-noisette-#ID_NOISETTE"
    25                 style="padding:10px; border:2px solid #9DBA00; margin:10px 0;"
    26         >
    27                 <div style="color:#9DBA00; font-size:1.5em; margin:5px 0;"><strong>
    28                         <div style="float:right;">[(#NOIZETIER_INFO_NOISETTE{#NOISETTE}|table_valeur{icon}|sinon{noisette-24.png}|noizetier_icone_chemin|balise_img{})]</div>
    29                         [(#NOIZETIER_INFO_NOISETTE{#NOISETTE}|table_valeur{nom})]
    30                 </strong></div>
     24        <div class="noizetier-noisette" id="noizetier-noisette-#ID_NOISETTE" style="padding:10px; border:2px solid #9DBA00; margin:10px 0;">
     25                <BOUCLE_type_noisette(TYPES_NOISETTES){type_noisette}>
     26                        <div style="color:#9DBA00; font-size:1.5em; margin:5px 0;"><strong>
     27                                <div style="float:right;">[(#ICON|sinon{noisette-24.png}|noizetier_icone_chemin|balise_img{})]</div>
     28                                [(#NOM)]
     29                        </strong></div>
     30                </BOUCLE_type_noisette>
    3131
    3232                [(#ENV{editer_noisette}|=={#ID_NOISETTE}|oui)
     
    3636
    3737                [(#ENV{ajouter_noisette}|ou{#ENV{editer_noisette}}|non)
    38                         [<div class="noisette noisette_#NOISETTE[ (#CHAMP_SQL{css})]">(#NOIZETIER_AFFICHER_NOISETTE)</div>]
     38                        [<div class="noisette noisette_#NOISETTE[ (#CHAMP_SQL{css})]">(#NOISETTE_COMPILER)</div>]
    3939                        <div class="noizetier-action" style="text-align:#LANG_RIGHT;">
    4040                                \[<strong><a href="[(#SELF|parametre_url{editer_noisette,#ID_NOISETTE})#noizetier-noisette-#ID_NOISETTE]"><:noizetier:formulaire_modifier_noisette:></a></strong>\]
  • _plugins_/noizetier/trunk/formulaires/configurer_noizetier.php

    r105235 r109907  
    1515
    1616        if ($defaut_ajax != _request('ajax_noisette')) {
    17                 include_spip('inc/flock');
    18                 include_spip('noizetier_fonctions');
    19                 supprimer_fichier(_CACHE_AJAX_NOISETTES);
     17                include_spip('inc/ncore_cache');
     18                cache_supprimer('noizetier', _NCORE_NOMCACHE_TYPE_NOISETTE_AJAX);
    2019        }
    2120
  • _plugins_/noizetier/trunk/formulaires/editer_page.html

    r105430 r109907  
    7373                                        maj_apercu_icone = function(){
    7474                                                i = jQuery('input#icon').val();
    75                                                 jQuery.get('#URL_PAGE{icone-preview}&icone='+i, function(data) {
     75                                                jQuery.get('#URL_PAGE{icone_preview}&icone='+i, function(data) {
    7676                                                        jQuery('span#apercu_icone').html(data);
    7777                                                });
  • _plugins_/noizetier/trunk/ncore/noizetier.php

    r109831 r109907  
    149149 *
    150150 * @return array
    151  *        Tableau de la forme `[noisette] = information ou description complète`.
     151 *        Tableau de la forme `[type_noisette] = information ou description complète`.
    152152 */
    153153function noizetier_type_noisette_lister($plugin, $information = '') {
     
    164164
    165165        return $info_noisettes;
     166}
     167
     168/**
     169 * Renvoie la configuration par défaut de l'ajax à appliquer pour la compilation des noisettes.
     170 * Cette information est utilisée si la description YAML d'un type noisette ne contient pas de tag ajax
     171 * ou contient un tag ajax à `defaut`.
     172 *
     173 * @package SPIP\NOIZETIER\SERVICE\TYPE_NOISETTE
     174 *
     175 * @uses ncore_chercher_service()
     176 *
     177 * @param string $plugin
     178 *        Identifiant qui permet de distinguer le module appelant qui peut-être un plugin comme le noiZetier ou
     179 *        un script. Pour un plugin, le plus pertinent est d'utiliser le préfixe.
     180 *
     181 * @return bool
     182 *              `true` si par défaut une noisette est insérée en ajax, `false` sinon.
     183 */
     184function noizetier_type_noisette_initialiser_ajax($plugin) {
     185
     186        // La valeur Ajax par défaut est inscrite dans la configuration du plugin.
     187        include_spip('inc/config');
     188        $defaut_ajax = lire_config('noizetier/ajax_noisette');
     189
     190        return $defaut_ajax;
    166191}
    167192
     
    542567        return $retour;
    543568}
    544 
    545 
    546 function noizetier_noisette_config_ajax() {
    547 
    548         // On détermine la valeur par défaut de l'ajax des noisettes qui est stocké dans la configuration du plugin.
    549         include_spip('inc/config');
    550         $defaut_ajax = lire_config('noizetier/ajax_noisette') == 'on' ? true : false;
    551 
    552         return $defaut_ajax;
    553 }
  • _plugins_/noizetier/trunk/noisettes/bloctexte.yaml

    r77611 r109907  
    33icon: 'texte-24.png'
    44contexte: 'aucun'
     5ajax: 'non'
    56parametres:
    67  -
  • _plugins_/noizetier/trunk/noisettes/codespip.yaml

    r77904 r109907  
    22icon: 'code-spip-24.png'
    33contexte: 'env'
     4ajax: 'non'
    45parametres:
    56  -
  • _plugins_/noizetier/trunk/noizetier_administrations.php

    r109831 r109907  
    8080 */
    8181function noizetier_vider_tables($nom_meta_version_base) {
     82
    8283        // On efface les tables du plugin
    8384        sql_drop_table('spip_noizetier_pages');
  • _plugins_/noizetier/trunk/noizetier_fonctions.php

    r109831 r109907  
    55        return;
    66}
    7 
    8 define('_CACHE_AJAX_NOISETTES', _DIR_CACHE . 'noisettes_ajax.php');
    9 define('_CACHE_CONTEXTE_NOISETTES', _DIR_CACHE . 'noisettes_contextes.php');
    10 define('_CACHE_INCLUSIONS_NOISETTES', _DIR_CACHE . 'noisettes_inclusions.php');
    117
    128
     
    7773// --------------------------------------------------------------------------------
    7874
    79 /**
    80  * Retourne les elements du contexte uniquement
    81  * utiles a la noisette demande.
    82  *
    83  * @param
    84  *
    85  * @return
    86  **/
    87 function noizetier_choisir_contexte($noisette, $contexte_entrant, $id_noisette) {
    88         $contexte_noisette = array_flip(noizetier_noisette_contexte($noisette));
    89 
    90         // On transmet toujours l'id_noisette et les variables se terminant par _$id_noisette (utilisees par exemple par Aveline pour la pagination)
    91         $contexte_min = array('id_noisette' => $id_noisette);
    92 
    93         if (isset($contexte_noisette['env'])) {
    94                 return array_merge($contexte_entrant, $contexte_min);
    95         }
    96 
    97         $l = -1 * (strlen($id_noisette) + 1);
    98         foreach ($contexte_entrant as $variable => $valeur) {
    99                 if (substr($variable, $l) == '_'.$id_noisette) {
    100                         $contexte_min[$variable] = $valeur;
    101                 }
    102         }
    103 
    104         if (isset($contexte_noisette['aucun'])) {
    105                 return $contexte_min;
    106         }
    107         if ($contexte_noisette) {
    108                 return array_merge(array_intersect_key($contexte_entrant, $contexte_noisette), $contexte_min);
    109         }
    110 
    111         return $contexte_entrant;
    112 }
    113 
    11475
    11576/**
     
    11879 * Si l'index à partir duquel les noisettes sont réordonnées n'est pas fourni ou est égal à 0
    11980 * la fonction réordonne toutes les noisettes.
     81 *
     82 * @api
    12083 *
    12184 * @param array $ordre
     
    241204 * @package SPIP\NOIZETIER\API\BLOC
    242205 * @api
     206 * @filtre
    243207 *
    244208 * @return array|string
     
    360324
    361325/**
     326 *
     327 * @api
     328 *
    362329 * @param bool $recharger
    363330 *
     
    499466
    500467/**
     468 *
     469 * @filtre
     470 *
    501471 * @param       $page
    502472 * @param array $blocs_exclus
     
    624594 * @package SPIP\NOIZETIER\API\PAGE
    625595 * @api
    626  * @filtre
    627596 *
    628597 * @param string $page
     
    648617 * @package SPIP\NOIZETIER\API\OBJET
    649618 * @api
    650  * @filtre
    651619 *
    652620 * @param string $type
     
    677645 * @package SPIP\NOIZETIER\API\PAGE
    678646 * @api
    679  * @filtre
    680647 *
    681648 * @return string
     
    872839 * @package SPIP\NOIZETIER\API\OBJET
    873840 * @api
    874  * @filtre
    875841 *
    876842 * @param string $type_objet
     
    947913}
    948914
    949 include_spip('inc/ncore_compilation');
     915
     916// --------------------------------------------------------------------
     917// ------------------------------ BALISES -----------------------------
     918// --------------------------------------------------------------------
    950919include_spip('public/noizetier_balises');
    951 include_spip('noizetier_vieilles_fonctions');
  • _plugins_/noizetier/trunk/noizetier_ieconfig.php

    r93111 r109907  
    5151        if ($action == 'export' && _request('noizetier_export_option') == 'on') {
    5252                include_spip('noizetier_fonctions');
    53                 $flux['data']['noizetier'] = noizetier_tableau_export();
     53                $flux['data']['noizetier'] = noizetier_ieconfig_exporter();
    5454        }
    5555
     
    171171        if ($action == 'import' && isset($flux['args']['config']['noizetier']) && _request('noizetier_type_import') != '') {
    172172                include_spip('noizetier_fonctions');
    173                 if (!noizetier_importer_configuration(_request('noizetier_type_import'), _request('noizetier_import_compos'), $flux['args']['config']['noizetier'])) {
     173                if (!noizetier_ieconfig_importer(_request('noizetier_type_import'), _request('noizetier_import_compos'), $flux['args']['config']['noizetier'])) {
    174174                        $flux['data'] .= _T('noizetier:ieconfig_probleme_import_config').'<br />';
    175175                }
     
    178178        return($flux);
    179179}
     180
     181
     182// --------------------------------------------------------------------
     183// ------------------------- API IMPORT/EXPORT ------------------------
     184// --------------------------------------------------------------------
     185
     186/**
     187 * Retourne le tableau des noisettes et des compositions du noizetier pour les exports.
     188 *
     189 * @return
     190 **/
     191function noizetier_ieconfig_exporter() {
     192        $data = array();
     193
     194        // On calcule le tableau des noisettes
     195        // TODO : a modifier pour les objets non ?
     196        $data['noisettes'] = sql_allfetsel(
     197                'type, composition, bloc, type_noisette, parametres, css',
     198                'spip_noisettes',
     199                '1',
     200                '',
     201                'type, composition, bloc, rang'
     202        );
     203
     204        // On remet au propre les parametres
     205        foreach ($data['noisettes'] as $cle => $noisette) {
     206                $data['noisettes'][$cle]['parametres'] = unserialize($noisette['parametres']);
     207        }
     208
     209        // On recupere les compositions du noizetier
     210        // TODO : a supprimer car elles sont dans la table des pages
     211        $noizetier_compositions = unserialize($GLOBALS['meta']['noizetier_compositions']);
     212        if (is_array($noizetier_compositions) and count($noizetier_compositions) > 0) {
     213                $data['noizetier_compositions'] = $noizetier_compositions;
     214        }
     215
     216        $data = pipeline('noizetier_config_export', $data);
     217
     218        return $data;
     219}
     220
     221/**
     222 * Importe une configuration de noisettes et de compositions.
     223 *
     224 * @param string  $type_import
     225 * @param string  $import_compos
     226 * @param array $config
     227 *
     228 * @return bool
     229 */
     230function noizetier_ieconfig_importer($type_import, $import_compos, $config) {
     231        if ($type_import != 'remplacer') {
     232                $type_import = 'fusion';
     233        }
     234        if ($import_compos != 'oui') {
     235                $import_compos = 'non';
     236        }
     237
     238        $config = pipeline('noizetier_config_import', $config);
     239
     240        // On s'occupe deja des noisettes
     241        $noisettes = $config['noisettes'];
     242        include_spip('base/abstract_sql');
     243        if (is_array($noisettes) and count($noisettes) > 0) {
     244                $noisettes_insert = array();
     245                $rang = 1;
     246                $page = '';
     247
     248                if ($type_import == 'remplacer') {
     249                        sql_delete('spip_noisettes', '1');
     250                }
     251
     252                foreach ($noisettes as $noisette) {
     253                        $type = $noisette['type'];
     254                        $composition = $noisette['composition'];
     255                        if ($type.'-'.$composition != $page) {
     256                                $page = $type.'-'.$composition;
     257                                $rang = 1;
     258                                if ($type_import == 'fusion') {
     259                                        $rang = sql_getfetsel('rang_noisette', 'spip_noisettes', 'type='.sql_quote($type).' AND composition='.sql_quote($composition), '', 'rang DESC') + 1;
     260                                }
     261                        } else {
     262                                $rang = $rang + 1;
     263                        }
     264                        $noisette['rang_noisette'] = $rang;
     265                        $noisette['parametres'] = serialize($noisette['parametres']);
     266                        $noisettes_insert[] = $noisette;
     267                }
     268
     269                $ok = sql_insertq_multi('spip_noisettes', $noisettes_insert);
     270        }
     271
     272        // On s'occupe des compositions du noizetier
     273        // TODO : à modifier car les compositions sont dans la table des pages
     274        if ($import_compos == 'oui') {
     275                include_spip('inc/meta');
     276                $compos_importees = $config['noizetier_compositions'];
     277                if (is_array($compos_importees) and count($compos_importees) > 0) {
     278                        if ($type_import == 'remplacer') {
     279                                effacer_meta('noizetier_compositions');
     280                        } else {
     281                                $noizetier_compositions = unserialize($GLOBALS['meta']['noizetier_compositions']);
     282                        }
     283
     284                        if (!is_array($noizetier_compositions)) {
     285                                $noizetier_compositions = array();
     286                        }
     287
     288                        foreach ($compos_importees as $type => $compos_type) {
     289                                foreach ($compos_type as $composition => $info_compo) {
     290                                        $noizetier_compositions[$type][$composition] = $info_compo;
     291                                }
     292                        }
     293
     294                        ecrire_meta('noizetier_compositions', serialize($noizetier_compositions));
     295                        ecrire_metas();
     296                }
     297        }
     298
     299        // On invalide le cache
     300        include_spip('inc/invalideur');
     301        suivre_invalideur('noizetier-import-config');
     302
     303        return $ok;
     304}
  • _plugins_/noizetier/trunk/noizetier_pipelines.php

    r109831 r109907  
    7474
    7575                                        if (isset($flux['args']['contexte']['voir']) && $flux['args']['contexte']['voir'] == 'noisettes' && autoriser('configurer', 'noizetier')) {
    76                                                 $complements = recuperer_fond('noizetier-generer-bloc-voir-noisettes', $contexte, array('raw' => true));
     76                                                $complements = recuperer_fond('bloc_preview', $contexte, array('raw' => true));
    7777                                        } else {
    78                                                 $complements = recuperer_fond('noizetier-generer-bloc', $contexte, array('raw' => true));
     78                                                $complements = recuperer_fond('bloc_compiler', $contexte, array('raw' => true));
    7979                                        }
    8080
     
    114114                                        $blocs = noizetier_page_lister_blocs($page);
    115115                                        if (isset($blocs[$bloc])) {
    116                                                 $complements = recuperer_fond('noizetier-generer-bloc-voir-noisettes', $contexte, array('raw' => true));
     116                                                $complements = recuperer_fond('bloc_preview', $contexte, array('raw' => true));
    117117                                                $flux['data']['texte'] .= $complements['texte'];
    118118                                        }
     
    279279function noizetier_formulaire_admin($flux) {
    280280        if (autoriser('configurer', 'noizetier')) {
    281                 $btn = recuperer_fond('prive/bouton/voir_noisettes');
    282                 $flux['data'] = preg_replace('%(<!--extra-->)%is', $btn.'$1', $flux['data']);
     281                $bouton = recuperer_fond('prive/bouton/voir_noisettes');
     282                $flux['data'] = preg_replace('%(<!--extra-->)%is', $bouton.'$1', $flux['data']);
    283283        }
    284284
     
    299299                type_noisette_charger('noizetier', 'noisettes/');
    300300
    301                 // TODO : à revoir avec N-Core
    302                 include_spip('inc/flock');
    303                 supprimer_fichier(_CACHE_AJAX_NOISETTES);
    304                 supprimer_fichier(_CACHE_CONTEXTE_NOISETTES);
    305                 supprimer_fichier(_CACHE_INCLUSIONS_NOISETTES);
     301                // Suppression des caches N-Core nécessaires à la compilation des noisettes
     302                include_spip('inc/ncore_cache');
     303                cache_supprimer('noizetier', _NCORE_NOMCACHE_TYPE_NOISETTE_CONTEXTE);
     304                cache_supprimer('noizetier', _NCORE_NOMCACHE_TYPE_NOISETTE_AJAX);
     305                cache_supprimer('noizetier', _NCORE_NOMCACHE_TYPE_NOISETTE_INCLUSION);
    306306        }
    307307
  • _plugins_/noizetier/trunk/paquet.xml

    r106646 r109907  
    2727        <pipeline nom="styliser" inclure="noizetier_pipelines.php" />
    2828        <pipeline nom="compositions_lister_disponibles" inclure="noizetier_pipelines.php" />
    29         <pipeline nom="ieconfig" inclure="noizetier_ieconfig.php" />
    3029        <pipeline nom="jqueryui_plugins" inclure="noizetier_pipelines.php" action="jqueryui_forcer" />
    3130        <pipeline nom="noizetier_lister_pages" inclure="noizetier_pipelines.php" />
    3231        <pipeline nom="noizetier_blocs_defaut" inclure="noizetier_pipelines.php" />
    33         <pipeline nom="noizetier_config_export" inclure="noizetier_pipelines.php" />
    34         <pipeline nom="noizetier_config_import" inclure="noizetier_pipelines.php" />
    3532        <pipeline nom="formulaire_admin" inclure="noizetier_pipelines.php" />
    3633        <pipeline nom="affiche_milieu" inclure="noizetier_pipelines.php" />
     
    3835        <pipeline nom="compagnon_messages" inclure="noizetier_pipelines.php" />
    3936        <pipeline nom="pre_boucle" inclure="noizetier_pipelines.php" />
     37        <pipeline nom="ieconfig" inclure="noizetier_ieconfig.php" />
     38        <pipeline nom="noizetier_config_export" inclure="noizetier_pipelines.php" />
     39        <pipeline nom="noizetier_config_import" inclure="noizetier_pipelines.php" />
    4040
    4141        <necessite nom="ncore" compatibilite="[0.1.0;[" />
  • _plugins_/noizetier/trunk/public/noizetier_balises.php

    r107632 r109907  
    3636        return $p;
    3737}
     38
     39function balise_NOIZETIER_NOISETTE_PREVIEW_dist($p) {
     40        $id_noisette = champ_sql('id_noisette', $p);
     41        $type_noisette = champ_sql('type_noisette', $p);
     42        $parametres = champ_sql('parametres', $p);
     43
     44        $inclusion = "recuperer_fond(
     45                'noisette_preview',
     46                array_merge(unserialize($parametres), array('type_noisette' => $type_noisette))
     47        )";
     48
     49        $p->code = "$inclusion";
     50        $p->interdire_scripts = false;
     51
     52        return $p;
     53}
Note: See TracChangeset for help on using the changeset viewer.