Sovrascrivere il default del sondaggio per "public=true"

mi stavo chiedendo quanti siti stessero lottando con questo problema. Anche a me piacerebbe che fosse Pubblico di Standard.

Penso anch’io che l’interfaccia utente potrebbe essere migliore.

  • Puoi creare sondaggi a voto singolo da sondaggi a voto multiplo, quindi non c’è bisogno di avere il voto singolo secondo me
  • Mostrerei sempre l’interfaccia utente estesa
  • Mi piacerebbe l’opzione Pubblico=Vero come Standard o, se più facile da implementare, Anonimo=Falso
  • Sposterei la casella di controllo per Pubblico in cima o creerei interfacce separate per i sondaggi Pubblici e Anonimi, viene trascurata troppo facilmente

Non ho familiarità con la modifica dei componenti del tema, se esiste una soluzione semplice per ora che qualcuno ha creato, sarebbe fantastico condividerla con le istruzioni su come implementarla e cosa controllare durante l’aggiornamento di Discourse.

2 Mi Piace

Sono un novellino ma interessato a risolvere il problema, quindi ho chiesto a chat-gpt:

Ecco la risposta:

Lo script che hai trovato è un buon punto di partenza. Modifica il controller poll-ui-builder per impostare la proprietà publicPoll su true quando viene chiamata la funzione onShow() del controller. Questo è effettivamente destinato ad essere aggiunto come componente del tema.

Tuttavia, il codice potrebbe non funzionare a causa dell’ordine di esecuzione. Il metodo onShow() originale imposta publicPoll su false e poi la modifica imposta publicPoll su true successivamente.

Un modo corretto sarebbe chiamare prima il metodo onShow() del genitore, e poi impostare publicPoll su true:

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
  }
});
</script>

Puoi aggiungere questo script al tuo tema seguendo questi passaggi:

  1. Vai alla dashboard di amministrazione di Discourse.
  2. Nella sezione “Personalizza”, fai clic su “Temi”.
  3. Seleziona il tema che desideri modificare.
  4. Nella schermata di modifica del tema, fai clic su “Modifica CSS/HTML”.
  5. Nella barra laterale sinistra, fai clic su “</>” Comune.
  6. Incolla lo script sopra nella sezione “</>” Comune.
  7. Fai clic sul pulsante “Salva”.

Questo applicherà la modifica al tuo tema. Ricorda che le modifiche al tema vengono applicate solo agli utenti che utilizzano quel particolare tema. Se hai più temi, dovrai aggiungere questa modifica a ciascuno di essi.

Inoltre, ricorda di cancellare la cache del tuo browser o di eseguire un ricaricamento forzato per assicurarti che le modifiche vengano caricate correttamente.

Proverò a seguire questi passaggi con l’amministratore del nostro Forum, ma ci vuole un po’ di tempo, se qualcun altro qui vuole provare prima e dare un feedback sarei molto felice.

Un’altra cosa che mi piacerebbe cambiare è il comportamento dell’interfaccia utente, voglio saltare la schermata semplice, quindi ho chiesto di nuovo a chat-gpt:

Nel tuo codice attuale, la vista estesa è controllata dalla proprietà showAdvanced. Se questa è impostata su true, verrà mostrata la vista avanzata.

Per mostrare sempre la vista avanzata, puoi modificare il metodo onShow() nel controller poll-ui-builder per impostare showAdvanced su true. Puoi aggiungere questa modifica al componente del tema che hai creato in precedenza. Ecco lo script aggiornato:

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
    this.set('showAdvanced', true);
  }
});
</script>

Ricorda di seguire i passaggi che ho delineato in precedenza per aggiungere questo script al tuo tema. Una volta salvato lo script, la vista avanzata dovrebbe essere sempre mostrata al caricamento dell’interfaccia utente del sondaggio.

Ancora una volta, ricorda di cancellare la cache del tuo browser o di eseguire un ricaricamento forzato per assicurarti che le modifiche vengano caricate correttamente.

Mi piacerebbe provare a testare da solo in qualche modo, ma come detto prima sono solo un moderatore, non l’amministratore del nostro sito, quindi ci vorranno alcuni giorni o settimane.

2 Mi Piace

È fantastico che tu abbia capito. :+1:

Solo come nota a margine, quando vuoi modificare più proprietà, puoi usare questa sintassi:

    this.setProperties({
        'publicPoll': true,
        'showAdvanced': true
    });
2 Mi Piace

non proprio io, ho solo fornito a Chat-GPT il codice dato da questo link:

e poi gli ho dato il primo tentativo di @JammyDodger e gli ho chiesto se poteva risolvere i miei due requisiti :smiley:

sarebbe fantastico se funzionasse e un’altra cosa interessante di discourse che ho imparato.

2 Mi Piace

L’ho testato e funziona! :partying_face:

È fantastico. :slight_smile: Grazie mille. :pray:

1 Mi Piace

E qui è come componente del tema:

4 Mi Piace

non funziona più per la nostra istanza.
non ho potuto verificare se lo snippet di codice è ancora presente, poiché non ho i permessi per farlo.

Funziona ancora nei vostri forum @JammyDodger e @nathank?

1 Mi Piace

Non credo che funzioni nemmeno ora sul mio sito di test. Potrebbe essere necessario aggiornarlo per tenere conto di alcune modifiche recenti?

Lo dividerò in un argomento Dev :+1:

2 Mi Piace

Ho scoperto che il modale che stava chiamando è stato rifattorizzato in conformità con questo:

Tuttavia, non riesco a capire come interagire con esso tramite l’API. Il nuovo file modale è qui:

https://github.com/discourse/discourse/blob/main/plugins/poll/assets/javascripts/discourse/components/modal/poll-ui-builder.js

Non riesco a capire come chiamarlo ora, poiché non è spiegato nella documentazione come fare, per quanto mi è dato sapere. Qualcuno può aiutare?

1 Mi Piace

Buone notizie. :slight_smile: Penso che potremmo avere qualcosa per questo…

6 Mi Piace