Qua
http://www.gotdotnet.com/workspaces/workspace.aspx?id=8437a203-f377-401c-b23d-ae59e6f05b80
trovate un ottimo esempio di come in realtà dovrebbe essere implementato un
recycle bin per Sharepoint.
Questa soluzione è un poco più smart di quelle che normalmente usano l'event
handler.
L'event handler sulle document library è unico e quindi di norma se
usate qualcosa che emula il cestino perdete l'occasione di usarlo
per qualche altra cosa. E' vero che c'è sempre Reflection che può
aiutarci....ma non tutti sono DevGuri :-)
Inoltre, come saprete, l'event handler è asincrono per cui esso viene
"sparato" DOPO l'effettuazione dell'operazione. Per cui molte
implementazioni fanno in realtà una copia del documento appena questo
viene salvato per averla quindi disponibile in caso di cancellazione
dell'originale.
Quello proposto invece usa un filtro ISAPI. In sostanza controlla tutte
le richieste inviate a Sharepoint e se si tratta di una operazioni di
cancellazione salva il file in uno share di rete. Ovviamente ci sono
AMPI margini di miglioramento:
0) si potrebbe far memorizzare i files cancellati dentro una lista piuttosto
che dentro uno share di rete (cosi tutto rimarrebbe dentro Sharepoint)
1) Oltre al file si potrebbero salvare i metadati dentro un frammento XML
(magari salvato come proprietà dell'elemento di lista...)
2) Si potrebbe realizzare una Web Part per fornire le funzioni di Undelete
da dentro Sharepoint.
3) Si potrebbe realizzare un servizio che passati tot giorni si occuperebbe
di effettuare un purge dei documenti "scaduti"
4) varie ed eventuali.
Grazie a
Romeo Pruno per avermi segnalato la cosa.