Sei in Home page » Prodotti » Opensource » WebGUI » SQLEdit W(eb)Object

Soluzione integrata di telefonia su internet a banda larga.
Cerca su questo sito:  

Vuoi essere aggiornato in tempo reale su tutto quello che mi succede giorno per giorno?
Visita il mio nuovo blog

SQLEdit: un WebGUI W(eb)object.

Versione corrente: 06.03.03/2005-01-25 (beta)

Annuncio: ho ricevuto molte richieste riguardo ad una versione di SQLEdit per le ultime versioni di WebGUI ossia una conversione di questo Wobject nel nuovo formato di oggetti di WebGUI, gli Assets.

Questo modulo è stato svilupato nel mio tempo libero e, nonostante questa pagina contenga, alla fine, un modulo per fare una donazione volontaria, per supportare questo progetto, non ho mai ricevuto nulla. Purtroppo non ho, nel prossimo futuro, del tempo libero, per cui devo considerare questa richiesta di aggiornamento come una fund-a-feature.

Per cui, quando raggiungerò, dalla data odierna 2 maggio 2005, la cifra di almeno 100 euro di donazioni per questo progetto inizierò la conversione di questo progetto per WebGUI 6.5.x.

Hai bisogno di questo modulo per WebGUI 6.5.x? Dona 5 €, 10 €, 20 €, 100 € e lascia il tuo e-mail. Quando raggiungerò la quota di 100 € verrai avvertito dell'inizio e del rilascio della nuova release di SQLEdit. Aiutami ad aiutarti.

Quando ho installato per la prima volta WebGUI sono rimasto molto impressionato dalla semplicità con qui, anche utenti inesperti, potevano creare dei siti web intriganti. Quando poi sono passato a studiare l'interfaccia con cui creare nuovi oggetti, chiamati Wobject, all'interno di WebGUI, quello che ho trovato è stato un ambiente semplice e produttivo che permette di aggiungere plugins a WebGUI in modo veramente efficiente.

Quello che stavo cercando era, per l'appunto, un content management system (C.M.S.) da dare in mano a utente che non avevano alcuna esperienza di HTML ma che dovevano gestire un portale web di dimensioni abbastanza grandi. WebGUI è stata la scelta migliore. Anche quando è stato necessario accedere a dei dati presenti su tabelle di un database, WebGUI mi è stato di aiuto grazie al suo modulo standard chiamato SQLReport.

Le note "dolenti" sono arrivate quando il project manager del sito mi ha evidenziato la necessità di modificare i dati presenti su quelle tabelle di database. Purtroppo WebGUI non forniva questa funzionalità e cosi è stato necessario costruire questo modulo.

Che cos'è SQLEdit?

