Domino 9 und frühere Versionen > ND9: Entwicklung

$PublicAccess und Leserfelder

<< < (2/2)

ascabg:

--- Zitat ---Das ist zwar nicht meine Meinung, aber leider nicht zu ändern.
--- Ende Zitat ---

Wieso nicht?

Im Artikel heisst es doch ganz klar, dass das Leserfeld weg muss, damit das Dokument als Public angesehen werden kann.

Und du hast doch selber geschrieben, dass, wenn du das Leserfeld aus dem Dokument loescht, dass dann der gewuenschte Effekt eingetreten ist.


Andreas

Klafu:
Wie Andreas sagt
"Reader Names fields and $PublicAccess fields should not exist on the same document"

Chris

HH:
Hallo,

weil ich bislang der Meinung war, dass Dokumente Leserfeldern und "*" für alle lesbar sind. Die Tatsache, dass das reported wurde, zeigt mir, dass andere das auch so oder ähnlich sehen.

Immerhin hat das zur Folge, dass ich bei einer Freigabe die vorhandenen, für einen Workflow benötigten Items entfernen muss. Oder besser gesagt, ich muss die Inhalte erst einmal retten, für den Fall, dass die Freigabe wieder rückgängig gemacht werden soll.

Außerdem müssen die Felder aus der Maske raus, damit sie nicht neu erstellt werden, wenn freigegebene Dokumente noch bearbeitet werden sollen.

Gut, das habe ich nun in meiner Anwendung realisiert. Ich wäre aber auch nicht böse 'drum gewesen, wenn ich mir den Aufwand hätte sparen können.

Hubert

HH:
Ach so, hier noch meine (Test-) Lösung:

Die Reader Items aus der Maske in eine Teilmaske gepackt, die eingebunden wird, wenn $PublicAccess != "1".


--- Code: ---Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim currentDb As NotesDatabase
Set currentDb = session.CurrentDatabase
Dim col As NotesDocumentCollection

Set col = currentDb.UnprocessedDocuments
Dim doc As NotesDocument
Set doc = col.GetFirstDocument
Dim item As NotesItem
Set item = doc.GetFirstItem( "$PublicAccess" )
Dim q1 As String, q2 As String
q1 = {Möchten Sie die Auswahl des Services "} & doc.subject(0) & {" sperren?}
q2 = {Möchten Sie den Service "} & doc.subject(0) & {" für Web-Benutzer auswählbar machen?}
If Not item Is Nothing Then
If item.Text = "1" Then
If Msgbox( q1, 36, "Freigabe beenden" ) = 6 Then
Call blockDoc( doc )
End If
Else
If Msgbox( q2, 36, "Dokument freigeben" ) = 6 Then
Call publishDoc( doc )
End If
End If
Else
If Msgbox( q2, 36, "Dokument freigeben" ) = 6 Then
Call publishDoc( doc )
End If
End If

Call ws.ViewRefresh
End Sub

--- Ende Code ---

Zum veröffentlichen:

--- Code: ---Sub publishDoc( doc As NotesDocument )
'Dokument fürs Web freigeben
'Alle Leserfelder in Textfelder umspeichern und aus dem Dokument entfernen
'$PublicAccess auf "1" setzen

Forall elem In doc.items
If elem.type = READERS Then
'Inhalt des Leserfeldes in ein Textfeld sichern
Call doc.ReplaceItemValue( "reader_" & elem.name, elem.values )
'Leserfeld löschen
Call doc.RemoveItem( elem.name )
End If
End Forall
Call doc.ReplaceItemValue( "$PublicAccess", "1" )
Call doc.Save( True, False, True )
End Sub

--- Ende Code ---

Zum sperren:

--- Code: ---Sub blockDoc( doc As NotesDocument)
'Dokument für Web-Benutzer sperren
'$PublicAccess item entfernen
'Leserfelder setzen

Dim itemName As String, readerItem As NotesItem
Forall elem In doc.items
If Lcase( Left( elem.name, 7 ) ) = "reader_" Then
'Inhalt des Textfeldes in ein Leserfeld umspeichern
itemName = Replace( elem.name, "reader_", "" )
Set readerItem = New NotesItem( doc, itemName, elem.values, READERS )
'Textfeld löschen
Call doc.RemoveItem( elem.name )
End If
End Forall
Call doc.RemoveItem( "$PublicAccess" )
Call doc.Save( True, False, True )
End Sub

--- Ende Code ---

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln