Dialogbox für Leser laut ACL?!

  • Hi,


    Beschreibung:


    Benutzer sollen mittels eines Ansichtenwerkzeugs
    AdressDaten aus markierten Dokumente in einen Word-Serienbrief übertragen.
    Dabei sollen diverse Daten wie Art der WordSerienbriefvorlage,
    Unterzeichnerdaten, etc. über eine Dialogbox eingegeben werden.
    Also zu viele, um das über Inputboxen abzufackeln.
    Das funktioniert soweit auch.


    Leser laut ACL sollen das Werkzeug auch benutzen.


    Nun tritt folgendes Problem auf:


    Falls der Hacken "Öffentliche Dokumente schreiben" in der ACL nicht gesetzt ist, dürfen Leser (logischerweise) Dokumente (also auch Dialogboxen) nur lesen. Comboboxen, Listboxen, etc. sind ausgegraut.
    Leser laut ACL können also über die Dialogbox nicht mal die gewünschte Wordvorlage auswählen.


    Der Hacken "Öffentliche Dokumente schreiben" ist nicht gesetzt, weil sonst Leser ALLE Dokumente in der Datenbank im Editiermodus öffnen (wenn auch nicht speichern) können.
    (Laut Anfrage bei IRIS "works as designed", naja...)


    Frage:


    Vielleicht ist der ein oder andere ja schon mal auf ein ähnliches Problem gestossen.
    Hat jemand eine Idee, wie man Lesern laut ACL die Möglichkeit gibt, diverse Daten innerhalb eines Scriptagenten einzugeben, die man normalerweise über eine Dialogbox eingibt?



    Gruß und Dank

    • Offizieller Beitrag

    erstell doch das Dokument für die Dialogbox in einer anderen DB (z.B. das private Adressbuch oder lege einen leere DB an).


    Da das Dokument nicht gespeichert wird, interessiert es in der anderen DB auch nicht.


    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

  • Hi,


    Ja, das wäre eine Möglichkeit. Ich hab's mal mit der Maildatenbank des aktuellen Benutzers ausprobiert.


    Hat aber folgende Nachteile:


    1. Sieht was unschön aus, das der Hintergrund Dialogbox z.B. auf
    einmal der MailEingangskorb ist.


    2. Falls der Benutzer die Dialogbox abbricht, befindet er sich in
    der Maildatenbank.


    3. Wenn die Maildatenbank zum Zeitpunkt
    der Durchführung des Scripts nicht schon offen ist, kommt es
    zu einem späterem Zeitpunkt in einer Unterfunktion zu einem
    Fehler. Ein NotesDokument wird zwar brav gesetzt, aber nicht
    an die aufrufende Funktion übergeben.
    Schätze mal, da verliert Notes schon mal gerne den Pointer auf
    die Adresse...


    Allgemein wirkt mir das zu sehr "gefuscht", eine andere Datenbank für die Eingabe zu verwenden...


    Keiner 'ne Idee, wie das in der aktuellen (= ACL Leserrechte)
    Datenbank funzen könnte? Ich wüd' mir auch zur Not CAPI für
    die Eingabe von Daten (schreibt man das so :roll: ) antun...

    • Offizieller Beitrag

    in Deiner DB rufts Du ein Script auf. In diesem Script machst Du sowas in der Richtung:


    - Mail-Db als Objekt zuweisen (Set db_mail = ..)
    - im Backend ein neues Dokument erzeugen (dim doc_dialog as New NotesDocument(db_mail)
    - Felder in dieses Dokument schreiben (falls Du diese benötigst - Vorgaben usw.)
    - DialogBox aufrufen (flag = ws.DialogBox(...,doc_dialog,...)) als Parameter kannst Du das Backend_Dokument mitgeben.


    Dabei geht Deine Mail-DB nicht im FrontEnd auf.


    Gruß
    Dirk

  • Zitat


    - DialogBox aufrufen (flag = ws.DialogBox(...,doc_dialog,...)) als Parameter kannst Du das Backend_Dokument mitgeben.


    Dabei geht Deine Mail-DB nicht im FrontEnd auf.


    Hi.
    Das Erstellen des Backenddocs ist kein Problem,


    doc_dialog as New NotesDocument(s.CurrentDatabase) oder
    doc_dialog as New NotesDocument(mail_db) macht keinen
    Unterschied (okey, hab's aber mal ausprobiert ;) )


    Das Problem jetzt ist der WS, der sich ja in der aktuellen DB befindet - und deshalb wird die Dialogmaske immer mit LESERRECHT (=ausgegraut) geöffnet.


    Deshalb hatte ich das mit
    Call ws.OpenDatabase(maildb_server, maildb_path) gemacht.
    So konnte ich gewährleisten, dass der nächste Schritt
    flag = ws.DialogBox(...,doc_dialog,...)) auch funktioniert.
    Aber eben mit den erwähnten Nachteilen.


    Deshalb such' ich ja nach etwas, dass man in der aktuellen Db machen kann.

    • Offizieller Beitrag

    habs gerade probiert und hast Recht. Es liegt aber weniger an dem UIWorkSpace. Das Problem ist die Maske oder Teilmaske für die Dialogbox liegt in der DB, auf die der User nur Leserechte hat.


    Zitat

    Der Hacken "Öffentliche Dokumente schreiben" ist nicht gesetzt, weil sonst Leser ALLE Dokumente in der Datenbank im Editiermodus öffnen (wenn auch nicht speichern) können.


    Damit kannst Du es aber Regeln. Über die Maskeneigenschaft "Verfügbar für Benutzer mit öffentlichem Zugriff" kannst Du regeln welcher User welche Maske im Edit-Mode öffnen darf. Hat eine Maske diese Eigenschaft nicht, kannst Du die Maske auch nicht im EditMode öffnen.


    Gruß
    Dirk

  • Zitat


    Über die Maskeneigenschaft "Verfügbar für Benutzer mit öffentlichem Zugriff" kannst Du regeln welcher User welche Maske im Edit-Mode öffnen darf. Hat eine Maske diese Eigenschaft nicht, kannst Du die Maske auch nicht im EditMode öffnen.


    Soweit die Theorie.
    In der Praxis macht sich der Hacken in der Maske leider bei Leserrechten als Steuerelement überhaupt nicht bemerkbar.
    Leser laut aACL, die alle Dokumente im Editiermodus öffnen
    können, irritieren mich immer ein wenig. :-o


    Ich glaube, er ist auch hauptsächlich für NoAccess oder Depositor gedacht, damit die Jungs das Designelement Maske überhaupt sehen können.

    • Offizieller Beitrag

    es funktioniert auch für Lesern.
    In einigen DBs habe ich Suchmasken drin, die die beschrieben Eigenschaft haben. Die Leser können dann nur die Suchmaske im EditMode öffnen. Alle anderen Masken bekommen die User nicht im EditMode auf.


    Gruß
    Dirk

  • Ich habe alle Kombinationen durchprobiert, die mir so eingefallen sind:


    Diverse datenbanken


    Leser über Gruppe in ACL
    Leser über NotesNamen in ACL


    Nur die Dialogbox mit Hacken "Available to Public Access users"
    Zusätzlich einen andere Maske mit dem Hacken...


    Alles Wurst. Leser können in meinen DBs immer alle Dokumente
    (alle Masken) im Editiermodus öffnen.


    Wie hast Du denn hinbekommen, dass nur die suchmaske editiert werden kann?

    • Offizieller Beitrag

    mal eine Kurzbeschreibung


    ACL:
    - Gruppe "LESER1" - Leser - Eigenschaft "öffentliche Dokumente schreiben" ist aktiviert
    - Gruppe "LESER2" - Leser - Eigenschaft "öffentliche Dokumente schreiben" ist [color=CC0000]de[/color]aktiviert


    Maske1:
    - Eigenschaft: "Verfügbar für Benutzer mit öffentlichem Zugriff" aktiviert


    Maske2:
    - Eigenschaft: "Verfügbar für Benutzer mit öffentlichem Zugriff" [color=CC0000]de[/color]aktiviert


    Benutzer aus Gruppe "LESER1" öffnet
    - Maske1 im Lesemodus -> funktioniert
    - Maske1 im Editmodus -> funktioniert
    - Maske2 im Lesemodus -> funktioniert
    - Maske2 im Editmodus -> funktioniert [color=CC0000]nicht[/color]


    Benutzer aus Gruppe "LESER2" öffnet
    - Maske1 im Lesemodus -> funktioniert
    - Maske1 im Editmodus -> funktioniert [color=CC0000]nicht[/color]
    - Maske2 im Lesemodus -> funktioniert
    - Maske2 im Editmodus -> funktioniert [color=CC0000]nicht[/color]


    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

  • Hallo,


    Schade, bei mir verhält sich das leider nicht so, wie von Dir beschrieben.


    Ich werde wohl den Hacken "öffentliche Dokumente schreiben" setzen und ins Queryopen und Querymodechange aller Masken (bis auf die Dialogmaske, die im Bearbeitenmodus geöffnet werden soll) auf ACL-Berechtigung = Leser prüfen und dann den Bearbeitenmodus unterdrücken.


    Trotzdem Danke für Deine Antworten.