- <?php
-
-
- /**
- * Classe de génération et de contrôle de formulaires
- *
- * @package izForm
- * @author Loic Mathaud <loic@mathaud.net>
- *
- */
- # ******* BEGIN LICENSE BLOCK *******
- #
- # Copyright (c) 2003, Loic Mathaud
- # All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions are met:
- #
- # * Redistributions of source code must retain the above copyright notice,
- # this list of conditions and the following disclaimer.
- # * Redistributions in binary form must reproduce the above copyright notice,
- # this list of conditions and the following disclaimer in the documentation
- # and/or other materials provided with the distribution.
- # * Neither the name of izForm nor the names of its contributors
- # may be used to endorse or promote products derived from this software
- # without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- # THE POSSIBILITY OF SUCH DAMAGE
- #
- # ******* END LICENSE BLOCK *******
-
-
-
- /**
- * définie la balise par défaut qui encadre les éléments de formulaire
- */
- define( 'IZF_DEFAULT_WRAPPER', 'P' );
-
-
-
- /**
- * classe IzForm
- *
- * @package izForm
- */
- class IzForm {
-
- /**
- * Chaîne de caractère contenant la sortie html du formulaire
- *
- * @var string
- * @access private
- */
- var $elementsHtml;
-
- /**
- * Tableau contenant les éléments du formulaire
- *
- * @var array
- * @access private
- */
- var $elements = array();
-
- /**
- * Tableau contenant les éléments à charger dans une liste déroulante
- *
- * @var array
- * @access private
- */
- var $selectElements = array();
-
- /**
- * Tableau de 2 valeurs contenant les indices qui permettront de positionner un élément fieldset
- *
- * @var array
- * @access private
- */
- var $fieldSetElements = array();
-
- /**
- * Tableau de 2 valeurs contenant les indices qui permettront de positionner un élément optgroup dans une liste déroulante
- *
- * @var array
- * @access private
- */
- var $optGroupElements = array();
-
- /**
- * Tableau qui est la copie du tableau superglobal correspond à la méthode employée pour soumettre le formulaire
- *
- * @var array
- * @access public
- */
- var $submittedData = array();
-
- /**
- * Tableau des valeurs à contrôler une fois le formulaire soumis
- *
- * @var array
- * @access private
- */
- var $verifData = array();
-
- /**
- * Défini la manière dont est affiché le label
- *
- * Par défaut, vaut 'wrapp' : le label englobe l'élément de formulaire
- * Autre valeur possible : 'nowrapp' : le label est refermé avant l'élément de formulaire
- *
- * @var string
- */
- var $labelMode = 'wrapp';
-
-
- /**
- * Constructeur de la classe
- *
- * Défini le script cible du formulaire, la méthode par laquelle il est soumis
- * et quel est le type d'encryption de celui-ci
- * Le constructeur enregistre la balise d'ouverture du formulaire,
- * copie dans la variable de classe {@link $submittedData} le bon tableau superglobal en fonction
- * de la méthode employée pour envoyer le formulaire
- *
- * @param string $method methode par laquelle est soumis le formulaire. Peut prendre les valeurs 'post' ou 'get' ('post' par defaut)
- * @param string $action script cible du formulaire. Si $action n'est pas spécifiée elle prend pour valeur le script même qui contient le formulaire
- * @param string $id identifiant du formulaire. Prend 'form1' par défaut
- * @param int $enctype type d'encryption du formulaire (0: multipart/form-data, 1: application/x-www-form-urlencoded)
- * @access public
- */
- function IzForm( $method = 'post', $action = '', $id = 'form1', $enctype = 1 ) {
- $this->method = strtoupper( $method );
-
- if ( $this->method == 'POST' ) {
- $this->submittedData = $_POST;
- } elseif ( $this->method == 'GET' ) {
- $this->submittedData == $_GET;
- }
-
- switch ($enctype) {
- case 0:
- $enctype = "multipart/form-data";
- break;
- case 1:
- $enctype = "application/x-www-form-urlencoded";
- break;
- }
- $attributes['action'] = ( $action == '' ) ? $_SERVER['PHP_SELF'] : $action;
- $attributes['id'] = $id;
- $attributes['method'] = strtolower( $method );
- $attributes['enctype'] = $enctype;
- $res = array( 'type' => 'open_form', 'attributes' => $attributes );
-
- $this->setElement($res);
- }
-
- /**
- * Ajoute un element de type input type="text" au formulaire
- *
- * @param string $name nom du champs texte
- * @param string $label label du champs texte: texte placé devant le champ pour l'identifier
- * @param string $value valeur du champs texte
- * @param int $size taille du champs texte
- * @param int $maxlength taille maximale du champs texte
- * @param string $id identifiant du champs texte. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant le champs texte. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant le champs texte. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label du champs texte pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés au champs texte pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addText( $name, $label = '', $value = '' , $size = '', $maxlength = '', $id = '', $before = '', $after = '', $elem_attributes = '', $lbl_attributes = '' ) {
- $attributes['name'] = $name;
- $attributes['label'] = $label;
- $attributes['value'] = $value;
- $attributes['size'] = $size;
- $attributes['maxlength'] = $maxlength;
- $attributes['id'] = ( empty($id) ? $name : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'text', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. $before, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. $after, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un element de type input type="password" au formulaire
- *
- * @param string $name nom du champs password
- * @param string $label label du champs password: texte place devant le champ pour l'identifier
- * @param string $value valeur du champs password
- * @param int $size taille du champs password
- * @param int $maxlength taille maximale du champs password
- * @param string $id identifiant du champs password. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant le champs password. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant le champs password. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label du champs password pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés au champs password pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addPassword( $name, $label = '', $value = '', $size = '', $maxlength = '', $id = '', $before = '', $after = '', $elem_attributes = '', $lbl_attributes = '' ) {
- $attributes['name'] = $name;
- $attributes['label'] = $label;
- $attributes['value'] = $value;
- $attributes['size'] = $size;
- $attributes['maxlength'] = $maxlength;
- $attributes['id'] = ( empty($id) ? $name : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'password', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. $before, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. $after, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un element de type input type="checkbox" au formulaire
- *
- * @param string $name nom de l'élément checkbox
- * @param string $label label de l'élément checkbox : texte place après l'élement pour l'identifier
- * @param string $value valeur de l'élément checkbox
- * @param boolen $check valeur par défaut de l'état de la case à cocher (0 = non cochée, 1 = cochée)
- * @param string $id identifiant de l'élément checkbox. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant l'élément checkbox. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant l'élément checkbox. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label de l'élément checkbox pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés à l'élément checkbox pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addCheckBox( $name, $label, $value, $check = 0, $id = '', $before = '', $after = '', $elem_attributes = '', $lbl_attributes = '' ) {
- $attributes['name'] = $name;
- $attributes['label'] = $label;
- $attributes['value'] = $value;
- $attributes['check'] = $check;
- $attributes['id'] = ( empty($id) ? $name . '-' . $value : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'checkbox', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. $before, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. $after, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un element de type input type="radio" au formulaire
- *
- * @param string $name nom de l'élément radio
- * @param string $label label de l'élément radio : texte place après l'élement pour l'identifier
- * @param string $value valeur de l'élément radio
- * @param boolen $check valeur par défaut de l'état du bouton radio (0 = non coché, 1 = coché)
- * @param string $id identifiant de l'élément radio. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant l'élément radio. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant l'élément radio. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label de l'élément radio pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés à l'élément radio pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addRadio( $name, $label, $value, $check = 0, $id = '', $before = '', $after = '', $elem_attributes = '', $lbl_attributes = '' ) {
- $attributes['name'] = $name;
- $attributes['label'] = $label;
- $attributes['value'] = $value;
- $attributes['check'] = $check;
- $attributes['id'] = ( empty($id) ? $name . '-' . $value : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'radio', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. $before, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. $after, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un element de type input type="submit" au formulaire
- *
- * @param string $value valeur du bouton submit (texte affiché sur le bouton)
- * @param string $name nom du bouton submit
- * @param string $label label du bouton submit : texte place devant le bouton pour l'identifier
- * @param string $id identifiant du bouton submit. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant le bouton submit. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant le bouton submit. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label du bouton submit pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés au bouton submit pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addSubmit( $value, $name = '', $label = '', $id = '', $before = '', $after = '', $lbl_attributes = '', $elem_attributes = '' ) {
- $attributes['value'] = $value;
- $attributes['name'] = $name;
- $attributes['label'] = $label;
- $attributes['id'] = ( empty($id) ? $name : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'submit', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. $before, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. $after, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un element de type input type="reset" au formulaire
- *
- * @param string $value valeur du bouton reset (texte affiché sur le bouton)
- * @param string $name nom du bouton reset
- * @param string $label label du bouton reset : texte place devant le bouton pour l'identifier
- * @param string $id identifiant du bouton reset. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant le bouton reset. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant le bouton reset. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label du bouton reset pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés au bouton reset pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addReset( $value, $name = '', $label = '', $id = '', $before = '', $after = '', $lbl_attributes = '', $elem_attributes = '' ) {
- $attributes['value'] = $value;
- $attributes['name'] = $name;
- $attributes['label'] = $label;
- $attributes['id'] = ( empty($id) ? $name : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'reset', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. $before, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. $after, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un element de type input type="file" au formulaire
- *
- * @param string $name nom du bouton parcourir pour joindre un fichier
- * @param string $label label du bouton parcourir : texte place devant le bouton pour l'identifier
- * @param string $id identifiant du bouton parcourir. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant le bouton parcourir. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant le bouton parcourir. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label du bouton parcourir pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés au bouton parcourir pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addFile( $name , $label = '', $id = '', $before = '', $after = '', $lbl_attributes = '', $elem_attributes = '' ) {
- $attributes['name'] = $name;
- $attributes['label'] = $label;
- $attributes['id'] = ( empty($id) ? $name : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'file', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. $before, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. $after, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un element de type input type="hidden" au formulaire
- *
- * @param string $name nom du champ caché
- * @param string $value valeur du champ caché
- * @access public
- */
- function addHidden( $name, $value) {
- $attributes['name'] = $name;
- $attributes['value'] = $value;
-
- $res = array( 'type' => 'hidden', 'attributes' => $attributes);
-
- $this->setElement($res);
- }
-
- /**
- * Ajoute un element de type textarea au formulaire
- *
- * @param string $name nom de la zone de texte
- * @param int $rows nombre de lignes de la zone de texte
- * @param int $cols nombre de colonnes de la zone de texte
- * @param string $label label de la zone de texte : texte place devant cette zone pour l'identifier
- * @param string $value valeur de la zone de texte
- * @param string $id identifiant unique de la zone de texte. Si n'est pas affecté, prend la valeur de $name
- * @param string $before élement ouvrant encadrant la zone de texte. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $after élement fermant encadrant la zone de texte. Peut prendre 3 valeurs : P (paragraphe), D (div) ou B (espace). Vaut P par défaut
- * @param string $lbl_attributes attributs pouvant être ajoutés au label de la zone de texte pour les css (class, id, style inline) ou du javascript
- * @param string $elem_attributes attributs pouvant être ajoutés à la zone de texte pour les css (class, id, style inline) ou du javascript ou autre
- * @access public
- */
- function addTextArea( $name, $rows, $cols, $label = '', $value = '', $id = '', $before = '', $after = '', $lbl_attributes = '', $elem_attributes = '' ) {
- $attributes['name'] = $name;
- $attributes['rows'] = $rows;
- $attributes['cols'] = $cols;
- $attributes['label'] = $label;
- $attributes['value'] = $value;
- $attributes['id'] = ( empty($id) ? $name : $id );
- $before = ( empty($before) ? IZF_DEFAULT_WRAPPER : $before );
- $after = ( empty($after) ? IZF_DEFAULT_WRAPPER : $after );
- $attributes['before'] = $before;
- $attributes['after'] = $after;
- $attributes['lbl_attributes'] = '';
- $attributes['elem_attributes'] = '';
-
- if ( !empty($lbl_attributes) ) {
- $attributes['lbl_attributes'] = ' '. $lbl_attributes;
- }
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'textarea', 'attributes' => $attributes);
-
- $wrappOpenAttributes['description'] = 'open';
- $wrappCloseAttributes['description'] = 'close';
- $wrappOpen = array( 'type' => 'wrapp_'. IZF_DEFAULT_WRAPPER, 'attributes' => $wrappOpenAttributes );
- $wrappClose = array( 'type' => 'wrapp_'. IZF_DEFAULT_WRAPPER, 'attributes' => $wrappCloseAttributes );
-
- $this->setElement($wrappOpen);
- $this->setElement($res);
- $this->setElement($wrappClose);
- }
-
- /**
- * Ajoute un paragraphe de texte dans le formulaire
- *
- * @param string $value texte du paragraphe
- * @param string $elem_attributes attributs pouvant être ajoutés au paragraphe pour les css (class, id, style inline)
- * @access public
- */
- function addParagraph( $value, $elem_attributes = '' ) {
- $attributes['value'] = $value;
- $attributes['elem_attributes'] = '';
-
- if ( !empty($elem_attributes) ) {
- $attributes['elem_attributes'] = ' '. $elem_attributes;
- }
- $res = array( 'type' => 'paragraph', 'attributes' => $attributes);
-
- $this->setElement($res);
- }
-
- /**
- * Ajoute un élément '<option></option> dans une liste déroulante
- * Charge la paire valeur/label dans la liste deroulante
- *
- * addDataInSelect précharge en fait les données qui seront dans la liste déroulante
- * Il faut donc précharger toutes les valaurs que l'on souhaite pour la liste avant d'ajouter celle-ci
- * avec la méthode {@link addSelect()}
- *
- * @param string $value valeur de l'attribut 'value' de la balise 'option'
- * @param string $label texte visible de l'element option de la liste deroulante
- * @access public
- */
- function addDataInSelect( $value, $label ) {
- $attributes['value'] = $value;
- $attributes['label'] = $label;
- $res = array( 'type' => 'option', 'attributes' => $attributes);
-
- $this->setSelectElement($res);
- }
-
- /**
- * Ajoute un élément dans le tableau selectElement[], tableau de préchargement des éléments pour une lsite déroulante
- *
- * @param array $res tableau associatif contenu la valeur et le label de la balise '<option>' à rajouter à la liste déroulante
- * @access private
- */
- function setSelectElement( $res ) {
- $this->selectElements[] = $res;
- }
-
- /**
- * Défini les limites pour mettre des éléments '<option>' d'une liste déroulante dans une balsie '<optgroup>'
- *
- * Cette méthode défini les bornes parmi les éléments déjà préchargés par la méthode {@link addDataInSelect()}
- *
- * @param string $start élement de début. Correspond à l'attribut $value du premier élément qui sera dans l'optgroup
- * @param string $end élement de fin. Correspond à l'attribut $value du dernier élément qui sera dans l'optgroup
- * @access public
- */
- function setOptGroupLimiters( $start, $end ) {
- foreach ( $this->selectElements as $id => $elem ) {
- foreach ( $elem as $k => $attribut ) {
- if ( $k == 'attributes' ) {
- if ( isset($