Scripts dans les publications ?

Salut,

Y a-t-il un moyen d’exécuter des scripts dans les publications réservés aux administrateurs ?

J’ai essayé de le configurer auparavant, mais j’ai planté mon site dans PuTTY.

Passez un bon mercredi
Olle

Il y a eu un article à ce sujet il y a quelques années, mais j’espère qu’il existe un moyen de le faire.

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

Olle

@Olle11 il pourrait être utile de donner plus de détails sur ce que vous essayez d’accomplir.

Il n’y a aucun moyen de permettre cela de manière ad hoc via le Compositeur, mais selon votre cas d’utilisation, il pourrait y avoir des solutions de contournement.

Par exemple, le plugin Poll exécute essentiellement du JavaScript dans un Post (entre autres choses).

2 « J'aime »

J’espère pouvoir exécuter un script via HTML ou React qui peut afficher des widgets en direct dans les articles de tête.

Par exemple, un widget affichant la météo en direct dans une ville via un script de widget HTML.

Le plugin Poll est-il utilisable dans ce cas ?

Cordialement
Olle

1 « J'aime »

Non, je l’utilisais juste comme exemple. Jette un œil à son code source.

Tu pourrais essayer d’utiliser un iFrame si tu peux héberger le JavaScript ailleurs.

Si tu veux une intégration serrée, il faudra envisager d’utiliser EmberJS.

3 « J'aime »

C’est probablement la réponse la plus accessible si vous voulez du contenu dans le message par opposition, par exemple, à une bannière en haut.

Par exemple, j’ai pris un des éléments de la page d’accueil de CodePen (puisqu’il est dans nos allowed_iframes) et je l’ai intégré ci-dessous :

source

6 « J'aime »

Il semble que le script dont j’ai besoin n’autorise pas les iframe en raison de X-FRAME-Options: DENY.

1 « J'aime »

Peut-être quelque chose dans ce genre pour permettre à un script s’exécutant dans 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

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

J’essaie d’ajouter la configuration Nginx mais ni ‘unsafe-inline’ ni le https ne s’affichent dans le CSP lorsque je vérifie avec curl. ‘unsafe-eval’ s’ajoute via l’administration.

Edit : PAS SÛR

Supprimer les protections mises en place par Discourse pour empêcher cela est une très mauvaise idée.

C’est pourquoi tout le monde essaie de vous orienter vers les méthodes suggérées pour le faire.

Vous devriez utiliser un thème ou un composant de thème pour ajouter des scripts aux pages.

7 « J'aime »

Puis-je utiliser un thème ou un composant de thème pour ajouter un script à un article ?

Comment inclure « unsafe-inline » dans le CSP pour que le script fonctionne ?

Vous le pourriez. Le script lui-même devrait se trouver en dehors du message, ou peut-être pourrait-il décorer des aspects spécifiques des messages.

Il est difficile de savoir exactement ce que vous voulez sans précisions.

C’est une mauvaise idée et vous ne devriez pas le faire.

5 « J'aime »

Concernant la CSP et ce que j’ai ajouté à app.yml, je supprimerai unsafe_html: true, le volume nginx et la configuration nginx pour la CSP du site car ce n’est pas sûr.

Peut-être qu’un composant de thème fonctionnera hmm

Quel script voulez-vous exécuter exactement ?

Où voulez-vous l’exécuter ?

Doit-il être sur un article particulier ? Ou ailleurs sur la page ? Quels paramètres doivent être transmis ? Est-ce différent pour chaque article ? Catégorie ?

2 « J'aime »

L’iframe pourrait fonctionner. Je dois mettre à jour le CSP et unsafe_html pour que le site soit sécurisé, car le CSP et les autres solutions que j’ai essayées ne sont pas sûrs.

Merci pour votre contribution. L’iframe pourrait fonctionner au moins pour l’instant jusqu’à ce que je trouve une meilleure solution.

En regardant le script, vous ne pouvez pas l’exécuter globalement. Il nécessite un chargement sur place avec des options.

J’ai créé un TC simple : GitHub - Arkshine/discourse-tradingview-chart

Pour faciliter la modification des options, vous pouvez les copier-coller directement depuis le site à l’intérieur de [wrap]..[/wrap].

Par défaut, il force le rapport d’aspect à 16/9, il prendra tout l’espace en largeur et la hauteur est automatique. Le script permet de spécifier une largeur/hauteur, cela fonctionnera également.

Je suggérerais d’utiliser l’option show_popup_button: true. Cela vous fournira un moyen de visualiser le graphique en plein écran dans une nouvelle fenêtre.

image

J’ai ajouté deux options :

8 « J'aime »

Désolé, mais juste un :heart: ne suffit pas pour exprimer . . .
Mec. C’est génial.

3 « J'aime »