Sezione Messaggi per la barra laterale

:information_source: Riepilogo Aggiunge collegamenti alla casella di posta dei messaggi personali e di gruppo alla barra laterale, inclusi gli indicatori dei messaggi non letti
:eyeglasses: Anteprima Theme Creator
:hammer_and_wrench: Repository GitHub - moin-Jana/sidebar-messages-section: Adds personal and group message inbox links to the sidebar, including unread message indicators.
:question: Guida all’installazione Come installare un tema o un componente tema
:open_book: Nuovo ai temi di Discourse? Guida per principianti all’utilizzo dei temi di Discourse

Installa questo componente tema

Il componente aggiunge una sezione Messaggi alla barra laterale con collegamenti alle caselle di posta dei messaggi personali, sia la casella di posta personale dell’utente sia le caselle di posta di gruppo a cui ha accesso. La sezione include anche un pulsante per comporre un nuovo messaggio personale accanto all’intestazione della sezione.

Casella di posta personale

Per impostazione predefinita, il componente aggiunge un collegamento alla casella di posta personale per tutti gli utenti. Con l’impostazione show_personal_inbox, gli amministratori possono anche nasconderla completamente o mostrarla solo agli utenti autorizzati a creare MP in base all’impostazione del sito Personal message enabled groups. Ciò rispecchia il modo in cui il collegamento alla casella di posta personale appare nel menu delle notifiche, nel profilo dell’utente e nella sezione Community della barra laterale.

:bulb: Per evitare collegamenti duplicati alla casella di posta personale, potresti voler rimuovere il collegamento ai messaggi nella prima sezione della barra laterale. Puoi farlo aprendo il menu Altro e selezionando Personalizza questa sezione, quindi rimuovendo il collegamento Messaggi dalla sezione.

Caselle di posta di gruppo

Tutte le caselle di posta di gruppo che contengono almeno un messaggio e di cui l’utente è membro appariranno automaticamente nella sua barra laterale. Gli amministratori possono nascondere caselle di posta di gruppo specifiche utilizzando l’impostazione hide_group_inboxes, che può essere utile quando una casella di posta di gruppo non è più utilizzata attivamente.

Un’impostazione separata, use_group_page_inbox, consente di scegliere se i collegamenti alla casella di posta di gruppo si aprono nell’interfaccia dei messaggi dell’utente (/my/messages/group/{group_name}) o nella pagina del gruppo (/g/{group_name}/messages/inbox).

Indicatore di non letto

Ogni collegamento alla casella di posta mostra lo stato attuale del messaggio in base alla preferenza dell’utente per “Mostra un conteggio degli elementi nuovi”: un punto o il conteggio numerico. I valori superiori a 100 vengono visualizzati come 99+.

Configurazione avanzata della casella di posta di gruppo

Per personalizzare l’ordine delle caselle di posta di gruppo o modificare il nome visualizzato nella barra laterale, è possibile utilizzare l’impostazione advanced_group_inbox_configuration.

In questa impostazione è possibile:

  • selezionare un gruppo da un menu a discesa
  • definire facoltativamente un nome personalizzato che verrà mostrato nella barra laterale
  • riordinare i gruppi configurati utilizzando i pulsanti in basso

Il nome personalizzato è utile anche all’interno dell’impostazione stessa.
Se non viene fornito alcun nome, la voce verrà etichettata come group 1, group 2, ecc. (in base alla sua posizione). L’aggiunta di un nome temporaneo può facilitare il riordino, e puoi rimuoverlo di nuovo prima di salvare, se lo desideri.

I gruppi con messaggi che non sono aggiunti alla configurazione avanzata appariranno comunque nella barra laterale, elencati dopo quelli configurati e ordinati in base al loro ID di gruppo.

I gruppi elencati nell’impostazione hide_group_inboxes saranno sempre nascosti, indipendentemente dal fatto che siano presenti anche nella configurazione avanzata o abbiano messaggi. Un avviso solo per amministratori aiuta a evidenziare quando un gruppo viene aggiunto a entrambe le impostazioni.

È possibile visualizzare un esempio di configurazione e come influisce sull’ordine e sui nomi visualizzati negli screenshot seguenti:


Posizione della sezione messaggi

Per modificare la posizione della sezione messaggi è possibile utilizzare il CSS, ad esempio

In alternativa, è possibile installare il componente Navigation (sidebar) menu display control che include un’impostazione per modificare l’ordine delle sezioni nella barra laterale. Utilizzare inbox-section come nome della sezione quando si regola la sua posizione.

15 Mi Piace

wow, ben fatto Moin! :clap: :tada:

4 Mi Piace

Suggerimento minore: forse javascripts/discourse/api-initializers/group-inboxes-in-sidebar.gjs dovrebbe essere un file JS invece che GJS?

Ottimo componente!


