Skip Navigation

[Closed] Keep the fields of a form

This support ticket is created 3 years, 2 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

No supporters are available to work today on Toolset forum. Feel free to create tickets and we will handle it as soon as we are online. Thank you for your understanding.

Sun Mon Tue Wed Thu Fri Sat
9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 - - 9:00 – 13:00
14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 - - 14:00 – 18:00

Supporter timezone: Africa/Casablanca (GMT+01:00)

This topic contains 12 replies, has 2 voices.

Last updated by Jamal 3 years, 2 months ago.

Assisted by: Jamal.

Author
Posts
#2159475
Etat-de-lecture.png

I am French so sorry for my English.

Tell us what you are trying to do?
Here, I am creating a community site around reading. From the book files (with the title, author, edition, etc ...), I would like the member to be able to add this book to one of the three libraries: read, currently reading and to read (which I have not yet created because I was thinking of making an archive but it may not be the right thing to do). Can you explain to me how to do it? Like the other time, I don't want people to do it for me, but to understand how it works.

What i have done so far :
Here is how I did it but I have the feeling that I missed a step to link the book, the element of the book and the related form.
1.I created the type of publication: element of the book.
2. Then, I created a one-to-one relationship: books to book element.
3. I have created personalized "book element" fields: read, currently reading, whishlist, etc ....
4.I have created the corresponding form.
5. I put this form in the "Books" content template where I want it to be.
6. I created a "My read books" page with the "author" filter. It includes a view with an "item from the book" condition and a static value: Read.
My problem is that the form does not stay on "Read" once sent and in the "My books read" page: the view appears but without the content and each time I click on Read, a view is created then that I would like: when the book is read, that it appears only once.
Am I clear ?

Is there any documentation that you are following?
The Toolset facebook group

Is there a similar example that we can see?
Yes on the Goodreads :
hidden link

I put what I want in the attached image.

What is the link to your site?
hidden link
My website is under maintenance.

#2159861

Hello and thank you for contacting Toolset support.

I do speak French, so I'll continue below in French, as I am not sure to fully understand your setup.

J'ai compris que vous avez deux CPT: "Book" et "Item of Book" avec une relation one-to-many.
J'ai compris que le "Item of Book" est créé par utilisateur, et l'utilisateur devrait changer un champs personnalisé(avec les valeurs: read, currently reading and to read).

Mais je n'ai pas bien compris d'autres facets. Vous parlez d'une content template puis d'une page "my reads", j'assume que la content template est pour afficher un "Book"(non pas, un "Item of Book"), et la page affiche une view qui devrait afficher la liste des "Item of Book".

Je soupçonne que le formulaire est pour éditer un "Item of Book", et qu'il est placé dans la content template do "Book", sans pour autant lui passer le ID du "Item of Book" qu'il devrait éditer.

Alors, j'aimerais bien voir de plus prêt ce qui est déjà établit. Pourriez vous m'accorder un accès temporaire à votre site pour vérifier cela de plus prés. J'ai activé l'espace privé pour partager les accès en toute sécurité. Veuillez faire une sauvegarde de base de données.

J'aimerais beaucoup que vous m'expliquiez ce que vous voulez faire, en étapes, en ajoutant à chaque fois les liens pour y aller directement(liens de pages, lien de content template ou de view, lien de formulaire). Par example:
1. J'ai créer la content template xxx(le lien pour la template sur le back office) .
2. J'ai ajouté le formuliare xxx(lien pour le formulaire).
...
n. Je m'attends à avoir yyy, alors que j'obtiens zzz

#2160033

Malheureusement, les identifiants ne fonctionne pas pour moi. Le mot de passe ne correspond pas à l’identifiant fournie.

Pourriez vous vérifier le mot de passe de votre coté et mettre à jour l'ancienne réponse our la prochaine réponse qui sera aussi privé.

#2160115

Bonjour Jamal,
J'ai mis les bons identifiants dans mon ancien message privé.
Merci de votre attention

#2160599

C'est bien ce que je pensais. Vous avez utiliser le formulaire, pour éditer les états de lectures, sur la content template d'un livre, ce qui n'est pas correct.

Tout d'abord, il faut noter qu'une content template et un formulaire sont toujours autour d'un post. Dans ce cas, la content template affiche le post livre, et le passe aussi au formulaire. Du coup le formulaire ne foncitonne pas comme il le faut, par ce qu'il s'attend a éditer un etat de livre au lieu d'un livre.

Pour contourener cela, il faut utiliser une content template intermediaire et lui passer le post état de livre associé au poste livre en cours. On passe le post associé a travers l'attribut item du shortcode de content template.
https://toolset.com/documentation/programmer-reference/views/views-shortcodes/item-attribute/

J'ai créé une content template "Modèle pour formulaire Etat de lecture" qui ne contient que le formulaire. hidden link

Ensuite, on peut utiliser cette content template dans la content template du livre, en lui passant le post associé comme suit:

[wpv-post-body view_template="modele-pour-formulaire-etat-de-lecture" item="@livre-etat-de-lecture.child"]

J'ai enregistré un court vidéo pour vous montrer comment le faire avec l'interface Toolset

Toutefois j'ai remarqué qu'aucun post etat de lecture n'est actuellement lié à un post livre. Et je me demande aussi, pourquoi vous avez utilisé une relation one-to-one au lieux d'une relation one-to-many? J'assume que vous voulez laisser plusieurs utilisateurs lire un livre, du coup chacun devrait avoir son propre post etat de lecture, et ainsi la relation devrait être one-to-many.

Est ce que vous allez laisser plusieurs utilisateurs gérer leurs états de lecture pour le même livre, ou juste un utilisateur par livre?

#2160611

Bonjour,
Merci de votre réponse et votre aide.

J'avais supprimé les "états de lecture" car cela ne donnait pas ce que j'attendais.

Vous parlez d'une vidéo mais où est-elle ?

Ensuite, vous avez raison. Il faut une relationship one to many. Un livre peut avoir plusieurs états de lecture. Car oui, un livre peut-être lus, en cours de lecture, dans une pile à lire et dans une whishlist de plusieurs Créalecteurs.

Je vais essayé de voir ce que cela fait.

En attendant!
Passez une bonne après-midi.

#2160619

Re,

Je viens de rester et cela n'a rien changé!
A chaque reboot, le formulaire revient à zéro alors que la valeur sélectionnée par le membre reste affichée.
Ensuite, je suis allée voir dans la page "Mes livres lus" et seule la bordure s'affiche.

Je pense qu'il manque toujours l'appariement entre le livre, le membre et l'état de lecture.

Désolée! Je ne comprends pas comment faire!

#2160733

Je comprends la frustration que vous pouvez ressentir si vous n'êtes pas familié avec les notions de Toolset.

J'ai pu préparer un example pour vous montrer comment le faire. Du moment que vous avez plusieurs conditions sur la content template, j'ai ajouté un container(vert) en haut de page pour montrer comment faire.

J'espère qu'on s'est mis d'accord qu'une content template et un formulaire sont toujours associés à une poste. Mais je ne vous ai pas montré comment relier toutes les ficelles. Je ne voulais pas parler de plusieurs trucs en une seule fois.

Pour ce projet, nous avons besoin de savoir si l'utilisateur connecté a un poste(etat-de-lecture) associé au livre courant. Si oui, nous devrons afficher un formulaire pour modifier l'etat de lecture. Sinon, nous devrons afficher un formulaire pour créer ce poste(etat-de-lecture). Pour cela, il nous faut utiliser une view. Une view nous permet de chercher dans la base de données avec des critères(lié au livre courant, et créé par l'utilisateur connecté).
Alors:
1. j'ai créé une view pour cela, voici les critère de selection hidden link
2. Dans la boucle de cette view, nous ajouterons le formulaire pour modifier l'état de lecture. J'ai créé un nouveau formulaire pour cet effet hidden link

3. Lorsque la view ne trouve aucun poste(c-a-d que l'utilisateur n'a jamais ajouter ce livre à sa bibliothèque), nous afficherons le forumulaire qui créera l'état de lecture. Cela ce fait à travers un paramètrage sur le block loop. Voir cette capture hidden link

J'espère que c'est bien assez clair, sinon, je vous pris de me poser vos questions et dire sur quelle étape (numéro de l'étape).

Malheureusement, je ne pense pas que vous avez interêt à utiliser AJAX sur le formulaire etat-de-lecture(pour la création de l'état de lecture). Parce que vous n'aurez pas le dropdown des états de lecture. Il faudrait que la page se recharge pour le voir.
Pour le formulaire de modificaiton, je pense que vous pouvez continuer à utiliser AJAX.

J'ai omis de dire certaine étapes que j'ai du faire pour simplifier les choses. Surtout les deux étapes suivantes:
1. J'ai modifier la configuration du custom field etat de lecture pour enlever l'attribut requis, sinon le formulaire de création ne fonctionnera pas si le field n'a pas une valeur par défaut.
2. Sur le premier formulaire etat-de-lecture qui est sencé créer un nouveau poste état de lecture, j'ai ajouté le champs de relation(Livre<>Etat de lecture). Et je lui ai passé la valeur de poste parent a travers le shortcode [wpv-post-id] qui va être induit de la page courante(page du livre). Voir cette capture d'écran hidden link
Ensuite j'ai basculer vers le mode avancé et j'ai caché le field de relation avec du CSS (en ligne). hidden link

Maintenant, si vous voulez faire parreil à l'interieur de chaque conditional block, vous n'aurez qu'a réutiliser le meme view que j'ai créé(Etat de lecture du livre par utilisateur). Ajouter un block view, et choisir le view sur le dropdown à droite. Voir cette capture hidden link
Je viens de le faire pour le premier conditional block, je vous laisse le faire pour les autres. Ensuite, vous pouvez retirer le block container que j'ai utilisé durant mes tests.

#2161733

Bonjour Jamal,
J'ai regardé ce que vous avez fait hier et franchement merci! J'aurais jamais compris de faire cela toute seule!

Toutefois, je dois avouer que je ne sais pas non plus comment faire pour que le livre lu par le membre apparaisse dans la page "Mes livres lus". Je pensais ce que j'avais fait était suffisant mais non!

Pourriez-vous également m'aider pour cette partie ? d'autant que je compte la reproduire pour faire d'autres fonctionnalités dans le site web.

Merci beaucoup d'avance.

New threads created by Jamal and linked to this one are listed below:

https://toolset.com/forums/topic/intermediary-posts-from-the-current-user/

#2161861

Biensur. Toutefois, pour les règles d'assistance, nous ne pouvons traiter qu'un seul problème à la fois. Cela nous aide à vous apporter un meilleur service et aide également les autres utilisateurs à trouver toutes les informations ici exposées. Pour cette raison, j'ai créé un nouveau ticket pour répondre à cette question.

Si vous jugez que la question initiale de ce ticket a été répondu, je vous pris de la marquer comme résolu.

#2161865

My issue is resolved now. Thank you!

#2162189

Re,
Cela fonctionne correctement même en n'étant pas administrateur mais simple membre!

#2162215

Je n'ai pas vraiment vérifier. Dites moi si queleque chose ne marche pas comme vous le souhaitiez.

Avec le plugin Toolset Access, vous pouvez choisir quels roles d'utilisateurs pourront éditer le formulaire sur Toolset->Access control->Toolset Forms(tab).

The topic ‘[Closed] Keep the fields of a form’ is closed to new replies.