In seguito, ecco come immagino di soddisfare al meglio le vostre esigenze con le funzionalità standard di Discourse. Potrebbe non essere esattamente ciò che avete in mente, ma penso che valga la pena considerarlo come punto di partenza per la discussione.
Innanzitutto, faccio alcune supposizioni, che potrebbero essere valide o meno. Vi prego di farmi sapere dove sbaglio:
- Ci saranno molti corsi (decine, forse centinaia)
- La configurazione dei corsi avverrà periodicamente, in batch consistenti, all’inizio di ogni semestre (2-4 volte all’anno)
- I corsi avranno una data di fine vita
- Le persone che gestiscono i corsi devono avere una certa capacità di configurarli autonomamente
- Le persone che gestiscono i corsi avranno un’esperienza limitata o nulla nella gestione di un sito Discourse.
- Le persone che gestiscono i corsi hanno solo bisogno di vedere i propri. Potrebbero voler vedere occasionalmente quelli degli altri come esempi, ma non hanno bisogno di una partecipazione continua ad essi.
- ^ idem per le persone che seguono i corsi
- C’è un team molto piccolo che gestisce il sistema nel suo complesso
- I corsi non necessitano realmente di sottocategorie; l’uso di tag per organizzare i contenuti all’interno dei corsi sarebbe sufficiente
Dato che queste sono vicine, ecco cosa suggerirei, prima a grandi linee:
- Creare un piccolo numero di categorie di primo livello: una per “Corsi Attuali”, una per “Corsi Passati”, una per “Corsi Futuri” e una o più per cose più generali sul sistema stesso (ad esempio, come usare il sito)
- Impostare lo stile della home page su “box con categorie” in modo che siano ben visibili
- Usare sottocategorie per ogni corso
- Crearle in “Corsi Futuri”
- Spostarle in “Corsi Attuali” all’inizio del semestre
- Al termine di un corso, spostarlo da “Corsi Attuali” a “Corsi Passati”
- Controllare l’accesso ai Corsi utilizzando i Gruppi (maggiori dettagli di seguito)
Controllo dell’accesso:
- Per ogni corso, creare un set di gruppi come segue, ad esempio: foo_interessati, foo_iscritti, foo_admin
- Creare due gruppi aggiuntivi: “sfoglia_corsi” e “sfoglia_corsi_passati”
- Impostare le categorie in “Corsi Futuri” e “Corsi Attuali” in modo che siano accessibili solo alle persone nei gruppi per il corso specifico e alle persone nel gruppo “sfoglia_corsi”.
- Impostare le categorie in “Corsi Passati” in modo che siano accessibili solo alle persone nei gruppi per il corso specifico e alle persone nel gruppo “sfoglia_corsi_passati”.
Esperienza utente per gruppi e corsi
- Avere un argomento fissato nella categoria di primo livello per “Corsi Futuri” che spieghi come sfogliare i corsi, con un’agevole opzione per le persone di unirsi al gruppo “sfoglia_corsi”.
- ^ idem per “Corsi Attuali”
- ^ idem per “Corsi Passati”
Per i singoli corsi, avere un argomento fissato nella categoria che spieghi come iscriversi al Corso:
- Unirsi al gruppo “foo_interessati” e/o “foo_iscritti”
- Aggiungere il corso alla propria barra laterale
L’amministrazione sarà un po’ laboriosa all’inizio, poiché per ogni nuovo corso qualcuno con i privilegi appropriati dovrà:
- Creare la categoria
- Creare i gruppi
- Creare l’argomento fissato
- Aggiungere le persone al gruppo _admin
- Fornire loro la documentazione necessaria per gestire il proprio corso
Parte di ciò potrebbe essere automatizzata con alcuni strumenti leggeri. A seconda di chi sia il team di amministrazione principale, potrebbe avere senso iniziare con qualcosa di esterno che utilizzi semplicemente l’API. Oppure, potrebbe essere necessario qualcosa di più basato sull’interfaccia utente, integrato in Discourse come componente tematico o plugin. Ma suggerirei di iniziare in modo snello qui, e concentrarsi prima sulla definizione di un processo che funzioni, quindi progettare gli strumenti attorno ad esso.
La scalabilità delle categorie è una possibile preoccupazione qui. Discourse presenta alcuni problemi di prestazioni e usabilità quando il numero di categorie diventa troppo elevato (centinaia o migliaia). Gli utenti con accesso a più categorie ne risentiranno, mentre quelli con accesso limitato no. Questa è parte della motivazione per limitare l’accesso alle categorie come ho delineato.
Sono molto interessato a ricevere qualsiasi feedback o domanda in merito a quanto sopra.