Sembra davvero lontano il tempo in cui un sito Web dinamico poteva essere realizzato con strumenti complessi e costosi. Oggi l'open source ha preso piede e offre soluzioni interessanti, dinamiche, fortemente stabili e semplici da utilizzare, proprio come Syntax Desktop. Vediamo allora come sfruttare al meglio le funzionalità di questo CMS "made in Italy", per creare e gestire in pochissimo tempo pagine Web dinamiche ricche di contenuti...
Syntax Desxtop è un sistema di gestione dei contenuti, professionale, open source, e per giunta in lingua italiana. Scritto in Php, gira in ambienti completamente free come Linux, Apache e MySQL, e può funzionare anche su componenti commerciali quali Windows, IIS, Oracle DB e MS Access. Ma c'è di più: Syntax Desktop non necessita la conoscenza del linguaggio HTML. Particolare importanza poi riveste la presenza di un editor WYSIWYG integrato (Figura 1), la cui interfaccia utente, simile a quella delle popolarissime applicazioni Microsoft Office, aiuta l'utente a creare agevolmente i contenuti che si intendono realizzare. Inoltre, un template engine gestisce tutte le parti del sito, in modo da consentire il raggiungimento di un controllo completo dell'applicazione. Syntax, poi, è stato progettato per generare pagine "amiche" dei motori di ricerca: in tal senso, può essere agevolmente indicizzato dagli engine più popolari.
Figura 1 - L'editor WYSIWYG facilita la creazione di pagine ricche di contenuti
L'INSTALLAZIONE
La procedura d'installazione è molto semplice. Basta copiare i file del pacchetto nella document root del Web Server. È importante poi ricordarsi di assegnare i permessi di scrittura alle directory modules/dump/backup (per consentire di salvare i dump del database), config/cfg.php (per poter modificare il file di configurazione), e modules/aa/custom (per generare i file service da poter personalizzare). È necessario poi configurare il database, per memorizzare in maniera adeguata i contenuti che saranno richiamati per essere pubblicati. A questo proposito, Syntax usa il layer AdoDB che permette la connessione a diversi tipi di database: quello più usato e consigliabile è senz'altro MySql, ma se ne potrebbero utilizzare anche altri: è importante, in ogni caso, configurare manualmente il file config/cfg.php. Se le operazioni di configurazione sono andate a buon fine, visualizzando col browser la pagina index.php nella root dell'applicazione l'avventura con Syntax potrà finalmente partire. Se tutti i parametri di accesso al DB sono corretti, Syntax ci chiederà di scegliere il dump da caricare sul nostro database. Altrimenti, ci chiederà di riconfigurarne i parametri d'accesso.
ALL'INTERNO DELL'ENGINE
L'interfaccia operativa è divisa in aree, a partire da Menu, all'interno della quale possiamo scegliere i servizi da eseguire. Il menu si caratterizza per la struttura ad albero, che può ospitare al proprio interno voci singole e, ricorsivamente, dei sottomenu contenenti a loro volta altre voci. Dal punto di vista tecnico, un widget DHTML gestisce questo componente, ma garantisce la compatibilità solo verso Internet Explorer, senza assicurarla per altri browser. Abbiamo poi un orologio e un desktop: quest'ultima è la scrivania vera e propria, all'interno della quale verranno caricati e visualizzati i pannelli di controllo delle varie aree del sito che ospitano i singoli servizi. Proseguendo, abbiamo poi i dati account, ossia quelli con cui ci si è autenticati, che riportano il gruppo di appartenenza dell'utente, mentre con il pulsante Logoff possiamo uscire dall'amministrazione. Ciò che colpisce in prima battuta è la struttura di tipo modulare del prodotto. Ciascun modulo ha funzionalità proprie, e i file che lo caratterizzano sono memorizzati in directory interne alla cartella /modules. Nella sua configurazione standard, il prodotto offre 9 diversi moduli, a partire da aa (acronimo di AutoAdmin), che si configura come il modulo principale dell'intera applicazione. Il modulo in questione ha lo scopo di interfacciarsi con il database che alimenta il content e gestisce i dati utente e di sistema. In particolare, questi ultimi comprendono l'anagrafica utente-gruppi, nonché la struttura dei servizi e quella dei menu di ciascun utente. Ai dati utente appartengono invece tutte le informazioni che l'utente definisce e che deve gestire, come ad esempio le news, gli articoli, gli appuntamenti e in generale ogni tipo di informazione che caratterizza il contenuto del portale gestito con Syntax. Proseguendo, il modulo config ha il compito di gestire la configurazione del sistema: esso, infatti, non solo regola la natura dei dati di connessione al database, ma apre, legge, e salva il file /config/cfg.php, avendo così bisogno dei permessi di scrittura su quel file. Al modulo credits appartengono invece tutte le pagine dei crediti, che potranno essere corredate da immagini, disponibili in una apposita sottofolder, mentre la cartella dump ospita il modulo dedito al salvataggio del database (index.php) e del suo ripristino (dosql.php). Il modulo filemanager, disponibile nella cartella omonima, è invece pensato come web-ftp, ed è ancora da sviluppare, mentre le pagine di help sono ospitate nella directory omonima. Proseguendo, login è il modulo che gestisce l'autenticazione utente, e shell quello che contiene l'implementazione di una shell via Web. Infine, la cartella windows ospita il modulo che gestisce le icone e finestre dhtml sul desktop di Syntax.
IL MODULO AUTOADMIN
Il vero cuore dell'applicazione è il modulo AutoAdmin: lo strumento per la generazione dei servizi che attivano l'intero sistema di content. Questo comporta, in generale, una serie di operazioni, tutte trasparenti all'utente. Anzitutto, la creazione di una tabella sul database con i rispettivi campi, quindi il salvataggio della struttura del servizio in apposite tabelle del database per una futura modifica del servizio stesso, e infine, per mezzo delle informazioni sulla struttura del servizio, la visualizzazione dell'interfaccia, generata in modo dinamico, per la gestione dei dati. Restiamo sull'interfaccia, per esplorare quella del modulo di amministrazione. Essa è stata sviluppata in frame per renderla più leggera e facilmente ricaricabile. Il frame principale è quello content, al cui interno sono istanziate le classi che muovono l'applicazione: esse, fisicamente posizionate nella sottocartella classes della directory aa, comprendono la classe SynContainer, che ha lo scopo di raggruppare le varie componenti del servizio e di fornire metodi comuni di gestione. In particolare, ciascun elemento di tipo SynContainer contiene uno o più elementi (SynElement), distinti in base alla particolare funzione da essi implementata: uno (synDate) si occupa delle date, un altro (syn- Password) delle password, e così via, utilizzando opportuni metodi per visualizzare i dati. Schematizzando questa situazione da un punto di vista logico, otteniamo una facile trasposizione in logica database, dove ogni synContainer rappresenta una tabella e i singoli synElement sono i suoi campi. Questo significa che ciascuna operazione effettuata sui synElement si ripercuoterà sul synContainer relativo: aggiungendo o rimuovendo un synElement dal synContainer, accadrà lo stesso anche sul database, che quindi altererà la propria struttura. È anche chiaro che se si aggiunge o si cancella un synContainer, si aggiungerà o cancellerà una tabella sul database.
IL SISTEMA UTENTI-GRUPPI-SERVIZI
Le attività all'interno di Syntax Desktop sono regolate da un sistema che fa capo a tre componenti essenziali: utenti, gruppi e servizi. Alla prima categoria appartengono le diverse entità che solitamente fanno capo ad una persona fisica, e che consentono di personalizzare gli accessi al sistema. Come è facile intuire, ciascun utente possiede una username ed una password che gli consentono di accedere al sistema (Figura 2).
Figura 2 - Gli amministratori possono gestire utenti e gruppi dall'area di gestione
Ogni sessione operativa farà capo ad un singolo utente: tutte le attività eseguite da ciascun utente sono ovviamente memorizzate all'interno del database, per cui è facile risalire ad un report che tenga traccia dell'intero log operativo eseguito da ciascun utente in un range temporale ben definito. Più utenti fanno un gruppo, e in Syntax Desktop i gruppi sono adoperati allo scopo di aggregare gli utenti che possono essere associati in base ad una o più caratteristiche simili. La logica dei gruppi è adoperata allo scopo di fornire menu personalizzati, con funzionalità e livelli di accesso comuni: per gestire la configurazione dei menu da assegnare a ciascun gruppo, basterà cliccare sul pulsante che abilita la modifica dei permessi (Figura 3).
Figura 3 - Un nuovo gruppo figura come nuova voce all'elenco degli item presenti
Proseguendo, i servizi definiscono i motori di gestione di un particolare contenuto. Questo significa allora che i servizi hanno il compito di gestire la parte più importante del sito, ossia le componenti ad alto tasso di dinamismo come per esempio le news, il registro degli iscritti e così via. I servizi sono organizzati in una struttura ad albero e vengono assegnati ai singoli gruppi sotto forma di voci del menu. Ogni gruppo ha un proprio menu che può essere personalizzato dall'amministratore. Tale menu conterrà i servizi che sono abilitati al gruppo di utenti. Tanto per fare un esempio, se si definirà un gruppo di autori, da popolare con gli account di utenti che hanno il compito di alimentare il sito con le notizie da pubblicare al suo interno, vorrà dire che il gruppo avrà a proprio carico un menu al cui interno saranno presenti i servizi per la gestione dei documenti (articoli, news, editoriali) da pubblicare. Operativamente parlando, in Syntax Desktop questa serie di azioni è implementata creando anzitutto un nuovo gruppo di utenti chiamato Autori: per farlo, attraverso un clic su Amministrazione portiamoci in corrispondenza del relativo menu, e da qui selezioniamo Gruppi/Menu. La nuova finestra ci mostra la lista dei gruppi di utenti presenti nel sistema: nella barra destra, scegliamo poi l'icona di creazione di un nuovo gruppo (la prima della serie, quella caratterizzata dal foglio bianco), e in corrispondenza del modulo di inserimento dati: nel campo Nome inseriamo la scritta Autori confermando poi l'operazione con un clic sul pulsante Save and Exit (Figura 4).
Figura 4 - Un nuovo gruppo può essere popolato con uno o più item
A questo punto, il gruppo è ancora un contenitore vuoto: per animarlo, occorrerà assegnargli i servizi. Procediamo perciò con un check in corrispondenza della riga relativa al gruppo che abbiamo appena creato, e selezioniamo il pulsante della colonna menu: l'operazione ci porterà all'interno della pagina degli item relativi al gruppo. La finestra è simile a quella già vista in precedenza, anche perché è presente ancora la barra a destra dello schermo. Cliccando sull'icona Nuovo creeremo stavolta non un nuovo gruppo, ma una nuova voce che sarà attribuita al gruppo stesso, e che assegneremo ad uno dei servizi già esistenti, News. Nel modulo di immissione dati che apparirà di conseguenza, riempiamo i campi con il valore Gestione news assegnato alla voce Nome, quello News selezionato per la voce Servizio, e 1 per Posizione (per caratterizzare l'ordine di comparsa all'interno del menu). Lasceremo poi in bianco il campo Link (che potrà ospitare il riferimento ad un'url), e pure Filtro SQL, per non filtrare le righe risultanti dalla query di select, e per Parent manterremo la selezione su [No Parent], in modo da definire il posizionamento della nuova voce di menu. Potremo poi scegliere un'icona da associare all'item in creazione, e decidere se attivare o meno i check relativi alle voci Ins, Mod e Canc, rispettivamente per abilitare o meno l'inserimento, la modifica e la cancellazione dei record nuovi ed esistenti, mentre per mantenere le impostazioni definite occorrerà confermare con un clic sul tasto di salvataggio (Save and Exit nella versione in nostro possesso).
COME CREARE NUOVI CONTENUTI
La creazione di un nuovo utente (Figura 5) avrà invece luogo partendo ancora dal menu Amministrazione ma scegliendo la voce Utenti e cliccando sull'icona Nuovo documento (sempre nella toolbar a destra della finestra). Inseriremo quindi in modo opportuno i valori per i campi Login, Password, Gruppo (con il valore relativo al gruppo appena creato), Tema dell'interfaccia e Lingua: potremo anche decidere che l'utente dipenda da un responsabile, che sceglieremo tra quelli disponibili al momento, mentre per confermare l'inserimento occorrerà cliccare ancora sul pulsante di salvataggio. Il nuovo utente, quindi, non soltanto sarà abilitato all'ingresso nel sistema, ma, volendo, avrà anche la possibilità di gestire l'area del sito relativa al gruppo a cui appartiene.
Figura 5 - Un utente può essere modificato intervenendo sulle sue proprietà
LA GESTIONE DELLE PAGINE
Il cuore operativo di Syntax Desktop è rappresentato dal sistema di gestione delle pagine che popolano il sito in fase di creazione ed evoluzione. Da un punto di vista di organizzazione logica, distinguiamo tra template e pagine, dove le prime rappresentano i modelli a cui dovranno ispirarsi le seconde, che a loro volta saranno depositarie dei contenuti. All'interno di ciascuna pagina è possibile inserire un contenuto grazie alla comodità dell'editor WYSIWYG. Una volta terminato l'editing dei contenuti per la pagina corrente, potremo compilarla: al momento della compilazione, per ciascuna pagina sarà creata una directory che ha lo stesso nome della pagina, e al cui interno saranno ospitati un file index.php che conterrà il testo della pagina e ogni eventuale componente integrato alla pagina stessa. Ciascun template, invece, è gestito dal motore smarty.php.net, e come tale supporta tutti i tag specifici di smarty. Il template può essere scelto tra i file della directory /public/template/ oppure può essere creato utilizzando l'editor disponibile in Syntax: in quest'ultimo caso, la notazione prevede che il template sia racchiuso tra due righe di comando, per esempio:
{include file="header.tpl" }
....template....
{include file="footer.tpl"}
Dove header.tpl è un file inserito nella directory /public/template/ che contiene l'header (<html><head>....</head><body>) di un file html, mentre footer.tpl è il file che contiene la chiusura del file html (</body></html>). Possiamo gestire la struttura delle pagine utilizzando la treeview visibile nella parte sinistra del desktop (Figura 6).
Figura 6 - Dalla pagina che caratterizza un template, si può modificarne il codice
È supportato il drag 'n drop delle pagine, per strutturare meglio il sito, mentre per validare le modifiche effettuate è opportuno prima compilare e poi salvare, adoperando i tasti relativi. Ciascun template gestisce l'uso di tag specifici che poi il motore Smarty interpreterà opportunamente. I tag in questione hanno la seguente forma:
{nomefunzione parametro1="valore1" parametro2="valore2"}
dove nomefunzione è il nome della funzione da richiamare, accompagnata dai riferimenti ai relativi parametri adeguatamente valorizzati. Le funzioni risiedono nella directory /public/ plugin e vengono caricate automaticamente da Smarty. Per creare nuove funzioni basta inserire un nuovo file all'interno di questa directory col nome di function.nomefunzione. php. Tra le funzioni già presenti e utilizzabili per il sito, sono da citare {menu}, che restituisce la lista delle pagine, {page}, che inserisce il contenuto della pagina, {news}, che inserisce il contenuto della news, e {listaNews}, che elenca le ultime 3 news pubblicate.
CREARE UN NUOVO SERVIZIO
I servizi vengono assegnati ai singoli gruppi sotto forma di voci del menu. Per crearne di personalizzati che implementino le funzionalità desiderate occorre portarsi nella pagina che raggruppa l'elenco dei servizi disponibili, raggiungibile dalla voce Servizi del menu Amministrazione (Figura 7).
Figura 7- Per creare un servizio si specifica il riferimento ad una tabella del DB
L'elenco mostra per ciascuna voce una serie di proprietà, dal nome al path, alla tabella sul DB che contiene la struttura e i dati gestiti dal servizio. L'elemento più importante del gruppo è senz'altro Service-o-matic, poiché è lui a generare gli altri servizi in modo automatico. In particolare, Serviceo- matic è in grado di generare fisicamente un file php modificabile poi manualmente da utenti esperti. Normalmente Service-o-matic non genera il file ma la visualizzazione del servizio avviene in modo dinamico sulla base della struttura del servizio presente sul database. È importante poi rilevare la presenza del campo DB sync, che ha la funzione di sincronizzare la struttura del servizio con la tabella nel DB. Se è spuntata, allinea i campi nel database con la struttura imposta al servizio: va perciò usata con estrema attenzione, perchè modifica la struttura delle tabelle. Procediamo, ad esempio, alla creazione di un nuovo servizio per la gestione degli articoli di un negozio. Clicchiamo perciò ancora sull'icona Nuovo documento e attendiamo il caricamento di una nuova schermata, che avrà campi obbligatori (in rosso) e altri opzionali. In Name specifichiamo il nome del servizio, in Table quello della tabella sul database a cui vogliamo che il nuovo servizio faccia riferimento (lasciando il campo in bianco, la nuova tabella sul database avrà lo stesso nome del servizio). In Description specifichiamo un testo descrittivo, mentre in Parameters il numero di parametri (campi) da gestire (teniamo presente la necessità di un campo chiave per identificare le righe). Nel nostro caso, considerando i campi id, nome, descrizione e costo, i parametri saranno 4. Il campo Database Sync sarà relativo alla sincronizzazione del DB, da abilitare o meno con un check del mouse. Poiché può generare una tabella sul DB con una nuova struttura che sarà dettagliata a breve, è consigliabile non spuntare la casella che la caratterizza se si dispone già di una tabella popolata di dati: in tal caso, si dovrà modellare il servizio in base alla tabella in questione. Possiamo poi associare al servizio un'icona tra quelle disponibili, con un semplice clic su una tra quelle presenti. Proseguiamo cliccando su Forward, e nella pagina seguente specializziamo i parametri del servizio, definendo in ogni riga nome del campo, tipo, etichetta, testo descrittivo, e così via. Potremo anche far generare in automatico un file php che contiene il motore per la gestione del servizio. Al termine, ci verrà chiesto a quale gruppo aggiungere il servizio appena creato. Il nuovo servizio potrà essere agevolmente modificato in qualsiasi momento.
Per provare il CMS basta cliccare qui e accedere all'area di amministrazione con username root e password syntax.