UNIVERSITA’ DEGLI STUDI DI CAGLIARI FACOLTÀ DI SCIENZE Corso di Laurea Magistrale in Informatica Seminario sui CMS Corso di Computazione su Rete Stefano Salidu 49217 1 Obiettivo del Seminario In questo Seminario cerchiamo di capire bene cosa sia un Content Management System (CMS), vediamo come si sono evoluti, e come hanno aiutato il web ed evolversi in quello che noi oggi chiamiamo web 3.0. 2 CMS - Contenuti Negli ultimi anni Internet ha subito importanti trasformazioni, i Contenuti sono aumentati esponenzialmente e gli Utenti ricoprono un ruolo sempre più importante. Non possiamo più gestire i Contenuti uno alla volta e perdere tempo mettendo mano al codice, ci serve uno strumento potente ed efficacie, ci servono i CMS! 3 CMS - Contenuti La sigla CMS sta per Content Management System, ossia Sistema di Gestione di Contenuti. Diamo una definizione alla parola «Contenuto»: Cosa è un Contenuto? 4 CMS - Contenuti La sigla CMS sta per Content Management System, ossia Sistema di Gestione di Contenuti. Da cosa è formato un Contenuto? 5 CMS - Contenuti La sigla CMS sta per Content Management System, ossia Sistema di Gestione di Contenuti. Da cosa è formato un Contenuto? Qualsiasi informazione, come un testo, un immagine, un elemento audio o video ed in ogni caso qualunque informazione che può essere rappresentate in formato digitale, costituisce un “dato”, il quale è parte di un “Contenuto”. 6 CMS - Contenuti La sigla CMS sta per Content Management System, ossia Sistema di Gestione di Contenuti. Diamo una definizione alla parola «Contenuto»: «Un Contenuto è un set di Dati eterogenei» 7 CMS - Contenuti Per esempio un post su Facebook è un Contenuto: 8 CMS – Utenti Un altro chiarimento va fatto sulla domanda «chi sono gli utenti del sistema?». Difatti mentre nel vecchio modello di interazione statica i gestori di un sito inserivano i contenuti e gli utenti potevano unicamente consultarli, ora è anche possibile che l’utente interagisca con i contenuti. 9 CMS – Utenti Un altro chiarimento va fatto sulla domanda «chi sono gli utenti del sistema?». Difatti mentre nel vecchio modello di interazione statica i gestori di un sito inserivano i contenuti e gli utenti potevano unicamente consultarli, ora è anche possibile che l’utente interagisca con i contenuti. 10 CMS – Utenti Si può trattare semplicemente di un commento in una foto, oppure può esser l’utente stesso che inserisce una foto in un sito di sharing. Per far sì che un CMS si adegui alle esigenze di progettazione di differenti sistemi web esso deve dunque prevedere una gestione dei permessi. 11 CMS – Utenti Questo è molto importante affinchè non tutti abbiano ad esempio i permessi di modificare un Contenuto inserito da un altro utente. Per fortuna a maggior parte dei sistemi CMS viene in contro al problema proponendo una suddivisione dell’utenza in Ruoli. 12 CMS – Ruoli Avremo sicuramente la figura dell’Amministratore con la totalità dei permessi, al fine di gestire il sistema. Saranno poi presenti una serie di figure con permessi sempre minori in maniera da ricoprire correttamente il proprio ruolo all’interno del sistema. Generalmente un utente non iscritto avrà il minor numero di permessi. 13 CMS – Ruoli Notare che, sebbene possa sembrare banale, è molto importante che esista sempre una figura avente la totalità dei permessi, altrimenti vi sarebbero delle operazioni non eseguibili da nessun utente, nemmeno dal creatore stesso del sistema!!! 14 CMS – RIepilogo Dunque ricapitolando fino ad ora sappiamo che un CMS è un sistema software che ci facilita la creazione e la gestione di contenuti. Inoltre permette agli altri utenti di interagire in qualche modo con i contenuti presenti sul sistema, a seconda dei permessi utente che possiedono. 15 CMS – Ma non finisce qui Ora sappiamo che i Contenuti sono un insieme di Dati, e che possiamo, attraverso i CMS, gestire i permessi di accesso a questi ultimi Tuttavia mancano ancora due importanti elementi che rendono un CMS indispensabile per la gestione di grandi, se non enormi sistemi informativi. 16 CMS – Punti di forza La trasparenza d’uso, che evita all’utente di dover disporre di una buona conoscenza dei sottolivelli di sistema (database, programmazione, etc.), al fine di rendere il più possibile user friendly l’interazione. La gestione della grafica tramite template, che permettono di separare ciò che sono i Contenuti e la loro rappresentazione. 17 CMS – Database Comunemente i Dati, intesi come tutte le informazioni che concorrono a formare un Contenuto, vengono memorizzati in un database, generalmente gestito tramite MySQL e Microsoft SQL Server. Questo comporta notevoli vantaggi, favorendo la successiva visualizzazione del contenuto tramite pagine formattate in HTML. 18 CMS – Vantaggi Dunque la possibilità di: •Accedere ai dati con diverse modalità; •Elaborare i dati in futuro; •Indicizzare i dati; •Gestire modifiche/accessi da parte di più utenti contemporaneamente •Eseguire in maniera semplice attività di backup 19 CMS – Presentazione La presentazione dei Contenuti avviene successivamente attraverso appositi template, i quali memorizzano informazioni riguardanti la maniera in cui i dati verranno disposti all’interno della pagina e come essi verranno visualizzati. E’ dunque sufficiente cambiare template per ottenere, a partire dalle stesse informazioni, differenti modalità di presentazione. 20 CMS – Presentazione Questo permette di suddividere i ruoli concorrenti alla realizzazione di un sito web; mentre nel web statico le informazioni erano strettamente legate all’HTML e CSS, costringendo l’amministratore ad operare contemporaneamente sui dati e sulla loro presentazione grafica, attraverso software come Dreamweaver e Frontpage. Ora questa separazione permette di delimitare correttamente il ruolo di Autore dei contenuti da quello del Web designer. 21 CMS – Autore vs Designer L’Autore avrà accesso ad una piattaforma di gestione dei contenuto autonoma creata ad hoc dal Web Designer. Il Web Designer, grafico esperto e conoscitore dei linguaggi di programmazione, potrà invece occuparsi della creazione/modifica del template vero e proprio, senza dover effettuare questa operazione ogniqualvolta venga inserito un nuovo contenuto. 22 CMS – Autore vs Designer Affinchè ciò sia possibile il Web Designer dovrà prevedere un’alta modularità ed adattabilità grafica, al fine di essere suitabile alle esigenze di quelli che saranno poi gli utenti del sistema. Fortunatamente la maggior parte dei CMS supportano nativamente funzionalità adatte a soddisfare tali necessità. 23 CMS – Riuso Da notare come la separazione tra dati e template favorisca il riuso degli stessi dati, per poter essere fruibili su diverse piattaforme, consultando un articolo su un dispositivo mobile o tablet fornendo una grafica più adatta alle dimensioni ridotte di tali dispositivi, oppure fornendo dei feed RSS che prevedono l’utilizzo dei dati puri senza l’apporto di alcuna aggiunta grafica. 24 CMS – Riuso Dunque in poche parole attraverso l’utilizzo di un CMS tutta l’interazione con il sistema viene resa disponibile ad un altissimo livello di interazione, non bisogna preoccuparsi di gestire i server, aggiornare il software, gestire le revisione ed i backups, etc. 25 CMS – Riepilogo 2 Tuttavia ciò comporta non solo vantaggi, vi sono anche notevoli svantaggi: Un contenuto web generato dinamicamente può dare un impatto significativo sulle performance del server web, riducendo la scalabilità del sito web e creando vulnerabilità all’interno del sistema. Ciò deve essere preso in considerazione dai programmatori del sistema quanto dagli amministratori del sistema, in modo da ovviare a tali problematiche. 26 CMS - Confronto I CMS, com’è facile intuire, sono molti oggi sul mercato e presentano molte caratteristiche in comune. Sebbene sia semplice capire quale prodotto abbia il più gran numero di funzioni, risulta ben più arduo comprendere quale di essi abbia le funzionalità di cui necessitiamo! 27 CMS - Confronto Questo fenomeno è per lo più dovuto dal fatto che una volta creato un archetipo funzionante e comunemente accettato dall’utenza, difficilmente esso può essere spezzato, dal momento che ciò creerebbe confusione nell’utente che, vedendosi costretto a dover reimparare daccapo qualcosa che sa già fare, molto molto molto molto molto probabilmente rifiuterebbe la nuova soluzione, specialmente in presenza di curve di apprendimento molto rigide. 28 CMS - Confronto Proseguiamo conoscendo alcuni dei CMS più utilizzati, variando dall’ambito applicativo generico ad alcuni sistemi che hanno scelto di specializzarsi garantendo funzionalità per il Business o per l’E-commerce, al fine di ritagliarsi una mirata fetta di Utenza ed in particolare di mercato. 29 ALFRESCO Sviluppato in Java, nato per l’enterprise ed utilizzato per la gestione di contenuti aziendali, condivisione di documenti e la collaborazione tra gli utenti. Nel caso non fossero sufficienti, le funzionalità, possono essere ampliate tramite Add-ons. L’aspetto Grafico risulta più rigido di altri suoi concorrenti, mentre più attenzione si pone nei ruoli, suddivisi in gruppi, che devono spesso rispecchiare ruoli aziendali preesistenti. 30 DRUPAL CMS open source, sviluppato in PHP, basato su un elevata personalizzazione del sistema, sovrascrivendo il core, oppure aggiungendo moduli, messi a disposizione ed aggiornati dalla community. I contenuti sono suddivisi in pagine, documenti fissi, e storie, contenuti aggiornabili come le news. L’aspetto grafico è gestito in temi, la gestione degli utenti è effettuata in ruoli, che determinano i permessi di accesso al sistema. 31 JAHIA Sviluppato in JAVA, pensato per l’enterprise con una particolare attenzione al social e al mobile. Fornisce strumenti come Jahia Studio per strutturare i template e le apps, ponendosi come singolo strumento in grado di radunare tutte le funzionalità richieste, ad esempio emulando come il sito apparirebbe su diversi dispositivi. La gestione degli utenti avviene tramite ruoli, e a tal scopo è stata introdotta la possibilità di emulare la visione del singolo utente. 32 JOOMLA! CMS open source sviluppato in PHP utilizzando la programmazione ad oggetti (OOP). E’ il secondo CMS più utilizzato al mondo. Sono nativamente presenti componenti per creare a gestire i contenuti, ed è in seguito possibile estendere queste funzionalità tramite plugins come ad esempio editor di testo avanzati. La grafica è gestita tramite template e la gestione degli utenti è stata recentemente migliorata con l’introduzione dei ruoli. 33 MAGENTO CMS, sviluppato in PHP, ideato per l’e-commerce, con svariati strumenti di marketing e gestione di un negozio online, ad esempio da pannello di controllo è possibile gestire informazioni riguardanti la spedizione della merce. La grafica, organizzata in temi, include funzionalità quali la scelta del logo del negozio. Mentre l’utenza è legata all’archetipo venditorecompratore, un’organizzazione ben più elaborata in gruppi può essere fatta per quanto riguarda la merce. 34 WORDPRESS CMS open source, sviluppato in PHP. E’ il CMS più utilizzato al mondo. Nasce come un sistema per il blogging, ma grazie alla sua estendibilità è ormai limitato alla sola immaginazione dell’utilizzatore. Le sue funzionalità possono infatti essere facilmente estese da plugin resi disponibili dalla community, o da widgets, piccoli moduli che offrono le funzionalità del drag ‘n drop. La grafica è gestita tramite temi e la gestione degli utenti viene eseguita tramite ruoli. 35 XOOPS CMS open source, sviluppato in linguaggio PHP, basato sul minimalismo, dopo l’installazione ci si ritrova infatti davanti ad una home page quasi vuota. Le funzionalità sono infatti inizialmente limitate al solo accesso dell’admin, e possono essere estese tramite appositi moduli. La grafica è gestita tramite temi, e la gestione degli utenti è eseguita tramite una suddivisione in gruppi, con due livelli di permessi, il livello kernel ed il livello modulo. 36 CMS – Considerazioni Come annunciato abbiamo visto che l’archetipo della suddivisione d’utenza in Ruoli è molto utilizzato, come anche la gestione della grafica in template tramite una suddivisione dei Contenuti e della loro Presentazione, la quale è una caratteristica ormai ben fondata nel concetto di sistemi CMS. 37 CMS – Considerazioni Allo stesso modo i CMS presentano la caratteristica comune di fornire un alta estendibilità del sistema tramite plugin, che vanno ad aggiungersi alla suite di funzionalità iniziali. Ma com’è possibile che siano presenti plugin per tutto ciò che potrebbe desiderare un Web Designer, che essi vengano testati, aggiornati e che ne vengano rilasciati di nuovi stando al passo con i tempi? 38 CMS – Open Source Come anticipato in alcuni dei CMS quali Drupal, Wordpress e Joomla e Xoops, si ha un perfetto esempio di come la politica Open Source dia i propri frutti. Tuttavia rimangono Alfresco, Jahia e Magento, su un vecchio approccio del software a pagamento. 39 CMS – Open Source Tuttavia dal momento che sono CMS utilizzati da grandi aziende per scopi ben precisi, non sorgono grossi problemi. Per chiarirci, un Web Designer che si approccia alla creazione di una pagina di vendita e-commerce, non avrà bisogno di molti strumenti se non quelli forniti dal sistema stesso, come ad esempio un integrazione maggiore dei Contenuti all’interno di un carrello virtuale. 40 Drupal Adesso concentriamoci sul CMS Drupal, vedendo rapidamente le sue caratteristiche principali, e confrontandolo ai CMS concorrenti. 41 Drupal – Come funziona Gli Hook Sono composti dal nome del modulo seguito dal nome dell’hook come segue: nomemodulo_user(…) nomemodulo_nodeapi(…) nomemodulo_load(…) Esempio di implementazione di un hook nomemodulo_taxonomy(…) 42 Drupal – Come funziona Sono funzioni di callback scatenate dal sistema all’accadere di determinati eventi. Il nome dell’hook viene utilizzato per determinare quale hook attivare. Esempio di implementazione di un hook 43 Drupal – Dettagli funzionali I Form Vengono strutturati come array e non richiedono definizioni del codice di markup, dal momento che è il sistema stesso a validarli Vengono gestiti tramite l’uso di hook. /** * Implementazione dell’ hook_form_alter(). */ function nomemodulo_form_alter($form, $form_state, $form_id) { // Aggiungi node-form info $form[’name’] = array( ‘#type’ => ‘select’, ‘#title’ => t(‘Title’), ‘#description’ => t(‘Description’), ‘#required’ => TRUE, ‘#options’ => array( ‘value1’ => t(‘Description 1’), ‘value2’ => t(‘Description 2’), ‘value3’ => t(‘Description 3’), ), ); } Implementazione dell’hook_form_alter /** * Implementazione dell’ hook_validate(). */ function nomemodulo_validate($form, $form_elements) { if($form_elements[‘age’] < 18) { form_set_error(‘age’, t(‘Devi essere maggiorenne.’)); } } Implementazione dell’hook_validate 44 Drupal – Dettagli funzionali L’interfacciamento con il Database avviene tramite un livello di astrazione chiamato Data Base Layer (DBL) che si occupa di gestirne la struttura e le chiamate di scrittura e lettura. $results= db_query(“SELECT * FROM (tabella) WHERE id < %id”, $id_limit); while ($row = db_fetch_object($results)) { $output .= $row -> id; $output .= $row-> txt; $output .= $row-> bool; } Esempio di un estrazione di dati dal DB I Database supportati da Drupal 45 Drupal – Dettagli funzionali Operazione di update di un campo all’interno di una tabella usando le funzioni del DB: $data = new stdClass(); $data-< id =25; $results= db_query(“SELECT * FROM (tabella) WHERE id < %id”, $id_limit); while ($row = db_fetch_object($results)) { $output .= $row -> id; $output .= $row-> txt; $output .= $row-> bool; } Esempio di un estrazione di dati dal DB $data->txt = ”text here”; $data-> bool = FALSE; Drupal_write_record (‘tabella’, $data, array(‘id’)); I Database supportati da Drupal 46 Drupal – Dettagli funzionali Nel 2013 quasi un milione di aziende fa ha utilizzato Drupal. Queste includono centinaia di rinomate organizzazioni, includendo corporazioni, compagnie pubblicitarie e di informazione, governi, associazioni non-profit, scuole e privati. 47 Drupal – Casi d’uso Ecco alcuni esempi messi in evidenza del team di Drupal: • Whitehouse (Governativo) - http://www.whitehouse.gov/; 48 Drupal – Casi d’uso Ecco alcuni esempi messi in evidenza del team di Drupal: • Nazioni Unite (Governativo) - http://www.fighthunger.org/ • NASA (Governativo) - http://nasa.gov/; • Greenpeace (Org. Non-Profit) http://www.greenpeace.org.uk/ • Open Source Initiative (OSI) - http://opensource.org/ • Discovery Channel (Educazione) - http://discoveryclub.de/ 49 Drupal – Casi d’uso Ecco alcuni esempi messi in evidenza del team di Drupal: • Ubuntu (Distribuzione Linux) - http://ubuntu.com/ • Eclispe (Programmazione) - http://live.eclipse.org/ • Sony Musicbox (Musica) - http://musicbox.sonybmg.com/ • Playstation (Intrattenimento) - http://asia.playstation.com • SecondLife (Social) - http://teen.secondlife.com 50 Drupal - Idee per migliorare Migliorare la fase di sviluppo, concentrandosi sugli strumenti di testing, ad esempio integrando funzioni quali l’emulazione del sito su diversi dispositivi. Un’altra idea è quella di permettere all’utente di poter editare i contenuti in tempo reale, senza dover per forza accedere alla schermata di editing. 51 Drupal - Idee per migliorare Fornire maggiore integrazione nei confronti del mobile, sfruttando meccanismi in grado di produrre codice HTML5 in output, rendendo il sistema più agile, permettendo la sua visualizzazione anche su dispositivi che non supportano FLASH. Migliorare il Multilanguage, il quale dovrebbe essere più curato, a partire dall’instal-lazione, inizialmente unica-mente in inglese a meno di non scaricare pacchetti aggiuntivi. 52 Drupal - Idee per migliorare Riconsiderare il Development, infatti la natura friendly del sistema viene pagata a caro prezzo con un eccessivo livello di astrazione; Molto tempo viene inoltre perso quando nuove versioni vengono rilasciate, dal momento che molte API cambiano ed i moduli devono essere aggiornati alla nuova versione. Questi difetti dovrebbero essere eliminati, dal momento che rendono Drupal inaccessibile a molte aziende, che nascono come start-up e vorrebbero sfruttare appieno la programmazione agile. 53 Conclusioni Drupal, nei confronti dei sistemi concorrenti, è dunque in grado di offrire una vasta gamma di funzionalità che lo pongono come una soluzione adatta ad applicarsi ad ogni tipo di progetto web. 54 Conclusioni Nonostante ciò, sebbene sia uno dei CMS più utilizzati al mondo, esso non è privo di difetti, legati principalmente al core eccessivamente astratto e ad un mancata sensibilità nei confronti delle funzionalità più moderne come ad esempio il mobile. 55 Conclusioni Tuttavia sono sempre più forti le voci che acclamano il rilascio di una nuova versione, chiamate Drupal 8, la quale è già da un anno in fase di testing e promette di rivoluzionare il futuro dei CMS. 56