Changeset 110333 in spip-zone


Ignore:
Timestamp:
May 21, 2018, 9:40:23 AM (4 weeks ago)
Author:
eric@…
Message:

Renommage dans l'API des blocs.
Mise au point de l'API des objets.
Correction des fonctions réversibles de composition/décomposition des conteneurs pour le cas des objets.

Location:
_plugins_/noizetier/trunk
Files:
7 edited

Legend:

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

    r110112 r110333  
    1414        // Injecter les objets exclus
    1515        include_spip('inc/noizetier_objet');
    16         $valeurs['_objets_exclus'] = noizetier_objet_lister_exclusions();
     16        $valeurs['_objets_exclus'] = lister_objets_exclus();
    1717
    1818        $valeurs['editable'] = true;
     
    4848        return $retour;
    4949}
     50
     51
     52/**
     53 * Renvoie la liste des types d'objet ne pouvant pas être personnalisés car ne possédant pas
     54 * de page détectable par le noiZetier.
     55 *
     56 * @api
     57 *
     58 * @return array|null
     59 */
     60function lister_objets_exclus() {
     61
     62        static $exclusions = null;
     63
     64        if (is_null($exclusions)) {
     65                $exclusions = array();
     66                include_spip('base/objets');
     67
     68                // On récupère les tables d'objets sous la forme spip_xxxx.
     69                $tables = lister_tables_objets_sql();
     70                $tables = array_keys($tables);
     71
     72                // On récupère la liste des pages disponibles et on transforme le type d'objet en table SQL.
     73                $where = array('composition=' . sql_quote(''), 'est_page_objet=' . sql_quote('oui'));
     74                $pages = sql_allfetsel('type', 'spip_noizetier_pages', $where);
     75                $pages = array_map('reset', $pages);
     76                $pages = array_map('table_objet_sql', $pages);
     77
     78                // On exclut donc les tables qui ne sont pas dans la liste issues des pages.
     79                $exclusions = array_diff($tables, $pages);
     80        }
     81
     82        return $exclusions;
     83}
  • _plugins_/noizetier/trunk/formulaires/editer_page.php

    r110321 r110333  
    9191                // Ainsi cette liste est toujours l'inverse de l'index [blocs] de l'argument $description_page.
    9292                include_spip('inc/noizetier_bloc');
    93                 $blocs = noizetier_bloc_defaut();
     93                $blocs = noizetier_bloc_lister_defaut();
    9494                foreach ($blocs as $_bloc) {
    9595                        $valeurs['_blocs'][$_bloc] = noizetier_bloc_lire($_bloc, 'nom');
  • _plugins_/noizetier/trunk/inc/noizetier_bloc.php

    r110112 r110333  
    1818 * @return array
    1919 */
    20 function noizetier_bloc_defaut() {
     20function noizetier_bloc_lister_defaut() {
    2121
    2222        // Stocker la liste des blocs par défaut pour éviter le recalcul sur le même hit.
     
    6060        $retour = $information ? '' : array();
    6161
    62         if (in_array($bloc, noizetier_bloc_defaut())) {
     62        if (in_array($bloc, noizetier_bloc_lister_defaut())) {
    6363                if (!isset($description_bloc[$bloc])) {
    6464                        if ($fichier = find_in_path("${bloc}/bloc.yaml")) {
  • _plugins_/noizetier/trunk/inc/noizetier_conteneur.php

    r110320 r110333  
    4444                        $conteneur['objet'] = $page_ou_objet['objet'];
    4545                        $conteneur['id_objet'] = $page_ou_objet['id_objet'];
    46                         $conteneur['squelette'] = "${bloc}";
     46                        $conteneur['squelette'] = "${bloc}/{$page_ou_objet['objet']}";
    4747                }
    4848                else {
     
    102102                        $conteneur['id_noisette'] = intval($elements[2]);
    103103                        // -- le squelette
     104                        // TODO : revoir l'intérêt voire la cohérence de ce champ
    104105                        include_spip('ncore/noizetier');
    105106                        $conteneur['squelette'] = type_noisette_localiser('noizetier', $conteneur['type_noisette']);
     
    125126                        $conteneur['objet'] = $elements[1];
    126127                        $conteneur['id_objet'] = $elements[2];
     128                        // -- le squelette
     129                        $conteneur['squelette'] = $elements[0];
    127130                        // -- le bloc
    128                         $conteneur['bloc'] = $elements[0];
    129                         // -- le squelette
    130                         $conteneur['squelette'] = $conteneur['bloc'] . '/' . $conteneur['objet'];
     131                        list($bloc, ) = explode('/', $conteneur['squelette']);
     132                        $conteneur['bloc'] = $bloc;
    131133                }
    132134        }
  • _plugins_/noizetier/trunk/inc/noizetier_objet.php

    r110321 r110333  
    140140
    141141/**
    142  * Renvoie la liste des types d'objet ne pouvant pas être personnalisés car ne possédant pas
    143  * de page détectable par le noiZetier.
    144  *
    145  * @api
    146  *
    147  * @return array|null
    148  */
    149 function noizetier_objet_lister_exclusions() {
    150 
    151         static $exclusions = null;
    152 
    153         if (is_null($exclusions)) {
    154                 $exclusions = array();
    155                 include_spip('base/objets');
    156 
    157                 // On récupère les tables d'objets sous la forme spip_xxxx.
    158                 $tables = lister_tables_objets_sql();
    159                 $tables = array_keys($tables);
    160 
    161                 // On récupère la liste des pages disponibles et on transforme le type d'objet en table SQL.
    162                 $where = array('composition=' . sql_quote(''), 'est_page_objet=' . sql_quote('oui'));
    163                 $pages = sql_allfetsel('type', 'spip_noizetier_pages', $where);
    164                 $pages = array_map('reset', $pages);
    165                 $pages = array_map('table_objet_sql', $pages);
    166 
    167                 // On exclut donc les tables qui ne sont pas dans la liste issues des pages.
    168                 $exclusions = array_diff($tables, $pages);
    169         }
    170 
    171         return $exclusions;
    172 }
    173 
    174 /**
    175142 * Détermine si un type d'objet est activé dans la configuration du noiZetier.
    176143 * Si oui, ses objets peuvent recevoir une configuration de noisettes.
  • _plugins_/noizetier/trunk/inc/noizetier_page.php

    r110320 r110333  
    2525        // Initialiser les blocs par défaut
    2626        include_spip('inc/noizetier_bloc');
    27         $options['blocs_defaut'] = noizetier_bloc_defaut();
     27        $options['blocs_defaut'] = noizetier_bloc_lister_defaut();
    2828
    2929        // Choisir le bon répertoire des pages
     
    159159 * @api
    160160 *
    161  * @uses noizetier_bloc_defaut()
     161 * @uses noizetier_bloc_lister_defaut()
    162162 *
    163163 * @param string        $page
     
    217217        // Initialisation des blocs avec la liste des blocs par défaut
    218218        include_spip('inc/noizetier_bloc');
    219         $blocs = noizetier_bloc_defaut();
     219        $blocs = noizetier_bloc_lister_defaut();
    220220
    221221        // Si la liste des blocs exclus n'a pas été passé en argument on les cherche dans la configuration
     
    374374 *
    375375 * @uses noizetier_page_initialiser_dossier()
    376  * @uses noizetier_bloc_defaut()
     376 * @uses noizetier_bloc_lister_defaut()
    377377 *
    378378 * @param       $page
     
    394394        if (empty($options['blocs_defaut'])) {
    395395                include_spip('inc/noizetier_bloc');
    396                 $options['blocs_defaut'] = noizetier_bloc_defaut();
     396                $options['blocs_defaut'] = noizetier_bloc_lister_defaut();
    397397        }
    398398
  • _plugins_/noizetier/trunk/ncore/noizetier.php

    r110247 r110333  
    285285                        // -- si le conteneur n'est pas une noisette, le complément se déduit du conteneur lui-même.
    286286                        if (!empty($conteneur['squelette'])) {
    287                                 $squelette = strtolower($conteneur['squelette']);
    288 
    289287                                if (!empty($conteneur['objet']) and !empty($conteneur['id_objet']) and ($id = intval($conteneur['id_objet']))) {
    290288                                        // Objet
    291289                                        $complement['objet'] = $conteneur['objet'];
    292290                                        $complement['id_objet'] = $id;
    293                                         $complement['bloc'] = $conteneur['squelette'];
     291                                        $complement['bloc'] = $conteneur['bloc'];
    294292                                } else {
     293                                        $squelette = strtolower($conteneur['squelette']);
    295294                                        $page = basename($squelette);
    296295                                        $identifiants_page = explode('-', $page, 2);
     
    303302                                                $complement['type'] = $identifiants_page[0];
    304303                                        }
    305                                         $bloc = dirname($squelette);
    306                                         if ($bloc != '.') {
    307                                                 $complement['bloc'] = basename($bloc);
    308                                         }
     304                                        $complement['bloc'] = $conteneur['bloc'];
    309305                                }
    310306                        }
Note: See TracChangeset for help on using the changeset viewer.