Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
1108 florian 1
<?php
1462 alexandre_ 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
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id$
23
/**
24
* Formulaire
25
*
26
* Les fonctions de mise en page des formulaire
27
*
28
*@package bazar
29
//Auteur original :
30
*@author        Florian SCHMITT <florian@ecole-et-nature.org>
31
//Autres auteurs :
32
*@author        Aleandre GRANIER <alexandre@tela-botanica.org>
33
*@copyright     Tela-Botanica 2000-2004
34
*@version       $Revision$ $Date$
35
// +------------------------------------------------------------------------------------------------------+
36
*/
37
 
1648 alexandre_ 38
 
39
include_once 'api/formulaire/langues/formulaire.langue.fr.inc.php';
40
 
41
 /**
42
  * Fonction principale de cette bibliotheque,
43
  *
44
  * decoupe le template et renvoie un tableau structure
45
  */
46
 
1108 florian 47
function formulaire_valeurs_template_champs($valeur_template) {
48
	//Parcours du template, pour mettre les champs du formulaire avec leurs valeurs specifiques
49
	$tableau= array();
50
	$nblignes=0;
51
	$chaine = explode ("\n", $valeur_template);
52
	array_pop($chaine);
53
	foreach ($chaine as $ligne)  {
54
		$souschaine = explode ("***", $ligne) ;
55
		$tableau[$nblignes]['type'] = trim($souschaine[0]) ;
56
		if (isset($souschaine[1])) {$tableau[$nblignes]['nom_bdd'] = trim($souschaine[1]);}
57
		else {$tableau[$nblignes]['nom_bdd'] ='';}
58
		if (isset($souschaine[2])) $tableau[$nblignes]['label'] = trim($souschaine[2]);
59
		else {$tableau[$nblignes]['label'] ='';}
60
		if (isset($souschaine[3])) $tableau[$nblignes]['limite1'] = trim($souschaine[3]);
61
		else {$tableau[$nblignes]['limite1'] ='';}
62
		if (isset($souschaine[4])) $tableau[$nblignes]['limite2'] = trim($souschaine[4]);
63
		else {$tableau[$nblignes]['limite2'] ='';}
64
		if (isset($souschaine[5])) $tableau[$nblignes]['defaut'] = trim($souschaine[5]);
65
		else {$tableau[$nblignes]['defaut'] ='';}
66
		if (isset($souschaine[6])) $tableau[$nblignes]['table_source'] = trim($souschaine[6]);
67
		else {$tableau[$nblignes]['table_source'] ='';}
68
		if (isset($souschaine[7])) $tableau[$nblignes]['id_source'] = trim($souschaine[7]);
69
		else {$tableau[$nblignes]['id_source'] ='';}
70
		if (isset($souschaine[8])) $tableau[$nblignes]['obligatoire'] = trim($souschaine[8]);
71
		else {$tableau[$nblignes]['obligatoire'] ='';}
72
		if (isset($souschaine[9])) $tableau[$nblignes]['recherche'] = trim($souschaine[9]);
73
		else {$tableau[$nblignes]['recherche'] ='';}
74
 
1540 alexandre_ 75
		// traitement des cases a  cocher, dans ce cas la, on a une table de jointure entre la table
1108 florian 76
		// de liste et la table bazar_fiche (elle porte un nom du genre bazar_ont_***)
1462 alexandre_ 77
		// dans le template, a la place d'un nom de champs dans 'nom_bdd', on a un nom de table
78
		// et 2 noms de champs separes par un virgule ex : bazar_ont_theme,bot_id_theme,bot_id_fiche
1108 florian 79
		if (isset($tableau[$nblignes]['nom_bdd']) && preg_match('/,/', $tableau[$nblignes]['nom_bdd'])) {
80
			$tableau_info_jointe = explode (',', $tableau[$nblignes]['nom_bdd']) ;
81
			$tableau[$nblignes]['table_jointe'] = $tableau_info_jointe[0] ;
82
			$tableau[$nblignes]['champs_id_fiche'] = $tableau_info_jointe[1] ;
83
			$tableau[$nblignes]['champs_id_table_jointe'] = $tableau_info_jointe[2] ;
84
		}
85
		$nblignes++;
86
	}
87
	return $tableau;
88
}
89
 
1462 alexandre_ 90
//-------------------FONCTIONS DE MISE EN PAGE DES FORMULAIRES
91
 
1108 florian 92
/** liste() - Ajoute un élément de type liste au formulaire
93
*
94
* @param    mixed   L'objet QuickForm du formulaire
95
* @param    int     identifiant de la liste sur bazar_liste
96
* @param    string  label à afficher dans le formulaire
97
* @param    string  première restriction de la taille des champs du formulaire
98
* @param    string  deuxième restriction de la taille des champs du formulaire
99
* @param    string  valeur par défaut du formulaire
100
* @param    string  table source pour les valeurs de la liste
101
* @param    string  ce champs est il obligatoire? (required)
102
* @param    boolean sommes nous dans le moteur de recherche?
1462 alexandre_ 103
* @param string le nom de l appli, ou le nom du repertoire de l appli
1108 florian 104
* @return   void
105
*/
1462 alexandre_ 106
function liste(&$formtemplate, $id_liste , $label, $limite1, $limite2, $defaut, $source,
107
					 $obligatoire, $dans_moteur_de_recherche=0,$appli = 'bazar') {
108
 
109
	// Deux cas, soit avec la table xxx_liste et xxx_liste_valeurs
110
	// soit avec les champs source et colonne identifiant
111
 
112
	// Le nom de l appli permet de retrouver le nom de la table liste
113
	// ex : bazar => bazar_liste_valeurs
114
	// pour le nom des champs, on utilise la premiere lettre du nom de l appli
115
	// bazar => b
1511 alexandre_ 116
 
117
	if (intval($id_liste) != 0) {
1462 alexandre_ 118
		$l = $appli[0];
119
		$requete = 'SELECT * FROM '.$appli.'_liste_valeurs WHERE '.$l.'lv_ce_liste='.$id_liste.
1654 alexandre_ 120
					' AND '.$l.'lv_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%"';
1462 alexandre_ 121
		$nom_liste = 'liste'.$id_liste;
122
 
123
	} else {
124
		list ($table, $col_id, $col_label, $col_langue, $langue) = explode (',', $source);
125
		$requete = 'select "", '.$col_id.', '.$col_label.' from '.$table;
126
		if (isset($col_langue)) $requete .= ' where '.$col_langue.'="'.$langue.'"';
127
		$nom_liste = $id_liste;
128
	}
129
 
1512 neiluj 130
	$resultat = $GLOBALS['_GEN_commun']['pear_db']->query($requete) ;
1108 florian 131
	if (DB::isError ($resultat)) {
1511 alexandre_ 132
		return ($resultat->getMessage().$resultat->getDebugInfo()) ;
1108 florian 133
	}
134
	if ($dans_moteur_de_recherche==0) {
1648 alexandre_ 135
		$select[0]=CHOISIR;
1108 florian 136
	}
137
	else {
1648 alexandre_ 138
		$select[0]=INDIFFERENT;
1108 florian 139
	}
140
	while ($ligne = $resultat->fetchRow()) {
1462 alexandre_ 141
		$select[$ligne[1]] = $ligne[2] ;
1108 florian 142
	}
1462 alexandre_ 143
	$option = array('id' => $nom_liste);
1108 florian 144
	require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/select.php';
1462 alexandre_ 145
	$select= new HTML_QuickForm_select($nom_liste, $label, $select, $option);
146
	if ($limite2 != '') $select->setSize($limite2);
1108 florian 147
	$select->setMultiple(0);
148
	$select->setSelected($defaut);
149
	$formtemplate->addElement($select) ;
150
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
151
		$formtemplate->addRule('liste'.$id_liste, BAZ_CHOISIR_OBLIGATOIRE.' '.$label , 'nonzero', '', 'client') ;
152
		$formtemplate->addRule('liste'.$id_liste, $label.' obligatoire', 'required', '', 'client') ;}
153
}
154
 
155
 
156
/** checkbox() - Ajoute un élément de type checkbox au formulaire
157
*
158
* @param    mixed   L'objet QuickForm du formulaire
159
* @param    int     identifiant de la liste sur bazar_liste
160
* @param    string  label à afficher dans le formulaire
161
* @param    string  première restriction de la taille des champs du formulaire
162
* @param    string  deuxième restriction de la taille des champs du formulaire
163
* @param    string  valeur par défaut du formulaire
164
* @param    string  table source pour les valeurs de la liste
165
* @param    string  ce champs est il obligatoire? (required)
166
* @return   void
167
*/
1462 alexandre_ 168
function checkbox(&$formtemplate, $id_liste , $label, $limite1, $limite2, $defaut,
169
						$source, $obligatoire, $dans_moteur_de_recherche=0, $appli = 'bazar') {
1603 alexandre_ 170
	if (intval ($id_liste) != 0) {
1462 alexandre_ 171
	 	$l = $appli[0];
172
		$requete = 'SELECT * FROM '.$appli.'_liste_valeurs WHERE '.$l.'lv_ce_liste='.$id_liste.
1654 alexandre_ 173
					' AND '.$l.'lv_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%" ORDER BY '.$l.'lv_label';
1462 alexandre_ 174
		$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
175
		if (DB::isError ($resultat)) {
176
			die ($resultat->getMessage().$resultat->getDebugInfo()) ;
177
		}
178
		require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/checkbox.php' ;
179
		$i=0;
180
		if (isset($defaut)) $tab=split(', ', $defaut);
181
		while ($ligne = $resultat->fetchRow()) {
182
			if ($i==0) $labelchkbox=$label ; else $labelchkbox='&nbsp;';
183
			$checkbox[$i]= & HTML_Quickform::createElement('checkbox', $ligne[1], $labelchkbox, $ligne[2],
184
							array ('style'=>'display:inline;margin:2px;')) ;
185
			foreach ($tab as $val) {
186
	            if ($ligne[1]==$val) $checkbox[$i]->setChecked(1);
187
	        }
188
			$i++;
189
		}
190
		$squelette_checkbox =& $formtemplate->defaultRenderer();
191
		$squelette_checkbox->setElementTemplate( '<tr><td colspan="2" style="text-align:left;">'."\n".'<fieldset class="bazar_fieldset">'."\n".'<legend>{label}'.
192
	                                             '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->'."\n".
193
												 '</legend>'."\n".'{element}'."\n".'</fieldset> '."\n".'</td></tr>'."\n", 'checkbox'.$id_liste);
194
	  	$squelette_checkbox->setGroupElementTemplate( "\n".'<div class="bazar_checkbox">'."\n".'{element}'."\n".'</div>'."\n", 'checkbox'.$id_liste);
195
 
196
		$formtemplate->addGroup($checkbox, 'checkbox'.$id_liste, $label, "\n");
197
		if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
198
			$formtemplate->addGroupRule('checkbox'.$id_liste, $label.' obligatoire', 'required', null, 1, 'client');
199
		}
200
	} else {
201
		$checkbox = & HTML_Quickform::createElement('checkbox', $id_liste, $label);
202
		if ($defaut == 1) $checkbox->setChecked(true);
203
		$formtemplate->addElement($checkbox);
204
 
1108 florian 205
	}
1462 alexandre_ 206
 
1108 florian 207
}
208
 
1648 alexandre_ 209
function newsletter(&$formtemplate, $champs , $label, $mail_inscription, $mail_desinscription, $defaut,
210
						$source, $obligatoire, $dans_moteur_de_recherche=0, $appli = 'bazar') {
211
 
212
	$checkbox = & HTML_Quickform::createElement('checkbox', $champs, '', $label);
213
	if ($defaut == 1) $checkbox->setChecked(true);
214
	$formtemplate->addElement($checkbox);
215
}
1108 florian 216
 
217
/** listedatedeb() - Ajoute un élément de type date sous forme de liste au formulaire pour designer une date de début
218
*
219
* @param    mixed   L'objet QuickForm du formulaire
220
* @param    string  nom de la table dans la base de donnée
221
* @param    string  label à afficher dans le formulaire
222
* @param    string  première restriction de la taille des champs du formulaire
223
* @param    string  deuxième restriction de la taille des champs du formulaire
224
* @param    string  valeur par défaut du formulaire
225
* @param    string  table source pour les valeurs de la date
226
* @param    string  ce champs est il obligatoire? (required)
227
* @return   void
228
*/
229
function listedatedeb(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
230
	$optiondate = array('language' => BAZ_LANGUE_PAR_DEFAUT,
1462 alexandre_ 231
						'minYear' => date('Y')-4,
1108 florian 232
						'maxYear'=> (date('Y')+10),
233
						'format' => 'd m Y',
234
						'addEmptyOption' => BAZ_DATE_VIDE,
235
						);
236
	$formtemplate->addElement('date', $nom_bdd, $label, $optiondate) ;
1462 alexandre_ 237
	//gestion des valeurs par défaut (date du jour)
238
	if (isset($defaut) && $defaut!='') {
239
		$tableau_date = explode ('-', $defaut);
240
		$formtemplate->setDefaults(array($nom_bdd => array ('d'=> $tableau_date[2], 'm'=> $tableau_date[1], 'Y'=> $tableau_date[0])));
241
	}
242
 
1108 florian 243
	else {
244
		$defauts=array($nom_bdd => array ('d'=>date('d'), 'm'=>date('m'), 'Y'=>date('Y')));
245
		$formtemplate->setDefaults($defauts);
246
	}
247
	//gestion du champs obligatoire
248
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
249
		$formtemplate->addRule($nom_bdd, $label.' obligatoire', 'required', '', 'client') ;
250
	}
251
}
252
 
253
/** listedatefin() - Ajoute un élément de type date sous forme de liste au formulaire pour designer une date de fin
254
*
255
* @param    mixed   L'objet QuickForm du formulaire
256
* @param    string  nom de la table dans la base de donnée
257
* @param    string  label à afficher dans le formulaire
258
* @param    string  première restriction de la taille des champs du formulaire
259
* @param    string  deuxième restriction de la taille des champs du formulaire
260
* @param    string  valeur par défaut du formulaire
261
* @param    string  table source pour les valeurs de la date
262
* @param    string  ce champs est il obligatoire? (required)
263
* @return   void
264
*/
265
function listedatefin(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
266
	listedatedeb($formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche);
267
}
268
 
269
 
270
/** texte() - Ajoute un élément de type texte au formulaire
271
*
272
* @param    mixed   L'objet QuickForm du formulaire
273
* @param    string  nom de la table dans la base de donnée
274
* @param    string  label à afficher dans le formulaire
275
* @param    string  première restriction de la taille des champs du formulaire
276
* @param    string  deuxième restriction de la taille des champs du formulaire
277
* @param    string  valeur par défaut du formulaire
278
* @param    string  table source pour les valeurs du texte (inutile)
279
* @param    string  ce champs est il obligatoire? (required)
280
* @return   void
281
*/
282
function texte(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
1462 alexandre_ 283
	$option=array('size'=>$limite1,'maxlength'=>$limite2, 'id' => $nom_bdd);
1108 florian 284
	$formtemplate->addElement('text', $nom_bdd, $label, $option) ;
285
	//gestion des valeurs par défaut
1650 alexandre_ 286
	$defauts=array($nom_bdd=>stripslashes($defaut));
1108 florian 287
	$formtemplate->setDefaults($defauts);
288
	$formtemplate->applyFilter($nom_bdd, 'addslashes') ;
289
	//gestion du champs obligatoire
290
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
291
		$formtemplate->addRule($nom_bdd,  $label.' obligatoire', 'required', '', 'client') ;
292
	}
293
}
294
 
1511 alexandre_ 295
/** champs_cache() - Ajoute un élément de type texte au formulaire
296
*
297
* @param    mixed   L'objet QuickForm du formulaire
298
* @param    string  nom de la table dans la base de donnée
299
* @param    string  label à afficher dans le formulaire
300
* @param    string  première restriction de la taille des champs du formulaire
301
* @param    string  deuxième restriction de la taille des champs du formulaire
302
* @param    string  valeur par défaut du formulaire
303
* @param    string  table source pour les valeurs du texte (inutile)
304
* @param    string  ce champs est il obligatoire? (required)
305
* @return   void
306
*/
307
function champs_cache(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
308
	$formtemplate->addElement('hidden', $nom_bdd, $label, array ('id' => $nom_bdd)) ;
309
	//gestion des valeurs par défaut
310
	$defauts=array($nom_bdd=>$defaut);
311
	$formtemplate->setDefaults($defauts);
312
}
313
 
1462 alexandre_ 314
/** champs_mail() - Ajoute un élément de type mail
315
*
316
* @param    mixed   L'objet QuickForm du formulaire
317
* @param    string  nom de la table dans la base de donnée
318
* @param    string  label à afficher dans le formulaire
319
* @param    string  première restriction de la taille des champs du formulaire
320
* @param    string  deuxième restriction de la taille des champs du formulaire
321
* @param    string  valeur par défaut du formulaire
322
* @param    string  table source pour les valeurs du texte (inutile)
323
* @param    string  ce champs est il obligatoire? (required)
324
* @return   void
325
*/
326
function champs_mail(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
327
	$option=array('size'=>$limite1,'maxlength'=>$limite2, 'id' => $nom_bdd);
328
	$formtemplate->addElement('text', $nom_bdd, $label, $option) ;
329
	//gestion des valeurs par défaut
330
	$defauts=array($nom_bdd=>$defaut);
331
	$formtemplate->setDefaults($defauts);
332
	$formtemplate->applyFilter($nom_bdd, 'addslashes') ;
333
	$formtemplate->addRule($nom_bdd,  $label.' obligatoire', 'required', '', 'client') ;
334
	$formtemplate->addRule($nom_bdd, INS_MAIL_INCORRECT, 'email', '', 'client') ;
335
	//gestion du champs obligatoire
336
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
337
		$formtemplate->addRule($nom_bdd,  $label.' obligatoire', 'required', '', 'client') ;
338
	}
339
	$formtemplate->registerRule('doublonmail', 'callback', 'inscription_verif_doublonMail');
340
	$formtemplate->addRule($nom_bdd, INS_MAIL_DOUBLE, 'doublonmail');
341
}
1108 florian 342
 
1462 alexandre_ 343
function mot_de_passe (&$formtemplate, $nom_bdd , $label1, $limite1, $limite2, $erreur1, $label2, $obligatoire) {
344
	$formtemplate->addElement('password', 'mot_de_passe', $label1, array('size' => $limite1)) ;
345
    $formtemplate->addElement('password', 'mot_de_passe_repete', $label2, array('size' => $limite1)) ;
346
    $formtemplate->addRule('mot_de_passe', $erreur1, 'required', '', 'client') ;
347
    $formtemplate->addRule('mot_de_passe_repete', $erreur1, 'required', '', 'client') ;
348
    $formtemplate->addRule(array ('mot_de_passe', 'mot_de_passe_repete'), $erreur1, 'compare', '', 'client') ;
349
}
350
 
351
 
1108 florian 352
/** textelong() - Ajoute un élément de type textearea au formulaire
353
*
354
* @param    mixed   L'objet QuickForm du formulaire
355
* @param    string  nom de la table dans la base de donnée
356
* @param    string  label à afficher dans le formulaire
357
* @param    string  taille des colonnes de l'élément
358
* @param    string  taille des lignes de l'élément
359
* @param    string  valeur par défaut du formulaire
360
* @param    string  table source pour les valeurs du texte (inutile)
361
* @param    string  ce champs est il obligatoire? (required)
362
* @return   void
363
*/
364
function textelong(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
1540 alexandre_ 365
	$formtexte= new HTML_QuickForm_textarea($nom_bdd, $label, array('style'=>'white-space: normal;overflow:visible;', 'id' => $nom_bdd, 'wrap' =>'virtual'));
1108 florian 366
	$formtexte->setCols($limite1);
367
	$formtexte->setRows($limite2);
368
	$formtemplate->addElement($formtexte) ;
369
	//gestion des valeurs par défaut
1650 alexandre_ 370
	$defauts=array($nom_bdd=>stripslashes($defaut));
1108 florian 371
	$formtemplate->setDefaults($defauts);
372
	$formtemplate->applyFilter($nom_bdd, 'addslashes') ;
373
	//gestion du champs obligatoire
374
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
375
		$formtemplate->addRule($nom_bdd,  $label.' obligatoire', 'required', '', 'client') ;
376
	}
377
}
378
 
379
/** url() - Ajoute un élément de type url internet au formulaire
380
*
381
* @param    mixed   L'objet QuickForm du formulaire
382
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
383
* @param    string  label à afficher dans le formulaire
384
* @param    string  taille des colonnes de l'élément
385
* @param    string  taille des lignes de l'élément
386
* @param    string  valeur par défaut du formulaire
387
* @param    string  table source pour les valeurs du texte (inutile)
388
* @param    string  ce champs est il obligatoire? (required)
389
* @return   void
390
*/
1648 alexandre_ 391
function url(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0, $appli = 'bazar') {
1108 florian 392
	//recherche des URLs deja entrees dans la base
393
	$html_url= '';
394
	if (isset($GLOBALS['_BAZAR_']["id_fiche"])) {
395
		$requete = 'SELECT bu_id_url, bu_url, bu_descriptif_url FROM bazar_url WHERE bu_ce_fiche='.$GLOBALS['_BAZAR_']["id_fiche"];
396
		$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
397
		if (DB::isError ($resultat)) {
398
			die ($GLOBALS['_BAZAR_']['db']->getMessage().$GLOBALS['_BAZAR_']['db']->getDebugInfo()) ;
399
		}
400
		if ($resultat->numRows()>0) {
401
			$html_url= '<tr>'."\n".'<td colspan="2">'."\n".'<strong>'.BAZ_LISTE_URL.'</strong>'."\n";
402
			$tableAttr = array("class" => "bazar_table") ;
403
			$table = new HTML_Table($tableAttr) ;
404
			$entete = array (BAZ_LIEN , BAZ_SUPPRIMER) ;
405
			$table->addRow($entete) ;
406
			$table->setRowType(0, "th") ;
1462 alexandre_ 407
 
1108 florian 408
			$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
409
			$lien_supprimer->addQueryString('action', $_GET['action']);
410
			$lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]);
411
			$lien_supprimer->addQueryString('typeannonce', $_REQUEST['typeannonce']);
1462 alexandre_ 412
 
1108 florian 413
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
414
				$lien_supprimer->addQueryString('id_url', $ligne->bu_id_url);
415
				$table->addRow (array(
416
				'<a href="'.$ligne->bu_url.'" target="_blank"> '.$ligne->bu_descriptif_url.'</a>', // col 1 : le lien
417
				'<a href="'.$lien_supprimer->getURL().'" onclick="javascript:return confirm(\''.BAZ_CONFIRMATION_SUPPRESSION_LIEN.'\');" >'.BAZ_SUPPRIMER.'</a>'."\n")) ; // col 2 : supprimer
418
				$lien_supprimer->removeQueryString('id_url');
419
			}
1462 alexandre_ 420
 
421
			// Nettoyage de l'url
422
			$lien_supprimer->removeQueryString('action');
423
			$lien_supprimer->removeQueryString('id_fiche');
424
			$lien_supprimer->removeQueryString('typeannonce');
425
 
1108 florian 426
			$table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
427
			$table->updateColAttributes(1, array("align" => "center"));
428
			$html_url.= $table->toHTML()."\n".'</td>'."\n".'</tr>'."\n" ;
429
		}
1462 alexandre_ 430
	}
1108 florian 431
	$html ='<tr>'."\n".'<td colspan="2">'."\n".'<h4>'.$label.'</h4>'."\n".'</td>'."\n".'</tr>'."\n";
432
	$formtemplate->addElement('html', $html) ;
433
	if ($html_url!='') $formtemplate->addElement('html', $html_url) ;
434
	$formtemplate->addElement('text', 'url_lien'.$nom_bdd, BAZ_URL_LIEN) ;
1603 alexandre_ 435
	$defauts=array('url_lien'.$nom_bdd=>'http://');
436
	$formtemplate->setDefaults($defauts);
437
 
1108 florian 438
	$formtemplate->addElement('text', 'url_texte'.$nom_bdd, BAZ_URL_TEXTE) ;
