Continuando la discussione da Come dividere il forum in due parti principali (generale/gruppi) e come visualizzare solo le sottocategorie in cui posso creare un nuovo post?:
Ciao a tutti,
Ecco un componente del tema che realizza una cosa che volevo fare da molto tempo, ma mi piacerebbe ricevere i vostri commenti sul codice per migliorarlo, o i vostri suggerimenti.
Non credo che il codice sia molto buono, quindi non voglio consigliarlo prima che sia stato controllato da qualcun altro.
Cosa fa
Nasconde con CSS tutti i topic per i quali l’utente ha una restrizione di permesso sulla categoria nelle pagine scelte.
Repository
Link al repository
framagit.org/oca/discourse-theme-shroud-subcategories
Motivazione
Ho una comunità con molti gruppi e vorrei che le persone ignorassero pacificamente ciò che proviene da gruppi diversi dal loro. Non voglio limitare l’accesso ai contenuti, voglio solo che non appaiano nella pagina principale. Dovrebbero poter accedervi andando a cercarli, scegliendo di entrare specificamente in quella categoria (ad esempio, per sapere cosa si discute lì). Ovviamente, lo strumento più adatto sarebbe la funzione di osservazione/ignoramento, ma poiché l’interfaccia richiede più di 2 clic per configurarla, nessuno nella comunità la usa. Alcuni miglioramenti sulla pagina delle categorie potrebbero funzionare, ma sono al di fuori delle mie competenze.
Quindi, uso ciò che è abbastanza semplice per loro: la pagina dei gruppi. Nella stessa pagina vengono visualizzati tutti i gruppi a cui possono accedere, liberamente o meno, e la loro descrizione. È perfetto, devono solo cliccare e sceglierli. La pagina dei gruppi è troppo nascosta per loro (dentro il menu hamburger), quindi potrei mettere un grande link a un pulsante sulla pagina principale.
Ora, devo collegare l’iscrizione al gruppo alla visualizzazione dei post della categoria.
Come funziona
Il trucco che ho usato è stato impostare i permessi della categoria come segue:
- tutti: lettura, scrittura
- quel gruppo: avviare un messaggio, lettura, scrittura
e poi, per ogni topic nell’elenco, verificare se esiste una restrizione sulla categoria e, in caso affermativo, aggiungere una classe not-in-group all’elemento del topic.
Poi, il CSS aggiunge display:none di conseguenza.
Interfaccia utente
L’amministratore può scegliere le pagine in cui questo comportamento è efficace. Non dovrebbe essere fatto sulla pagina della categoria perché, per definizione, è lì che vogliamo accedere ai contenuti. Sul mio sito web, tutti questi gruppi sono sottocategorie nascoste dalla pagina latest, vi accediamo attraverso la pagina /c/groups/, quindi è quella pagina che viene utilizzata.
Miglioramenti
- Poter selezionare le categorie padre delle categorie filtrate (in modo che qualsiasi categoria che non sia una figlia di questa sia al sicuro dall’essere saltata)
- Aggiungere tag, in modo che se un topic ha questo tag, non verrà rimosso.
