Subversion Repositories Applications.papyrus

Rev

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

Rev 39 Rev 41
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.4 2004-09-13 18:02:34 jpm Exp $
22
// CVS : $Id: menu.php,v 1.5 2004-09-15 09:32: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.4 $ $Date: 2004-09-13 18:02:34 $
41
*@version       $Revision: 1.5 $ $Date: 2004-09-15 09:32:21 $
42
// +------------------------------------------------------------------------------------------------------+
42
// +------------------------------------------------------------------------------------------------------+
43
*/
43
*/
Line 44... Line 44...
44
 
44
 
45
// +------------------------------------------------------------------------------------------------------+
45
// +------------------------------------------------------------------------------------------------------+
Line 91... Line 91...
91
    // Remplacement des valeurs variables du nom de la balise par celles trouvées.
91
    // Remplacement des valeurs variables du nom de la balise par celles trouvées.
92
    //global $_GEN_commun;
92
    //global $_GEN_commun;
93
    //$_GEN_commun['info_applette_balise'] = 'MENU_'.$niveau_depart.'_'.$profondeur;
93
    //$_GEN_commun['info_applette_balise'] = 'MENU_'.$niveau_depart.'_'.$profondeur;
Line 94... Line 94...
94
    
94
    
95
    //Construction du menu
95
    //Construction du menu
Line 96... Line 96...
96
    $xhtml_menu = afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url ,$niveau_depart, $profondeur, 0, $indent_origine, $indent_pas);
96
    $xhtml_menu = afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url ,$niveau_depart, $profondeur, 0, 1, $indent_origine, $indent_pas);
97
    
97
    
98
    //Si nous avons un 
98
    //Si nous avons un 
99
    if (! empty($xhtml_menu)) {
99
    if (! empty($xhtml_menu)) {
100
        //$res  = str_repeat(' ', $indent_origine).'<ul id="menu_niveau_'.$niveau_depart.'">'."\n";
100
        //$retour  = str_repeat(' ', $indent_origine).'<ul id="menu_niveau_'.$niveau_depart.'">'."\n";
101
        $res = $xhtml_menu;
101
        $retour = $xhtml_menu;
102
        //$res .= str_repeat(' ', $indent_origine).'</ul>';
102
        //$retour .= str_repeat(' ', $indent_origine).'</ul>';
103
    } else {
103
    } else {
104
        $res = '<!-- '.$_GEN_commun['info_applette_balise'].' : aucun menu trouvé ! -->';
104
        $retour = '<!-- '.$_GEN_commun['info_applette_balise'].' : aucun menu trouvé ! -->';
105
    }
105
    }
Line 106... Line 106...
106
    return $res;
106
    return $retour;
107
}
107
}
108
 
108
 
Line 118... Line 118...
118
* @param  integer niveau de départ.
118
* @param  integer niveau de départ.
119
* @param  integer niveau d'arrivée (profondeur max demandée).
119
* @param  integer niveau d'arrivée (profondeur max demandée).
120
* @param  integer identifiant d'un menu pére.
120
* @param  integer identifiant d'un menu pére.
121
* @return  string  les listes de menus au format XHTML.
121
* @return  string  les listes de menus au format XHTML.
122
*/
122
*/
123
function afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur, $id_pere_menu_a_deployer, $indent_origine = 12, $indent_pas = 4)
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)
124
{
124
{
125
    // Initialisation des variables
125
    // Initialisation des variables
126
    static $niveau_actuel = 1;
126
    static $niveau_actuel = 1;
127
    $res = '';
127
    $retour = '';
Line 128... Line 128...
128
    
128
    
129
    // On affiche un menu que si $profondeur <= $niveau_actuel <= $depart
129
    // On affiche un menu que si $profondeur <= $niveau_actuel <= $depart
130
    if ($niveau_actuel > $profondeur) {
130
    if ($niveau_actuel > $profondeur) {
131
        return ;
131
        return ;
132
    }
132
    }
-
 
133
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
133
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
134
        $retour =   str_repeat(' ', $indent_origine + ($indent_pas * $position)).
134
        $res = str_repeat(' ', $indent_origine + ($indent_pas * 1)).'<ul id="groupe_menu_'.$id_pere_menu_a_deployer.'" class="menu_n'.$niveau_actuel.'">'."\n";
135
                    '<ul id="groupe_menu_'.$id_pere_menu_a_deployer.'" class="menu_n'.$niveau_actuel.'">'."\n";
Line 135... Line 136...
135
    }
136
    }
136
    
137
    
137
    $requete =  'SELECT gm_id_menu, GMR01.gmr_ordre '.
138
    $requete =  'SELECT gm_id_menu, GMR01.gmr_ordre '.
Line 143... Line 144...
143
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
144
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
144
                'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
145
                'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
145
                'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
146
                'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
146
                'ORDER BY GMR01.gmr_ordre ASC';
147
                'ORDER BY GMR01.gmr_ordre ASC';
Line 147... Line 148...
147
    
148
    
148
    $resultat = $objet_pear_db->query($requete);
149
    $retourultat = $objet_pear_db->query($requete);
