# Jaws Project

Jaws è un framework per applicazioni web ma è anche un Content Management System in quanto, grazie alle applicazioni con cui viene distribuito, può svolgere entrambe le funzioni.
È scritto in PHP e si appoggia ad un database esterno per l'archiviazione dei contenuti.
È open source: il "core" del framework è disponibile con licenza LGPL mentre è usata la licenza GPL per le restanti parti.

## Prerequisiti

Per usare Jaws è necessario un server web con supporto per il PHP. Il server di riferimento è Apache, ma Jaws viene usato con successo anche su IIS, Nginx ed altri web server. È necessario un database, quello di riferimento è MySQL, ma dato che Jaws s'interfaccia ai database tramite MDB2 (uno strato di astrazione che rende il framework indipendente dal particolare database impiegato) può usare anche altri database, tra questi: MSSQL, PostgreSQL, Oracle, Interbase / Firebird, SQLite.

## Descrizione

Le applicazioni che vengono sviluppate per il Jaws framework sono denominate gadgets. I gadgets offrono all'utente finale diverse funzionalità con cui gestire i contenuti di un sito web. Ad esempio, c'è un gadget per creare pagine statiche, uno per gestire un blog, uno per le gallerie fotografiche, uno per i moduli di contatto, etc.
In aggiunta ai gadgets è disponibile anche un sistema di plugins. I plugins permettono di manipolare il modo in cui vengono presentati i contenuti all'interno del sito. Possono funzionare sia intercettando le chiamate al framework sia come filtri, manipolando il comportamento del sito ed il modo in cui contenuti vengono mostrati.

### Gadgets disponibili

Segue una lista di alcune delle applicazioni disponibili per Jaws:
* StaticPage (Consente la gestione di pagine statiche, anche multilingua)
* Blocks (Consente la gestione di semplici blocchi di codice HTML da inserire nel sito)
* Blog (Consente di realizzare un blog)
* Forums (Forum multiutente threaded)
* Phoo (Galleria/Blog fotografico)
* Menu (Consente di realizzare uno o più menu con struttura ad albero in cui catalogare i contenuti del sito)
* SimpleSite (Consente di realizzare una mappa del sito)
* Search (ricerca per parole chiave fra i contenuti archiviati dai vari gadgets)
* Chatbox (chat per i visitatori del sito)
* Contact (modulo per i contatti)
* Banner (gestisce e mantiene la contabilità dei banner mostrati nel sito)
* Poll (sondaggi)
* FileBrowser (Upload e gestione file)
* RssReader (Permette di importare e visualizzare feed esterni all'interno del sito)
* Launcher (consente di avviare script PHP esterni al framework)
* Altri gadgets disponibili: Emblems, Friends, Weather, Faq, Glossary, Languages, LinkDump, Quotes, SysInfo, Users, Webcam, ServerTime, VisitCounter
Altri gadget, non precedentemente elencati, fanno parte del "core" del Jaws framework e servono principalmente per la sua amministrazione/configurazione.

### Plugin disponibili

Tra i plugin disponibili: AccessLimiter, AlbumCover, BlockImport, Exchange, FileBrowser, GlossaGlossy, NiceFormat, SmartBridge, SyntaxHighlight, ActionImport, AntiSpammers, Emoticons, FastLinks, FindFriend, GoogleHighlight, PhooInsert, SpellNumber.

### Traduzioni

Jaws è stato tradotto nelle seguenti lingue: arabo, bengali, brasiliano, portoghese, catalano, ceco, danese, olandese, finlandese, francese, tedesco, ebraico, inglese internazionale, italiano, giapponese, norvegese, persiano, polacco, rumeno, russo, cinese semplificato, spagnolo, svedese, turco.
Ulteriori traduzioni in altre lingue sono possibili, a partire dall'inglese, usando il gadget languages.

## Amministrazione

Jaws dispone di un pannello di controllo.
Ogni gadget dispone di un'interfaccia di amministrazione, raggiungibile dal pannello di controllo, tramite la quale si possono amministrare i contenuti e modificare le impostazioni specifiche del gadget.
Altre impostazioni del framework, la gestione degli utenti, le politiche di sicurezza, la gestione dei gadgets/plugin installati, etc, avvengono tramite l'uso di specifici gadgets che fanno parte del "core" di Jaws.
Tutte le impostazioni del framework e dei gadgets sono memorizzate all'interno di un registro ad albero in stile registro di Windows (chiave -> valore). Il registro può essere manipolato dal pannello di controllo grazie all'uso di uno specifico gadget: Registry.

### Gestione Utenti

Jaws permette una gestione granulare dei permessi degli utenti. Le regole di accesso possono essere definite su base utente o per gruppi di utenti, stabilendo per ogni gadget quali sono le operazioni permesse per ciascun utente/gruppo.

### Aspetto e Temi

L'aspetto esteriore del sito è personalizzabile tramite l'uso di temi. Un tema, nella sua forma più semplice, è costituito da un file template, in HTML, che definisce la strutture dalla pagina, da un file info.ini (contenente una breve descrizione: nome dell'autore, nome del tema, versione, etc), eventuali file CSS, immagini e quant'altro necessario per definirne l'aspetto grafico.
All'interno del file template vengono posizionati dei marcatori che stabiliscono dove dovranno essere posizionati i gadgets, il contenuto principale, le meta-informazioni ed altre parti della struttura delle pagine web del sito che necessitano di essere gestite dinamicamente.
Ciò rende molto semplice adattare, per l'uso su Jaws, dei template preesistenti (come quelli forniti da siti di terze parti) semplicemente aggiungendo i marcatori ed effettuando poche altre modifiche. Non richiede competenze di programmazione particolari se non la conoscenza dell'HTML e dei CSS. D'altro canto, l'uso di un unico template rende la struttura del sito un po'rigida, non avendo la possibilità di definire template differenti a seconda del contenuto. Tuttavia, Jaws permette d'impostare quali debbano essere i gadgets sempre visibili nel sito e quelli che invece dovranno essere mostrati in concomitanza del gadget mostrato come contenuto principale.

## Distribuzione

Jaws viene distribuito sotto forma di archivio compresso. Sono disponibili due versioni, quella "complete" che contiene tutti i gadgets, tutti i plugins e tutti i temi della distribuzione ufficiale e quella "core" che contiene solo l'essenziale per il funzionamento del framework. In ogni caso gadgets e temi possono essere scaricati individualmente.

### Versione in fase di sviluppo

Si può ottenere una copia dell'ultima versione in fase di sviluppo scaricando i file tramite Git. Attualmente lo sviluppo procede qui.