Acabei de atualizar da versão 2.5.0.beta4 para a 2.5.0.beta5 e agora meus dois scripts que tenho no meu tema não parecem mais funcionar. Vejo isso no console do meu navegador:
Content Security Policy: As configurações do site impediram o carregamento do recurso em inline ("script-src"). injectGlobalHook.js:1:1760
Content Security Policy: As configurações do site impediram o carregamento do recurso em inline ("script-src"). pagewrap.bundle.js:1:1151
Edição: parece que recebo esses erros também no meu outro site, onde não tenho o mesmo tema, então esse não é o problema. Então, acho que a API do tema mudou? Mesmo que este tópico não tenha sido atualizado: Using the JS API
Basicamente, parece que a nova atualização do Discourse tornou a CSP mais rigorosa.
Como posso corrigir isso? Não encontrei nada sobre CSP ou alterações no tema nas notas de lançamento.
Este é o meu script que quero executar:
<script type="text/discourse-plugin" version="0.0.1">
api.onPageChange(() => {
checkMainPageLoadFeeds();
});
function checkMainPageLoadFeeds() {
// Carregar apenas na página principal
// Aparentemente isso não funciona perfeitamente devido à forma como o Discourse funciona,
// mas pelo menos isso não causa nenhum problema...
if(/https?:\/\/[^\/]+\/(categories)?$/.test(window.location.href) ){
// Esses arquivos são criados por um bot rodando no mesmo servidor que este fórum
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>
E este é o segundo:
<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 {
// Pode ser "esqueci a senha"
let element = $(".fixed-modal .forgot-password-modal")
if(element){
element.append(getEmailSpamCheckMessage(false));
}
}
});
function getEmailSpamCheckMessage(register){
return $.parseHTML("<p class='EmailNoteMessage'>Se você não receber um email " +
(register ? "de confirmação " : "") + "verifique sua pasta de spam.<br>" +
"Você também pode visitar nosso <a href='https://discordapp.com/invite/FZxDQ4H'>Discord</a> " +
"se tiver problemas " + (register ? "para se cadastrar" : "para receber emails de nós") + ".</p>");
}
</script>
Tenho certeza de que já postei isso aqui no meta antes, mas não consigo encontrar esse post agora.
Acho que meu problema não está relacionado ao CSP, pois recebo os mesmos dois erros em um site (https://forum.revolutionarygamesstudio.com/) que usa o tema padrão. Então, parece que meus scripts nem sequer são tentados para serem carregados. No site com um tema personalizado, as caixas próximas ao topo da página permanecem em branco, pois o JavaScript é usado para preenchê-las: https://community.revolutionarygamesstudio.com/
Também tentei desativar o CSP na seção de administração, mas isso não parece ter corrigido meus scripts, embora tenha feito os dois erros desaparecerem (deixando apenas um vindo do retort).
Edição: Então estou pensando que algo mudou, fazendo com que <script type="text/discourse-plugin" version="0.0.1"> não sejam mais carregados de forma alguma.
Edição 2: Então, mesmo com o CSP ativado e nada adicionado à lista de permissões, isso funciona:
_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)
Sobre o outro site, não consigo encontrar checkMainPageLoadFeeds no código-fonte, então não tenho certeza se ele está carregado.
É isso que estou vendo. Veja minha atualização na postagem anterior: parece que o script do tipo "text/discourse-plugin" não é executado, mas uma tag script comum sim.
Percebi isso, tenho a versão mais recente do retort:
Então, um erro nesse plugin está impedindo que o plugin definido no tema seja executado?
Reconstruir sem o Retort na minha lista de plugins “resolve” o problema. Obrigado pela ajuda. Não considerei que a falha de um único plugin poderia fazer com que outros plugins também falhassem. Vou tentar lembrar disso no futuro e verificar antes de relatar um problema.
Vou marcar isso como a solução, enquanto aguardo uma nova versão do Retort para poder ativá-lo novamente.
Parece que problemas com a versão mais recente do Discourse já foram relatados: