Script nei post?

Ciao,

C’è un modo per eseguire script nei post limitati solo agli amministratori?

Ho provato a configurarlo in precedenza, ma il mio sito è andato in crash in PuTTY.

Buon mercoledì
Olle

C’è stato un post riguardo a questa questione un paio di anni fa, ma spero ci sia un modo per farlo.

https://meta.discourse.org/t/adding-a-javascript-in-a-post/130019/3

Olle

@Olle11 potrebbe essere utile se fornissi maggiori dettagli su ciò che stai cercando di ottenere.

Non c’è modo di consentirlo in modo ad hoc tramite Composer, ma a seconda del tuo caso d’uso potrebbero esserci delle soluzioni.

Ad esempio, il plugin Poll esegue essenzialmente javascript in un Post (tra le altre cose).

2 Mi Piace

Spero di poter eseguire uno script tramite HTML o React che possa mostrare widget in tempo reale nei post principali.

Ad esempio, un widget che mostra il meteo in tempo reale in una città tramite uno script widget HTML.

Il plugin Poll è utilizzabile per questo caso?

Cordiali saluti
Olle

1 Mi Piace

No, stavo solo usando quello come esempio. Dai un’occhiata al suo codice sorgente.

Potresti provare a usare un iframe se riesci a ospitare altrove il JavaScript.

Se desideri un’integrazione stretta, dovrai considerare l’uso di EmberJS.

3 Mi Piace

Questa è probabilmente la risposta più accessibile se desideri contenuti nel post anziché, ad esempio, un banner in alto.

Ad esempio, ho preso uno degli elementi della home page da CodePen (poiché è nel nostro allowed_iframes) e l’ho incorporato di seguito:

source

6 Mi Piace

Sembra che lo script di cui ho bisogno non consenta iframe a causa di X-FRAME-Options: DENY.

1 Mi Piace

Forse qualcosa del genere per consentire a uno script in esecuzione in Discourse @merefield @supermathie?

App.yml:
DISCOURSE_ALLOW_UNSAFE_HTML: true

  • volume:
    host: /var/discourse/shared/standalone/nginx_custom.conf
    guest: /etc/nginx/conf.d/custom.conf

Configurazione Nginx per CSP:
add_header Content-Security-Policy “script-src ‘self’ ‘https://webadress.com’ ‘unsafe-inline’ ‘unsafe-eval’;”;

Sto cercando di aggiungere la configurazione Nginx ma sia ‘unsafe-inline’ che https non vengono visualizzati nella CSP quando controllo con curl. ‘unsafe-eval’ viene aggiunto tramite admin.

Modifica: NON SICURO

Rimuovere le protezioni che Discourse ha in atto per impedire ciò è una cattiva idea.

Ecco perché tutti cercano di indirizzarti verso i metodi suggeriti per farlo.

Dovresti usare un tema o un componente del tema per aggiungere script alle pagine.

7 Mi Piace

Posso usare un tema o un componente del tema per aggiungere uno script a un post?

Come posso includere ‘unsafe-inline’ nella CSP per far funzionare lo script?

Potresti. Lo script stesso dovrebbe trovarsi al di fuori del post, o forse potresti farlo decorare aspetti specifici dei post.

È difficile sapere esattamente cosa vuoi senza dettagli.

Questa è una cattiva idea e non dovresti farlo.

5 Mi Piace

Per quanto riguarda la CSP e ciò che ho aggiunto ad app.yml, rimuoverò unsafe_html: true, il volume nginx e la configurazione nginx per la CSP dal sito perché non è sicura.

Forse un componente del tema funziona, hmm

Quale script vuoi eseguire esattamente?

Dove vuoi eseguirlo?

Deve essere su un post particolare? O da qualche altra parte nella pagina? Quali parametri devono essere passati? È diverso in ogni post? Categoria?

2 Mi Piace

Potrebbe funzionare con l’iframe. Devo aggiornare il CSP e unsafe_html affinché il sito sia sicuro perché CSP e le altre soluzioni che ho provato non sono sicure

Grazie per il tuo contributo. L’Iframe potrebbe funzionare almeno per ora finché non troverò una soluzione migliore.

Guardando lo script, non puoi eseguirlo globalmente. Richiede il caricamento sul posto con opzioni.

Ho creato un semplice TC: GitHub - Arkshine/discourse-tradingview-chart

Per facilitare la modifica delle opzioni, puoi copiarle e incollarle direttamente dal sito all’interno di [wrap]..[/wrap].

Per impostazione predefinita, forza l’aspect-ratio a 16/9, occuperà tutto lo spazio in larghezza e l’altezza è automatica. Lo script consente di specificare una larghezza/altezza, funzionerà ugualmente.

Suggerirei di utilizzare l’opzione show_popup_button: true. Ti fornirà un modo per visualizzare il grafico a schermo intero in una nuova finestra.

image

Ho aggiunto due opzioni:

8 Mi Piace

Mi dispiace, ma un semplice :heart: non basta per trasmettere . . .
Amico. È fantastico.

3 Mi Piace