Subversion Repositories Applications.papyrus

Rev

Rev 371 | Rev 832 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 371 Rev 754
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: selecteur_sites.php,v 1.7 2005-05-25 12:53:00 jpm Exp $
22
// CVS : $Id: selecteur_sites.php,v 1.8 2006-03-02 10:49:49 ddelon Exp $
23
/**
23
/**
24
* Applette : selecteur sites
24
* Applette : selecteur sites
25
*
25
*
26
* Génère un formulaire contenant un menu déroulant permettant de choisir un site parmis les disponibles.
26
* Génère un formulaire contenant un menu déroulant permettant de choisir un site parmis les disponibles.
27
* Nécessite :
27
* Nécessite :
Line 38... Line 38...
38
//Auteur original :
38
//Auteur original :
39
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
39
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
40
//Autres auteurs :
40
//Autres auteurs :
41
*@author        Aucun
41
*@author        Aucun
42
*@copyright     Tela-Botanica 2000-2004
42
*@copyright     Tela-Botanica 2000-2004
43
*@version       $Revision: 1.7 $ $Date: 2005-05-25 12:53:00 $
43
*@version       $Revision: 1.8 $ $Date: 2006-03-02 10:49:49 $
44
// +------------------------------------------------------------------------------------------------------+
44
// +------------------------------------------------------------------------------------------------------+
45
*/
45
*/
Line 46... Line 46...
46
 
46
 
47
// +------------------------------------------------------------------------------------------------------+
47
// +------------------------------------------------------------------------------------------------------+
48
// |                                            ENTÊTE du PROGRAMME                                       |
48
// |                                            ENTÊTE du PROGRAMME                                       |
49
// +------------------------------------------------------------------------------------------------------+
49
// +------------------------------------------------------------------------------------------------------+
50
$_GEN_commun['info_applette_nom_fonction'] = 'afficherSelecteurSite';
50
$_GEN_commun['info_applette_nom_fonction'] = 'afficherSelecteurSite';
Line -... Line 51...
-
 
51
$_GEN_commun['info_applette_balise'] = 'SELECTEUR_SITES_?(XHTML)?_?(SANS_(?:\d+_?)+)?';
-
 
52
 
-
 
53
 
-
 
54
/** Inclusion du fichier de configuration de cette applette.*/
-
 
55
require_once GEN_CHEMIN_APPLETTE.'selecteur_sites/configuration/sesi_config.inc.php';
-
 
56
 
-
 
57
// Inclusion des fichiers de traduction de l'applette.
-
 
58
if (file_exists(SESI_CHEMIN_LANGUE.'sesi_langue_'.$_GEN_commun['i18n'].'.inc.php')) {
-
 
59
    /** Inclusion du fichier de traduction suite à la transaction avec le navigateur.*/
-
 
60
    require_once SESI_CHEMIN_LANGUE.'sesi_langue_'.$_GEN_commun['i18n'].'.inc.php';
-
 
61
} else {
-
 
62
    /** Inclusion du fichier de traduction par défaut.*/
-
 
63
    require_once SESI_CHEMIN_LANGUE.'sesi_langue_'.SESI_I18N_DEFAUT.'.inc.php';
51
$_GEN_commun['info_applette_balise'] = 'SELECTEUR_SITES_?(XHTML)?_?(SANS_(?:\d+_?)+)?';
64
}
52
 
65
 
