Ändert sich das Symbol nicht überall?

Ich verwende dieses Skript, um auf meiner gesamten Website erfolgreich Symbole zu ändern. Dabei wird das „Gelöst-Haken“-Symbol des Solved-Plugins in ein Daumen-hoch-Symbol umgewandelt.

Allerdings wird es nicht in allen Bereichen der Website geändert, beispielsweise in der Benachrichtigungsliste:

image
~
So sieht es an anderen Stellen der Website aus, wo es funktioniert:

image

Einige Symbole, einschließlich aller Benachrichtigungen, benötigen eine besondere Behandlung, da wir unterschiedliche Namen verwenden. In diesem Fall suchen Sie nach notification.solved.accepted_notification (alle diese abweichenden Symbolnamen sind im Abschnitt replacements in https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse-common/lib/icon-library.js.es6 aufgeführt)

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

Entschuldigung, dass ich das nochmal anspreche, aber weißt du, warum sich das Symbol in den Beitragssteuerungen nicht ändert?


Dies ist der Code, den ich verwende:

Versuchst du, es speziell für diesen Icon-Standort und diesen Zustand zu ändern? Wenn du immer noch versuchst, das Icon global zu ändern, ist der von dir ursprünglich gepostete Code immer noch korrekt:

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

Dieses Häkchen-Icon neben „Kudos

Genau in diesem Bereich, denn wie Kris bereits erwähnt hat, muss der Code manchmal sehr spezifisch sein. Dies ist der gesamte Code, den ich zum Ändern der Symbole hinzugefügt habe:

Wie Kris bereits erwähnt hat, benötigen nur einige Icons eine spezielle Behandlung. Benachrichtigungen gehören dazu, weshalb Sie notification.solved.accepted_notification verwenden mussten. Im Fall des „gelöst“-Icons in den Beitragssteuerungen wird der generische Icon-Name verwendet. Daher können Sie es nur global ändern, wenn Sie die Methode replaceIcon verwenden.

Wenn Sie es wirklich spezifisch gestalten möchten, müssen Sie meiner Meinung nach die Funktion addPostMenuButton überschreiben, die im „gelöst“-Plugin definiert ist. Probieren Sie Folgendes aus:

<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",          // HIER GEÄNDERT
        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")),       // HIER GEÄNDERT
              h("span.accepted-label", I18n.t("solved.solution"))
            ]
          );
        }
      };
    }
  });
</script>

Das funktioniert, aber seltsamerweise sorgt dieses Skript dafür, dass nur ich mit dem Admin-Konto den Beitrag mit einer als gelöst markierten Antwort sehen kann. Alle anderen Benutzer können ihn nicht sehen.

Oh, komisch! Ich bin mir nicht sicher, warum das nur bei Nicht-Administratoren fehlschlägt… Jedenfalls habe ich das Skript mit dem fehlenden Teil aktualisiert.

Es ist nicht mehr defekt, aber die Icon-Änderung wird nur für Administratoren angezeigt. Für Nicht-Administratoren wird weiterhin das gelöste/Prüf-Icon angezeigt:


Administrator:

Ah ja, Skript aktualisiert.