Subversion Repositories Applications.bazar

Rev

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

Rev Author Line No. Line
5 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
// +------------------------------------------------------------------------------------------------------+
86 florian 22
// CVS : $Id: bazar.fonct.formulaire.php,v 1.17 2006-01-30 10:27:03 florian Exp $
5 florian 23
/**
45 florian 24
* Formulaire
5 florian 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
86 florian 34
*@version       $Revision: 1.17 $ $Date: 2006-01-30 10:27:03 $
5 florian 35
// +------------------------------------------------------------------------------------------------------+
36
*/
37
 
45 florian 38
require_once 'bazar.fonct.formulaire.controles.php';
39
 
5 florian 40
//-------------------FONCTIONS DE MISE EN PAGE DES FORMULAIRES
41
 
42
/** liste() - Ajoute un élément de type liste au formulaire
43
*
44
* @param    mixed   L'objet QuickForm du formulaire
68 florian 45
* @param    int     identifiant de la liste sur bazar_liste
5 florian 46
* @param    string  label à afficher dans le formulaire
47
* @param    string  première restriction de la taille des champs du formulaire
48
* @param    string  deuxième restriction de la taille des champs du formulaire
49
* @param    string  valeur par défaut du formulaire
50
* @param    string  table source pour les valeurs de la liste
51
* @param    string  ce champs est il obligatoire? (required)
52
* @return   void
53
*/
68 florian 54
function liste(&$formtemplate, $id_liste , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
79 florian 55
	$requete = 'SELECT * FROM bazar_liste_valeurs WHERE blv_ce_liste='.$id_liste.' AND blv_ce_i18n="'.$GLOBALS['_BAZAR_']['langue'].'"';
5 florian 56
	$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
57
	if (DB::isError ($resultat)) {
62 alexandre_ 58
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
5 florian 59
	}
60
	while ($ligne = $resultat->fetchRow()) {
86 florian 61
		$select[$ligne[1]] = $ligne[2] ;
5 florian 62
	}
63
	$option=array('style'=>'width: '.$limite1.'px;');
57 florian 64
	require_once 'HTML/QuickForm/select.php';
68 florian 65
	$select= new HTML_QuickForm_select('liste'.$id_liste, constant($label), $select, $option);
5 florian 66
	$select->setSize($limite2);
67
	$select->setMultiple(0);
45 florian 68
	$select->setSelected($defaut);
5 florian 69
	$formtemplate->addElement($select) ;
47 florian 70
	if (isset($obligatoire)and($obligatoire==1)) {
68 florian 71
		$formtemplate->addRule('liste'.$id_liste, BAZ_CHOISIR_OBLIGATOIRE.' '.constant($label) , 'nonzero', '', 'client') ;
72
		$formtemplate->addRule('liste'.$id_liste, constant($label.'_REQUIS'), 'required', '', 'client') ;}
5 florian 73
}
74
 
75
 
54 florian 76
/** checkbox() - Ajoute un élément de type checkbox au formulaire
77
*
78
* @param    mixed   L'objet QuickForm du formulaire
68 florian 79
* @param    int     identifiant de la liste sur bazar_liste
54 florian 80
* @param    string  label à afficher dans le formulaire
81
* @param    string  première restriction de la taille des champs du formulaire
82
* @param    string  deuxième restriction de la taille des champs du formulaire
83
* @param    string  valeur par défaut du formulaire
84
* @param    string  table source pour les valeurs de la liste
85
* @param    string  ce champs est il obligatoire? (required)
86
* @return   void
87
*/
68 florian 88
function checkbox(&$formtemplate, $id_liste , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
79 florian 89
	$requete = 'SELECT * FROM bazar_liste_valeurs WHERE blv_ce_liste='.$id_liste.' AND blv_ce_i18n="'.$GLOBALS['_BAZAR_']['langue'].'"';
54 florian 90
	$resultat = & $GLOBALS['_BAZAR_']['db'] -> query($requete) ;
91
	if (DB::isError ($resultat)) {
80 alexandre_ 92
		die ($resultat->getMessage().$resultat->getDebugInfo()) ;
79 florian 93
	}
94
	require_once 'HTML/QuickForm/checkbox.php' ;
54 florian 95
	$i=0;
79 florian 96
	if (isset($defaut)) $tab=split(', ', $defaut);
54 florian 97
	while ($ligne = $resultat->fetchRow()) {
98
		if ($i==0) $labelchkbox=constant($label) ; else $labelchkbox='&nbsp;' ;
79 florian 99
		$checkbox[$i]= & HTML_Quickform::createElement('checkbox', $ligne[1], $labelchkbox, $ligne[2],
67 alexandre_ 100
						array ('style'=>'display:inline;margin-left:2px;')) ;
79 florian 101
		foreach ($tab as $val) {
102
            if ($ligne[1]==$val) $checkbox[$i]->setChecked(1);
103
        }
54 florian 104
		$i++;
105
	}
68 florian 106
	$formtemplate->addGroup($checkbox, 'checkbox'.$id_liste, constant($label), '<br />'."\n");
79 florian 107
	if (isset($obligatoire)and($obligatoire==1)) {
108
		$formtemplate->addGroupRule('checkbox'.$id_liste, constant($label.'_REQUIS'), 'required', null, 1, 'client');
109
	}
54 florian 110
}
111
 
112
 
5 florian 113
/** listedatedeb() - Ajoute un élément de type date sous forme de liste au formulaire pour designer une date de début
114
*
115
* @param    mixed   L'objet QuickForm du formulaire
116
* @param    string  nom de la table dans la base de donnée
117
* @param    string  label à afficher dans le formulaire
118
* @param    string  première restriction de la taille des champs du formulaire
119
* @param    string  deuxième restriction de la taille des champs du formulaire
120
* @param    string  valeur par défaut du formulaire
121
* @param    string  table source pour les valeurs de la date
122
* @param    string  ce champs est il obligatoire? (required)
123
* @return   void
124
*/
125
function listedatedeb(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
82 alexandre_ 126
	$optiondate = array('language' => BAZ_LANGUE_PAR_DEFAUT,
127
						'minYear' => date('Y'),
128
						'maxYear'=> (date('Y')+10),
129
						'format' => 'd m Y',
130
						'addEmptyOption' => true,
131
						);
5 florian 132
	$formtemplate->addElement('date', $nom_bdd, constant($label), $optiondate) ;
79 florian 133
	//gestion des valeurs par défaut (date du jour)
134
	if (isset($defaut)) $formtemplate->setDefaults(array($nom_bdd => $defaut));
135
	else {
136
		$defauts=array($nom_bdd => array ('d'=>date('d'), 'm'=>date('m'), 'Y'=>date('Y')));
137
		$formtemplate->setDefaults($defauts);
138
	}
5 florian 139
	//gestion du champs obligatoire
140
	if (isset($obligatoire)and($obligatoire==1)) {$formtemplate->addRule($nom_bdd, constant($label.'_REQUIS'), 'required', '', 'client') ;}
141
}
142
 
143
/** listedatefin() - Ajoute un élément de type date sous forme de liste au formulaire pour designer une date de fin
144
*
145
* @param    mixed   L'objet QuickForm du formulaire
146
* @param    string  nom de la table dans la base de donnée
147
* @param    string  label à afficher dans le formulaire
148
* @param    string  première restriction de la taille des champs du formulaire
149
* @param    string  deuxième restriction de la taille des champs du formulaire
150
* @param    string  valeur par défaut du formulaire
151
* @param    string  table source pour les valeurs de la date
152
* @param    string  ce champs est il obligatoire? (required)
153
* @return   void
154
*/
155
function listedatefin(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
156
	listedatedeb($formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire);
157
}
158
 
159
 
160
/** texte() - Ajoute un élément de type texte au formulaire
161
*
162
* @param    mixed   L'objet QuickForm du formulaire
163
* @param    string  nom de la table dans la base de donnée
164
* @param    string  label à afficher dans le formulaire
165
* @param    string  première restriction de la taille des champs du formulaire
166
* @param    string  deuxième restriction de la taille des champs du formulaire
167
* @param    string  valeur par défaut du formulaire
168
* @param    string  table source pour les valeurs du texte (inutile)
169
* @param    string  ce champs est il obligatoire? (required)
170
* @return   void
171
*/
172
function texte(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
173
	$option=array('size'=>$limite1,'maxlength'=>$limite2);
174
	$formtemplate->addElement('text', $nom_bdd, constant($label), $option) ;
175
	//gestion des valeurs par défaut
176
	$defauts=array($nom_bdd=>$defaut);
177
	$formtemplate->setDefaults($defauts);
41 alexandre_ 178
	$formtemplate->applyFilter($nom_bdd, 'addslashes') ;
5 florian 179
	//gestion du champs obligatoire
180
	if (isset($obligatoire)and($obligatoire==1)) {$formtemplate->addRule($nom_bdd, constant($label.'_REQUIS'), 'required', '', 'client') ;}
181
}
182
 
183
 
