* Création de dossiers à l'installation de l'extension :
  - "fileadmin/extensions/rvvnfscforms/upload" : sert à l'upload temporaire des fichiers joints. (Il est vidé par une tâche planifiée, cf. plus bas)
  - "fileadmin/extensions/rvvnfscforms/custom" : sert à stocker les formulaires non-génériques (propres à l'entité)
  - "fileadmin/extensions/rvvnfscforms/custom/templates/" : sert à stocker les templates Fluid des formulaires non-génériques (propres à l'entité)
  - "fileadmin/extensions/rvvnfscforms/custom/partials/" : sert à stocker les partials Fluid des formulaires non-génériques (propres à l'entité)

* Vérification du poids total des fichiers transmis : 
  - Nouvel élement "TotalUploadSize" (à ajouter à tous les formulaires disposant de plusieurs pièces jointes).
  - Hook "TotalUploadSize" de type afterSubmit()
  
!!! ATTENTION !!! l'ajout de cet élément décale d'une unité les éléments suivants => modifier la surcharge TypoScript de ces éléments s'il y en a une !!!

* Tous les formulaires ont maintenant 3 étapes :
 - 1) Sélection "Particulier/Association/Entreprise" (en fonction du formulaire), Conditions Générales d'Utilisation, avec acceptation obligatoire
 - 2) Données texte
 - 3) Fichiers
!!! ATTENTION !!! l'ajout de ces étapes décale d'une unité le niveau d'étape des éléments => modifier la surcharge TypoScript de ces éléments s'il y en a une !!!

* Ajout de l'élément Usertype ("Vous êtes") avec le choix parmi 3 valeurs : "Un particulier", "Une association" ou "Une entreprise"

* CGU pour la saisine en 1ère page des formulaires
  - Ajout de constantes :
  plugin.tx_rvvnfscforms.entityName = Réseau de Villes et Villages Numériques
  plugin.tx_rvvnfscforms.entityOf = du
  plugin.tx_rvvnfscforms.entityTo = au
  plugin.tx_rvvnfscforms.entityThe = Le
  plugin.tx_rvvnfscforms.entityDomain = www.rvvn.org  
  !!! ATTENTION !!! l'ajout de ces constantes nécessite de les surcharger ensuite dans les constantes du gabarit principal !!!
  
  - Ajout d'un élément de formulaire "CGU" dont les propriétés sont surchargés globalement par la config TypoScript suivante :
  
    plugin.tx_form.settings.yamlSettingsOverrides {
        prototypes.standard.formElementsDefinition.CGU {
            properties {
                entityName = {$plugin.tx_rvvnfscforms.entityName}
                of = {$plugin.tx_rvvnfscforms.entityOf}
                to = {$plugin.tx_rvvnfscforms.entityTo}
                the = {$plugin.tx_rvvnfscforms.entityThe}
            }
        }
    }
    
  - Ajout d'un élément cliquable pour afficher/masquer les CGU
    
 - Plus besoin des constantes formCityName ni formCityDomain
  !!! ATTENTION !!! la suppression de ces constantes nécessite de les supprimer des constantes du gabarit principal !!!

* Pour les formulaires ayant un champ "Numéro d'inscription SIREN", celui-ci devient obligatoire si l'usager a choisi "Entreprise" ou "Association" dans le champ "Vous êtes" à l'étape précédente :
  - Nouveaux élements "RegistrationName" et "RegistrationNumber"
  - Hook "SetRegistrationFields" de type afterInitializeCurrentPage()
   
* Remplacement des ImageUpload par des FileUpload (pour accepter les documents PDF en plus des images) selon les cas
* Ajout du type mime autorisé "application/pdf" aux FileUpload

* Amélioration de l'ergonomie des champs de type "file" :
  - ViewHelper personnalisé "UploadResourceViewHelper" (remplace celui du framework Form)
  - Ajout de javascript (dans le template "Form.html")
  - Ajout de style (style.css)
  
* Génération d'un identifiant unique pour chaque envoi de formulaire (Finisher "RecordNumber") :
  - Ce finisher crée un identifiant unique pouvant être utilisé pour former le numéro d'un accusé d'enregistrement
  - La forme de cet identifiant est la suivante : année(4)-mois(2)-jour(2)-heures(2)minutes(2)secondes(2)-hash(8)
  - Le hash utilise l'encryption key (via le HashService) du site pour encoder la date de l'envoi du formulaire  
  
* Ajout d'une tâche planifiée qui supprime les fichiers restés dans le dossier d'upload temporaire (pour des raisons diverses, par exemple l'utilisateur ne soumet finalement pas le formulaire, ou une erreur s'est produite après le dépôt)
    
* traduction des boutons "Page précédente" et "Page suivante"

* Ajout des indicateurs d'étape
* RGPD : on ne transmet plus l'adresse IP

* Les "renderables" et le "finishers" sont maintenant référencés par une clé plutôt qu'un index numérique. Cela facilité la surcharge en TypoScript
!!! ATTENTION !!! l'utilisation de ces clés empêche ensuite d'accéder aux éléments par leur index => modifier la surcharge TypoScript de ces éléments s'il y en a une !!!

* Ajout d'un finisher Crypt pour chiffrer les champs de type Password avant de les sauvegarder en base de données
* Ajout d'un formulaire de demande de compte citoyen avec enregistrement des informations en base de données
* Le type d'élément 'StaticAlertText' accepte maintenant le HTML

* Certains champs des finishers du plugin backend ne sont plus éditables car configurés par défaut