public function afficherFromArray($parametres = array()) { $html = ""; $t = new Template($this->cheminTemplates); $t->assign_vars(array('idFormObject' => $this->identifiantObject)); if (isset($parametres['onClickButtonSubmit'])) { $t->assign_vars(array('onClickButtonSubmit' => $parametres['onClickButtonSubmit'])); } $formName = ""; if (isset($parametres['formName'])) { $t->assign_vars(array('formName' => $parametres['formName'])); $formName = $parametres['formName']; } else { $t->assign_vars(array('formName' => 'defaultFormName')); $formName = "defaultFormName"; } if (isset($parametres['styleEntete'])) { $t->assign_vars(array('styleEntete' => $parametres['styleEntete'])); } if (isset($parametres['styleField'])) { $t->assign_vars(array('styleField' => $parametres['styleField'])); } if (isset($parametres['htmlSubmitButton'])) { $t->assign_vars(array('htmlSubmitButton' => $parametres['htmlSubmitButton'])); } if (isset($parametres['submitButtonId'])) { $t->assign_vars(array('submitButtonId' => $parametres['submitButtonId'])); } if (isset($parametres['onClickSubmitButton'])) { $t->assign_vars(array('onClickSubmitButton' => $parametres['onClickSubmitButton'])); } if (isset($parametres['codeHtmlSubmitButton'])) { $t->assign_vars(array('codeHtmlSubmitButton' => $parametres['codeHtmlSubmitButton'])); } if (isset($parametres['styleError'])) { $t->assign_vars(array('styleError' => $parametres['styleError'])); } if (isset($parametres['templateFileName'])) { $t->set_filenames(array('formulaire' => $parametres['templateFileName'])); } else { $t->set_filenames(array('formulaire' => 'formGeneric.tpl')); } if (isset($parametres['titrePage'])) { $t->assign_vars(array('titrePage' => $parametres['titrePage'])); } if (isset($parametres['formAction'])) { $t->assign_vars(array('formAction' => $parametres['formAction'])); } if (isset($parametres['codeHtmlBeforeSubmitButton'])) { $t->assign_vars(array('codeHtmlBeforeSubmitButton' => $parametres['codeHtmlBeforeSubmitButton'])); } if (isset($parametres['codeHtmlInFormAfterFields'])) { $t->assign_vars(array('codeHtmlInFormAfterFields' => $parametres['codeHtmlInFormAfterFields'])); } if (isset($parametres['codeHtmlInFormBeforeFields'])) { $t->assign_vars(array('codeHtmlInFormBeforeFields' => $parametres['codeHtmlInFormBeforeFields'])); } if (isset($parametres['codeHtmlAfterSubmitButton'])) { $t->assign_vars(array('codeHtmlAfterSubmitButton' => $parametres['codeHtmlAfterSubmitButton'])); } if (isset($parametres['submitButtonValue'])) { $t->assign_vars(array('formButtonName' => $parametres['submitButtonValue'])); } else { $t->assign_vars(array('formButtonName' => _("Valider"))); } if (isset($parametres['htmlCodeEnteteFields'])) { $t->assign_vars(array('htmlCodeEnteteFields' => $parametres['htmlCodeEnteteFields'])); } if (isset($parametres['htmlCodeFields'])) { $t->assign_vars(array('htmlCodeFields' => $parametres['htmlCodeFields'])); } if (isset($parametres['tableHtmlCode'])) { $t->assign_vars(array('tableHtmlCode' => $parametres['tableHtmlCode'])); } if (isset($parametres['complementHTML'])) { $t->assign_vars(array('complementHTML' => $parametres['complementHTML'])); } if (isset($parametres['captcha'])) { $t->assign_block_vars('captcha', array()); $t->assign_vars(array('captcha' => '<script src="https://www.google.com/recaptcha/api.js" async defer></script> <div class="g-recaptcha" data-sitekey="6LeXTOASAAAAACl6GZmAT8QSrIj8yBrErlQozfWE"></div>')); if (isset($parametres['captcha-error'])) { $t->assign_vars(array('captcha-error' => _('Captcha incorrect !'))); } } if (isset($parametres['fields'])) { foreach ($parametres['fields'] as $fieldName => $proprietes) { if (isset($proprietes['forceValueTo'])) { $value = $proprietes['forceValueTo']; } elseif (isset($this->variablesPost[$fieldName])) { $value = $this->variablesPost[$fieldName]; } else { $value = $proprietes['default']; } if (!isset($proprietes['htmlCode2'])) { $proprietes['htmlCode2'] = ''; } if (!isset($proprietes['htmlCodeBeforeField'])) { $proprietes['htmlCodeBeforeField'] = ''; } switch ($proprietes['type']) { case 'text': $champ = $proprietes['htmlCodeBeforeField'] . "<input type='text' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; break; case 'date': $d = new dateObject(); $datePicker = ""; if (isset($proprietes['withDatePicker']) && $proprietes['withDatePicker'] == true) { $datePicker = "<INPUT TYPE='button' name='datePick_{$fieldName}' value='Pick' onclick=\"" . $d->getJsCallToDatePicker(array('toElementDestination' => 'document.' . $formName . '.' . $fieldName)) . "\">"; } $champ = $proprietes['htmlCodeBeforeField'] . "<input type='text' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">{$datePicker}" . $proprietes['htmlCode2']; // a rajouter => le date picker break; case 'file': $champ = $proprietes['htmlCodeBeforeField'] . "<input type='file' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; break; case 'password': $champ = $proprietes['htmlCodeBeforeField'] . "<input type='password' name='" . $fieldName . "' value='" . $value . "' " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; break; case 'email': $champ = $proprietes['htmlCodeBeforeField'] . "<input type='text' name='" . $fieldName . "' id='" . $fieldName . "' value='" . stripslashes($value) . "' " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; break; case 'bigText': $champ = $proprietes['htmlCodeBeforeField'] . "<textarea name='" . $fieldName . "' id='" . $fieldName . "' " . $proprietes['htmlCode'] . ">" . stripslashes($value) . "</textarea>" . $proprietes['htmlCode2']; break; case 'tinyMCE': // utiliser la fonction tinyMCE.triggerSave(true, true) pour transferer le contenu de tinyMCE vers le champs textarea pour pouvoir recuperer le contenu en js $this->tinyMCEInit(array('fieldName' => $fieldName)); $f = new formGenerator(); $champ = $proprietes['htmlCodeBeforeField'] . "<div id='tinyMCE'><textarea name='" . $fieldName . "' id='" . $fieldName . "' " . $proprietes['htmlCode'] . ">" . stripslashes($value) . "</textarea></div>" . $proprietes['htmlCode2']; break; case 'hidden': $champ = "<input type='hidden' name='" . $fieldName . "' id='" . $fieldName . "' value='" . stripslashes($value) . "' " . $proprietes['htmlCode'] . ">"; break; case 'captcha': // modif par fabien le 13/04/2011 pour un captcha plus fort (on a été piraté sur le captcha à plusieurs reprise ce jour) $champ = $proprietes['htmlCodeBeforeField'] . "<img id=\"captcha\" src=\"includes/securimage/securimage_show.php?sid=" . md5(uniqid(time())) . "\" alt=\"CAPTCHA Image\" valign='middle' /> Recopiez les caractères de l'image<br> <a href=\"#\" onclick=\"document.getElementById('captcha').src = 'includes/securimage/securimage_show.php?sid=' + Math.random(); return false\">Recharger</a><br><input type='text' name='" . $fieldName . "' value=''>"; //echo md5(uniqid(time())) break; /*case 'optionsList': $champs=$fieldName; if (is_array($proprietes['elementList'])) { foreach ($proprietes['elementList'] as $indice => $val) { } } break;*/ /*case 'optionsList': $champs=$fieldName; if (is_array($proprietes['elementList'])) { foreach ($proprietes['elementList'] as $indice => $val) { } } break;*/ case 'simpleList': $champ = "<select name='" . $fieldName . "' id='" . $fieldName . "'>"; if (!isset($proprietes['noOptionAucun']) || $proprietes['noOptionAucun'] == false) { $champ .= "<option value='0'>Aucun</option>"; } if (is_array($proprietes['elementList'])) { foreach ($proprietes['elementList'] as $indice => $val) { $selected = ''; if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && $this->variablesPost[$fieldName] == $val['value']) { $selected = 'selected'; } $champ .= "<option value=\"" . $val['value'] . "\" " . $selected . ">" . $val['libelle'] . "</option>"; } } $champ .= "</select>"; break; case 'multipleList': $champ = "<select name='" . $fieldName . "[]' multiple>"; if (!isset($proprietes['noOptionAucun']) || $proprietes['noOptionAucun'] != true) { $champ .= "<option value='0'>Aucun</option>"; } if (is_array($proprietes['elementList'])) { foreach ($proprietes['elementList'] as $indice => $val) { $selected = ''; if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && in_array($val['value'], $this->variablesPost[$fieldName])) { $selected = 'selected'; } $champ .= "<option value=\"" . $val['value'] . "\" " . $selected . ">" . $val['libelle'] . "</option>"; } } $champ .= "</select>" . $proprietes['htmlCode2']; break; case 'checkbox': $champ = ""; if (isset($proprietes['elementList']) && is_array($proprietes['elementList'])) { foreach ($proprietes['elementList'] as $indice => $val) { $selected = ''; if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && in_array($val['value'], $this->variablesPost[$fieldName])) { $selected = 'checked'; } if (isset($proprietes['separator'])) { $separator = $proprietes['separator']; } else { $separator = "<br>"; } $champ .= "<input type='checkbox' name='" . $fieldName . "[]' id='" . $fieldName . $indice . "' value='" . $val['value'] . "' " . $selected . ">" . $val['libelle'] . $separator; } } else { $champ = "<input type='checkbox' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; } break; case 'singleCheckBox': $checked = ''; if (isset($proprietes['isChecked']) && ($proprietes['isChecked'] == true || $proprietes['isChecked'] == 1)) { $checked = 'checked'; } $champ = "<input type='checkbox' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" {$checked} " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; break; case 'radio': $champ = ""; if (isset($proprietes['elementList']) && is_array($proprietes['elementList'])) { foreach ($proprietes['elementList'] as $indice => $val) { $selected = ''; if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && in_array($val['value'], $this->variablesPost[$fieldName])) { $selected = 'checked'; } if (isset($proprietes['separator'])) { $separator = $proprietes['separator']; } else { $separator = "<br>"; } $champ .= "<input type='radio' name='" . $fieldName . "' id='" . $fieldName . $indice . "' value='" . $val['value'] . "' " . $selected . ">" . $val['libelle'] . $separator; } } else { $champ = "<input type='radio' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; } break; case 'uploadImage': $champ = "<input type='file' name='" . $fieldName . "' id='" . $fieldName . "' value=\"\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2']; if (isset($proprietes['physicalImagePathForTestExists']) && $proprietes['physicalImagePathForTestExists'] != '') { if ($value != '' && file_exists($proprietes['physicalImagePathForTestExists'] . $value)) { $champ .= "<img src='" . $proprietes['urlImagePathForDisplayInForm'] . $value . "' border=0>"; } } break; default: $champ = ""; echo "champ {$fieldName} défini partiellement, framework::formGenerator"; break; } if ($proprietes['type'] == 'hidden') { $t->assign_block_vars('hiddenFields', array('field' => $champ)); } else { $t->assign_block_vars('fields', array('name' => $proprietes['libelle'], 'field' => $champ, 'error' => $proprietes['error'])); } } } ob_start(); $t->pparse('formulaire'); $html = ob_get_contents(); ob_end_clean(); return $html; }