184
/** textelong() - Ajoute un élément de type textearea au formulaire
185
*
186
* @param    mixed   L'objet QuickForm du formulaire
187
* @param    string  nom de la table dans la base de donnée
188
* @param    string  label à afficher dans le formulaire
189
* @param    string  taille des colonnes de l'élément
190
* @param    string  taille des lignes de l'élément
191
* @param    string  valeur par défaut du formulaire
192
* @param    string  table source pour les valeurs du texte (inutile)
193
* @param    string  ce champs est il obligatoire? (required)
194
* @return   void
195
*/
196
function textelong(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
54 florian 197
	$formtexte= new HTML_QuickForm_textarea($nom_bdd, constant($label), array('style'=>'white-space: normal;'));
5 florian 198
	$formtexte->setCols($limite1);
199
	$formtexte->setRows($limite2);
200
	$formtemplate->addElement($formtexte) ;
201
	//gestion des valeurs par défaut
202
	$defauts=array($nom_bdd=>$defaut);
203
	$formtemplate->setDefaults($defauts);
41 alexandre_ 204
	$formtemplate->applyFilter($nom_bdd, 'addslashes') ;
5 florian 205
	//gestion du champs obligatoire
206
	if (isset($obligatoire)and($obligatoire==1)) {$formtemplate->addRule($nom_bdd, constant($label.'_REQUIS'), 'required', '', 'client') ;}
207
}
208
 
86 florian 209
/** url() - Ajoute un élément de type url internet au formulaire
210
*
211
* @param    mixed   L'objet QuickForm du formulaire
212
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
213
* @param    string  label à afficher dans le formulaire
214
* @param    string  taille des colonnes de l'élément
215
* @param    string  taille des lignes de l'élément
216
* @param    string  valeur par défaut du formulaire
217
* @param    string  table source pour les valeurs du texte (inutile)
218
* @param    string  ce champs est il obligatoire? (required)
219
* @return   void
220
*/
221
function url(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
222
	$html.='<tr>'."\n".'<td colspan="2">'."\n".'<h4>'.$label.'</h4>'."\n".'</td>'."\n".'</tr>'."\n";
223
	$formtemplate->addElement('html', $html) ;
224
	$formtemplate->addElement('text', 'url_lien'.$nom_bdd, BAZ_URL_LIEN) ;
225
	$formtemplate->addElement('text', 'url_texte'.$nom_bdd, BAZ_URL_TEXTE) ;
226
	//gestion du champs obligatoire
227
	if (isset($obligatoire)and($obligatoire==1)) {
228
		$formtemplate->addRule('url_lien'.$nom_bdd, BAZ_URL_LIEN_REQUIS, 'required', '', 'client') ;
229
		$formtemplate->addRule('url_texte'.$nom_bdd, BAZ_URL_TEXTE_REQUIS, 'required', '', 'client') ;
230
	}
231
}
5 florian 232
 
86 florian 233
/** fichier() - Ajoute un élément de type fichier au formulaire
234
*
235
* @param    mixed   L'objet QuickForm du formulaire
236
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
237
* @param    string  label à afficher dans le formulaire
238
* @param    string  taille des colonnes de l'élément
239
* @param    string  taille des lignes de l'élément
240
* @param    string  valeur par défaut du formulaire
241
* @param    string  table source pour les valeurs du texte (inutile)
242
* @param    string  ce champs est il obligatoire? (required)
243
* @return   void
244
*/
245
function fichier(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
246
	$html.='<tr>'."\n".'<td colspan="2">'."\n".'<h4>'.$label.'</h4>'."\n".'</td>'."\n".'</tr>'."\n";
247
	$formtemplate->addElement('html', $html) ;
248
	$formtemplate->addElement('text', 'texte_fichier'.$nom_bdd, BAZ_FICHIER_DESCRIPTION) ;
249
	$formtemplate->addElement('file', 'fichier'.$nom_bdd, BAZ_FICHIER_JOINT) ;
250
	$formtemplate->addRule('image', BAZ_IMAGE_VALIDE_REQUIS, '', '', 'client') ; //a completer pour checker l'image
251
	$formtemplate->setMaxFileSize($limite1);
252
	//gestion du champs obligatoire
253
	if (isset($obligatoire)and($obligatoire==1)) {
254
		$formtemplate->addRule('texte_fichier'.$nom_bdd, BAZ_FICHIER_LABEL_REQUIS, 'required', '', 'client') ;
255
		$formtemplate->addRule('fichier'.$nom_bdd, BAZ_FICHIER_JOINT_REQUIS, 'required', '', 'client') ;
256
	}
257
}
258
 
