Substituindo o padrão da enquete para que "public=true"

eu estava me perguntando quantos sites estão lutando com isso também. Eu também adoraria que fosse Público por Padrão.

Eu também acho que a interface do usuário poderia ser melhor.

  • Você pode criar Enquetes de Voto Único a partir de Enquetes de Voto Múltiplo, então não há necessidade de ter voto único na minha opinião
  • Eu sempre mostraria a interface estendida
  • Eu adoraria a opção Público=Verdadeiro como Padrão ou, se for mais fácil de implementar, Anônimo=Falso
  • Eu moveria a Caixa de Seleção para Público para o Topo ou faria a interface para Enquetes Públicas e para Anônimas separadamente, ela é esquecida com muita facilidade

Eu não estou familiarizado com a alteração de componentes de tema, se houver uma solução fácil por enquanto que alguém tenha feito, seria incrível compartilhar com instruções sobre como implementar e o que verificar ao atualizar o Discourse.

2 curtidas

Sou novo aqui, mas estou interessado em resolver o problema, então perguntei ao chat-gpt:

Aqui está a resposta:

O script que você encontrou é um bom começo. Ele está modificando o controlador poll-ui-builder para definir a propriedade publicPoll como true quando a função onShow() do controlador é chamada. Isso, de fato, se destina a ser adicionado como um Componente de Tema.

No entanto, o código pode não estar funcionando devido à ordem de execução. O método onShow() original define publicPoll como false e, em seguida, a modificação define publicPoll como true depois.

Uma maneira correta seria chamar primeiro o método onShow() do pai e, em seguida, definir publicPoll como true:

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
  }
});
</script>

Você pode adicionar este script ao seu tema seguindo estes passos:

  1. Vá para o painel de administração do Discourse.
  2. Na seção “Customize”, clique em “Themes”.
  3. Selecione o tema que você deseja modificar.
  4. Na tela de edição do tema, clique em “Edit CSS/HTML”.
  5. Na barra lateral esquerda, clique em “</>” Common.
  6. Cole o script acima na seção “</>” Common.
  7. Clique no botão “Save”.

Isso aplicará a alteração ao seu tema. Lembre-se que as alterações de tema só são aplicadas aos usuários que estão usando aquele tema específico. Se você tiver vários temas, precisará adicionar essa modificação a cada um deles.

Além disso, lembre-se de limpar o cache do seu navegador ou fazer uma recarga forçada para garantir que as alterações sejam carregadas corretamente.

Tentarei seguir estes passos com o administrador do nosso Fórum, mas isso leva tempo. Se alguém aqui quiser tentar primeiro e der um feedback, ficarei muito feliz.

Outra coisa que eu adoraria mudar é o comportamento da interface do usuário, quero pular a tela simples, então perguntei ao chat-gpt novamente:

No seu código atual, a visualização estendida é controlada pela propriedade showAdvanced. Se ela estiver definida como true, a visualização avançada será exibida.

Para sempre exibir a visualização avançada, você pode modificar o método onShow() no controlador poll-ui-builder para definir showAdvanced como true. Você pode adicionar essa modificação ao componente de tema que você criou anteriormente. Aqui está o script atualizado:

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
    this.set('showAdvanced', true);
  }
});
</script>

Lembre-se de seguir os passos que descrevi anteriormente para adicionar este script ao seu tema. Assim que o script for salvo, a visualização avançada deverá ser sempre exibida quando a interface do usuário da enquete for carregada.

Novamente, lembre-se de limpar o cache do seu navegador ou fazer uma recarga forçada para garantir que as alterações sejam carregadas corretamente.

Eu adoraria tentar e testar por mim mesmo de alguma forma, mas como mencionado antes, sou apenas um moderador, não o administrador do nosso site, então isso levará alguns dias ou semanas.

2 curtidas

Ótimo que você descobriu. :+1:

Apenas como observação, quando você quiser modificar várias propriedades, você pode usar esta sintaxe:

    this.setProperties({
        'publicPoll': true,
        'showAdvanced': true
    });
2 curtidas

na verdade não fui eu, eu apenas alimentei o Chat-GPT com o código dado neste link:

e então dei a ele a primeira tentativa de @JammyDodger e perguntei se ele poderia resolver meus dois requisitos :smiley:

seria ótimo se funcionasse e outra coisa legal sobre o discourse que aprendi.

2 curtidas

Eu testei e funciona! :partying_face:

Isso é fantástico. :slight_smile: Muito obrigado. :pray:

1 curtida

E aqui está como um Componente de Tema:

4 curtidas

não funciona mais para nossa instância.
não consegui verificar se o trecho de código ainda está incluído, pois não tenho permissão para isso.

Ainda funciona nos seus fóruns @JammyDodger e @nathank?

1 curtida

Acho que também não está funcionando no meu site de teste agora. Pode precisar de uma atualização para levar em conta algumas mudanças recentes?

Vou separar isso em um tópico de Dev :+1:

2 curtidas

Descobri que o modal que estava sendo chamado foi reestruturado de acordo com isto:

No entanto, não consigo descobrir como interagir com isso através da API. O novo arquivo modal está aqui:

https://github.com/discourse/discourse/blob/main/plugins/poll/assets/javascripts/discourse/components/modal/poll-ui-builder.js

Não consigo descobrir como chamar isso agora, pois como fazer isso não está coberto na documentação, pelo que pude apurar. Alguém pode ajudar?

1 curtida

Boas notícias. :slight_smile: Acho que podemos ter algo para isso…

6 curtidas