Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 15.12.03 - 23:40:11
-
Hi,
ich öffne mit
@DialogBox("box_W";[AutoHorzFit]:[AutoVertFit];"Title")
eine Dialogbox von einem Dokument aus, Dok befindet sich im Lesemodus.
(es soll nach Klick auf OK ein Kalendereintrag gesetzt werden)
Problem: User, die nur Autorenrechte haben, dürfen die Felder darin nicht bearbeiten .
Ein Setzen eines Autorenfeldes und Eintragen einer Rolle, die die User haben, bringt auch keinen Erfolg.
Wie muss ich die Dialogbox öffnen, damit User (Autoren) darin die Felder bearbeiten dürfen?
TMC
-
Hi,
bezieht sich die Dialogbox auf auf Felder in dem Dokument, aus dem sie geöffnet wird? Wenn das Dokument im Lesemodus ist, dann können meines ERachtens auch die Felder in der Dialogbox nicht geändert werden.
Versuch mal die Dialogbox zu öffnen wenn das Dokument im Editmodus ist.
Axel
-
Hi,
ich würde das ganz pragmatisch lösen, rufe zwei unterschiedliche Dialogboxaufrufen oder Masken auf:
Für Autoren des Dok's Maske A
Für alle anderen Maske A [ReadOnly] Flag notwendig oder eben Maske B.
-
Hi,
OK:
Wenn Autor im eigentlichen Dokument als Autor eingetragen ist, dann öffnet sich auch die Dialogbox richtig (bearbeitbar).
@Lossa: verstehe Deinen Ansatz noch nicht ganz.
Woran ich schon gedacht hab: das ganze in Script machen (also Dialogbox öffnen). Dabei ggf. ein temp.-Doc erstellen wegen der Rechte wenns nicht anders geht....
Hat da vielleicht wer einen Ansatz?
Danke,
TMC
-
Hallo TMC,
Das meine ich:
Du prüfst ob User = Autor
dann
@Dialogbox("box_w"...);
sonst
@Dialogbox("box_w";[Readonly]...)
oder
@Dialogbox(box_w_RO"...) wobei diese Maske box_w_RO nur Felder hat die Berechnet zur Anzeige sind.
-
Hallo, TMC,
sag' mal genaueres an ... Wenn sich die Dialogbox auf ein Dokument bezieht, welches ein Autor auch anderweitig bearbeiten dürfte, dann geht das auch mit einer Dialogbox, und Lese- oder Editiermodus spielt da keine Rolle. Da klemmt offensichtlich was ganz anderes. Lossa's Hinweis erscheint mir eher missweisend.
Bernhard
-
Hi Lossa,
sorry, ich glaub ich habe oben missverständlich gepostet:
Problem: User, die nur Autorenrechte haben, dürfen die Felder darin nicht bearbeiten .
Das ist nicht die Frage von mir, sondern das jetzige Ergebnis, welches ich aber vermeiden will.
Mein Ziel:
Es soll jeder Autor die Dialogbox bearbeiten dürfen, unabhängig von den Rechten im jeweiligen Dokument.
Und das klappt leider so nicht.
TMC
-
Hallo TMC,
entschuldige habe das etwas falsch verstanden.
Du willst als mittels einer Dialogbox ein NEUES ?? Dokument erstellen?
Wenn Ja, dann erzeuge eine Dialogbox ohne OK und Abbrechen. Dann baust du in der Dialogbox einen eigenen Knopf "OK" oder ähnlich bezeichnet und dort erstellst du via LS ein beliebiges neues Dokument und schliesst die Dialogbox.
Wenn Nein, dann erzähl mal mehr
-
OK, Bernhard, ich hol mal weiter aus, merke gerade, hab da viel zu schnell gepostet, ohne mehr Background zu geben (siehe auch vorigen Post).
Es gibt da eine DB mit vielen Dokumenten.
Jeder ist grundsätzlich auch Autor lt. ACL. Aber nur in manchen Doks steht auch namentlich ein Autor drin.
Die Doks haben u.a. die Felder "ReminderUNID" (berechnet, enthält: @Text(@DocumentUniqueID)) und "ReminderSubject" (enthält u.a. den Titel des Docs).
Nun gibt es einen Button in der Maske, der die o.g. Dialogbox aufruft. Dabei werden die 2 erwähnten Felder benötigt (weil diese übernommen werden per Default), da daraus ein Kalendereintrag entsteht.
Nun der Haken: User, die nicht in einem Autorenfeld von Dokumenten stehen, sollen trotzdem nach klick auf den "Reminder"-Buhtong die Dialogbox bearbeiten dürfen (um z.B. ein Datum zu setzen) . Und das klappt so leider noch nicht.
TMC
-
HI TMC,
ich frage aber nocheinmal soll in dem Dokument die Änderung der Dialogbox laden oder in ein/em andern/neuem Dokument geändert/erstellt werden?
-
Hi Lossa,
das ursprüngliche Dokument, von dem aus die Dialogbox aufgerufen wird, soll nicht geändert werden nach Eingabe von Daten in der Dialogbox.
TMC
-
Hi TMC,
ich arbeite zwar mit ND6 und habe z.Z keinen R5 client installiert, aber versuche doch einmal das:
Erstelle eine Schaltfläche in deiner Maske:
Ausgeführt wird JavaScript
Dort erstellst du folgenden code:
window.open("/db.nsf/w_box?openForm","Titel des Fensters")
wenn die Maske in einem Dialog erscheint, dann kannst du das ganze verfeinern, indem du mit der grösse des Fensters arbeites:
Hierzu gibt es einen 3. Parameter bei windows.open(...)
"height=...","width=..." ACHTUNG gross und kleinschreibung und die Anführungszeichen sind richtig so und auch das Komma.
Kanst mir ja sagen wenn es klappt, oder kannst du Dir das weitere Denken?
-
Also, wenn die Diabox ein neues Doc erstellen soll, dann bitte unbedingt mit LS arbeiten. Die LotusScript Diabox erlaubt es, der Box ein Dokument mitzugeben. Bevor man WS.Dialogbox aufruft, wird zuerst in der Datenbank ein neues, leeres Dokument erstellt, allfällig vorbesetzte Felder gefüllt und dann die Diabox aufgerufen. Bei diesem Vorgehen spielt der Zustand des aktuellen Docs absolut keine Rolle.
-
OK, ich danke Euch !
Die Lotus Script - Lösung hört sich sehr interessant an, wegen dem
Bei diesem Vorgehen spielt der Zustand des aktuellen Docs absolut keine Rolle.
Grüße,
TMC
-
Hi,
ich habe den Wald nicht mehr vor lauter Bäumen gesehen und die Lösung mit LS ist der einfachste und effektivste Weg das Problem zu lösen.
-
Na, ich hab ja auch den Vorteil gehabt, als letzter zu antworten und hab dadurch auch bessere Karten gehabt ... ;)
-
Hier noch die umgesetzte Lösung:
Sub Click(Source As Button)
'Öffnet Reminder Dialogbox.
'Dabei wird ein neues Temporäres Doc erzeugt, in das u.a. der aktuelle User als Autor eingetragen wird,
'damit die Dialogbox bearbeitbar ist.
Dim uiws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docDialog As NotesDocument
Dim uidoc As NotesUIDocument
Set db = s.CurrentDatabase
Set uidoc = uiws.CurrentDocument
Set doc = uidoc.Document
Set docDialog = db.CreateDocument
docDialog.Reminder_unid = doc.Reminder_unid
docDialog.Reminder_Subject = doc.Reminder_Subject
Dim autorenItem As New NotesItem( docDialog, "AutorenfeldTemp", s.username )
Call uiws.DialogBox( "box_Wiedervorlage", True, True, False, True, True, False, "Reminder", docDialog, False, False)
End Sub
Gruß
TMC