Certains utilisateurs se plaignent de la fenêtre "Sujet similaire à"

Cela peut être fait assez facilement.

Vous pouvez examiner le code de ce composant et l’adapter pour masquer des éléments avec CSS (cibler .similar-topics) dans les paramètres de préférences des utilisateurs. C’est exactement ce que j’ai fait sur https://unicyclist.com/, où les utilisateurs ont un paramètre pour masquer l’icône de don en haut à droite de l’en-tête.

image

image


Fondamentalement, la seule modification que j’ai apportée au plugin d’origine est que je stocke le paramètre dans un cookie (je veux rappeler à mon utilisateur de faire un don chaque année pour les frais de serveur).

Voici mon propre code de composant de thème :

<script type="text/discourse-plugin" version="0.8">
    // définir la durée du cookie à 1 an
    function setHideDonationCookie(value=null) {
        var now = new Date();
        var time = now.getTime();
        var expireTime = time + 1000*60*60*24*365;
        now.setTime(expireTime);
        document.cookie = 'donationButton=' + value + ';expires='+now.toUTCString()+';path=/';
    }
    // retourner la valeur du cookie
    function getCookie(name) {
        var dc = document.cookie;
        var prefix = name + "=";
        var begin = dc.indexOf("; " + prefix);
        if (begin == -1) {
            begin = dc.indexOf(prefix);
            if (begin != 0) return null;
        }
        else
        {
            begin += 2;
            var end = document.cookie.indexOf(";", begin);
            if (end == -1) {
            end = dc.length;
            }
        }
        return decodeURI(dc.substring(begin + prefix.length, end));
    } 

function getToggleDonationIcon() {
  let pref = getCookie('donationButton');

  let result = settings.default_enabled;
  if (pref !== null) {
    result = pref === "true";
  }
  return result;
}

// Nous ajoutons la règle CSS dans le code HTML
if (getToggleDonationIcon()) {
  let style = document.createElement('style');
  style.innerHTML = ".header-icon-help-fund-servers-fees{ display: none; }";
  document.head.appendChild(style);
}

// techniquement, nous voulons seulement modifier l'utilisateur actuel ici
api.modifyClass("model:user", {
  toggleDonationIcon: function() {
    return getToggleDonationIcon();
  }.property()
});

api.modifyClass("controller:preferences/interface", {
  actions: {
    save() {
      this._super();
      // définir la valeur du cookie comme la valeur du paramètre
      if(this.get("model.toggleDonationIcon") != getToggleDonationIcon()) {
        setHideDonationCookie(this.get("model.toggleDonationIcon").toString());
        if(this.get("model.toggleDonationIcon") == false) {
            document.getElementsByClassName("header-icon-help-fund-servers-fees")[0].style.display = "";
        }
        else {
            document.getElementsByClassName("header-icon-help-fund-servers-fees")[0].style.display = "none";
        }
      }
    }
  }
});
</script>

<script type='text/x-handlebars' data-template-name='/connectors/user-preferences-interface/add-selector'>
  {{preference-checkbox labelKey=(theme-prefix 'donation_icon_toggle') checked=model.toggleDonationIcon}} 
</script>
2 « J'aime »