Donc voila..je vous la fais simple...
J’ai un petit intranet avec 4 catégories, disons 4 bases de recette de cuisines: poulet, boeuf, agneau, mouton.
L’idée est simplement que chaque webuser loggé puisse rentrer "frontend" sa propre recette, suivant un modèle qu’on va imaginer simple :
1) nom
2) prix
3) liste ingrédients
4) temps de préparation
5) Visuel
Dans ces cinq variables, la 1er sera le titre du doc créé [+pagetitle+], la seconde une tv numérique [+prix+], la troisième une tv text [+liste+], la quatrième une tv numérique [+temps+], la cinquième une tv file [+visuel+]
Donc, la question globale est comment procéder avec FDM (la dernière 0.99), qu’on suppose bien installé avec le eform 1.4.4 qui va bien livré lui d’origine avec la version 9.6.
FDM installé, que faire ensuite ?
1) je crée les 4 tv qui vont bien (en backend via Ressources> Gestion des ressources> Variables de modele) :
[+prix+] [+liste+], [+temps+], [+visuel+], la première [+pagetitle+] existant pour tout doc. Je précise à chaque fois pour chacune : a- le type de variable attendue (text, number,file) ainsi que b - le modèle concerné par la variable (bref, le modèle utilisé par mon site de recette !)
Et d’une étape . Ouf, j’ai les 4 tv !
2) Je voudrais que quand mon user se trouve dans Recette> poulet, par exemple, il puisse saisir une nouvelle fiche de recette au poulet. Et idem dans les trois autres rubriques

.
Donc, dans le contenu de ma page (ou répertoire) Poulet, je vais indiquer :
"Endroit pour saisir de nouvelles recettes poulets" ....suivi d’un appel à FDM de type :
[!FDM? &parent=`[*id*]` &redirect=`[*id*]` &eform_tpl=`fdmEformRecette` &model=`55`!]
- &parent=`[*id*]`, qui renvoie ici au repertoire en cours, cad Poulets, indique à FM qu’il doit crée la nouvelle recette comme enfant de ce répertoire.
- &redirect=`[*id*]`, qui renvoie toutjours à ce même repertoire poulet, indique à FDM qu’il doit revenir sur ce répertoire, bref, le ré-afficher après saisie de la nouvelle recette.
- &eform_tpl=`fdmEformRecette` spécifie le template à utiliser pour la saisie de la nouvelle recette, et qui s’affichera en appuyant sur le bouton "Ajouter un document".
- Enfin, &model=`55` renvoie à l’ID d’un document (ici 55) contenant le template à utiliser pour l’affichage de la recette une fois saisie (voir plus loin...)
évidemment, si le principe marche, je pourrais l’étendre aux N autres rubriques (boeuf, agneau....) de mon site de recettes
3) Pour que tout baigne, il me reste à créer ce tpl "fdmEformRecette" sous forme de chunk.
En backend, se rendre donc dans Ressources>Gestion des Ressources>Gestion des Chunks>Nouveau chunk, et
créer un nouveau chunk nommé
fdmEformRecette et contenant :
[+validationmessage+]
<form method="post" action="[~[*id*]~]" id="fdmForm">
<fieldset>
<legend>Recette Produits</legend>
<input type="hidden" name="formid" value="fdmForm" />
<p><label for="pagetitle">Nom de la recette </label><input name="pagetitle" id ="pagetitle" value="[+pagetitle+]" type="text" eform="Précisez le nom de la recette:string:1" /></p
<p><label for="tvprix">Cout approximatif de la recette </label><input name="tvprix" id ="tvprix" value="[+tvprix+]" type="number" /></p>
<p><label for="tvliste">Liste d’ingrédients </label><input name="tvliste" id ="tvliste" value="[+tvliste+]" type="text" /></p>
<p><label for="tvtemps">Temps de préparation</label><input name="tvtemps" id ="tvtemps" value="[+tvtemps+]" type="number" /></p>
<label for="tvvisuel">Phot de la recette</label><input id="tvvisuel" name="tvvisuel" value="[+tvvisuel+]" size="" class="" type="file"><span>Au format jpeg ou png </span>
</fieldset>
<p>
<input name="fdmsubmit" value="Enregistrer" type="submit" />
</p>
</form>
Comme vous le remarquerez, deux choses sont indispensables dans ce tpl pour qu’il fonctionne correctement :
a) <form method="post" action="[~[*id*]~]" id="fdmForm">, <input type="hidden" name="formid" value="fdmForm" /> et à la fin <input name="fdmsubmit" value="Enregistrer" type="submit" />sont des balises impératives pour que tout baigne.
b) Les champs Label et imput sont reliés entre eux par la valeur de For dans le premier, et name, value et ID dans le second. L’orthographe du champ concerné doit dont être identique. Et comme il s’agit ici de tv perso (non standard) on fait précéder le nom de la tv des lettres
tv:
tvprix,
tvliste.....idem dans le champ value : [+
tvprix+]). En revanche, les variables créees au départ s’appellent simplement [+prix+], [+liste+], etc.. et non [+
tvprix+] ou [+
tvliste+]
Bon alors et maintenant ? Maintenant j’ai mon appel à FDM dans ma recette de Poulet, le TPL qui va bien pour le formulaire. So what ? je clique sur nouveau Doc et ?
Deux bonnes nouvelles :
1) le formulaire s’affiche.
2) lorsque je l’enregistre, je retourne sur ma page de rubrique, et ma nouvelle recette est bien créée.
Une mauvaise : lorsque j’affiche ma recette, elle est vide. Normal, je dois indiquer à FDM quel model utiliser pour restituer les tv de ma recette...le fameux &model=`55`
Pour cela :
1) je crée un chunk que j’appelle ModelRecette, où je place les placesholders et mises en forme attendues, par exemple :
Nom de la recette : [*pagetitle*]
Cout approximatif de la recette : [*prix*]"
Liste d’ingrédients : [*liste*]
Temps de préparation : [*temps*]
Photo de la recette : [*visuel*]
Remarquez que les placesHolders sont placés entre des étoiles (et non des +).
Je sauvegarde ce chunk, puis je crée un nouveau document dans mon arborescence où je colle, en lieu et place du contenu, l’appel de ce chunk. Donc : {{ModelRecette}}.
Sauvegardez en demandant à ce que ce document ne soit pas mis en cache (onlget reglages de la page).
Notez l’ID de ce document (dans mon exemple 55). Retournez dans la page Poulet et assignez la bonne valeur au paramètre &model de l’appel de FDM :
[!FDM? &parent=`[*id*]` &redirect=`[*id*]` &eform_tpl=`fdmEformRecette` &model=`RENTREZ ICI L’ID de la page de modèle`!]
Voila. sauvegardez le tout, saupoudrez, retournez sur Poulet, créez une nouvelle recette, et vous devriez voir le résultat. Trop chouette.
Mais encore un problème : pour le visuel, il affiche le nom du fichier mais pas le fichier lui-meme. Et si ce nom est bien dans la variable nommée Visuel, je ne sais pas où trouver le fichier même pour l’afficher. Une idée ?