SQLEdit è un W(eb)object per WebGUI (http://www.plainblack.com/webgui) uno dei più popolari content management system open source. Attualmente è stato testato sulla release 5.5, 6.0, 6.1 e 6.2 su Linux e Windows. Permette di gestire completamente tabelle su MySQL.

Hot news: A partire dalla versione 06.03.01, SQLEdit permette di gestire tabelle presenti su database Microsoft® SQL Server. Questo supporto è attualmente in versione beta e quindi potrebbero esserci problemi o funzionalità non completatamente supportate. Per esempio, probabilmente non funziona, su questo tipo di database, l'upload di file binari.

Il suporto a Microsoft® SQL Server è stato testato con questi driver DBD:

  • DBD:Sybase via freeTDS sotto Linux
    DSN di esempio:
        dbi:Sybase:server=your_server;database=your_db
    con queste entry nel file di configurazione freetds.conf
        [your_server]
        host = your_server
        port = 1433
        tds version = 8.0
  • DBD:ODBC tramite  system DSN sotto Windows
    DSN di esempio:
        dbi:ODBC:DSN=sqledit
  • DBD:ADO tramite autenticazione standard
    DSN di esempio:
       dbi:ADO:Provider=sqloledb;Data Source=(local);Initial Catalog=sqledit;

Tutti i test sono stati fatti con Microsoft® SQL Server 2000 sotto Windows 2000.

Questo modulo permette di costruire dei moduli web per aggiungere, editare e cancellare dati da tabelle di database utilizzando le funzionalità semplificate di WebGUI per la generazione di tali moduli

Dando semplicemente il percorso ad un database (DSN, username e password) e il nome di una tabella del database (che può essere anche selezionata da una lista di tabelle), questo Wobject costruisce un form con tutte le colonne della tabella cercando di settare, per ogni colonna, il campo di input più appropriato. Per esempio, se la colonna è di tipo "data", un campo con un bottone calendario e un javascript per la validazione delle date viene aggiunto sul form; se una colonna è auto_incrementale ossia il suo valore numerico incrementa automaticamente quando un nuovo record è aggiunto, allora viene aggiunta sul form una label visibile ma non scrivibile.

Comunque, le proprietà dei campi del form possono essere cambiate dai content manager del sito ossia tu puoi, per esempio, modificare un campo di testo per trasformarlo in una lista di elementi di modo da costringere chi inserisce i dati a selezionare un valore tra alcuni prestabiliti.

Il layout con cui appare il modulo è personalizzabile in quanto fa uso dei template seguento la filosofia di WebGUI

Punti di forza.

  • Facilità nel creare web forms basati su database
  • Possibilita di inserire, editare e cancellare record sul database
  • Upload di file su colonne di tipo BLOB
  • Modificare e cancellare record da tabelle correlate con chiavi esterne in relazione uno-a-uno o uno-a-molti.
  • Personalizzazione del layout di ogni colonna con la possibilità di settare visibilità, tipo di campo modulo da utilizzare, valori di default, elenchi di possibili valori, etc.
  • Convalida e restrizione sui possibili valori dei campi imputabili dagli utenti
  • Notifica via e-mail delle modifiche eseguite sui record del database.

Come installare il modulo.

Fate riferimento al file docs/SQLEdit/install.txt per i dettagli relativi all'installazione. Ricordate che per utilizzare questo modulo (come anche il modulo standard SQL Report, è necessario essere un utente con UId Level 9 (guru) altrimenti il modulo non apparirà nella lista dei moduli disponibili.

Come si usa SQLEdit.

Vediamo di capire come si usa SQLEdit facendo alcuni esempi.

Prima di tutto creiamo una nuova tabella nel database di WebGUI. SQLEdit supporta tranquillamente anche tabelle presenti su database esterni a WebGUI ma, per semplicita, in questo esempio, aggiungiamo la tabella nello stesso database di WebGUI

Eseguiamo il seguente codice da una console per creare una nuova tabella chiamata test_anagr nel database di WebGUI:

	root@devel# mysql -p WebGUI
	mysql> CREATE TABLE `test_anagr` (
		`id` INT NOT NULL AUTO_INCREMENT ,
		`name` VARCHAR( 255 ) NOT NULL ,
		`birthday` DATE NOT NULL ,
		`sex` ENUM( 'M', 'F' ) NOT NULL ,
		PRIMARY KEY ( `id` )
		);

Apriamo ora WebGUI entrando con un utente di amministrazione ed attiviamo l'interfaccia amministrativa. Aggiungiamo una nuova pagina chiamandola "test" e impostiamo le proprietà "Cache Timeout" e "Cache Timeout (Visitors) a 0. Aggiungiamo quindi un elemento di tipo SQLReport.

Aggiungiamo

<a href="test_edit">Add new record</a>

 

nella descrizione del campo (se si usa Internet Explore, entrate in modalità codice tramite l'icona "<>") cosi che la finestra "description" appaia cosi impostata:

aggiungiamo inoltre questa query SQL nel campo "Query"

select * from test_anagr

 

cosi che la finestra "query" appaia cosi impostata:

Cambiamo tab e andiamo nelle proprietà di layout dell'oggetto.

Chi ha WebGui 5.x, deve aggiungere questo codice direttamente nel campo "report template":

	<table border=1>
	^-;
	<tr><td>^0;</td><td>^1;</td>
	<td><a href="test_edit?exec=edit&id=^0;">Edit</td>
	<td><a href="test_edit?exec=delete&id=^0;">Delete</td>
	^-;
	</table>
 

Chi ha invece WebGUI 6.x, deve creare un nuovo template. Cliccate sul pulsante "modifica" del template, copiate il template di default di SQLReport in un nuovo template che chiamerete "SQLReport test_anagr" e modificate questo nuovo template di modo che il contenuto del tag <tmpl_loop rows_loop> risulti cosi fatto:

	<tmpl_loop rows_loop>
	<tr>
	<tmpl_loop row.field_loop>
	<td class="tableData"><tmpl_var field.value></td>
	</tmpl_loop>
	<td><a href="test_edit?exec=edit&id=<tmpl_var row.field.id.value>">Edit</td>
	<td><a href="test_edit?exec=delete&id=<tmpl_var row.field.id.value>">Delete</td>
	</tr>
	</tmpl_loop>

Si vada quindi ad impostare questo come template dell'elemento SQLReport.

Ovviamente, in ambedue i casi, i link alla pagina di modifica e di cancellazione devono essere tali da contenere tutte le chiavi primarie con i rispettivi valori relativi al record che si vuole cancellare o editare.

Andiamo infine nel tab dei privilegi e inseriamo DSN, username e password per accedere al database di WebGUI o selezioniamo questo elemento nel campo dei "database link" se disponibile.

Dopo aver salvato l'oggetto dovremmo aver ottenuto qualcosa di simile:

Finora nulla fuori dall'ordinario è stato fatto; è stato creato un SQLReport che mostra gli id e i nomi presenti nella tabella "test_anagr"

E' ora venuto il momento di creare la pagina test_edit.

Aggiungiamo quindi una nuova pagina e chiamiamola test_edit, impostiamo le proprietà "Cache Timeout" e "Cache Timeout (Visitors) a 0. Aggiungiamo quindi un oggetto SQLEdit, andiamo direttamente nella maschera di impostazione dei privilegi dell'oggetto che dovrebbe apparire grossomodo cosi:

Inseriamo qui gli stessi dati inseriti nell'oggetto SQLReport. Come potete notare, in questo oggetto esiste un altro campo rispetto a SQLReport: il campo "table name". Qui andremo ad impostare il nome della tabella che vogliamo editare. Possiamo digitare direttamente il nome della tabella o, una volta inserito un link ad un database corretto, salvato l'oggetto e ritornati a questa schermata, otterremo una lista delle tabelle presenti nel database da cui potremmo selezionare la tabella che ci interessa.

Scegliamo quindi di editare la tabella "test_anagr" e salviamo il modulo (potrebbe accadere che appaia una schermata che ci chieda se vogliamo ricaricare la struttura della tabella. Premiamo su "Si" e proseguiamo). Se appare la schermata sotto... allora il modulo funziona :-)

Se torniamo alla pagina "test" si potrà aggiungere un nuovo record, modificarlo e cancellarlo. Aggiungiamo un nuovo record. Apparirà la seguente schermata:

Per "Salvare e tornare indietro" è necessario impostare la pagina di ritorno tra le proprietà dell'oggetto. Impostiamo tale valore alla pagina che contiene l'oggetto SQLReport:

Inseriamo quindi i dati nel modulo e salviamo tornando indietro.

Possiamo era editare questo record

e cancellarlo sia dalla pagina "test" che da "test_edit". Ovviamente ci verrà richiesta conferma circa questa operazione.

Se si "salva continuando ad editare" si potrà continuare ad editare lo stesso record dopo averlo salvato. Come detto, "salvando e tornando indietro" si torna alla pagina inserita nella proprietà "referer", sempre dopo aver salvato il record corrente. Se si "salva e aggiungi nuovo" si entrerà, dopo il salvataggio, in modalità addnew per l'aggiunta di un nuovo dato.

Come avrete potuto notare, SQLEdit cerca di capire, dal tipo di campo nel database, quale elemento del form più si adatta ad esso. E' comunque sempre possibile, per l'utente, modificare il default premendo il pulsante "Modifica (Edit)" alla sinistra del campo. Per esempio andiamo a modificare il capo sex (sesso) dando maggiore significato alle chiavi "M" e "F" del database in questo modo:

Notate come sia possibile scegliere in che ordine i valori possibili verranno elencati, se con lo stesso ordine con cui sono inseriti nella casella sopra, se ordinati alfabeticamente per chiave o per valore.

E' anche possibile, se lo si desidera, cambiare il tipo di campo e la label.

E' possibile usare le macro di WebGUI per impostare i possibili valori per il campo e il valore di default. Nell'impostare la macro che imposta i valori possibili per il campo è importante far si che la macro ritorni i valori nella forma "chiave => valore\n" o "chiave\n".

Per esempio, si può impostare un campo come questo (utilizzando alcune macro di programmazione)

e ottenere un risultato tipo questo:

Le macro possono essere utilizzate anche per impostare il valore di default del campo. nell'esempio sopra, il valore selezionato dipenderà dall'utente con cui siete collegati.

Da notare l'andata a capo prima della fine della macro SQL sopra. Questa è molto importante in quanto, grazie ad essa, il risultato della macro risulta essere

1 => Visitor
3 => Admin

 

E' possibile eseguire query SQL anche da un database esterno utilizzando la mia macro SQLExt.

Per ogni campo è inoltre possibile impostare vari vincoli o restrizione sui possibili valori imputabili dall'utente. E' possibile, per esempio, assegnare una lunghezza minima e/o massima al numero di caratteri inseribili, il range di caratteri validi, il range di valori validi con una schermata di configurazione di facile utilizzo

Nella documentazione è possibile trovare esempi su come creare delle pagine per gestire tabelle corelate con relazioni di tipo uno-a-uno o uno-a-molti.

Da fare.

  • Aumentare la granularità di invio dei mail specificando l'invio su nuovi record, su aggiornamento di record già presenti e cancellazione di nuovi
  • Upload di file binary su Microsoft® SQL Server
  • La funzionalità "Torna indietro" sembra non funzionare su Windows
  • Supporto del database PostgreSQL

Fai una donazione

Questo software gratuito è stato sviluppato durante il mio tempo libero e quindi, durante nottate passate a sviluppare questo per voi invece che dormire come tutti gli altri mortali. Se trovate questo prodotto utile, sentitevi liberi di inviarmi una donazione. Sarete ricordati nelle mie preghiere ed aiuterete la mia anima a sentirsi meno sola durante le lunghe nottate di lavoro. Ovviamente se fate una donazione e avete una richiesta di modifica di questo software, cercherò di inserire la vostra richiesta con una priorità elevata rispetto alle altre cose da fare.

Potete fare una donazione in modo semplice, veloce e sicuro usando la vostra carta di credito, un vostro conto corrente bancario o un account PayPal esistente. Dopo aver premuto il pulsante a lato sarete trasferiti al sito sicuro di PayPal dove potrete inserire lo username e password del vostro account paypal, se già ne avete uno, o crearne uno nuovo (è facile e gratuito). Potrete quindi scegliere l'importo che desiderate donarmi. Tenete conto di una cosa: PayPal si prenderà una piccola parte dei soldi che mi donerete cosi, per esempio se mi invierete €20, io in realtà, ne riceverò €19.12, per €5 io riceverò €4.55 e cosi via.

JavaScript Menu Courtesy of Milonic.com







 Copyright© 1997-2006 Emiliano Bruni Online dal 16/08/1998 con visitatori Scrivimi all'indirizzo: