Subversion Repositories Applications.papyrus

Rev

Rev 52 | Rev 154 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 52 Rev 151
Line 1... Line 1...
1
<?php
1
    <?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
3
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
Line 17... Line 17...
17
// |                                                                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
21
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: menu.php,v 1.7 2004-09-23 14:31:40 jpm Exp $
22
// CVS : $Id: menu.php,v 1.8 2004-11-10 18:59:21 jpm Exp $
23
/**
23
/**
24
* Applette : menu
24
* Applette : menu
25
*
25
*
26
* Génère une liste de listes comportant tous les niveaux des menus "classiques" d'un site.
26
* Génère une liste de listes comportant tous les niveaux des menus "classiques" d'un site.
27
* Nécessite :
27
* Nécessite :
Line 36... Line 36...
36
//Auteur original :
36
//Auteur original :
37
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
37
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
38
//Autres auteurs :
38
//Autres auteurs :
39
*@author        Aucun
39
*@author        Aucun
40
*@copyright     Tela-Botanica 2000-2004
40
*@copyright     Tela-Botanica 2000-2004
41
*@version       $Revision: 1.7 $ $Date: 2004-09-23 14:31:40 $
41
*@version       $Revision: 1.8 $ $Date: 2004-11-10 18:59:21 $
42
// +------------------------------------------------------------------------------------------------------+
42
// +------------------------------------------------------------------------------------------------------+
43
*/
43
*/
Line 44... Line 44...
44
 
44
 
45
// +------------------------------------------------------------------------------------------------------+
45
// +------------------------------------------------------------------------------------------------------+
46
// |                                            ENTÊTE du PROGRAMME                                       |
46
// |                                            ENTÊTE du PROGRAMME                                       |
Line 47... Line 47...
47
// +------------------------------------------------------------------------------------------------------+
47
// +------------------------------------------------------------------------------------------------------+
Line 48... Line 48...
48
 
48
 
49
require_once "papyrus/bibliotheque/fonctions/pap_menu.fonct.php" ;
49
require_once 'papyrus/bibliotheque/fonctions/pap_menu.fonct.php';
Line 50... Line 50...
50
 
50
 
51
$_GEN_commun['info_applette_nom_fonction'] = 'afficherMenuNiveauMultiple';
51
$_GEN_commun['info_applette_nom_fonction'] = 'afficherMenuNiveauMultiple';
52
$_GEN_commun['info_applette_balise'] = 'MENU_([0-9])_([0-9])';
52
$_GEN_commun['info_applette_balise'] = 'PAPYRUS_MENU_?(?:(|CLASSIQUE|COMMUN)_([0-9])_([0-9])|(UNIQUE)_([0-9]))';
Line 83... Line 83...
83
    }
83
    }
84
    $indent_origine = 12;// Indentation de départ en nombre d'espace
84
    $indent_origine = 12;// Indentation de départ en nombre d'espace
85
    $indent_pas     = 4;// Pas d'indentation en nombre d'espace
85
    $indent_pas     = 4;// Pas d'indentation en nombre d'espace
Line 86... Line 86...
86
    
86
    
-
 
87
    // Récupérations des arguments passés dans la balise.
-
 
88
    // Pour les menus CLASSIQUE et COMMUN
-
 
89
    $balise           = $tab_applette_arguments[1];
87
    // Récupérations des arguments passés dans la balise.
90
    $menu_type        = $tab_applette_arguments[2];
88
    $niveau_depart = $tab_applette_arguments[2];
91
    $niveau_depart    = $tab_applette_arguments[3];
-
 
92
    $profondeur       = $tab_applette_arguments[4];
-
 
93
    // Pour les menus UNIQUE
-
 
94
    if (isset($tab_applette_arguments[5])) {
-
 
95
        $menu_type = $tab_applette_arguments[5];
-
 
96
    }
-
 
97
    if (isset($tab_applette_arguments[6])) {
-
 
98
        $niveau_depart   = $tab_applette_arguments[6];
89
    $profondeur = $tab_applette_arguments[3];
99
    }
-
 
100
    
-
 
101
    // Gestion du type de menu
-
 