259
/** image() - Ajoute un élément de type image au formulaire
260
*
261
* @param    mixed   L'objet QuickForm du formulaire
262
* @param    string  numero du champs input du formulaire (pour le différencier d'autres champs du meme type dans ce formulaire)
263
* @param    string  label à afficher dans le formulaire
264
* @param    string  taille maximum du fichier colonnes de l'élément
265
* @param    string  taille des lignes de l'élément
266
* @param    string  valeur par défaut du formulaire
267
* @param    string  table source pour les valeurs du texte (inutile)
268
* @param    string  ce champs est il obligatoire? (required)
269
* @return   void
270
*/
271
function image(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
272
	$html.='<tr>'."\n".'<td colspan="2">'."\n".'<h4>'.$label.'</h4>'."\n".'</td>'."\n".'</tr>'."\n";
273
	$formtemplate->addElement('html', $html) ;
274
	$formtemplate->addElement('file', 'image'.$nom_bdd, BAZ_IMAGE) ;
275
	//TODO: controler si c'est une image
276
	$formtemplate->setMaxFileSize($limite1);
277
	//gestion du champs obligatoire
278
	if (isset($obligatoire)and($obligatoire==1)) {
279
		$formtemplate->addRule('image'.$nom_bdd, BAZ_IMAGE_VALIDE_REQUIS, 'required', '', 'client') ;
280
	}
281
}
282
 
283
 
284
 
5 florian 285
/** labelhtml() - Ajoute un élément de type textearea au formulaire
286
*
287
* @param    mixed   L'objet QuickForm du formulaire
288
* @param    string  nom de la table dans la base de donnée (pas utilisé)
289
* @param    string  label à afficher dans le formulaire
290
* @param    string  taille des colonnes de l'élément (pas utilisé)
291
* @param    string  taille des lignes de l'élément (pas utilisé)
292
* @param    string  valeur par défaut du formulaire (pas utilisé)
293
* @param    string  table source pour les valeurs du texte (pas utilisé)
294
* @param    string  ce champs est il obligatoire? (required) (pas utilisé)
295
* @return   void
296
*/
297
function labelhtml(&$formtemplate, $nom_bdd , $label, $limite1, $limite2, $defaut, $source, $obligatoire) {
57 florian 298
	require_once 'HTML/QuickForm/html.php';
68 florian 299
	$formhtml= new HTML_QuickForm_html('<tr>'."\n".'<td colspan="2">'."\n".constant($label)."\n".'</td>'."\n".'</tr>'."\n");
5 florian 300
	$formtemplate->addElement($formhtml) ;
301
}
302
 
303
/* +--Fin du code ----------------------------------------------------------------------------------------+
304
*
41 alexandre_ 305
* $Log: not supported by cvs2svn $
86 florian 306
* Revision 1.16  2006/01/24 14:11:44  alexandre_tb
307
* ajout du paramètre emptyOptionValue dans les champs de date
308
*
82 alexandre_ 309
* Revision 1.15  2006/01/23 16:57:03  alexandre_tb
310
* correction d'un notice
311
*
80 alexandre_ 312
* Revision 1.14  2006/01/19 17:42:11  florian
313
* ajout des cases à cocher pré-cochées pour les maj
314
*
79 florian 315
* Revision 1.13  2006/01/13 14:12:51  florian
316
* utilisation des temlates dans la table bazar_nature
317
*
68 florian 318
* Revision 1.12  2006/01/05 16:28:24  alexandre_tb
319
* prise en chage des checkbox, reste la mise à jour à gérer
320
*
67 alexandre_ 321
* Revision 1.11  2006/01/02 13:24:07  alexandre_tb
322
* correction de bug d'un mauvais retour en erreur
323
*
62 alexandre_ 324
* Revision 1.10  2005/12/01 16:05:41  florian
325
* changement des chemins pour appli Pear
326
*
57 florian 327
* Revision 1.9  2005/11/24 16:17:13  florian
328
* corrections bugs, ajout des cases à cocher
329
*
54 florian 330
* Revision 1.8  2005/11/18 16:03:23  florian
331
* correction bug html entites
332
*
53 florian 333
* Revision 1.7  2005/11/07 17:51:06  florian
334
* correction bug liste
335
*
47 florian 336
* Revision 1.6  2005/11/07 17:30:36  florian
337
* ajout controle sur les listes pour la saisie
338
*
46 florian 339
* Revision 1.5  2005/11/07 17:05:45  florian
340
* amélioration validation conditions de saisie, ajout des règles spécifiques de saisie des formulaires
341
*
45 florian 342
* Revision 1.4  2005/10/25 13:53:02  alexandre_tb
343
* ajout d'un filtre dans les formulaire texte et textelong
344
*
41 alexandre_ 345
* Revision 1.3  2005/07/21 19:03:12  florian
346
* nouveautés bazar: templates fiches, correction de bugs, ...
347
*
5 florian 348
* Revision 1.1.1.1  2005/02/17 18:05:11  florian
349
* Import initial de Bazar
350
*
351
* Revision 1.1.1.1  2005/02/17 11:09:50  florian
352
* Import initial
353
*
354
* Revision 1.1.1.1  2005/02/16 18:06:35  florian
355
* import de la nouvelle version
356
*
357
* Revision 1.4  2004/07/08 11:17:59  alex
358
* ajout de commentaires et d'entete
359
*
360
*
361
* +-- Fin du code ----------------------------------------------------------------------------------------+
362
*/
363
?>