Changeset 104966 in spip-zone


Ignore:
Timestamp:
Jun 25, 2017, 2:28:55 PM (2 years ago)
Author:
eric@…
Message:

Simplification de l'api sur les blocs avec plus qu'une seul fonction informer pour renvoyer un ou tous les blocs.
L'api est ainsi conhérente avec celle des objets.

Location:
_plugins_/noizetier/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/noizetier/trunk/formulaires/editer_page.php

    r104962 r104966  
    8282                // Ainsi cette liste est toujours l'inverse de l'index [blocs] de l'argument $description_page.
    8383                include_spip('noizetier_fonctions');
    84                 $blocs = noizetier_bloc_repertorier();
    85                 foreach ($blocs as $_bloc => $_infos) {
    86                         $valeurs['_blocs'][$_bloc] = $_infos['nom'];
     84                $blocs = noizetier_bloc_informer();
     85                foreach ($blocs as $_bloc => $_configuration) {
     86                        $valeurs['_blocs'][$_bloc] = $_configuration['nom'];
    8787                        if (!in_array($_bloc, $description_page['blocs'])) {
    8888                                $valeurs['_blocs_defaut'][] = $_bloc;
  • _plugins_/noizetier/trunk/noizetier_fonctions.php

    r104965 r104966  
    264264
    265265/**
    266  * Retourne la liste des descriptions des blocs par defaut du squelette.
    267  *
    268  * @package SPIP\NOIZETIER\API\BLOC
    269  * @api
    270  * @filtre
    271  *
    272  * @return array
    273  */
    274 function noizetier_bloc_repertorier() {
    275         static $blocs = null;
    276 
    277         if (is_null($blocs)) {
    278                 $options['blocs_defaut'] = noizetier_bloc_defaut();
    279                 foreach ($options['blocs_defaut'] as $_bloc) {
    280                         if ($configuration = noizetier_bloc_informer($_bloc, '', $options)) {
    281                                 $blocs[$_bloc] = $configuration;
    282                         }
    283                 }
    284         }
    285 
    286         return $blocs;
    287 }
    288 
    289 
    290 /**
    291266 * Retourne la description complète d'un bloc.
    292267 * La description est disponible dans un fichier YAML.
     
    298273 * @return array|string
    299274 */
    300 function noizetier_bloc_informer($bloc, $information = '', $options = array()) {
     275function noizetier_bloc_informer($bloc = '', $information = '') {
     276
     277        static $blocs = null;
    301278        static $description_bloc = array();
    302279
    303         if (!isset($description_bloc[$bloc])) {
    304                 if ($fichier = find_in_path("${bloc}/bloc.yaml")) {
    305                         // Il y a un fichier YAML de configuration dans le répertoire du bloc
    306                         include_spip('inc/yaml');
    307                         if ($description = yaml_charger_inclusions(yaml_decode_file($fichier))) {
    308                                 $description['nom'] = isset($description['nom']) ? _T_ou_typo($description['nom']) : ucfirst($bloc);
    309                                 if (isset($description['description'])) {
    310                                         $description['description'] = _T_ou_typo($description['description']);
     280        if ((!$bloc and is_null($blocs))
     281        or ($bloc and !isset($description_bloc[$bloc]))) {
     282                // On détermine les blocs pour lesquels on retourne la description
     283                $identifiants_blocs = $bloc ? array($bloc) : noizetier_bloc_defaut();
     284
     285                foreach ($identifiants_blocs as $_bloc) {
     286                        $description = array();
     287                        if ($fichier = find_in_path("${_bloc}/bloc.yaml")) {
     288                                // Il y a un fichier YAML de configuration dans le répertoire du bloc
     289                                include_spip('inc/yaml');
     290                                if ($description = yaml_charger_inclusions(yaml_decode_file($fichier))) {
     291                                        $description['nom'] = isset($description['nom']) ? _T_ou_typo($description['nom']) : ucfirst($bloc);
     292                                        if (isset($description['description'])) {
     293                                                $description['description'] = _T_ou_typo($description['description']);
     294                                        }
     295                                        if (!isset($description['icon'])) {
     296                                                $description['icon'] = 'bloc-24.png';
     297                                        }
    311298                                }
    312                                 if (!isset($description['icon'])) {
    313                                         $description['icon'] = 'bloc-24.png';
    314                                 }
    315                         }
    316                 } elseif (!defined('_DIR_PLUGIN_ZCORE') and in_array($bloc, array('contenu', 'navigation', 'extra'))) {
    317                         // Avec Zpip v1, les blocs sont toujours les mêmes : on en donne une description standard.
    318                         $description = array(
    319                                 'nom' => _T("noizetier:nom_bloc_${bloc}"),
    320                                 'description' => _T("noizetier:description_bloc_${bloc}"),
    321                                 'icon' => "bloc-${bloc}-24.png",
    322                         );
     299                        } elseif (!defined('_DIR_PLUGIN_ZCORE') and in_array($_bloc, array('contenu', 'navigation', 'extra'))) {
     300                                // Avec Zpip v1, les blocs sont toujours les mêmes : on en donne une description standard.
     301                                $description = array(
     302                                        'nom' => _T("noizetier:nom_bloc_${_bloc}"),
     303                                        'description' => _T("noizetier:description_bloc_${_bloc}"),
     304                                        'icon' => "bloc-${_bloc}-24.png",
     305                                );
     306                        } else {
     307                                // Aucune description, on renvoie juste le nom qui coincide avec l'identifiant du bloc
     308                                $description = array('nom' => ucfirst($_bloc));
     309                        }
     310                        // Sauvegarde de la description du bloc pour une consultation ultérieure dans le même hit.
     311                        if ($bloc) {
     312                                $description_bloc[$_bloc] = $description;
     313                        } else {
     314                                $blocs[$_bloc] = $description;
     315                        }
     316                }
     317        }
     318
     319        if ($bloc) {
     320                if (!$information) {
     321                        return $description_bloc[$bloc];
    323322                } else {
    324                         // Aucune description, on renvoie juste le nom qui coincide avec l'identifiant du bloc
    325                         $description = array('nom' => ucfirst($bloc));
    326                 }
    327                 // Sauvegarde de la description du bloc pour une consultation ultérieure dans le même hit.
    328                 $description_bloc[$bloc] = $description;
    329         }
    330 
    331         if (!$information) {
    332                 return $description_bloc[$bloc];
    333         } elseif (isset($description_bloc[$bloc][$information])) {
    334                 return $description_bloc[$bloc][$information];
     323                        return isset($description_bloc[$bloc][$information])
     324                                ? $description_bloc[$bloc][$information]
     325                                : '';
     326                }
    335327        } else {
    336                 return '';
     328                return $blocs;
    337329        }
    338330}
     
    737729 * @return array|string
    738730 *              Si le type et l'id de l'objet sont fournis, on renvoie la description de la page de cet objet.
    739  *              Sinon, on renvoie le tableau de toutes les objets sous la forme [type_objet][id_objet].
     731 *              Sinon, on renvoie le tableau des descriptions des pages de tous les objets indexés par [type_objet][id_objet].
    740732 */
    741733function noizetier_objet_informer($type_objet = '', $id_objet = 0, $information = '') {
     734
    742735        static $objets = null;
    743736        static $description_objet = array();
  • _plugins_/noizetier/trunk/public/noizetier_balises.php

    r104965 r104966  
    3131                $p->code = "noizetier_bloc_informer($bloc, $information)";
    3232        } else {
    33                 $p->code = "noizetier_bloc_repertorier()";
     33                $p->code = "noizetier_bloc_informer()";
    3434        }
    3535
Note: See TracChangeset for help on using the changeset viewer.