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