Banners de Notificação

Olá @gormus, estou recebendo este erro ao tentar instalar:

An error occurred: Error creating upload asset: splide_css. Original filename Sorry, the file you are trying to upload is not authorized (authorized extensions: wasm, jpg, jpeg, png, woff, woff2, svg, eot, ttf, otf, gif, webp, avif, js).

Atualização: Funcionou, na verdade eu esqueci de adicionar CSS nas extensões.

3 curtidas

Adicionei dois banners ao mesmo ponto de venda e selecionei carrossel em ambos. Mas eles só aparecem empilhados. Está faltando alguma coisa para o carrossel funcionar?

1 curtida

Olá @manuel, é necessário haver pelo menos 2 banners no mesmo ponto de venda para que o carrossel funcione; e, claro, a opção Exibir em um Carrossel deve estar habilitada em todos os banners também. O carrossel não será renderizado se apenas um dos banners estiver habilitado.

Além disso;

  1. você recebe algum erro de javascript no console do navegador? Algum deles faz referência a banners de notificação?
  2. considerando que pode haver um conflito; você conseguiu isolar o problema aos banners de notificação desabilitando os outros temas, componentes e plugins? ou usando o modo de segurança?

Alternativamente, você se importaria de compartilhar as configurações? Assim, posso importar e tentar no meu ambiente…

  1. Na página de administração Discourse Notification Banners, clique no botão Editor de Configurações na parte inferior da página.
  2. Copie os dados JSON
  3. Remova quaisquer dados sensíveis que você possa ter
  4. Compartilhe os dados JSON em uma resposta aqui, ou me envie uma mensagem direta.
2 curtidas

Obrigado @gormus! Estou um pouco perdido sobre por que não funcionou… Configurei em duas instâncias independentes e não funcionou em nenhuma delas. Agora comecei do zero novamente e funcionou em ambas! :+1: :upside_down_face:

2 curtidas

Oi, sobre o público, parece impossível segmentar apenas usuários TL0, certo? Porque todo mundo é TL0?

1 curtida

Tenho receio que você esteja correto @patrickemin Os níveis de confiança são aditivos e, eventualmente, tornam todos os usuários logados parte do TL0 por padrão, mesmo que sejam promovidos manualmente para o TL4.

Portanto, atualmente, se você selecionar TL0 como público, basicamente estará selecionando todos os usuários logados. Em si, isso tem um valor na minha humilde opinião, mas pode ser enganoso.

Acho que vou atualizar a lógica para o campo de público e definir uma nova regra para todos os Níveis de Confiança. Obrigado por me dar a ideia : )

2 curtidas

Olá @gormus, segui suas notas aqui para sua resposta ao nolo, mas por algum motivo não consigo fazer com que as notificações sejam executadas como um carrossel. Elas apenas ficam como mensagens empilhadas. Tenho duas mensagens de teste e o carrossel está habilitado para ambas e elas ficam no mesmo outlet. Nada no console com erros relacionados a js. e desabilitei todos os outros componentes e nada parece funcionar. Alguma ideia?

Olá @marksalter, parece que você já verificou os suspeitos de sempre. A única outra coisa que me ocorre é tentar reproduzir o problema usando seus exports de configuração. Por favor, envie seu arquivo de exportação por DM, sanitize os dados se necessário. No entanto, não estarei de volta por mais 10 dias : )

Olá, recebi este erro ao atualizar minha mensagem de banners:

A propriedade do ponteiro JSON “/0/enabled_groups” deve ser uma matriz de IDs de grupo válidos.

[quote=“patrickemin, post:29, topic:325279”]A propriedade do ponteiro JSON “/0/enabled_groups” deve ser uma matriz de IDs de grupo válidos.
[/quote]

Por acaso você tem uma referência a um grupo de usuários excluído (ou renomeado) no campo Audiência?

1 curtida

Obrigado, era isso. Eu presumi que os grupos eram identificados apenas pelo ID e que o nome não importava.

1 curtida

Tenho considerado esta ideia para segmentar melhor um público usando os Níveis de Confiança:

Acho que tenho algo para vocês verificarem.

No entanto, recomendo testar isso em um ambiente que não seja de produção primeiro, pois introduz uma alteração que pode quebrar funcionalidades existentes.

Para instalar esta versão, use o branch staging de Notification Banners:

Alteração que pode quebrar funcionalidades existentes

Quando a visibilidade do banner é avaliada usando os valores do campo Público, todas as funções trust_level_* do visitante são ignoradas, exceto o nível mais alto.

Por exemplo, considere um usuário com estas funções: support_team, blog, trust_level_0, trust_level_1 e trust_level_2.

O campo Público considerará que o usuário possui apenas support_team, blog e trust_level_2.

Portanto, se um banner precisar segmentar apenas os usuários TL2, o campo Público precisará ser definido como trust_level_2. Os outros níveis de confiança não verão o banner.

Atualizei a descrição do campo Público para esclarecer essa mudança também.

Planejo testar essas mudanças ainda mais e, provavelmente, criar uma nova versão até o final de setembro. Agradeço qualquer feedback que você possa fornecer.

Obrigado!

2 curtidas

v1.3.0 já foi lançado.

Certifique-se de testá-lo antes de implantar em produção.

