Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mara.k am 01.04.05 - 12:17:37
-
Hallo zusammen, bisher hab ich über die Suche alle nötigen Informationen gefunden, jetzt komm ich jedoch nicht weiter.
Ich möchte die Möglichkeit zum anpassen der Ansichten für den Benutzer einfacher darstellen und gleichzeitig eine Suche ausführen, bekomme jedoch die Meldung sie haben zur Durchführung keine Berechtigung wenn es ein Benutzer versucht, der halt nur Author Rechte hat.
Hier Schritt für Schritt was ich tue:
1. eine Private ansicht erstellen und Agenten ausführen:
@SetTargetFrame("display");
@Command( [OpenView] ; "privatNAV");
@Command([RunAgent];"SetNAVAnsicht")
2. der Agent ruft entweder die Seite zum Einstellen der Ansicht auf oder wenn die schon mal ausgewählt wurde, soll er die Einschränkungen aufbauen:
Sub CreateUserViewNAV
On Error Goto errmsg
Dim s As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim defaultView As NotesView
Dim UserView As NotesView
Dim pdoc,vdoc As NotesDocument
Dim tdoc,doc,viewdoc As Notesdocument
Dim dc As NotesdocumentCollection
Dim myItem As NotesItem
Dim formula, Server, DBName As String
Dim uidb As NotesUIDatabase
Dim db As Notesdatabase
Dim UserName As NotesName
Set uidb = workspace.CurrentDatabase
Set db = s.currentDataBase
Set pdoc=db.GetProfileDocument("(Sel_NAV)",s.Username)
Set UserName=New NotesName(s.UserName)
If (pdoc Is Nothing) Or (pdoc.HasItem("Firma") = False) Then
Call workspace.editProfile("(Sel_NAV)",s.UserName)
Exit Sub
End If
'Alle Dok's suchen, die vom Typ Nachtrag
'und in denen das Feld Firma die gewünschten Firmen
formula = |@Contains(Form;"Nachtrag") & DeletedOn = "" |
Set myItem = pdoc.GetFirstItem("Firma")
If myItem.Text <> "" Then
formula = formula + |& @IsMember(Firma;"| + StrReplace(myItem.Text,";","':'") + |")|
End If
'und das Feld NA_Gewerk die gewünschten Gewerke enthält
Set myItem = pdoc.GetFirstItem("NA_Gewerk")
If myItem.Text <> "" Then
formula = formula + |& @IsMember(NA_Gewerk;"| + StrReplace(myItem.Text,";","':'") + |")|
End If
Set myItem = pdoc.GetFirstItem("DokSel")
If myItem.Text <> "" Then
formula = formula + |&| + StrReplace(myItem.Text,";","&")
End If
' die private Ansicht ausfindig machen
Forall v In db.views
If v.Name = "privatNAV" Then
isPrivateView = False
Set vdoc = v.parent.GetDocumentByUnid( v.UniversalID )
If Not (vdoc Is Nothing) Then
If vdoc.HasItem("$Flags") Then
If Instr(vdoc.GetItemValue("$Flags")(0), "V") Then
Set defaultview = v
End If
End If
End If
End If
End Forall
' nur falls es doch mal schief geht
If defaultView Is Nothing Then
Print "probleme mit der Ansicht"
Exit Sub
Else
'übernehmen der Auswahl
defaultview.Selectionformula=formula
'übernehmen der Spalten
Set myItem = pdoc.GetFirstItem("Columns")
If myItem.Text <> "" Then
Forall c In defaultview.Columns
If c.Title <> "" Then
If Instr(1, myItem.Text, c.Title, 5) > 0 Then
c.IsHidden = False
Else
c.IsHidden = True
End If
End If
End Forall
End If
Call workspace.ViewRebuild
End If
Exit Sub
errmsg:
Print Error() & " :CreateUserViewNAV: " & Err() & " on line " Erl()
End Sub
Wie schon gesagt bekommen Anwender ein Berechtigungsproblem beim ViewRebuild.
Alles andere
Call workspace.OpenDatabase( s.CurrentDatabase.server, sCurrentDatabase.FilePath)
oder
defaultview.Refresh
aktualisiert nicht die Ansicht, wie gewünscht.
Wie kann ich sonst die Möglichkeit "Ansicht anpassen..." für den User nutzen?
Danke schon einmal
Mara
-
Hallo,
der Benutzer benötigt mindestens "Entwickler"-Zugriff.
Dirk
-
Schon gemerkt, jedoch nicht Entwickler sondern Editor mit "öffentliche Ordner / Ansichten erstellen".
Die Frage ist aber warum, wenn er doch die Funktion "Ansichten anpassen..." nutzen darf und es sich um eine Private Ansicht handelt.
Und leider nutzt mir das überhaupt nichts, da ich Dokumente mit Leser- / Author-Feldern nutze und somit schon eingeschränkt ist, welche er sehen darf.
Ich kann dem Anwender ja auch nicht nur für die Funktion das Recht geben, da er es ja ausführt. Gibt es eine Möglichkeit das gezielt vom Server zu aktualisieren?
Ach ja, hatte ja schon mehr dazu gesucht, irgendwie macht diese Aussage kein Sinn:
http://www-10.lotus.com/ldd/today.nsf/Lookup/LS_views
New functionality for views
These new and enhanced methods and properties allow developers to create scripts that non-developers can run to make changes to views without the intervention of the developer
Da muss dann doch irgendetwas bei mir falsch sein.
-
Da muss dann doch irgendetwas bei mir falsch sein.
Weiß ich nicht. Nicht unbedingt.
Was soll denn so ein ViewRebuild machen? Die help sagt:
Parameters
viewrebuild
Boolean. Defaults to True. Rebuilds the view design, for example, to capture a change in a column formula.
Ich denke da wird gespeichert. Wenn gespeichert wird, dann werden da wohl im Hintergrund Rechte abgefragt. Und Autor reicht da wohl hier leider nicht.
Hast Du mal in der KBase nachgesehen? Hast Du einen Vertrag? Ich denke das wäre was, um dort mal als Issue reinzukippen. Denn so wie Du plausibel die Situation schilderst, sollte der ViewRebuild eigentlich funktionieren. Ich konnte jetzt zumindest nix falsches erkennen. Bis eben auf die Sache, dass das als Autor nicht geht. Aber ist so auch nicht direkt dokumentiert in der Help.
Also: ich tendiere, mal IBM danach zu fragen. Hab jetzt allerdings nicht im LDD-Forum nachgesehen, dort würde ich auch mal stöbern.
Und halte uns bitte auf dem laufenden, danke.
-
Das NotesUIWorkspace.ViewRebuild ist sicherlich nicht der casus cnactus. Dies ist ja nur ein Rückgriff auf das Backend aus dem Frontend:
Rebuilds a UI view from its associated back-end view.
Entscheidend ist ehe der "Umbau" der view selection formula - und da bekommst Du mangels Rechten der User Schwierigkeiten.
Sag' mal genaueres, was Du bezwecken willst. "Dynamische Ansichten" sind auch in R6 ein letztlich nicht wirklich gelöstes Problem, aber es bieten sich doch etliche "workarounds" an. Vielleicht können wir da gemeinsam ansetzen.
Bernhard
-
du könntest den Agent im Namen einer Person/Gruppe mit den entsprechenden Rechten ausführen lassen. Dann sollte das kein Problem mehr sein. Diese Möglichkeit gibt es seit Notes 6 (kannst du irgendwo in den Agenteigenschaften einstellen).
*edit*
heißt "Run on behalf of" auf dem Security Tab des Agents
http://www-12.lotus.com/ldd/doc/domino_notes/6.5.1/help65_designer.nsf/Main?OpenFrameSet
-
Thomas, unter bestimmten Umständen wäre dies wirklich eine Alternative. Funktionieren wird dies aber nur auf einem Server. Ich habe da meine Zweifel, ob das eine für den User bequeme Lösung ergeben kann. Wenn aber die Bedingungen entsprechend eng abgesteckt sind, ist das einen Versuch wert.
Bernhard
-
ich gehe mal davon aus, dass das entweder auf dem Server oder in einer Datenbank mit konsistenter ACL (wo die Funktionalität auch da sein sollte) läuft, sonst wäre das Problem mit mangelnden Rechten ja gar nicht aufgetaucht.
Welche Zweifel hast du bezüglich der Bequemlichkeit? Welche Bedingungen müssen abgesteckt sein?
-
Danke schon mal für die Antworten.
Das mit den Agent-Eigenschaften ist vielleicht der Hinweis, werde ich mal ausprobieren. Leider haben wir momentan ein schwerwiegenden Server-Absturz mit NSD is Running, von daher kann ich leider nicht weiter machen.
Was ich bezwecken will:
Wir haben eine Projekt Datenbank in der es unter Anderem um Nachträge geht. Nun wollen die Anwender je nach Laune alle Informationen sehen oder nur das was Sie interessiert. Es gibt schon lauter Ansichten nach Kategorien und ich will vermeiden, das ich zu viele anbieten muss, wo auch ein Anwender nicht mehr durchsteigt. Von daher wäre es toll, wenn der Anwender selber entscheidet, was ihn interessiert.
Da es ja die Möglichkeit über "Ansicht anpassen..." gibt und der Artikel so schön sagte "nicht-Entwickler" wollte ich nur noch optimieren, das die Selektion und Spalten Einstellungen zusammen laufen.
-
Für so etwas wären doch eigentlich die Folder/Ordner gedacht, jeder User lege sich einen Favoriten-Ordner an, wo er diejenigen Dokumente hineinstellt, die für ihn von besonderem Interesse sind.
-
Leider weiss er nicht welche für Ihn von interesse sind, sondern jmd. anderes schreibt neue Zahlen rein und je nach Datum wie lange das her ist oder ob eine bestimmte Bearbeitung stattgefunden hat, möchten unsere Geschäftsführer eine Übersicht haben.
Die kennen sich auch nicht wirklich mit Lotus aus und möchten alles auf dem Präsentierteller.
-
Aha, das berühmte Silbertablett .... verstehe .... damit ist nicht ganz einfach umzugehen.