Faire remplir un formulaire aux utilisateurs lors de la création d'un sujet ?

Est-il possible de demander aux utilisateurs de remplir un formulaire lorsqu’ils créent un sujet (c’est-à-dire, lorsque vous ouvrez la fenêtre de création de sujet, faire apparaître un formulaire dans le sujet qu’ils doivent remplir) ?

En utilisant le modèle de sujet lors de la création d’une catégorie, je peux y inclure quelques indications sur ce que les utilisateurs devraient saisir. Mais cela diffère d’un formulaire. Les indications peuvent être supprimées (de sorte que les utilisateurs peu expérimentés ne savent pas quoi en faire), et la page commence à devenir encombrée s’il y a plusieurs indications sur la même page.

Un formulaire offrirait une expérience utilisateur plus épurée et plus simple dans le cas où je souhaite que les utilisateurs remplissent quelques éléments d’information clés dans leur sujet lors de la création de celui-ci.

Est-ce possible ? J’ai trouvé ce composant de thème, mais, bien que je ne sache pas encore exactement ce qu’il fait, je ne pense pas qu’il réalise ce que j’ai en tête. Je vois aussi cette demande datant de plusieurs années — il semble qu’aucune action n’ait été entreprise.

Par ailleurs, je sais que le plugin Custom Wizard permet de créer un formulaire à remplir par les utilisateurs, mais dans ce cas, j’ai besoin que le formulaire soit intégré à un sujet Discourse (afin qu’il apparaisse ensuite comme un sujet avec toutes les fonctionnalités associées, telles que le balisage, les réponses, etc.). De plus, je veux que l’expérience utilisateur reste clairement dans l’application (je crois que le plugin Wizard les emmène vers une page séparée avec un menu différent, etc.).

3 « J'aime »

C’est certainement techniquement possible dans un composant de thème.

3 « J'aime »

Un ancien sujet très lié pour ceux qui sont intéressés :

1 « J'aime »

Merci.

Comment pensez-vous que cela pourrait fonctionner ?

Voici quelques idées que j’ai, bien qu’elles soulèvent encore certaines questions :

Bases actuelles : les espaces réservés. Mais pour l'instant, c'est tout ou rien

La structure la plus simple que je puisse imaginer pour imiter le comportement d’un formulaire serait que le « formulaire » apparaisse dans l’éditeur (le « d-editor » qui s’ouvre lorsque vous cliquez sur créer un sujet).

Dans cet éditeur, vous pourriez proposer différentes « sections », comme :

Nom


Localisation


Problème


Chaque titre de section serait un espace réservé, de sorte que lorsque l’utilisateur cliquerait dessus, le titre (par exemple, Nom) disparaîtrait.

Jusqu’à présent, la mise en place de cela est possible avec le composant de thème pour le texte d’espace réservé.

Mais cela ne suffira pas tout à fait pour obtenir un comportement de type formulaire, car les espaces réservés actuels apparaissent de manière « tout ou rien », comme je l’explique ci-dessous.


Comportement de type formulaire avec des espaces réservés. Mais comment accéder aux divs dans l'éditeur ?

Pour rendre cela plus semblable à un formulaire, chaque section doit se comporter de manière indépendante.

Actuellement, avec le composant de thème pour le texte d’espace réservé, c’est tout ou rien : si l’utilisateur clique dans l’éditeur, tous les titres d’espaces réservés disparaissent.

Ainsi, pour avoir un comportement de formulaire de base, au lieu que tous les titres apparaissent ou disparaissent ensemble, nous devrions faire en sorte que chaque section d’espace réservé se comporte de manière indépendante. Ainsi, lorsque l’utilisateur clique sur l’espace réservé « Nom », seul cet espace réservé disparaît, tandis que les autres espaces réservés (« Localisation » et « Problème ») restent.

Cela serait possible si chaque espace réservé pouvait faire partie de sa propre div avec un identifiant unique dans l’éditeur de texte. Ensuite, avec jQuery, vous pourriez afficher et masquer l’espace réservé en fonction de l’endroit où l’utilisateur a cliqué. Cela nécessite d’ajouter des divs séparées dans ce qui est actuellement une zone de texte, ce dont je ne suis pas sûr de savoir comment faire.

Question pour cette approche : Comment accéder aux divs à l’intérieur de la zone de texte de l’éditeur, afin de pouvoir réagir lorsque l’utilisateur clique dessus ?


Alternative : utiliser l'option de texte de modèle existante. Mais comment rendre le texte non modifiable ?

Une alternative probable serait que les en-têtes de section ne « disparaissent » pas lorsque l’utilisateur clique. Ainsi, les en-têtes de section (exemple : Nom, Localisation et Problème) seraient du texte qui resterait sur la page. Pour le rendre plus semblable à un formulaire, par rapport au modèle de sujet par défaut actuel :

  1. Le texte de l’en-tête de section ne pourrait pas être modifié par l’utilisateur (c’est-à-dire contenteditable="false")
  2. Les points de rupture de section ne pourraient pas être supprimés par l’utilisateur
  3. Il y aurait un espace sous l’en-tête de section où il est clair que l’utilisateur peut taper. Dans le modèle par défaut actuel, ils devraient aller là où se trouve le texte, appuyer sur entrée, pour créer un espace pour taper.

Question pour cette approche : Comment entrer du texte de modèle, mais (i) faire en sorte que ce texte ne soit pas modifiable par l’utilisateur et (ii) prévoir des emplacements clairs pour que l’utilisateur saisisse des informations sous chaque morceau de texte ?


Peut-être existe-t-il une meilleure façon d’obtenir un comportement de type formulaire ?

2 « J'aime »

Vous devriez probablement effectuer une passe sur le modèle avant de générer un ensemble plus complexe de champs de saisie au lieu d’une zone de texte monolithique.

Ensuite, effectuez un post-traitement pour insérer le texte aux bons endroits.

Vous auriez besoin d’une norme de balisage pour identifier les titres et les points de saisie de texte…

Cela pourrait constituer une solution plus légère, car tout resterait dans l’univers du côté client. (tout serait toujours stocké sous forme d’un seul message texte).

Le principal inconvénient de cette approche serait qu’il serait beaucoup plus difficile de rechercher et d’agréger les données de cette manière…

Ça a l’air d’être un projet amusant :slight_smile:

Je recherche quelque chose qui reste côté front-end pour l’instant. L’analyse et la recherche dans différentes parties du formulaire ne sont pas requises pour le moment, et je suppose que c’est le cas dans la plupart des cas d’usage. Il s’agit de s’assurer que les utilisateurs saisissent leurs réponses de manière cohérente.

Je ne comprends pas ce que vous voulez dire par ces points :

J’espère revenir sur ce sujet. J’espère qu’il existe une façon, côté interface, de permettre aux utilisateurs de remplir ce qui ressemble (pour eux) à un formulaire. Ainsi, par exemple, lorsqu’ils créent un sujet, ils verraient quelque chose comme :

« Nom »


« Lieu »


« Problème »


Tout cela peut rester côté interface. Je n’ai pas besoin (ce serait bien, mais ce n’est pas nécessaire pour l’instant) d’analyser les différentes sections de ce que les utilisateurs soumettent ; tout peut être soumis comme actuellement. L’objectif est d’assurer une soumission plus uniforme de la part des utilisateurs et de leur offrir une interface épurée lorsqu’il y a plusieurs invites différentes.

La différence entre cela et ce qui est disponible actuellement en ajoutant un modèle de sujet :
  1. L’utilisateur ne pouvait pas supprimer ces invites (c’est-à-dire, ne pouvait pas supprimer « Nom », « Lieu » et « Problème »).

  2. Idéalement, je pourrais ajouter un style de formulaire pour rendre plus évident pour l’utilisateur où il doit taper. Cela permettrait une interface plus épurée pour un utilisateur créant un sujet lorsqu’il y a plusieurs invites différentes. Avec les modèles de sujet, l’utilisateur doit créer son propre espace pour taper ses réponses à chaque invite. De plus, la fenêtre de création de sujet commence à sembler assez encombrée lorsqu’on utilise les modèles de sujet actuels avec plusieurs invites.

@sam avait précédemment répondu :

Il semble en effet que cela soit possible. Ma principale difficulté : comment puis-je, dans un composant de thème (ou un plugin), modifier ce qui apparaît dans la fenêtre de création de sujet ? Pour l’instant, cela semble être une boîte noire iframe lorsque j’ai essayé de le faire.

Je sais qu’il pourrait y avoir un moyen d’y accéder, étant donné que c’est ce que font les modèles de sujet et ce que fait le plugin placeholder. Mais je n’ai pas encore compris comment ils procèdent.

Des conseils sur ce que je peux faire avec du code pour modifier le contenu d’une fenêtre de création de sujet ?

1 « J'aime »

Consultez le Guide du développeur pour les thèmes Discourse. C’est par là qu’il faut commencer.

Si vous parlez du nom d’utilisateur et de l’emplacement, ils se trouvent dans le profil de l’utilisateur, donc ils ne sont peut-être pas nécessaires ?

Merci pour votre réponse. Je connais bien la création de thèmes et de plugins. Ce que je cherche ici, ce sont des indications sur le code spécifique pour accéder à l’iframe du formulaire de création de sujet. Je n’ai pas besoin que tout soit détaillé, mais toute orientation serait appréciée. J’ai déjà eu du mal à trouver un moyen d’apporter des modifications à ce formulaire.

L’exemple avec le nom, la localisation, etc., n’était qu’hypothétique, comme pour un formulaire courant. Dans mon cas précis, il y a différentes questions que je devrais traiter.

3 « J'aime »

Je suis également intéressé par une solution telle qu’un formulaire qui invite les utilisateurs à saisir des informations lors de la création d’un sujet, de préférence avec la possibilité de rendre certains champs obligatoires ; certaines de ces données peuvent être sensibles, et je souhaiterais les stocker dans des champs personnalisés du sujet.

1 « J'aime »

Vérifiez Introducing Experimental Form Templates