Changeset 59951 in spip-zone for _plugins_/compositions


Ignore:
Timestamp:
Mar 31, 2012, 1:42:44 PM (7 years ago)
Author:
cy_altern@…
Message:

ajout de l'heritage pour les mots depuis leur groupe:

  • fichiers de compo pour le groupe: groupe_mots-machin.xml et groupe_mots-machin.html
  • balise pour l'heritage dans le xml: <branche type="mot" composition="truc" />
File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/compositions/trunk/compositions_fonctions.php

    r57699 r59951  
    252252                if (isset($desc['field']['id_rubrique']))
    253253                        $select .= "," . (($type == 'rubrique') ? 'id_parent' : 'id_rubrique as id_parent');
     254                if (isset($desc['field']['id_groupe']))
     255                        $select .= "," . 'id_groupe as id_parent';
    254256                $row = sql_fetsel($select, $table_sql, "$_id_table=".intval($id), '', '', '', '', $serveur);
    255257                if ($row['composition'] != '')
     
    265267/**
    266268 * Renvoie la composition heritee par un objet selon sa rubrique
     269 * ou son groupe de mot-cles
    267270 *
    268271 * @param string $type
     
    277280        $id_parent = $id_rubrique;
    278281        $compo_rubrique = '';
    279         do {
    280                 $row = sql_fetsel(array('id_parent','composition'),'spip_rubriques','id_rubrique='.intval($id_parent),'','','','',$serveur);
     282        if (in_array($type, array('article', 'rubrique', 'site'))) {
     283                do {
     284                        $row = sql_fetsel(array('id_parent','composition'),'spip_rubriques','id_rubrique='.intval($id_parent),'','','','',$serveur);
     285                        if (strlen($row['composition']) AND $row['composition']!='-')
     286                                $compo_rubrique = $row['composition'];
     287                        elseif (strlen($row['composition'])==0) // il faut aussi verifier que la rub parente n'herite pas elle-meme d'une composition
     288                                $compo_rubrique = compositions_determiner('rubrique', $id_parent, $serveur='');
     289                       
     290                        if (strlen($compo_rubrique) AND is_null($infos))
     291                                $infos = compositions_lister_disponibles('rubrique');
     292                }
     293                while ($id_parent = $row['id_parent']
     294                        AND
     295                        (!strlen($compo_rubrique) OR !isset($infos['rubrique'][$compo_rubrique]['branche'][$type])));
     296
     297                if (strlen($compo_rubrique) AND isset($infos['rubrique'][$compo_rubrique]['branche'][$type]))
     298                        return $infos['rubrique'][$compo_rubrique]['branche'][$type];
     299        }
     300        elseif ($type == 'mot') {
     301                $row = sql_fetsel(array('composition'),'spip_groupes_mots','id_groupe='.intval($id_parent),'','','','',$serveur);
    281302                if (strlen($row['composition']) AND $row['composition']!='-')
    282                         $compo_rubrique = $row['composition'];
    283                 elseif (strlen($row['composition'])==0) // il faut aussi verifier que la rub parente n'herite pas elle-meme d'une composition
    284                         $compo_rubrique = compositions_determiner('rubrique', $id_parent, $serveur='');
    285                
    286                 if (strlen($compo_rubrique) AND is_null($infos))
    287                         $infos = compositions_lister_disponibles('rubrique');
    288         }
    289         while ($id_parent = $row['id_parent']
    290                 AND
    291                 (!strlen($compo_rubrique) OR !isset($infos['rubrique'][$compo_rubrique]['branche'][$type])));
    292 
    293         if (strlen($compo_rubrique) AND isset($infos['rubrique'][$compo_rubrique]['branche'][$type]))
    294                 return $infos['rubrique'][$compo_rubrique]['branche'][$type];
     303                        $compo_groupe = $row['composition'];
     304                       
     305                if (strlen($compo_groupe) AND is_null($infos))
     306                        $infos = compositions_lister_disponibles('groupe_mots');
     307
     308                if (strlen($compo_groupe) AND isset($infos['groupe_mots'][$compo_groupe]['branche'][$type])) {
     309                        return $infos['groupe_mots'][$compo_groupe]['branche'][$type];  }       
     310        }
    295311
    296312        return '';
Note: See TracChangeset for help on using the changeset viewer.