Codice dell'applicativo (webapp) del Museo Informatico dell'Iiss Di Maggio. La suddetta applicazione è una mobile PWA (Progressive Web App): ciò vuol dire che può essere "installata" attraverso il browser sul proprio smartphone. L'app non è ancora ottimizzata per l'utilizzo su desktop.
Abbiamo cercato, per quanto possibile, di sviluppare la PWA seguendo il modello MVC (Model - View - Controller). Alcuni script JavaScript (controller) intercettano degli input da parte degli utenti e interrogano il server (model) per restituire le informazioni che poi vengono visualizzate nella view.
Il nucleo di tutta l'app è il file index.php. Al suo interno, infatti, le diverse pagine vengono renderizzate (tramite lo script script\pageNavigation.js) nel div #pageRender e i moduli (file HTML) delle varie sezioni dell'app vengono inclusi.
Per non appesantire troppo il caricamento iniziale dell'app, tutte le pagine "secondarie" sono caricate tramite AJAX dallo script (in modo asincrono, dunque), eccetto le componenti necessarie alla visualizzazione della shell (es. navbar.html, che sono incluse direttamente in index.php).
Questa sezione ha lo scopo di approfondire il funzionamento di alcune pagine e come queste interagiscano tra loro. Tuttavia essa è inutile senza la documentazione costituita dai commenti, dal video tutorial e dai diagrammi nella cartella "docs".
- Il file
manifest.jsondescrive le caratteristiche della Progressive Web App affinchè possa essere installata tramite il browser del dispositivo.
- Il caricamento delle pagine in seguito al click sui collegamenti è gestito dallo script
page_navigation.js, richiamato nella home. - Lo script
elencoReperti.jsgenera la lista di reperti in base alla categoria scelta dall'utente o alla parola chiave inserita. Una volta selezionato il reperto di cui si vogliono visualizzare le info: reperto.jsinserisce tutti i dati relativi all'oggetto selezionato nella paginareperto.html. Le altre pagine sono perlopiù librerie necessarie alla scansione del QR Code. NB: La metodologia usata per la scansione QR viene attualmente supportata solo da Android e non da iOS (ovviamente!). È necessario trovare un'alternativa valida.
base.phpcontiene i parametri relativi alla configurazione del database.ricercaReperti.phpriceve una richiesta GET per uno o più reperti (identificati dall'ID, da alcune parole chiave o da una sezione di riferimento) e restituisce una stringa JSON che rappresenta gli oggetti richiestisegnalaUnBug.phpè il backend che permette di inviare una mail per la segnalazione di un bug all'indirizzo mail specificato inbase.php, tramite la compilazione di un form.
bottom_navbar.htmlè il codice della barra di navigazione inferiore, quella che contiene i due collegamenti principali a "Home" e "Cerca" e il pulsante per la scansione del codice QR. Contiene anche funzioni JavaScript per la gestione dello styling della barra inferiore.elencoReperti.htmlè la pagina nella quale vengono a loro volta renderizzate e inserite sia la pagina per la ricerca dei reperti che la lista dei risultati.info.htmlfa visualizzare informazioni sul museo.navbar.htmlcontiene il codice della barra di navigazione superiore e quello del menu a comparsa laterale (sidebar) con i vari collegamenti.navbar.htmlè il modulo HTML nel quale viene renderizzata la schermata per la scansione del codice QR dei reperti.reperto.htmlcontiene il codice della pagina HTML nella quale verranno inserite le informazioni relative a un singolo reperto.segnalaUnBug.htmlcontiene il form (in comparsa dall'alto), dotato di protezione reCAPTCHA, per l'invio delle email.
Prima di poter rendere operativa la PWA, è necessario svolgere alcune operazioni:
- Modificare il file
serverSide/base.phpinserendo le credenziali corrette per l'accesso al database (nome utente, password, hostname e nome del database) - Importare il file
databaseReperti.sqlnel proprio DBMS per avere con sé i dati dei reperti
- Video tutorial e presentazione dell'app: Clicca qui (non ho potuto caricarlo su GitHub per il limite di 25 MB sull'upload).
- Bacheca Trello per la gestione Agile delle cose da fare.
Hai ancora qualche piccolo dubbio? Non c'hai capito na mazza? Contattami con una mail a peppesteduto@gmail.com!