Ho pensato al giro delle liste utente e vorrei sapere se così può andare.
Per prima cosa solo chi è registrato potrà definirne più di una alla volta. Ad ogni login si ritroverà ovviamente le liste intatte, mentre chi non fa login potrà (in futuro) gestire una sola lista che però dovrà essere esportata in un file ini per non andare persa alla scadenza della sessione.
Se l'utente è connesso vedrò una stellina a fianco dell'immagine (o del nome quando ci saranno altre visualizzazioni) e tutto il comportamento descritto qui lo replicherò della pagina di dettaglio del gioco.
Se la lista contiene il gioco comparirà una stella gialla, altrimenti una stella bianca/vuota.
A questo punto potrò "avvicinarmi" alla stella ed in quel momento vedrò un pannellino comparire (ossia il riquadro si allarga con una piccola animazione) ed anzichè la stella compariranno dei punsanti:
- aggiungi alla lista, solo quando avrò definito una lista preferita ed il gioco non sarà presente in quella
- aggiungi ad un'altra lista, quando avrò definito più di una lista
- crea una nuova lista
- rimuovi dalla lista, quando il gioco sarà già presente
Nel primo caso il gioco viene aggiunto ed il riquadro si chiude, aggiornando la form sottostante dei giochi.
Nel secondo caso comparirà una finestra con la selezione della lista alla quale voler aggiungere il gioco oppure un semplice combo a fianco del pulsante (stile Amazon).
Nel terzo caso comparirà una finestra con i parametri necessari per la creazione di una nuova lista (nome ed eventuale descrizione, più un check per renderla predefinita).
Nel quarto ovviamente sarà rimosso, senza conferma.
A questo punto la definizione della lista preferita è in pratica quella sulla quale sto lavorando, e pensavo di salvarla sempre su database. In questo modo più che "predefinita" userei magari "corrente" come termine in giro per le pagine.
Ho già fatto parecchio ma sto cercando il modo di riunire queste routine in funzioni richiamabili anche da altre pagine, altrimenti dovrei duplicare troppo codice php/javascript e sarebbe un casino poi doverlo gestire in futuro.
Altra cosa: in alto a destra comparirà un altro tasto "liste" che conterrò l'elenco di tutte le mie liste, quella di default segnata in grassetto e la possibilità di cancellare/rinominare i dati esistenti, creare di nuovi, aprire la pagina di ricerca con tutti i giochi evidenziati (probabilmente con tutti i filtri di ricerca a disposizione), conterrà informazioni come il numero di giochi per ciascuna lista.
Invece per quanto riguarda le esportazioni pensavo di aggiungere una voce alla pagina di ricerca (che è sempre più complessa...) in modo tale da poter esportare agilmente non solo la lista personale ma anche qualsiasi tipo di risultato ottenuto con i filtri impostati.
Inoltre ho delimitato le liste alla gestione di un solo emulatore: ci sono liste per Mame e liste per Mess, separate. Questo perchè le pagine e le tabelle saranno di fatto due mondi diversi, ognuno con le proprie particolarità e dettagli, quindi non mi sentivo di aggiungere questo tipo di complessità al programma. Considerando che le operazioni saranno visualizzazione ed esportazione, è davvero limite questo che ho messo?
Il giro sta in piedi secondo voi?
Vi allego qualche schermata per farvi vedere a che punto sono arrivato.
Altra cosa: tutte queste informazioni, come le ricerche personalizzate, vengono memorizzate con chiave utente e id numerico progressivo. Queste informazioni sono sempre confrontate, prima di ogni lettura/ricerca/visualizzazione, con l'utente effettivamente connesso. Quindi anche in caso di tentativi di intrusione, ossia se forzo i parametri con qualche tecnica particolare lato client, avrò sempre la certezza di non restituire mai dati altrui.
Inoltre con oggi ho iniziato la scrittura di un paio di pagine che possono servire a chiunque per recuperare informazioni e potranno essere la base per futuri servizi di Feel.
Ad esempio:
Codice: Seleziona tutto
mame_services.php?ajax=game_description&game_name=mslug
Recupera la descrizione di un gioco Mame
Codice: Seleziona tutto
mame_services.php?ajax=game_information&game_name=mslug
Recupera tutte le informazioni disponibili
Codice: Seleziona tutto
mame_services.php?ajax=game_media&game_name=mslug&type=shortplay&
Recupera il video di anteprima del gioco
ecc.