Subversion Repositories Applications.papyrus

Rev

Rev 1688 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1090 florian 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
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                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
1849 jp_milcent 22
// CVS : $Id: vous_etes_ici.php,v 1.13.2.1 2008-08-08 15:10:06 jp_milcent Exp $
1090 florian 23
/**
24
* Applette : Vous Etes Ici
25
*
26
* Affiche les liens contenant la suite des menus visités pour arriver
27
* au menu courant visioné par l'utilisateur.
28
* Nécessite :
29
* - Constantes et variable de Papyrus.
30
* - Base de données de Papyrus
31
* - Pear Net_URL
32
* - Pear DB
33
* - API Débogage 1.0
34
*
35
*@package Applette
36
*@subpackage Vous_Etes_Ici
37
//Auteur original :
38
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
39
//Autres auteurs :
40
*@author        Aucun
41
*@copyright     Tela-Botanica 2000-2004
1849 jp_milcent 42
*@version       $Revision: 1.13.2.1 $ $Date: 2008-08-08 15:10:06 $
1090 florian 43
// +------------------------------------------------------------------------------------------------------+
44
*/
45
 
46
// +------------------------------------------------------------------------------------------------------+
47
// |                                            ENTÊTE du PROGRAMME                                       |
48
// +------------------------------------------------------------------------------------------------------+
338 jpm 49
// Inclusion de la bibliothèque defonction sur les menu : inutile car inclue par Papyrus
50
// require_once GEN_CHEMIN_BIBLIO.'pap_menu.fonct.php';
51
 
52
$GLOBALS['_VEI_']['nom_fonction'] = 'afficherVousEtesIci';
1090 florian 53
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = $GLOBALS['_VEI_']['nom_fonction'];
1145 jp_milcent 54
$GLOBALS['_GEN_commun']['info_applette_balise'] = 	'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(VOUS_ETES_ICI) -->|'.
55
													'\{\{[Vv]ousEtesIci\s*\}\})';
1090 florian 56
 
57
// +------------------------------------------------------------------------------------------------------+
58
// |                                            CORPS du PROGRAMME                                        |
59
// +------------------------------------------------------------------------------------------------------+
60
 
61
 
62
 
63
// +------------------------------------------------------------------------------------------------------+
64
// |                                           LISTE de FONCTIONS                                         |
65
// +------------------------------------------------------------------------------------------------------+
66
 
67
/** Fonction afficherVousEtesIci() - Déploie le "vous êtes ici" d'un menu.
68
*
69
* Affiche la suite des menus visité, sous forme de lien, pour arriver
70
* au menu courant visioné par l'utilisateur.
71
* Necessite :
72
* - Constantes et variable de Papyrus.
73
* - Pear Net_URL
74
* - Pear DB
75
*
76
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction.
77
* @param  array  tableau global de Papyrus.
78
* @param int identifiant du menu courant qui représentent la fin du "vous êtes ici".
79
* @param boolean indique que nous avons à faire au premier appel de cette fonction récursive.
80
* @return  string  une liste de listes XHTML représentant le plan du site.
81
*/
82
function afficherVousEtesIci($tab_arguments, $_GEN_commun, $menu_courant_id = '', $premier_appel = true)
83
{
84
    // Initialisation de variable.
85
    $objet_pear_db =& $_GEN_commun['pear_db'];
86
    $vei_numero = $GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_VEI_']['nom_fonction']];
87
    if (isset($_GEN_commun['info_menu']->gm_id_menu)) {
88
    	(empty($menu_courant_id)) ? $menu_courant_id = $_GEN_commun['info_menu']->gm_id_menu : '';
89
    }
153 jpm 90
    $vei = '';
91
 
92
    // Gestion des erreurs
338 jpm 93
    if (empty($menu_courant_id)) {
214 jpm 94
        if (isset($GLOBALS['_VEI_']['usurpation'])) {
95
            $vei = $GLOBALS['_VEI_']['usurpation'];
96
        }
153 jpm 97
        return $vei;
98
    }
99
 
338 jpm 100
    // Début contruction du vei
101
    $menu_pere_id = GEN_lireIdentifiantMenuPere($menu_courant_id, $objet_pear_db);
1090 florian 102
    // Récupération des infos sur sur l'entrée du menu à afficher
754 ddelon 103
 
1090 florian 104
    // GEN_I18N_ID_DEFAUT;
105
 
106
 
107
	$id_langue = $_GEN_commun['i18n'];
108
 
109
	if (isset($id_langue) && ($id_langue!='')) {
110
		$langue_test=$id_langue;
111
	} else {
112
		$langue_test = GEN_I18N_ID_DEFAUT;
113
	}
114
 
115
    $requete_traduction =   'SELECT gmr_id_menu_02,  gm_ce_i18n '.
116
                            'FROM  gen_menu_relation, gen_menu '.
117
                            'WHERE '.$menu_courant_id.' = gmr_id_menu_01 ' .
118
                            'AND  gmr_id_menu_02  = gm_id_menu   '.
119
                            'AND  gmr_id_valeur  = 2 '.// 2 = "avoir traduction"
120
                            'AND gm_ce_i18n = "'.$langue_test.'" ';
121
	$resultat_traduction = 	$objet_pear_db->query($requete_traduction);
122
			        (DB::isError($resultat_traduction))             ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction))
