Con la versione 5, Moodle introduce alcuni cambiamenti di impatto per gli sviluppatori.
La più succulenta, almeno per chi sviluppa componenti di tipo “attività”, è la presenza della classe overview che consente di mostrare una tabella riepilogativa di tutte le istanze di quel modulo all’interno di un corso. In realtà si tratta di una funzione che era già presente (anche se poco utilizzata, almeno qui in Italia), ma che era delegata al file index.php e seguiva quindi una logica un pò “procedurale”. Adesso c’è una classe a nostra disposizione grazie alla quale potremo mostrare all’utente l’elenco di tutte le attività di un certo tipo (ad esempio, l’elenco di tutti gli scorm) presenti all’interno di un corso. Una pagina molto utile anche per docenti ed amministratori.
Un’altra novità interessante e molto pratica è la presenza di classi (humandate e humantimeperiod) per la formattazione di date ed orari. Ad esempio grazie ad humantimeperiod, potremo dare in pasto un doppio intervallo di date e stampare in automatico una stringa come questa22 giugno 2025, 14:00–16:00
con il sistema che riconosce che l’evento inizia e termina nello stesso giorno ed evita quindi di stampare due volte la data, limitandosi al classico “14:00–16:00” che delimita un orario.
Oppure stamperemo in automatico un alert per date imminenti, cosi da segnalare la scadenza.
Quindi niente piu calendar_format_event_time o calendar_time_representation ma metodi della classe$renderer = $PAGE->get_renderer('core_calendar');
Per quanto riguarda il formato dei corsi, attenzione a quelli che usano YUI per l’editing, visto che (finalmente) cessa del tutto l’utilizzo di questa libreria ferma ormai da oltre 10 anni. Verifichiamo che il file
course/format/nomeformato/lib.php
contenga, nella classe format_nomeformato, il metodo supports_components() e che questo metodo ritorni “true”; in caso contrario, è necessario aggiornare il formato. Tuttavia ho visto che i plugin di formato piu utilizzati sono già aggiornati, quindi credo che il problema riguardi piu che altro formati “fatti in casa”.
Il vecchio core_courseformat_create_module viene rimpiazzato da core_courseformat_new_module ed accetta come parametro sectionid anzichè sectionnum.
Una piccola modifica riguarda i subplugin, da dichiarare in questo modo{
"subplugintypes": {
"quizaccess": "accessrule"
}
}
quindi come “subplugintypes” anzichè “plugintypes” e con un percorso relativo anzichè assoluto (finora avremmo usato “mod/quiz/accessrule”)
Dal punto di vista grafico ricordiamo che viene integrato Boostrap5 e che ci sono nuove variabili che sostituiscono i vecchi *-filter:$activity-icon-administration-bg
$activity-icon-assessment-bg
$activity-icon-collaboration-bg
$activity-icon-communication-bg
$activity-icon-content-bg
$activity-icon-interactivecontent-bg
possiamo dichiararli nel nostro tema scss, prima del Boost:$activity-icon-assessment-bg: #17857f;
$activity-icon-content-bg: #5915b1;