439
	//gestion du champs obligatoire
440
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
441
		$formtemplate->addRule('url_lien'.$nom_bdd, BAZ_URL_LIEN_REQUIS, 'required', '', 'client') ;
442
		$formtemplate->addRule('url_texte'.$nom_bdd, BAZ_URL_TEXTE_REQUIS, 'required', '', 'client') ;
443
	}
1462 alexandre_ 444
}
1108 florian 445
 
1648 alexandre_ 446
 
447
function lien_internet (&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $id_fiche, $obligatoire, $dans_moteur_de_recherche=0) {
448
	//recherche des URLs deja entrees dans la base
449
	$html_url= '';
450
	$formtemplate->addElement('text', $nom_bdd, $label)	;
451
	$defauts=array($nom_bdd=>'http://');
452
	$formtemplate->setDefaults($defauts);
453
 
454
	//gestion du champs obligatoire
455
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
456
		$formtemplate->addRule('url', URL_LIEN_REQUIS, 'required', '', 'client') ;
457
	}
458
}
1108 florian 459
/** fichier() - Ajoute un élément de type fichier au formulaire
460
*
461
* @param    mixed   L'objet QuickForm du formulaire
462
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
463
* @param    string  label à afficher dans le formulaire
464
* @param    string  taille des colonnes de l'élément
465
* @param    string  taille des lignes de l'élément
466
* @param    string  valeur par défaut du formulaire
467
* @param    string  table source pour les valeurs du texte (inutile)
468
* @param    string  ce champs est il obligatoire? (required)
469
* @return   void
470
*/
471
function fichier(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
472
	//AJOUTER DES FICHIERS JOINTS
473
	$html_fichier= '';
474
	if (isset($GLOBALS['_BAZAR_']["id_fiche"])) {
475
		$requete = 'SELECT * FROM bazar_fichier_joint WHERE bfj_ce_fiche='.$GLOBALS['_BAZAR_']["id_fiche"];
476
		$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
477
		if (DB::isError ($resultat)) {
478
			die ($GLOBALS['_BAZAR_']['db']->getMessage().$GLOBALS['_BAZAR_']['db']->getDebugInfo()) ;
479
		}
1462 alexandre_ 480
 
1108 florian 481
		if ($resultat->numRows()>0) {
482
			$html_fichier = '<tr>'."\n".'<td colspan="2">'."\n".'<strong>'.BAZ_LISTE_FICHIERS_JOINTS.'</strong>'."\n";
483
			$tableAttr = array("class" => "bazar_table") ;
484
			$table = new HTML_Table($tableAttr) ;
485
			$entete = array (BAZ_FICHIER , BAZ_SUPPRIMER) ;
486
			$table->addRow($entete) ;
487
			$table->setRowType(0, "th") ;
1462 alexandre_ 488
 
1108 florian 489
			$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
490
			$lien_supprimer->addQueryString('action', $_GET['action']);
491
			$lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]);
492
			$lien_supprimer->addQueryString('typeannonce', $_REQUEST['typeannonce']);
493
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
494
				$lien_supprimer->addQueryString('id_fichier', $ligne->bfj_id_fichier);
495
				$table->addRow(array('<a href="client/bazar/upload/'.$ligne->bfj_fichier.'"> '.$ligne->bfj_description.'</a>', // col 1 : le fichier et sa description
496
									 '<a href="'.$lien_supprimer->getURL().'" onclick="javascript:return confirm(\''.BAZ_CONFIRMATION_SUPPRESSION_FICHIER.'\');" >'.BAZ_SUPPRIMER.'</a>'."\n")) ; // col 2 : supprimer
497
				$lien_supprimer->removeQueryString('id_fichier');
498
			}
499
			$table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
500
			$table->updateColAttributes(1, array("align" => "center"));
501
			$html_fichier .= $table->toHTML()."\n".'</td>'."\n".'</tr>'."\n" ;
502
		}
503
	}
504
	$html ='<tr>'."\n".'<td colspan="2">'."\n".'<h4>'.$label.'</h4>'."\n".'</td>'."\n".'</tr>'."\n";
505
	$formtemplate->addElement('html', $html) ;
506
	if ($html_fichier!='') $formtemplate->addElement('html', $html_fichier) ;
507
	$formtemplate->addElement('text', 'texte_fichier'.$nom_bdd, BAZ_FICHIER_DESCRIPTION) ;
508
	$formtemplate->addElement('file', 'fichier'.$nom_bdd, BAZ_FICHIER_JOINT) ;
509
	$formtemplate->addRule('image', BAZ_IMAGE_VALIDE_REQUIS, '', '', 'client') ; //a completer pour checker l'image
510
	$formtemplate->setMaxFileSize($limite1);
511
	//gestion du champs obligatoire
512
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
513
		$formtemplate->addRule('texte_fichier'.$nom_bdd, BAZ_FICHIER_LABEL_REQUIS, 'required', '', 'client') ;
