Domino 9 und frühere Versionen > ND6: Entwicklung

Author darf kein ViewRebuild

(1/3) > >>

mara.k:
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

dirk_2909:
Hallo,

der Benutzer benötigt mindestens "Entwickler"-Zugriff.

Dirk

mara.k:
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.

TMC:

--- Zitat von: mara.k am 01.04.05 - 12:49:02 ---Da muss dann doch irgendetwas bei mir falsch sein.

--- Ende Zitat ---

Weiß ich nicht. Nicht unbedingt.

Was soll denn so ein ViewRebuild machen? Die help sagt:

--- Zitat ---Parameters
viewrebuild
Boolean. Defaults to True. Rebuilds the view design, for example, to capture a change in a column formula.
--- Ende Zitat ---

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.

koehlerbv:
Das NotesUIWorkspace.ViewRebuild ist sicherlich nicht der casus cnactus. Dies ist ja nur ein Rückgriff auf das Backend aus dem Frontend:


--- Zitat ---Rebuilds a UI view from its associated back-end view.
--- Ende Zitat ---

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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln