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.15 2005-04-14 16:37:48 jpm Exp $
|
22 |
// CVS : $Id: menu.php,v 1.16 2005-04-19 16:47:24 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.15 $ $Date: 2005-04-14 16:37:48 $
|
41 |
*@version $Revision: 1.16 $ $Date: 2005-04-19 16:47:24 $
|
42 |
// +------------------------------------------------------------------------------------------------------+
|
42 |
// +------------------------------------------------------------------------------------------------------+
|
43 |
*/
|
43 |
*/
|
Line 44... |
Line 44... |
44 |
|
44 |
|
45 |
// +------------------------------------------------------------------------------------------------------+
|
45 |
// +------------------------------------------------------------------------------------------------------+
|
Line 171... |
Line 171... |
171 |
* @param integer niveau de départ.
|
171 |
* @param integer niveau de départ.
|
172 |
* @param integer niveau d'arrivée (profondeur max demandée).
|
172 |
* @param integer niveau d'arrivée (profondeur max demandée).
|
173 |
* @param integer identifiant d'un menu pére.
|
173 |
* @param integer identifiant d'un menu pére.
|
174 |
* @return string les listes de menus au format XHTML.
|
174 |
* @return string les listes de menus au format XHTML.
|
175 |
*/
|
175 |
*/
|
176 |
function afficherListeNiveauMultiple( $objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur,
|
176 |
function afficherListeNiveauMultiple( &$objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart, $profondeur,
|
177 |
$id_pere_menu_a_deployer, $position, $menu_type, $indent_origine = 12,
|
177 |
$id_pere_menu_a_deployer, $position, $menu_type, $indent_origine = 12,
|
178 |
$indent_pas = 4, $_GEN_commun, $num_menu)
|
178 |
$indent_pas = 4, $_GEN_commun, $num_menu)
|
179 |
{
|
179 |
{
|
180 |
// Initialisation des variables
|
180 |
// Initialisation des variables
|
181 |
static $niveau_actuel = 1;
|
181 |
static $niveau_actuel = 1;
|
182 |
$retour = '';
|
182 |
$retour = '';
|
183 |
$tete = '';
|
183 |
$tete = '';
|
184 |
$corps = '';
|
184 |
$corps = '';
|
185 |
$pied = '';
|
185 |
$pied = '';
|
- |
|
186 |
// Récupération des infos sur sur l'entrée du menu à afficher
|
- |
|
187 |
$menu_info = GEN_lireInfoMenu($objet_pear_db, $id_pere_menu_a_deployer, DB_FETCHMODE_ASSOC);
|
- |
|
188 |
if ($menu_info['gm_date_fin_validite'] != '0000-00-00 00:00:00' && $menu_info['gm_date_fin_validite'] < date('Y-m-d G:i:s', time())) {
|
- |
|
189 |
echo $menu_info['gm_nom'].' - ok - '.date('Y-m-d G:i:s', time());
|
186 |
|
190 |
}
|
187 |
// Gestion des menus uniques
|
191 |
// Gestion des menus uniques
|
188 |
if ($menu_type == 'unique') {
|
192 |
if ($menu_type == 'unique' && ($menu_info['gm_date_fin_validite'] == '0000-00-00 00:00:00' || strtotime($menu_info['gm_date_fin_validite']) > time() )) {
|
189 |
$retour .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
|
193 |
$retour .= afficherEntreeListeMenu( $objet_pear_db, $id_pere_menu_a_deployer, $i18n_url,
|
190 |
$niveau_actuel, 1, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun, $num_menu);
|
194 |
$niveau_actuel, 1, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun, $num_menu);
|
191 |
// Dans le cas, d'un menu unique, on retourne directement le résultat ici.
|
195 |
// Dans le cas, d'un menu unique, on retourne directement le résultat ici.
|
192 |
return $retour;
|
196 |
return $retour;
|
193 |
}
|
197 |
}
|
Line 195... |
Line 199... |
195 |
if ($niveau_actuel > $profondeur) {
|
199 |
if ($niveau_actuel > $profondeur) {
|
196 |
return null;
|
200 |
return null;
|
197 |
}
|
201 |
}
|
Line 198... |
Line 202... |
198 |
|
202 |
|
199 |
// Nous regardons si nous devons afficher un menu racine
|
203 |
// Nous regardons si nous devons afficher un menu racine
|
200 |
if ($id_pere_menu_a_deployer != 0 && $niveau_actuel == 1) {
|
204 |
if ($id_pere_menu_a_deployer != 0 && $niveau_actuel == 1 && ($menu_info['gm_date_fin_validite'] == '0000-00-00 00:00:00' || strtotime($menu_info['gm_date_fin_validite']) > time() )) {
|
201 |
$tete .= str_repeat(' ', $indent_origine + ($indent_pas * $position)).
|
205 |
$tete .= str_repeat(' ', $indent_origine + ($indent_pas * $position)).
|
202 |
'<ul class="groupe_menu_'.$num_menu.'_'.$id_pere_menu_a_deployer.'" class="menu_'.$menu_type.'_'.'n'.$niveau_actuel.'">'."\n";
|
206 |
'<ul class="groupe_menu_'.$num_menu.'_'.$id_pere_menu_a_deployer.'" class="menu_'.$menu_type.'_'.'n'.$niveau_actuel.'">'."\n";
|
203 |
$id_menu_selectionne = $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu;
|
207 |
$id_menu_selectionne = $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu;
|
204 |
if (!empty($id_menu_selectionne) && (GEN_etreAncetre($id_pere_menu_a_deployer, $id_menu_selectionne) || $id_pere_menu_a_deployer == $id_menu_selectionne) ) {
|
208 |
if (!empty($id_menu_selectionne) && (GEN_etreAncetre($id_pere_menu_a_deployer, $id_menu_selectionne) || $id_pere_menu_a_deployer == $id_menu_selectionne) ) {
|
Line 216... |
Line 220... |
216 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
220 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
217 |
$tete .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).
|
221 |
$tete .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 1))).
|
218 |
'<ul id="groupe_menu_'.$num_menu.'_'.$id_pere_menu_a_deployer.'" class="menu_'.$menu_type.'_'.'n'.$niveau_actuel.'">'."\n";
|
222 |
'<ul id="groupe_menu_'.$num_menu.'_'.$id_pere_menu_a_deployer.'" class="menu_'.$menu_type.'_'.'n'.$niveau_actuel.'">'."\n";
|
219 |
}
|
223 |
}
|
Line 220... |
Line 224... |
220 |
|
224 |
|
221 |
$requete = 'SELECT gm_id_menu, GMR01.gmr_ordre '.
|
225 |
$requete = 'SELECT gm_id_menu, gm_date_fin_validite, GMR01.gmr_ordre '.
|
222 |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
|
226 |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
|
223 |
'WHERE GMR01.gmr_id_menu_01 = gm_id_menu '.
|
227 |
'WHERE GMR01.gmr_id_menu_01 = gm_id_menu '.
|
224 |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
|
228 |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
|
225 |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
|
229 |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
|
Line 237... |
Line 241... |
237 |
}
|
241 |
}
|
238 |
//$GLOBALS['_GEN_commun']['debogage_info'] .= $requete;
|
242 |
//$GLOBALS['_GEN_commun']['debogage_info'] .= $requete;
|
239 |
$resultat = $objet_pear_db->query($requete);
|
243 |
$resultat = $objet_pear_db->query($requete);
|
240 |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
|
244 |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
|
Line 241... |
Line 245... |
241 |
|
245 |
|
- |
|
246 |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
|
242 |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
|
247 |
if ($ligne->gm_date_fin_validite == '0000-00-00 00:00:00' || strtotime($ligne->gm_date_fin_validite) > time()) {
|
243 |
// On commence par regarder si le menu existe dans la langue demandée
|
248 |
// On commence par regarder si le menu existe dans la langue demandée
|
244 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
249 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
245 |
$requete_i18n = 'SELECT gm_id_menu '.
|
250 |
$requete_i18n = 'SELECT gm_id_menu '.
|
246 |
'FROM gen_menu, gen_menu_relation '.
|
251 |
'FROM gen_menu, gen_menu_relation '.
|
247 |
'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
|
252 |
'WHERE gmr_id_menu_01 = '.$ligne->gm_id_menu.' '.
|
248 |
'AND gmr_id_menu_02 = gm_id_menu '.
|
253 |
'AND gmr_id_menu_02 = gm_id_menu '.
|
249 |
'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
|
254 |
'AND gmr_id_valeur = 2 '.// 2 = "avoir traduction"
|
- |
|
255 |
'AND gm_ce_i18n = "'.$id_langue.'"';
|
- |
|
256 |
|
- |
|
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;
|
- |
|
264 |
$resultat_i18n->free();
|
- |
|
265 |
} else {
|
- |
|
266 |
$id_menu_inf = $ligne->gm_id_menu;
|
- |
|
267 |
}
|
- |
|
268 |
$id_menu_selectionne = '';
|
- |
|
269 |
if (isset($GLOBALS['_GEN_commun']['info_menu']->gm_id_menu)) {
|
- |
|
270 |
$id_menu_selectionne = $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu;
|
- |
|
271 |
}
|
- |
|
272 |
// On vérifie si le menu est le menu sélectionné
|
- |
|
273 |
if (!empty($id_menu_selectionne) && (GEN_etreAncetre($id_menu_inf, $id_menu_selectionne) || $id_menu_inf == $id_menu_selectionne) ) {
|
- |
|
274 |
$classe = 'menu_actif';
|
- |
|
275 |
} else {
|
- |
|
276 |
$classe = 'menu_inactif';
|
- |
|
277 |
}
|
- |
|
278 |
|
- |
|
279 |
// Affichage du menu
|
- |
|
280 |
$corps .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2))).
|
- |
|
281 |
'<li id="menu_'.$num_menu.'_'.$id_menu_inf.'" class="'.$classe.'">'."\n";
|
- |
|
282 |
$corps .= afficherEntreeListeMenu( $objet_pear_db, $id_menu_inf, $i18n_url, $niveau_actuel,
|
- |
|
283 |
$ligne->gmr_ordre, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun, $num_menu);
|
- |
|
284 |
}
|
- |
|
285 |
// Pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
|
- |
|
286 |
$requete_fils = 'SELECT gm_id_menu '.
|
- |
|
287 |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
|
- |
|
288 |
'WHERE GMR01.gmr_id_menu_02 = '.$ligne->gm_id_menu.' '.
|
- |
|
289 |
'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
|
- |
|
290 |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
|
- |
|
291 |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
|
- |
|
292 |
'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
|
- |
|
293 |
'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
|
- |
|
294 |
'ORDER BY GMR01.gmr_ordre ASC '.
|
Line 250... |
Line 295... |
250 |
'AND gm_ce_i18n = "'.$id_langue.'"';
|
295 |
'LIMIT 0,1';
|
251 |
|
- |
|
252 |
$resultat_i18n = $objet_pear_db->query($requete_i18n);
|
- |
|
253 |
(DB::isError($resultat_i18n)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_i18n->getMessage(), $requete_i18n)) : '';
|
- |
|
254 |
|
296 |
|
255 |
// Récupération de l'id du menu à afficher
|
297 |
$resultat_fils = $objet_pear_db->query($requete_fils);
|
256 |
if ($resultat_i18n->numRows() != 0) {
|
- |
|
257 |
$id_menu_i18n = $resultat_i18n->fetchRow(DB_FETCHMODE_OBJECT);
|
- |
|
258 |
$id_menu_inf = $id_menu_i18n->gm_id_menu;
|
298 |
(DB::isError($resultat_fils))
|
259 |
$resultat_i18n->free();
|
- |
|
260 |
} else {
|
299 |
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_fils->getMessage(), $requete_fils))
|
261 |
$id_menu_inf = $ligne->gm_id_menu;
|
- |
|
262 |
}
|
300 |
: '';
|
263 |
$id_menu_selectionne = '';
|
301 |
|
264 |
if (isset($GLOBALS['_GEN_commun']['info_menu']->gm_id_menu)) {
|
302 |
if ($resultat_fils->numRows() != 0 && $ligne->gm_id_menu == $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu
|
265 |
$id_menu_selectionne = $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu;
|
303 |
|| GEN_etreAncetre($ligne->gm_id_menu, $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu) || $menu_type == 'deroulant') {
|
266 |
}
|
304 |
$niveau_actuel++;
|
267 |
// On vérifie si le menu est le menu sélectionné
|
305 |
$corps .= afficherListeNiveauMultiple( $objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart,
|
268 |
if (!empty($id_menu_selectionne) && (GEN_etreAncetre($id_menu_inf, $id_menu_selectionne) || $id_menu_inf == $id_menu_selectionne) ) {
|
306 |
$profondeur, $ligne->gm_id_menu, ($position + 3), $menu_type,
|
269 |
$classe = 'menu_actif';
|
307 |
null, null, $_GEN_commun, $num_menu);
|
270 |
} else {
|
308 |
// On ramène $niveau_actuel un cran plus bas
|
Line -... |
Line 309... |
- |
|
309 |
$niveau_actuel--;
|
271 |
$classe = 'menu_inactif';
|
310 |
}
|
272 |
}
|
311 |
|
273 |
|
312 |
|
- |
|
313 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
274 |
// Affichage du menu
|
314 |
$corps .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2))).'</li>'."\n";
|
275 |
$corps .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2))).
|
- |
|
276 |
'<li id="menu_'.$num_menu.'_'.$id_menu_inf.'" class="'.$classe.'">'."\n";
|
315 |
}
|
277 |
$corps .= afficherEntreeListeMenu( $objet_pear_db, $id_menu_inf, $i18n_url, $niveau_actuel,
|
- |
|
278 |
$ligne->gmr_ordre, $position, $menu_type, $indent_origine, $indent_pas, $_GEN_commun, $num_menu);
|
- |
|
279 |
}
|
- |
|
280 |
// Pour chaque menu on regarde s'il y a des fils. Si oui, on les déploie.
|
- |
|
281 |
$requete_fils = 'SELECT gm_id_menu '.
|
- |
|
282 |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
|
- |
|
283 |
'WHERE GMR01.gmr_id_menu_02 = '.$ligne->gm_id_menu.' '.
|
- |
|
284 |
'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
|
- |
|
285 |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = "avoir père"
|
- |
|
286 |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
|
- |
|
287 |
'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
|
- |
|
288 |
'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
|
- |
|
289 |
'ORDER BY GMR01.gmr_ordre ASC '.
|
- |
|
290 |
'LIMIT 0,1';
|
- |
|
291 |
|
- |
|
292 |
$resultat_fils = $objet_pear_db->query($requete_fils);
|
- |
|
293 |
(DB::isError($resultat_fils))
|
- |
|
294 |
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_fils->getMessage(), $requete_fils))
|
- |
|
295 |
: '';
|
- |
|
296 |
|
- |
|
297 |
if ($resultat_fils->numRows() != 0 && $ligne->gm_id_menu == $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu
|
- |
|
298 |
|| GEN_etreAncetre($ligne->gm_id_menu, $GLOBALS['_GEN_commun']['info_menu']->gm_id_menu) || $menu_type == 'deroulant') {
|
- |
|
299 |
$niveau_actuel++;
|
- |
|
300 |
$corps .= afficherListeNiveauMultiple( $objet_pear_db, $id_site, $id_langue, $i18n_url, $niveau_depart,
|
- |
|
301 |
$profondeur, $ligne->gm_id_menu, ($position + 3), $menu_type,
|
- |
|
302 |
null, null, $_GEN_commun, $num_menu);
|
- |
|
303 |
// On ramène $niveau_actuel un cran plus bas
|
- |
|
304 |
$niveau_actuel--;
|
- |
|
305 |
}
|
- |
|
306 |
|
- |
|
307 |
|
- |
|
308 |
if ($niveau_actuel >= $niveau_depart && $niveau_actuel <= $profondeur) {
|
- |
|
309 |
$corps .= str_repeat(' ', $indent_origine + ($indent_pas * ($position + 2))).'</li>'."\n";
|
- |
|
310 |
}
|
316 |
|
311 |
|
317 |
$resultat_fils->free();
|
Line 312... |
Line 318... |
312 |
$resultat_fils->free();
|
318 |
}
|
313 |
}
|
319 |
}
|
Line 378... |
Line 384... |
378 |
|
384 |
|
379 |
|
385 |
|
380 |
/* +--Fin du code ----------------------------------------------------------------------------------------+
|
386 |
/* +--Fin du code ----------------------------------------------------------------------------------------+
|
- |
|
387 |
*
|
- |
|
388 |
* $Log: not supported by cvs2svn $
|
- |
|
389 |
* Revision 1.15 2005/04/14 16:37:48 jpm
|
381 |
*
|
390 |
* Ajout de la gestion des URL avec la classe Pap_URL de Papyrus.
|
382 |
* $Log: not supported by cvs2svn $
|
391 |
*
|
383 |
* Revision 1.14 2005/03/02 11:02:33 jpm
|
392 |
* Revision 1.14 2005/03/02 11:02:33 jpm
|
384 |
* Suppression des espaces avant l'ouverture de la balise php.
|
393 |
* Suppression des espaces avant l'ouverture de la balise php.
|
385 |
*
|
394 |
*
|