102
    switch ($menu_type) {
-
 
103
        case '' :
-
 
104
            $menu_type = 'classique';
-
 
105
        break;
90
    
106
        case 'CLASSIQUE' :
-
 
107
            $menu_type = 'classique';
-
 
108
        break;
91
    // Remplacement des valeurs variables du nom de la balise par celles trouvées.
109
        case 'COMMUN' :
-
 
110
            $menu_type = 'commun';
-
 
111
        break;
-
 
112
        case 'UNIQUE' :
-
 
113
            $menu_type = 'unique';
-
 
114
        break;
92
    //global $_GEN_commun;
115
        default:
-
 
116
            $menu_type = 'classique';
Line 93... Line 117...
93
    //$_GEN_commun['info_applette_balise'] = 'MENU_'.$niveau_depart.'_'.$profondeur;
117
    }
94
    
118
    
Line 95... Line 119...
95
    //Construction du menu
119
    //Construction du menu
96
    $xhtml_menu = afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url ,$niveau_depart, $profondeur, 0, 1, $indent_origine, $indent_pas);
120
    $xhtml_menu = afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url ,$niveau_depart, $profondeur, 0, 1, $menu_type, $indent_origine, $indent_pas, $_GEN_commun);
97
    
-
 
98
    //Si nous avons un 
121
    
99
    if (! empty($xhtml_menu)) {
-
 
100
        //$retour  = str_repeat(' ', $indent_origine).'<ul id="menu_niveau_'.$niveau_depart.'">'."\n";
122
    //Si nous avons un 
101
        $retour = $xhtml_menu;
123
    if (! empty($xhtml_menu)) {
102
        //$retour .= str_repeat(' ', $indent_origine).'</ul>';
124
        $retour = $xhtml_menu;
103
    } else {
125
    } else {
104
        $retour = '<!-- '.$_GEN_commun['info_applette_balise'].' : aucun menu trouvé ! -->';
126
        $retour = '<!-- '.$balise.' : aucun menu trouvé ! -->';
Line 105... Line 127...
105
    }
127
    }
