-
-
Notifications
You must be signed in to change notification settings - Fork 78
Description
Comportamento richiesto
Per migliorare il sistema degli allegati di OpenSTAManager e permettere l'integrazione con servizi esterni, propongo la revisione degli upload come definita finora attraverso delle interfacce comuni.
Il sistema prevede la registrazione di adapter in OpenSTAManager, che gestiscono in modo indipendente gli allegati sulla base della funzione che devono svolgere. Un adapter standard sarà quello di default, che permetterà la retro-compatibilità con la cartella files. Un esempio ulteriore può essere un GoogleDriveAdapter, che gestisce i file a partire da una cartella di Google Drive.
Interfaccia UploadAdapter:
- getName()
- getExtension()
- getMime()
- put(path, content)
- rename(name)
- delete()
- getPath()
- getSize()
- getTimestamp()
- static registerRecord(Model $record, array $options)
- static deleteRecord(Model $record)
- static listRecord(Model $record): restituisce una Laravel Collection di allegati
Questo sistema richiede delle tabelle aggiuntive:
- zz_file_adapter: id | name | class | options (JSON con input: nome, tipo, default)
- zz_adapter_config: adapter_id | record_type | record_id
La navigazione per l'utente finale può essere gestita tramite la sezione attuale degli allegati, con una separazione in tab per adapter oppure con un select di filtraggio. Un adapter deve poter richiedere una configurazione generale (per esempio, tramite Impostazioni) ma anche una configurazione specifica per il record (per esempio, tramite zz_adapter_config una specifica anagrafica può essere collegata a una cartella dedicata dell'adapter se l'adapter implementa il sistema relativo).
La gestione degli allegati a livello di codice non richiede eccessive variazioni: le classi che implementano UploadTrait e il metodo upload possono continuare ad utilizzarlo, a patto di una modifica del trait per restituire un merge dei listRecord() di tutti gli adapter disponibili.