Subversion Repositories Applications.papyrus

Rev

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

Rev 289 Rev 338
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.14 2005-03-02 11:02:33 jpm Exp $
22
// CVS : $Id: menu.php,v 1.15 2005-04-14 16:37:48 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.14 $ $Date: 2005-03-02 11:02:33 $
41
*@version       $Revision: 1.15 $ $Date: 2005-04-14 16:37:48 $
42
// +------------------------------------------------------------------------------------------------------+
42
// +------------------------------------------------------------------------------------------------------+
43
*/
43
*/
Line 44... Line 44...
44
 
44
 
45
// +------------------------------------------------------------------------------------------------------+
45
// +------------------------------------------------------------------------------------------------------+
46
// |                                            ENTÊTE du PROGRAMME                                       |
46
// |                                            ENTÊTE du PROGRAMME                                       |
-
 
47
// +------------------------------------------------------------------------------------------------------+
-
 
48
// Inclusion de la bibliothèque defonction sur les menu : inutile car inclue par Papyrus
Line 47... Line -...
47
// +------------------------------------------------------------------------------------------------------+
-
 
48
 
49
 require_once GEN_CHEMIN_BIBLIO.'pap_menu.fonct.php';
49
require_once 'papyrus/bibliotheque/fonctions/pap_menu.fonct.php';
50
 
50
$GLOBALS['_MENU_']['nom_fonction'] = 'afficherMenuNiveauMultiple';
51
$GLOBALS['_MENU_']['nom_fonction'] = 'afficherMenuNiveauMultiple';
Line 51... Line 52...
51
$_GEN_commun['info_applette_nom_fonction'] = $GLOBALS['_MENU_']['nom_fonction'];
52
$_GEN_commun['info_applette_nom_fonction'] = $GLOBALS['_MENU_']['nom_fonction'];
52
$_GEN_commun['info_applette_balise'] = 'MENU_?(?:(|CLASSIQUE|COMMUN|DEROULANT)_([0-9]+)_([0-9]+)(|_ID_([0-9]+))|(UNIQUE)_([0-9]+))';
53
$_GEN_commun['info_applette_balise'] = 'MENU_?(?:(|CLASSIQUE|COMMUN|DEROULANT)_([0-9]+)_([0-9]+)(|_ID_([0-9]+))|(UNIQUE)_([0-9]+))(?:|_NUMID_([0-9]+))';
53
 
54
 
Line 102... Line 103...
102
        $menu_type = $tab_applette_arguments[7];
103
        $menu_type = $tab_applette_arguments[7];
103
    }
104
    }
104
    if (isset($tab_applette_arguments[8])) {
105
    if (isset($tab_applette_arguments[8])) {
105
        $menu_depart = $tab_applette_arguments[8];
106
        $menu_depart = $tab_applette_arguments[8];
106
    }
107
    }
-
 
108
    // Gestion du numéro unique pour l'attribut id des li des menus
-
 
109
    if (isset($tab_applette_arguments[9])) {
-
 
110
        $num_menu = $tab_applette_arguments[9];
107
 
111
    }
108
    // Gestion du type de menu
112
    // Gestion du type de menu
109
    switch ($menu_type) {
113
    switch ($menu_type) {
110
        case '' :
114
        case '' :
111
            $menu_type = 'classique';
115
            $menu_type = 'classique';
112
        break;
116
        break;
Line 181... Line 185...
181
    $pied = '';
185
    $pied = '';
Line 182... Line 186...
182
    
186
    
183
    // Gestion des menus uniques
187
    // Gestion des menus uniques
184
    if ($menu_type == 'unique') {
188
    if ($menu_type == 'unique') {
185
        $retour .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
189
        $retour .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
186
                                            $niveau_actuel, 1, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun);
190
                                            $niveau_actuel, 1, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun, $num_menu);
187
        // Dans le cas, d'un menu unique, on retourne directement le résultat ici.
191
        // Dans le cas, d'un menu unique, on retourne directement le résultat ici.
188
        return $retour;
192
        return $retour;
189
    } 
193
    } 
190
    // On affiche un menu que si $profondeur <= $niveau_actuel <= $depart
194
    // On affiche un menu que si $profondeur <= $niveau_actuel <= $depart
Line 204... Line 208...
204
        }
208
        }
205
        // Pour un menu dont on spécifie l'identifiant du menu départ, on affiche ce menu. 
