2.5.0.beta5 casse le plugin retort

Je viens de passer de la version 2.5.0.beta4 à la 2.5.0.beta5 et maintenant mes deux scripts dans mon thème ne semblent plus s’exécuter. Voici ce que je vois dans la console de mon navigateur :

Content Security Policy : Les paramètres du site ont empêché le chargement de la ressource depuis inline ("script-src"). injectGlobalHook.js:1:1760
Content Security Policy : Les paramètres du site ont empêché le chargement de la ressource depuis inline ("script-src"). pagewrap.bundle.js:1:1151

Édition : il semble que j’obtienne ces messages sur mon autre site également, où je n’ai pas le même thème, donc ce n’est pas le problème. Je suppose donc que l’API du thème a changé ? Même si ce sujet n’a pas été mis à jour : Using the JS API

En gros, il semble que la nouvelle mise à jour de Discourse ait rendu la CSP plus stricte.
Comment puis-je résoudre ce problème ? Je n’ai rien trouvé concernant la CSP ou les changements de thème dans les notes de version.

Voici mon script que je souhaite exécuter :

<script type="text/discourse-plugin" version="0.0.1">
api.onPageChange(() => {
	checkMainPageLoadFeeds();
});

function checkMainPageLoadFeeds() {
    // Charger uniquement sur la page principale
    // Apparemment, cela ne fonctionne pas parfaitement en raison du fonctionnement de Discourse,
    // mais au moins cela ne cause aucun problème...
    if(/https?:\/\/[^\/]+\/(categories)?$/.test(window.location.href) ){
        // Ces fichiers sont créés par un bot tournant sur le même serveur que ce forum
        if($("#development-info").text() == ""){
            $("#development-info").load("/thrive-feed-bot/devforum-and-github");
            $("#announcement-contents").load("/thrive-feed-bot/community-announcements");
        }
    }
    
    $("#development-heading").off("click").on("click", expandTheFeeds);
    $("#announcement-heading").off("click").on("click", expandTheFeeds);
}

function expandTheFeeds(){
    
    let target = $("#development-feed").height() == 200 ? 450 : 200;
    $('#development-feed').animate({ height: target + "px" });
    $('#development-info').animate({ height: (target - 95) + "px" });
    $('#announcement-feed').animate({ height: target + "px" });
    $('#announcement-contents').animate({ height: (target - 95) + "px" });
}

$( document ).ready(function(){
    checkMainPageLoadFeeds();
})
</script>

Et voici le deuxième :

<script type="text/discourse-plugin" version="0.0.1">
api.onAppEvent('modal:body-shown', (data) => {
    
    if(data.title){
    
        if(data.title.match(/.*create.*account.*/)){
        
            $(".create-account.fixed-modal .modal-footer").prepend(getEmailSpamCheckMessage(true));
        }
    } else {
        
        // Peut-être mot de passe oublié
        let element = $(".fixed-modal .forgot-password-modal")
        if(element){
            element.append(getEmailSpamCheckMessage(false));
        }
    }
	
});

function getEmailSpamCheckMessage(register){
    return $.parseHTML("<p class='EmailNoteMessage'>Si vous ne recevez pas d'email " + 
                (register ? "de confirmation " : "") + "vérifiez votre dossier spam.<br>" +
                "Vous pouvez également visiter notre <a href='https://discordapp.com/invite/FZxDQ4H'>Discord</a> " +
                "si vous rencontrez des problèmes " + (register ? "d'inscription" : "pour recevoir nos emails") + ".</p>");
}
</script>

Je suis sûr de l’avoir déjà posté ici sur Meta, mais je ne parviens pas à retrouver ce message maintenant.

1 « J'aime »

Tout ce que vous voulez savoir sur la CSP se trouve ici :

1 « J'aime »

Je ne pense pas que mon problème vienne de la CSP, car je rencontre les mêmes deux erreurs sur un site (https://forum.revolutionarygamesstudio.com/) qui utilise le thème par défaut. Il semble donc que mes scripts ne soient même pas tentés d’être chargés. Sur le site avec un thème personnalisé, les zones près du haut de la page restent vides car du JavaScript est utilisé pour les remplir : https://community.revolutionarygamesstudio.com/
J’ai également essayé de désactiver la CSP dans la section d’administration, mais cela n’a pas semblé corriger mes scripts, bien que cela ait fait disparaître les deux erreurs (il n’en reste qu’une provenant de retort).

Édition : Je pense donc que quelque chose a changé, ce qui fait que les balises <script type="text/discourse-plugin" version="0.0.1"> ne se chargent plus du tout.

Édition 2 : Même avec la CSP activée et rien ajouté à la liste blanche, ceci fonctionne :

<script>
console.log('cela s\'est chargé sans problème');
</script> 

Mais ceci ne fonctionne pas :

<script type="text/discourse-plugin" version="0.0.1">
console.log('cela s\'est chargé sans problème');
</script> 
1 « J'aime »

Vous avez une erreur JavaScript avec Retort sur https://community.revolutionarygamesstudio.com/

_retort-75a57ba39180becb082af07c57df6a5dd4e16efe0dbd24ec6c4e5d903e138efb.js:188 Uncaught TypeError: Cannot read property 'retort_disabled_categories' of undefined
    at _retort-75a57ba39180becb082af07c57df6a5dd4e16efe0dbd24ec6c4e5d903e138efb.js:188
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74640)
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74470)
    at require (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74637)
    at f (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74596)
    at _ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74561
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74639)
    at t.module.exports.u.<computed> (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74470)
    at require (_ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:74637)
    at t._prepareInitializer (_application-66bcc4126a5a02dd0d99aed67150087a79a427788cc00feaf5e17bf042b73d75.js:6849)

Concernant l’autre site, je ne trouve pas checkMainPageLoadFeeds dans le code source, donc je ne suis pas sûr qu’il soit chargé.

Je peux cependant le trouver sur https://community.revolutionarygamesstudio.com/ :

Alors essayez de corriger votre erreur JavaScript avec ce plugin.

2 « J'aime »

C’est ce que je constate. Voir ma mise à jour dans le message précédent : il semble que le script de type "text/discourse-plugin" ne s’exécute pas, mais qu’une balise script ordinaire fonctionne.

Je l’ai remarqué, j’ai la dernière version de retort :
Capture d'écran - 2020-05-31 13-07-36

Donc le fait que ce plugin génère une erreur empêche le plugin défini dans le thème de s’exécuter ?

1 « J'aime »

Je viens de tester cela sur Meta et voici ce qui est correctement appelé :

<script type="text/discourse-plugin" version="0.1">
</script>

Ce n’est pas un plugin officiel, je ne connais pas grand-chose à son sujet, désolé.

C’est possible, oui. Essayez de le désactiver ou même de le supprimer, puis vérifiez si cela résout votre problème.

4 « J'aime »

Reconstruire sans Retort dans ma liste de plugins « résout » le problème. Merci pour l’aide. Je n’avais pas envisagé qu’un plugin défaillant puisse en faire échouer un autre. Je garderai cela à l’esprit à l’avenir et vérifierai avant de signaler un problème.

Je vais marquer cela comme solution, en attendant une nouvelle version de Retort pour pouvoir le réactiver.

Il semble que des problèmes avec la dernière version de Discourse aient déjà été signalés :

4 « J'aime »

Je confirme que la correction apportée à retort a résolu ce problème pour moi.

2 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.