Line 118... Line 140...
118
* @param  integer niveau de départ.
140
* @param  integer niveau de départ.
119
* @param  integer niveau d'arrivée (profondeur max demandée).
141
* @param  integer niveau d'arrivée (profondeur max demandée).
120
* @param  integer identifiant d'un menu pére.
142
* @param  integer identifiant d'un menu pére.
121
* @return  string  les listes de menus au format XHTML.
143
* @return  string  les listes de menus au format XHTML.
122
*/
144
*/
123
function afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur, $id_pere_menu_a_deployer, $position, $indent_origine = 12, $indent_pas = 4)
145
function afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur, $id_pere_menu_a_deployer, $position, $menu_type, $indent_origine = 12, $indent_pas = 4, $_GEN_commun)
124
{
146
{
125
    // Initialisation des variables
147
    // Initialisation des variables
126
    static $niveau_actuel = 1;
148
    static $niveau_actuel = 1;
127
    $retour = '';
149
    $retour = '';
128
    
-
 
129
    // On affiche un menu que si $profondeur <= $niveau_actuel <= $depart
-
 
130
    if ($niveau_actuel > $profondeur) {
150
    if ($menu_type == 'unique') {
131
        return ;
-
 
132
    }
-
 
133
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
-
 
134
        $retour =   str_repeat(' ', $indent_origine + ($indent_pas * $position)).
151
        $retour .= afficherEntreeListeMenu( $objet_pear_db, $niveau_depart, $i18n_url,
135
                    '<ul id="groupe_menu_'.$id_pere_menu_a_deployer.'" class="menu_n'.$niveau_actuel.'">'."\n";
152
                                            $niveau_actuel, 1, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun);
136
    }
153
    } else {
137
    
-
 
138
    $requete =  'SELECT gm_id_menu, GMR01.gmr_ordre '.
-
 
139
                'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
154
        // On affiche un menu que si $profondeur <= $niveau_actuel <= $depart
140
                'WHERE GMR01.gmr_id_menu_02 = '.$id_pere_menu_a_deployer.' '.
-
 
141
                'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
-
 
142
                'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
-
 
143
                'AND gm_ce_site = '.$id_site.' '.
155
        if ($niveau_actuel > $profondeur) {
144
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
-
 
145
                'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
-
 
146
                'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
-
 
147
                'ORDER BY GMR01.gmr_ordre ASC';
156
            return null;
148
    
-
 
149
    $retourultat = $objet_pear_db->query($requete);
-
 
150
    (DB::isError($retourultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat->getMessage(), $requete)) : '';
-
 
151
    
157
        }
152
    while ($ligne = $retourultat->fetchRow(DB_FETCHMODE_OBJECT)) {
-
 
153
        // On commence par regarder si le menu existe dans la langue demandée
-
 
154
        if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
158
        if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
-
 
159
            $retour .=   str_repeat(' ', $indent_origine + ($indent_pas * $position)).
-
 
160
                        '<ul id="groupe_menu_'.$menu_type.'_'.$id_pere_menu_a_deployer.'" class="menu_'.$menu_type.'_'.'n'.$niveau_actuel.'">'."\n";
-
 
161
        }
-
 
162
        
-
 
163
        $requete =  'SELECT gm_id_menu, GMR01.gmr_ordre '.
-
 
164
                    'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
-
 
165
                    'WHERE GMR01.gmr_id_menu_02 = '.$id_pere_menu_a_deployer.' '.
-
 
166
                    'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
-
 
167
                    'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
-
 
168
                    'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
-
 
169
                    'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 ';
-
 
170
                    
-
 
171
        if ($menu_type == 'classique') {
-
 
172
            $requete .= 'AND gm_ce_site = '.$id_site.' '.
-
 
173
                        'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
-
 
174
                        'ORDER BY GMR01.gmr_ordre ASC';
-
 
175
        } else if ($menu_type == 'commun') {
-
 
176
            $requete .= 'AND gm_ce_site = 0 '.
-
 
177
                        'AND GMR02.gmr_id_valeur = 102 '.// 102 = type "menu commun"
-
 
178
                        'ORDER BY GMR01.gmr_ordre ASC';
-
 
179
        }
-
 
180
        //$GLOBALS['_GEN_commun']['debogage_info'] .=$requete;
-
 
181
        $resultat = $objet_pear_db->query($requete);
-
 
182
        (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
-
 
183
        
-
 
184
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
-
 
185
            // On commence par regarder si le menu existe dans la langue demandée
-
 
186
            if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
155
            $requete_i18n = 'SELECT gm_id_menu '.
187
                $requete_i18n = 'SELECT gm_id_menu '.
156
                            'FROM gen_menu, gen_menu_relation '.
188
                                'FROM gen_menu, gen_menu_relation '.
157
                            'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
189
                                'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
158
                            'AND gmr_id_menu_02 = gm_id_menu '.
190
                                'AND gmr_id_menu_02 = gm_id_menu '.
159
                            'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
191
                                'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
160
                            'AND gm_ce_i18n = "'.$id_langue.'"';
192
                                'AND gm_ce_i18n = "'.$id_langue.'"';
-
 
193
                
-
 
194
                $resultat_i18n = $objet_pear_db->query($requete_i18n);
-
 
195
                (DB::isError($resultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_i18n->getMessage(), $requete_i18n)) : '';
-
 
196
                
-
 
197
                // Récupération de l'id du menu à afficher
-
 
198
                if ($resultat_i18n->numRows() != 0) {
-
 
199
                    $id_menu_i18n = $resultat_i18n->fetchRow(DB_FETCHMODE_OBJECT);
-
 
200
                    $id_menu_inf = $id_menu_i18n->gm_id_menu;
-
 
201
                    $resultat_i18n->free();
-
 
202
                } else {
-
 
203
                    $id_menu_inf = $ligne->gm_id_menu;
-
 
204
                }
-
 
205
                $id_menu_selectionne = '';
-
 
206
                if (isset($GLOBALS['_GEN_commun']['info_menu']->gm_id_menu)) {
-
 
207
                    $id_menu_selectionne = $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu;
-
 
208
                }
-
 
209
                // On vérifie si le menu est le menu sélectionné
-
 
210
                if (!empty($id_menu_selectionne) && (GEN_etreAncetre($id_menu_inf, $id_menu_selectionne) || $id_menu_inf == $id_menu_selectionne) ) {
-
 
211
                    $classe = 'menu_actif';
-
 
212
                } else {
-
 
213
                    $classe = 'menu_inactif';
-
 
214
                }
-
 
215
                
-
 
216
                // Affichage du menu
-
 
217
                $retour .=   str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).
-
 
218
                            '<li id="menu_'.$menu_type.'_'.$id_menu_inf.'" class="'.$classe.'">'."\n";
-
 
219
                $retour .= afficherEntreeListeMenu( $objet_pear_db, $id_menu_inf, $i18n_url, $niveau_actuel, 
-
 
220
                                                    $ligne->gmr_ordre, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun);
-
 
221
            }
-
 
222
            // Pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
-
 
223
            $requete_fils = 'SELECT gm_id_menu '.
-
 
224
                            'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
-
 
225
                            'WHERE GMR01.gmr_id_menu_02 = '.$ligne->gm_id_menu.' '.
-
 
226
                            'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
-
 
227
                            'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
-
 
228
                            'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
-
 
229
                            'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
-
 
230
                            'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
-
 
231
                            'ORDER BY GMR01.gmr_ordre ASC '.
-
 
232
                            'LIMIT 0,1';
Line 161... Line 233...
161
            
233
            
-
 
234
            $resultat_fils = $objet_pear_db->query($requete_fils);
162
            $retourultat_i18n = $objet_pear_db->query($requete_i18n);
235
            (DB::isError($resultat_fils))
-
 
236
                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_fils->getMessage(), $requete_fils))
