FlatOrganizer

FlatOrganizer

Questo breve studio ha lo scopo di analizzare i passi necessari a costruire un organizer per FlatNuke, valutando anche la sua trasformazione in un vero e proprio groupware. E' una traccia che seguirò nella realizzazione di questo software, una sorta di dichiarazione di intenti per non perdere di vista le finalità di questo progetto; al fondo della pagina è possibile visualizzare lo stato di avanzamento dei lavori, con in futuro la possibilità di scaricare degli snapshots del software stesso.

Analisi struttura organizer (last update 20050602)

Funzionalità

L'organizer multiutente in costruzione avrà le seguenti funzionalità:

  • gestione appuntamenti
  • note
  • bookmarks
  • rubrica
  • gestione mail su POP
  • gestione INBox per messaggistica interna
  • calendario
  • interfaccia multilingua

Installazione

L'intallazione è semplicissima dato che si tratta di fare un semplice upload di una nuova sezione; ci sarà in più da sovrascrivere il blocco login per aggiungere i link all'organizer e alla inbox.

Struttura e generazione automatica del filesystem

L'organizer sarà una sezione standard di FlatNuke, nascosta e richiamabile tramite un link posto nel blocco di login del singolo utente; le informazioni verranno salvate in una directory dedicata ad ogni utente sotto /misc.
La costruzione della directory utente deve essere fatta con attenzione dato che andrà a contenere dei dati sensibili; l'obiettivo è quindi quello di realizzare una struttura che ne garantisca la non tracciabilità.
La primissima volta che un qualsiasi utente accede all'organizer viene effettuata l'installazione generale dell'estensione:

  • viene generato un numero random di massimo 10 cifre che, dopo essere stato codificato MD5, viene salvato in un file posto nella directory /misc/users_home_dirs; avrà una struttura simile a quelli dove vengono salvati i dati degli utenti, di modo da renderlo "invisibile" all'esterno:

    #codice-a-10-cifre-codificato-MD5

  • tramite questo codice, si procede alla creazione delle directory degli utenti, poste come detto in precedenza sotto /misc/users_home_dirs, e generate tramite una codifica in MD5 della stringa-unione del nome utente con il codice precedente; le directory utente avranno quindi una denominazione simile a questa (attenzione, in caso di reinstallazione è necessario avere una copia del file con il codice random generato, altrimenti non sarà possibile in alcun modo ricreare i richiami alle cartelle utente corrette!):

    /misc/users_home_dirs/{nas98f7nsfaoifsuod89sanfs90a}

  • una volta creata la directory dell'utente, verranno creati in modo automatico tutti i file per il salvataggio dei dati.

Files

Il file principale ovviamente è il section.php che, in base al parametro "action" che viene passato, richiama la procedura corretta. Si è provveduto a rendere la struttura estremamente modulare:

  • config.php, che contiene le variabili d'ambiente
  • functions.php, che contiene funzioni di comodo
  • styles.php, che contiene gli stili grafici
  • languages.php, che contiene le traduzioni
  • header.php, che contiene il menu per richiamare le funzioni (hotkeys?)
  • section.php, che gestisce le chiamate alle funzioni
  • un file singolo per ogni funzione
  • footer.php, che chiude la struttura

Nella sottodirectory none_images sono presenti tutte le risorse necessarie all'interfaccia grafica.

Credits

Nella realizzazione di questa estensione, si è fatto riferimento ad altri software sia per ispirarsi alla struttura che nella vera e propria inclusione di parti di codice (o di oggetti, come le icone); qui di seguito una lista:

  • Php-Organizer
  • ObieInbox
  • Crystal icon theme

Sono tutti rilasciati con licenze libere.

Evoluzione a groupware (last update 20050512)

Una volta terminata la realizzazione dell'organizer, se ne puo' utilizzare la struttura come base per la creazione di un GroupWare; le features aggiuntive individuate sono:

  • gestione progetti
  • lista todo
  • sistema di log
  • sistema quality assurance
  • sistema di mailing list per i gruppi

Il problema fondamentale per la sua costruzione è sicuramente da individuare nella mancanza in FlatNuke della gestione di gruppi di utenti; esiste, è vero, una patch (user_mod_cont) che si occupa dei permessi di gruppi di utenti per le sezioni, ma questo vorrebbe dire che il gruppo di utenti dovrebbe essere a sua volta un utente, con tutti i limiti che ne conseguono.
La gestione per livelli non è proponibile in assoluto, non deve esserci alcuna gerarchia tra i vari gruppi/progetti, ma assoluta parità.
Se ne deduce che si deve creare un nuovo strato organizzativo delle utenze:

  • l'amministratore deve avere gli strumenti necessari alla gestione dei gruppi, creazione, modifica, cancellazione, ecc.
  • il singolo utente deve avere la possibilità di far richiesta all'amministratore che venga aperto un nuovo gruppo, di cui sarà il principale referente;
  • tutti gli utenti facenti parte del gruppo devono poter accedere agli strumenti predisposti in maniera collaborativa.

Stato di realizzazione (last update 20050605)

PARTE DEL PROGETTO %
Installazione/configurazione 100%
Appuntamenti 100%
Note 100%
Bookmarks 100%
Rubrica 100%
Mail su POP 5%
Gestione InBox 15%
Internazionalizzazione (it, en) 50%
Calendario 0%
Integrazione in FlatNuke 2.5.4 50%
GroupWare 5%

Qualche screenshot del lavoro in divenire...