Doc-Änderung nur durch Autor

  • Hallo Zusammen,


    ich habe jetzt mein Programm soweit fertig. Jetzt möchte ich nur noch, daß die erstellten Dokumente nur noch vom Autor geändert werden können, solange es keine Antwortdokumente gibt.


    Soweit ich hier im Forum herausfinden konnte benötigt man dazu erst mal ein Autorenfeld. Das habe ich erstellt. Darin wird beim Anlegen des Dokuments die UserID eingetragen (Berechnet beim Anlegen, @Name([OU3];@UserName)). Ist das richtig?



    Jetzt habe ich noch das Recht "Autor" für "-Default-" in der Zugriffskontrolliste eingestellt.


    So sollte doch zumindest kein anderer das Dokument editeren können.


    Weil ich keinen LN-Server besitze habe ich die Datei.nsf im Netzlaufwerk gespeichert und geschlossen.


    Jetzt habe ich bei einem Kollegen (unter seiner UserID) die Datenbank geöffnet.


    Leider kann er meine Dokumente trotzdem editieren.


    Was könnte falsch sein?


    Wie kann ich dem Autor das recht zu editieren entziehen sobald es ein Antwortdokument gibt?


    Na ja es wäre ja schon schön wenn nur Autoren Ihre Dokumente editieren könnten, die Sache mit den Antwortdokumenten muß nicht unbedingt sein.


    Gruß Alfred

  • Authoren zugriff greifen für ALLE dokumente, bestehenden dokumente werden da nur zum bearbeiten erlaubt wenn der aktuelle user zugriff über ein Authoren feld hat.
    Sprich, entwerder sind die falsche zugriffsrechte da (kontrollieren mit den icon rechts unten nachdem der DB auf ist), oder es sind authorenfelder da mit einen gruppe/rolle der den user hat.


    OU3 gibt dir übrigens ein teil der organisation, und NICHT der user. Da mußtest du einfach nur @username verwenden.

    • Offizieller Beitrag

    da die DB lokal geöffnet wird, musst Du die konsistente ACL einschalten, dann sollte es auch mit den Autorenfeldern klappen.


    In das Autoren-Feld würde ich nur "@UserName" eintragen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Ja, Danke,


    funktioniert prima!


    Jetzt wäre es noch schön wenn die Sache mit den Antwortdokumenten noch funktionieren würde :)


    Also, kein Editierrecht mehr sobald geantwortet wurde.


    Hinweise auf einen gangbaren Weg wären ausrechend.


    Gruß Alfred

  • Na dazu musst du nur das Autorenfeld mit einem Wert versehen der auf keinen Benutzer zutrifft. Am besten beim Speichern des Antwortdokuments.
    Ich würde dir da eine Rolle empfehlöen die nur Administratoren haben, so für den Notfall.

    • Offizieller Beitrag

    das Problem ist, dass der Antwortende keine Schreibrechte auf das Übergeordnete Dokument hat und damit das Autorenfeld nicht leeren kann.


    Eventuell kannst Du aber ein berechnetes Feld einfügen mit dem Name "SaveOptions" und diese auf "0" (Text) setzen wenn es Antworten gibt und auf "1" falls es keine gibt. Damit kann der Autor zwar das Dokument bearbeiten aber es wird nicht mehr gespeichert.


    Oder im Postopen und im QueryModeChange kannst Du die Anzahl der Antwortenabfragen und falls welche da sind und das Dokument in den EditMode geschaltet wird diesen verweigern ("Continue = False" oder "uidoc.EditMode = False").


    Nachteile ist, dass das Dokument immer noch mit einem Agenten geändert werden kann. Damit dies nicht mehr geht müsste das Autorenfeld geleert werden. ISt die DB auf einem Server könnte dies ein Agent tun.


    Gruß
    Dirk

    • Offizieller Beitrag

    mit @DocChildren wird Dir die Anzahl der Antwortdokumente zurückgegeben.


    Gruß
    Dirk

    • Offizieller Beitrag

    Oh wie peinlich @docChildren funktioniert nur in Ansichten.


    Aber baue eine versteckte Ansicht
    Ansichtsauswahl:
    @Text($Ref) != ""
    1. Spalte
    - Name: (Antworten)
    - Formel: @Text($Ref)
    - sortiert


    dann ist die Formel im Feld SaveOptiens:
    @If(@Trim(@DBLookup("Notes":"NoCache";"";"(Antworten)";@Text(DocumentUniqueID);1)) != ""; "0"; "1")


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein