Gli utenti devono completare un modulo quando creano un argomento?

È possibile richiedere agli utenti di compilare un modulo quando creano un argomento? (cioè, quando si apre la finestra per creare un argomento, far apparire un modulo all’interno dell’argomento che devono compilare)

Utilizzando il modello di argomento durante la creazione di una categoria, posso inserire alcuni suggerimenti su cosa gli utenti dovrebbero inserire. Ma questo è diverso da un modulo. I suggerimenti possono essere eliminati (quindi gli utenti meno esperti non sono sicuri di cosa farne) e la pagina inizia a diventare affollata se ci sono diversi suggerimenti sulla stessa pagina.

Un modulo offrirebbe un’esperienza utente più pulita e semplice nel caso in cui si desideri che gli utenti inseriscano alcune informazioni chiave nel loro argomento al momento della creazione.

È possibile? Ho trovato questo componente del tema, ma, anche se non sono ancora sicuro di cosa faccia, non credo che realizzi quanto ho in mente. Vedo anche questa richiesta di diversi anni fa: sembra che non sia stato intrapreso alcun intervento.

Inoltre, so che il plugin Custom Wizard permette di creare un modulo da compilare per gli utenti, ma in questo caso ho bisogno che il modulo sia all’interno di un argomento di Discourse (in modo che appaia poi come un argomento con tutte le funzionalità associate, come tag, risposte, ecc.). E ho bisogno che l’esperienza utente rimanga chiaramente all’interno dell’app (credo che il plugin Wizard porti l’utente a una pagina separata con un menu diverso, ecc.).

3 Mi Piace

Questa cosa è certamente tecnicamente possibile in un componente del tema.

3 Mi Piace

Un argomento correlato di vecchia data per chi è interessato:

1 Mi Piace

Grazie.

Come pensi che potrebbe funzionare?

Ecco alcune idee che ho, anche se hanno ancora alcune domande da rispondere:

[details=“Elementi di base presenti ora: Segnaposti. Ma al momento è “tutto o niente””]
La struttura più semplice che riesco a immaginare per imitare il comportamento di un modulo sarebbe quella in cui il “modulo” appare nell’editor (il “d-editor” che si apre quando si preme crea argomento).

In quell’editor, si potrebbero fornire diverse “sezioni”, come:

Nome


Posizione


Problema


Ogni titolo di sezione sarebbe un segnaposto, quindi quando l’utente ci cliccasse sopra, il titolo (ad esempio, Nome) scomparirebbe.

Finora, impostare questo è possibile con il componente del tema per il testo segnaposto.

Ma ciò non basta per ottenere un comportamento simile a quello di un modulo, perché i segnaposti attualmente presenti appaiono in modalità “tutto o niente”, come descrivo di seguito.
[/details]


Comportamento simile a un modulo con segnaposti. Ma come si accede ai div nell'editor?

Per rendere questo più simile a un modulo, ogni sezione deve comportarsi in modo indipendente.

Attualmente, con il componente del tema per il testo segnaposto, è tutto o niente: se l’utente clicca sull’editor, tutti i titoli segnaposto scompaiono.

Quindi, per avere un comportamento di base simile a quello di un modulo, invece di far apparire o scomparire tutti i titoli insieme, dovremmo far sì che ogni sezione di segnaposto si comporti in modo indipendente. Quindi, quando l’utente clicca sul segnaposto “Nome”, solo quel segnaposto scompare, mentre gli altri segnaposti (“Posizione” e “Problema”) rimangono.

Questo sarebbe possibile se ogni segnaposto potesse far parte di un proprio div con un ID univoco all’interno dell’editor di testo. Quindi, con jQuery, si potrebbe mostrare o nascondere il segnaposto in base a se l’utente ha cliccato nell’area. Ciò richiede l’aggiunta di div separati all’interno di ciò che ora è un textarea, e non sono sicuro di come farlo.

Domanda per questo approccio: Come si possono accedere ai div all’interno del textarea dell’editor, in modo da poter eseguire un’azione quando l’utente ci clicca sopra?


Alternativa: utilizzare l'opzione testo modello esistente. Ma come rendere il testo non modificabile?

Probabilmente un’alternativa sarebbe che gli intestazioni delle sezioni non “scompaiano” quando l’utente clicca. Quindi le intestazioni delle sezioni (ad esempio: Nome, Posizione e Problema) sarebbero testi che rimangono sulla pagina. Per renderlo più simile a un modulo, rispetto al modello di argomento predefinito attuale:

  1. Il testo dell’intestazione della sezione potrebbe non essere modificabile dall’utente (cioè, contenteditable="false")
  2. I punti di interruzione della sezione non potrebbero essere rimossi dall’utente
  3. Ci sarebbe uno spazio sotto l’intestazione della sezione dove è chiaro che l’utente può scrivere. Nel modello predefinito attuale, dovrebbero andare dove c’è il testo, premere invio, per creare spazio per scrivere.

Domanda per questo approccio: Come si può inserire testo modello, ma (i) rendere quel testo non modificabile dall’utente e (ii) avere spazi chiari dove l’utente può inserire informazioni sotto ogni parte di testo?


Forse c’è un modo migliore per ottenere un comportamento simile a quello di un modulo?

2 Mi Piace

Presumibilmente, dovresti eseguire un passaggio sul modello prima di renderizzare un insieme più complesso di campi di inserimento, invece di un’unica area di testo monolitica.

Poi, post-elaboralo per inserire il testo nei punti corretti.

Avresti bisogno di uno standard di markup per identificare i titoli e i punti di inserimento del testo…

Potrebbe essere una soluzione più leggera, poiché tutto rimarrebbe nel mondo del front-end (tutto verrebbe comunque memorizzato come un singolo post di testo).

Lo svantaggio principale di questo approccio sarebbe che renderebbe molto più difficile la ricerca e l’aggregazione in questo modo…

Sembra un progetto divertente :slight_smile:

Al momento sto cercando qualcosa che rimanga esclusivamente nel front-end. La parsing e la ricerca di diverse parti del modulo non sono necessarie in questa fase, e presumo che non lo siano nella maggior parte dei casi d’uso. Si tratta di garantire che gli utenti inseriscano le loro risposte in modo coerente.

Non ho capito cosa intendi con queste frasi:

Spero di poter riprendere l’argomento. Spero che ci sia un modo, nel front-end, per far sì che gli utenti compilino qualcosa che sembri (per loro) un modulo. Quindi, ad esempio, quando vanno a creare un argomento, vedrebbero qualcosa come:

“Nome”


“Luogo”


“Problema”


Tutto questo può rimanere nel front-end. Non ho bisogno (sarebbe bello, ma non è necessario al momento) di analizzare le diverse sezioni di ciò che gli utenti inviano: può essere inviato esattamente come avviene ora. L’obiettivo è garantire un invio più uniforme da parte degli utenti e offrire loro un’interfaccia utente pulita quando ci sono diversi prompt.

La differenza tra questa soluzione e ciò che è attualmente disponibile aggiungendo un modello di argomento:
  1. L’utente non potrebbe eliminare questi prompt (cioè, non potrebbe eliminare “Nome”, “Luogo” e “Problema”).

  2. Idealmente, potrei aggiungere uno stile simile a quello di un modulo, per rendere più ovvio all’utente dove deve digitare. Questo permetterebbe un’interfaccia utente più pulita per un utente che crea un argomento nel caso in cui ci siano diversi prompt. Con i modelli di argomento, l’utente deve creare il proprio spazio per digitare le risposte per ogni prompt. Inoltre, la finestra di creazione dell’argomento inizia a sembrare molto affollata quando si hanno diversi prompt nel caso in cui si utilizzino i modelli di argomento attuali.

@sam aveva precedentemente risposto:

Sembra infatti che ciò sia possibile. Il mio problema principale: come posso, in un componente del tema (o in un plugin), modificare ciò che appare all’interno della finestra di creazione dell’argomento? Al momento, sembra una scatola nera iframe quando ho provato a farlo.

So che potrebbe esserci un modo per entrarci, dato che è ciò che fanno i modelli di argomento e ciò che fa il plugin placeholder. Ma non ho ancora capito come lo facciano.

Qualche consiglio su cosa posso fare con il codice per modificare ciò che c’è nella finestra di creazione di un argomento?

1 Mi Piace

Dai un’occhiata alla Guida per sviluppatori ai temi di Discourse. È da lì che iniziare.

Se ti riferisci al nome utente e alla località, si trovano nel profilo dell’utente, quindi forse non sono necessari?

Grazie per la risposta. Sono familiare con la creazione di temi e plugin. Ciò che cerco qui sono indicazioni sul codice specifico per accedere all’iframe del modulo di creazione dell’argomento. Non ho bisogno che qualcuno mi mostri tutto, ma apprezzerei qualsiasi indicazione. In passato ho avuto difficoltà a trovare un modo per apportare modifiche a quel modulo.

L’esempio relativo a nome, località, ecc. era solo un’ipotesi basata su un modulo comune. Nel mio caso specifico, ci sono diverse richieste che dovrei gestire.

3 Mi Piace

Sono anche interessato a una soluzione come un modulo che richieda agli utenti di inserire quando creano un argomento, preferibilmente avendo l’opzione di rendere alcuni campi obbligatori; alcuni di questi dati possono essere sensibili e vorrei averli archiviati in alcuni campi personalizzati nell’argomento.

1 Mi Piace

Controlla Introducing Experimental Form Templates