123
			                : '';
124
 
125
	if ($resultat_traduction->numRows() > 0) {
126
		$ligne_resultat_traduction=$resultat_traduction->fetchRow(DB_FETCHMODE_ASSOC);
127
		$menu_courant_id=$ligne_resultat_traduction['gmr_id_menu_02'];
128
	}
129
 
338 jpm 130
    $menu_info = GEN_lireInfoMenu($objet_pear_db, $menu_courant_id, DB_FETCHMODE_ASSOC);
1849 jp_milcent 131
    // Nous affichons le menu seulement si sa date de validité est bonne
132
    if ($menu_info['gm_date_fin_validite'] == '0000-00-00 00:00:00' || strtotime($menu_info['gm_date_fin_validite']) > time() ) {
133
    	// Préparation d'une entrée dans la liste du menu
134
	    $menu_nom = htmlentities($menu_info['gm_nom']);
135
	    $menu_hreflang = htmlentities($menu_info['gm_ce_i18n']);
136
	    $menu_accesskey = '';
137
	    $raccourci_txt = '';
138
	    if (($menu_accesskey = htmlentities($menu_info['gm_raccourci_clavier'])) != '') {
139
	        $raccourci_txt = '(Raccourci : '.$menu_accesskey.' ).';
140
	        $menu_accesskey = 'accesskey="'.$menu_accesskey.'" ';
141
	    }
142
	    $menu_texte_title = '';
143
	    if (($menu_texte_title = htmlentities($menu_info['gm_description_resume'])) != '') {
144
	        $menu_texte_title = 'title="'.$raccourci_txt.$menu_texte_title.'" ';;
145
	    }
146
 
147
	    // Création de l'url du menu courant
148
	    $une_url =& new Pap_URL(PAP_URL);
149
	    $une_url->setId($menu_courant_id);
150
	    $menu_url = $une_url->getURL();
151
 
152
		// Construction du VEI
153
		$vei .= '<a id="vei_menu_'.$vei_numero.'_'.$menu_courant_id.'" href="'.$menu_url.'" ';
154
		$vei .= 'hreflang="'.$menu_hreflang.'" '.$menu_texte_title.$menu_accesskey.'>'.$menu_nom.'</a>';
155
	    if ($menu_pere_id != 0) {
156
	        // Ce n'est pas le menu racine : nous afficons le symbole de séparation
157
	        $vei .= ' >>> ';
158
	    }
159
	    $vei .= "\n";
338 jpm 160
    }
1849 jp_milcent 161
	// Ce n'est pas le menu racine : nous continuons à rechercher les menus
162
	if ($menu_pere_id != 0) {
163
		$vei .= afficherVousEtesIci($tab_arguments, $_GEN_commun, $menu_pere_id, false);
164
	}
165
 
1090 florian 166
    // Retour du VEI après la recherche récursive des liens
