Por que o ícone não muda em todos os lugares?

Eu uso este script para alterar os ícones em todo o meu site com sucesso, e ele muda o ícone de verificação de “Resolvido” do plugin Solved para um polegar para cima.


No entanto, a alteração não ocorre em todas as instâncias do site, como na lista de notificações:

image
~
Aqui está como ele aparece em outras partes do site onde funciona:

image

Alguns ícones, incluindo todas as notificações, precisam de tratamento especial porque usamos nomes diferentes. Neste caso, você está procurando por notification.solved.accepted_notification (todos esses nomes de ícones fora do padrão estão listados na seção replacements em https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse-common/lib/icon-library.js.es6)

<script type="text/discourse-plugin" version="0.8">
    api.replaceIcon('notification.solved.accepted_notification', 'thumbs-up')
</script>

Desculpe trazer isso novamente, mas você sabe por que o ícone não está mudando nos controles da postagem?


Este é o código que estou usando:

Você está tentando alterá-lo especificamente para essa localização e estado do ícone? Se você ainda estiver tentando alterar o ícone globalmente, o código que você postou originalmente ainda está correto:

api.replaceIcon('far-check-square', 'thumbs-up')
api.replaceIcon('check-square', 'thumbs-up')

Esse ícone de marca de verificação ao lado de “Elogios” não é o padrão, então será que você tem algum código conflitante em algum lugar?

Especificamente nessa área, pois, como Kris mencionou anteriormente, às vezes o código precisa ser muito específico. Este é todo o código que adicionei para alterar os ícones:

Como o Kris mencionou, apenas alguns ícones precisam de tratamento especial. As notificações são um deles, por isso você precisou usar notification.solved.accepted_notification. No caso do ícone de resolvido nos controles da postagem, ele está usando o nome genérico do ícone, então você só poderá alterá-lo globalmente ao usar o método replaceIcon.

Se você quiser ser bem específico, acho que precisará substituir a função addPostMenuButton definida no plugin solved. Tente o seguinte:

<script type="text/discourse-plugin" version="0.8"> 
  const { iconNode } = require("discourse-common/lib/icon-library");
  api.addPostMenuButton("solved", attrs => {
    const currentUser = api.getCurrentUser();
    const canAccept = attrs.can_accept_answer;
    const canUnaccept = attrs.can_unaccept_answer;
    const accepted = attrs.accepted_answer;
    const isOp = currentUser && currentUser.id === attrs.topicCreatedById;
    const position =
      !accepted && canAccept && !isOp ? "second-last-hidden" : "first";

    if (canAccept) {
      return {
        action: "acceptAnswer",
        icon: "far-check-square",
        className: "unaccepted",
        title: "solved.accept_answer",
        label: "solved.solution",
        position
      };
    } else if (canUnaccept && accepted) {
      const title = canUnaccept
        ? "solved.unaccept_answer"
        : "solved.accepted_answer";
      return {
        action: "unacceptAnswer",
        icon: "thumbs-up",          // MODIFICADO AQUI
        title,
        className: "accepted fade-out",
        position,
        label: "solved.solution"
      };
    } else if (!canAccept && accepted) {
      return {
        className: "hidden",
        disabled: "true",
        position,
        beforeButton(h) {
          return h(
            "span.accepted-text",
            {
              title: I18n.t("solved.accepted_description")
            },
            [
              h("span", iconNode("thumbs-up")),       // MODIFICADO AQUI
              h("span.accepted-label", I18n.t("solved.solution"))
            ]
          );
        }
      };
    }
  });
</script>

Isso funciona, mas estranhamente este script faz com que apenas eu, com a conta de administrador, possa ver o tópico com uma resposta marcada como resolvida; qualquer outro usuário não consegue vê-lo.

Que estranho! Não tenho certeza do motivo de isso falhar apenas para usuários não administradores… De qualquer forma, atualizei o script com a parte faltante.

Não está mais quebrado, mas a mudança de ícone só é exibida para administradores; para não administradores, ainda aparece o ícone de resolvido/concluído:


Administrador:

Ah, sim, o script foi atualizado.