2 /*******************************************************************************
3 * Copyright (C) 2007 Easter-eggs
4 * http://ldapsaisie.labs.libre-entreprise.org
6 * Author: See AUTHORS file in top-level directory.
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License version 2
10 * as published by the Free Software Foundation.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 ******************************************************************************/
25 * Element d'un formulaire pour LdapSaisie
27 * Cette classe gère les éléments des formulaires.
29 * @author Benjamin Renard <brenard@easter-eggs.com>
37 var $values = array();
38 var $_required = false;
41 var $fieldTemplate = 'LSformElement_field.tpl';
42 var $template = 'LSformElement.tpl';
43 var $fetchVariables = array();
48 * Cette methode construit l'objet et définis sa configuration de base.
50 * @author Benjamin Renard <brenard@easter-eggs.com>
52 * @param[in] &$form [<b>required</b>] LSform L'objet LSform parent
53 * @param[in] $name [<b>required</b>] string Le nom de référence de l'élément
54 * @param[in] $label [<b>required</b>] string Le label de l'élément
55 * @param[in] $params mixed Paramètres supplémentaires
59 function LSformElement (&$form, $name, $label, $params,&$attr_html){
60 $this -> name = $name;
61 $this -> label = $label;
62 $this -> params = $params;
63 $this -> form = $form;
64 $this -> attr_html = $attr_html;
69 * Définis la valeur de l'élément
71 * Cette méthode définis la valeur de l'élément
73 * @author Benjamin Renard <brenard@easter-eggs.com>
75 * @param[in] [<b>required</b>] string or array La futur valeur de l'élément
77 * @retval boolean Retourne True
79 function setValue($data) {
80 if (!is_array($data)) {
84 $this -> values = $data;
89 * Définis la valeur de l'élément à partir des données
90 * envoyées en POST du formulaire
92 * Cette méthode définis la valeur de l'élément à partir des données
93 * envoyées en POST du formulaire.
95 * @author Benjamin Renard <brenard@easter-eggs.com>
97 * @param[in] [<b>required</b>] string or array La futur valeur de l'élément
99 * @retval boolean Retourne True
101 function setValueFromPostData($data) {
102 if (!is_array($data)) {
105 $this -> values = $data;
110 * Exporte les valeurs de l'élément
112 * @retval Array Les valeurs de l'élement
114 function exportValues(){
115 return $this -> values;
119 * Ajoute une valeur à l'élément
121 * Cette méthode ajoute une valeur à l'élément
123 * @author Benjamin Renard <brenard@easter-eggs.com>
125 * @param[in] [<b>required</b>] string or array La futur valeur de l'élément
129 function addValue($data) {
130 if (is_array($data)) {
131 $this -> values = array_merge($this -> values, $data);
134 $this -> values[] = $data;
139 * Test si l'élément est éditable
141 * Cette méthode test si l'élément est éditable
146 return $this -> _freeze;
152 * Rend l'élément non-editable
157 $this -> _freeze = true;
161 * Défini la propriété required de l'élément.
163 * param[in] $isRequired boolean true si l'élément est requis, false sinon
167 function setRequired($isRequired=true) {
168 $this -> _required = $isRequired;
172 * Test si l'élément est requis
174 * Cette méthode test si l'élément est requis
178 function isRequired(){
179 return $this -> _required;
183 * Retourne le label de l'élement
187 function getLabelInfos() {
188 if ($this -> isRequired()) {
189 $return['required']=true;
191 $return['label'] = $this -> getLabel();
192 if (isset($this -> params['help_info'])) {
193 $return['help_info']=__($this -> params['help_info']);
199 * Recupère la valeur de l'élement passée en POST
201 * Cette méthode vérifie la présence en POST de la valeur de l'élément et la récupère
202 * pour la mettre dans le tableau passer en paramètre avec en clef le nom de l'élément
204 * @param[] array Pointeur sur le tableau qui recupèrera la valeur.
206 * @retval boolean true si la valeur est présente en POST, false sinon
208 function getPostData(&$return) {
209 if($this -> isFreeze()) {
212 if (isset($_POST[$this -> name])) {
213 $return[$this -> name]=array();
214 if(!is_array($_POST[$this -> name])) {
215 $_POST[$this -> name] = array($_POST[$this -> name]);
217 foreach($_POST[$this -> name] as $key => $val) {
219 $return[$this -> name][$key] = $val;
225 $return[$this -> name] = array();
231 * Retourne le label de l'élement
233 * Retourne $this -> label, ou $this -> params['label'], ou $this -> name
235 * @retval string Le label de l'élément
237 function getLabel() {
238 if ($this -> label != "") {
239 return __($this -> label);
241 else if ($this -> params['label']) {
242 return __($this -> params['label']);
245 return __($this -> name);
250 * Le champ est-il a valeur multiple
252 * @retval boolean True si le champ est à valeur multiple, False sinon
254 function isMultiple() {
255 return ($this -> params['multiple'] == true);
259 * Retournne un template Smarty compilé dans le contexte d'un LSformElement
261 * @param[in] string $template Le template à retourner
262 * @param[in] array $variables Variables Smarty à assigner avant l'affichage
264 * @retval string Le HTML compilé du template
266 function fetchTemplate($template=NULL,$variables=array()) {
268 $template = $this -> template;
270 return LSsession :: fetchTemplate(
272 array_merge_recursive(
274 $this -> fetchVariables,
276 'freeze' => $this -> isFreeze(),
277 'multiple'=> $this -> isMultiple(),
279 'values' => $this -> values,
280 'attr_name' => $this -> name,
281 'noValueTxt' => _('No set value'),
282 'fieldTemplate' => $this -> fieldTemplate
289 * Retourne le code HTML d'un champ vide
291 * @retval string Code HTML d'un champ vide.
293 function getEmptyField() {
294 return $this -> fetchTemplate($this -> fieldTemplate);