Diversi membri (incluso il mio moderatore principale) hanno espresso frustrazione riguardo alla funzione “Il tuo argomento è simile a”. Suppongo che parte di ciò sia dovuto alle dimensioni dello schermo e al fatto che il div per questa funzione oscura parzialmente le cose, ecc.
E sì, ho familiarità con l’opzione per aumentare il valore minimo della query di testo a qualcosa di più alto. L’ho già impostato a 25 caratteri, ma penso che la funzionalità potrebbe essere utile a condizione che non stia allontanando più membri di quanti ne stia aiutando.
Ciò la disattiverebbe di fatto, ma non è quello che stavo chiedendo. La soluzione migliore sarebbe che gli utenti a cui non piace la funzionalità potessero sopprimerla tramite cookie o impostazioni dell’account.
Puoi guardare il codice di questo componente e adattarlo per nascondere gli elementi con CSS (target .similar-topics) nelle impostazioni delle preferenze degli utenti. È esattamente quello che ho fatto su https://unicyclist.com/, dove gli utenti hanno un’impostazione per nascondere l’icona delle donazioni nell’angolo in alto a destra dell’intestazione.
Fondamentalmente, l’unica modifica che ho apportato al plugin originale è che memorizzo l’impostazione in un cookie (voglio ricordare al mio utente di donare ogni anno per le spese dei server).
Ecco il mio codice del componente tema:
// imposta la durata del cookie a 1 anno
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=/';
}
// restituisce il valore del 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;
}
// Aggiungiamo la regola CSS nel codice HTML
if (getToggleDonationIcon()) {
let style = document.createElement('style');
style.innerHTML = ".header-icon-help-fund-servers-fees{ display: none; }";
document.head.appendChild(style);
}
// tecnicamente vogliamo modificare solo l'utente corrente qui
api.modifyClass("model:user", {
toggleDonationIcon: function() {
return getToggleDonationIcon();
}.property()
});
api.modifyClass("controller:preferences/interface", {
actions: {
save() {
this._super();
// imposta il valore del cookie come valore dell'impostazione
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";
}
}
}
}
});
{{preference-checkbox labelKey=(theme-prefix 'donation_icon_toggle') checked=model.toggleDonationIcon}}