Changeset 47901 in spip-zone


Ignore:
Timestamp:
May 18, 2011, 3:56:52 PM (10 years ago)
Author:
joseph@…
Message:

Pouvoir inclure dynamiquement des noisettes (qui auront alors leur propre cache).

Il faut ajouter inclusion: 'dynamique' au YAML de la noisette.

Location:
_plugins_/noiZetier
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/noiZetier/balise/noizetier_afficher_noisette.php

    r43939 r47901  
    2323        $environnement = '$Pile[0]';
    2424       
    25         $p->code =  "(!$id_noisette) ? _T('zbug_champ_hors_motif', array('champ'=>'ID_NOISETTE', 'motif'=>'NOISETTES')) : recuperer_fond(
     25        $inclusion_dynamique = "\"<?php echo recuperer_fond(
     26                'noisettes/\".$noisette.\"',
     27                \".var_export(array_merge(unserialize($parametres), noizetier_choisir_contexte($noisette, $environnement)),true).\",
     28                \".var_export(array('ajax'=>($_ajax && noizetier_ajaxifier_noisette($noisette))),true).\"
     29        );?>\"";
     30
     31        $inclusion_statique =  "recuperer_fond(
    2632                'noisettes/'.$noisette,
    2733                array_merge(unserialize($parametres), noizetier_choisir_contexte($noisette, $environnement)),
    2834                array('ajax'=>($_ajax && noizetier_ajaxifier_noisette($noisette)))
    2935        )";
    30                
     36       
     37        $code = "((noizetier_inclusion_dynamique($noisette)) ? $inclusion_dynamique : $inclusion_statique)";
     38       
     39        $p->code =  "(!$id_noisette) ? _T('zbug_champ_hors_motif', array('champ'=>'ID_NOISETTE', 'motif'=>'NOISETTES')) : ".$code;
     40        $p->interdire_scripts = false;
     41       
    3142        return $p;
    3243   
  • _plugins_/noiZetier/inc/noizetier.php

    r47213 r47901  
    77define('_CACHE_CONTEXTE_NOISETTES', 'noisettes_contextes.php');
    88define('_CACHE_DESCRIPTIONS_NOISETTES', 'noisettes_descriptions.php');
     9define('_CACHE_INCLUSIONS_NOISETTES', 'noisettes_inclusions.php');
    910
    1011// Pour compatibilité avec PHP4
     
    178179                        if (!isset($infos_noisette['ajax'])) {
    179180                                $infos_noisette['ajax'] = 'oui';
     181                        }
     182                        // inclusion
     183                        if (!isset($infos_noisette['inclusion'])) {
     184                                $infos_noisette['inclusion'] = 'statique';
    180185                        }
    181186                }
     
    608613}
    609614
     615/**
     616 * Retourne true ou false pour indiquer si la noisette doit être inclue dynamiquement
     617 *
     618 * @param
     619 * @return
     620**/
     621function noizetier_inclusion_dynamique($noisette) {
     622        static $noisettes = false;
     623       
     624        // seulement 1 fois par appel, on lit ou calcule tous les contextes
     625        if ($noisettes === false) {
     626                // lire le cache des contextes sauves
     627                lire_fichier_securise(_DIR_CACHE . _CACHE_INCLUSIONS_NOISETTES, $noisettes);
     628                $noisettes = @unserialize($noisettes);
     629               
     630                // s'il en mode recalcul, on recalcule tous les contextes des noisettes trouvees.
     631                if (!$noisettes or (_request('var_mode') == 'recalcul')) {
     632                        include_spip('inc/noizetier');
     633                        $infos = noizetier_lister_noisettes();
     634                        $noisettes = array();
     635                        foreach ($infos as $cle_noisette => $infos) {
     636                                $noisettes[$cle_noisette] = ($infos['inclusion'] == 'dynamique') ? true : false ;
     637                        }
     638                        ecrire_fichier_securise(_DIR_CACHE . _CACHE_INCLUSIONS_NOISETTES, serialize($noisettes));
     639                }
     640        }
     641
     642        if (isset($noisettes[$noisette])) {
     643                return $noisettes[$noisette];
     644        }
     645       
     646        return false;
     647}
    610648
    611649/**
  • _plugins_/noiZetier/noisettes/bloctexte.yaml

    r41178 r47901  
    2727      inserer_barre: 'edition'
    2828      previsualisation: 'oui'
    29 contexte: aucun
     29contexte: 'aucun'
  • _plugins_/noiZetier/plugin.xml

    r47849 r47901  
    33        <auteur>Joseph, Matthieu Marcillaud</auteur>
    44        <licence>GPL v3</licence>
    5         <version>0.11.1</version>
     5        <version>0.12.0</version>
    66        <version_base>0.4</version_base>
    77        <etat>stable</etat>
Note: See TracChangeset for help on using the changeset viewer.