514
		$formtemplate->addRule('fichier'.$nom_bdd, BAZ_FICHIER_JOINT_REQUIS, 'required', '', 'client') ;
515
	}
1462 alexandre_ 516
}
1108 florian 517
 
518
/** image() - Ajoute un élément de type image au formulaire
519
*
520
* @param    mixed   L'objet QuickForm du formulaire
521
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
522
* @param    string  label à afficher dans le formulaire
523
* @param    string  taille maximum du fichier colonnes de l'élément
524
* @param    string  taille des lignes de l'élément
525
* @param    string  valeur par défaut du formulaire
526
* @param    string  table source pour les valeurs du texte (inutile)
527
* @param    string  ce champs est il obligatoire? (required)
528
* @return   void
529
*/
530
function image(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
531
	//AJOUTER UNE IMAGE
532
	$html_image= '';
533
	if (isset($GLOBALS['_BAZAR_']["id_fiche"])) {
534
		$requete = 'SELECT bf_url_image FROM bazar_fiche WHERE bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
535
		$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
536
		if (DB::isError ($resultat)) {
537
			die ($GLOBALS['_BAZAR_']['db']->getMessage().$GLOBALS['_BAZAR_']['db']->getDebugInfo()) ;
538
		}
1462 alexandre_ 539
 
1108 florian 540
		if ($resultat->numRows()>0) {
541
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
542
				$image=$ligne->bf_url_image;
543
			}
544
			if ($image!=NULL) {
545
				$lien_supprimer=$GLOBALS['_BAZAR_']['url'];
546
				$lien_supprimer->addQueryString('action', $_GET['action']);
547
				$lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']["id_fiche"]);
548
				$lien_supprimer->addQueryString('typeannonce', $_REQUEST['typeannonce']);
549
				$lien_supprimer->addQueryString('image', 1);
550
				$html_image = '<tr>'."\n".
551
							  '<td>'."\n".'<img src="client/bazar/upload/'.$image.'" alt="'.BAZ_TEXTE_IMG_ALTERNATIF.'" width="130" height="130" />'."\n".'</td>'."\n".
552
							  '<td>'."\n".'<a href="'.$lien_supprimer->getURL().'" onclick="javascript:return confirm(\''.BAZ_CONFIRMATION_SUPPRESSION_IMAGE.'\');" >'.BAZ_SUPPRIMER.'</a><br /><br />'."\n".
553
							  '<strong>'.BAZ_POUR_CHANGER_IMAGE.'</strong><br />'."\n".'</td>'."\n".'</tr>'."\n";
554
			}
1462 alexandre_ 555
		}
556
	}
1108 florian 557
	$html ='<tr>'."\n".'<td colspan="2">'."\n".'<h4>'.$label.'</h4>'."\n".'</td>'."\n".'</tr>'."\n";
558
	$formtemplate->addElement('html', $html) ;
559
	if ($html_image!='') $formtemplate->addElement('html', $html_image) ;
1648 alexandre_ 560
	$formtemplate->addElement('file', 'image', IMAGE) ;
1108 florian 561
	//TODO: controler si c'est une image
562
	$formtemplate->setMaxFileSize($limite1);
563
	//gestion du champs obligatoire
564
	if (($dans_moteur_de_recherche==0) && isset($obligatoire) && ($obligatoire==1)) {
1648 alexandre_ 565
		$formtemplate->addRule('image', IMAGE_VALIDE_REQUIS, 'required', '', 'client') ;
1108 florian 566
	}
1462 alexandre_ 567
}
1108 florian 568
 
1462 alexandre_ 569
/** image_unique() - Ajoute un élément de type image au formulaire, l information est stockee dans un champs
570
*
571
* @param    mixed   L'objet QuickForm du formulaire
572
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
573
* @param    string  label à afficher dans le formulaire
574
* @param    string  taille maximum du fichier colonnes de l'élément
575
* @param    string  taille des lignes de l'élément
576
* @param    string  valeur par défaut du formulaire
577
* @param    string  table source pour les valeurs du texte (inutile)
578
* @param    string  ce champs est il obligatoire? (required)
579
* @return   void
580
*/
581
function image_unique(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
582
	$formtemplate->addElement ('file', $nom_bdd, $label);
583
	$formtemplate->setMaxFileSize($limite1);
584
}
1108 florian 585
/** wikini() - Ajoute un wikini au formulaire
586
*
587
* @param    mixed   L'objet QuickForm du formulaire
588
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
589
* @param    string  label à afficher dans le formulaire
590
* @param    string  taille maximum du fichier colonnes de l'élément
591
* @param    string  taille des lignes de l'élément
592
* @param    string  valeur par défaut du formulaire
593
* @param    string  table source pour les valeurs du texte (inutile)
594
* @param    string  ce champs est il obligatoire? (required)
595
* @return   void
596
*/
597
function wikini(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
598
	return;
599
}
600
 