Mudanças notáveis:

  • Os banners agora são ordenados como são exibidos na página de configurações. Em vez do campo “Ordem de exibição”, agora você pode ordenar os banners usando os botões nativos de reordenação.

  • Alterado o comportamento do campo Público:

    Selecione quais grupos de usuários podem ver este banner. Você deve selecionar pelo menos um grupo.

    Para mostrar a todos os usuários e visitantes: Selecione o grupo everyone.

    Nota importante sobre Níveis de Confiança: Selecionar um Nível de Confiança (por exemplo, trust_level_3) mostrará o banner apenas para usuários nesse nível exato. Não inclui usuários em níveis mais altos ou mais baixos.

  • Alteradas as opções padrão do carrossel Splide:
    antes:

    { "arrows": false, "autoHeight": true, "autoplay": true, "direction": "ttb", "focus": "center", "height": "15vh", "gap": 0, "type": "loop" }
    

    depois:

    { "autoHeight": true, "height": "8rem", "arrows": false, "autoplay": true, "direction": "ttb", "focus": "center", "gap": 0, "type": "loop" }
    
2 curtidas

Oi, a última atualização quebrou meu site (apenas o cabeçalho do site é carregado), tive que desativar o TC e tudo voltou ao normal. Vamos ver se sou só eu, sem pressa :grinning_face_with_smiling_eyes:

1 curtida

Obrigado pelo relatório @patrickemin e pelos detalhes que você forneceu.

O hotfix (v1.3.1) que implantei anteriormente deve ter corrigido o problema que introduzi na v1.3.0. Peço desculpas a todos que tiveram que experimentar o problema.

Estou tentando fazer este componente funcionar. Mas o banner de teste que criei não aparece. Estou usando uma versão muito atualizada do Discourse (cerca de 3 dias atrás) e a versão 1.3.1 do componente.

Tenho quase certeza de que as opções estão configuradas corretamente. Também tentei todas as três localizações para o banner de teste aparecer. Nada.

Existe outro bug ou é um problema do usuário? Onde posso procurar?

Você por acaso vê algum erro registrado no console?

Se o console estiver livre de erros, talvez você possa me enviar sua configuração por DM usando o Editor de Configurações?
Por favor, remova quaisquer detalhes sensíveis das strings da mensagem.

Apenas avisos de depreciação. Além disso (mas apenas no Opera, não no Firefox, e eu defini Content security policy script src como 'unsafe-eval' há muito tempo):

A política de segurança de conteúdo do seu site bloqueia o uso de ‘eval’ em JavaScript

A Política de Segurança de Conteúdo (CSP) impede a avaliação de strings arbitrárias como JavaScript para dificultar que um invasor injete código não autorizado em seu site.

Para resolver este problema, evite usar eval(), new Function(), setTimeout([string], ...) e setInterval([string], ...) para avaliar strings.

Se você realmente precisar: você pode habilitar a avaliação de strings adicionando unsafe-eval como uma fonte permitida em uma diretiva script-src.

Obrigado. Posso postar isso aqui também, pois tenho apenas um banner de teste ativo no momento:

[
	{
		"setting": "banners",
		"value": [
			{
				"title": "Título do Banner de Teste",
				"message": "Texto do Banner de Teste Texto do Banner de Teste",
				"date_after": "2025-11-01 12:00:00Z",
				"date_before": "2025-12-01 12:00:00Z",
				"dismissable": true,
				"plugin_outlet": "top-notices",
				"enabled_groups": [
					1
				]
			}
		]
	},
	{
		"setting": "splide_options__above_site_header",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	},
	{
		"setting": "splide_options__below_site_header",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	},
	{
		"setting": "splide_options__top_notices",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	}
]

Também tentei sem datas de início e fim e os outros dois plugin outlets. Também tentei everyone em vez de Administrators para ver um efeito no Firefox sem fazer login no site. E eu não mexi nas opções do splide.

1 curtida

Obrigado pelo relatório @Roi.

Sua configuração não incluía uma seleção para nenhuma categoria, e o NB estava indevidamente negando o acesso ao banner.

Acabei de enviar uma correção e lancei v1.3.2. Por favor, atualize os banners de notificação.

1 curtida

Sim, ótimo, agora funciona!

E sim, deixei a seleção de categorias vazia, pois pensei que seria exibido em todos os lugares. Então, foi um bug no componente que exigia uma opção para isso? De qualquer forma, está corrigido agora. Obrigado! :slight_smile:

Como sou novo neste componente, posso fazer algumas perguntas?

Quero notificar/lembrar nossos usuários sobre o envolvimento na comunidade. A ideia era exibir um banner a cada 4 a 8 semanas para lembrar os usuários repetidamente. Assim que for dispensado por um usuário, ele não fica mais visível. Até aqui, tudo bem.

Posso simplesmente alterar a data de início e fim e, após salvar, o banner será exibido novamente para os usuários que o dispensaram? (Como isso funciona de qualquer maneira? Cookies é o meu palpite?) Ou precisarei criar um banner completamente novo?

Alguém mencionou um ciclo aqui no tópico antes. Então, exibir um banner a cada 8 semanas. Essa seria uma ótima opção, pois é completamente livre de manutenção - se você não quiser mudar outras coisas. Mas a questão permanece se o banner aparecerá novamente para os usuários que o dispensaram quando o novo ciclo começar?