Code bei Löschung von Dokumenten?

  • Hallo,


    ich suche nach einer Möglichkeit um ein Stückchen Code (LS?!) immer dann auszuführen, wenn ein Dokument aus einer Datenbank gelöscht wird - unabhängig davon ob die Löschung per Action-Button (das wäre ja noch problemlos), per Löschen in einer View oder per Löschen aus dem Papierkorb (manuell oder durch Ablauf der SoftDeletionTime) gelöscht wurde.


    Optimal wäre es also, Code genau dann ausführen zu können, wenn ein Dokument in die "hard-deletion" übergeht.


    Hintergrund:
    Es gibt eine zweite DB, die auf die Dokumente in der Mail-DB referenziert. Beim Löschen sollen diese Referenzen ebenfalls bereinigt werden.


    Edit: Präfix auf "offen" gesetzt.

  • Im Database Script kannst du jegliche durch den User ausgelöste Löschakion beeinflussen.


    Das automatische Leeren des Papierkorbs kannst du so allerdings nicht verhindern.
    Das musst du dann ausschalten und eben z.B. durch einen Agenten nachbilden

  • Hallo Taurec,


    "Database Scripts" war schonmal ein sehr gutes Stichwort.
    Leider bringt es mich trotzdem noch nicht wirklich zum Ziel.


    Das Event PostDocumentDelete wird offenbar in dem Moment ausgelöst, in dem der Anwender das Document löscht und in ein SoftDeleted-Document überführt.


    Der Code muss aber an die Stelle, an der nun das SoftDeleted-Document seinerseits gelöscht wird. (Aus dem "Optimalfall" im ersten Post ist inzwischen der "Einzig mögliche Fall" geworden).


    Alternativ: Läßt sich das Löschen aus der (SoftDeletion)-View unterbinden? So, dass entgültiges Löschen nurnoch über einen Agenten möglich ist?


    Außerdem: Mir ist der Zusammenhang zwischen der SoftDeletion-View und dem Trash-Folder noch nicht ganz klar. Wie ist der realisiert?

  • Natürlich wird er das: Wie schon gesagt sind das reine Frontendgeschichten.


    Die SoftDeletion View ist auch nur ein Trash. Die eine wird bei aktivierten SoftDeletions verwendet die andere bei deaktivierten.
    Einen Zusammenhang gibt es also nicht


    Auf das manuelle Löschen reagiert er auch aus dem Trash nicht anders wie auf das aus anderen Ansichten.
    Nur die automatische Löschung musst du eben abschalten

  • Zitat

    Auf das manuelle Löschen reagiert er auch aus dem Trash nicht anders wie auf das aus anderen Ansichten.


    Mh, ich hab im QueryDocumentDelete + PostDocumentDelete ein einfaches "MsgBox" drin stehen - nur um mitzubekommen, wann der Code ausgeführt wird.


    Lösche ich nun ein Dokument in einer "normalen" (shared) View
    werden beide MsgBox-Ausgaben ausgeführt.


    Lösche ich nun ein Dokument aus einer "nur gelöschte Dokumente"-View, oder aus einer Kopie der SoftDeletion-View aus dem Mail-Template, kommt noch die Sicherheitsabfrage - der MsgBox-Code wird aber offenbar nicht mehr ausgeführt.


    Hab ich dich noch irgendwo missverstanden?


    Zitat


    Nur die automatische Löschung musst du eben abschalten


    Mit der "automatischen Löschung" meinst du die UndeleteExpireTime? Die läßt sich (zumindest über die Database-Properties) scheinbar nicht auf 0 setzen. Oder gibt es noch einen anderen Weg sie wirklich zu deaktivieren?
    Es ging dir dabei nur darum, dass die Dokumente nicht per Backend gelöscht werden, oder?

  • Und wieso schaltest du dann die SoftDeletions nicht einfach aus und verbietest die manuelle Löschung komplett ?
    Dann hast du doch völlige Kontrolle wann und wie ein Dokument gelöscht wird und was dabei ausgeführt wird


    Die SoftDeletions sind für so einen Zweck eben nicht geeignet

  • Zitat

    Und wieso schaltest du dann die SoftDeletions nicht einfach aus und verbietest die manuelle Löschung komplett ?


    Weil die Anwender weiterhin die Möglichkeit haben sollen, gelöschte Dokumente wiederherstellen zu können?!


    Ziel ist es ja nur in dem Moment wo ein Dokument wirklich gelöscht wurde (also auch aus dem Papierkorb) die externe Referenz zu bereinigen.


    Die Referenz beim 'löschen in den Papierkorb' zu bereinigen und beim eventuellen Wiederherstellen wieder zu regernieren ist leider im vorliegenden Fall nicht möglich.


    Alternativ müsste ich halt andersherum vorgehen und von der externen Datenbank aus prüfen ob die referenzierten Dokumente noch existieren. Da ich dafür aber alle Mail-DBs der User durchlaufen müsste, würde ich das gern vermeiden.

  • Mh, nun gut - bzw. schade...


    Zitat

    und verbietest die manuelle Löschung komplett ?


    Indem ich es im QueryDocumentDelete-Event abwürde?!
    Oder gibt es da auch noch eine weitere Methode die ich noch nicht kenne?