Skip to content

Revisione del sistema degli allegati #791

@Dasc3er

Description

@Dasc3er

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    da definireModifiche da pianficare e approfondiremiglioriaProposte di miglioramenti

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions