VFront - Manuale di Riferimento
2 novembre 2007
http://www.vfront.org
http://vfront.sourceforge.net
Versione documento: 1.1
1
Indice
1 Introduzione
4
1.1
Licenza di questo documento . . . . . . . . . . . . . . . . . . . . .
1.2
Licenza del software VFront . . . . . . . . . . . . . . . . . . . . . .
4
1.3
A chi è rivolto questo software
4
1.4
I ruoli su VFront negli enti/organizzazioni
1.4.1
1.5
. . . . . . . . . . . . . . . . . . . .
Livello 3: Amministratore
4
. . . . . . . . . . . . . .
5
. . . . . . . . . . . . . . . . . .
5
1.4.2
Livello 2 (amministratore locale o tutor ):
1.4.3
Livello 1 (utente base):
. . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . .
6
Le tre leggi di VFront . . . . . . . . . . . . . . . . . . . . . . . . .
7
2 Caratteristiche del sistema
8
2.1
Tecnologia lato server
. . . . . . . . . . . . . . . . . . . . . . . .
8
2.2
Tecnologia lato client
. . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3
Struttura di base delle directory
. . . . . . . . . . . . . . . . . . .
3 Panoramica dell'architettura
11
3.1
La logica del front-end VFront
3.2
Sistema dei registri
3.3
Schema entità/relazioni del database di VFront
3.4
Logica di autenticazione
3.5
9
. . . . . . . . . . . . . . . . . . . .
11
. . . . . . . . . . . . . . . . . . . . . . . . . .
11
. . . . . . . . . . .
11
. . . . . . . . . . . . . . . . . . . . . . .
13
Traduzione dell'interfaccia . . . . . . . . . . . . . . . . . . . . . . .
16
3.5.1
Traduzione delle stringhe javascript . . . . . . . . . . . . . .
16
3.5.2
L'impostazione della lingua . . . . . . . . . . . . . . . . . .
16
3.5.3
La creazione di una nuova traduzione
16
. . . . . . . . . . . .
4 La scheda utente
17
4.1
Navigazione tra i record
4.2
Creazione, modica ed eliminazione record
. . . . . . . . . . . . .
17
4.3
Vista scheda e vista tabella . . . . . . . . . . . . . . . . . . . . . .
18
La ricerca
18
4.4
4.4.1
4.5
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Ricerca di una sotto-stringa . . . . . . . . . . . . . . . . . .
19
Le scorciatorie da tastiera . . . . . . . . . . . . . . . . . . . . . . .
19
5 Introduzione all'amministrazione del front-end
21
6 Amministrazione delle tabelle e viste
23
6.1
Cosa sono e a cosa servono i gruppi/registri su VFront
. . . . . . .
23
6.2
Il sistema gruppi/registri in pratica . . . . . . . . . . . . . . . . . .
23
6.3
Impostazioni generali di tabella
6.3.1
6.4
. . . . . . . . . . . . . . . . . . .
Impostazione allegati e link
. . . . . . . . . . . . . . . . .
24
26
Impostazione dei campi . . . . . . . . . . . . . . . . . . . . . . . .
26
6.4.1
30
Il controllo sul valore dei campi . . . . . . . . . . . . . . . .
6.5
L'ordinamento dei campi nelle maschere
6.6
Gestire le relazioni molti a molti: le sotto-maschere
2
. . . . . . . . . . . . . . .
. . . . . . . . .
34
34
6.7
6.8
6.9
6.6.1
Impostazioni generali delle sotto-maschere . . . . . . . . . .
6.6.2
Impostazioni per i campi delle sottomaschere
Impostazione delle viste SQL
34
. . . . . . . .
37
. . . . . . . . . . . . . . . . . . . . .
37
. . . . . . . . . . . . . . . . . .
39
6.8.1
Sincronizzazione tabelle/front-end
Aggiunta di nuove tabelle o viste . . . . . . . . . . . . . . .
39
6.8.2
Rimozione di tabelle o viste . . . . . . . . . . . . . . . . . .
39
6.8.3
Modica dei campi delle tabelle
. . . . . . . . . . . . . . .
39
6.8.4
Ripristino manuale . . . . . . . . . . . . . . . . . . . . . . .
41
I commenti SQL su campi e tabelle . . . . . . . . . . . . . . . . . .
41
7 Gestione degli utenti
43
7.1
La tabella utenti . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
7.2
Modica dei diritti ed attribuizione ad un gruppo
. . . . . . . . . .
44
7.3
Cancellazione di un utente
. . . . . . . . . . . . . . . . . . . . . .
44
8 Il sistema di log e ripristino operazioni
45
8.1
Il dettaglio del log . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2
Il ripristino
8.2.1
8.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FAQ sul ripristino per i più curiosi
Lo storico dei record
9.2
48
. . . . . . . . . . . . . .
48
. . . . . . . . . . . . . . . . . . . . . . . . .
48
9 I report
9.1
45
50
Creazione di un report su VFront
. . . . . . . . . . . . . . . . . .
50
9.1.1
La logica dei report su VFront
. . . . . . . . . . . . . . . .
50
9.1.2
Creazione nuovi report e diritti d'accesso . . . . . . . . . . .
52
Report (X)HTML: utilizzo di fogli di stile XSL lato server e lato client
9.2.1
52
Dove sono i report XHTML ? . . . . . . . . . . . . . . . . .
53
9.3
Report PDF: XSL-FO e Apache FOP . . . . . . . . . . . . . . . . .
55
9.4
Altri formati di report e uso di Apache FOP 0.9 o successivo
56
. . . .
10 Statistiche e graci sui dati
57
10.1 La pagina statistiche . . . . . . . . . . . . . . . . . . . . . . . . . .
57
11 Le variabili di sistema
61
12 Esportazione dati e backup database
65
13 Test impostazioni VFront
67
3
1 Introduzione
1.1 Licenza di questo documento
Copyright (c) 2007 Marcello Verona <[email protected]> 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".
1.2 Licenza del software VFront
VFront è un software rilasciato sotto licenza GPL 2.0 Per maggiori informazioni
sulla licenze si rimanda al le LICENSE distribuito insieme a questa documentazione
oppure su http://www.gnu.org/copyleft/gpl.html
1.3 A chi è rivolto questo software
VFront è un front-end web based per database MySQL o PostgreSQL.
ˆ
Può essere utile ad enti o organizzazioni che utilizzano MySQL o PostgreSQL
e che debbano far accedere i propri dipendenti ai database per la consultazione, l'inserimento o la modica dei dati, senza sviluppare un client ad-hoc e
mediante l'uso di un semplice browser web.
ˆ
VFront può essere pensato come strumento di interfaccia per database, e svolgere alcune funzioni come MS Access, con il vantaggio di essere consultabile
direttamente dal browser.
Non è uno strumento di amministrazione di da-
tabase come phpMyAdmin, né lo sostituisce: l'interfaccia è rivolta all'utente
base che opera sui dati.
ˆ
L'interfaccia di VFront è pensata quindi per utenti nali non esperti, che
possano operare sui dati in sicurezza con una interfaccia familiare ed intuitiva.
ˆ
VFront è particolarmente utile quando diversi utenti o tipologie di utenti debbano accedere alle tabelle con dierenti privilegi: grazie al sistema altamente
personalizzabile dei gruppi e dei diritti è possibile far accedere diversi gruppi
di dipendenti solo a speciche tabelle o viste, mostrare o nascondere campi a
specici gruppi, impostare regole per la validazione degli input e tenere sotto
controllo l'attività sul database.
ˆ
VFront possiede inoltre moduli di esportazione dati, statistiche e gestione di
reportistica basata su XML, XSL e XSL-FO.
ˆ
L'applicazione inne può essere utile a chi, genericamente, ha bisogno di un
front-end per database installabile e congurabile con poco sforzo in tempi
rapidi.
4
1.4 I ruoli su VFront negli enti/organizzazioni
Su VFront i diritti sono deniti dal gruppo di appartenenza ed il livello di amministrazione.
I livelli di amministrazione sono tre. Verranno qui descritti i ruoli con specico
riferimento all'ente o organizzazione in cui VFront è utilizzato:
1.4.1 Livello 3: Amministratore
Job description:
Competenze e conoscenze:
ˆ
Conosce il database MySQL o PostgreSQL di cui VFront è front-end
ˆ
Ha dimestichezza con il linguaggio SQL
ˆ
E' competente nella gestione del lesystem del server su cui VFront è installato
(server Linux o altro)
ˆ
Sa modicare un le di congurazione scritto in linguaggio PHP e può accedere in scrittura a tale le.
ˆ
Conosce, almeno supercialmente, l'XML, l'XSL e l'XSL-FO e/o si avvale di
un collaboratore/collega che conosce questi linguaggi, utili per la denizione
dei report personalizzati.
ˆ
Conosce approfonditamente l'applicazione VFront ed è in contatto con gli
utenti che utilizzano VFront.
Mansioni e responsabilità:
ˆ
Crea i gruppi di VFront ed i loro diritti, denisce la tipologia dei campi delle
tabelle, congura le maschere e le sotto-maschere delle tabelle e delle viste,
realizzando le scelte di progetto
ˆ
Può accedere ai log per operazioni di ripristino di dati erroneamente cancellati.
ˆ
A seconda della dimensione del gruppo di lavoro può essere in relazione con i
soli utenti di livello 2.
ˆ
Può essere responsabile dell'attribuzione dei diritti degli utenti di livello inferiore, anche se questa prerogativa può essere delegata al livello 2.
ˆ
Denisce le query per generare report graci e tabellari nella sezione statistiche.
ˆ
Può denire i report e, se ha dimestichezza con le trasformazioni XSL e
XSL-FO può denire fogli di stile per la generazione di report personalizzati.
Identicazione con il ruolo nell'ente/organizzazione:
Può essere un sistemista o un DB administrator dell'ente/organizzazione.
5
1.4.2 Livello 2 (amministratore locale o
tutor ):
Job description:
Competenze e conoscenze:
ˆ
Il livello 2 possiede alcune prerogative di amministrazione.
Si tratta di un
utente avanzato con conoscenze (almeno) di base sui database e sulla struttura
del database di cui VFront è front-end.
Mansioni e responsabilità:
ˆ
Attribuisce il gruppo di appartenenza per gli utenti di livello base (livello 1)
ˆ
Può promuovere utenti di livello 1 al livello 2
ˆ
Può consultare le statistiche e (se conosce il linguaggio SQL) può crearne di
nuove.
ˆ
Può gestire la reportistica
ˆ
E' responsabile o co-responsabile del gruppo di lavoro.
Identicazione 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.
1.4.3 Livello 1 (utente base):
Job description:
Competenze e conoscenze:
ˆ
Si richiede una conoscenza di base del funzionamento del database, almeno
per le tabelle che riguardano il suo gruppo di appartenenza. Può essere utile
che questo utente abbia seguito una giornata di formazione sul funzionamento
del database e delle funzioni di VFront relative all'uso delle maschere e sottomaschere.
Mansioni e responsabilità:
ˆ
Può essere qualunque dipendente dell'ente/organizzazione che debba/possa
accedere ai dati.
ˆ
In base ai diritti a lui attribuiti può inserire, modicare, eliminare e consultare
i dati.
Identicazione con il ruolo nell'ente/organizzazione:
Può essere un dipendente di qualsiasi ruolo/inquadramento che debba/possa
accedere ai dati.
6
1.5 Le tre leggi di VFront
Rubando la forma del titolo di questo paragrafo da Asimov, sono qui enunciati i
principi generali secondo i quali si è cercato di sviluppare VFront:
1. VFront non sporcherà il vostro database, non creerà tabelle o viste aggiuntive
sul vostro DB e non modicherà i dati delle tabelle, a meno che non lo si
voglia esplicitamente fare attraverso maschere. Creerà invece un suo discreto
database di regole (o un suo schema su PostgreSQL). Non prende possesso
del vostro database, ma permette di usarlo.
2. VFront non bypasserà le regole che sono state impostate nel vostro database.
Con VFront è possibile creare nuovi
vincoli più restrittivi di quelli che avete
creato sul database (in termini di chiavi esterne, input accettabili sui tipi di
campi, etc.), ma mai il contrario.
3. VFront funzionerà tanto meglio quanto è stata più rigorosa la denizione del
vostro database. A VFront piacciono la normalizzazione, le chiavi esterne, le
chiavi primarie possibilmente numeriche, i commenti sulle tabelle e sui campi,
etc... Garbage in, garbage out: non si scappa.
7
2 Caratteristiche del sistema
2.1 Tecnologia lato server
VFront è un'applicazione web con le seguenti caratteristiche lato server:
ˆ
E' scritta in PHP 5 come linguaggio di scripting
ˆ
Può essere applicata a database MySQL 5.x o PostgreSQL 8.x. Qualora si
utilizzi su MySQL verrà creato un database di regole per l'applicazione sullo
stesso server del database che si vuole utilizzare. Qualora si utilizzasse invece
PostgreSQL il database di regole viene creato come schema del database
PostgreSQL che si vuole utilizzare.
ˆ
VFront funziona con Apache 2.x. Probabilmente è possibile utilizzare anche
la versione 1.x di Apache, sempre che sia possibile utilizzare PHP 5.
ˆ
VFront è stato progettato per funzionare sotto server Linux-like, ma è possibile
utilizzarlo anche in ambiente Windows.
Per maggiori informazioni leggere anche la Guida all'installazione.
2.2 Tecnologia lato client
VFront fa un grande uso di Javascript. Non è possibile utilizzare VFront senza javascript attivato: sarebbe completamente inanimato e passerebbe la stessa dierenza
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 anché l'applicazione funzioni correttamente con
diversi browser: i browser attualmente testati con successo ad oggi sono:
ˆ
Internet Explorer 5.5
ˆ
Internet Explorer 6
ˆ
Internet Explorer 7
ˆ
Firefox 1.5.x
ˆ
Firefox 2.0
ˆ
Mozilla 1.8
I browser parzialmente supportati sono:
ˆ
Internet Explorer 5.0
ˆ
Opera 8.51
Il supporto per Safari non è ancora stato testato. Allo stato attuale si consiglia agli
utenti Mac di utilizzare VFront con Firefox.
8
2.3 Struttura di base delle directory
La struttura della directory di VFront è così formata:
ROOT_VFRONT
_docs
_install
admin
conf
files
docs
tmp
xsl_custom
html
img
mime
inc
js
dhtmlxGrid
jscalendar
prototype-1.4.0
scriptaculous
uploadprogress
yav
locale
plugins
FCKEditor
ods
phpgettext
phpmailer
stats
sty
jscalendar
tmp
usr
xml
Alcune cartelle devono essere attribuite ad Apache: nello specico
sottocartelle),
tmp.
html, files (e
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 pro-
cedure di installazione. Si consiglia caldamente di cancellare la cartella
dopo l'installazione.
admin
contiene gli script relativi all'area di amministrazione.
9
_install
conf
contiene il le di congurazione. 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 les sono
alcune operazioni di VFront e
docs, per la documentazione
xls_custom, dove vengono
personale,
tmp,
per
salvati il le XSL e
XSL-FO personali (si veda la sezione relativa ai report).
html
è la cartella dove possono vengono salvati dei le 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 le di inclusione degli script, come i le di funzioni e molto altro.
js contiene gli script Javascript e numerose cartelle di framework sviluppati da
terze parti. Si veda 13 nella pagina 68 per ulteriori informazioni.
locale
contiene i le per le traduzioni dell'interfaccia mediante lo standard
gettext.
plugins
contiene alcuni script, come i le utilizzati per la generazione di
Open Document (sottocartella
ods),
mentre
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
inne contiene script relativi all'XML e alle trasformazioni XSL.
10
3 Panoramica dell'architettura
3.1 La logica del front-end VFront
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
congurare regole di accesso alle tabelle, alle viste e ai singoli campi, mediante vincoli e formattazioni speciali congurabili 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
indenito 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.
3.2 Sistema dei registri
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 dierenti
su dierenti 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 dierenti gruppi di utenti.
3.3 Schema entità/relazioni del database di VFront
E' qui riportato lo schema del database di regole - DB VFront - (v. gura 1):
allegato
In questa tabella sono registrate le informazioni relative ai le allegati alle tabelle.
I le non sono salvati in database ma nel lesystem. In database (in questa tabella)
sono registrate solo le informazioni relative al collegamento del le al record ed alla
tabella, il nome del le 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
11
Figura 1: Schema entità-relazioni
12
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 modicati o cancellati per
sbaglio, anche dopo l'eliminazione sica 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 modica ai
record del database dati, al ne di impedire l'accesso concorrente in modica ad un
record già sottoposto a modica da altro utente.
registro_tab
Sono qui inserite le regole generali per ogni tabella, per ogni gruppo. La tabella
in una prima congurazione del front-end legge l'information_schema di MySQL 5
e congura un primo gruppo predenito. 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 glia 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 congurate 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 speciche per un gruppo. In caso
di coesistenza dei due tipi di variabili, quella specica 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.
3.4 Logica di autenticazione
Il processo di autenticazione è descritto in dettaglio anche nella Guida all'installazione.
13
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
ˆ
mediante il database di VFront (autenticazione e accreditamento coincidono)
- autenticazione a "1 step"
ˆ
mediante server LDAP o Active Directory
ˆ
mediante uso di una tabella di un database presente sullo stesso server (solo
qualora si utilizzi MySQL)
ˆ
mediante uso di una tabella di un database presente su altro server. In questo
caso è supportata la lettura di database MySQL, PostgreSQL oppure tramite
ODBC.
ˆ
mediante WSDL SOAP (metodo in fase di sperimentazione)
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 gura, la procedura è la seguente: l'utente tenta l'autenticazione su VFront mediante email e password.
1. Viene interrogato lo strumento scelto per l'autenticazione (LDAP, una tabella
di database, ecc.); se l'utente non esiste viene rigettato con una segnalazione
a video; se l'utente esiste viene cercato sul database delle regole (DB VFront).
2. Se l'utente esiste vengono lette le credenziali di accesso (gruppo di appartenenza e livello di amministrazione) e registrate in sessione.
3. Qualora invece l'utente non esistesse, questo viene registrato automaticamente in database, in quanto il suo account esiste nello strumento di autenticazione (LDAP, altro DB ecc) quindi può accedere al sistema.
4. Gli verranno tuttavia attribuiti i diritti minimi, ossia sarà assegnato al gruppo
0 (gruppo di default, per il quale si consiglia di impostare diritti di sola lettura)
e nessun livello di amministrazione.
Sarà successivamente compito degli amministratori "promuovere" l'utente e/o attribuirlo al corretto gruppo di appartenenza.
14
Figura 2: Processo di login a 2 step
15
3.5 Traduzione dell'interfaccia
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.
3.5.1 Traduzione delle stringhe javascript
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 dierente 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 le 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
dierente (magari più standardizzato).
3.5.2 L'impostazione della lingua
Per impostare una nuova lingua è necessario impostare la costante FRONT_LANG
nel le di congurazione. Per maggiori informazioni si suggerisce di leggere la guida
all'intallazione.
3.5.3 La creazione di una nuova traduzione
Per creare una nuova traduzione è necessario utilizzare i le .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
directory
LC_MESSAGES
locale,
una sotto-
e copiare il proprio le generato (.po e .mo) dentro
quest'ultima. I le 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 le presenti dentro
js/lang/.
Si prenda ad esempio il le vfront-en.js come modello.
16
4 La scheda utente
La scheda utente è il cuore di VFront. E' attraverso questa maschera che vengono
letti, inseriti, modicati 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 congurata
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 modicare un record in una ipotetica tabella notizia
e si apportasse solo una modica 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 modicato, ossia il nuovo titolo. In questo modo il numero di byte spediti
in ogni transazione viene ottimizzato.
4.1 Navigazione tra i record
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 gura 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 ore 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.
4.2 Creazione, modica ed eliminazione record
Se si ha il diritto di creare, modicare e eliminare i record della tabella in esame, appariranno i pulsanti relativi alla creazione di record (Nuovo), alla modica
17
Figura 3: Salto tra record in una maschera
(Modica) e all'eliminazione.
Per quanto riguarda la modica è possibile che il sistema non permetta la modica di un determinato record se qualche altro utente sta già operando modiche
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ò modicare a scelta dell'amministratore. Naturalmente se l'utente
che sta modicando 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 gli, presenti
nelle sotto-maschere.
In tal caso è necessario eliminare tutti i record gli dalle
sotto-maschere prima e poi il record dalla maschera.
4.3 Vista scheda e vista tabella
Dalla vista scheda è possibile passare alla vista tabella, nel quale viene mostrato un
numero di record denito nelle variabili (si veda il capitolo Variabili). Il valore di
record mostrati predenito è 20. Con doppio click su un record si può passare alla
vista scheda sul record cliccato.
4.4 La ricerca
La ricerca è una vera e propria query by form . Quando si clicca su ricerca i campi
della maschera si svuotano e diventano verdi.
e inviare la ricerca.
requisiti inseriti.
Si possono scrivere dei parametri
In questo modo vengono cercati i record che rispondono ai
Si noti che la ricerca avviene per uguaglianza, non per anità
18
Figura 4: Auto completamento nella ricerca
(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 inne 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 signicativi ed è impostabile dall'amministrazione dei campi della tabella.
4.4.1 Ricerca di una sotto-stringa
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.)
4.5 Le scorciatorie da tastiera
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 congurato nelle variabili (si veda il paragrafo 11 nella pagina 61), è
19
possibile vedere in ogni momento le scorciatoie da tastiera della maschera cliccando
sulla linguetta ominima a destra dello schermo.
Navigazione tra i record:
CTRL + freccia destra
avanti di un record (corrisponde al tasto > )
CTRL + freccia sinistra
indietro di un record (corrisponde al tasto < )
CTRL + Maiusc + freccia sinistra
avanti veloce tra i record (corrisponde al ta-
sto > > )
CTRL + Maiusc + freccia sinistra
indietro veloce tra i record (corrisponde al
tasto < < )
CTRL + freccia su
Va al primo record (corrisponde al tasto |< )
CTRL + freccia giù
Va all'ultimo record (corrisponde al tasto >| )
Operazioni sulla maschera:
CTRL + ALT + N
Nuovo record
CTRL + ALT + M
Modica
CTRL + ALT + A
Annulla
CTRL + ALT + S
Salva
CTRL + ALT + E
Elimina
CTRL + ALT + R
Cerca
CTRL + Invio
(in modalità ricerca) Invia la ricerca
Allegati e link:
CTRL + ALT + G
Apri gli allegati (se presenti nella maschera)
CTRL + ALT + L
Apri i link (se presenti nella maschera)
Nota.
In realtà tutte le operazioni CRTL+ALT+tasto avrebbero lo
stesso eetto 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 combinazio-
ne CTRL+ALT+tasto, con la quale non vengono attivati i comandi da
tastiera tipici del browser.
20
Figura 5: Aspetto del menù di amministrazione visto da un amministratore (livello
3)
5 Introduzione all'amministrazione del front-end
Il menù di amministrazione è accessibile per gli utenti abilitati mediante il link nella
barra azzurra in alto a destra (si veda la gura 5).
L'amministrazione del front-end è denita da un diritto indipendente all'apparteneza ad un gruppo.
Il livello di amministrazione
1 può essere:
ˆ
livello 1 utente (nessuna funzione di amministrazione)
ˆ
livello 2 amministratore locale o tutor
ˆ
livello 3 amministrazione generale o superadmin
1 Il livello di amministrazione di un utente è denito nella tabella utente del database di regole
di VFront, campo livello .
21
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
1. il DUMP dei database (DB regole e DB dati)
2. La creazione e amministrazione dei gruppi/registri
3. La creazione di altri utenti superadmin e di utenti tutor (livello 2).
4. Le variabili di sistema
Sia gli amministratori (livello 3) che i tutor (livello 2) possono invece operare sui
log, e modicare 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 graci e tabelle.
22
Figura 6: Il menù dei registri/gruppi in un'applicazione reale
6 Amministrazione delle tabelle e viste
6.1 Cosa sono e a cosa servono i gruppi/registri su VFront
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 modica, alla tabella B in scrittura, modica
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,
denibili dall'amministratore.
6.2 Il sistema gruppi/registri in pratica
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. gura 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 ricongurare da zero
tutte le opzioni per le tabelle, ma partire da un modello di congurazione 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: è suciente selezionare dalla
tendina della clonazione crea un registro vuoto.
E' possibile anche eliminare i
gruppi, tranne il gruppo predenito. Quando si eliminano gruppi con utenti, questi
verranno spostati automaticamente nel gruppo predenito.
Dalla tabella HTML che mostra i gruppi visibile nella gura 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
23
Figura 7: Regole per le tabelle per un gruppo (gruppo 0 - default )
ricorda che nella logica di VFront le impostazioni sulle tabelle di database per un
gruppo non inuenzeranno in maniera alcuna le impostazioni per gli altri gruppi. Da
questa visualizzazione è possibile aver un quadro della situazione: le tabelle identicate dal link blu sono quelle sulle quali è stata operata una qualche modica, 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, modica e cancellazione, nonché il numero delle sotto-maschere
impostate. In coda all'elenco sono visibili le viste SQL 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
modiche su tutte le tabelle contemporaneamente.
E' possibile ordinare l'elenco
delle tabelle cliccando sulle etichette delle colonne. Per accedere alla congurazione
di una tabella (per il gruppo in oggetto) è suciente cliccare sul suo nome.
6.3 Impostazioni generali di tabella
Come presente in gura 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. gura 8).
Qui è impostabile:
ˆ
2
L'ordinamento dei record
Può essere impostato uno dei campi della tabella in ordinamento ascendente
o discendente.
ˆ
Diritto di lettura, ossia che la tabella sia visibile o meno (SELECT) .
2 Per caratteristiche intrinseche al sistema, si sconsiglia vivamente di utilizzare campi che possano assumere i valori NULL per l'ordinamento. Questo creerebbe malfunzionamenti nelle funzioni
di ricerca.
24
Figura 8: Impostazioni per una tabella (tabella appalto) per il gruppo 0 (default)
25
Qualora la tabella non sia leggibile, non sarà mostrata in home page nell'elenco
delle tabelle
ˆ
Il diritto di inserimento di nuovi record (INSERT)
ˆ
Il diritto di modica dei record (UPDATE)
ˆ
Il diritto di cancellazione dei record (DELETE)
ˆ
La possibilità di esportazione dei dati presenti in tabella da parte degli utenti
di questo gruppo.
Per confermare l'operazione si deve
esplicitamente cliccare su Salva impo-
stazione generale (il salvataggio delle impostazioni non è automatico).
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.
6.3.1 Impostazione allegati e link
Come si può notare dalla gura 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 congurare la possibilità di leggere, scrivere ed eliminare allegati e link per
la tabella in oggetto per questo gruppo.
6.4 Impostazione dei campi
La seconda linguetta dell'amministrazione tabella per gruppo è l'impostazione dei
campi (vedi gura 8).
campo visibile3 (si|no): se si sceglie no il
campo obbligatorio , come suggerisce la dicitura,
Per ogni campo è possibile impostare
campo non apparirà nella scheda;
impone al dipendente di compilare il campo. In caso contrario un messaggio alert
Campo con ricerca
imposta i suggerimenti invece, permette
avviserà che è impossibile salvare l'inserimento o la modica.
permette di usare il campo per la ricerca;
di mostrare, mentre si scrive in un campo, un elenco dei valori già presenti. E' molto
Visibile in
vista tabella permetterà di mostrare il campo nella vista tabella (indipendentemente
utile su alcuni campi per la ricerca (come i titoli o le denominazioni).
dalla vista scheda). Si veda la gura 9: il primo campo appare con delle chiavette
gialle: questo signica 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 gura 9 ha invece
delle chiavette blu: signica che si tratta di una chiave esterna (FOREIGN KEY).
In questo caso quasi sempre sarà utile impostare il campo con una tipologia valori
deniti 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
3 Tranne per la chiave primaria autoincrement, visibile solo in vista tabella.
26
è di
Figura 9: Impostazione dei campi su una tabella di VFront
27
poter impostare regole più restrittive del database, e non viceversa (si veda il
paragrafo 1.5 nella pagina 7). Questo signica 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 denizione SQL del database.
Per ogni caso è riportato come il campo sarà
mostrato in HTML nella maschere:
numero
(INTEGER)
tipo proposto da VFront: numero intero
ˆ
viene mostrato un campo di input HTML di tipo text corto
numero con virgola
(FLOAT o DOUBLE)
tipo proposto da VFront: numero con virgola
ˆ
booleano
viene mostrato un campo di input HTML di tipo text
(in MySQL TINYINT(1) o BOOL in PostgreSQL)
tipo proposto da VFront: booleano vero|falso
ˆ
testo
viene mostrato un checkbox
(VARCHAR o CHAR)
tipo proposto da VFront: testo libero corto, password
ˆ
in caso testo libero corto viene mostrato un campo di input HTML di
tipo text lungo
ˆ
in caso password vengono mostrati gli asterischi (campo HTML di tipo
password).
E' possibile per i campi di tipo password scegliere se tenere i valori in
chiaro o criptarli mediante la generazione di hash MD5 o SHA1.
testo lungo
(TEXT, MEDIUMTEXT O LONGTEXT)
tipo proposto da VFront: testo lungo, testo corto, testo formattato HTML
ˆ
in caso testo libero corto viene mostrato un campo di input HTML di
tipo text lungo
ˆ
in caso testo lungo viene mostrato un campo di input HTML di tipo
textarea
ˆ
in caso testo formattato HTML viene mostrata (al posto dell'area di te-
sto), un'istanza dell'editor open source FCKEditor (http://www.fckeditor.
net/).
28
caso data e ora
(DATETIME o TIMESTAMP)
tipo proposto da VFront: data e ora formattata, data formattata
ˆ
viene mostrato un campo di testo. Quando si clicca sul campo si aprirà
un popup
caso data
4 calendario con eventualmente- anche l'ora)
(DATE)
tipo proposto da VFront: data formattata (con ausilio di un popup calendario)
ˆ
viene mostrato un campo di testo. Quando si clicca sul campo si aprirà
un popup
5 calendario con eventualmente- anche l'ora)
Sono sempre presenti inne tre tipi di campi molto importanti, tipici del front-end :
Campo nascosto
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):
%nick
Nickname dell'utente che ha fatto login
%email
%uid
Email dell'utente che ha fatto login
Identicativo numerico dell'utente che ha fatto login
%nome
Nome dell'utente che ha fatto login
%cognome
Cognome dell'utente che ha fatto login
%nomecognome
Nome e cognome (separati da spazio) dell'utente che ha fatto
login
%cognomenome
Cognome e nome (separati da spazio) dell'utente che ha fatto
login
%gid
Identicativo numerico del gruppo a cui appartiene l'utente che ha fatto login
%gruppo
%now
Nome del gruppo a cui appartiene l'utente che ha fatto login
Data attuale in formato aaaa-mm-gg
%timestamp
Data ed ora attuale in formato aaaa-mm-gg HH:mm:ss
4 Il calendario utilizzato è JsCalendar (http://sourceforge.net/projects/jscalendar/)
5 Il calendario utilizzato è JsCalendar (http://sourceforge.net/projects/jscalendar/)
29
attivi solo in fase di inserimento del record
anche in fase di modica. Una casella di spunta propone
I campi nascosti possono essere
(opzione predenita) o
l'uso del campo nascosto anche in caso di modica. Qualora si impostasse questa
caratteristica il campo sarà automaticamente aggiornato ogni qual volta l'utente
modicasse 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
modica del record, in caso contrario verrebbe riportata solo la data di creazione.
Valori deniti
Con questo tipo di input è possibile inserire una lista di valori predenita.
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.
Valori deniti da tabella.
E' forse questo il più importante tipo di input.
Permette infatti di mostrare i
valori codicati da un'altra tabella, opzione fondamentale nelle relazioni 1 a molti.
Ad esempio nella gura 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' inne 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.
6.4.1 Il controllo sul valore dei campi
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 aanco 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 dierenti.
Sono qui esposti i casi previsti:
30
Figura 10: Controlli avanzati per un tipo di dato varchar
tipo
int:
ˆ
numerico intero (un numero senza virgola)
ˆ
diverso da (numero che deve essere dierente da quanto immesso come input
dall'utente)
ˆ
intervallo numerico (un intervallo di due numeri senza virgola)
ˆ
numero intero con n. cifre: (un numero che indica il numero di cifre richiesto)
tipo
varchar (o char o text o mediumtext)
ˆ
alfabetico (lettere dalla a alla z, maiuscole o minuscole, senza spazi)
ˆ
alfanumerico (lettere dalla a alla z, maiuscole o minuscole e numeri senza
spazi)
ˆ
alfanumerico con trattini (lettere dalla a alla z, maiuscole o minuscole e
numeri, carattere - e carattere _ senza spazi)
ˆ
alfanumerico con trattini e spazi (lettere dalla a alla z, maiuscole o minuscole
e numeri, carattere - e carattere _ con spazi)
ˆ
email (una email formalmente valida)
ˆ
diverso da (stringa di caratteri dierente da un input denito)
31
ˆ
lunghezza massima (numero di caratteri massimo)
ˆ
lunghezza minima (numero di caratteri minimo)
ˆ
espressione regolare (espressione regolare di tipo Pearl: è questo uno strumento di controllo sull'input molto potente. Per chi le sa scrivere...)
ˆ
testo con esattamente n. caratteri: (numero preciso di caratteri richiesto)
ˆ
partita iva (partita IVA italiana formalmente corretta)
ˆ
codice scale (codice scale italiano formalmente corretto)
tipo
date
ˆ
data formattata (data in formato aaaa:mm:gg)
ˆ
data precedente o uguale a (una data che sia precedente o uguale all'input
dell'utente)
ˆ
data successiva o uguale a (una data che sia successiva o uguale all'input
dell'utente)
tipo
time
ˆ
orario formattato (con la forma HH:mm:ss)
ˆ
orario formattato (con la forma HH:mm)
tipo
double (o oat)
ˆ
numerico con virgola (numero che abbia necessariamente la virgola)
ˆ
numerico intero (numero intero)
ˆ
intervallo numerico (un intervallo di due numeri con o senza virgola)
ˆ
numero con virgola con esattamente n. cifre: (un numero che indica il numero
di cifre richiesto)
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 modica 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.
32
Figura 11: Ordinamento dei campi
33
Figura 12: Una sotto-maschera in dettaglio
6.5 L'ordinamento dei campi nelle maschere
E' possibile scegliere di mostrare i campi presenti in tabella con un ordine dierente
da quello presente nella denizione del database. Per cambiare l'ordinamento dei
campi è suciente andare sulla linguetta Ordine campi. Da qui è possibile, con un
semplice drag & drop, spostare l'ordine di presentazione dei campi (si veda la gura
11). Un messaggio di conferma avvertirà dell'operazione avvenuta. Per ripristinare
l'ordine predenito cliccare sul pulsante Ripristina ordinamento di default.
6.6 Gestire le relazioni molti a molti: le sotto-maschere
Per gestire le relazioni molti a molti, VFront propone lo strumento delle sottomaschere.
In altri termini ogni qualvolta, per un record di una tabella, ci siano molti record
gli 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
gura 12) nei quali è scritto tra parentesi ed in grassetto il numero di record gli
per il record padre in oggetto.
6.6.1 Impostazioni generali delle sotto-maschere
Per impostare le sotto-maschere si vada dal menù di amministrazione all'opzione
Impostazione tabella, linguetta Impostazione sotto-maschere .
All'inizio le ta-
belle non possiedono sotto-maschere. Per generare una sotto-maschera cliccare sul
34
Figura 13: Sotto-maschere di una tabella
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 glie.
L'impostazione delle sotto-maschere è simile alle impostazioni di tabella, con
alcune dierenze (si veda la gura 13).
E' necessario innanzitutto denire 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 denire i diritti d'uso
della sottomaschera, (lettura, scrittura, modica, ecc.). Esistono inoltre delle opzioni molto importanti e caratteristiche delle sottomaschere. Sono evidenziate dalle
freccie nella gura .
1. Collegamento tra tabelle
E' questa l'impostazione più importante di una sottomaschera in quanto denisce il collegamento tra la tabella e la sottomaschera. Vengono qui mostrati
in due tendine i campi della tabella padre ( banca e bancaagenzia nell'esempio in gura 14). Da qui si denisce il collegamento tra la tabella padre
e la tabella glia. Se sono denite delle chiavi esterne nel database, VFront
suggerirà automaticamente i campi da utilizzare come collegamento.
2. Nome della sottomaschera
Si può denite un nome descrittivo per la sottomaschera.
Qualora non si
denisse verrà utilizzato il nome della tabella come presente in database.
35
Figura 14: Caratteristiche di amministrazione peculiari delle sottomaschere
36
3. Modalità di visualizzazione dei dati.
I dati nella sottomaschera si possono visualizzare sotto forma di tabella o
sotto forma di scheda.
Quando la sottomaschera ha uno o due campi può
6
essere utile la vista tabellare, in caso contrario la vista scheda è più adatta .
4. Numero di record max per la sottomaschera
SI può impostare qui un numero massimo di record da visualizzare (e da
inserire) nella sottomaschera. Poiché molti record implicano una transazione
di dati server/client maggiore e maggiori tempi di attesa per il caricamento
della sottomaschera, si consiglia di tenere sotto controllo il numero qui denito
(più basso possibile). Un numero ragionevole può essere tra 5 e 50 record.
6.6.2 Impostazioni per i campi delle sottomaschere
Dopo aver denito le impostazioni generali e averle salvate con l'apposito tasto, è
possibile denire le impostazioni per i campi delle sottomaschere.
La denizioni dei campi non è molto diversa da quella per le tabelle generali, salvo
l'impostazione del campo denito come collegamento tra le tabelle (cioè la chiave
esterna). Questo campo infatti (si veda la gura 15) apparirà nella sottomaschera
come una etichetta identicativa del record. Si può qui denire mediante la tendina
evidenziata in gura dal rettangolo. Qui appaiono i nomi dei campi della tabella
principale.
Nell'esempio in gura 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 gura
6.7 Impostazione delle viste SQL
VFront gestisce anche le viste SQL (VIEWS) e le tratta in maniera simile alle tabelle.
Si possono congurare le viste in termini di regole sui campi, ordinamento dei campi
e sotto-maschere in maniera del tutto omologa alle tabella. Dierentemente dalle
tabelle è necessario specicare esplicitamente il campo chiave primaria (si veda
la gura 16).
Le viste, per l'utente, sono mostrate nella pagina principale sulla
destra (si veda la gura). L'amministrazione delle viste e del tutto simile a quella
delle tabelle per la lettura dei dati.
Per le operazioni di inserimento, modica
e cancellazione dei record VFront si adegua alla politica del database in uso. Ad
esempio in MySQL 5 è possibile inserire e modicare i record, ma è possibile utilizzare
la funzione di DELETE su una vista solo se nella denizione della stessa non siano
presenti JOIN con altre tabelle.
L'applicazione analizza la denizione della vista e conseguentemente mostrerà
o meno automaticamente le opzioni di eliminazione in base alla presenza di JOIN
(gura 16).
Per maggiori informazioni si veda:
refman/5.0/en/view-restrictions.html
http://dev.mysql.com/doc/
6 Si noti che la vista scheda ha avuto ad oggi più test e tempo di debug dedicato, è pertanto
da considerarsi più sicura.
37
Figura 15: Il campo che costituisce chiave esterna di una sottomaschera
Figura 16: Impostazioni di DELETE su vista con database MySQL5
38
Per le politiche di gestione delle viste su PostgreSQL si rimanda al manuale ed
http://www.postgresql.org/docs/
8.2/interactive/rules-update.html#RULES-UPDATE-VIEWS.
all'utilizzo delle RULES (ad esempio si veda
Le viste sono riconoscibili nell'amministrazione e nella scheda utente in quanto
mostrano il titolo in verde scuro e non in rosso mattone.
6.8 Sincronizzazione tabelle/front-end
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
modicata la struttura del database.
Ad esempio se si aggiunge o rimuove una
tabella o si modica un campo del database, VFront è in grado di sincronizzare le
proprie regole con la struttura modicata.
Nota bene!:
in accordo ai principi generali di VFront (si veda il pa-
ragrafo 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.
6.8.1 Aggiunta di nuove tabelle o viste
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 è suciente andare sul menu
Amministrazione -> Sincronizzazione database/front-end. Qualora venisse rilevata
la presenza di nuove tabelle o viste verrà mostrata una schermata simile alla gura
17.
Sarà quindi suciente 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 congurarle per
i vari gruppi per poterle utilizzare.
6.8.2 Rimozione di tabelle o viste
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 gura 18.
Sarà suciente cliccare su Elimina tabelle obsolete per eliminare dai registri
di VFront ogni riferimento alle tabelle (o viste) non più presenti.
6.8.3 Modica dei campi delle tabelle
E' possibile che vengano aggiunti, eliminati o modicati campi nelle tabelle del DB
dati. Lo script è in grado di rilevare i cambiamenti e propone una sincronizzazione
automatica.
39
Figura 17: Sincronizzazione: inserimento di nuove tabelle.
Figura 18: Sincronizzazione: eliminazione tabelle obsolete
40
Figura 19: Sincronizzazione: aggiornamento dei campi di una tabella
Quando vengono aggiunti o modicati campi in una o più tabelle/viste, viene
mostrato un elenco con dei link in rosso. Accedendo al dettaglio è possibile vedere
quali dierenze esistono tra la sincronizzazione dei campi di VFront e lo stato attuale
della struttura di tabella.
Nell'esempio in gura 19 viene mostrato lo stato della tabella test_utente. Vengono aancate due tabelle: la tabella
del database, mentre la tabella
giornare.
B
A
riporta lo stato dell'information_schema
mostra le impostazioni attuali di VFront da ag-
Nell'esempio in gura è stato modicato 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 gura i campi che mostrano variazioni sono evidenziati in giallo.
Da questa schermata è possibile sincronizzare mediante la pressione del tasto
Sincronizza campi.
6.8.4 Ripristino manuale
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 gure 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.
6.9 I commenti SQL su campi e tabelle
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:
41
ˆ
i commenti di tabella saranno visibili nella home page dell'applicazione sotto
il nome (link alla maschera) della tabella
ˆ
i commenti dei campi saranno visualizzati sia nella maschera di amministrazione che come attributo title per i nomi dei campi nelle maschere. Nelle
maschere infatti, avvicinando il mouse al nome del campo, il cursore diventerà di tipo help (il punto interrogativo) e se è stato commentato il campo
apparirà la descrizione del campo stesso.
E' pertanto suggerito di commentare scrupolosamente il vostro database, prassi
peraltro valida di per sè.
42
Figura 20: Gestione degli utenti
7 Gestione degli utenti
Come visto nel paragrafo 3.4 nella pagina 13, 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 è congurata
per trasmettere a VFront anche il nome e cognome, questi dati saranno registrati e
mostrati. Per non creare conitto con la gestione esterna degli utenti (via LDAP o
altre fonti di autenticazione), da VFront non è possibile modicare 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 13 sopra citato) la Guida all'installazione e la sezione relativa all'autenticazione esterna.
7.1 La tabella utenti
La gestione degli utenti su VFront è accessibile dal menù Amministrazione->Gestione
utenti. Da qui viene mostrata una tabella (come in gura 20) con gli utenti presenti
su VFront e le loro caratteristiche:
ID
identicativo univoco nella tabella utente
gruppo
indica il gruppo a cui appartiene l'utente. Il gruppo di appartenenza deter-
mina i diritti d'uso delle tabelle. Quando un utente accede per la prima volta
a VFront viene inserito nel gruppo predenito 0 - default.
livello
indica il livello di amministrazione di VFront.
43
nickname
cognome
nome
corrisponde all'email utilizzata per l'autenticazione
cognome dell'utente
nome dell'utente
data inserimento
modica
data di inserimento (o primo accesso) dell'utente su VFront
permette di attribuire l'utente ad un altro gruppo o cambiare il livello di
amministrazione
elimina
permette di cancellare l'utente dal DB VFront. Se si è impostata un'au-
tenticazione mediante strumenti esterni (LDAP, altro DB, etc.) l'utente verrà
ricreato al suo primo accesso.
E' inoltre possibile
ltrare 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).
7.2 Modica dei diritti ed attribuizione ad un gruppo
Dalla tabella in gura 20 nella pagina precedente, cliccando su modica è 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 deniti 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.
7.3 Cancellazione di un utente
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 congurata (dal le di congurazione) 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).
44
8 Il sistema di log e ripristino operazioni
Per accedere al menù dei Log si vada sul link 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:
ˆ
Data ed ora dell'operazione
ˆ
Il tipo di operazione (INSERT | UPDATE | DELETE | RIPRISTINO)
ˆ
Autore dell'operazione (nome, cognome se presenti e ID)
ˆ
Il gruppo dell'autore dell'operazione
ˆ
La fonte indica da quale strumento è stata fatta l'operazione (per ora sempre
m
che sta per maschera. In futuro saranno tracciate anche le operazioni
relative alle sotto-maschere)
ˆ
ID e tabella su cui l'operazione è stata eettuata
Le operazioni vengono mostrate con colori dierenti in base al tipo, come si vede
in gura 21.
E' possibile ltrare le righe del log al ne di trovare più facilmente le operazioni
che si stanno cercando.
Il ltro (che viene attivato cliccando sul link ltro sui log) permette di cercare
traccia di una operazione in base a numerosi parametri:
ˆ
Tipo di operazione
ˆ
Tabella
ˆ
Utente
ˆ
Data (o intervallo di data)
In questo modo è molto facile trovare il record cancellato o modicato per sbaglio,
ad esempio, dall'utente Ciccio Pasticcio tra ieri ed oggi.
8.1 Il dettaglio del log
Ogni operazione tracciata dal log può essere analizzata in dettaglio. Cliccando sul
link dettaglio (si veda la gura 21) è possibile avere ulteriori informazioni sull'operazione eseguita. In caso di modica vine mostrata una tabella che riporta i campi
della tabella nella condizione precedente e successiva alle operazioni. I campi modicati sono evidenziati in giallo. Viene mostrata inoltre la eventuale reversibilità
dell'operazione (v. gura 22).
45
Figura 21: Log di VFront (la colonna utente è stata volutamente oscurata)
46
Figura 22: Il dettaglio del log
47
8.2 Il ripristino
VFront permette alcune interessanti funzioni di ripristino. Nel caso di record cancellati per sbaglio o modicati 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 gura 22, viene mostrato il log di una operazione di modica.
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 modicato il contenuto del campo
myemail.
Per ripristi-
nare l'operazione è suciente cliccare sul tasto Ripristina questa operazione e il
contenuto del campo myemail diverrà nuovamente [email protected].
8.2.1 FAQ sul ripristino per i più curiosi
Cosa signica 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 modica 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 aermato nel paragrafo 1.5 nella pagina 7 (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 le di congurazione.
Leggi la Guida
all'installazione per capire come.
8.3 Lo storico dei record
Il log permette inne di mostrare lo storico di un record. Cliccando sul link storico
(si veda la gura 21) si accede ad una pagina che mostra tutte le operazioni che
48
sono state compiute sul record: l'inserimento, le modiche, l'eventuale cancellazione e l'eventuale/i ripristino/i. Naturalmente lo storico è dettagliato solo qualora le
operazioni suddette siano state eettuate tramite le maschere di VFront. L'applicazione infatti non ha modo di tracciare operazioni che siano state eettuate tramite
altre interfacce al database di dati (come ad esempio script da shell, o operazioni
da phpMyAdmin, per esempio).
49
9 I report
Avvertenza: i report su VFront sono in fase sperimentale di sviluppo,
questa sezione potrebbe essere modicata in futuro. Alcune caratteristiche potenzialmente utili sono ancora in fase di progettazione e verranno
implementate a breve.
9.1 Creazione di un report su VFront
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.
gura 24).
9.1.1 La logica dei report su VFront
I report di VFront si basano sul formato XML, che può essere mostrato così com'è o
utilizzato per generari altri formati (si veda la gura 23). I le 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 le XML può essere trasformato attraverso due processi principali:
1. Attraverso l'associazione di un le di stile XSL (inserito dall'amministratore)
al le XML e mediante l'uso di un XSLT Processor (che può essere PHP se
si sceglie una tecnologia lato server o il browser dell'utente, se si sceglie una
tecnologia lato client) viene generato il le di report in formato XHTML che
può essere visualizzato direttamente su web.
2. Mediante un le XSL-FO (inserito dall'amministratore) e l'utilizzo di Apache
FOP
7 è possibile generare PDF, RTF ed altri formati.
Ci sono due possibilità per generare i report:
ˆ
report basati su tabelle
ˆ
report basati su query
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
8
query SQL scritta ad hoc .
7 Apche FOP non è compreso nella distribuzione di VFront, ma può essere scaricato
gratuitamente dal sito uciale. Per maggiori informazioni si veda la sezione 13 nella pagina 68.
8 In realtà i report generati da query orono uno svantaggio notevole: non è possibile generare
50
Figura 23: Schema del funzionamento dei report su VFront
51
9.1.2 Creazione nuovi report e diritti d'accesso
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 denire
alcuni parametri:
Nome report
Tabella
un nome descrittivo per il report
(solo se si è scelto di generare il report da una tabella o da una vista) indica
la tabella dalla quale generare il report. Vengono mostrate in una tendina le
tabelle e le viste attualmente disponibili.
Denizione query SQL
(solo se si è scelto di generare il report da una query)
indica la query SQL dalla quale generare il report. E' presente un tasto Test
per provare la correttezza formale della query.
Tipo di accesso
del report. Il report può essere :
ˆ
Non accessibile ad esempio perché in fase di prova
ˆ
Pubblico (web) in tal caso il report è aperto sul web. Attenzione, in questo
modo i dati della vostra tabella o della vostra query saranno accessibili a tutti,
non solo agli utenti del front-end.
ˆ
Front end in questo caso i report sono accessibili solo agli utenti autenticati
su VFront
ˆ
Solo il/i gruppo/i in questo caso i report sono accessibili solo agli utenti
autenticati su VFront appartenenti ad uno o più gruppi specicati
XSL da associare
E' possibile fare l'upload di un foglio di stile XSL da applicare
a questo report. In caso contrario verrà applicato un foglio di stile di default.
XSL-FO da associare
Utile per i report in PDF e in altri formati impaginati (si
veda oltre). E' possibile fare l'upload di un foglio di stile XSL-FO da applicare
a questo report. E' possibile utilizzare il foglio predenito. La scelta di default
è nessuno ossia non viene generato alcun report.
9.2 Report (X)HTML: utilizzo di fogli di stile XSL lato server
e lato client
I report (X)HTML sono generati tramite XML e trasformazione con foglio di stile
XSL. Questa trasformazione può essere eseguita lato client o lato server.
Una
un report di un singolo record basandosi sulla chiave primaria. Tuttavia i report generati da query
orono una maggiore possibilità di personalizzazione e un controllo maggiore sui dati. Esiste un
sistema (che qui si consiglia di applicare) per avere i vantaggi delle tabelle e la essibilità delle
query, ossia la generazione di
viste
SQL scritte per la generazione di report. VFront tratterà la
vista come una normale tabella, purchè si sia denita manualmente la chiave primaria per la vista
dall'impostazione dei registri (per maggiori informazioni si veda anche l'impostazione delle viste a
pag. 37).
52
Figura 24: Tabella dei report disponibili: link anteprima
variabile del menù Variabili di sistema (si veda oltre, paragrafo 11 nella pagina 61)
permette di scegliere se eettuare la trasformazione lato client o lato server.
La trasformazione
lato client implica che il browser carichi l'XML a cui è asso-
ciato il foglio di stile e eettui 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
server.
lato
9.2.1 Dove sono i report XHTML ?
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.
53
Figura 25: Report HTML (dettaglio)
Ad esempio il report HTML di default mostra un elenco dei record in tabelle,
separate da una linea come in gura 25:
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:
INDIRIZZO_VFRONT/xml/NOME_TABELLA/all/
http://
Mostra tutti i re-
cord della tabella (sconsigliabile qualora ci siano molti record)
Esempio: http://localhost/vfront/xml/banca/all/
INDIRIZZO_VFRONT/xml/NOME_TABELLA/OFFSET,LIMIT/
http://
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/
INDIRIZZO_VFRONT/xml/NOME_TABELLA/contatore /
http://
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/
54
INDIRIZZO_VFRONT/xml/NOME_TABELLA/id/ID_DEL_RECORD/
http://
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 ne 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:
INDIRIZZO_VFRONT/xml/@NOME_REPORT/all/
http://
Esempio:
http://localhost/vfront/xml/@report_banca_1/all/
INDIRIZZO_VFRONT/xml/@NOME_REPORT/OFFSET,LIMIT/
http://
Esempio:
http://localhost/vfront/xml/@report_banca_1/0,50/
INDIRIZZO_VFRONT/xml/@NOME_REPORT/contatore /
http://
Esempio:
http://localhost/vfront/xml/@report_banca_1/12/
9.3 Report PDF: XSL-FO e Apache FOP
VFront è predisposto per generare anche report in PDF attraverso fogli di stile XSLFO. Per farlo utilizza l'applicazione open source Apache FOP (licenza Apache 2.0,
http://xmlgraphics.apache.org/fop/).
Per utilizzare Apache FOP è necessa-
rio che l'applicazione sia presente sul server che si sta utilizzando.
E' necessario
anche impostare sul le di congurazione di VFront il path corretto di Apache FOP
(per dettagli si veda il le Guida all'installazione ). Alla data odierna esistono due
versioni stabili di Apache FOP: la 0.20.x e la 0.94. Nei test eettuati 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 vericare 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 è suciente 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
55
9.4 Altri formati di report e uso di Apache FOP 0.9 o successivo
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 del PDF con
la dierenze del tipo di formato che si vuole generare.
Per esempio:
http://localhost/vfront/xml/banca/id/10008/RTF genererà un
le RTF,
oppure http://localhost/vfront/xml/banca/id/10008/TXT genererà un le TXT.
Per ulteriori congurazioni si rimanda al le 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.
56
10 Statistiche e graci sui dati
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 graci 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.
10.1 La pagina statistiche
Quando si accede al menù statistiche per la prima volta ci si trova davanti ad una
pagina con due link:
ˆ
Crea una nuova statistica
ˆ
Dati popolamento tabelle
Dati popolamento tabelle è una statistica speciale di default che non fa altro che
mostrare un graco 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:
ˆ Nome statistica
E' il nome descrittivo della statistica, l'etichetta.
ˆ Descrizione statistica
Descrizione della statistica che si sta creando. Può essere utile come promemoria
ˆ Tipo di accesso per la nuova statistica
Le statistiche possono avere dei diritti di accesso. Attraverso questa caratteristica la statistica si può impostare come Pubblica (per tutti gli utenti di
VFront di livello 2), Accessibile solo al mio gruppo, Accessibile solo a me.
ˆ Tipo di graco desiderato
Ci sono al momento due scelte possibili: Barre e Torta. A seconda del tipo
di dato che si vuole rappresentare è più utile un tipo o l'altro.
ˆ Denizione statistica
In questa casella va scritto il codice SQL. Si noti come VFront si aspetti una
query che, per quanto articolata possa essere, restituisca due colonne:
chette e valori.
eti-
C'è anche un piccolo pulsante Test che permette di testare
57
Figura 26: Statistica di prova
al momento se la query genera un errore o è corretta (almeno formalmente).
Ad esempio ecco una query su due tabelle (banca e bancaagenzie). Il graco
mostra il numero di agenzie delle banche italiane con più di 500 agenzie. Si
noti come il primo campo selezionato sia etichetta ed il secondo sia un valore:
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 graco risultante (gura 26).
Qualora volessi visualizzare i dati con un graco a torta posso sempre
modicare
la statistica. Per farlo è suciente cliccare sul link modica che appare vicino al
nome con link della statistica.
Il risultato è mostrato nella gura 27.
E' sempre possibile eliminare una statistica. Nel menù principale è suciente
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 graca sono
calcolati in tempo reale.
58
Pertanto i dati saranno
Figura 27: Statistica di prova (con graco a torta)
59
sempre aggiornati in tempo reale, anche qualora venissero fatte modiche ai dati
nelle tabelle coinvolte nella query che genera la statistica.
60
11 Le variabili di sistema
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 le di congurazione descritto nel documento Guida
all'installazione.
Ci sono due tipi di variabili:
gruppo/registro.
le variabili
globali
e le variabili
speciche per
Le variabili globali permettono di creare delle impostazioni di
default, mentre le speciche creano delle eccezioni per uno specico gruppo registro.
Da questo è evidente che se una variabile è denita anche in modo specico per un
gruppo,
questa avrà priorità sull'impostazione globale.
Le variabili speciche possono anche non essere denite, ma se se ne vuole
denire una è suciente cliccare sulla voce Imposta nuova variabile e scegliere
dalla tendina delle variabili disponibili quella che si vuole denire specicatamente
per un gruppo / registro (v. gura 28).
Si noti come in gura non sia presente il menù delle variabili speciche 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 speciche.
Le variabili disponibili sono:
altezza_iframe_tabella
Altezza in numero di pixel del rettangolo per visualizzare
i dati in tabella
Si tratta della dimensione dell'iframe nella vista tabella delle maschere delle
tabelle
crea_nuovo_valore_ref
permette in caso di tabella parent scrivibile l'inserimento
di nuovi valori nella medesima
Se attivato questo parametro fa si che appaia un link nelle tendine dei campi
1 a molti, per poter aprire la scheda relativa alla tabella.
Ad esempio qualora la tendina (il campo) puntasse ad una tabella Cliente e
non fosse presente il cliente desiderato in questo modo è possibile aggiungere il
record e continuare la compilazione della tabella. La funzione dipende anche
dal fatto che l'utente possa o meno operare sulla tabella parent, in questo
esempio la tabella Cliente.
formati_attach
js_test
Formati permessi per i le allegati, separati da virgola
Abilita i controlli javascript sui contenuti dei campi
Si veda per maggiori informazioni il paragrafo 6.4.1 sul controllo dei valori
inseriti nei campi.
max_char_tabella
Numero massimo di caratteri da visualizzare nelle viste a ta-
bella. (0 = tutti)
max_tempo_edit
Tempo di disponibilità del record
Questo parametro è relativo al lock del record, qualora più utenti volessero
61
Figura 28: Variabili di sistema
62
modicare contemporaneamente un record della stessa tabella. Il meccanismo
di lock decade a) quando il primo utente che è entrato in modica sul record
salva il record; b) il primo utente che è entrato in modica annulla la modalità
modica; c) qualora l'utente però restasse molto tempo in modica sul record
questo dopo il numero di secondi espresso da questa variabile decadrebbe
ducio.
n_record_tabella
Numero di record da visualizzare per le tabelle dei dati
passo_avanzamento_veloce
Numero di record impostati per il movimento velo-
ce tra i record nelle tabelle
Si tratta del numero di record di avanzamento dei tasti con icona > > e < <
nelle maschere delle tabelle
recupero_password
Se abilitato mostra nel login l'opzione di modicare la pas-
sword (non funziona in caso di login esterno)
Funziona solo qualora l'autenticazione sia impostata direttamente sul DB
VFront e non ad esempio su LDAP e/o su database esterni.
Questo perché si presuppone che VFront non debba ne possa modicare i dati
di un database esterno o di una directory LDAP.
server_xslt
Indica se utilizzare la trasformazione XSLT lato server (da disabilitare
in caso di mancato supporto PHP)
Si consiglia di tenere la variabile attivata qualora si disponga del modulo PHP
in oggetto in modo da mandare al client direttamente la pagina XHTML e non
l'XML con collegamento all'XSL. Questo è un buon accorgimento in termini di
prestazioni dell'applicazione e sicurezza. Qualora non fosse possibile utilizzare
sul proprio server le funzioni di trasformazione si imposti la variabile su NO
e la trasformazione sarà adata al client (il browser web).
shortcut_tastiera_attivi
Permette l'uso delle scorciatoie da tastiera nelle ma-
schere delle tabelle e delle viste (si veda anche il relativo paragrafo 4.5 nella
pagina 19).
Tendenzialmente queste funzioni possono essere molto utili per un uso più
veloce e produttivo di VFront. Qualora si utilizzassero browser particolari o
ci fossero problemi da qui è possibile disattivare questa opzione.
shortcut_tastiera_popup
Mostra nelle maschere una piccola linguetta a destra
che mostra un popup che ricorda le scorciatoie da tastiera all'utente. Il comportamento di questa variabile è comunque inuenzato dalla variabile precedente (shortcut_tastiera_attivi): qualora le scorciatoie da tastiera fossero
disattivate, non verrà mostrata la linguetta anche se questa variabile fosse
attiva (in quanto disorienterebbe inutilmente l'utente).
textarea_cols
textarea_rows
Numero di colonne per i box di testo nelle maschere
Numero di righe per i box di testo nelle maschere
63
usa_calendari
Indica se devono essere utilizzati o meno i calendari per facilitare
l'inserimento nei campi data (0=no, 1=si)
Si suggerisce di attivare i calendari.
Qualora questo non fosse possibile si
suggerisce di attivare un controllo sulla validità del campo (si veda 6.4.1 nella
pagina 30 ) per la correttezza dell'input della data.
Infatti sia PostgreSQL
che MySQL si aspettano tendenzialmente le date in formato aaaa-mm-gg,
formato che l'utente medio non userà di certo.
usa_history
Imposta se si deve utilizzare la history del browser
Permette quindi di utilizzare i tasti avanti e indietro del browser senza uscire
dalla scheda.
E' una buona idea tenere la variabile su SI, per migliorare
l'usabilità dell'applicazione. Si è riscontrato che Opera non supporta questa
caratteristica: per una lista di browser che supportano pienamente VFront
vedere il paragrafo 2.2 nella pagina 8.
64
Figura 29: Esportazione dei dati da una maschera
12 Esportazione dati e backup database
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
denire 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. gura 29):
Formato.
Si può scegliere il formato CSV (comma separate value), consigliato per
tabelle con molti dati, HTML standard, ODS ossia il formato open document,
usato tra gli altri da OpenOce Calc, e XLS utilizzato da Microsoft Excel.
Modalità
recupero dati: Dati come presenti in tabella signica che viene mostrata
la tabella in maniera raw , ossia vengono mostrati i dati grezzi così come
sono archiviati in database. Viceversa Dati con formattazione impostata nel
registro del gruppo, mostrerà i dati con le impostazioni del registro, cioè ad
esempio se per il campo codiceComune si è impostato di prendere i dati da
una tabella parametrica con tutti i comuni e si sceglie di mostrare il nome
del comune in questo tipo di impostazione, si leggerà il nome del comune,
mentre nella modalità raw si leggerà il codice numerico che lo identica (e
che poco potrà dire ad un utente normale).
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
65
o pgdump). Questo permette un veloce recupero sia del database dati e di quello delle regole, ad esempio per un backup.
formato standard Linux (.tar.gz).
66
I le vengono compressi ed inviati in
13 Test impostazioni VFront
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 vericare che tutti i parametri richiesti siano congurati correttamente.
Attualmente sono qui presenti cinque sezioni principali:
1. Versione software
Mostra la versione di PHP e del database (MySQL o PostgreSQL) attualmente
in uso.
2. Moduli PHP
VFront utilizza alcuni moduli PHP non sempre presenti. Qui viene mostrato
il caricamento dei moduli che VFront utilizza
3. Moduli PEAR
VFront utilizza PEAR e i pacchetti Image/Graph e Image/Canvas (licenza
LGPL) per produrre i graci delle statistiche. Viene qui mostrata l'esistenza
dei pacchetti suddetti.
4. Impostazioni cartelle scrivibili
VFront utilizza per il suo corretto funzionamento alcune cartelle dove scrive
le temporanei o di altro genere.
Queste cartelle devono essere scrivibili
dall'utente Apache e questa sezione analizza che questo possa avvenire.
5. Apache FOP
Questa sezione riguarda l'eseguibile FOP utilizzato da VFront per la reportistica in PDF e altri formati mediante le trasformazioni XSL-FO. Viene analizzato
se esiste l'eseguibile FOP e la sua versione in uso.
67
Appendice 1 - Crediti e applicazioni utilizzate
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.
Prototype http://prototype.conio.net/ Libreria di funzioni javascript
Licenza MIT - http://www.opensource.org/licenses/mit-license.php
Scriptaculous http://script.aculo.us/ Libreria di funzioni javascript
Licenza MIT - http://www.opensource.org/licenses/mit-license.php
PHPMailer http://phpmailer.sourceforge.net/ Libreria per l'invio di email
tramite PHP
Licenza LGPL - http://www.opensource.org/licenses/lgpl-license.php
YAV http://yav.sourceforge.net/ Tool di validazione Javascript
Licenza LGPL - http://www.opensource.org/licenses/lgpl-license.php
Apache FOP http://xmlgraphics.apache.org/fop/ Generazione di report PDF
ed altri formati mediante trasformazione XSL-FO
Licenza Apache 2.0 - http://www.apache.org/licenses/
DHTMLxGrid http://www.scbr.com/docs/products/dhtmlxGrid/ Generatore di tabelle dinamiche in javascript nella vista tabella
Licenza GPL - http://www.gnu.org/licenses/gpl.html
Algoritmi MD5 e SHA1
per Javascript
http://pajhome.org.uk/crypt/md5 Ge-
neratore di hash md5 e sha1 in javascript nei campi password delle maschere
Licenza BSD - http://www.opensource.org/licenses/bsd-license.php
FCKeditor - http://www.fckeditor.net/ Rich text editor in javascript
Licenza LGPL - http://www.opensource.org/licenses/lgpl-license.php
JsCalendar http://sourceforge.net/projects/jscalendar/ Generatore di calendari in javascript
Licenza GPL - http://www.gnu.org/licenses/gpl.html
phpGettext http://sourceforge.net/projects/phpgettext/
Libreria per la
gestione dello standard gettext in modalità inprepretata
Licenza GPL - http://www.gnu.org/licenses/gpl.html
Le icone
utilizzate fanno parte del progetto Crystal
crystal/
http://www.everaldo.com/
Licenza LGPL - http://www.everaldo.com/crystal/?action=license
Questo documento inne è stato scritto con strumenti open source: con LYX (http:
//www.lyx.org) per la versione LATEX e PDF; l'HTML generato da LYX è stato
poi modicato con NVU (http://www.nvu.com/) e JEdit (http://www.jedit.
org/).
68