Changeset 110030 in spip-zone for _plugins_/identite_extra/trunk


Ignore:
Timestamp:
Apr 30, 2018, 10:53:04 AM (7 months ago)
Author:
rastapopoulos@…
Message:

Amélioration pour ne plus utiliser de GLOBALS et permettre l'extension par un pipeline plus propre et plus pérenne, avec une fonction centrale pour récupérer la liste. L'ancienne globale est évidemment toujours utilisée dans cette fonction, si elle existe, pour les gens qui l'utilisaient.

Location:
_plugins_/identite_extra/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/identite_extra/trunk/balise/identite_.php

    r96500 r110030  
    66
    77function balise_IDENTITE_($p) {
    8     $cfg = $GLOBALS['identite_extra'];
     8    $cfg = identite_extra_champs();
    99
    1010    $nom = $p->nom_champ;
  • _plugins_/identite_extra/trunk/identite_extra_ieconfig.php

    r96500 r110030  
    77//proposer l'export de la config via le plugin ieconfig
    88function identite_extra_ieconfig_metas($table) {
    9         if (isset($GLOBALS['identite_extra']) and is_array($GLOBALS['identite_extra'])) {
     9        if (identite_extra_champs()) {
    1010                $table['identite_extra']['titre'] = _T('identite_extra:identite_extra');;
    1111                $table['identite_extra']['icone'] = 'identite_extra-16.png';
  • _plugins_/identite_extra/trunk/identite_extra_options.php

    r96500 r110030  
    55}
    66
    7 // Des champs par défaut pour identite extra
    8 if (!isset($GLOBALS['identite_extra'])) {
    9         $GLOBALS['identite_extra'] = array('nom_organisation', 'telephone', 'adresse', 'ville', 'code_postal', 'region','pays');
     7/**
     8 * Retourne la liste des champs d'identité extra du site
     9 *
     10 * @pipeline_appel
     11 * @return array Liste des champs
     12 **/
     13function identite_extra_champs() {
     14        static $champs = null;
     15       
     16        if (is_null($champs)) {
     17                // Les champs par défaut
     18                $champs = array('nom_organisation', 'telephone', 'adresse', 'ville', 'code_postal', 'region', 'pays');
     19               
     20                // On garde la compatibilité avec l'ancienne manière de les lister
     21                if (isset($GLOBALS['identite_extra']) and is_array($GLOBALS['identite_extra'])) {
     22                        $champs = array_merge($champs, $GLOBALS['identite_extra']);
     23                }
     24               
     25                // On passe dans un pipeline pour augmenter plus proprement qu'avec une globale
     26                $champs = pipeline('identite_extra_champs', $champs);
     27               
     28                // On vire doublons éventuels
     29                $champs = array_unique($champs);
     30        }
     31       
     32        return $champs;
    1033}
    11 
  • _plugins_/identite_extra/trunk/identite_extra_pipelines.php

    r96500 r110030  
    77/**
    88 * Ajouter des champs supplémentaires sur configurer_identite
    9  * les champs sont définis dans une globale facilement surchargeable dans le fichier mes_options.php
    10  *
    11  * exemple:
    12  * $GLOBALS['identite_extra'] = array('champs1','champs2','champs3',...)
     9 *
     10 * Les champs sont définis dans une fonction extensible par le pipeline "identite_extra_champs"
    1311 *
    1412 * @param array $flux
     
    2018                $flux['args']['form'] == 'configurer_identite'
    2119                and ($p = strpos($flux['data'], '<!--extra-->'))
    22                 and isset($GLOBALS['identite_extra'])
    23                 and is_array($GLOBALS['identite_extra'])
     20                and identite_extra_champs()
    2421        ) {
    25                 $ajout = recuperer_fond("prive/formulaires/configurer_identite_extra", $flux['args']['contexte']);
     22                $ajout = recuperer_fond('prive/formulaires/configurer_identite_extra', $flux['args']['contexte']);
    2623                $flux['data'] = substr_replace($flux['data'], $ajout, $p, 0);
    2724        }
     
    3633                $valeurs = array();
    3734               
    38                 foreach ($GLOBALS['identite_extra'] as $k) {
    39                         $valeurs['identite_extra'][$k] = lire_config('identite_extra/' . $k, '');
     35                foreach (identite_extra_champs() as $champ) {
     36                        $valeurs['identite_extra'][$champ] = lire_config('identite_extra/' . $champ, '');
    4037                }
    4138               
  • _plugins_/identite_extra/trunk/paquet.xml

    r104943 r110030  
    22        prefix="identite_extra"
    33        categorie="communication"
    4         version="1.3.1"
     4        version="1.4.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
     
    1717        <utilise nom="ieconfig" compatibilite="[1.3.1;[" />
    1818
     19        <pipeline nom="identite_extra_champs" action="" />
    1920        <pipeline nom="formulaire_fond" inclure="identite_extra_pipelines.php" />
    2021        <pipeline nom="formulaire_charger" inclure="identite_extra_pipelines.php" />   
     
    2223        <pipeline nom="formulaire_traiter" inclure="identite_extra_pipelines.php" />
    2324        <pipeline nom="ieconfig_metas" inclure="identite_extra_ieconfig.php" />
    24 
    2525</paquet>
Note: See TracChangeset for help on using the changeset viewer.