Ignore:
Timestamp:
Feb 24, 2013, 4:38:48 PM (8 years ago)
Author:
gildas.cotomale@…
Message:

réécriture de r70109 pour que les plugins SPIP 3 n'aient pas à se déclarer dans un pipeline de plus mais soient pris en compte automatiquement (comme pour les documents et les mots clés)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/coordonnees/trunk/coordonnees_pipelines.php

    r70109 r70154  
    1313**/
    1414function liste_objets_coordonnees($quoi = '') {
    15         $liste = array(
    16                 'auteur'       => array('titre'=>_T('ecrire:info_auteurs'),      'exec'=>'auteur_infos'),
    17                 'article'      => array('titre'=>_T('ecrire:info_articles_2'),     'exec'=>'articles'),
    18                 'rubrique'     => array('titre'=>_T('ecrire:info_rubriques'),    'exec'=>'naviguer'),
    19                 'breve'        => array('titre'=>_T('breves:breves'),    'exec'=>'breves_edit'),
    20                 'site'         => array('titre'=>_T('sites:titre_page_sites_tous'),    'exec'=>'sites'),
    21         );
    22 #       if ( test_plugin_actif('AGENDA') ) // Agenda 2
    23 #               $liste['evenement'] = array('titre'=>_T('agenda:evenements'),    'exec'=>'evenements_edit'); // ca marche, mais comme les evenements sont obligatoirement lies a un article et qu'ils ont des repetitions, il vaut mieux lier le contact directement a l'article
    24         if ( test_plugin_actif('CONTACTS') ) { // Contacts & Organisations
    25                 $liste['contact'] = array('titre'=>_T('contacts:bouton_contacts'),     'exec'=>'contact');
    26                 $liste['organisation'] = array('titre'=>_T('contacts:bouton_organisations'),'exec'=>'organisation');
     15
     16        $liste = lister_tables_objets_sql(); // tableau de donnees de TOUTES les tables...
     17        $deliste = array('spip_adresses', 'spip_emails','spip_numeros', 'spip_pays', 'spip_documents', 'spip_messages'); // ...donc on retire ceux du plugin coordonnees ! ...ainsi que ceux de : pays requis (revoir sa declaration pour ne pas avoir a faire ceci), documents (comme pays n'a pas de page de vue) et messages (ca fait etrange, tout comme les mots-cles et groupes de mots-cles...)
     18        for($i=0; $i<6; $i++) {
     19                // http://stackoverflow.com/questions/12633877/how-to-unset-multiple-variables
     20                unset($liste[$deliste[$i]]);
     21        } /// @ToDo: on peut passer directement la liste a unset a partir de PHP 4.0.1
     22        foreach ($liste as $tab=>$inf) {
     23                if (!$liste[$tab]['principale'] OR !$liste[$tab]['editable']) {
     24                        // on ne prendra pas en compte les objets non editables...
     25                        // (ceci vire donc spip_forum spip_petitions spip_signatures spip_syndic_articles spip_depots spip_plugins spip_paquets etc.)
     26                        unset($liste[$tab]);
     27                } else {
     28                        $type = $liste[$tab]['type'];
     29                        $liste[$type] = $liste[$tab]; // le plugin-ci utilise comme cle le type d'objet alors que le tableau renvoye a comme cle le nom de table, donc on recree l'entree...
     30                        unset($liste[$tab]); // ...et on supprime l'ancienne entree histoire de ne pas allourdir le tableau en memoire
     31                        $liste[$type]['titre'] = _T($liste[$type]['texte_objet']); // on rajoute le titre traduit pour etre affiche par la configuration (je ne sais pas utiliser directement "texte_objet")
     32                }
    2733        }
    28 
    29         $liste = pipeline('objets_coordonnables', $liste);
    3034
    3135        if (!$quoi) {
     
    4448/**
    4549 * Ajout des informations de coordonnées (adresses, mails, numéros)
    46  * sur la page de visualisation d'un auteur
     50 * sur la page de visualisation d'un objet
    4751**/
    4852function coordonnees_affiche_milieu($flux) {
     
    5155
    5256
    53                 $objet_exec = trouver_objet_exec($exec);
     57        $objet_exec = trouver_objet_exec($exec);
    5458
    55                 // pas en édition
    56                 if ($objet_exec['edition']) {
    57                         return $flux;
    58                 }
     59        // pas en édition
     60        if ($objet_exec['edition']) {
     61                return $flux;
     62        }
    5963
    60                 // recuperation de l'id
    61                 $_id = $objet_exec['id_table_objet'];
    62                 // type d'objet
    63                 $type = $objet_exec['type'];
    64 
    65 
    66 
    67         $liste = liste_objets_coordonnees('exec');
    68         $ok = false;
     64        // recuperation de l'id
     65        $_id = $objet_exec['id_table_objet'];
     66        // type d'objet
     67        $type = $objet_exec['type'];
     68        // liste des exec de visualisation pour les objets declares
     69        $liste = liste_objets_coordonnees('url_voir');
    6970
    7071        if (isset($type) and isset($liste[$type])){
Note: See TracChangeset for help on using the changeset viewer.