Line 149... Line 150...
149
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
150
    (DB::isError($retourultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat->getMessage(), $requete)) : '';
150
    
151
    
151
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
152
    while ($ligne = $retourultat->fetchRow(DB_FETCHMODE_OBJECT)) {
152
        // On commence par regarder si le menu existe dans la langue demandée
153
        // On commence par regarder si le menu existe dans la langue demandée
153
        if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
154
        if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
154
        $requete_i18n = 'SELECT gm_id_menu '.
155
            $requete_i18n = 'SELECT gm_id_menu '.
155
                        'FROM gen_menu, gen_menu_relation '.
156
                            'FROM gen_menu, gen_menu_relation '.
156
                        'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
157
                            'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
157
                        'AND gmr_id_menu_02 = gm_id_menu '.
158
                            'AND gmr_id_menu_02 = gm_id_menu '.
158
                        'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
159
                            'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
159
                        'AND gm_ce_i18n = "'.$id_langue.'"';
160
                            'AND gm_ce_i18n = "'.$id_langue.'"';
160
        
161
            
161
        $resultat_i18n = $objet_pear_db->query($requete_i18n);
162
            $retourultat_i18n = $objet_pear_db->query($requete_i18n);
162
        (DB::isError($resultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_i18n->getMessage(), $requete_i18n)) : '';
163
            (DB::isError($retourultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat_i18n->getMessage(), $requete_i18n)) : '';
163
        
164
            
164
        if ($resultat_i18n->numRows() != 0) {
165
            if ($retourultat_i18n->numRows() != 0) {
165
            $id_menu_i18n = $resultat_i18n->fetchRow(DB_FETCHMODE_OBJECT);
166
                $id_menu_i18n = $retourultat_i18n->fetchRow(DB_FETCHMODE_OBJECT);
166
            $resultat_i18n->free();
167
                $retourultat_i18n->free();
167
            $res .= afficherEntreeListeMenu($objet_pear_db, $id_menu_i18n->gm_id_menu, $i18n_url,
168
                $retour .= afficherEntreeListeMenu($objet_pear_db, $id_menu_i18n->gm_id_menu, $i18n_url,
168
                                            $niveau_actuel, $ligne->gmr_ordre, $indent_origine, $indent_pas);
169
                                                $niveau_actuel, $ligne->gmr_ordre, $position, $indent_origine, $indent_pas);
169
        } else {
170
            } else {
170
            $res .= afficherEntreeListeMenu($objet_pear_db, $ligne->gm_id_menu, $i18n_url, $niveau_actuel,
171
                $retour .= afficherEntreeListeMenu($objet_pear_db, $ligne->gm_id_menu, $i18n_url, $niveau_actuel,
171
                                            $ligne->gmr_ordre, $indent_origine, $indent_pas);
172
                                                $ligne->gmr_ordre, $position, $indent_origine, $indent_pas);
172
        }
173
            }
173
        }
174
        }
174
        // pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
175
        // pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
175
        $requete_fils = 'SELECT gm_id_menu '.
176
        $requete_fils = 'SELECT gm_id_menu '.
Line 181... Line 182...
181
                        'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
182
                        'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
182
                        'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
183
                        'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
183
                        'ORDER BY GMR01.gmr_ordre ASC '.
184
                        'ORDER BY GMR01.gmr_ordre ASC '.
184
                        'LIMIT 0,1';
185
                        'LIMIT 0,1';
Line 185... Line 186...
185
        
186
        
186
        $resultat_fils = $objet_pear_db->query($requete_fils);
187
        $retourultat_fils = $objet_pear_db->query($requete_fils);
187
        (DB::isError($resultat_fils))
188
        (DB::isError($retourultat_fils))
188
            ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_fils->getMessage(), $requete_fils))
189
            ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat_fils->getMessage(), $requete_fils))
Line 189... Line 190...
189
            : '';
190
            : '';
190
        
191
        
Line 191... Line 192...
191
        if ($resultat_fils->numRows() != 0 && $ligne->gm_id_menu == $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu 
192
        if ($retourultat_fils->numRows() != 0 && $ligne->gm_id_menu == $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu 
192
                                || GEN_etreAncetre($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)) {
193
            
194
            
194
            $niveau_actuel++;
195
            $niveau_actuel++;
195
            $res .= afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur, $ligne->gm_id_menu);
196
            $retour .= afficherListeNiveauMultiple($objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur, $ligne->gm_id_menu, ($position + 2));
196
            // On ramène $niveau_actuel un cran plus bas
197
            // On ramène $niveau_actuel un cran plus bas
197
            $niveau_actuel--;
198
            $niveau_actuel--;
198
            $res .= '';
199
            $retour .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).'</li>'."\n";
Line 199... Line 200...
199
        } else {
200
        } else {
200
            $res .= "";
201
            $retour .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).'</li>'."\n";
201
        }
202
        }
202
        
203
        
203
        $resultat_fils->free();
204
        $retourultat_fils->free();
204
    }
205
    }
205
    $resultat->free() ;
206
    $retourultat->free() ;