Ho passato gli ultimi 10 minuti a esaminare il codice e le classi principali e devo dire quanto sia notevole che Discourse sia stato (ed è) realizzato in modo che tutto si integri così bene.

2 Mi Piace

Sì, l’API offre quasi tutto il necessario per far sì che la sezione abbia lo stesso aspetto e funzionamento di tutte le altre. Anche la chat la utilizza, il che probabilmente ha influenzato lo sviluppo. Le funzionalità sono state sviluppate contemporaneamente.
Purtroppo, get badgeText(), che visualizza il numero di argomenti non letti nelle sezioni principali, non è supportato, quindi ho dovuto usare un po’ di creatività con i numeri.

4 Mi Piace

Non sono riuscito a trovare un’impostazione di amministrazione per questo, quindi avviso che questo lo nasconderà tramite CSS:

.sidebar-section-link[data-link-name="my-messages"] {
    display: none;
}
2 Mi Piace

Perché preferisci nascondere il link con il CSS invece di utilizzare l’opzione esistente per gli amministratori per personalizzare la barra laterale? Nascondere con il CSS sembra più propenso a rompersi rispetto all’utilizzo delle opzioni integrate di Discourse.

2 Mi Piace

Derp, hai ragione. Stavo pensando troppo, pensando che fosse un’impostazione nella console di amministrazione e/o una funzionalità principale.

1 Mi Piace

Non sei l’unico che stava guardando lì. :joy:


Questo è un componente fantastico!

2 Mi Piace

Ho ampliato la nota:

5 Mi Piace

Sì, l’hai fatto. Ma come amministratori siamo spesso abituati a passare attraverso il pannello di amministrazione. :wink:. Quindi, quando scorriamo le istruzioni, potremmo trascurare alcuni dettagli.

Anche con gli aggiornamenti principali, sono sicuro che molti di noi non leggono sempre tutti i minimi dettagli finché qualcosa che usiamo non è stato spostato in un’altra area.

Tanto tempo fa, con Android, se ben ricordo, Gingerbread aveva Navigazione e Mappe. Ho passato circa 10 minuti a cercare Navigazione dopo che l’hanno unita a Mappe in un aggiornamento. :joy:

Questo è un Componente Tema brillante che si adatta ai siti che fanno molto affidamento sui Messaggi! Grazie @moin per il tuo eccellente lavoro!

Per renderlo ancora migliore per coloro che utilizzano molto i Gruppi (i Messaggi sono una componente importante di questo), potresti considerare questi suggerimenti?

Posizione selezionabile sulla barra laterale

Per enfatizzare maggiormente i Messaggi nell’interfaccia utente, vorrei che fossero in cima alla Barra laterale (cioè subito sotto i link). In sostanza, voglio che le persone possano vedere facilmente i loro Messaggi recenti (per gruppo) a colpo d’occhio senza fare affidamento sulle notifiche.

Ho usato questo CSS per ottenerlo, ma sospetto di non essere l’unico per cui questo sarebbe utile:

/* Assicura che la sezione Messaggi appaia per prima nel contenitore flexbox */
.sidebar-section-wrapper {
  order: 1;
}
.sidebar-section-wrapper[data-section-name="inbox-section"] {
  order: 0;
}

Aprire le caselle di posta dei gruppi nel contesto del gruppo

Voglio che i miei utenti possano trovare e interagire facilmente con i loro Gruppi. Ha senso per me che lavorino con i Messaggi nella Posta in arrivo a cui si accede dalla pagina del Gruppo (cioè /g/the-group/messages/inbox) invece che dalla loro pagina Posta in arrivo personale (cioè /my/messages/group/the-group)

Questo fornisce loro una bella pagina pulita incentrata sul gruppo, con facile accesso agli altri membri del gruppo e alle impostazioni:

Sarebbe fantastico se questo fosse governato da un’impostazione nel TC.

3 Mi Piace

Ci ho pensato, a quale percorso sia un’impostazione migliore e quale sia la predefinita, ma l’ho rimossa per qualche motivo che non ricordo al momento. Darò un’occhiata domani più tardi. Penso che riguardasse l’indicatore dei messaggi non letti. Preferiresti comunque questa strada se la conseguenza fosse che non ci sarebbe alcun indicatore per i messaggi non letti?

Penso che la posizione attuale sia la stessa della sezione messaggi che era nel core.
Esiste già un ottimo componente per cambiare l’ordine delle sezioni nella barra laterale: Navigation (sidebar) menu display control
Per evitare conflitti poiché entrambi i componenti tentano di sovrascrivere l’ordine, potrebbe avere senso che gli amministratori che desiderano un ordine diverso utilizzino il componente esistente (l’autore ha confermato che funziona usando “inbox-section” come nome della sezione).
Dovrò vedere se posso offrire un’impostazione aggiuntiva per questo. In ogni caso, voglio evitare che i componenti interferiscano tra loro.

2 Mi Piace

Ho giocherellato con questo nel mio fork e ho riscontrato la stessa cosa. Funziona, ma perde sia l’indicatore dei messaggi non letti sia l’evidenziazione del link nella barra laterale. Entrambe queste cose hanno davvero un grande valore!

Ho fatto una PR per quello che sono riuscito a fare:

Ma per funzionare davvero bene, ha davvero bisogno che l’indicatore dei messaggi non letti e l’evidenziazione del link funzionino, eh?

Punto ben sollevato! Questa è un’idea molto migliore. Con mia vergogna, sono in realtà uno degli autori di quel TC!

1 Mi Piace

Perché hai usato href invece di route? Penso che href non funzionasse affatto con gli indicatori di non letto. Ero più preoccupato che i numeri sulla rotta group.messages.inbox non fossero disponibili nel modo in cui puoi usarli su userPrivateMessages.

1 Mi Piace

Perché sono uno sviluppatore pessimo e ho provato un sacco di cose finché qualcosa non ha funzionato! Probabilmente anche a causa della mia dipendenza malsana dall’IA generativa non proprio intelligente :wink:.

Ho provato a utilizzare i percorsi (routes), ma non sono riuscito a farli sovrascrivere quelli esistenti. Quindi ho rinunciato.

Mi chiedevo se fosse possibile ottenere quei numeri/comportamenti semplicemente dirottando il link per farlo andare in una posizione diversa. Ma questo è un po’ troppo complesso per il semplice vecchio me.

Sentiti libero di “migliorarlo”!

(A proposito, il meraviglioso @moin ha fatto esattamente questo, aggiungendo la funzionalità - facendolo funzionare correttamente!)

2 Mi Piace

Questo funziona davvero molto bene. In modo un po’ imbarazzante, sono uno degli autori (molto secondario rispetto a @lilly) di quel TC :flushed_face:!

Sarebbe fantastico averlo nell’OP.

2 Mi Piace

@nathank ha chiesto un’opzione per cambiare l’ordine delle caselle di posta dei gruppi nella barra laterale. In precedenza avevo chiesto idee su come affrontare al meglio questo problema in Configuring the order of groups in theme component settings, e penso di aver trovato una soluzione.
Ho combinato questo con la richiesta di visualizzare il nome completo di un gruppo anziché il suo nome breve. Poiché il nome completo non è facilmente disponibile in questo contesto, la soluzione è consentire agli amministratori di definire invece un nome visualizzato personalizzato. Il campo che in precedenza sarebbe stato utilizzato solo per visualizzare il nome del gruppo nelle impostazioni è ora utilizzato anche per controllare il nome mostrato nella barra laterale.

Entrambe le funzionalità sono gestite tramite la nuova impostazione advanced_group_inbox_configuration.

In questa impostazione è possibile:

  • selezionare un gruppo da un menu a discesa
  • definire facoltativamente un nome personalizzato che verrà mostrato nella barra laterale
  • riordinare i gruppi configurati utilizzando i pulsanti in basso

Il nome personalizzato è utile anche all’interno dell’impostazione stessa.
Se non viene fornito alcun nome, la voce verrà etichettata come gruppo 1, gruppo 2, ecc. (in base alla sua posizione). Aggiungere un nome temporaneo può facilitare il riordino, ed è possibile rimuoverlo prima di salvare, se lo si desidera.

I gruppi con messaggi che non sono aggiunti alla configurazione avanzata appariranno comunque nella barra laterale, elencati dopo quelli configurati e ordinati in base al loro ID di gruppo.
I gruppi elencati nell’impostazione hide_group_inboxes saranno sempre nascosti, indipendentemente dal fatto che siano presenti anche nella configurazione avanzata o abbiano messaggi.


In questo esempio, non è stato inserito alcun nome personalizzato per il gruppo moderatori, motivo per cui appare come gruppo 1 nella configurazione. Gli altri gruppi hanno nomi personalizzati.

Questa configurazione si traduce in:


Qui è possibile vedere che le caselle di posta ‘doggo-daily’ e ‘cat_pics’ hanno scambiato posizione e vengono visualizzate senza trattini o underscore. La casella di posta ‘Team’ appare sotto quelle configurate nell’impostazione avanzata.
È inoltre possibile vedere un avviso visibile solo agli amministratori, che appare perché il gruppo ‘admin’ è stato aggiunto alla configurazione avanzata e contemporaneamente all’impostazione hide_group_inboxes.

4 Mi Piace

Questo è semplicemente brillante per coloro che utilizzano i gruppi per le comunicazioni. Ottimo lavoro, @Moin!

Grazie per aver ascoltato e interagito attivamente con i feedback degli altri (e miei) - e per aver prodotto un componente tema così ben progettato e pragmatico che risolve un problema di lunga data in modo così elegante.

1 Mi Piace