167
    if ($premier_appel) {
168
        $tab_vei = explode(' >>> ', $vei);
57 jpm 169
        // Récupération des liens pour les inverser et créer le VEI
1090 florian 170
        $retour = '';
57 jpm 171
        for ($i = (count($tab_vei) - 1); $i >= 0 ;$i--) {
172
            if ($i == 0) {
1090 florian 173
                // Supprime le lien pour le nom du menu courant
832 florian 174
                $tab_txt_capture='';
57 jpm 175
                preg_match("/>(.*)<\/a>/", $tab_vei[$i], $tab_txt_capture);
176
                $retour .= $tab_txt_capture[1];
1090 florian 177
            } else {
57 jpm 178
                $retour .= $tab_vei[$i];
179
            }
1090 florian 180
            // Ajout du séparateur
181
            $retour .= ($i != 0) ? "\n".'<span class="separateur_vei"> > </span>'."\n" : '' ;
57 jpm 182
        }
1090 florian 183
        // Retour de la chaine de liens et de textes du VEI
184
        return $retour;
185
    }
186
 
187
    return $vei;
188
}
189
 
190
// +------------------------------------------------------------------------------------------------------+
191
// |                                            PIED du PROGRAMME                                         |
192
// +------------------------------------------------------------------------------------------------------+
193
 
194
 
195
 
196
/* +--Fin du code ----------------------------------------------------------------------------------------+
197
*
4 jpm 198
* $Log: not supported by cvs2svn $
1849 jp_milcent 199
* Revision 1.13  2007-05-24 16:51:55  jp_milcent
200
* Utilisation de la constante PAP_URL.
201
*
1418 jp_milcent 202
* Revision 1.12  2006-12-12 13:53:54  jp_milcent
203
* Mise en place du nouveau format des balises d'applette.
204
*
1145 jp_milcent 205
* Revision 1.11  2006/12/01 16:33:40  florian
206
* Amélioration de la gestion des applettes et compatibilité avec le nouveau mode de gestion de l'inclusion des applettes.
207
*
1090 florian 208
* Revision 1.10  2006/04/28 12:41:49  florian
209
* corrections erreurs chemin
210
*
832 florian 211
* Revision 1.9  2006/03/02 10:49:49  ddelon
212
* Fusion branche multilinguisme dans branche principale
213
*
754 ddelon 214
* Revision 1.8.2.1  2006/02/28 14:02:10  ddelon
215
* Finition multilinguisme
216
*
217
* Revision 1.8  2005/09/26 20:18:27  ddelon
218
* Appli projet : php5 et generalisation
219
*
465 ddelon 220
* Revision 1.7  2005/09/23 14:21:18  florian
221
* compatibilité XHTML
222
*
459 florian 223
* Revision 1.6  2005/04/14 16:38:02  jpm
224
* Ajout de la gestion des URL avec la classe Pap_URL de Papyrus.
225
*
338 jpm 226
* Revision 1.5  2004/12/06 19:39:57  jpm
227
* Gestion de l'usurpation de VEI.
228
*
214 jpm 229
* Revision 1.4  2004/11/10 19:41:27  jpm
230
* Correction bogue quand pas de menu par défaut.
231
*
153 jpm 232
* Revision 1.3  2004/09/23 17:57:19  jpm
233
* La page active n'est pas afficher sous forme de lien mais sous forme de texte.
234
*
57 jpm 235
* Revision 1.2  2004/07/06 17:07:21  jpm
236
* Modification de la documentation pour une mailleur analyse par PhpDocumentor.
237
*
25 jpm 238
* Revision 1.1  2004/06/15 15:06:25  jpm
239
* Changement de nom et d'arborescence de Genesia en Papyrus.
240
*
4 jpm 241
* Revision 1.4  2004/05/05 14:33:19  jpm
242
* Gestion de l'indication de langue dans l'url.
243
* Utile que si on veut forcer la langue.
1090 florian 244
*
245
* Revision 1.2  2004/05/05 06:44:33  jpm
246
* Complément des commentaires indiquant les paquetages nécessaire à l'applette.
247
*
248
* Revision 1.1  2004/05/05 06:39:18  jpm
249
* Transformation en applette de la fonction générant le "vous êtes ici".
250
*
251
*
252
* +-- Fin du code ----------------------------------------------------------------------------------------+
253
*/
459 florian 254
?>