206
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
207
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
Line 207... Line 208...
207
        $res .= str_repeat(' ', $indent_origine + ($indent_pas * 1)).'</ul>'."\n";
208
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * $position)).'</ul>'."\n";
208
    }
209
    }
209
    return $res;
210
    return $retour;
Line 218... Line 219...
218
* @param  mixed   objet Pear DB de connexion à la base de données.
219
* @param  mixed   objet Pear DB de connexion à la base de données.
219
* @param  integer niveau du menu.
220
* @param  integer niveau du menu.
220
* @param  integer ordre du menu dans le niveau.
221
* @param  integer ordre du menu dans le niveau.
221
* @return  string  liste représentant le menu duHTML
222
* @return  string  liste représentant le menu duHTML
222
*/
223
*/
223
function afficherEntreeListeMenu($objet_pear_db, $id_menu, $i18n_url, $niveau, $ordre, $indent_origine = 12, $indent_pas = 4)
224
function afficherEntreeListeMenu($objet_pear_db, $id_menu, $i18n_url, $niveau, $ordre, $position, $indent_origine = 12, $indent_pas = 4)
224
{
225
{
225
    // Préparation des noms des champs des codes pour le site et le menu
226
    // Préparation des noms des champs des codes pour le site et le menu
226
    $champs_code_site = (GEN_URL_ID_TYPE_SITE == 'int') ? 'gs_code_num' : 'gs_code_alpha';
227
    $champs_code_site = (GEN_URL_ID_TYPE_SITE == 'int') ? 'gs_code_num' : 'gs_code_alpha';
227
    $champs_code_menu = (GEN_URL_ID_TYPE_MENU == 'int') ? 'gm_code_num' : 'gm_code_alpha';
228
    $champs_code_menu = (GEN_URL_ID_TYPE_MENU == 'int') ? 'gm_code_num' : 'gm_code_alpha';
Line 231... Line 232...
231
                        'gm_nom, gm_description_resume, gm_raccourci_clavier, gm_ce_i18n '.
232
                        'gm_nom, gm_description_resume, gm_raccourci_clavier, gm_ce_i18n '.
232
                'FROM gen_menu, gen_site '.
233
                'FROM gen_menu, gen_site '.
233
                'WHERE gm_id_menu = '.$id_menu.' '.
234
                'WHERE gm_id_menu = '.$id_menu.' '.
234
                'AND gm_ce_site = gs_id_site ';
235
                'AND gm_ce_site = gs_id_site ';
Line 235... Line 236...
235
    
236
    
236
    $resultat = $objet_pear_db->query($requete);
237
    $retourultat = $objet_pear_db->query($requete);
Line 237... Line 238...
237
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
238
    (DB::isError($retourultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat->getMessage(), $requete)) : '';
Line 238... Line 239...
238
    
239
    
239
    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
240
    $ligne = $retourultat->fetchRow(DB_FETCHMODE_ASSOC);
240
    
241
    
241
    // Préparation d'une entrée dans la liste du menu
242
    // Préparation d'une entrée dans la liste du menu
Line 256... Line 257...
256
    } else {
257
    } else {
257
        $classe = 'menu_inactif';
258
        $classe = 'menu_inactif';
258
    }
259
    }
Line 259... Line 260...
259
    
260
    
260
    //Création d'une entrée dans la liste du menu
261
    //Création d'une entrée dans la liste du menu
261
    $espaces2  = str_repeat(' ', $indent_origine + ($indent_pas * 2));
262
    $espaces2  = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1)));
262
    $espaces3 = str_repeat(' ', $indent_origine + ($indent_pas * 3));
263
    $espaces3 = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2)));
263
    $retour =     $espaces2.'<li id="menu_'.$id_menu.'" class="'.$classe.'">'."\n".
264
    $retour =   $espaces2.'<li id="menu_'.$id_menu.'" class="'.$classe.'">'."\n".
264
                        $espaces3.'<a href="'.$url.'" title="'.$menu_texte_title.'">'.$menu_nom.'</a>'."\n".
-
 
265
                    $espaces2.'</li>'."\n";
265
                $espaces3.'<a href="'.$url.'" title="'.$menu_texte_title.'">'.$menu_nom.'</a>'."\n";
266
    return $retour;
266
    return $retour;
Line 267... Line 267...
267
}
267
}
268
 
268
 
Line 272... Line 272...
272
 
272
 
273
 
273
 
274
/* +--Fin du code ----------------------------------------------------------------------------------------+
274
/* +--Fin du code ----------------------------------------------------------------------------------------+
-
 
275
*
-
 
276
* $Log: not supported by cvs2svn $
-
 
277
* Revision 1.4  2004/09/13 18:02:34  jpm
-
 
278
* Changement de nom de m_select en menu_actif et de m_non_select en menu_inactif.
275
*
279
* Amélioration du rendu du code html.
276
* $Log: not supported by cvs2svn $
280
*
277
* Revision 1.3  2004/07/23 11:21:25  alex
281
* Revision 1.3  2004/07/23 11:21:25  alex
278
* suppression du javascript.
282
* suppression du javascript.
279
*
283
*