Cosa è MagicCMS
MagicCMS è un vero e proprio frame work scritto in C# per creare siti gestiti tramite Content Management System su piattaforma ASP.NET. MagicCMS è open source ed è distribuito sotto Licenza MIT. La documentazione della libreria e disponibile qui .
AVVERTENZA
La documentazione per la versione corrente di Magic Cms (2.5.x) è fortemente incompleta. Ho riscritto in buona parte l'interfaccia di editing del CMS e ho aggiunto numerose funzionalitaà, ma non sono riuscito ancora ad aggiornare la documentazione che è rimasta ferma alla versione 1.4.0.
Gli elementi che costituiscono il framework sono:
- Un database (Microsoft SQL Server) dove vengono memorizzati i contenuti del sito
- Una libreria di classi che offre un’interfaccia completa agli oggetti memorizzati nel database e i metodi necessari al loro rendering nelle pagine html.
- Un’interfaccia back-end anazata e fortemente personalizzabile che consente più livelli di utilizzo (a seconda delle prerogative e delle competenze dell’utente).
Sotto molti aspetti MagicCMS assomiglia agli altri CMS. Tutti gli elementi che costituiscono l’interfaccia e i contenuti di un sito web (menù, pagine, sezioni di pagine, gallerie di immagini o di video, slide show animati, ecc., ecc., ecc.) sono codificati in una struttura record abbastanza complessa per poterne rappresentare le varie caratteristiche e vengono memorizzati in una tabella del database. Una seconda tabella consente di stabilire le relazioni di parentela tra i vari oggetti: i siti creati con MagicCMS sono organizzati gerarchicamente in una struttura ad albero, con elementi parent che contengono elementi child che a loro volta possono contenere altri elementi child e così via (le varie sezioni di una Home page saranno oggetti figli della home page, gli slide di uno slide show saranno figli dello slide show, gli argomenti di un blog figli del blog e gli articoli figli degli argomenti e così via). Gli editor del sito accederanno a questa struttura ad albero e potranno modifcarne gli elementi o aggiungerne di nuovi semplicemento riempiendo dei campi con le informazioni necessarie. Un tema costituito da fogli di stile, da eventuali file Javascript e da una serie di modelli costutiti da Master Page ASP.NET si occuperà di rendere gli elementi contenuti nel database come pagine web del sito.
Nella codifica degli oggetti è prevista una proprietà, (il Tipo) che li distingue e fa in modo che i vari oggetti vengano resi in modo appropriato. Un menù verrà reso come menu, i suoi children come voci del menu stesso, una pagina standard verrà visualizzato come una normale pagina web, un blog come una pagina che organizzai sui children come articoli, ecc.
La pecularietà di MagicCMS sta nella flessibilità con cui possono venir gestiti questi oggetti che concretamente costituisco l'interfaccia del sito web. Se, infatti, alcuni tipi sono predefiniti, gestiti direttamente dal motore MagicCMS (se ad esempio assegno a una pagina come parent un oggetto di Tipo menù, la pagina verrà resa nel menu come una voce che rimanda alla pagina stessa, se assegno come parent un menù ad un altro menu, quest’ultimo verrà reso come sub menu del menù contenitore), laa maggior parte dei tipi può essere liberamente gestita dallo sviluppatore, o dal designer di temi. Ad ogni tipo corrisponde un record in un’apposita tabella del database che contiene la definizione di quel tipo. Attraverso la definizione si può:
- Definire se l’oggetto è un contenitore (può, cioè, essere parent di altri posti).
- Specificare quali campi sono esposti nel back-end.
- Specificare quali etichette sono visualizzate per ogni campo nel back-end.
- Definire se l’oggetto può avere una scadenza
- Se l’oggetto può essere reso come una pagina HTML, specificare quale modello (una ASP.NET MasterPage) verrà utilizzato per il rendering..
- Specificare un testo di aiuto (in formato HTML) che l’editor può consultare.
In altre parole per ogni pagina o sezione di pagina tipo del mio sito web quali sono informazioni che l'editor deve inserire e come gli sono presentate e quale master page verrà utilizzata per trasformarle in una pagina web.