53
// +------------------------------------------------------------------------------------------------------+
66
// +------------------------------------------------------------------------------------------------------+
Line 54... Line 67...
54
// |                                            CORPS du PROGRAMME                                        |
67
// |                                            CORPS du PROGRAMME                                        |
Line 59... Line 72...
59
// +------------------------------------------------------------------------------------------------------+
72
// +------------------------------------------------------------------------------------------------------+
60
/** Fonnction GEN_afficherContenuApplette() - Fournit un formulaire de sélection des sites.
73
/** Fonnction GEN_afficherContenuApplette() - Fournit un formulaire de sélection des sites.
61
*
74
*
62
* Renvoie un formulaire permettant de passer de site en site pour une langue donnée.
75
* Renvoie un formulaire permettant de passer de site en site pour une langue donnée.
63
* Le formulaire affiche les noms des sites en fonctions de la langue passée dans l'url.
76
* Le formulaire affiche les noms des sites en fonctions de la langue passée dans l'url.
64
* L'url renvoyée comporte seulement le nom du site, ainsi la langue par défaut défini
-
 
65
* par l'utilisateur est employée pour implémenter la variable $_GEN_commun['url_i18n'].
-
 
66
* Necessite l'utilisation de Pear Net_URL par le programme appelant cette fonction.
77
* Necessite l'utilisation de Pear Net_URL par le programme appelant cette fonction.
67
*
78
*
68
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction. 
79
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction. 
69
* @param  array  tableau global de Papyrus.
80
* @param  array  tableau global de Papyrus.
70
* @return   string  formulaire XHTML contenant les sites disponibles.
81
* @return   string  formulaire XHTML contenant les sites disponibles.
Line 73... Line 84...
73
{
84
{
74
    // Initialisation de variable de configuration.
85
    // Initialisation de variable de configuration.
75
    $liste_type_site = '102, 103';// Les id des types des sites pouvant apparaître dans le sélecteur
86
    $liste_type_site = '102, 103';// Les id des types des sites pouvant apparaître dans le sélecteur
76
    $objet_pear_db = $_GEN_commun['pear_db'];//objet Pear créé par DB contenant la connexion à la base de données.
87
    $objet_pear_db = $_GEN_commun['pear_db'];//objet Pear créé par DB contenant la connexion à la base de données.
77
    $code_site = $_GEN_commun['url_site'];//identifiant du site courant.
88
    $code_site = $_GEN_commun['url_site'];//identifiant du site courant.
78
    $id_langue = $_GEN_commun['url_i18n'];//identifiant de la langue principale du site courant.
89
    $id_langue = $_GEN_commun['i18n'];//identifiant de la langue choisie
79
    $url_base = PAP_URL;
90
    $url_base = PAP_URL;
80
    $url_cle_site = GEN_URL_CLE_SITE;
91
    $url_cle_site = GEN_URL_CLE_SITE;
81
    $url_cle_i18n = GEN_URL_CLE_I18N;
92
    $url_cle_i18n = GEN_URL_CLE_I18N;
82
    $url_id_type_site = GEN_URL_ID_TYPE_SITE;
93
    $url_id_type_site = GEN_URL_ID_TYPE_SITE;
-
 
94
    
-
 
95
    
83
    $indent_origine = 12;// Indentation de départ en nombre d'espace
96
    $indent_origine = 12;// Indentation de départ en nombre d'espace
84
    $indent_pas     = 4;// Pas d'indentation en nombre d'espace
97
    $indent_pas     = 4;// Pas d'indentation en nombre d'espace
Line 85... Line 98...
85
    
98
    
86
    // Récupérations des arguments passés dans la balise.
99
    // Récupérations des arguments passés dans la balise.
Line 100... Line 113...
100
            $liste_id_suppr = '0';
113
            $liste_id_suppr = '0';
101
        }
114
        }
102
        $morceau_requete_id_suppr = 'AND gs_id_site NOT IN ('.$liste_id_suppr.') ';
115
        $morceau_requete_id_suppr = 'AND gs_id_site NOT IN ('.$liste_id_suppr.') ';
103
    }
116
    }
Line 104... Line 117...
104
    
117
    
-
 
118
    // Recherche de tous les sites  langue en cours
105
    // Texte à traduire
119
    
-
 
120
    // On recherche l'ensemble des site en excluant le site admin ? (administration de Papyrus).
106
    $etiquette_legende = 'Sélecteur de monde';
121
 
107
    $etiquette_option_defaut = 'Changer de monde';
122
	if (isset($id_langue) && ($id_langue!='')) {
-
 
123
		$langue_test=$id_langue;
108
    $etiquette_bouton_valider = 'ok';
124
	} else {
-
 
125
		$langue_test=GEN_I18N_ID_DEFAUT;
Line 109... Line -...
109
    $etiquette_erreur = 'Un seul site disponible dans Papyrus.';
-
 
110
    
126
	}
111
    // On recherche l'ensemble des sites principaux en excluant le site admin (administration de Génésia).
127
    
112
    $requete =  'SELECT gs_id_site, gs_code_num, gs_code_alpha, gs_nom '.
128
    $requete =  'SELECT gs_id_site, gs_code_num, gs_code_alpha, gs_nom, gs_ce_i18n '.
113
                'FROM gen_site, gen_site_relation '.
129
                'FROM gen_site, gen_site_relation '.
114
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
130
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
-
 
131
                'AND gs_id_site = gsr_id_site_01 '.
115
                'AND gs_id_site = gsr_id_site_01 '.
132
                'AND gsr_id_valeur IN ('.$liste_type_site.') '.
116
                'AND gsr_id_valeur IN ('.$liste_type_site.') '.
133
                'AND gs_ce_i18n = "'.$langue_test.'" '.
-
 
134
                $morceau_requete_id_suppr.// Liste des sites ne devant pas figurer
117
                $morceau_requete_id_suppr.// Liste des sites ne devant pas figurer
135
                'ORDER BY gs_code_num ASC';// 102 = site "principal" et 103 = site "externe"
118
                'ORDER BY gs_code_num ASC';// 102 = site "principal" et 103 = site "externe"
136
                
-
 
137
    $resultat = $objet_pear_db->query($requete);
-
 
138
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
-
 
139
    
-
 
140
    $liste_site=array();
-
 
141
    
-
 
142
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
-
 
143
    	         // Si le site trouvé est une traduction vers la langue principale, on ne le selectionne pas
-
 
144
    			if ($langue_test == GEN_I18N_ID_DEFAUT) {
-
 
145
    		  		$requete_est_traduction =   'SELECT gsr_id_site_01 '.
-
 
146
	                       'FROM  gen_site_relation '.
-
 
147
	                       'WHERE '.$ligne['gs_id_site'].' = gsr_id_site_02 ' .
-
 
148
	                  	   'AND  gsr_id_site_01 <> gsr_id_site_02 ' .
-
 
149
	                       'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
-
 
150
	                                
-
 
151
		            $resultat_est_traduction = $objet_pear_db->query($requete_est_traduction);
-
 
152
		            (DB::isError($resultat_est_traduction))
-
 
153
		                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction))
119
    $retourultat = $objet_pear_db->query($requete);
154
		                : '';
-
 
155
		                
-
 
156
		   			if ( $resultat_est_traduction->numRows() == 0 ) {
-
 
157
	    	 			$liste_site[]=$ligne;
-
 
158
		            }
-
 
159
    			}
-
 
160
    			else {
-
 
161
    				$liste_site[]=$ligne;
-
 
162
    			}
-
 
163
    }
-
 
164
    
-
 
165
    $resultat->free();
-
 
166
    
-
 
167
 
-
 
168
    // Si la langue en cours n'est pas la langue par défaut, recherche des sites ayant comme langue
-
 
169
    // la langue par defaut et non traduits dans la langue en cours.
-
 
170
  	
-
 
171
 
-
 
172
    // On recherche l'ensemble des site en excluant le site admin (administration de Papyrus).
-
 
173
 
-
 
174
	if ($langue_test != GEN_I18N_ID_DEFAUT) {
-
 
175
    
-
 
176
    
-
 
177
    // Site ayant commme langue, la langue par defaut 
-
 
178
	    $requete =  'SELECT gs_id_site, gs_code_num, gs_code_alpha, gs_nom, gs_ce_i18n '.
-
 
179
	                'FROM gen_site, gen_site_relation '.
-
 
180
	                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
-
 
181
	                'AND gs_id_site = gsr_id_site_01 '.
-
 
182
	                'AND gsr_id_valeur IN ('.$liste_type_site.') '.
-
 
183
	                'AND gs_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" '.
-
 
184
	                $morceau_requete_id_suppr.// Liste des sites ne devant pas figurer
-
 
185
	                'ORDER BY gs_code_num ASC';// 102 = site "principal" et 103 = site "externe"
-
 
186
	                
-
 
187
	    $resultat = $objet_pear_db->query($requete);
-
 
188
	    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
-
 
189
	    
-
 
190
	    // Est il traduit ? Non, alors affichage 
-
 
191
	    
-
 
192
	    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
-
 
193
	    	
-
 
194
				if (isset($id_langue) && ($id_langue!='')) {
-
 
195
					$langue_test=$id_langue;
-
 
196
				} else {
-
 
197
					$langue_test=GEN_I18N_ID_DEFAUT;
-
 
198
				}
-
 
199
			    
-
 
200
	    				$requete_est_traduction =   'SELECT gsr_id_site_01 '.
-
 
201
	                                'FROM  gen_site_relation '.
-
 
202
	                                'WHERE '.$ligne['gs_id_site'].' = gsr_id_site_02 ' .
-
 
203
	                                'AND  gsr_id_site_01 <> gsr_id_site_02 ' .
-
 
204
	                                'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
-
 
205
	                                
-
 
206
	                                
-
 
207
	            $resultat_est_traduction = $objet_pear_db->query($requete_est_traduction);
-
 
208
	            (DB::isError($resultat_est_traduction))
-
 
209
	                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction))
-
 
210
	                : '';
-
 
211
	                
-
 
212
	            if ( $resultat_est_traduction->numRows() == 0 ) {
-
 
213
	    
-
 
214
			    
-
 
215
			    	
-
 
216
		    		$requete_traduction =   'SELECT gsr_id_site_01 '.
-
 
217
		                                    'FROM  gen_site_relation, gen_site '.
-
 
218
		                                    'WHERE '.$ligne['gs_id_site'].' = gsr_id_site_01 ' .
-
 
219
		                                    'AND gsr_id_site_02 = gs_id_site '.
-
 
220
		                                    'AND gs_ce_i18n = "'.$langue_test.'" '.
-
 
221
		                                    'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
-
 
222
		                                    
-
 
223
		            $resultat_traduction = $objet_pear_db->query($requete_traduction);
-
 
224
		            (DB::isError($resultat_traduction))
-
 
225
		                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction))
-
 
226
		                : '';
-
 
227
		                
-
 
228
		            if ( $resultat_traduction->numRows() == 0 ) {
-
 
229
		            	$liste_site []=$ligne;
-
 
230
		            }
-
 
231
		            
-
 
232
		            $resultat_traduction->free();
-
 
233
	            }
-
 
234
		    
-
 
235
	    }
-
 
236
	    $resultat->free();
-
 
237
	}
-
 
238
   
120
    (DB::isError($retourultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat->getMessage(), $requete)) : '';
239
        
121
    if ( $retourultat->numRows() == 0 ) {
240
    if (count($liste_site) == 0 ) {
122
        $retour =  str_repeat(' ', $indent_origine + ($indent_pas * 0)).
241
        $retour =  str_repeat(' ', $indent_origine + ($indent_pas * 0)).
123
                '<!-- '.$etiquette_erreur.' -->';
242
                '<!-- '.SESI_LG_ETIQUETTE_VALIDER.' -->';
124
    } else {
243
    } else {
125
        // Préparation de l'url de retour du formulaire
-
 
-
 
244
        // Préparation de l'url de retour du formulaire
126
        $objet_pear_url = & new Net_URL($url_base);
245
        $objet_pear_url = & new Net_URL($url_base);
127
        //$objet_pear_url->addQueryString($url_cle_i18n, $id_langue);
246
 
Line 128... Line 247...
128
        // Préparation du code du sites
247
        // Préparation du code du sites
129
        $champs_code_site = ($url_id_type_site == 'int') ? 'gs_code_num' : 'gs_code_alpha';
248
        $champs_code_site = ($url_id_type_site == 'int') ? 'gs_code_num' : 'gs_code_alpha';
Line 138... Line 257...
138
        $retour .= 'action="'.$objet_pear_url->getURL().'" method="get">'."\n";
257
        $retour .= 'action="'.$objet_pear_url->getURL().'" method="get">'."\n";
Line 139... Line 258...
139
        
258
        
140
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 1)).
259
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 1)).
141
                '<fieldset>'."\n";
260
                '<fieldset>'."\n";
142
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
261
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
143
                '<legend>'.$etiquette_legende.'</legend>'."\n";
262
                '<legend>'.SESI_LG_LEGENDE.'</legend>'."\n";
144
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
263
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
145
                '<select id="sesi_'.$url_cle_site.'" name="'.$url_cle_site.'" onchange="javascript:this.form.submit();">'."\n";
264
                '<select id="sesi_'.$url_cle_site.'" name="'.$url_cle_site.'" onchange="javascript:this.form.submit();">'."\n";
146
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 3)).
265
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 3)).
147
                '<option value="'.$code_site.'" selected="selected">'.$etiquette_option_defaut.'</option>'."\n";
266
                '<option value="'.$code_site.'" selected="selected">'.SESI_LG_DEFAUT.'</option>'."\n";
148
        while ($ligne = $retourultat->fetchRow(DB_FETCHMODE_ASSOC)) {
267
        foreach ($liste_site as $ligne ) {
149
            // Initialisation des variables
-
 
150
            $nom = '';
-
 
151
            
-
 
152
            // Recherche de traduction
-
 
153
            $requete_traduction =   'SELECT gs_ce_i18n, gs_nom '.
-
 
154
                                    'FROM gen_site, gen_site_relation '.
-
 
155
                                    'WHERE '.$ligne['gs_id_site'].' = gsr_id_site_01 '.
-
 
156
                                    'AND gsr_id_valeur = 1 '. // 1 = "avoir traduction"
-
 
157
                                    'AND gsr_id_site_02 = gs_id_site '.
-
 
158
                                    'AND gs_ce_i18n = "'.$id_langue.'"';
-
 
159
            
-
 
160
            $retourultat_traduction = $objet_pear_db->query($requete_traduction);
-
 
161
            (DB::isError($retourultat_traduction))
-
 
162
                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $retourultat_traduction->getMessage(), $requete_traduction))
-
 
163
                : '';
-
 
164
            if ( $retourultat_traduction->numRows() != 0 ) {
-
 
165
                $ligne_traduction = $retourultat_traduction->fetchRow(DB_FETCHMODE_OBJECT);
-
 
166
                $nom = $ligne_traduction->gs_nom;
-
 
167
            } else {
268
            // Initialisation des variables
168
                $nom = $ligne['gs_nom'];
-
 
169
            }
-
 
170
            $retourultat_traduction->free();
269
            $nom = $ligne['gs_nom'];
171
            $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 3)).
270
            $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 3)).
172
                    '<option value="'.$ligne[$champs_code_site].'">'.$nom.'</option>'."\n";
271
                    '<option value="'.$ligne[$champs_code_site].'">'.$nom.'</option>'."\n";
173
        }
272
        }
174
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
273
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
175
                '</select>'."\n";
274
                '</select>'."\n";
176
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
275
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 2)).
177
                '<input id="sesi_ok" name="sesi_ok" type="submit" value="'.$etiquette_bouton_valider.'"/>'."\n";
276
                '<input id="sesi_ok" name="sesi_ok" type="submit" value="'.SESI_LG__VALIDER.'"/>'."\n";
178
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 1)).
277
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 1)).
-
 
278
                '</fieldset>'."\n";
-
 
279
        if ($langue_test != GEN_I18N_ID_DEFAUT) {
-
 
280
	        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 1)).
-
 
281
					 '<input name="'.$url_cle_i18n.'" type="hidden" value="'.$id_langue.'"/>'."\n";
179
                '</fieldset>'."\n";
282
        }
180
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 0)).
283
        $retour .= str_repeat(' ', $indent_origine + ($indent_pas * 0)).
-
 
284
        '</form>'."\n";
-
 
285
        
181
                '</form>'."\n";
286
                
182
    }
-
 
Line 183... Line 287...
183
    $retourultat->free();
287
    }
184
    
288
    
Line 185... Line 289...
185
    return $retour;
289
    return $retour;
Line 192... Line 296...
192
 
296
 
193
 
297
 
194
/* +--Fin du code ----------------------------------------------------------------------------------------+
298
/* +--Fin du code ----------------------------------------------------------------------------------------+
-
 
299
*
-
 
300
* $Log: not supported by cvs2svn $
-
 
301
* Revision 1.7.2.4  2006/02/28 14:02:07  ddelon
-
 
302
* Finition multilinguisme
-
 
303
*
-
 
304
* Revision 1.7.2.3  2006/01/19 21:26:20  ddelon
-
 
305
* Multilinguisme site + bug ftp
-
 
306
*
-
 
307
* Revision 1.7.2.2  2005/12/20 14:40:24  ddelon
-
 
308
* Fusion Head vers Livraison
-
 
309
*
-
 
310
* Revision 1.7.2.1  2005/12/07 19:46:14  ddelon
-
 
311
* Merge + navi sites
-
 
312
*
-
 
313
* Revision 1.7  2005/05/25 12:53:00  jpm
195
*
314
* Changement et ajout d'attributs id.
196
* $Log: not supported by cvs2svn $
315
*
197
* Revision 1.6  2005/05/23 09:31:43  jpm
316
* Revision 1.6  2005/05/23 09:31:43  jpm
198
* Ajout d'une majuscule à un txt.
317
* Ajout d'une majuscule à un txt.
199
*
318
*