601
/** labelhtml() - Ajoute un élément de type textearea au formulaire
602
*
603
* @param    mixed   L'objet QuickForm du formulaire
604
* @param    string  nom de la table dans la base de donnée (pas utilisé)
605
* @param    string  label à afficher dans le formulaire
606
* @param    string  taille des colonnes de l'élément (pas utilisé)
607
* @param    string  taille des lignes de l'élément (pas utilisé)
608
* @param    string  valeur par défaut du formulaire (pas utilisé)
609
* @param    string  table source pour les valeurs du texte (pas utilisé)
610
* @param    string  ce champs est il obligatoire? (required) (pas utilisé)
611
* @return   void
612
*/
613
function labelhtml(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
614
	require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/html.php';
1462 alexandre_ 615
	$formhtml= new HTML_QuickForm_html('<tr>'."\n".'<td colspan="2" style="text-align:left;">'."\n".$label."\n".'</td>'."\n".'</tr>'."\n");
1108 florian 616
	$formtemplate->addElement($formhtml) ;
617
}
618
 
1462 alexandre_ 619
/** carte_google() - Ajoute un élément de carte google au formulaire
620
*
621
* @param    mixed   L'objet QuickForm du formulaire
622
* @param    string  l url vers la script google
623
* @param    string  label à afficher dans le formulaire
624
* @param    string  première restriction de la taille des champs du formulaire
625
* @param    string  deuxième restriction de la taille des champs du formulaire
626
* @param    string  valeur par défaut du formulaire
627
* @param    string  table source pour les valeurs de la liste
628
* @param    string  ce champs est il obligatoire? (required)
629
* @param    boolean sommes nous dans le moteur de recherche?
630
* @return   void
631
*/
632
function carte_google(&$formtemplate, $url_google_script , $label, $champs_latitude, $champs_longitude, $defaut, $source, $obligatoire, $dans_moteur_de_recherche=0) {
633
 
634
	if (is_array ($defaut)) {
635
    	$formtemplate->setDefaults(array('latitude' => $defaut['latitude'], 'longitude' => $defaut['longitude']));
636
    }
637
 
638
	GEN_stockerFichierScript('googleMapScript', $url_google_script);
1511 alexandre_ 639
    $html_bouton = '<tr>
640
<td style="text-align:left;padding:5px;" colspan="2">
1648 alexandre_ 641
<input onclick="showAddress();" name="chercher_sur_carte" value="'.VERIFIER_MON_ADRESSE.'" type="button" /><span class="symbole_obligatoire">&nbsp;*</span></td>
1511 alexandre_ 642
</tr>';
643
	$formtemplate->addElement('html', $html_bouton);
644
 
1462 alexandre_ 645
    $formtemplate->addElement('html', '<tr><td colspan="2"><div id="map" style="width: 600px; height: 450px"></div></td></tr>');
1648 alexandre_ 646
     $formtemplate->addElement('text', 'latitude', LATITUDE, array('id' => 'latitude', 'size' => 6, 'readonly' => 'readonly'));
647
    $formtemplate->addElement('text', 'longitude', LONGITUDE, array('id' => 'longitude', 'size' => 6, 'readonly' => 'readonly'));
648
    $formtemplate->addRule ('latitude', LATITUDE . ' obligatoire', 'required', '', 'client');
649
    $formtemplate->addRule ('longitude', LONGITUDE . ' obligatoire', 'required', '', 'client');
1511 alexandre_ 650
 
1462 alexandre_ 651
    /*
652
    include_once GEN_CHEMIN_API.'formulaire/formulaire.fonct.google.php';
653
    GEN_stockerCodeScript($script);*/
654
}
1108 florian 655
 
1462 alexandre_ 656
/* +--Fin du code ----------------------------------------------------------------------------------------+
657
*
658
* $Log$
1654 alexandre_ 659
* Revision 1.10  2007-10-12 09:58:12  alexandre_tb
660
* ajout de la fonction stripslashes pour les fonctions texte et textelong, dans la valeur par defaut, pour eviter l apparition de slash
661
*
1650 alexandre_ 662
* Revision 1.9  2007-10-10 13:59:24  alexandre_tb
663
* ajout de la fonction newsletter
664
* et utilisation du fichier de langue
665
*
1648 alexandre_ 666
* Revision 1.8  2007-09-18 08:00:42  alexandre_tb
667
* la valeur par defaut d un lien est http://pour eviter les erreurs
668
*
1603 alexandre_ 669
* Revision 1.7  2007-08-27 12:24:52  alexandre_tb
670
* correction encodage
671
*
1512 neiluj 672
* Revision 1.3  2007-07-04 11:53:37  alexandre_tb
673
* ajout du type champs_cache
674
*
1511 alexandre_ 675
* Revision 1.2  2007-06-25 09:54:33  alexandre_tb
676
* ajou des entetes (cecill),
677
* modif fonctin liste, ajout de carte_google et champs_mail
678
*
1462 alexandre_ 679
*
680
* +-- Fin du code ----------------------------------------------------------------------------------------+
681
*/
1108 florian 682
?>