Changeset 111677 in spip-zone


Ignore:
Timestamp:
Sep 25, 2018, 5:21:57 PM (7 months ago)
Author:
tcharlss@…
Message:

v1.7.0 : ajout d'une table de liens, passage en declarer_table_objets_sql, et une vraie liste d'objets pour les menus. Quelques soucis de chaînes de langue à régler

Location:
_plugins_/menus/trunk
Files:
10 added
9 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/menus/trunk/base/menus_tables.php

    r99939 r111677  
    66}
    77
     8/**
     9 * Déclaration des alias de tables et filtres automatiques de champs
     10 *
     11 * @pipeline declarer_tables_interfaces
     12 * @param array $interfaces
     13 *     Déclarations d'interface pour le compilateur
     14 * @return array
     15 *     Déclarations d'interface pour le compilateur
     16 */
    817function menus_declarer_tables_interfaces($interface) {
    918        // 'spip_' dans l'index de $tables_principales
     
    1120        $interface['table_des_tables']['menus_entrees']='menus_entrees';
    1221
    13         // Titres
    14         $interface['table_titre']['menus'] = 'titre, "" as lang';
    15 
    1622        return $interface;
    1723}
    1824
    19 function menus_declarer_tables_principales($tables_principales) {
    20         //-- Table menus -----------------------------------------------------------
    21         $menus = array(
    22                 'id_menu' => 'bigint(21) NOT NULL',
    23                 'id_menus_entree' => "bigint(21) DEFAULT '0' NOT NULL",
    24                 'titre' => "text DEFAULT '' NOT NULL",
    25                 'identifiant' => "varchar(255) default '' not null",
    26                 'css' => "tinytext DEFAULT '' NOT NULL"
     25/**
     26 * Déclaration des objets éditoriaux
     27 *
     28 * @pipeline declarer_tables_objets_sql
     29 * @param array $tables
     30 *     Description des tables
     31 * @return array
     32 *     Description complétée des tables
     33 */
     34function menus_declarer_tables_objets_sql($tables) {
     35
     36        // Menus
     37        $tables['spip_menus'] = array(
     38                'type' => 'menu',
     39                'principale' => 'oui',
     40                'field'=> array(
     41                        'id_menu'         => 'bigint(21) NOT NULL',
     42                        'id_menus_entree' => "bigint(21) DEFAULT '0' NOT NULL",
     43                        'titre'           => "text DEFAULT '' NOT NULL",
     44                        'identifiant'     => "varchar(255) default '' not null",
     45                        'css'             => "tinytext DEFAULT '' NOT NULL"
     46                ),
     47                'key' => array(
     48                        'PRIMARY KEY'        => 'id_menu',
     49                        'KEY id_menu_entree' => 'id_menu_entree',
     50                ),
     51                'titre' => 'titre AS titre, "" AS lang',
     52                // 'date' => '',
     53                'champs_editables'  => array('titre', 'identifiant', 'css'),
     54                'champs_versionnes' => array('titre', 'identifiant', 'css'),
     55                'rechercher_champs' => array('titre' => 4),
     56                'tables_jointures'  => array('spip_menus_liens'),
     57                // chaînes de langue
     58                'texte_modifier' => 'menus:icone_modifier_menu',
     59                'texte_creer' => 'menus:icone_creer_menu',
     60                'texte_creer_associer' => 'menus:texte_creer_associer_menu',
     61                'texte_ajouter' => 'menus:texte_ajouter_menu',
     62                'texte_objets' => 'menus:titre_menus',
     63                'texte_objet' => 'menus:titre_menu',
     64                'texte_logo_objet' => 'menus:titre_logo_menu',
     65                'info_aucun_objet' => 'menus:info_aucun_menu',
     66                'info_1_objet' => 'menus:info_1_menu',
     67                'info_nb_objets' => 'menus:info_nb_menus',
    2768        );
    2869
    29         $menus_cles = array(
    30                 'PRIMARY KEY' => 'id_menu',
    31                 'KEY id_menus_entree' => 'id_menus_entree'
     70        // Entrées de menus
     71        $tables['spip_menus'] = array(
     72                'type' => 'menu',
     73                'principale' => '',
     74                'field'=> array(
     75                        'id_menus_entree' => 'bigint(21) NOT NULL',
     76                        'id_menu'         => "bigint(21) DEFAULT '0' NOT NULL",
     77                        'rang'            => "smallint DEFAULT '1' NOT NULL",
     78                        'type_entree'     => "tinytext DEFAULT '' NOT NULL",
     79                        'parametres'      => "text DEFAULT '' NOT NULL"
     80                ),
     81                'key' => array(
     82                        'PRIMARY KEY'     => 'id_menu_entree',
     83                        'KEY id_menu'     => 'id_menu',
     84                ),
     85                // 'titre' => 'titre AS titre, "" AS lang',
     86                // 'date' => '',
     87                'champs_editables'  => array('id_menu', 'rang', 'type_entree', 'parametres'),
     88                'champs_versionnes' => array(),
     89                'rechercher_champs' => array(),
     90                'join'              => array('id_menu' => 'id_menu'),
     91                'tables_jointures'  => array(),
    3292        );
    3393
    34         $tables_principales['spip_menus'] = array(
    35                 'field' => &$menus,
    36                 'key' => &$menus_cles
     94        return $tables;
     95}
     96
     97/**
     98 * Déclaration des tables secondaires (liaisons)
     99 *
     100 * @pipeline declarer_tables_auxiliaires
     101 * @param array $tables
     102 *     Description des tables
     103 * @return array
     104 *     Description complétée des tables
     105 */
     106function menus_declarer_tables_auxiliaires($tables) {
     107
     108        $tables['spip_menus_liens'] = array(
     109                'field' => array(
     110                        'id_menu'            => 'bigint(21) DEFAULT "0" NOT NULL',
     111                        'id_objet'           => 'bigint(21) DEFAULT "0" NOT NULL',
     112                        'objet'              => 'VARCHAR(25) DEFAULT "" NOT NULL',
     113                        'vu'                 => 'VARCHAR(6) DEFAULT "non" NOT NULL',
     114                ),
     115                'key' => array(
     116                        'PRIMARY KEY'        => 'id_menu,id_objet,objet',
     117                        'KEY id_menu'        => 'id_menu',
     118                )
    37119        );
    38120
    39         // Table menus_elements ----------------------------------------------------
    40         $menus_entrees = array(
    41                 'id_menus_entree' => 'bigint(21) NOT NULL',
    42                 'id_menu' => "bigint(21) DEFAULT '0' NOT NULL",
    43                 'rang' => "smallint DEFAULT '1' NOT NULL",
    44                 'type_entree' => "tinytext DEFAULT '' NOT NULL",
    45                 'parametres' => "text DEFAULT '' NOT NULL"
    46         );
    47 
    48         $menus_entrees_cles = array(
    49                 'PRIMARY KEY' => 'id_menus_entree',
    50                 'KEY id_menu' => 'id_menu'
    51         );
    52 
    53         $tables_principales['spip_menus_entrees'] = array(
    54                 'field' => &$menus_entrees,
    55                 'key' => &$menus_entrees_cles
    56         );
    57 
    58         return $tables_principales;
     121        return $tables;
    59122}
  • _plugins_/menus/trunk/formulaires/configurer_menus.php

    r111510 r111677  
    3737                                'defaut' => lire_config('menus/entrees_masquees', array())
    3838                        )
     39                ),
     40                // Objets
     41                array(
     42                        'saisie' => 'choisir_objets',
     43                        'options' => array(
     44                                'nom' => 'objets',
     45                                'label' => _T('menus:configurer_objets_label'),
     46                                'explication' => _T('menus:configurer_objets_explication'),
     47                                'defaut' => lire_config('menus/objets', array()),
     48                        )
    3949                )
    4050        );
  • _plugins_/menus/trunk/formulaires/editer_menu.php

    r102462 r111677  
    88include_spip('inc/editer');
    99
    10 function formulaires_editer_menu_charger($id_menu, $nouveau) {
     10/**
     11 * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
     12 *
     13 * @param int|string $id_menu
     14 *     Identifiant du menu. 'new' pour un nouveau menu.
     15 * @param string $retour
     16 *     URL de redirection après le traitement
     17 * @param string $associer_objet
     18 *     Éventuel `objet|x` indiquant de lier le menu créé à cet objet,
     19 *     tel que `article|3`
     20 * @param int $lier_trad
     21 *     Identifiant éventuel d'un menu source d'une traduction
     22 * @param string $config_fonc
     23 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     24 * @param array $row
     25 *     Valeurs de la ligne SQL du menu, si connu
     26 * @param string $hidden
     27 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     28 * @return string
     29 *     Hash du formulaire
     30 */
     31function formulaires_editer_menu_identifier_dist($id_menu = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
     32        return serialize(array(intval($id_menu), $associer_objet));
     33}
     34
     35/**
     36 * Chargement du formulaire d'édition de menu
     37 *
     38 * Déclarer les champs postés et y intégrer les valeurs par défaut
     39 *
     40 * @uses formulaires_editer_objet_charger()
     41 *
     42 * @param int|string $id_menu
     43 *     Identifiant du menu. 'new' pour un nouveau menu.
     44 * @param string $retour
     45 *     URL de redirection après le traitement
     46 * @param string $associer_objet
     47 *     Éventuel `objet|x` indiquant de lier le menu créé à cet objet,
     48 *     tel que `article|3`
     49 * @param int $lier_trad
     50 *     Identifiant éventuel d'un menu source d'une traduction
     51 * @param string $config_fonc
     52 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     53 * @param array $row
     54 *     Valeurs de la ligne SQL du menu, si connu
     55 * @param string $hidden
     56 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     57 * @return array
     58 *     Environnement du formulaire
     59 */
     60function formulaires_editer_menu_charger($id_menu = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
    1161        include_spip('base/abstract_sql');
    1262        include_spip('inc/autoriser');
     
    1666        // Seulement si on a le droit de modifier les menus
    1767        if (autoriser('modifier', 'menu')) {
    18                 $nouveau = ($nouveau == 'oui') ? true : false;
     68                $nouveau = intval($id_menu) ? false : true;
    1969                $id_menu = intval($id_menu) ? intval($id_menu) : false;
    2070
    2171                // Si on demande un id_menu
    22                 if ($id_menu) {
     72                if ($id_menu and !$nouveau) {
    2373                        // On désactive de toute façon le nouveau
    2474                        $nouveau = false;
     
    74124}
    75125
    76 function formulaires_editer_menu_verifier($id_menu, $nouveau) {
     126/**
     127 * Vérifications du formulaire d'édition de menu
     128 *
     129 * Vérifier les champs postés et signaler d'éventuelles erreurs
     130 *
     131 * @uses formulaires_editer_objet_verifier()
     132 *
     133 * @param int|string $id_menu
     134 *     Identifiant du menu. 'new' pour un nouveau menu.
     135 * @param string $retour
     136 *     URL de redirection après le traitement
     137 * @param string $associer_objet
     138 *     Éventuel `objet|x` indiquant de lier le menu créé à cet objet,
     139 *     tel que `article|3`
     140 * @param int $lier_trad
     141 *     Identifiant éventuel d'un menu source d'une traduction
     142 * @param string $config_fonc
     143 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     144 * @param array $row
     145 *     Valeurs de la ligne SQL du menu, si connu
     146 * @param string $hidden
     147 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     148 * @return array
     149 *     Tableau des erreurs
     150 */
     151function formulaires_editer_menu_verifier($id_menu = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
    77152        include_spip('base/abstract_sql');
    78153        $erreurs = array();
     
    106181}
    107182
    108 function formulaires_editer_menu_traiter($id_menu, $nouveau) {
    109         $res = formulaires_editer_objet_traiter('menu', $id_menu, 0, 0, '', '', array(), '');
     183/**
     184 * Traitement du formulaire d'édition de menu
     185 *
     186 * Traiter les champs postés
     187 *
     188 * @uses formulaires_editer_objet_traiter()
     189 *
     190 * @param int|string $id_menu
     191 *     Identifiant du menu. 'new' pour un nouveau menu.
     192 * @param string $retour
     193 *     URL de redirection après le traitement
     194 * @param string $associer_objet
     195 *     Éventuel `objet|x` indiquant de lier le menu créé à cet objet,
     196 *     tel que `article|3`
     197 * @param int $lier_trad
     198 *     Identifiant éventuel d'un menu source d'une traduction
     199 * @param string $config_fonc
     200 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     201 * @param array $row
     202 *     Valeurs de la ligne SQL du menu, si connu
     203 * @param string $hidden
     204 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     205 * @return array
     206 *     Retours des traitements
     207 */
     208function formulaires_editer_menu_traiter($id_menu = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
     209        $res = formulaires_editer_objet_traiter('menu', $id_menu, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
    110210
    111211        // Si ça va pas on errorise
     
    118218                }
    119219        }
     220
     221        // Un lien a prendre en compte ?
     222        if ($associer_objet and $id_menu = $res['id_menu']) {
     223                list($objet, $id_objet) = explode('|', $associer_objet);
     224
     225                if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
     226                        include_spip('action/editer_liens');
     227                       
     228                        objet_associer(array('menu' => $id_menu), array($objet => $id_objet));
     229                       
     230                        if (isset($retours['redirect'])) {
     231                                $retours['redirect'] = parametre_url($retours['redirect'], 'id_lien_ajoute', $id_menu, '&');
     232                        }
     233                }
     234        }
     235
    120236        // Dans tous les cas le formulaire est toujours éditable
    121237        $res['editable'] = true;
  • _plugins_/menus/trunk/inc/menus_autoriser.php

    r99941 r111677  
    2020        return autoriser('modifier', 'menu', $id, $qui, $opt);
    2121}
     22
     23
     24/**
     25 * Autorisation de lier/délier l'élément (menus)
     26 *
     27 * @param  string $faire Action demandée
     28 * @param  string $type  Type d'objet sur lequel appliquer l'action
     29 * @param  int    $id    Identifiant de l'objet
     30 * @param  array  $qui   Description de l'auteur demandant l'autorisation
     31 * @param  array  $opt   Options de cette autorisation
     32 * @return bool          true s'il a le droit, false sinon
     33**/
     34function autoriser_associermenus_dist($faire, $type, $id, $qui, $opt) {
     35        return $qui['statut'] == '0minirezo' and !$qui['restreint'];
     36}
  • _plugins_/menus/trunk/lang/menus_fr.php

    r111361 r111677  
    88$GLOBALS[$GLOBALS['idx_lang']] = array(
    99
     10        // A
     11        'ajouter_lien_menu' => 'Ajouter ce menu',
     12
    1013        // C
    1114        'configurer_entrees_masquees_explication' => 'Cochez les entrées que vous souhaitez <strong>masquer</strong> lors de la création d’un menu.',
    1215        'configurer_titre' => 'Configurer les entrées du plugin Menus',
     16        'configurer_objets_label' => 'Contenus liés',
     17        'configurer_objets_explication' => 'Choisissez les contenus auxquels on peut associer des menus',
    1318        'confirmer_supprimer_entree' => 'Voulez-vous vraiment supprimer cette entrée ?',
    1419        'confirmer_supprimer_sous_menu' => 'Voulez-vous vraiment supprimer ce sous-menu ?',
     
    144149        'info_tri_articles' => 'Tri des articles :',
    145150        'info_tri_num' => '(numérique)',
     151        'info_1_menu' => 'Un menu',
     152        'info_aucun_menu' => 'Aucun menu',
     153        'info_nb_menus' => '@nb@ menus',
    146154
    147155        // N
     
    166174        'nom_menu_texte_libre' => 'Texte libre',
    167175
     176        // R
     177        'retirer_lien_menu' => 'Retirer ce menu',
     178        'retirer_tous_liens_menus' => 'Retirer tous les menus',
     179        'retirer_lien_objet' => 'Dissocier',
     180
    168181        // T
    169182        'tous_les_articles' => '... Tous les articles',
    170183        'toutes_les_rubriques' => '... Toutes les rubriques',
     184        'texte_ajouter_menu' => 'Ajouter un menu',
     185        'texte_creer_associer_menu' => 'Créer et associer un menu',
     186        'titre_objets_lies_menu' => 'Liés à ce menu',
    171187
    172188        // U
     
    174190        'utiles_generer_menu' => 'Créer le menu <strong>@titre@ (<em>@identifiant@</em>)</strong>',
    175191        'utiles_generer_menus' => 'Créer <strong>tous</strong> les menus utiles',
    176         'utiles_titre' => 'Menus utiles'
     192        'utiles_titre' => 'Menus utiles',
    177193);
  • _plugins_/menus/trunk/menus_administrations.php

    r99942 r111677  
    4040        $maj['0.5.3'] = array(
    4141                array('menus_fusionne_critere_tri_num_alpha'),
     42        );
     43        // Ajout table de liens (où est passé le 0.5.4 ?)
     44        $maj['0.5.5'] = array(
     45                array('maj_tables', array('spip_menus_liens')),
    4246        );
    4347
     
    149153        sql_drop_table('spip_menus');
    150154        sql_drop_table('spip_menus_entrees');
     155        sql_drop_table('spip_menus_liens');
    151156
    152157        // On efface la version enregistrée
  • _plugins_/menus/trunk/menus_pipelines.php

    r99942 r111677  
    3333        return $array;
    3434}
     35
     36/**
     37 * Ajout de contenu sur certaines pages,
     38 * notamment des formulaires de liaisons entre objets
     39 *
     40 * @pipeline affiche_milieu
     41 * @param  array $flux Données du pipeline
     42 * @return array       Données du pipeline
     43 */
     44function menus_affiche_milieu($flux) {
     45        $texte = '';
     46        $e = trouver_objet_exec($flux['args']['exec']);
     47        include_spip('inf/config');
     48
     49        // Menus sur les objets configurés
     50        if (
     51                !$e['edition']
     52                and in_array($e['table_objet_sql'], lire_config('menus/objets', array()))
     53        ) {
     54                $texte .= recuperer_fond('prive/objets/editer/liens', array(
     55                        'table_source' => 'menus',
     56                        'objet' => $e['type'],
     57                        'id_objet' => $flux['args'][$e['id_table_objet']]
     58                ));
     59        }
     60
     61        if ($texte) {
     62                if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
     63                        $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
     64                } else {
     65                        $flux['data'] .= $texte;
     66                }
     67        }
     68
     69        return $flux;
     70}
     71
     72/**
     73 * Optimiser la base de données
     74 *
     75 * Supprime les liens orphelins de l'objet vers quelqu'un et de quelqu'un vers l'objet.
     76 *
     77 * @pipeline optimiser_base_disparus
     78 * @param  array $flux Données du pipeline
     79 * @return array       Données du pipeline
     80 */
     81function menus_optimiser_base_disparus($flux) {
     82
     83        include_spip('action/editer_liens');
     84        $flux['data'] += objet_optimiser_liens(array('menu'=>'*'), '*');
     85
     86        return $flux;
     87}
  • _plugins_/menus/trunk/paquet.xml

    r111353 r111677  
    22        prefix="menus"
    33        categorie="navigation"
    4         version="1.6.14"
     4        version="1.7.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
    77        logo="prive/themes/spip/images/menu-32.png"
    88        documentation="https://contrib.spip.net/Menus-3139"
    9         schema="0.5.4"
     9        schema="0.5.5"
    1010>
    1111        <nom>Menus</nom>
     
    1717        <traduire module="menus" reference="fr" gestionnaire="salvatore" />
    1818
    19         <pipeline nom="declarer_tables_principales" inclure="base/menus_tables.php" />
     19        <menu nom="configurer_ndk_squelettes" titre="ndk_squelettes:cfg_titre_menu" parent="menu_squelette" icone="images/config-16.png" />
     20
     21        <pipeline nom="declarer_tables_objets_sql" inclure="base/menus_tables.php" />
    2022        <pipeline nom="declarer_tables_interfaces" inclure="base/menus_tables.php" />
     23        <pipeline nom="declarer_tables_auxiliaires" inclure="base/menus_tables.php" />
    2124        <pipeline nom="header_prive" inclure="menus_pipelines.php" />
    2225        <pipeline nom="pre_boucle" inclure="menus_pipelines.php" />
     
    2629        <pipeline nom="ieconfig" inclure="menus_ieconfig.php" />
    2730        <pipeline nom="ieconfig_metas" inclure="menus_ieconfig.php" />
     31        <pipeline nom="affiche_milieu" inclure="menus_pipelines.php" />
     32        <pipeline nom="optimiser_base_disparus" inclure="menus_pipelines.php" />
    2833       
    2934        <!-- Déclaration des pipelines du plugin -->
  • _plugins_/menus/trunk/prive/squelettes/contenu/menu_edit.html

    r111676 r111677  
    22<div class="cadre-formulaire-editer">
    33        <div class="entete-formulaire">
    4                 [(#URL_ECRIRE{menus_tous}|icone_verticale{<:retour:>,menus-24,'',left})]
     4                [(#ENV{redirect,#URL_ECRIRE{menus_tous}}|icone_verticale{<:retour:>,menus-24,'',left})]
    55                <:menus:formulaire_modifier_menu:>
    66                <h1>
     
    88                        #TITRE
    99                        </BOUCLE_menu>
    10                         [(#ENV{nouveau}|=={oui}|?{<:menus:formulaire_nouveau:>,#VAL{id_menu}|_request})]
     10                        [(#ENV{id_menu}|=={new}|?{<:menus:formulaire_nouveau:>,#VAL{id_menu}|_request})]
    1111                        <//B_menu>
    1212                </h1>
    1313        </div>
    14         #FORMULAIRE_EDITER_MENU{#ENV{id_menu,0}, #ENV{nouveau,''}}
     14        #FORMULAIRE_EDITER_MENU{#ENV{id_menu,''},#ENV{redirect},#ENV{associer_objet}}
    1515        [(#ENV{id_menu,0}|intval|oui)
    1616                <div class="ajax">#FORMULAIRE_EDITER_MENUS_ENTREE{#ENV{id_menu}}</div>
  • _plugins_/menus/trunk/prive/squelettes/contenu/menus_tous.html

    r96447 r111677  
    55<B_menus_principaux>
    66<ul class="liste_items">
    7         <BOUCLE_menus_principaux(MENUS){par titre}>
     7        <BOUCLE_menus_principaux(MENUS){par titre}{si #GET{old}}>
    88        <li class="item">#SET{auth,#AUTORISER{modifier,menu,#ID_MENU}}
    9                 [(#GET{auth}|oui)<a href="[(#URL_ECRIRE{menus_editer,id_menu=#ID_MENU})]">]#TITRE (#IDENTIFIANT)[(#GET{auth}|oui)</a>]
     9                [(#GET{auth}|oui)<a href="[(#URL_ECRIRE{menu_edit,id_menu=#ID_MENU})]">]#TITRE (#IDENTIFIANT)[(#GET{auth}|oui)</a>]
    1010                <p class="actions">
    11                         [(#AUTORISER{modifier,menu,#ID_MENU})   <span class="lien_modifier">&#91;<a href="[(#URL_ECRIRE{menus_editer,id_menu=#ID_MENU})]"><:menus:editer_menus_editer:></a>&#93;</span>]
     11                        [(#AUTORISER{modifier,menu,#ID_MENU})   <span class="lien_modifier">&#91;<a href="[(#URL_ECRIRE{menu_edit,id_menu=#ID_MENU})]"><:menus:editer_menus_editer:></a>&#93;</span>]
    1212                </p>
    1313        </li>
     
    1515</ul>
    1616</B_menus_principaux>
     17<INCLURE{fond=prive/objets/liste/menus}, env />
    1718
    18 [(#URL_ECRIRE{menus_editer}|parametre_url{nouveau,oui}|icone_verticale{<:menus:editer_menus_nouveau:>,menus-24.png,new,right})]
     19[(#URL_ECRIRE{menu_edit}|parametre_url{new,oui}|icone_verticale{<:menus:editer_menus_nouveau:>,menus-24.png,new,right})]
    1920
    2021<div class="nettoyeur"></div>
Note: See TracChangeset for help on using the changeset viewer.