19,7 → 19,7 |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: adme_menu_classique.fonct.php,v 1.6 2004-11-08 17:40:07 jpm Exp $ |
// CVS : $Id: adme_menu_classique.fonct.php,v 1.7 2004-11-09 12:37:34 jpm Exp $ |
/** |
* Fonctions de gestion des menus classiques |
* |
35,7 → 35,7 |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.6 $ $Date: 2004-11-08 17:40:07 $ |
*@version $Revision: 1.7 $ $Date: 2004-11-09 12:37:34 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
48,13 → 48,236 |
// | LISTE de FONCTIONS | |
// +------------------------------------------------------------------------------------------------------+ |
|
/** Fonction ADME_afficherListeMenuClassique () - Affiche un arbre de menu en xhtml |
* |
* Elle forme l'arbre des menus classiques à administrer. |
* Ancien nom : deployer_menu(). |
* |
* @param object objet Pear de connection à la base de données. |
* @param object objet Pear représentant l'url de base. |
* @param integer l'identifiant du menu à administrer. |
* @param integer l'identifiant du menu sur lequel on agit. |
* @param string le nom de l'action courante. |
* @param integer l'identifiant du menu en cours de déploiement. |
* @param boolean true indique que l'on a à faire au premier appel de cette fonction récursive. |
* @return string le code XHTML constituant l'arbre des menus à administrer. |
*/ |
function ADME_afficherListeMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $adme_action, $id_menu_a_deployer, $bln_premier_appel = true) |
{ |
// Initialisation des variables : |
$retour = ''; |
|
// Est-ce que ces menus comporte des sous-menus ? |
$requete_sous_menu = 'SELECT gm_id_menu '. |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '. |
'WHERE GMR01.gmr_id_menu_02 = '.$id_menu_a_deployer.' '. |
'AND GMR01.gmr_id_menu_01 = gm_id_menu '. |
'AND gm_ce_site = '.$adme_site_id.' '. |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père" |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '. |
'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '. |
'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique" |
'ORDER BY GMR01.gmr_ordre ASC'; |
|
$resultat_sous_menu = $db->query($requete_sous_menu) ; |
if (DB::isError($resultat_sous_menu)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_sous_menu->getMessage(), $requete_sous_menu)); |
} |
|
// Gestion du stockage ou déstockage des menus ouverts |
if (($adme_action == 'adme_menu_ouvrir' || $adme_action == 'ajouter_menu_classique') && $id_menu_a_deployer != 0) { |
$_SESSION['adme_menus_classiques_ouverts'][$adme_menu_id] = $adme_menu_id; |
} |
if ($adme_action == 'adme_menu_fermer' && $id_menu_a_deployer != 0) { |
unset($_SESSION['adme_menus_classiques_ouverts'][$adme_menu_id]); |
foreach ($_SESSION['adme_menus_classiques_ouverts'] as $val) { |
if (GEN_etreAncetre($adme_menu_id, $val)) { |
unset($_SESSION['adme_menus_classiques_ouverts'][$val]); |
} |
} |
} |
|
// Gestion affichage des menus |
if ($resultat_sous_menu->numRows() > 0) { |
// Ici, on sait qu'un menu a des sous menus, on commence par l'afficher: |
if ($bln_premier_appel == false) { |
$retour .= '<li>'."\n"; |
|
if (GEN_etreAncetre($id_menu_a_deployer, $adme_menu_id) || |
($id_menu_a_deployer == $adme_menu_id && $adme_action == 'adme_menu_ouvrir') || |
isset($_SESSION['adme_menus_classiques_ouverts'][$id_menu_a_deployer]) |
){ |
// Affiche un - |
$retour .= ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $id_menu_a_deployer, 1); |
} else if ( !GEN_etreAncetre($id_menu_a_deployer, $adme_menu_id) || |
($id_menu_a_deployer == $adme_menu_id && $adme_action == 'adme_menu_fermer') || |
!isset($_SESSION['adme_menus_classiques_ouverts'][$id_menu_a_deployer]) |
){ |
// Affiche un + |
$retour .= ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $id_menu_a_deployer, 2); |
} |
} |
if ($bln_premier_appel == true || GEN_etreAncetre($id_menu_a_deployer, $adme_menu_id) || |
($id_menu_a_deployer == $adme_menu_id && $adme_action == 'adme_menu_ouvrir') || |
isset($_SESSION['adme_menus_classiques_ouverts'][$id_menu_a_deployer]) |
){ |
$retour .= '<ul>'."\n"; |
while ($ligne_sous_menu = $resultat_sous_menu->fetchRow(DB_FETCHMODE_OBJECT)) { |
$retour .= ADME_afficherListeMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $adme_action, $ligne_sous_menu->gm_id_menu, false); |
} |
$retour .= '</ul>'."\n"; |
} |
if ($bln_premier_appel == false) { |
$retour .= '</li>'."\n"; |
} |
} else if ($resultat_sous_menu->numRows() == 0 && $bln_premier_appel == false) { |
$retour .= '<li>'."\n"; |
$retour .= ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $id_menu_a_deployer, 0); |
$retour .= '</li>'."\n"; |
} |
|
return $retour; |
} |
|
/** Fonction ADME_retournerXhtmlMenuClassique() - Effectue une sortie d'un menu en XHTML |
* |
* Retourne le XHTML d'une ligne de l'arbre des menus "classiques" permettant de l'administer. |
* Ancien nom : menu_toHtml(). |
* |
* @param object objet Pear de connection à la base de données. |
* @param object objet Pear représentant l'url de base. |
* @param integer l'identifiant du site à administrer. |
* @param integer l'identifiant du menu à administrer. |
* @param integer 0 indique que le menu ne possède pas de fils, 1 qu'il faut afficher un - et 2 un +. |
* @return string une ligne de liste XHTML |
*/ |
function ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $int_deplier) |
{ |
$etiquette_annuler = 'Annuler'; |
$etiquette_alt_modifier = 'Modifier'; |
$etiquette_title_modifier = 'Modifier ce menu'; |
$etiquette_alt_supprimer = 'Supprimer'; |
$etiquette_title_supprimer = 'Supprimer ce menu'; |
$etiquette_alt_ajouter = 'Ajouter'; |
$etiquette_title_ajouter = 'Ajouter un menu inférieur'; |
$etiquette_alt_monter = 'Monter'; |
$etiquette_title_monter = 'Monter ce menu'; |
$etiquette_alt_descendre = 'Descendre'; |
$etiquette_title_descendre = 'Descendre ce menu'; |
$etiquette_alt_redaction = 'Rédiger'; |
$etiquette_title_redaction = 'Rédiger le contenu de ce menu'; |
$etiquette_deplier = 'Déplier'; |
$etiquette_plier = 'Plier'; |
|
$requete = 'SELECT gen_menu.*, ga_prenom '. |
'FROM gen_menu, gen_annuaire '. |
'WHERE gm_id_menu = '.$adme_menu_id.' '. |
'AND gm_ce_admin = ga_id_administrateur'; |
|
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)); |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
|
// recherche de l'application liée |
$requete_app = 'SELECT gap_nom '. |
'FROM gen_application '. |
'WHERE gap_id_application = '.$ligne->gm_ce_application; |
|
$resultat_app = $db->query($requete_app); |
if (DB::isError($resultat_app)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_app->getMessage(), $requete_app)); |
} |
$ligne_app = $resultat_app->fetchRow(DB_FETCHMODE_OBJECT); |
$resultat_app->free(); |
|
//------------------------------------------------------------------------------------------------------------------- |
// XHTML image plier-déplier |
|
$url->addQueryString('adme_site_id', $adme_site_id); |
$url->addQueryString('adme_menu_id', $ligne->gm_id_menu); |
$xhtml_pd = ''; |
if ($int_deplier != 0) { |
if ($int_deplier == 1) { |
// Afficher un - |
$image_plier_deplier = ADME_IMAGE_MOINS; |
$alt = $etiquette_plier; |
$url->addQueryString('adme_action', 'adme_menu_fermer'); |
$url_plier_deplier = $url->getURL(); |
} else if ($int_deplier == 2) { |
// Afficher un + |
$image_plier_deplier = ADME_IMAGE_PLUS; |
$alt = $etiquette_deplier; |
$url->addQueryString('adme_action', 'adme_menu_ouvrir'); |
$url_plier_deplier = $url->getURL(); |
} |
$xhtml_pd = '<a href="'.$url_plier_deplier.'" title="'.$alt.'">'. |
'<img class="'.ADME_CLASS_IMG_PD.'" src="'.$image_plier_deplier.'" alt="'.$alt.'" />'. |
'</a>'.' '."\n"; |
} |
|
//------------------------------------------------------------------------------------------------------------------- |
// XHTML du nom du menu et de ses infos |
$xhtml_info = htmlentities(empty($ligne->gm_nom) ? '('.$ligne->gm_nom.')' : $ligne->gm_nom); |
$xhtml_info .= ' '; |
$xhtml_info .= '('.$ligne_app->gap_nom.' / '.$ligne->ga_prenom.')'; |
$xhtml_info .= ' '."\n"; |
|
//------------------------------------------------------------------------------------------------------------------- |
// XHTML actions |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'modifier_menu_classique'); |
$xhtml_action = '<a href="'.$url->getURL().'" title="'.$etiquette_title_modifier.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_VOIR.'" alt="'.$etiquette_alt_modifier.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'monter_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_monter.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_FLECHE_HAUT.'" alt="'.$etiquette_alt_monter.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'descendre_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_descendre.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_FLECHE_BAS.'" alt="'.$etiquette_alt_descendre.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'supprimer_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_supprimer.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_SUPPRIMER.'" alt="'.$etiquette_alt_supprimer.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'ajouter_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_ajouter.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_NOUVEAU.'" alt="'.$etiquette_alt_ajouter.'" />'. |
'</a>'.' '."\n"; |
|
// Si l'application liée est "texte simple", on ajoute un icone avec un lien vers |
// l'administration de cette application. |
if ($ligne->gm_ce_application == 3) { // l'appli afficheur a pour id 3 |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'contenu_rediger'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_redaction.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_TEXTE.'" alt="'.$etiquette_alt_redaction.'" />'. |
'</a>'.' '."\n"; |
} |
|
//------------------------------------------------------------------------------------------------------------------- |
// Envoi du menu. |
$retour = $xhtml_pd.$xhtml_info.$xhtml_action; |
return $retour; |
} |
|
/** Fonction ADME_ajouterMenuClassique() - Ajoute un sous menu au menu courant |
* |
* Cette fonction permet d'ajouter un sous-menu de type "classique" au menu courant. |
* Ancien nom : addMenu() |
* |
* @param string Le projet courant |
* @param string La langue courante |
* @return void le menu classique est ajouté à la base de données. |
* @param object objet Pear de connection à la base de données. |
* @param object objet Pear d'authentification. |
* @param integer l'identifiant du site à administrer. |
* @param integer l'identifiant du menu à administrer. |
* @return void le menu classique est ajouté à la base de données. |
*/ |
function ADME_ajouterMenuClassique($db, $auth, $adme_site_id, $adme_menu_id) |
{ |
106,7 → 329,7 |
} |
//---------------------------------------------------------------------------- |
// Récupération d'infos sur la hierarchie du menu |
$requete = 'SELECT * '. |
$requete = 'SELECT GMR01.gmr_ordre '. |
'FROM gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '. |
'WHERE GMR01.gmr_id_menu_02 = '.$adme_menu_id.' '. |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père" |
138,7 → 361,7 |
$requete = 'SELECT * '. |
'FROM gen_menu_relation, gen_menu '. |
'WHERE gmr_id_menu_02 = gmr_id_menu_01 '. |
'AND gmr_id_valeur = 100 '.// 10 = type menu "classique" |
'AND gmr_id_valeur = 100 '.// 100 = type menu "classique" |
'AND gmr_id_menu_01 = gm_id_menu '. |
'AND gm_ce_site = '.$adme_site_id.' '. |
'ORDER BY gmr_ordre DESC'; |
160,38 → 383,36 |
(DB::isError($result)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $result->getMessage(), $requete)) : ''; |
} |
|
/** Fonction ADME_afficherFormMenuClassique() - Affiche le formulaire de saisie d'un menu |
/** Fonction ADME_afficherFormMenuClassique() - Affiche le formulaire pour un menu classique |
* |
* Utilise HTML_QuickForm pour générer le formulaire. |
* Ancien nom : showMenu() |
* |
* @return string Le HTML |
* @param object objet Pear de connection à la base de données. |
* @param object objet Pear représentant l'url de base. |
* @param integer l'identifiant du site à administrer. |
* @param integer l'identifiant du menu à administrer. |
* @param array le tableau associatif des valeurs à afficher dans le formulaire. |
* @return string le formulaire XHTML. |
*/ |
function ADME_afficherFormMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $aso_valeurs, $adme_menu_ouvert) |
function ADME_afficherFormMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $aso_valeurs) |
{ |
// Initialisation de variable |
$url->addQueryString('adme_site_id', $adme_site_id); |
$url->addQueryString('adme_menu_id', $adme_menu_id); |
$url->addQueryString('adme_menu_ouvert', $adme_menu_ouvert); |
|
// Nous sommes toujours en modification car un menu est ajouter automatiquement! |
// Récupération des informations du menu concerné. |
$aso_valeurs = GEN_lireInfoMenu($db, $adme_menu_id, DB_FETCHMODE_ASSOC); |
if ($aso_valeurs == false) { |
die('ERREUR Génésia Administrateur de Menus : impossible de lire les infos du menu.<br />'. |
'Idenitifiant du menu n° : '. $adme_menu_id .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br />'); |
if (!isset($aso_valeurs['menu_classique_verifier'])) { |
$aso_valeurs = GEN_lireInfoMenu($db, $adme_menu_id, DB_FETCHMODE_ASSOC); |
if ($aso_valeurs == false) { |
die('ERREUR Génésia Administrateur de Menus : impossible de lire les infos du menu.<br />'. |
'Idenitifiant du menu n° : '. $adme_menu_id .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br />'); |
} |
} |
/* |
// Récupération d'information sur le site de ce menu. |
$site = GEN_lireInfoSitePrincipalCodeAlpha($db, $adme_site); |
if ($site == false) { |
die('ERREUR Génésia Administrateur de Menus : impossible de lire les infos du site.<br />'. |
'Code alpha du site : '. $adme_site .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br />'); |
} |
*/ |
|
// Titre de la page |
$retour = '<h1>'.'Modification menu'.'</h1>'."\n"; |
|
399,12 → 620,17 |
$form->addElement('text', $id, $label, $aso_attributs); |
|
$partie_entete_fin = '</ul>'."\n".'</fieldset>'."\n"; |
$form->addElement('html', $partie_entete_fin); |
$bouton_validation = '<input type="submit" id="menu_modifier" name="menu_modifier" value="'.'Enregistrer'.'" title="'.'Enregistrer'.'" />'; |
$bouton_annuler = '<a class="bouton" href="'.$url->getURL().'" title="'.'Annuler'.'" >'.'Annuler'.'</a>'; |
$boutons = '<p>'."\n".$bouton_validation.' '."\n".$bouton_annuler."\n".'</p>'."\n"; |
$form->addElement('html', $boutons); |
|
$liste_bouton_debut = '<ul class="liste_bouton">'."\n"; |
$form->addElement('html', $liste_bouton_debut); |
|
$form->addElement('submit', 'menu_classique_verifier', 'Enregistrer'); |
$bouton_annuler = '<li><a class="bouton" href="'.$url->getURL().'" title="'.'Annuler'.'" >'.'Annuler'.'</a>'.'</li>'."\n"; |
$form->addElement('html', $bouton_annuler); |
|
$liste_bouton_fin = '</ul>'."\n"; |
$form->addElement('html', $liste_bouton_fin); |
|
// Instanciation avec les valeur par défaut |
$form->setDefaults($aso_valeurs); |
|
445,11 → 671,16 |
return $message; |
} |
|
/** Fonction ADME_modifierMenuClassique() - Enregistre les infos du formulaire de saisie d'un menu |
/** Fonction ADME_modifierMenuClassique() - Met à jour les infos d'un menu classique |
* |
* Fonction modifiant un menu commun à Papyrus. |
* Ancien nom : commitUpdateLevel() |
* |
* @return void les données sont enregistrées dans la base de données. |
* @param object objet Pear de connection à la base de données. |
* @param object objet Pear représentant l'authentification. |
* @param integer l'identifiant du menu à administrer. |
* @param array le tableau des valeurs à modifier. |
* @return void les changement sont fait dans la base de données. |
*/ |
function ADME_modifierMenuClassique($db, $auth, $adme_menu_id, $aso_valeurs) |
{ |
524,95 → 755,48 |
} |
} |
|
/** Fonction ADME_supprimerMenuClassique() - Supprime un menu classique. |
* |
* Supprime de la base de données de Génésia toutes les traces du menu classiques |
* passé en paramètre. |
* Ancien nom : deleteMenu() |
* |
* @param mixed l'objet Pear DB de connexion à la base de données. |
* @param string l'identifiant du menu à supprimer |
* @return void le menu classique est supprimé de la base de données. |
*/ |
function ADME_supprimerMenuClassique($db, $id_menu_a_supprimer) |
{ |
//---------------------------------------------------------------------------- |
// Y a t'il des sous_menus |
$requete = 'SELECT COUNT(gm_id_menu) AS compte '. |
'FROM gen_menu, gen_menu_relation '. |
'WHERE gmr_id_menu_02 = '.$id_menu_a_supprimer.' '. |
'AND gmr_id_valeur = 1 '. |
'AND gmr_id_menu_01 = gm_id_menu '; |
|
$resultat = $db->query($requete); |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : ''; |
|
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
|
if ($ligne && ($ligne->compte > 0)) { |
return 'Ce menu contient encore des sous menus. Veuillez commencez par supprimer ces sous menus.'; |
} |
|
//---------------------------------------------------------------------------- |
// S'il n'y a plus de sous niveau, on supprime le menu |
$requete = 'DELETE FROM gen_menu '. |
'WHERE gm_id_menu = '.$id_menu_a_supprimer; |
|
$resultat = $db->query($requete); |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : ''; |
|
//---------------------------------------------------------------------------- |
// Puis on supprime les relations de ce menu |
$requete = 'DELETE FROM gen_menu_relation '. |
'WHERE gmr_id_menu_01 = '.$id_menu_a_supprimer; |
|
$resultat = $db->query($requete); |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : ''; |
} |
|
/** Fonction ADME_deplacerMenuClassique() - Permet de déplacer un menu dans la hiérarchie. |
* |
* Permet de déplacer un menu dans la hiérarchie des menus classiques. |
* Ancien nom : moveMenu() |
* |
* @param mixed objet Pear DB de connexion à la base de données. |
* @param string code du site administré. |
* @param string identifiant de l'i18n du site administré. |
* @param int identifiant du menu à déplacer. |
* @param boolean indique si on veut monter le menu (true) ou le descendre (false). |
* @return void Modifie la base de données. |
* @param mixed objet Pear DB de connexion à la base de données. |
* @param string identifiant du site administré. |
* @param integer identifiant du menu à déplacer. |
* @param boolean indique si on veut monter le menu (true) ou le descendre (false). |
* @return void modifie la base de données. |
*/ |
function ADME_deplacerMenuClassique($db, $adme_site_id, $adme_menu_id, $bln_monter) |
{ |
//---------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------------------------------- |
// Récupération d'information sur le site de ce menu. |
$objet_site = GEN_lireInfoSitePrincipal($db, $adme_site_id); |
if ($objet_site == false) { |
die('ERREUR Génésia Administrateur de Menus : impossible de lire les infos du site.<br />'. |
die('ERREUR Papyrus Administrateur de Menus : impossible de lire les infos du site.<br />'. |
'Id du site : '. $adme_site_id .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br />'); |
} |
//---------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------------------------------- |
// Récupération d'informations sur les relations du menu courant. |
$ligne_menu_courant_relation = GEN_lireInfoMenuRelation($db, $adme_menu_id, '1'); |
if ($ligne_menu_courant_relation == false) { |
die('ERREUR Génésia Administrateur de Menus : impossible de lire les infos sur les relations du menu.<br />'. |
die('ERREUR Papyrus Administrateur de Menus : impossible de lire les infos sur les relations du menu.<br />'. |
'Identifiant menu : '. $adme_menu_id .'<br />'. |
'Identifiant valeur relation : 1 <br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br />'); |
} |
//---------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------------------------------- |
// Récupération de l'identifiant du menu pére |
$id_pere = GEN_lireIdentifiantMenuPere($adme_menu_id); |
if ($id_pere === false) { |
die('ERREUR Génésia Administrateur de Menus : impossible de lire identifiant du menu père.<br />'. |
die('ERREUR Papyrus Administrateur de Menus : impossible de lire identifiant du menu père.<br />'. |
'Identifiant menu fils : '. $adme_menu_id .'<br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier n° : '. __FILE__ .'<br />'); |
} |
//---------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------------------------------- |
// Recherche d'information sur le menu précédent ou suivant le menu courant |
$requete = 'SELECT GMR01.gmr_ordre AS nouvel_ordre, GMR01.gmr_id_menu_01 AS id_menu_remplace '. |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '. |
635,12 → 819,12 |
|
$ligne_menu = $resultat_menu->fetchRow(DB_FETCHMODE_OBJECT); |
$resultat_menu->free(); |
//---------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------------------------------- |
// Si la requete ne retourne rien nous ne faisons rien. |
if (! $ligne_menu) { |
return null; |
} |
//---------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------------------------------- |
// Mise à jour des relations du menu courant |
$requete = 'UPDATE gen_menu_relation SET '. |
'gmr_ordre = '.$ligne_menu->nouvel_ordre.' '. |
649,7 → 833,7 |
|
$resultat_update = $db->query($requete); |
(DB::isError($resultat_update)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_update->getMessage(), $requete)) : ''; |
//---------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------------------------------- |
// Mise à jour des relations du menu précédent ou suivant |
$requete = 'UPDATE gen_menu_relation SET '. |
'gmr_ordre = '.$ligne_menu_courant_relation->gmr_ordre.' '. |
660,216 → 844,50 |
(DB::isError($resultat_update)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_update->getMessage(), $requete)) : ''; |
} |
|
/** Fonction ADME_afficherListeMenuClassique () - Affiche un menu en html |
/** Fonction ADME_supprimerMenuClassique() - Supprime un menu classique. |
* |
* Elle déploie un les sous-menu d'un menu. |
* Ancien nom : deployer_menu(). |
* Supprime de la base de données de Génésia toutes les traces du menu classiques |
* passé en paramètre. |
* Ancien nom : deleteMenu() |
* |
* @param object objet Pear de connection à la base de données. |
* @param string code alphanumérique du site à administrer. |
* @param integer l'identifiant du menu à administrer. |
* @param integer l'identifiant du menu qui doit être ouvert. |
* @param integer l'identifiant du menu qui doit être déployé. |
* @return string du code XHTML. |
* @param mixed l'objet Pear DB de connexion à la base de données. |
* @param string l'identifiant du menu à supprimer |
* @return void le menu classique est supprimé de la base de données. |
*/ |
function ADME_afficherListeMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $adme_action, $id_menu_a_deployer, $bln_premier_appel = true) |
function ADME_supprimerMenuClassique($db, $id_menu_a_supprimer) |
{ |
// Initialisation des variables : |
$retour = ''; |
//---------------------------------------------------------------------------- |
// Y a t'il des sous_menus |
$requete = 'SELECT COUNT(gm_id_menu) AS compte '. |
'FROM gen_menu, gen_menu_relation '. |
'WHERE gmr_id_menu_02 = '.$id_menu_a_supprimer.' '. |
'AND gmr_id_valeur = 1 '. |
'AND gmr_id_menu_01 = gm_id_menu '; |
|
// Est-ce que ces menus comporte des sous-menus ? |
$requete_sous_menu = 'SELECT gm_id_menu '. |
'FROM gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '. |
'WHERE GMR01.gmr_id_menu_02 = '.$id_menu_a_deployer.' '. |
'AND GMR01.gmr_id_menu_01 = gm_id_menu '. |
'AND gm_ce_site = '.$adme_site_id.' '. |
'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père" |
'AND GMR02.gmr_id_menu_02 = gm_id_menu '. |
'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '. |
'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique" |
'ORDER BY GMR01.gmr_ordre ASC'; |
$resultat = $db->query($requete); |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : ''; |
|
$resultat_sous_menu = $db->query($requete_sous_menu) ; |
if (DB::isError($resultat_sous_menu)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_sous_menu->getMessage(), $requete_sous_menu)); |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
|
// Gestion du stockage ou déstockage des menus ouverts |
if ($adme_action == 'adme_menu_ouvrir' && $id_menu_a_deployer != 0) { |
$_SESSION['adme_menus_ouverts'][$adme_menu_id] = $adme_menu_id; |
if ($ligne && ($ligne->compte > 0)) { |
return 'Ce menu contient encore des sous menus. Veuillez commencez par supprimer ces sous menus.'; |
} |
if ($adme_action == 'adme_menu_fermer' && $id_menu_a_deployer != 0) { |
unset($_SESSION['adme_menus_ouverts'][$adme_menu_id]); |
foreach ($_SESSION['adme_menus_ouverts'] as $val) { |
if (GEN_etreAncetre($adme_menu_id, $val)) { |
unset($_SESSION['adme_menus_ouverts'][$val]); |
} |
} |
} |
|
// Gestion affichage des menus |
if ($resultat_sous_menu->numRows() > 0) { |
// Ici, on sait qu'un menu a des sous menus, on commence par l'afficher: |
if ($bln_premier_appel == false) { |
$retour .= '<li>'."\n"; |
|
if (GEN_etreAncetre($id_menu_a_deployer, $adme_menu_id) || |
($id_menu_a_deployer == $adme_menu_id && $adme_action == 'adme_menu_ouvrir') || |
isset($_SESSION['adme_menus_ouverts'][$id_menu_a_deployer]) |
){ |
// Affiche un - |
$retour .= ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $id_menu_a_deployer, 1); |
} else if ( !GEN_etreAncetre($id_menu_a_deployer, $adme_menu_id) || |
($id_menu_a_deployer == $adme_menu_id && $adme_action == 'adme_menu_fermer') || |
!isset($_SESSION['adme_menus_ouverts'][$id_menu_a_deployer]) |
){ |
// Affiche un + |
$retour .= ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $id_menu_a_deployer, 2); |
} |
} |
if ($bln_premier_appel == true || GEN_etreAncetre($id_menu_a_deployer, $adme_menu_id) || |
($id_menu_a_deployer == $adme_menu_id && $adme_action == 'adme_menu_ouvrir') || |
isset($_SESSION['adme_menus_ouverts'][$id_menu_a_deployer]) |
){ |
$retour .= '<ul>'."\n"; |
while ($ligne_sous_menu = $resultat_sous_menu->fetchRow(DB_FETCHMODE_OBJECT)) { |
$retour .= ADME_afficherListeMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $adme_action, $ligne_sous_menu->gm_id_menu, false); |
} |
$retour .= '</ul>'."\n"; |
} |
if ($bln_premier_appel == false) { |
$retour .= '</li>'."\n"; |
} |
} else if ($resultat_sous_menu->numRows() == 0 && $bln_premier_appel == false) { |
$retour .= '<li>'."\n"; |
$retour .= ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $id_menu_a_deployer, 0); |
$retour .= '</li>'."\n"; |
} |
//---------------------------------------------------------------------------- |
// S'il n'y a plus de sous niveau, on supprime le menu |
$requete = 'DELETE FROM gen_menu '. |
'WHERE gm_id_menu = '.$id_menu_a_supprimer; |
|
return $retour; |
} |
|
/** Fonction ADME_retournerXhtmlMenuClassique () Effectue une sortie d'un menu en XHTML |
* |
* Ancien nom : menu_toHtml(). |
* |
* @return string Une liste HTML |
*/ |
function ADME_retournerXhtmlMenuClassique($db, $url, $adme_site_id, $adme_menu_id, $int_deplier) |
{ |
$etiquette_annuler = 'Annuler'; |
$etiquette_alt_modifier = 'Modifier'; |
$etiquette_title_modifier = 'Modifier ce menu'; |
$etiquette_alt_supprimer = 'Supprimer'; |
$etiquette_title_supprimer = 'Supprimer ce menu'; |
$etiquette_alt_ajouter = 'Ajouter'; |
$etiquette_title_ajouter = 'Ajouter un menu inférieur'; |
$etiquette_alt_monter = 'Monter'; |
$etiquette_title_monter = 'Monter ce menu'; |
$etiquette_alt_descendre = 'Descendre'; |
$etiquette_title_descendre = 'Descendre ce menu'; |
$etiquette_alt_redaction = 'Rédiger'; |
$etiquette_title_redaction = 'Rédiger le contenu de ce menu'; |
$etiquette_deplier = 'Déplier'; |
$etiquette_plier = 'Plier'; |
$resultat = $db->query($requete); |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : ''; |
|
$requete = 'SELECT gen_menu.*, ga_prenom '. |
'FROM gen_menu, gen_annuaire '. |
'WHERE gm_id_menu = '.$adme_menu_id.' '. |
'AND gm_ce_admin = ga_id_administrateur'; |
//---------------------------------------------------------------------------- |
// Puis on supprime les relations de ce menu |
$requete = 'DELETE FROM gen_menu_relation '. |
'WHERE gmr_id_menu_01 = '.$id_menu_a_supprimer; |
|
$resultat = $db->query($requete); |
if (DB::isError($resultat)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)); |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT); |
|
// recherche de l'application liée |
$requete_app = 'SELECT gap_nom '. |
'FROM gen_application '. |
'WHERE gap_id_application = '.$ligne->gm_ce_application; |
|
$resultat_app = $db->query($requete_app); |
if (DB::isError($resultat_app)) { |
die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_app->getMessage(), $requete_app)); |
} |
$ligne_app = $resultat_app->fetchRow(DB_FETCHMODE_OBJECT); |
$resultat_app->free(); |
|
//------------------------------------------------------------------------------------------------------------------- |
// XHTML image plier-déplier |
|
$url->addQueryString('adme_site_id', $adme_site_id); |
$url->addQueryString('adme_menu_id', $ligne->gm_id_menu); |
$xhtml_pd = ''; |
if ($int_deplier != 0) { |
if ($int_deplier == 1) { |
// Afficher un - |
$image_plier_deplier = ADME_IMAGE_MOINS; |
$alt = $etiquette_plier; |
$url->addQueryString('adme_action', 'adme_menu_fermer'); |
$url_plier_deplier = $url->getURL(); |
} else if ($int_deplier == 2) { |
// Afficher un + |
$image_plier_deplier = ADME_IMAGE_PLUS; |
$alt = $etiquette_deplier; |
$url->addQueryString('adme_action', 'adme_menu_ouvrir'); |
$url_plier_deplier = $url->getURL(); |
} |
$xhtml_pd = '<a href="'.$url_plier_deplier.'" title="'.$alt.'">'. |
'<img class="'.ADME_CLASS_IMG_PD.'" src="'.$image_plier_deplier.'" alt="'.$alt.'" />'. |
'</a>'.' '."\n"; |
} |
|
//------------------------------------------------------------------------------------------------------------------- |
// XHTML du nom du menu et de ses infos |
$xhtml_info = htmlentities(empty($ligne->gm_nom) ? '('.$ligne->gm_nom.')' : $ligne->gm_nom); |
$xhtml_info .= ' '; |
$xhtml_info .= '('.$ligne_app->gap_nom.' / '.$ligne->ga_prenom.')'; |
$xhtml_info .= ' '."\n"; |
|
//------------------------------------------------------------------------------------------------------------------- |
// XHTML actions |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'modifier_menu_classique'); |
$xhtml_action = '<a href="'.$url->getURL().'" title="'.$etiquette_title_modifier.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_VOIR.'" alt="'.$etiquette_alt_modifier.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'monter_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_monter.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_FLECHE_HAUT.'" alt="'.$etiquette_alt_monter.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'descendre_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_descendre.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_FLECHE_BAS.'" alt="'.$etiquette_alt_descendre.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'supprimer_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_supprimer.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_SUPPRIMER.'" alt="'.$etiquette_alt_supprimer.'" />'. |
'</a> '."\n"; |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'ajouter_menu_classique'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_ajouter.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_NOUVEAU.'" alt="'.$etiquette_alt_ajouter.'" />'. |
'</a>'.' '."\n"; |
|
// Si l'application liée est "texte simple", on ajoute un icone avec un lien vers |
// l'administration de cette application. |
if ($ligne->gm_ce_application == 3) { // l'appli afficheur a pour id 3 |
$url->removeQueryString('adme_action'); |
$url->addQueryString('adme_action', 'contenu_rediger'); |
$xhtml_action .= '<a href="'.$url->getURL().'" title="'.$etiquette_title_redaction.'">'. |
'<img class="'.ADME_CLASS_IMG_ICONE.'" src="'.ADME_IMAGE_TEXTE.'" alt="'.$etiquette_alt_redaction.'" />'. |
'</a>'.' '."\n"; |
} |
|
//------------------------------------------------------------------------------------------------------------------- |
// Envoi du menu. |
$retour = $xhtml_pd.$xhtml_info.$xhtml_action; |
return $retour; |
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : ''; |
} |
|
// +------------------------------------------------------------------------------------------------------+ |
880,6 → 898,10 |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.6 2004/11/08 17:40:07 jpm |
* Gestion correcte de l'ouverture et fermeture des menus. |
* Utilisation des sessions. |
* |
* Revision 1.5 2004/11/04 19:11:38 jpm |
* Mise en conformité vis à vis de la convention de codage. |
* Amélioration de la récursivité de la gestion de l'affichage des menus. |