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 |
*
|