[ PHPXref.com ] [ Generated: Sun Jul 20 20:32:18 2008 ] [ Syntax Desktop 2.3.1 ]
[ Index ]     [ Variables ]     [ Functions ]     [ Classes ]     [ Constants ]     [ Statistics ]

title

Body

[close]

/Doc/ -> Documentazione_per_gli_sviluppatori.html (source)

   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 &egrave; 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&igrave; 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  &egrave; 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, &egrave; 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 &egrave; mosso dall'idea di poter gestire qualsiasi tipo di dato e
  85  di adattarsi ad innumerevoli variet&agrave; di problemi in modo da
  86  rendere la vita di un programmatore web (quale sono io) molto
  87  pi&ugrave; 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&ograve; ho scoperto
  90  che le funzionalit&agrave; 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 &egrave; cos&igrave; 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 &egrave; 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&ugrave; 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 &egrave; Syntax Desktop, ho potuto
 118  assegnare all'amministratore lo strumento per la generazione dei
 119  servizi (anche questo &egrave; 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 &egrave; generata dinamicamente).<br>
 130  <br>
 131  Un utente del sistema, al quale verranno dati i permessi di
 132  visualizzazione del servizio appena generato, potr&agrave; 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 &egrave; 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&ugrave; 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 &egrave; 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>


[ Powered by PHPXref - Served by Debian GNU/Linux ]