Modus nach Nutzer ändern, Script per Rollen steuern?

  • Hallo Leute,


    ich habe ein echt lästiges Problem. Ich habe eine Maske in der je nachdem welcher Nutzer auf das Ding zugreift die Maske in den Bearbeitungs bzw. nur Lesemodus versetzt wird. Ich weiß nur nicht wie ich das in mein Lotus Script einbauen soll. Bitte sagt mir jetzt nicht ich soll mit Autorenfeldern arbeiten und das ganze über die ACL steuern. Hab ich ausprobiert, funktioniert aber nicht. Ich arbeite mit Domino 6. Wobei die Datenbank ursprünglich auf 5 entwickelt wurde.


    Ich bin für jede Hilfe dankbar! :evil:

  • kann dir hier natürlich keine komplette lösung bieten aber vielleicht ein paar ansätze:


    ich würde die methoden
    - queryopen
    - postopen
    - querymodechange


    benutzen.


    dort kannst du abfragen in welchem modus die maske geöffnet werden soll bzw. in welchem zustand sie sich gerade befindet (lesen / bearbeiten) mit continue = false kannst du dann z. b. das bearbeiten bzw. das wechslen in den bearbeitungsmodus verhindern. ich denke du kannst an diesen stellen auch steuern (über uidocument) das gleich der bearbeitungsmodus aktiviert wird.


    hoffe ich konnte helfen.

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • Das hab ich ja schon aber ich möchte die Abfrage über die ACL regeln. Das muss doch gehen? Man kann ja auch Absätze vor irgendjemanden verbergen mittels diesen Rollen. Ich weiß nur nicht wie ich´s einbinden soll. Vielleicht könnte man ja mit evaluate und IsMember... arbeiten?


    Trotzdem danke für deine Antwort. :-?

  • Absätze verbergen kannst du einfach indem du den Absatz
    als Abschnitt mit kontrolliertem Zugriff definierst und ihn dann mittels @Userroles auf die Rolle abfragst.


    Weitere Möglichkeiten wären:


    Erstellen von verschiedenen Ansichten (je nach Rolle) die mittels Vorgabemaske einmal eine "read-only" und einmal eine bearbeitbare Maske auswählen.
    Mittels hide-Formel in der Gliederung lassen sich die auch auf Rollen prüfen.

  • Danke Mike,


    aber das ist nicht was ich will, hab mir auch diese Möglichkeit schon durch den Kopf gehen lassen. Es wäre zuviel Aufwand und ich müßte an zu vielen anderen Dingen drehen. Es muß doch aber eine Möglichkeit mit Scriptprogrammierung geben... ?? Hab auch schon ein paar Ansätze muss aber noch drüber Nachdenken. Hier der Ansatz, vielleicht beteiligt sich der ein oder andere noch dran und dann wirds was.


    Function CurrentUserHasRole(role_in As Variant) As Integer
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim acl As NotesACL
    Dim entry As NotesACLEntry

    Set db = session.CurrentDatabase
    Set acl = db.ACL
    Set entry = acl.GetEntry( session.UserName )
    Msgbox(session.UserName)
    ' If role_in = "" Or entry Is Nothing Then
    ' CurrentUserHasRole = False
    ' Exit Function
    'Else
    ' Msgbox("Yuhu")
    'End If
    If entry.IsPublicWriter Then
    Messagebox entry.Name & " is a public writer."
    Else
    Messagebox entry.Name & " is not a public writer."
    End If
    CurrentUserHasRole = entry.IsRoleEnabled( role_in )

    End Function

  • Dein Script könnte an folgender Stelle scheitern, wenn der Nutzer nicht persönlich, sondern nur in einer Gruppe aufgeführt ist.


    Zitat


    Set entry = acl.GetEntry( session.UserName )


    Die eigentliche Frage ist allerdings, warum das mit den Leser- und Autorenfeldern nicht funktionieren soll. Kannst Du das mal genauer darstellen?

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • Gute Frage, warum das mit Lesern und Autoren nicht funktioniert. Irgendwie scheint es an der Stelle in der Datenbank einen Knick zu geben. Die Rechtevergabe ist strickt erfolgt und es gibt auch keine Gruppen (also müßte das Script ja laufen. Es gibt lediglich User, die eine Rolle zugewiesen bekommen haben und an Hand dieser Rolle können diese User verschiedene Aktionen durchführen. Das hat alles funktioniert. Das Problem tauchte erst auf, nachdem durch einen Link auf das Dokument durch einen Leser zugegriffen wurde, sobald dieser Doppelklickte, wurde das Dokument in den "Bearbeitenmodus" versetzt. Das darf aber nicht sein. Wenn ich nun durch QuerymodeChange auf False setze, kann auch der Bearbeiter (Autor) des Dokuments, das selbige nicht mehr durch den Bearbeiten-Button in den Bearbeitenmodus versetzen um etwaige Änderungen vorzunehmen.


    Tja, ich bin echt am Ende. Keine Idee, wie ich das Problem beheben könnte.

  • Zitat

    ... nachdem durch einen Link auf das Dokument durch einen Leser zugegriffen wurde, sobald dieser Doppelklickte, wurde das Dokument in den "Bearbeitenmodus" versetzt.


    Das hat noch nicht unbedingt was zu sagen. Bearbeitenmodus heißt noch lange nicht, daß er das Dokument auch abspeichern kann. Ich dachte, daß wäre in R6 gefixt, aber vielleicht hat IBM ja einen alten Bug wieder eingeschleppt :evil:

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • nee, der kann dann auch abspeichern (Strg+S oder Diskette anklicken) die Buttons sind ja unterdrückt. Selbst wenn das Dokument durch FileCloseWindow geschlossen wird kommt die Frage nach einer Speicherung. Das ist echt blöd! :-x