Versione documento: 1.0 - Ultima modifica 2007-09-04
Copyright (c) 2007 Marcello Verona <marcelloverona@gmail.com>
Permission is granted to copy,
distribute and/or modify this document under the terms of the GNU
Free Documentation License, Version 1.2 or any later version
published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of
the license is included in the section entitled "GNU Free
Documentation License".
VFront è un software rilasciato sotto licenza GPL 2.0 Per maggiori informazioni sulla licenze si rimanda al file LICENSE distribuito insieme a questa documentazione oppure su http://www.gnu.org/copyleft/gpl.html
VFront è un front-end web based per database MySQL o PostgreSQL.
Su VFront i diritti sono definiti dal gruppo di appartenenza ed il livello di amministrazione.
I livelli di amministrazione sono tre. Verranno qui descritti i ruoli con specifico riferimento all’ente o organizzazione in cui VFront è utilizzato:
Competenze e conoscenze:
Mansioni e responsabilità:
Identificazione con il ruolo nell’ente/organizzazione:
Può essere un sistemista o un DB administrator dell’ente/organizzazione.
Competenze e conoscenze:
Mansioni e responsabilità:
Identificazione con il ruolo nell’ente/organizzazione:
Può essere un referente di progetto dell’ente/organizzazione o un utente esperto con il mandato di gestire il gruppo di lavoro.
Competenze e conoscenze:
Mansioni e responsabilità:
Identificazione con il ruolo nell’ente/organizzazione:
Può essere un dipendente di qualsiasi ruolo/inquadramento che debba/possa accedere ai dati.
Rubando la forma del titolo di questo paragrafo da Asimov, sono qui enunciati i principi generali secondo i quali si è cercato di sviluppare VFront:
VFront è un’applicazione web con le seguenti caratteristiche lato server:
Per maggiori informazioni leggere anche la Guida all’installazione.
VFront fa un grande uso di Javascript. Non è possibile utilizzare VFront senza javascript attivato: sarebbe completamente inanimato e passerebbe la stessa differenza che c’è tra un pezzo di legno e Pinocchio (quindi, come qualcuno ha rilevato, se ne deduce che Pinocchio è scritto in Javascript ;-).
Tuttavia sono stati fatti sforzi affinché l’applicazione funzioni correttamente con diversi browser: i browser attualmente testati con successo ad oggi sono:
I browser parzialmente supportati sono:
Il supporto per Safari non è ancora stato testato. Allo stato attuale si consiglia agli utenti Mac di utilizzare VFront con Firefox.
La struttura della directory di VFront è così formata:
ROOT_VFRONT
Alcune cartelle devono essere attribuite ad Apache: nello specifico HTML, FILES (e sottocartelle), TMP. Per ulteriori informazioni si veda la Guida all’installazione.
Le cartelle con l’underscore davanti non sono fondamentali per il funzionamento dell’applicazione: _DOCS contiene la documentazione e _INSTALL contiene le procedure di installazione. Si consiglia caldamente di cancellare la cartella _INSTALL dopo l’installazione.
ADMIN contiene gli script relativi all’area di amministrazione.
CONF contiene il file di configurazione. Può essere una buona idea spostarlo al di fuori dell’area sottoposta a browsing.
FILES contiene gli allegati che si genereranno qualora si abilitasse l’uso degli allegati per le tabelle. Gli allegati sono qui salvati come n.dat, dove n indica il valore della chiava primaria della tabella allegato.
Le sottocartelle di files sono DOCS, per la documentazione personale, TMP, per alcune operazioni di VFront e XLS_CUSTOM, dove vengono salvati il file XSL e XSL-FO personali (si veda la sezione relativa ai report).
HTML è la cartella dove possono vengono salvati dei file HTML che contengono le ”tendine” con i valori dei campi di tipo ”select_from”. E’ utile per l’ottimizzazione delle prestazioni di VFront. Si veda l’impostazione dei campi per maggiori informazioni. Si può periodicamente svuotare.
IMG contiene le immagini dell’applicazione (icone, sfondi, etc.)
INC contiene i file di inclusione degli script, come i file di funzioni e molto altro.
JS contiene gli script Javascript e numerose cartelle di framework sviluppati da terze parti. Si veda 13 nella pagina § per ulteriori informazioni.
PLUGINS contiene alcuni script, come i file utilizzati per la generazione di Open Document (cartella ODS) e FCKEDITOR contiene l’omonima applicazione, utilizzata opzionalmente per i campi di testo ”richtext”.
STATS contiene gli script relativi alle statistiche.
STY è la cartella che contiene i fogli di stile css.
TMP è una cartella temporanea per varie operazioni svolte da VFront. Può essere periodicamente svuotata.
La cartella USR può essere utile per script personali per chi vuole aggiungere funzioni a VFront.
XML infine contiene script relativi all’XML e alle trasformazioni XSL.
VFront funziona mediante un sistema di regole o “registri di regole” che si interpone fra l’interfaccia utente ed il database di dati. Questo sistema, permette di configurare regole di accesso alle tabelle, alle viste e ai singoli campi, mediante vincoli e formattazioni speciali configurabili dall’amministratore tramite una interfaccia apposita.
E’ possibile impostare campi con ricerca, campi obbligatori, tipo di input per il singolo campo e molto altro in modo personalizzato per ogni gruppo per un numero indefinito di gruppi. Si noti inoltre che tutte le regole vengono scritte in un database separato da quello dei dati, in modo da non interferire in alcun modo con la struttura di quest’ultimo.
Ci riferiremo ai due database denominandoli DB dati (il database del quale VFront sarà front-end) e DB regole o DB VFront.
VFront, in altri termini, permette di creare un ulteriore sistema di controllo sui dati, oltre a quello normalmente predisposto da un database relazionale come MySQL 5 o PostgreSQL 8, con in più la personalizzazione a livello di gruppo di utenti.
Ogni utente è inserito in uno ed un solo gruppo e per ogni gruppo c’è un sistema di regole. Sarà possibile ad esempio, mostrare alcune tabelle in sola lettura per un gruppo di utenti; in lettura e scrittura ad un altro; lettura, scrittura e cancellazione ad un terzo, oppure mostrare un set di tabelle ridotto per un quarto gruppo.
L’utente che accede al sistema si troverà un’interfaccia con funzioni differenti su differenti tabelle a seconda che appartenga ad un gruppo con maggiori o minori diritti. E’ possibile inoltre impostare i singoli campi delle tabelle e le sotto-maschere visibili in base alle esigenze dei differenti gruppi di utenti.
E’ qui riportato lo schema del database di regole (DB VFront):
allegato
In questa tabella sono registrate le informazioni relative ai file allegati alle tabelle. I file non sono salvati in database ma nel filesystem. In database (in questa tabella) sono registrate solo le informazioni relative al collegamento del file al record ed alla tabella, il nome del file ed altre informazioni di servizio.
gruppo
E’ la tabella dove sono registrati e descritti i gruppi di accesso al front-end.
link
E’ la tabella dove sono registrate le informazioni relative ai link collegati ai record delle tabelle
log
Nella tabella log sono registrate tutte le operazioni di INSERT, UPDATE e DELETE che vengono eseguite sul database dati. La tabella log permette inoltre uno storico dei record con possibilità di ripristino su dati modificati o cancellati per sbaglio, anche dopo l’eliminazione fisica del dato dal disco. Si veda a riguardo il capitolo “Log e Ripristino dati”.
recordlock
E’ questa una tabella che permette la registrazione di accesso in modifica ai record del database dati, al fine di impedire l’accesso concorrente in modifica ad un record già sottoposto a modifica da altro utente.
registro_tab
Sono qui inserite le regole generali per ogni tabella, per ogni gruppo. La tabella in una prima configurazione del front-end legge l’information_schema di MySQL 5 e configura un primo gruppo predefinito. In questa tabella sono registrati i diritti di accessibilità della singola tabella per il singolo gruppo in SELECT, INSERT, UPDATE, DELETE nonché la esportabilità dei dati della tabella.
registro_col
Tabella figlia di registro_tab ed ad essa collegata tramite chiave esterna, sul campo id_table, questa tabella documenta i campi delle tabelle impostati per ogni gruppo. Sono qua configurate le opzioni di visualizzazione dei singoli campi, il tipo di input, il fatto che i campi siano o meno obbligatori, eccetera.
registro_submask
Collegata alla tabella registro_tab mediante chiave esterna sul campo id_table, registro_submask contiene le informazioni sulle sotto-maschere per ogni tabella, per ogni gruppo.
registro_submask_col
Collegata alla tabella registro_submask mediante chiave esterna sul campo id_submask, registro_submask_col descrive i singoli campi delle sotto-maschere, per ogni tabella, per ogni gruppo.
stat
sono qui registrate le query e le altre informazioni per le statistiche personalizzate.
utente sono qui registrati gli utenti ed il collegamento tramite chiave esterna (campo gid) alla tabella gruppo)
variabili
In questa tabella sono registrate delle variabili di ambiente. Queste possono essere generiche (per tutto l’ambiente VFront) o specifiche per un gruppo. In caso di coesistenza dei due tipi di variabili, quella specifica per il gruppo ha la priorità rispetto a quella generica. Si veda il capitolo “Variabili” per i dettagli.
xml_rules
In questa tabella sono registrate le informazioni per la generazione dei report.
Il processo di autenticazione è descritto in dettaglio anche nella Guida all’installazione.
L’accesso a VFront avviene attraverso autenticazione e accreditamento di diritti in passi separati. Questo implica che per l’autenticazione sia possibile utilizzare strumenti esterni (ad esempio directory LDAP o altri database), mentre l’accreditamento dei diritti avviene sempre mediante l’interrogazione del database di regole di VFront (tabella utente).
E’ possibile quindi autenticare gli utenti
Tutti i metodi descritti tranne il primo sono metodi "2 step" ossia autenticazione e accreditamento sono processi separati.
L’illustrazione mostra il processo di autenticazione a 2 step.
Come mostrato in figura, la procedura è la seguente: l’utente tenta l’autenticazione su VFront mediante email e password.
Sarà successivamente compito degli amministratori "promuovere" l’utente e/o attribuirlo al corretto gruppo di appartenenza.
VFront utilizza lo standard gettext per le traduzioni del codice PHP. Lo utilizza in due maniere possibili:
1. Modalità nativa, cioè mediante l'estensione
php_gettext. Per utilizzare questa modalità si veda il
riferimento sulla documentazione di php su http://it.php.net/manual/en/ref.gettext.php
2. Modalità interpretata mediante la libreria phpgettext, presente nella cartella plugins
VFront utilizza una o l'altra modalità automaticamente: se
è presente la modalità nativa, questa sarà
utilizzata prioritariamente (in quando dotata di migliori performance),
in caso contrario verrà utilizzata la modalità
interpretata.
Per quanto riguarda invece la traduzione del codice javascript, ossia
dei messaggi all'utente generati lato client, si è per ora
utilizzato un sistema di funzioni simili a gettext, ma con una
differente intepretazione.
Nel codice javascript i messaggi sono mandati mediante la funzione
standard di gettext, cioè ''_''. Ad esempio nel codice si
potrà trovare il messaggio _('Attenzione') che viene
interpretato da un file incluso che si trova dentro la directory
js/lang/ e si chiama vfront-en.js nel caso dell'inglese, vfront-fr.js
nel caso del francese, etc.
Questo sistema è sperimentale ed è possibile che in
futuro si utilizzi un sistema differente (magari più
standardizzato).
Per impostare una nuova lingua è necessario impostare la
costante FRONT_LANG nel file di configurazione. Per maggiori
informazioni si suggerisce di leggere la guida all'intallazione.
Per creare una nuova traduzione è necessario utilizzare i file
.po presenti nella directory locale/. Esiste anche un modello
(messages.pot) che si può utilizzare per creare una nuova
traduzione.
Sarà quindi necessario creare una nuova directory dentro locale,
una sottodirectory LC_MESSAGES e copiare il proprio file generato (.po
e .mo) dentro quest'ultima. I file di traduzione hanno nome messages.po
e messages.mo.
Per maggiori informazioni si veda il ramo delle directory delle lingue
presenti. La traduzione del javascript funziona invece mediante i file
presenti dentro js/lang/. Si prenda ad esempio il file vfront-en.js
come modello.
La scheda utente è il cuore di VFront. E’ attraverso questa maschera che vengono letti, inseriti, modificati e cancellati i record. Il funzionamento della scheda utente è documentato nel manuale d’uso per utente. In questo documento verranno esposti i dettagli tecnici. Per una documentazione rivolta all’uso si rimanda alla lettura del documento suddetto.
La scheda utente è in realtà un unico script con numerosi parametri che carica le impostazioni per ogni tabella dal registro di regole in base al gruppo con il quale si è fatto login. Può essere una pagina piuttosto pesante, specialmente se configurata con molti menù a tendina relativi a chiavi esterne (si veda l’amministrazione dei campi per i dettagli). In compenso viene caricata una sola volta per ogni tabella. Infatti lo scorrimento tra i record, avviene mediante chiamate XML asincrone del browser, tecnica nota anche come AJAX (Asynchronous Javascript and XML).
In pratica quando si avanza di un record la pagina non viene ricaricata come avviene nella maggior parte delle applicazioni web di concezione classica, ma viene mandata una chiamata nascosta al server, tramite Javascript.
Il server risponde mandando (sempre in modo invisibile all’utente) il dettaglio del record successivo in formato XML, il quale viene letto dal browser. A questo punto i contenuti andranno a popolare i box predisposti.
Anche la manipolazione dei record avviene nello stesso modo, con il vantaggio di ottimizzare le transazioni server/client limitandole allo stretto necessario. Ad esempio qualora si volesse modificare un record in una ipotetica tabella “notizia” e si apportasse solo una modifica al titolo, attraverso le chiamate AJAX non si spedirebbe anche la descrizione, la data ed i valori di tutti gli altri campi, ma solo il valore modificato, ossia il nuovo titolo. In questo modo il numero di byte spediti in ogni transazione viene ottimizzato.
Nelle maschere i record sono ordinati secondo un campo impostato dall’amministratore (si veda oltre la sezione di amministrazione).
La navigazione tra i record è possibile in due maniere. La più immediata avviene attraverso i tasti di navigazione presenti nella maschera (vedi figura 3). E’ possibile però saltare direttamente ad un record mediante doppio click sul contatore. Questo si trasformerà in una casella di testo nel quale si può scrivere il numero di record al quale si vuole saltare e confermare con il tasto invio. La casella che appare con il doppio click offre anche un’utile funzione nascosta per l’amministrazione. Se si conosce l’ID del record (il codice numerico chiave primaria) è possibile scrivere ad esempio id:418 e si salterà non al 418ř record, ma al record di ID 418 della tabella in oggetto.
Se si ha il diritto di creare, modificare e eliminare i record della tabella in esame, appariranno i pulsanti relativi alla creazione di record (Nuovo), alla modifica (Modifica) e all’eliminazione.
Per quanto riguarda la modifica è possibile che il sistema non permetta la modifica di un determinato record se qualche altro utente sta già operando modifiche sullo stesso. In tal caso appare un messaggio esplicativo. Il tempo per il quale un record resta bloccato dipende da un parametro impostato in numero di secondi nella tabella variabili. Di default questo parametro è stato settato su 240 secondi (4 minuti) ma si può modificare a scelta dell’amministratore. Naturalmente se l’utente che sta modificando il record dovesse premere “Annulla” o “Salva” il record verrebbe sbloccato anche se non sono passati i 240 secondi.
Per quanto riguarda l’eliminazione dei record può succedere che appaia un messaggio di errore se l’utente cercasse di eliminare un record con record figli, presenti nelle sotto-maschere. In tal caso è necessario eliminare tutti i record figli dalle sotto-maschere prima e poi il record dalla maschera.
Dalla vista scheda è possibile passare alla vista tabella, nel quale viene mostrato un numero di record definito nelle variabili (si veda il capitolo Variabili). Il valore di record mostrati predefinito è 20. Con doppio click su un record si può passare alla vista scheda sul record cliccato.
La ricerca è una vera e propria “query by form”. Quando si clicca su ricerca i campi della maschera si svuotano e diventano verdi. Si possono scrivere dei parametri e inviare la ricerca. In questo modo vengono cercati i record che rispondono ai requisiti inseriti. Si noti che la ricerca avviene per uguaglianza, non per affinità (operatore ’=’ , non operatore ’LIKE’) e che la ricerca funziona attraverso AND logici (non OR).
Se il risultato è uno solo la maschera mostrerà il record ricercato, se sono molti mostrerà i risultati nella vista tabella. E’ possibile infine aiutare la ricerca mediante i campi con suggerimenti, impostabili dall’amministrazione della tabella. In questo caso mentre si digiterà in un campo appariranno dei suggerimenti.
Questo può essere utile in campi di testo significativi ed è impostabile dall’amministrazione dei campi della tabella.
E’ possibile utilizzare l’asterisco per trovare i record in modalità LIKE. Ad esempio se cercassi in un elenco di cognomi “Ross*” VFront restituirà tutti i cognomi che iniziano per “Ross” (Rossi, Rossini, Rossetti, Rossomalpelo, etc.)
Per un uso di VFront più rapido e produttivo (specialmente in caso di data entry) può essere utile conoscere le scorciatoie da tastiera delle maschere di VFront. Se opportunamento configurato nelle variabili (si veda il paragrafo 11 nella pagina §), è possibile vedere in ogni momento le scorciatoie da tastiera della maschera cliccando sulla linguetta ominima a destra dello schermo.
Nota. In realtà tutte le operazioni CRTL+ALT+tasto avrebbero lo stesso effetto anche con ALT+tasto. Le combinazioni da tastiera CRTL+ALT sono state impostate per non sovrapporsi alle combinazioni già presenti sul browser: ad esempio ALT+E (elimina in VFront, in Firefox apre il menù Segnalibri). Il problema è risolvibile con la combinazione CTRL+ALT+tasto, con la quale non vengono attivati i comandi da tastiera tipici del browser.
Il menù di amministrazione è accessibile per gli utenti abilitati mediante il link nella barra azzurra in alto a destra (v. figura 5).
L’amministrazione del front-end è definita da un diritto indipendente all’apparteneza ad un gruppo.
Il livello di amministrazione1 può essere:
Gli utenti amministratori (livello 2 e 3) hanno accesso all’amministratore mediante il link “amministrazione” presente in tutte le pagine il alto a destra. Attraverso questo link si accede a tutte le funzioni di amministrazione dell’applicazione VFront. Alcuni menù sono visibili solo al superadmin, e sono
Sia gli amministratori (livello 3) che i tutor (livello 2) possono invece operare sui log, e modificare le appartenenze degli utenti a gruppi. Possono “promuovere” altri utenti al loro pari livello, cioè un amministratore di livello 3 potrà creare un tutor (livello 2) o un amministratore (livello 3), mentre un tutor (livello 2) non potrà creare un amministratore di livello 3 in quanto avrebbe un livello più alto del proprio. Sia gli amministratori (livello 3) che i tutor (livello 2) possono creare nuovi report XML, XHTML, PDF o RTF (questi ultimi formati solo in presenza di Apache FOP), possono creare statistiche con grafici e tabelle.
Su VFront è possibile creare dei gruppi di utenti a cui corrispondono registri di regole sulle tabelle e sui campi: ad esempio è possibile creare un gruppo che possa solo accedere alla tabella A e non alla tabella B. E’ possibile creare un gruppo che possa accedere alla tabella A in scrittura e modifica, alla tabella B in scrittura, modifica e cancellazione e alla tabella C in sola lettura. E’ inoltre possibile mostrare diversamente i campi delle tabelle a diversi gruppi (ad esempio nascondere un campo, e così via).
Ogni gruppo ha un sistema di regole del tutto indipendente dagli altri gruppi, definibili dall’amministratore.
Come la scheda è il cuore di VFront lato utente, il menù dei gruppi registri lo è per la parte di amministrazione. Quando si accede al menù registri, appare una tabella riassuntiva con i registri/gruppi presenti al momento (v.figura 6). Il link “Crea nuovo gruppo” fa proprio quello che ci si aspetta, con la possibilità di scrivere un nome per il nuovo gruppo, una descrizione e “clonare” le impostazioni di altro gruppo. La clonazione può essere comoda per non dover riconfigurare da zero tutte le opzioni per le tabelle, ma partire da un modello di configurazione esistente. Una volta creato il nuovo gruppo risulterà completamente indipendente dagli altri, compreso quello dal quale è stato clonato. Naturalmente è possibile anche creare un gruppo senza alcuna impostazione di partenza: è sufficiente selezionare dalla tendina della clonazione ”crea un registro vuoto”. E’ possibile anche eliminare i gruppi, tranne il gruppo predefinito. Quando si eliminano gruppi con utenti, questi verranno spostati automaticamente nel gruppo predefinito.
Dalla tabella HTML che mostra i gruppi visibile nella figura 6 si può accedere mediante il link “amministrazione” alle funzioni più interessanti del front-end. Si ha qui l’amministrazione delle tabelle del database per il gruppo preso in esame. Si ricorda che nella logica di VFront le impostazioni sulle tabelle di database per un gruppo non influenzeranno in maniera alcuna le impostazioni per gli altri gruppi. Da questa visualizzazione è possibile aver un quadro della situazione: le tabelle identificate dal link blu sono quelle sulle quali è stata operata una qualche modifica, mentre quelle rosse sono quelle senza ancora impostazione da parte dell’amministratore. E’ qui possibile avere anche una panoramica veloce di quali tabelle sono accessibili in lettura, scrittura, modifica e cancellazione, nonché il numero delle sotto-maschere impostate. In coda all'elenco sono visibili le viste con le loro impostazioni. Le viste create nel database su VFront appaiono e sono trattate in maniera simile alle tabelle vere e proprie, tranne alcuni dettagli che saranno discussi nel paragrafo 6.7
In alto a sinistra c’è invece un link “Funzioni rapide” che permette di operare modifiche su tutte le tabelle contemporaneamente. E’ possibile ordinare l’elenco delle tabelle cliccando sulle etichette delle colonne. Per accedere alla configurazione di una tabella (per il gruppo in oggetto) è sufficiente cliccare sul suo nome.
Come presente in figura si può osservare che l’amministrazione delle tabelle per i gruppi funzionano mediante una pagina con linguette. La prima linguetta riguarda le impostazioni generali (v. figura 8).
Qui è impostabile:
Si noti che di default sono negati tutti i diritti su tutte le tabelle per tutti i gruppi. Sarà compito dell’amministratore dare ai singoli gruppi i diritti che loro competono.
Come si può notare dalla figura precedente ci sono ulteriori impostazioni nella sezione “Allegati e link”. Attraverso VFront è infatti possibile collegare a qualunque tabella degli allegati e dei link. Questi saranno poi mostrati nella scheda utente. E’ qui possibile configurare la possibilità di leggere, scrivere ed eliminare allegati e link per la tabella in oggetto per questo gruppo.
La seconda linguetta dell’amministrazione tabella per gruppo è l’impostazione dei campi (vedi figura 8).
Per ogni campo è possibile impostare campo visibile3 (si|no): se si sceglie “no” il campo non apparirà nella scheda; campo obbligatorio , come suggerisce la dicitura, impone al dipendente di compilare il campo. In caso contrario un messaggio “alert” avviserà che è impossibile salvare l’inserimento o la modifica. Campo con ricerca permette di usare il campo per la ricerca; imposta i suggerimenti invece, permette di mostrare, mentre si scrive in un campo, un elenco dei valori già presenti. E’ molto utile su alcuni campi per la ricerca (come i titoli o le denominazioni). Visibile in vista tabella permetterà di mostrare il campo nella vista tabella (indipendentemente dalla vista scheda). Si veda la figura 9 : il primo campo appare con delle chiavette gialle: questo significa che il campo è una chiave primaria (PRIMARY KEY). In tal caso, se il campo è numerico, di default non verrà mostrato nella maschera. Può essere mostrato invece nella vista tabella. Il secondo campo della figura 9 ha invece delle chiavette blu: significa che si tratta di una chiave esterna (FOREIGN KEY). In questo caso quasi sempre sarà utile impostare il campo con una tipologia ”valori definiti da tabella” (si veda oltre per ulteriori dettagli).
Per quanto riguarda i tipi di input, a seconda della tipologia di campo sono possibili solo alcune impostazioni. In linea generale la politica di VFront è di poter impostare regole più restrittive del database, e non viceversa (si veda il paragrafo 1.5 nella pagina §). Questo significa che, per esempio, se un campo è stato impostato nel database come numerico, il front-end non permetterà di impostarlo come testo. Nel caso di testo lungo invece sarà possibile impostare da VFront il campo come testo corto o testo lungo. A seconda delle scelte fatte in questa maschera di amministrazione si può determinare come il gruppo dovrà vedere la scheda per la tabella in oggetto.
Sono di seguito descritti I tipi di input per i tipi di campi principali, in base alla definizione SQL del database. Per ogni caso è riportato come il campo sarà mostrato in HTML nella maschere:
Sono sempre presenti infine tre tipi di campi molto importanti, tipici del front-end :
Indica un valore nascosto che può essere una costante o una variabile.
Se ad esempio si scrivesse ”1” il campo assumerà sempre il valore 1. Se invece si utilizzasse il valore %now, automaticamente il campo assumerà la data odierna.
Le variabili disponibili sono descritte in un popup e sono parole chiave precedute dal segno % (percento):
I campi nascosti possono essere attivi solo in fase di inserimento del record (opzione predefinita) o anche in fase di modifica. Una casella di spunta propone l’uso del campo nascosto anche in caso di modifica. Qualora si impostasse questa caratteristica il campo sarà automaticamente aggiornato ogni qual volta l’utente modificasse il record preso in esame. Nell’esempio della data odierna (variabile %now), qualora fosse spuntata la casella, la data sarà aggiornata all’ultima data di modifica del record, in caso contrario verrebbe riportata solo la data di creazione.
Con questo tipo di input è possibile inserire una lista di valori predefinita. Nella scheda apparirà come un menù a tendina. E’ possibile inserire dei valori (uno per riga). L’output HTML sarà una tendina con i valori e le etichette uguali ai valori inseriti. E’ anche possibile inserire accoppiate valore=>etichetta. Un popup guida l’amministratore alla sintassi corretta.
E’ forse questo il più importante tipo di input. Permette infatti di mostrare i valori codificati da un’altra tabella, opzione fondamentale nelle relazioni 1 a molti. Ad esempio nella figura 9 , nel campo codiceComune (numerico) è predisposto un collegamento alla tabella “comune” mediante una query SQL. Il risultato è un menù a tendina che avrà come valore il codiceComune numerico, ma come etichetta visibile all’utente i nomi dei comuni mostrati in chiaro. Questa funzione è utile soprattutto nel caso di campi che sono anche chiave esterna (segnalata in blu nel front-end).
E’ necessario richiamare due campi nella query SQL : il codice e la descrizione.
E’ possibile scrivere la query a mano oppure avvalersi del popup “Query Editor visuale”. E’ possibile scrivere a mano le query anche con l’uso di WHERE e JOIN, funzioni di CONCAT (per MySQL o l’operatore di concatenazione ”||” in PostgreSQL) e simili. E’ possibile, per ragioni di sicurezza, scrivere solo query di tipo SELECT. E’ infine possibile testare con il pulsante “test” la correttezza delle proprie query. Una volta impostati i campi è necessario salvare le impostazioni con il tasto ”Salva” in fondo alla pagina.
Una funzione che può rivelarsi utile è il controllo sull’input per il singolo campo.
Per poter usufruire dei controlli è necessario impostare dal menù Variabili (si veda oltre il paragrafo 11 ) la variabile js_test su ”SI”.
In tal caso affianco ad ogni box per l’impostazione di un campo apparirà un link ”Controlli avanzati” che apre un popup. Da qui sarà possibile impostare un vincolo sull’input richiesto per il singolo campo (si ricorda che l’impostazione sarà valida per la tabelle vista dal gruppo su cui si sta operando).
A seconda del tipo di dato in oggetto vengono mostrati nella tendina una serie di vincoli differenti.
Sono qui esposti i casi previsti:
tipo int:
tipo varchar (o char o text o mediumtext)
tipo date
tipo time
tipo double (o float)
Così come possono essere impostati, i controlli avanzati possono essere eliminati in qualsiasi momento.
Si noti che i controlli avanzati funzionano sia in fase di inserimento di nuovi record, sia in caso di modifica dei record esistenti.
Quando in un campo è stato impostato un controllo, il link ”controlli avanzati” viene mostrato in grassetto e viene mostrato il tipo di controllo attualmente attivo.
E’ possibile scegliere di mostrare i campi presenti in tabella con un ordine differente da quello presente nella definizione del database. Per cambiare l’ordinamento dei campi è sufficiente andare sulla linguetta Ordine campi. Da qui è possibile, con un semplice drag & drop, spostare l’ordine di presentazione dei campi (si veda la figura 11 ). Un messaggio di conferma avvertirà dell’operazione avvenuta. Per ripristinare l’ordine predefinito cliccare sul pulsante ”Ripristina ordinamento di default”.
Per gestire le relazioni molti a molti, VFront propone lo strumento delle sotto-maschere.
In altri termini ogni qualvolta, per un record di una tabella, ci siano molti record figli può essere utile l’utilizzo delle sotto-maschere. Per l’utente le sotto-maschere sono visibili dalla vista scheda mediante un box con dei pulsanti bianchi (si veda la figura 12 ) nei quali è scritto tra parentesi ed in grassetto il numero di record figli per il record padre in oggetto.
Per impostare le sotto-maschere si vada dal menù di amministrazione all’opzione ”Impostazione tabella”, linguetta ”Impostazione sotto-maschere”. All’inizio le tabelle non possiedono sotto-maschere. Per generare una sotto-maschera cliccare sul link ”Nuove sotto-maschere”. A questo punto sarà possibile aggiungere una o più tabelle da impostare come sotto-maschera della tabella in oggetto. La tabella in oggetto sarà quindi la tabella padre, mentre la/le tabella/e che si scelgono come sotto-maschere saranno considerate tabelle figlie.
L’impostazione delle sotto-maschere è simile alle impostazioni di tabella, con alcune differenze (si veda la figura 13 ). E’ necessario innanzitutto definire le impostazioni generali.
Per farlo cliccare sul nome di una sottomaschera.
Apparirà un modulo del tutto di Impostazione generale, simile a quello già visto per le impostazioni generali della tabella. Da qui è possibile definire i diritti d’uso della sottomaschera, (lettura, scrittura, modifica, ecc.). Esistono inoltre delle opzioni molto importanti e caratteristiche delle sottomaschere. Sono evidenziate dalle freccie nella figura .
Dopo aver definito le impostazioni generali e averle salvate con l’apposito tasto, è possibile definire le impostazioni per i campi delle sottomaschere.
La definizioni dei campi non è molto diversa da quella per le tabelle generali, salvo l’impostazione del campo definito come collegamento tra le tabelle (cioè la chiave esterna). Questo campo infatti (si veda la figura 15 ) apparirà nella sottomaschera come una etichetta identificativa del record. Si può qui definire mediante la tendina evidenziata in figura dal rettangolo. Qui appaiono i nomi dei campi della tabella principale.
Nell’esempio in figura si è scelto il campo ”banca” in quanto è una descrizione in chiaro della banca che ben si presta ad essere una etichetta leggibile e riconoscibile dall’utente. Il risultato è visibile nella figura
VFront gestisce anche le viste SQL (VIEWS) e le tratta in maniera simile alle tabelle. Si possono configurare le viste in termini di regole sui campi, ordinamento dei campi e sotto-maschere in maniera del tutto omologa alle tabella. Differentemente dalle tabelle è necessario specificare esplicitamente il campo chiave primaria (si veda la figura 16 ). Le viste, per l’utente, sono mostrate nella pagina principale sulla destra (si veda la figura). L’amministrazione delle viste e del tutto simile a quella delle tabelle per la lettura dei dati. Per le operazioni di inserimento, modifica e cancellazione dei record VFront si adegua alla politica del database in uso. Ad esempio in MySQL 5 è possibile inserire e modificare i record, ma è possibile utilizzare la funzione di DELETE su una vista solo se nella definizione della stessa non siano presenti JOIN con altre tabelle.
L’applicazione analizza la definizione della vista e conseguentemente mostrerà o meno automaticamente le opzioni di eliminazione in base alla presenza di JOIN (figura 16 ). Per maggiori informazioni si veda: http://dev.mysql.com/doc/refman/5.0/en/view-restrictions.html
Per le politiche di gestione delle viste su PostgreSQL si rimanda al manuale ed all’utilizzo delle RULES (ad esempio si veda http://www.postgresql.org/docs/8.2/interactive/rules-update.html#RULES-UPDATE-VIEWS.
Le viste sono riconoscibili nell’amministrazione e nella scheda utente in quanto mostrano il titolo in verde scuro e non in rosso mattone.
VFront permette di sincronizzare i propri registri di regole con la struttura del database su cui si sta operando. Sono queste funzioni molto utili laddove venisse modificata la struttura del database. Ad esempio se si aggiunge o rimuove una tabella o si modifica un campo del database, VFront è in grado di sincronizzare le proprie regole con la struttura modificata.
Nota bene!: in accordo ai principi generali di VFront (si veda il paragrafo 1.5 ), ogni operazione di sincronizzazione avviene tra il DB dei dati ed il DB delle regole di VFront, e mai viceversa! In altre parole VFront sincronizzerà il proprio DB di regole per aderire alla struttura del vostro DB di dati e non altererà mai i campi o le tabelle del vostro DB di dati.
Quando nel DB dati vengono aggiunte tabelle VFront è in grado di rilevarle ed inserirle nei propri registri di regole. E’ importante tenere sempre sincronizzato il DB dei dati con VFront. Per sincronizzare il database è sufficiente andare sul menu Amministrazione -> Sincronizzazione database/front-end. Qualora venisse rilevata la presenza di nuove tabelle o viste verrà mostrata una schermata simile alla figura 17 .
Sarà quindi sufficiente premere il tasto ”Inserisci tabelle nel frontend” per aggiungere le nuove tabelle o viste. Le nuove tabelle non hanno diritti (né di lettura, né altri) di default: dopo la sincronizzazione sarà quindi necessario configurarle per i vari gruppi per poterle utilizzare.
Come per l’aggiunta di nuove tabelle o viste, è possibile sincronizzare il database di dati con VFront per eliminare le tabelle obsolete. La pagina di sincronizzazione se è rilevata la presenza di tabelle obsolete mostra una scheramata simile alla figura 18 .
Sarà sufficiente cliccare su ”Elimina tabelle obsolete” per eliminare dai registri di VFront ogni riferimento alle tabelle (o viste) non più presenti.
E’ possibile che vengano aggiunti, eliminati o modificati campi nelle tabelle del DB dati. Lo script è in grado di rilevare i cambiamenti e propone una sincronizzazione automatica.
Quando vengono aggiunti o modificati campi in una o più tabelle/viste, viene mostrato un elenco con dei link in rosso. Accedendo al dettaglio è possibile vedere quali differenze esistono tra la sincronizzazione dei campi di VFront e lo stato attuale della struttura di tabella.
Nell’esempio in figura 19 viene mostrato lo stato della tabella test_utente. Vengono affiancate due tabelle: la tabella A riporta lo stato dell’information_schema del database, mentre la tabella B mostra le impostazioni attuali di VFront da aggiornare. Nell’esempio in figura è stato modificato il campo MYEMAIL che da varchar(40) è ora di tipo char(40). E’ stato inoltre aggiunto un campo di tipo date dal nome NUOVO_CAMPO.
Come visibile in figura i campi che mostrano variazioni sono evidenziati in giallo.
Da questa schermata è possibile sincronizzare mediante la pressione del tasto ”Sincronizza campi”.
E’ possibile in casi particolari operare un ripristino manuale delle regole di una tabella. Per farlo si può accedere alla linguetta ”Ripristino manuale” (si vedano le figure 17 e 18 ) e da qui scegliere per quale tabella ripristinare le regole. E’ da notare che il ripristino cancella tutte le impostazioni della tabella selezionata per tutti i gruppi. Poiché riscrivere tutte le regole per una tabella per tutti i gruppi può essere una operazione lunga, si suggerisce di utilizzare questa funzione con cautela.
VFront utilizza i commenti SQL dei campi e delle tabelle. Qualora aveste documentato il vostro database con commenti di tabella e di campo, questi saranno utilizzati in diversi contesti:
E’ pertanto suggerito di commentare scrupolosamente il vostro database, prassi peraltro valida di per sè.
Come visto nel paragrafo 3.4 nella pagina §, gli utenti possono accedere a VFront attraverso l’autenticazione su strumenti esterni come LDAP o SOAP o altri database. Al primo accesso gli utenti sono registrati nella tabella utente del DB di VFront con livello di amministrazione 1 (nessuna credenziale di amministrazione) e gruppo di appartenenza 0 (gruppo di default). Se la fonte di autenticazione è configurata per trasmettere a VFront anche il nome e cognome, questi dati saranno registrati e mostrati. Per non creare conflitto con la gestione esterna degli utenti (via LDAP o altre fonti di autenticazione), da VFront non è possibile modificare le informazioni degli utenti (email, password, nome e cognome), ma solo i loro diritti d’accesso e di eventuale amministrazione relativi a VFront stesso.
Per maggiori informazioni sull’autenticazione si veda (oltre al paragrafo 3.4 nella pagina § sopra citato) la Guida all’installazione e la sezione relativa all’autenticazione esterna.
La gestione degli utenti su VFront è accessibile dal menù Amministrazione->Gestione utenti. Da qui viene mostrata una tabella (come in figura 20 nella pagina precedente) con gli utenti presenti su VFront e le loro caratteristiche:
E’ inoltre possibile filtrare gli utenti in base al gruppo e ordinare la tabella in base ad uno dei campi suddetti.
E’ anche possibile esportare i dati presenti in tabella in formato XLS (MS Excel).
Dalla tabella in figura 20 nella pagina §, cliccando su ”modifica” è possibile cambiare il gruppo di appartenenza dell’utente in oggetto, nonché il suo livello di amministrazione. Questa operazione può essere eseguita da amministratori di livello 3 o da amministratori (altrove definiti anche tutor) di livello 2. Gli amministratori di livello 2 potranno però ”promuovere” gli utenti di livello 1 solo a livello 2, mentre gli amministratori di livello 3 potranno creare altri amministratori di livello 3 o livello 2.
Cancellando un utente si eliminano i suoi dati dal database. Se si è impostata l’autenticazione direttamente dal database di VFront, la cancellazione dell’utente comporterà l’impossibilità di accedere all’applicazione da parte sua.
Viceversa, qualora l’autenticazione a VFront sia configurata (dal file di configurazione) mediante autenticazione esterna (LDAP, SOAP, altro DB, etc.) l’utente verrà ricreato al suo prossimo accesso a VFront, con le credenziali basi, ossia livello di amministrazione = 1 (nessuna amministrazione) e gruppo 0 (gruppo di default).
Per accedere al menù dei Log si vada sull’Home Amministrazione e da qui al link ”Log operazioni sul database”.
Il sistema dei log del front-end tiene traccia di tutte le operazioni di INSERT, UPDATE e DELETE eseguite sulle tabelle del database dati. Viene tracciato:
Le operazioni vengono mostrate con colori differenti in base al tipo, come si vede in figura 21.
E’ possibile filtrare le righe del log al fine di trovare più facilmente le operazioni che si stanno cercando.
Il filtro (che viene attivato cliccando sul link ”filtro sui log”) permette di cercare traccia di una operazione in base a numerosi parametri:
In questo modo è molto facile trovare il record cancellato o modificato per sbaglio dall’utente ”Ciccio Pasticcio” tra ieri ed oggi.
Ogni operazione tracciata dal log può essere analizzata in dettaglio. Cliccando sul link dettaglio (si veda la figura 21 ) è possibile avere ulteriori informazioni sull’operazione eseguita. In caso di modifica vine mostrata una tabella che riporta i campi della tabella nella condizione precedente e successiva alle operazioni. I campi modificati sono evidenziati in giallo. Viene mostrata inoltre la eventuale reversibilità dell’operazione (v. figura 19).
VFront permette alcune interessanti funzioni di ripristino. Nel caso di record cancellati per sbaglio o modificati erroneamente, è possibile ripristinare la condizione precedente. Per farlo è necessario aprire il dettaglio dell’operazione e se VFront considera reversibile l’operazione, è possibile ripristinare lo stato precedente.
Nell’esempio in figura 22, viene mostrato il log di una operazione di modifica. La tabella in oggetto (test_utente) possiede solo tre campi (id_ut, la chiave primaria; myemail, un campo testo e password, un campo testo impostato su VFront come password con hash MD5 (se vuoi cercare di fare reverse engineering della mia password, sappi che è tempo perso, non è quella della mia banca online). Nel caso presentato è stata modificato il contenuto del campo MYEMAIL. Per ripristinare l’operazione è sufficiente cliccare sul tasto ”Ripristina questa operazione” e il contenuto del campo myemail diverrà nuovamente ”marcello@casa.com”.
Cosa significa ”se VFront considera reversibile l’operazione”?
VFront è un programma e non sceglierà con libero arbitrio cosa ripristinare o meno ;-)
Un’operazione è ripristinabile se i dati del log sono integri. Quindi in condizioni di corretto funzionamento, ogni operazione di modifica e cancellazione teoricamente può essere ripristinabile. Qualora si facesse una pulizia della tabella del log troppo spesso i dati potrebbero non essere più recuperabili. La tabella log infatti può diventare molto pesante, soprattutto se nel database vi è una intensa attività sui dati. Il DB administrator potrebbe prendere in considerazione la cancellazione dei record della tabella log relativi ad operazioni (ad esempio) più vecchie di tre mesi.
Come funziona il sistema di ripristino?
VFront non duplica i record per mantenere lo storico. Questo contraddirebbe quanto affermato nel paragrafo 1.5 nella pagina § (le tre leggi di VFront), in quanto genererebbe ridondanza di dati sul database che VFront sta leggendo.
Il ripristino funziona invece mediante la scrittura nel record della tabella log di alcune operazioni SQL. Sono salvati i contenuti dei campi prima e dopo sotto forma di array serializzato o di istruzione SQL. Se sei ancora curioso, vai a vedere il contenuto dei campi log.storico_pre e log.storico_post.
Non voglio i log
Perché? I log non interferiscono con la normale attività sulle tabelle, implicano un utilizzo di risorse trascurabile e possono essere molto utili. Se però proprio non ti ho convinto, puoi disabilitarli dal file di configurazione. Leggi la ”Guida all’installazione” per capire come.
Il log permette infine di mostrare lo storico di un record. Cliccando sul link ”storico” (si veda la figura 21 ) si accede ad una pagina che mostra tutte le operazioni che sono state compiute sul record: l’inserimento, le modifiche, l’eventuale cancellazione e l’eventuale/i ripristino/i. Naturalmente lo storico è dettagliato solo qualora le operazioni suddette siano state effettuate tramite le maschere di VFront. L’applicazione infatti non ha modo di tracciare operazioni che siano state effettuate tramite altre interfacce al database di dati (come ad esempio script da shell, o operazioni da phpMyAdmin, per esempio).
Avvertenza: i report su VFront sono in fase sperimentale di sviluppo, questa sezione potrebbe essere modificata in futuro. Alcune caratteristiche potenzialmente utili sono ancora in fase di progettazione e verranno implementate a breve.
VFront permette di generare dei report sul contenuto delle tabelle. E' anche possibile generare report da query SQL. I report su VFront si basano su XML e i formati che vengono generati sono derivati da XML. Per creare un report si deve accedere dal menù di amministrazione alla pagina dei report (link Amministrazione XML e reportistica). Qui appare una tabella con i report attualmente presenti ed due link Crea nuovo report XML da tabella o vista e Crea un nuovo report da query (v. figura 24).
I report di VFront si basano sul formato XML, che
può essere
mostrato così com'è o utilizzato per generari
altri formati (si veda la figura 23).
I file XML a loro volta sono generati attraverso due metodi di
interrogazione al database: mediante la lettura dei dati delle tabelle
e delle regole impostate su VFront oppure attraverso query ad hoc
scritte dall'amministratore.
Il file XML può essere trasformato attraverso due processi principali:
Ci sono due possibilità per generare i report:
I report basati su tabelle mostreranno il contenuto della tabella del
database selezionata,
mentre i report basati su query permettono di mostrare il risultato di
una query SQL scritta ad hoc7.
Cliccando su "Crea nuovo report XML da tabella o vista" e "Crea un nuovo report da query" si accede al modulo di creazione dei nuovi report. Qui è possibile definire alcuni parametri:
I report (X)HTML sono generati tramite XML e trasformazione con foglio di stile XSLT. Questa trasformazione può essere eseguita lato client o lato server. Una variabile del menù Variabili di sistema (si veda oltre, paragrafo 11 nella pagina §) permette di scegliere se effettuare la trasformazione lato client o lato server.
La trasformazione lato client implica che il browser carichi l’XML a cui è associato il foglio di stile e effettui la trasformazione. Il vantaggio di questo sistema è che non si deve avere necessariamente installato sul proprio server il pacchetto XSL per PHP. Gli svantaggi però constano in: sicurezza (nel codice XML sorgente che arriva al browser possono essere mostrati dati di campi che non si vorrebbero mostrare agli utenti) e prestazioni (la trasformazione lato client implica una transazione di dati potenzialmente maggiore).
Pertanto, quando possibile, si suggerisce di utilizzare la trasformazione lato server.
Quando viene generato un report basato su una tabella si
può andare direttamente all'indirizzo
http://INDIRIZZO_VFRONT/xml/NOME_TABELLA/
dove
INDIRIZZO_VFRONT è l'URL della vostra installazione di
VFront e
NOME_TABELLA la tabella di cui state leggendo il report. Da qui
è
possibile avere un menù dei report disponibili. E' possibile
accedere
all'indirizzo direttamente dal link nella colonna ''anteprima'' della
tabella report (si veda
l’immagine 24).
Se viene generato invece un report basato su una query l'indirizzo
apparirà come
http://INDIRIZZO_VFRONT/xml/@NOME_REPORT/
con in nome del report scelto predetuto da un carattere ''@''.
In entrambi i casi si aprirà una schermata con i link per
accedere alle pagine dei report.
Ad esempio il report HTML di default mostra un elenco dei record in
tabelle, separate da una linea come in figura :
Mediante
l'uso di fogli di stile XSL è possibile avere report ben
più complessi
ed articolati, ad esempio per essere mostrati al pubblico.
E'
possibile in questo modo generare pagine web formattate correttamente
per mostrare bandi, appalti, schede di ogni genere direttamente
puntando all'URL corretta da una pagina statica.
Altri modi di leggere i report sono dati dalle seguenti sintassi delle
URL:
http://INDIRIZZO_VFRONT/xml/NOME_TABELLA/all/ Mostra tutti i
record
della tabella (sconsigliabile qualora ci siano molti record)
Esempio:
http://localhost/vfront/xml/banca/all/
http://INDIRIZZO_VFRONT/xml/NOME_TABELLA/OFFSET,LIMIT/ Mostra
i record
della tabella con paginazione. OFFSET indica il punto di partenza e
LIMIT il numero di record da mostrare
Esempio:
http://localhost/vfront/xml/banca/0,50/
http://INDIRIZZO_VFRONT/xml/NOME_TABELLA/contatore/ Mostra un
solo
record ordinato secondo l'ordinamento della chiave primaria della
tabella. Il contatore deve essere un numero
Esempio:
http://localhost/vfront/xml/banca/12/
http://INDIRIZZO_VFRONT/xml/NOME_TABELLA/id/ID_DEL_RECORD/
Mostra un
singolo record, dove ID è il codice numerico del record (del
campo
impostato come chiave primaria).
Esempio:
http://localhost/vfront/xml/banca/id/10008/
In tutti i
metodi esposti è possibile accedere all'XML semplicemente
aggiungendo
XML alla fine dell'URL ad
esempio:
http://localhost/vfront/xml/banca/id/10008/XML
Un
discorso simile vale per i report basati sulle query. In tal caso
però
non è possibile conoscere a priori il campo costituente
chiave
primaria. Saranno perciò validi solo i primi tre metodi:
http://INDIRIZZO_VFRONT/xml/@NOME_REPORT/all/
Esempio:
http://localhost/vfront/xml/@report_banca_1/all/
http://INDIRIZZO_VFRONT/xml/@NOME_REPORT/OFFSET,LIMIT/
Esempio:
http://localhost/vfront/xml/@report_banca_1/0,50/
http://INDIRIZZO_VFRONT/xml/@NOME_REPORT/contatore/
Esempio:
http://localhost/vfront/xml/@report_banca_1/12/
Ad esempio il report HTML di default mostra un elenco dei record in tabelle, separate da una linea come in figura 25 :
|
|
VFront è predisposto per generare anche report in PDF attraverso fogli di stile XSL-FO. Per farlo utilizza l’applicazione open source Apache FOP (licenza Apache 2.0, http://xmlgraphics.apache.org/fop/). Per utilizzare Apache FOP è necessario che l’applicazione sia presente sul server che si sta utilizzando. E’ necessario anche impostare sul file di configurazione di VFront il path corretto di Apache FOP (per dettagli si veda il file Guida all’installazione). Alla data odierna esistono due versioni stabili di Apache FOP: la 0.20.x e la 0.94. Nei test effettuati sono entrambe valide. L’ultima versione permette la generazione di altri formati di report (come ad esempio RTF).
I report PDF sono generati da VFront richiamando Apache FOP tramite apertura di una shell (comando EXEC() ). Pertanto verificare che Apache possa eseguire FOP.
Per generare un report in PDF è necessario impostare un foglio di stile XSL-FO nella creazione del report. Esiste anche un foglio di default che genera un report semplice.
In ogni caso per richiamare i report PDF è sufficiente aggiungere la dicitura PDF negli url come mostrati nella sezione precedente. Ad esempio http://localhost/vfront/xml/banca/all/PDF oppure http://localhost/vfront/xml/banca/id/10008/PDF
La versione 0.9.x di Apache FOP permette la creazione di numerosi formati di output. Uno di questi che può essere utile è il formato RTF.
Per richiamare i formati diversi da RTF il metodo è uguale a quello dell’HTML con la differenze del tipo di formato che si vuole generare.
Per esempio: http://localhost/vfront/xml/banca/id/10008/RTF genererà un file RTF
oppure http://localhost/vfront/xml/banca/id/10008/TXT genererà un file TXT
Per ulteriori configurazioni si rimanda al file xml/.htaccess per le regole di riscrittura degli url. Per un uso avanzato si veda anche lo script xml/fop_exec.php e i formati permessi.
Per i formati di output generabili da Apache FOP si rimanda alla documentazione della versione di FOP che si sta utilizzando .
Attenzione! Per poter usufruire di questo modulo è necessario il pacchetto PHP PEAR e i pacchetti Image/Graph e Image/Canvas (licenza LGPL) - http://pear.php.net. Per scrivere nuove statistiche è necessario inoltre conoscere l’SQL.
VFront supporta la creazione di grafici e statistiche sui dati ad uso degli amministratori (livello 2 e 3). Per accedere al menù statistiche cliccare sul link ”Statistiche database” nella home page dell’amministrazione. Da qui è possibile creare delle nuove statistiche scrivendo una query in codice SQL.
Quando si accede al menù statistiche per la prima volta ci si trova davanti ad una pagina con due link:
Dati popolamento tabelle è una statistica speciale di default che non fa altro che mostrare un grafico a barre che descrive il numero di record presenti attualmente sulle tabelle e sulle viste del database che VFront sta leggendo.
Crea una nuova statistica è invece il modulo per iniziare a personalizzare il menù delle statistiche.
Cliccando sul link si accede ad un modulo di inserimento con le seguenti voci:
SELECT b.banca, count(ba.abi) as n
FROM banca b, bancaagenzia ba
WHERE b.abi=ba.abi
GROUP BY b.banca
HAVING n>500
ORDER BY n DESC
Si veda la pagina con il grafico risultante (figura 26 ).
|
|
Qualora volessi visualizzare i dati con un grafico a torta posso sempre modificare la statistica. Per farlo è sufficiente cliccare sul link ”modifica” che appare vicino al nome con link della statistica.
Il risultato è mostrato nella figura 27 .
|
|
E’ sempre possibile eliminare una statistica. Nel menù principale è sufficiente cliccare sul link in rosso vicino al nome con link della statistica.
Si ricorda inoltre che le statistiche sono dinamiche, ossia i dati restituiti in forma tabellare ed in forma grafica sono calcolati in tempo reale. Pertanto i dati saranno sempre aggiornati in tempo reale, anche qualora venissero fatte modifiche ai dati nelle tabelle coinvolte nella query che genera la statistica.
Dal menù di amministrazione di VFront è possibile accedere al menù Variabili ed impostare alcuni parametri relativi all’uso ed alla modalità di visualizzazione dell’applicazione. Le variabili qui descritte sono registrate in database (nella tabella variabili del database VFront) e non nel file di configurazione descritto nel documento Guida all’installazione.
Ci sono due tipi di variabili: le variabili globali e le variabili specifiche per gruppo/registro. Le variabili globali permettono di creare delle impostazioni di default, mentre le specifiche creano delle eccezioni per uno specifico gruppo registro. Da questo è evidente che se una variabile è definita anche in modo specifico per un gruppo, questa avrà priorità sull’impostazione globale.
Le variabili specifiche possono anche non essere definite, ma se se ne vuole definire una è sufficiente cliccare sulla voce “Imposta nuova variabile” e scegliere dalla tendina delle variabili disponibili quella che si vuole definire specificatamente per un gruppo / registro (v. figura 28).
Si noti come in figura non sia presente il menù delle variabili specifiche per gruppo/registro. Questa è una condizione normale quando esiste un solo gruppo (il gruppo 0 - default). Qualora venisse creato un altro gruppo automaticamente apparirebbe il menù delle variabili specifiche.
Le variabili disponibili sono:
L’esportazione dei dati delle tabelle è un’opzione che può essere eseguita dagli utenti che possiedano i permessi adeguati. Il permesso di esportazione dati si può infatti definire per ogni tabella per ogni gruppo. Se un utente può esportare i dati, vedrà nella vista scheda il tasto “Esportazione dati”.
Cliccando questo si aprirà un popup con alcune opzioni (v. figura 29):
L’amministratore sia di livello 2 che 3, potrà invece sempre accedere all’esportazione dati direttamente dal menù di Amministrazione.
Per gli amministratori di livello 3 è prevista anche l’opzione di “dump” del database. Il dump avviene attraverso i normali comandi del database da shell (mysqldump o pgdump). Questo permette un veloce recupero sia del database dati e di quello delle regole, ad esempio per un backup. I file vengono compressi ed inviati in formato standard Linux (.tar.gz).
Dal menù Amministrazione, si acceda alla sezione Varie, dove è presente un link ”Test Impostazioni VFront”. E’ questa una diagnostica che analizza lo stato dell’installazione di VFront. Può essere molto utile, soprattutto appena dopo l’installazione, per verificare che tutti i parametri richiesti siano configurati correttamente.
Attualmente sono qui presenti cinque sezioni principali:
Sono qui citate le applicazioni sviluppate da terze parti attualmente in uso in VFront. Alcune applicazioni sono opzionali su VFront. E’ riportata anche la tipologia di licenza delle applicazioni suddette.
Questo documento infine è stato scritto con strumenti open source: con LY X (http://www.lyx.org) per la versione LATEX e PDF; l’HTML generato da LY X è stato poi modificato con NVU (http://www.nvu.com/) e JEdit (http://www.jedit.org/).