Changeset 39439 in spip-zone


Ignore:
Timestamp:
Jul 21, 2010, 3:41:19 PM (9 years ago)
Author:
marcimat@…
Message:
  • indiquer que les noisettes peuvent n'avoir besoin que d'une partie de l'environnement existant, ou de rien du tout, cela par un paramètre dans le yaml de la noizette. Ex:

contexte: aucun
contexte: env
contexte: id_article
et multiple :
contexte:

  • id_article
  • id_rubrique
  • ...

Pour ne pas demander à chaque lecture d'une noisette de lire le fichier yaml associé, on stocke ce que nécessite la noisette dans la ligne noisette de la table spip_noisettes. Cela n'est pas idéal (si la noisette change, spip_noisettes n'est pas mis à jour sans passer par l'interface d'édition des noisettes dans l'espace privé) mais évite des calculs trop fréquents.

Location:
_plugins_/noiZetier
Files:
7 edited

Legend:

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

    r37030 r39439  
    99        $noisette = champ_sql('noisette', $p);
    1010        $parametres = champ_sql('parametres', $p);
     11        $contexte = champ_sql('contexte', $p);
     12
     13        // si pas de contexte attribuer, on passe tout le contexte que l'on recoit
     14        // sinon, on regarde si 'null' ou 'env' est indique :
     15        // si null => aucun contexte
     16        // si 'env' => tout le contexte recu.
     17        $environnement = '$Pile[0]';
    1118       
    1219        $p->code =  "(!$id_noisette) ? _T('zbug_champ_hors_motif', array('champ'=>'ID_NOISETTE', 'motif'=>'NOISETTES')) : recuperer_fond(
    1320                'noisettes/'.$noisette,
    14                 array_merge(unserialize($parametres), \$Pile[0]),
     21                array_merge(
     22                        unserialize($parametres),
     23                        (((\$contexte = unserialize($contexte)) and (\$contexte = array_flip(\$contexte))) ?
     24                                (isset(\$contexte['aucun']) ? array() :
     25                                        (isset(\$contexte['env']) ? $environnement :
     26                                                array_intersect_key($environnement, \$contexte))) :
     27                                                        $environnement)),
    1528                array('ajax'=>true)
    1629        )";
    17        
     30               
    1831        return $p;
    1932   
  • _plugins_/noiZetier/base/noizetier_installation.php

    r36486 r39439  
    1515        ){
    1616               
    17                 if (version_compare($version_actuelle,'0.0','=')){
     17                if (version_compare($version_actuelle,'0.0','=')) {
    1818                        // Création des tables
    1919                        include_spip('base/create');
     
    2525                        echo _T('noizetier:installation_tables');
    2626                        ecrire_meta($nom_meta_version_base, $version_actuelle=$version_cible, 'non');
     27                }
     28                if (version_compare($version_actuelle,'0.2','<')) {
     29                        // Ajout du champ 'contexte'
     30                        include_spip('base/create');
     31                        include_spip('base/abstract_sql');
     32                        maj_tables('spip_noisettes');
     33                        ecrire_meta($nom_meta_version_base, $version_actuelle='0.2', 'non');
    2734                }
    2835               
  • _plugins_/noiZetier/base/noizetier_tables.php

    r35083 r39439  
    2020                "bloc" => "tinytext DEFAULT '' NOT NULL",
    2121                "noisette" => "tinytext DEFAULT '' NOT NULL",
    22                 "parametres" => "text DEFAULT '' NOT NULL"
     22                "parametres" => "text DEFAULT '' NOT NULL",
     23                "contexte" => "text DEFAULT '' NOT NULL"
    2324        );
    2425       
  • _plugins_/noiZetier/formulaires/configurer_bloc.php

    r39203 r39439  
    136136                $noisette = _request('noisette');
    137137                $infos_param = noizetier_charger_parametres_noisette($noisette);
     138                $contexte = noizetier_charger_contexte_noisette($noisette);
    138139                $parametres_envoyes = array();
    139140                foreach ($infos_param as $nom=>$parametre)
     
    155156                                        'rang' => $rang,
    156157                                        'noisette' => $noisette,
    157                                         'parametres' => serialize($parametres_envoyes)
     158                                        'parametres' => serialize($parametres_envoyes),
     159                                        'contexte' => serialize($contexte)
    158160                                )
    159161                        );
     
    170172                                'spip_noisettes',
    171173                                array(
    172                                         'parametres' => serialize($parametres_envoyes)
     174                                        'parametres' => serialize($parametres_envoyes),
     175                                        'contexte' => serialize($contexte) // mise a jour du contexte de la noisette
    173176                                ),
    174177                                'id_noisette='.$id_noisette_modifiee
  • _plugins_/noiZetier/inc/noizetier.php

    r38881 r39439  
    9797                                        }
    9898                                }
     99                                // Décomposition informations du contexte a utiliser
     100                                if (spip_xml_match_nodes(',^contexte,', $xml, $contextes)){
     101                                        $infos_noisette['contexte'] = array();
     102                                        foreach (array_keys($contextes) as $contexte){
     103                                                list($balise, $attributs) = spip_xml_decompose_tag($contexte);
     104                                                $infos_noisette['contexte'][] = $attributs['nom'];
     105                                        }
     106                                }
    99107                        }
    100108                }
     
    129137                        if (!isset($infos_noisette['parametres']))
    130138                                $infos_noisette['parametres'] = array();
     139                               
     140                        // contexte
     141                        if (!isset($infos_noisette['contexte'])) {
     142                                $infos_noisette['contexte'] = array();
     143                        }
     144                        if (is_string($infos_noisette['contexte'])) {
     145                                $infos_noisette['contexte'] = array($infos_noisette['contexte']);
     146                        }
     147
    131148                }
    132149
     
    154171        return $params_noisettes[$noisette];
    155172}
     173
     174/**
     175 * Charger les informations des contexte pour une noisette
     176 *
     177 * @param string $noisette
     178 * @staticvar array $params_noisettes
     179 * @return array
     180 */
     181function noizetier_charger_contexte_noisette($noisette){
     182        static $contexte_noisettes = null;
     183
     184        if (is_null($contexte_noisettes[$noisette])){
     185                $noisettes = noizetier_lister_noisettes();
     186                $contexte_noisettes[$noisette] =  $noisettes[$noisette]['contexte'];
     187        }
     188        return $contexte_noisettes[$noisette];
     189}
     190
    156191
    157192/**
  • _plugins_/noiZetier/noisettes/bloctexte.yaml

    r37369 r39439  
    2525      label: '<:noizetier:label_texte:>'
    2626      obligatoire: 'oui'
     27contexte: aucun
  • _plugins_/noiZetier/plugin.xml

    r38918 r39439  
    33        <auteur>Joseph</auteur>
    44        <licence>GPL v3</licence>
    5         <version>0.4</version>
    6         <version_base>0.1</version_base>
     5        <version>0.5</version>
     6        <version_base>0.2</version_base>
    77        <etat>test</etat>
    88        <description>Prototype de gestionnaire de noisettes, nativement fonctionnel avec les squelettes Z.<p />
Note: See TracChangeset for help on using the changeset viewer.