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.22 2005-09-27 08:42:49 ddelon Exp $
|
22 |
// CVS : $Id: menu.php,v 1.23 2006-03-02 10:49:49 ddelon 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.22 $ $Date: 2005-09-27 08:42:49 $
|
41 |
*@version $Revision: 1.23 $ $Date: 2006-03-02 10:49:49 $
|
42 |
// +------------------------------------------------------------------------------------------------------+
|
42 |
// +------------------------------------------------------------------------------------------------------+
|
43 |
*/
|
43 |
*/
|
Line 44... |
Line 44... |
44 |
|
44 |
|
45 |
// +------------------------------------------------------------------------------------------------------+
|
45 |
// +------------------------------------------------------------------------------------------------------+
|
Line 77... |
Line 77... |
77 |
$id_site = $_GEN_commun['info_site']->gs_id_site;
|
77 |
$id_site = $_GEN_commun['info_site']->gs_id_site;
|
78 |
if (isset($_GEN_commun['info_menu'])) {
|
78 |
if (isset($_GEN_commun['info_menu'])) {
|
79 |
$id_menu = $_GEN_commun['info_menu']->gm_id_menu;
|
79 |
$id_menu = $_GEN_commun['info_menu']->gm_id_menu;
|
80 |
}
|
80 |
}
|
81 |
$num_menu = $GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_MENU_']['nom_fonction']];
|
81 |
$num_menu = $GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_MENU_']['nom_fonction']];
|
82 |
$id_langue = $_GEN_commun['i18n'];
|
- |
|
83 |
$i18n_url = '';// Evite d'écrire l'i18n dans l'url demandée.
|
- |
|
84 |
if (!empty($_GEN_commun['url_i18n'])) {
|
- |
|
85 |
// L'écriture de l'i18n dans les urls des menus est demandée.
|
- |
|
86 |
$i18n_url = $_GEN_commun['url_i18n'];
|
- |
|
87 |
}
|
82 |
|
88 |
$indent_origine = 12;// Indentation de départ en nombre d'espace
|
83 |
$indent_origine = 12;// Indentation de départ en nombre d'espace
|
89 |
$indent_pas = 4;// Pas d'indentation en nombre d'espace
|
84 |
$indent_pas = 4;// Pas d'indentation en nombre d'espace
|
90 |
$niveau_depart = 1;
|
85 |
$niveau_depart = 1;
|
Line 91... |
Line 86... |
91 |
|
86 |
|
Line 182... |
Line 177... |
182 |
// Initialisation des variables
|
177 |
// Initialisation des variables
|
183 |
static $niveau_actuel = 1;
|
178 |
static $niveau_actuel = 1;
|
184 |
$retour = '';
|
179 |
$retour = '';
|
185 |
$tete = '';
|
180 |
$tete = '';
|
186 |
$corps = '';
|
181 |
$corps = '';
|
187 |
$pied = '';
|
182 |
$pied = '';
|
- |
|
183 |
$id_langue = $_GEN_commun['i18n'];//identifiant de la langue choisie
|
- |
|
184 |
|
- |
|
185 |
if ($id_langue != GEN_I18N_ID_DEFAUT) {
|
- |
|
186 |
$i18n_url=$id_langue;
|
- |
|
187 |
}
|
- |
|
188 |
|
- |
|
189 |
|
- |
|
190 |
if (isset($id_langue) && ($id_langue!='')) {
|
- |
|
191 |
$langue_test=$id_langue;
|
- |
|
192 |
} else {
|
- |
|
193 |
$langue_test=GEN_I18N_ID_DEFAUT;
|
- |
|
194 |
}
|
- |
|
195 |
|
- |
|
196 |
|
188 |
// Récupération des infos sur sur l'entrée du menu à afficher
|
197 |
// Récupération des infos sur sur l'entrée du menu à afficher
|
189 |
$menu_info = GEN_lireInfoMenu($objet_pear_db, $id_pere_menu_a_deployer, DB_FETCHMODE_ASSOC);
|
198 |
$menu_info = GEN_lireInfoMenu($objet_pear_db, $id_pere_menu_a_deployer, DB_FETCHMODE_ASSOC);
|
190 |
// Gestion des menus uniques
|
199 |
// Gestion des menus uniques
|
191 |
if ($menu_type == 'unique' && ($menu_info['gm_date_fin_validite'] == '0000-00-00 00:00:00' || strtotime($menu_info['gm_date_fin_validite']) > time() )) {
|
200 |
if ($menu_type == 'unique' && ($menu_info['gm_date_fin_validite'] == '0000-00-00 00:00:00' || strtotime($menu_info['gm_date_fin_validite']) > time() )) {
|
192 |
$retour .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
|
201 |
$retour .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
|
Line 224... |
Line 233... |
224 |
$requete = 'SELECT gm_id_menu, gm_date_fin_validite, GMR01.gmr_ordre '.
|
233 |
$requete = 'SELECT gm_id_menu, gm_date_fin_validite, GMR01.gmr_ordre '.
|
225 |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
|
234 |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
|
226 |
'WHERE GMR01.gmr_id_menu_01 = gm_id_menu '.
|
235 |
'WHERE GMR01.gmr_id_menu_01 = gm_id_menu '.
|
227 |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
|
236 |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
|
228 |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
|
237 |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
|
229 |
'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 ';
|
238 |
'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
|
- |
|
239 |
'AND gm_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" ';
|
230 |
$requete .= 'AND GMR01.gmr_id_menu_02 = '.$id_pere_menu_a_deployer.' ';
|
240 |
$requete .= 'AND GMR01.gmr_id_menu_02 = '.$id_pere_menu_a_deployer.' ';
|
Line 231... |
Line 241... |
231 |
|
241 |
|
232 |
if ($menu_type == 'classique' || $menu_type == 'deroulant') {
|
242 |
if ($menu_type == 'classique' || $menu_type == 'deroulant') {
|
233 |
$requete .= 'AND gm_ce_site = '.$id_site.' '.
|
243 |
$requete .= 'AND gm_ce_site = '.$id_site.' '.
|
Line 241... |
Line 251... |
241 |
//$GLOBALS['_GEN_commun']['debogage_info'] .= $requete;
|
251 |
//$GLOBALS['_GEN_commun']['debogage_info'] .= $requete;
|
Line 242... |
Line 252... |
242 |
|
252 |
|
243 |
$resultat = $objet_pear_db->query($requete);
|
253 |
$resultat = $objet_pear_db->query($requete);
|
Line -... |
Line 254... |
- |
|
254 |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
|
- |
|
255 |
|
- |
|
256 |
|
- |
|
257 |
$liste_menu=array();
|
- |
|
258 |
|
- |
|
259 |
|
- |
|
260 |
// On ne retient pas les menus qui sont des traductions ...
|
- |
|
261 |
|
- |
|
262 |
|
244 |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
|
263 |
|
- |
|
264 |
|
- |
|
265 |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
|
- |
|
266 |
|
- |
|
267 |
if ($langue_test == GEN_I18N_ID_DEFAUT) {
|
- |
|
268 |
|
- |
|
269 |
// Le menu n'est pas une traduction : on le traite
|
- |
|
270 |
$requete_est_traduction = 'SELECT gmr_id_menu_01 '.
|
- |
|
271 |
'FROM gen_menu_relation '.
|
- |
|
272 |
'WHERE '.$ligne->gm_id_menu.' = gmr_id_menu_02 ' .
|
- |
|
273 |
'AND gmr_id_menu_01 <> gmr_id_menu_02 '.
|
- |
|
274 |
'AND gmr_id_valeur = 2 ';// 2 = "avoir traduction"
|
- |
|
275 |
$resultat_est_traduction = $objet_pear_db->query($requete_est_traduction);
|
- |
|
276 |
(DB::isError($resultat_est_traduction))
|
- |
|
277 |
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction))
|
- |
|
278 |
: '';
|
- |
|
279 |
|
- |
|
280 |
if ( $resultat_est_traduction->numRows() == 0 ) {
|
- |
|
281 |
$liste_menu[]=$ligne;
|
- |
|
282 |
}
|
- |
|
283 |
}
|
- |
|
284 |
// Par defaut, on traite tous les menus trouvés
|
- |
|
285 |
else {
|
- |
|
286 |
$liste_menu[]=$ligne;
|
- |
|
287 |
}
|
- |
|
288 |
|
- |
|
289 |
}
|
- |
|
290 |
|
- |
|
291 |
if (!function_exists(cmp)) {
|
- |
|
292 |
function cmp($a, $b) {
|
- |
|
293 |
if ($a->gmr_ordre == $b->gmr_ordre) {
|
- |
|
294 |
return 0;
|
- |
|
295 |
}
|
- |
|
296 |
return ($a->gmr_ordre < $b->gmr_ordre) ? -1 : 1;
|
- |
|
297 |
}
|
- |
|
298 |
}
|
- |
|
299 |
|
- |
|
300 |
usort ($liste_menu,"cmp");
|
- |
|
301 |
|
245 |
|
302 |
foreach ($liste_menu as $ligne) {
|
246 |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
|
303 |
//while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
|
247 |
if ($ligne->gm_date_fin_validite == '' || $ligne->gm_date_fin_validite == '0000-00-00 00:00:00' || strtotime($ligne->gm_date_fin_validite) > time()) {
|
304 |
if ($ligne->gm_date_fin_validite == '' || $ligne->gm_date_fin_validite == '0000-00-00 00:00:00' || strtotime($ligne->gm_date_fin_validite) > time()) {
|
248 |
// On commence par regarder si le menu existe dans la langue demandée
|
- |
|
249 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
- |
|
250 |
$requete_i18n = 'SELECT gm_id_menu '.
|
- |
|
251 |
'FROM gen_menu, gen_menu_relation '.
|
- |
|
252 |
'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
|
- |
|
253 |
'AND gmr_id_menu_02 = gm_id_menu '.
|
- |
|
254 |
'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
|
- |
|
255 |
'AND gm_ce_i18n = "'.$id_langue.'"';
|
- |
|
256 |
|
- |
|
Line 257... |
Line -... |
257 |
$resultat_i18n = $objet_pear_db->query($requete_i18n);
|
- |
|
258 |
(DB::isError($resultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_i18n->getMessage(), $requete_i18n)) : '';
|
- |
|
259 |
|
- |
|
260 |
// Récupération de l'id du menu à afficher
|
- |
|
261 |
if ($resultat_i18n->numRows() != 0) {
|
- |
|
262 |
$id_menu_i18n = $resultat_i18n->fetchRow(DB_FETCHMODE_OBJECT);
|
- |
|
263 |
$id_menu_inf = $id_menu_i18n->gm_id_menu;
|
305 |
// On commence par regarder si le menu existe dans la langue demandée
|
264 |
$resultat_i18n->free();
|
- |
|
265 |
} else {
|
306 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
266 |
$id_menu_inf = $ligne->gm_id_menu;
|
307 |
|
267 |
}
|
308 |
$id_menu_inf = $ligne->gm_id_menu;
|
268 |
$id_menu_selectionne = '';
|
309 |
$id_menu_selectionne = '';
|
269 |
if (isset($GLOBALS['_GEN_commun']['info_menu']->gm_id_menu)) {
|
310 |
if (isset($GLOBALS['_GEN_commun']['info_menu']->gm_id_menu)) {
|
Line 320... |
Line 361... |
320 |
}
|
361 |
}
|
Line 321... |
Line 362... |
321 |
|
362 |
|
322 |
$resultat_fils->free();
|
363 |
$resultat_fils->free();
|
323 |
}
|
364 |
}
|
324 |
}
|
- |
|
Line 325... |
Line 365... |
325 |
$resultat->free();
|
365 |
}
|
326 |
|
366 |
|
327 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
367 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
Line 351... |
Line 391... |
351 |
* @param mixed objet Pear DB de connexion à la base de données.
|
391 |
* @param mixed objet Pear DB de connexion à la base de données.
|
352 |
* @param integer niveau du menu.
|
392 |
* @param integer niveau du menu.
|
353 |
* @param integer ordre du menu dans le niveau.
|
393 |
* @param integer ordre du menu dans le niveau.
|
354 |
* @return string liste représentant le menu duHTML
|
394 |
* @return string liste représentant le menu duHTML
|
355 |
*/
|
395 |
*/
|
356 |
function afficherEntreeListeMenu($db, $menu_id, $i18n_url, $niveau, $ordre, $position, $menu_type, $indent_origine = 12, $indent_pas = 4, $_GEN_commun, $num_menu)
|
396 |
function afficherEntreeListeMenu($db, $menu_id, $i18n, $niveau, $ordre, $position, $menu_type, $indent_origine = 12, $indent_pas = 4, $_GEN_commun, $num_menu)
|
357 |
{
|
397 |
{
|
- |
|
398 |
|
- |
|
399 |
// GEN_I18N_ID_DEFAUT;
|
- |
|
400 |
|
- |
|
401 |
|
- |
|
402 |
$id_langue = $GLOBALS['_GEN_commun']['i18n'];
|
- |
|
403 |
|
- |
|
404 |
if (isset($id_langue) && ($id_langue!='')) {
|
- |
|
405 |
$langue_test=$id_langue;
|
- |
|
406 |
} else {
|
- |
|
407 |
$langue_test=GEN_I18N_ID_DEFAUT;
|
- |
|
408 |
}
|
- |
|
409 |
|
- |
|
410 |
$requete_traduction = 'SELECT gmr_id_menu_02, gm_ce_i18n '.
|
- |
|
411 |
'FROM gen_menu_relation, gen_menu '.
|
- |
|
412 |
'WHERE '.$menu_id.' = gmr_id_menu_01 ' .
|
- |
|
413 |
'AND gmr_id_menu_02 = gm_id_menu '.
|
- |
|
414 |
'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
|
- |
|
415 |
'AND gm_ce_i18n = "'.$langue_test.'" ';
|
- |
|
416 |
$resultat_traduction = $db->query($requete_traduction);
|
- |
|
417 |
(DB::isError($resultat_traduction)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction))
|
- |
|
418 |
: '';
|
- |
|
419 |
|
- |
|
420 |
if ($resultat_traduction->numRows() > 0) {
|
- |
|
421 |
$ligne_resultat_traduction=$resultat_traduction->fetchRow(DB_FETCHMODE_ASSOC);
|
- |
|
422 |
$menu_id=$ligne_resultat_traduction['gmr_id_menu_02'];
|
- |
|
423 |
}
|
- |
|
424 |
|
358 |
// Récupération des infos sur sur l'entrée du menu à afficher
|
425 |
// Récupération des infos sur sur l'entrée du menu à afficher
|
359 |
$menu_info = GEN_lireInfoMenu($db, $menu_id, DB_FETCHMODE_ASSOC);
|
426 |
$menu_info = GEN_lireInfoMenu($db, $menu_id, DB_FETCHMODE_ASSOC);
|
Line 360... |
Line 427... |
360 |
|
427 |
|
361 |
// Préparation d'une entrée dans la liste du menu
|
428 |
// Préparation d'une entrée dans la liste du menu
|
362 |
$menu_nom = htmlentities($menu_info['gm_nom']);
|
- |
|
363 |
$menu_hreflang = htmlentities($menu_info['gm_ce_i18n']);
|
429 |
$menu_nom = htmlentities($menu_info['gm_nom']);
|
364 |
$menu_accesskey = '';
|
430 |
$menu_accesskey = '';
|
365 |
$raccourci_txt = '';
|
431 |
$raccourci_txt = '';
|
366 |
if (($menu_accesskey = htmlentities($menu_info['gm_raccourci_clavier'])) != '') {
|
432 |
if (($menu_accesskey = htmlentities($menu_info['gm_raccourci_clavier'])) != '') {
|
367 |
$raccourci_txt = '[Raccourci : '.$menu_accesskey.' ] ';
|
433 |
$raccourci_txt = '[Raccourci : '.$menu_accesskey.' ] ';
|
Line 373... |
Line 439... |
373 |
}
|
439 |
}
|
Line 374... |
Line 440... |
374 |
|
440 |
|
375 |
// Préparation de l'url de l'entrée
|
441 |
// Préparation de l'url de l'entrée
|
376 |
$une_url =& new Pap_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
|
442 |
$une_url =& new Pap_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
|
377 |
$une_url->setId($menu_id);
|
443 |
$une_url->setId($menu_id);
|
- |
|
444 |
|
- |
|
445 |
if (isset($i18n) && ($i18n!='')) {
|
- |
|
446 |
$une_url->addQuerystring(GEN_URL_CLE_I18N,$i18n);
|
378 |
|
447 |
}
|
379 |
//Création d'une entrée dans la liste du menu
|
448 |
//Création d'une entrée dans la liste du menu
|
380 |
$espaces = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2)));
|
449 |
$espaces = str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2)));
|
381 |
$retour = $espaces.'<a id="menu_lien_'.$num_menu.'_'.$menu_id.'" href="'.$une_url->getURL().'" '.
|
- |
|
382 |
'hreflang="'.$menu_hreflang.'" '.$menu_texte_title.$menu_accesskey.'>'.$menu_nom.'</a>'."\n";
|
450 |
$retour = $espaces.'<a id="menu_lien_'.$num_menu.'_'.$menu_id.'" href="'.$une_url->getURL().'"'.$menu_texte_title.$menu_accesskey.'>'.$menu_nom.'</a>'."\n";
|
383 |
return $retour;
|
451 |
return $retour;
|
Line 384... |
Line 452... |
384 |
}
|
452 |
}
|
385 |
|
453 |
|
Line 389... |
Line 457... |
389 |
|
457 |
|
390 |
|
458 |
|
391 |
/* +--Fin du code ----------------------------------------------------------------------------------------+
|
459 |
/* +--Fin du code ----------------------------------------------------------------------------------------+
|
- |
|
460 |
*
|
- |
|
461 |
* $Log: not supported by cvs2svn $
|
- |
|
462 |
* Revision 1.22.2.2 2006/02/28 14:02:11 ddelon
|
- |
|
463 |
* Finition multilinguisme
|
- |
|
464 |
*
|
- |
|
465 |
* Revision 1.22.2.1 2005/12/20 14:40:25 ddelon
|
- |
|
466 |
* Fusion Head vers Livraison
|
- |
|
467 |
*
|
- |
|
468 |
* Revision 1.22 2005/09/27 08:42:49 ddelon
|
392 |
*
|
469 |
* Menu et Squelette
|
393 |
* $Log: not supported by cvs2svn $
|
470 |
*
|
394 |
* Revision 1.21 2005/09/22 14:02:49 ddelon
|
471 |
* Revision 1.21 2005/09/22 14:02:49 ddelon
|
395 |
* nettoyage annuaire et php5
|
472 |
* nettoyage annuaire et php5
|
396 |
*
|
473 |
*
|