| [ PHPXref.com ] | [ Generated: Sun Jul 20 20:32:18 2008 ] | [ Syntax Desktop 2.3.1 ] |
| [ Index ] [ Variables ] [ Functions ] [ Classes ] [ Constants ] [ Statistics ] | ||
[Summary view] [Print] [Text view]
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html> 3 <head> 4 <meta http-equiv="content-type" 5 content="text/html; charset=ISO-8859-1"> 6 <title>Documentazione per gli sviluppatori</title> 7 <meta name="author" content="dynamick"> 8 </head> 9 <body> 10 <h1>Manuale per lo sviluppatore</h1> 11 Questo testo vuole essere un documento di aiuto per chi vuole 12 cominciare a personalizzare/modificare il codice sorgente di Syntax 13 Desktop. Non tutte le parti sono complete. Per informazioni ulteriori 14 scrivete a info_at_dynamick.it.<br> 15 <br> 16 <ul> 17 <li><a href="#DESKTOP">Desktop</a><br> 18 </li> 19 <li><a href="#MODULI">Moduli</a></li> 20 <ul> 21 <li><a href="#AutoAdmin_AA">AutoAdmin</a></li> 22 <ul> 23 <li><a href="#Prefazione">Prefazione</a></li> 24 <li><a href="#Linterfaccia">L'interfaccia</a></li> 25 <li><a href="#Modus_Operandi">Modus Operandi</a></li> 26 <li><a href="#Larchitettura">L'architettura</a></li> 27 <li><a href="#Il_database">Il Database</a></li> 28 </ul> 29 <li>Dump</li> 30 <li>Config</li> 31 <li>Login</li> 32 </ul> 33 </ul> 34 <br> 35 <h2><a name="DESKTOP"></a>DESKTOP</h2> 36 In lavorazione<br> 37 <br> 38 <h2><a name="MODULI"></a>MODULI</h2> 39 Syntax è strutturato in modo modulare. I moduli hanno sfariate 40 funzioni e solitamente ricoprono la zona centrale dell'interfaccia.<img 41 src="img/interfaccia.jpg" title="" 42 alt="zona dell'interfaccia per la visualizzazione dei moduli" 43 style="height: 276px; width: 510px;"><br> 44 I moduli risiedono all'interno della cartella <span 45 style="font-weight: bold;">/moduli</span>. In questo momento questi 46 sono i moduli installati:<br> 47 <img src="img/moduli.gif" title="" 48 alt="moduli attualmente presenti su Syntax" 49 style="width: 144px; height: 290px;" align="left"><span 50 style="font-weight: bold;">aa (AutoAdmin)</span>: E' il modulo 51 principe di tutta l'applicazione. Ha lo scopo di interfacciarsi con il 52 database e di gestire i dati utente e di sistema. I dati di sistema 53 comprendono l'anagrafica utente-gruppi, la struttura dei servizi e dei 54 menu di ciascun utente. I dati utente sono invece dati che l'utente 55 definisce e che deve gestire, come ad esempio le news, gli articoli, 56 gli appuntamente e così via. AA <br> 57 <span style="font-weight: bold;">config</span>: Questo modulo ha il 58 compito di gestire la configurazione del sistema. Tramite config 59 è possibile cambiare i dati di connessione al database. Apre, 60 legge, e salva il file /config/cfg.php e quindi necessita dei permessi 61 di scrittura su tale file.<br> 62 <span style="font-weight: bold;">credits</span>: Pagina dei crediti<br> 63 <span style="font-weight: bold;">dump</span>: Modulo dedito al 64 salvataggio del database (index.php) e del suo ripristino (dosql.php). <br> 65 <span style="font-weight: bold;">filemanager</span>: Pensato come 66 web-ftp, ancora da sviluppare<br> 67 <span style="font-weight: bold;">help</span>: Pagine di help<br> 68 <span style="font-weight: bold;">login</span>: Modulo che gestisce 69 l'autenticazione utente<br> 70 <span style="font-weight: bold;">shell</span>: Implementazione di una 71 shell via web<br> 72 <span style="font-weight: bold;">windows</span>: Modulo che gestisce le 73 icone e finestre dhtml sul desktop di syntax. Modulo dismesso per 74 problemi di crossbrowsing.<br> 75 <br> 76 Di tutti questi moduli, è doveroso spendere un po' di tempo per 77 analizzare AutoAdmin, il modulo pilastro su cui si basa tutta 78 l'applicazione.<br> 79 <br> 80 <h3><a name="AutoAdmin_AA"></a>AutoAdmin (AA)</h3> 81 <h4><a name="Prefazione"></a>Prefazione </h4> 82 Nato da precedenti implementazioni, AutoAdmin ha ormai una storia di 3 83 anni. <br> 84 AA è mosso dall'idea di poter gestire qualsiasi tipo di dato e 85 di adattarsi ad innumerevoli varietà di problemi in modo da 86 rendere la vita di un programmatore web (quale sono io) molto 87 più semplice. Ho speso infatti la gran parte dei miei primi anni 88 di lavoro ad implementare interfacce di amministrazione private (back 89 office) per amministrare siti web. Col tempo però ho scoperto 90 che le funzionalità da implementare erano grosso modo sempre le 91 stesse (news, articoli, appuntamenti, ecc...). Ho pensato allora un 92 modo per poter generare in modo dinamico, dalla stessa applicazione 93 web, dei servizi per amministrare tali contenuti (e da qui il nome 94 AutoAdmin). <br> 95 <br> 96 <h4><a name="Linterfaccia"></a>L'interfaccia</h4> 97 E' stato scelto di implementare l'interfaccia di AA tramite frame in 98 modo da allegerirla da continui reload completi della pagina. La 99 struttura dei frame è così composta:<br> 100 <img src="img/frame.gif" title="" alt="composizione dei frame" 101 style="width: 510px; height: 276px;"><br> 102 I file che gestiscono incaricati di mostrare ciascun frame sono 103 schematizzati dal seguente diagramma:<br> 104 <img src="img/frame-file.gif" title="" alt="i file dei frame" 105 style="width: 159px; height: 297px;"><br> 106 Il frame principale è il Content Frame dentro cui vengono 107 istanziate le classi che muovono l'applicazione. In particolare, 108 all'interno di questo frame, viene istanziata la classe SynContainer, 109 di cui parleremo nella prossime sezioni.<br> 110 <h4><a name="Modus_Operandi"></a>Modus Operandi</h4> 111 Definiamo innanzittutto cosa intendiamo per servizio:<br> 112 <span style="font-style: italic;"><span style="font-weight: bold;">servizio 113 </span>= struttura specializzata ad amministrare uno specifico dato<br> 114 </span>Più semplicemente, si potranno creare servizi per la 115 gestione delle news, servizi per la gestione degli appuntamenti, ecc...<br> 116 <br> 117 In una piattaforma multiutente come è Syntax Desktop, ho potuto 118 assegnare all'amministratore lo strumento per la generazione dei 119 servizi (anche questo è un servizio, eheheh). L'operazione di 120 generazione/creazioni comporata tre azioni di basso livello 121 (trasparenti all'utente):<br> 122 1) Creazione una tabella sul database con i rispettivi campi (se 123 pensiamo alle news, si crea la tabella news con i relativi campi: id, 124 titolo, testo, data).<br> 125 2) Salvataggio della struttura del servizio in apposite tabelle del 126 database per una futura modifica del servizio<br> 127 3) Tramite le informazioni sulla struttura del servizio, la 128 visualizzazione dell'interfaccia per la gestione dei dati 129 (l'interfaccia è generata dinamicamente).<br> 130 <br> 131 Un utente del sistema, al quale verranno dati i permessi di 132 visualizzazione del servizio appena generato, potrà accedere ai 133 dati, modificali e cancellarli.<br> 134 <h4><a name="Larchitettura"></a>L'architettura<br> 135 </h4> 136 L'architettura dei servizi si modella su uno schema ad oggetti 137 visualizzato nella seguente immagine:<br> 138 <img 139 src="file:///C:/Documents%20and%20Settings/michele/Documenti/Sites/Open%20Project/syntax%20desktop%20project/Doc/img/uml.gif" 140 title="" alt="Diagramma Uml" style="height: 462px; width: 733px;"><br> 141 Un servizio è sostanzialmente un contenitore di elementi. 142 SynContainer ha infatti lo scopo di raggruppare le varie componenti del 143 servizio e di fornire metodi comuni di gestione. Ogni SynContainer 144 contiene uno o più elementi (SynElement). Questi elementi si 145 specializzano in base alla loro funzione. Nel diagramma sopra sono 146 elencati solo tre elementi specializzati (synDate, synTextArea e 147 SynPassword) ma allo stato attuale, sono implementati 16 elementi 148 specializzati.<br> 149 SynContainer rappresenta una tabella del database mentre SynElement 150 sono i suoi campi. Aggiungendo o rimuovendo un SynElement dal 151 SynContainer si opera anche sul database modificandone la struttura. E' 152 anche chiaro che se aggiungo o cancello un SynContainer, aggiungo o 153 cancello una tabella sul database.<br> 154 SynContainer e le specializzazioni di SynElement (SynDate, SynTextArea, 155 SynPassword, ecc) inoltre si occupano della gestione dell'interfaccia 156 per la visualizzazione dei dati da essi rappresentati tramite opportuni 157 metodi che mettono a disposizione.<br> 158 All'interno del filesystem, le classi si trovano in questa posizione: <img 159 src="img/classi.gif" title="" alt="classi" 160 style="width: 159px; height: 54px;"><br> 161 <h4><span style="font-weight: bold;"></span><a name="Il_database"></a>Il 162 database</h4> 163 Il modello del database è rappresentato dal seguente diagramma:<br> 164 <img src="img/syntax-db-model.png" title="" alt="Modello del DB" 165 style="width: 734px; height: 728px;"><br> 166 <br> 167 <br> 168 </body> 169 </html>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| [ Powered by PHPXref - Served by Debian GNU/Linux ] |