209
        // Pour un menu dont on spécifie l'identifiant du menu départ, on affiche ce menu. 
206
        $corps .=  str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).
210
        $corps .=  str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).
207
                    '<li id="menu_'.$num_menu.'_'.$id_pere_menu_a_deployer.'" class="'.$classe.'">'."\n";
211
                    '<li id="menu_'.$num_menu.'_'.$id_pere_menu_a_deployer.'" class="'.$classe.'">'."\n";
208
        $corps .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
212
        $corps .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
209
                                            $niveau_actuel, 1, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun);
213
                                            $niveau_actuel, 1, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun, $num_menu);
210
    }
214
    }
Line 211... Line 215...
211
    
215
    
212
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
216
    if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
213
        $tete .=   str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).
217
        $tete .=   str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).
Line 269... Line 273...
269
            
273
            
270
            // Affichage du menu
274
            // Affichage du menu
271
            $corps .=   str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2))).
275
            $corps .=   str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2))).
272
                        '<li id="menu_'.$num_menu.'_'.$id_menu_inf.'" class="'.$classe.'">'."\n";
276
                        '<li id="menu_'.$num_menu.'_'.$id_menu_inf.'" class="'.$classe.'">'."\n";
273
            $corps .= afficherEntreeListeMenu( $objet_pear_db, $id_menu_inf, $i18n_url, $niveau_actuel, 
277
            $corps .= afficherEntreeListeMenu( $objet_pear_db, $id_menu_inf, $i18n_url, $niveau_actuel, 
274
                                                $ligne->gmr_ordre, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun);
278
                                                $ligne->gmr_ordre, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun, $num_menu);
275
        }
279
        }
276
        // Pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
280
        // Pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
277
        $requete_fils = 'SELECT gm_id_menu '.
281
        $requete_fils = 'SELECT gm_id_menu '.
278
                        'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
282
                        'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
Line 336... Line 340...
336
* @param  mixed   objet Pear DB de connexion à la base de données.
340
* @param  mixed   objet Pear DB de connexion à la base de données.
337
* @param  integer niveau du menu.
341
* @param  integer niveau du menu.
338
* @param  integer ordre du menu dans le niveau.
342
* @param  integer ordre du menu dans le niveau.
339
* @return  string  liste représentant le menu duHTML
343
* @return  string  liste représentant le menu duHTML
340
*/
344
*/
341
function afficherEntreeListeMenu($db, $id_menu, $i18n_url, $niveau, $ordre, $position, $menu_type, $indent_origine = 12, $indent_pas = 4, $_GEN_commun)
345
function afficherEntreeListeMenu($db, $menu_id, $i18n_url, $niveau, $ordre, $position, $menu_type, $indent_origine = 12, $indent_pas = 4, $_GEN_commun, $num_menu)
342
{
346
{
343
    // Préparation des noms des champs des codes pour le site et le menu
-
 
344
    $champs_code_site = (GEN_URL_ID_TYPE_SITE == 'int') ? 'gs_code_num' : 'gs_code_alpha';
-
 
345
    $champs_code_menu = (GEN_URL_ID_TYPE_MENU == 'int') ? 'gm_code_num' : 'gm_code_alpha';
-
 
346
    
-
 
347
    // Récupération du nom de l'entrée du menu à afficher
347
    // Récupération des infos sur sur l'entrée du menu à afficher
348
    $requete =  'SELECT '.$champs_code_menu.', '.
348
    $menu_info = GEN_lireInfoMenu($db, $menu_id, DB_FETCHMODE_ASSOC);
349
                'gm_nom, gm_description_resume, gm_raccourci_clavier, gm_ce_i18n, gm_ce_site '.
-
 
350
                'FROM gen_menu '.
-
 
351
                'WHERE gm_id_menu = '.$id_menu.' ';
-
 
352
    
-
 
353
    $resultat = $db->query($requete);
-
 
354
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
-
 
Line 355... Line -...
355
    
-
 
356
    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
-
 
357
    $resultat->free();
-
 
358
    // Nous vérifions si nous avons à faire à un menu commun ou pas
-
 
359
    if ($ligne['gm_ce_site'] != 0) {
-
 
360
        // Récupération des infos sur le site
-
 
361
        $bln_url_site = false;
-
 
362
        $requete_site = 'SELECT '.$champs_code_site.' '.
-
 
363
                        'FROM gen_site '.
-
 
364
                        'WHERE gs_id_site = '.$ligne['gm_ce_site'].' ';
-
 
365
        
-
 
366
        $resultat_site = $db->query($requete_site);
-
 
367
        (DB::isError($resultat_site)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_site->getMessage(), $requete_site)) : '';
-
 
368
        
-
 
369
        $ligne_site = $resultat_site->fetchRow(DB_FETCHMODE_ASSOC);
-
 
370
        $resultat_site->free();
-
 
371
    } else {
-
 
372
        // Menu commun
-
 
373
        $bln_url_site = true;
-
 
374
        $ligne_site[$champs_code_site] = $_GEN_commun['info_site']->$champs_code_site;
-
 
375
    }
349
    
376
    // Préparation d'une entrée dans la liste du menu
350
    // Préparation d'une entrée dans la liste du menu
-
 
351
    $menu_nom = htmlentities($menu_info['gm_nom']);
-
 
352
    $menu_hreflang = htmlentities($menu_info['gm_ce_i18n']);
-
 
353
    $menu_accesskey = '';
-
 
354
    $raccourci_txt = '';
-
 
355
    if (($menu_accesskey = htmlentities($menu_info['gm_raccourci_clavier'])) != '') {
-
 
356
        $raccourci_txt = '(Raccourci : '.$menu_accesskey.' ).';
-
 
357
        $menu_accesskey = 'accesskey="'.$menu_accesskey.'" ';
-
 
358
    }
377
    $menu_nom = htmlentities($ligne['gm_nom']);
359
    $menu_texte_title = '';
-
 
360
    if (($menu_texte_title = htmlentities($menu_info['gm_description_resume'])) != '') {
-
 
361
        $menu_texte_title = 'title="'.$raccourci_txt.$menu_texte_title.'" ';;
-
 
362
    }
378
    $menu_texte_title = htmlentities($ligne['gm_description_resume']);
363
    
379
    // Préparation de l'url de l'entrée
364
    // Préparation de l'url de l'entrée
380
    $objet_pear_url = & new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
-
 
381
    if ($bln_url_site) {
-
 
382
        $objet_pear_url->addQueryString(GEN_URL_CLE_SITE, $ligne_site[$champs_code_site]);
-
 
383
    }
-
 
384
    $objet_pear_url->addQueryString(GEN_URL_CLE_MENU, $ligne[$champs_code_menu]);
-
 
385
    if (!empty($i18n_url)) {
-
 
386
        $objet_pear_url->addQueryString(GEN_URL_CLE_I18N, $i18n_url);
-
 
387
    }
365
    $une_url =& new Pap_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
Line 388... Line 366...
388
    $url = $objet_pear_url->getURL();
366
    $une_url->setId($menu_id);
389
    
367
    
-
 
368
    //Création d'une entrée dans la liste du menu
390
    //Création d'une entrée dans la liste du menu
369
    $espaces = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2)));
391
    $espaces = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2)));
370
    $retour  =  $espaces.'<a id="menu_lien_'.$num_menu.'_'.$menu_id.'" href="'.$une_url->getURL().'" '.
392
    $retour  = $espaces.'<a href="'.$url.'" title="'.$menu_texte_title.'">'.$menu_nom.'</a>'."\n";
371
                'hreflang="'.$menu_hreflang.'" '.$menu_texte_title.$menu_accesskey.'>'.$menu_nom.'</a>'."\n";
Line 393... Line 372...
393
    return $retour;
372
    return $retour;
394
}
373
}
Line 399... Line 378...
399
 
378
 
400
 
379
 
401
/* +--Fin du code ----------------------------------------------------------------------------------------+
380
/* +--Fin du code ----------------------------------------------------------------------------------------+
-
 
381
*
-
 
382
* $Log: not supported by cvs2svn $
-
 
383
* Revision 1.14  2005/03/02 11:02:33  jpm
402
*
384
* Suppression des espaces avant l'ouverture de la balise php.
403
* $Log: not supported by cvs2svn $
385
*
404
* Revision 1.13  2005/02/08 19:03:03  alex
386
* Revision 1.13  2005/02/08 19:03:03  alex
405
* ajout de la balise DEROULANT qui permet de faire un affichage des menus avec survol javascript. Il nécessite des styles particuliers.
387
* ajout de la balise DEROULANT qui permet de faire un affichage des menus avec survol javascript. Il nécessite des styles particuliers.
406
*
388
*