Line 163... Line 237...
163
            (DB::isError($retourultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat_i18n->getMessage(), $requete_i18n)) : '';
237
                : '';
164
            
238
            
-
 
239
            if ($resultat_fils->numRows() != 0 && $ligne->gm_id_menu == $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu 
165
            if ($retourultat_i18n->numRows() != 0) {
240
                || GEN_etreAncetre($ligne->gm_id_menu, $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu)) {
166
                $id_menu_i18n = $retourultat_i18n->fetchRow(DB_FETCHMODE_OBJECT);
241
                
-
 
242
                $niveau_actuel++;
-
 
243
                $retour .= afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur, $ligne->gm_id_menu, ($position + 2), $menu_type, null, null, $_GEN_commun);
167
                $retourultat_i18n->free();
244
                // On ramène $niveau_actuel un cran plus bas
168
                $retour .= afficherEntreeListeMenu($objet_pear_db, $id_menu_i18n->gm_id_menu, $i18n_url,
245
                $niveau_actuel--;
169
                                                $niveau_actuel, $ligne->gmr_ordre, $position, $indent_origine, $indent_pas);
246
                $retour .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).'</li>'."\n";
170
            } else {
-
 
171
                $retour .= afficherEntreeListeMenu($objet_pear_db, $ligne->gm_id_menu, $i18n_url, $niveau_actuel,
247
            } else {
172
                                                $ligne->gmr_ordre, $position, $indent_origine, $indent_pas);
-
 
173
            }
-
 
174
        }
-
 
175
        // pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
-
 
176
        $requete_fils = 'SELECT gm_id_menu '.
-
 
177
                        'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
-
 
178
                        'WHERE GMR01.gmr_id_menu_02 = '.$ligne->gm_id_menu.' '.
-
 
179
                        'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
-
 
180
                        'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
-
 
181
                        'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
-
 
182
                        'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
-
 
183
                        'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
-
 
184
                        'ORDER BY GMR01.gmr_ordre ASC '.
-
 
185
                        'LIMIT 0,1';
-
 
186
        
-
 
187
        $retourultat_fils = $objet_pear_db->query($requete_fils);
-
 
188
        (DB::isError($retourultat_fils))
-
 
189
            ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat_fils->getMessage(), $requete_fils))
-
 
190
            : '';
-
 
191
        
-
 
Line 192... Line -...
192
        if ($retourultat_fils->numRows() != 0 && $ligne->gm_id_menu == $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu 
-
 
193
                                || GEN_etreAncetre($ligne->gm_id_menu, $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu)) {
-
 
194
            
-
 
195
            $niveau_actuel++;
248
                $retour .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).'</li>'."\n";
196
            $retour .= afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur, $ligne->gm_id_menu, ($position + 2));
-
 
197
            // On ramène $niveau_actuel un cran plus bas
-
 
198
            $niveau_actuel--;
-
 
199
            $retour .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).'</li>'."\n";
249
            }
200
        } else {
-
 
201
            $retour .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).'</li>'."\n";
250
            
202
        }
-
 
203
        
-
 
204
        $retourultat_fils->free();
251
            $resultat_fils->free();
205
    }
252
        }
-
 
253
        $resultat->free();
206
    $retourultat->free() ;
254
        if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
207
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
255
            $retour .= str_repeat(' ', $indent_origine + ($indent_pas * $position)).'</ul>'."\n";
208
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * $position)).'</ul>'."\n";
256
        }
Line 209... Line 257...
209
    }
257
    }
210
    return $retour;
258
    return $retour;
211
}
259
}
212
 
260
 
213
/** Fonction afficherEntreeListeMenu() - Contruit une entrée dans une liste du menu d'un site.
261
/** Fonction afficherEntreeListeMenu() - Contruit une entrée dans une liste du menu d'un site.
214
*
262
*
215
* Cette fonction retourne une entrée (<li></li>) dans la liste du menu d'un site.
263
* Cette fonction retourne une entrée dans la liste du menu d'un site (<a></a>).
216
* Le menu est un lien.
264
* Le menu est un lien.
217
* Necessite l'utilisation de Pear Net_URL par le programme appelant cette fonction.
265
* Necessite l'utilisation de Pear Net_URL par le programme appelant cette fonction.
218
*
266
*
219
* @param  mixed   objet Pear DB de connexion à la base de données.
267
* @param  mixed   objet Pear DB de connexion à la base de données.
220
* @param  integer niveau du menu.
268
* @param  integer niveau du menu.
221
* @param  integer ordre du menu dans le niveau.
269
* @param  integer ordre du menu dans le niveau.
222
* @return  string  liste représentant le menu duHTML
270
* @return  string  liste représentant le menu duHTML
223
*/
271
*/
224
function afficherEntreeListeMenu($objet_pear_db, $id_menu, $i18n_url, $niveau, $ordre, $position, $indent_origine = 12, $indent_pas = 4)
272
function afficherEntreeListeMenu($db, $id_menu, $i18n_url, $niveau, $ordre, $position, $menu_type, $indent_origine = 12, $indent_pas = 4, $_GEN_commun)
Line 225... Line 273...
225
{
273
{
226
    // Préparation des noms des champs des codes pour le site et le menu
274
    // Préparation des noms des champs des codes pour le site et le menu
227
    $champs_code_site = (GEN_URL_ID_TYPE_SITE == 'int') ? 'gs_code_num' : 'gs_code_alpha';
275
    $champs_code_site = (GEN_URL_ID_TYPE_SITE == 'int') ? 'gs_code_num' : 'gs_code_alpha';
228
    $champs_code_menu = (GEN_URL_ID_TYPE_MENU == 'int') ? 'gm_code_num' : 'gm_code_alpha';
276
    $champs_code_menu = (GEN_URL_ID_TYPE_MENU == 'int') ? 'gm_code_num' : 'gm_code_alpha';
229
    
277
    
230
    // Récupération du nom de l'entrée du menu à afficher
-
 
231
    $requete =  'SELECT '.$champs_code_site.', '.$champs_code_menu.', '.
278
    // Récupération du nom de l'entrée du menu à afficher
232
                        'gm_nom, gm_description_resume, gm_raccourci_clavier, gm_ce_i18n '.
279
    $requete =  'SELECT '.$champs_code_menu.', '.
233
                'FROM gen_menu, gen_site '.
280
                'gm_nom, gm_description_resume, gm_raccourci_clavier, gm_ce_i18n, gm_ce_site '.
234
                'WHERE gm_id_menu = '.$id_menu.' '.
281
                'FROM gen_menu '.
235
                'AND gm_ce_site = gs_id_site ';
282
                'WHERE gm_id_menu = '.$id_menu.' ';
-
 
283
    
-
 
284
    $resultat = $db->query($requete);
-
 
285
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
-
 
286
    
-
 
287
    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
-
 
288
    $resultat->free();
-
 
289
    // Nous vérifions si nous avons à faire à un menu commun ou pas
-
 
290
    if ($ligne['gm_ce_site'] != 0) {
-
 
291
        // Récupération des infos sur le site
-
 
292
        $requete_site = 'SELECT '.$champs_code_site.' '.
236
    
293
                        'FROM gen_site '.
-
 
294
                        'WHERE gs_id_site = '.$ligne['gm_ce_site'].' ';
-
 
295
        
-
 
296
        $resultat_site = $db->query($requete_site);
-
 
297
        (DB::isError($resultat_site)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_site->getMessage(), $requete_site)) : '';
-
 
298
        
-
 
299
        $ligne_site = $resultat_site->fetchRow(DB_FETCHMODE_ASSOC);
237
    $retourultat = $objet_pear_db->query($requete);
300
        $resultat_site->free();
238
    (DB::isError($retourultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat->getMessage(), $requete)) : '';
301
    } else {
239
    
302
        // Menu commun
240
    $ligne = $retourultat->fetchRow(DB_FETCHMODE_ASSOC);
303
        $ligne_site[$champs_code_site] = $_GEN_commun['info_site']->$champs_code_site;
241
    
304
    }
242
    // Préparation d'une entrée dans la liste du menu
305
    // Préparation d'une entrée dans la liste du menu
243
    $menu_nom = htmlentities($ligne['gm_nom']);
306
    $menu_nom = htmlentities($ligne['gm_nom']);
244
    $menu_texte_title = htmlentities($ligne['gm_description_resume']);
307
    $menu_texte_title = htmlentities($ligne['gm_description_resume']);
245
    // Préparation de l'url de l'entrée
308
    // Préparation de l'url de l'entrée
246
    $objet_pear_url = & new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
309
    $objet_pear_url = & new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
247
    $objet_pear_url->addQueryString(GEN_URL_CLE_SITE, $ligne[$champs_code_site]);
310
    $objet_pear_url->addQueryString(GEN_URL_CLE_SITE, $ligne_site[$champs_code_site]);
248
    $objet_pear_url->addQueryString(GEN_URL_CLE_MENU, $ligne[$champs_code_menu]);
-
 
249
    if (!empty($i18n_url)) {
-
 
250
        $objet_pear_url->addQueryString(GEN_URL_CLE_I18N, $i18n_url);
-
 
251
    }
-
 
252
    $url = $objet_pear_url->getURL();
-
 
253
    //if ($niveau == 1) $url = "#" ;
-
 
254
    // On vérifie si le menu est le menu sélectionné
-
 
Line 255... Line 311...
255
    if (isset($GLOBALS['_GEN_commun']['info_menu']->gm_id_menu) && $id_menu == $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu) {
311
    $objet_pear_url->addQueryString(GEN_URL_CLE_MENU, $ligne[$champs_code_menu]);
256
        $classe = 'menu_actif';
-
 
257
    } else {
312
    if (!empty($i18n_url)) {
258
        $classe = 'menu_inactif';
-
 
259
    }
313
        $objet_pear_url->addQueryString(GEN_URL_CLE_I18N, $i18n_url);
260
    
314
    }
261
    //Création d'une entrée dans la liste du menu
315
    $url = $objet_pear_url->getURL();
Line 262... Line 316...
262
    $espaces2  = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1)));
316
    
263
    $espaces3 = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2)));
317
    //Création d'une entrée dans la liste du menu
Line 272... Line 326...
272
 
326
 
273
 
327
 
274
/* +--Fin du code ----------------------------------------------------------------------------------------+
328
/* +--Fin du code ----------------------------------------------------------------------------------------+
-
 
329
*
-
 
330
* $Log: not supported by cvs2svn $
-
 
331
* Revision 1.7  2004/09/23 14:31:40  jpm
275
*
332
* Correction bogue sur le menu actif.
276
* $Log: not supported by cvs2svn $
333
*
277
* Revision 1.6  2004/09/23 10:47:16  jpm
334
* Revision 1.6  2004/09/23 10:47:16  jpm
278
* Amélioration de la gestion du menu actif en fonction du menu demandé dans l'url.
335
* Amélioration de la gestion du menu actif en fonction du menu demandé dans l'url.
279
*
336
*