Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Patt74 am 13.02.17 - 14:32:51

Titel: Symbolleisten kopieren
Beitrag von: Patt74 am 13.02.17 - 14:32:51
Hallo,

ich habe mir eine Symbolleiste erstellt mit eigenen Buttons (@commands...).

Werden die Symbolleisten irgendwo gespeichert, damit ich diese bei einem anderen Benutzer reinkopieren kann?

Es bestehen keinerlei Zugriffsrechte ala Admin, dies als Hinweis.

Ich kann natürlich bei jedem einzelnen die Symbolleiste und die dazugehörigen Buttons manuell anlegen, aber bei 5 Leuten kostet das ja ewig Zeit.  :o

Danke.

Grüße
Titel: Re: Symbolleisten kopieren
Beitrag von: jBubbleBoy am 13.02.17 - 15:05:25
Die werden lokal in die Bookmark.nsf gespeichert (Gliederungen).
Hast du einen Designer?
Titel: Re: Symbolleisten kopieren
Beitrag von: Tode am 13.02.17 - 15:16:34
Die Symbolleisten liegen in der Bookmark.nsf, dort in einer Gliederung mit dem Namen "UserToolbar".

Problem: die bookmark.nsf liegt bei jedem lokal. Wenn Du das übertragen willst, dann musst Du die Toolbar an einer zentralen Stelle in einer Datenbank auf dem Server vorhalten und die Gliederungs- Einträge per Script kopieren.
Hier mal Code, wie das funktionier (Beispielcode, nicht vollständig, z.B. fehlen die errorhandler- funktionen, die verwendet werden)nur um zu zeigen, wie komplex das werden kann):

Code
Sub Initialize
	On Error GoTo ErrorRoutine
	'==================================================================================================================================
	Dim dbLocal As NotesDatabase
	Dim dbBookmark As NotesDatabase
		
	'- Toolbar
	Dim olSource As NotesOutline
	Dim olentry As NotesOutlineEntry
	Dim olentryChild As NotesOutlineEntry
	Dim olBookmark As NotesOutline
	Dim olentryBookmark As NotesOutlineEntry
	Dim olentryBookmarkChild As NotesOutlineEntry
	Dim olentryBookmarkChildNext As NotesOutlineEntry
	Dim olentryReferenceBookmark As NotesOutlineEntry
	Dim blnAddAsChild As Boolean
	Dim strEntryName As String
	Dim strToolbarname As String
	Dim strTargetOutlineName As String
	Dim blnFound As Boolean
	Dim blnUpdate As Boolean
		
	'- Get users bookmark
	Set dbBookmark = New NotesDatabase( "" , "bookmark.nsf" )
	
	'- Get Source outline
	Set olSource = g_dbCurrent.Getoutline("NameDerToolbar")
	
	'- Get the first root entry for the new outline
	Set olentry = olSource.Getfirst()
	strToolbarName = olentry.Label
	strEntryName = olentry.Alias
	strTargetOutlineName = "UserToolbar"
	
	'- Get Bookmark outline
	Set olBookmark = dbBookmark.Getoutline( strTargetOutlineName )
	blnFound = False
	blnUpdate = True

	'- Find the toolbar in the target database and remove it
	Set olentryBookmark = olBookmark.Getfirst()
	While Not olentryBookmark Is Nothing And blnFound = False
		If olentryBookmark.Label = strToolbarname Then '- toolbar found
			blnFound = True
			blnUpdate = True
			'- Now remove the old toolbar to recreate it as copy
			'- First: Run through all childs
			Set olentryBookmarkChild = olBookmark.Getchild( olentryBookmark )
			While Not olentryBookmarkChild Is Nothing
				Set olEntryBookmarkChildNext = olBookmark.Getnextsibling( olentryBookmarkChild )
				'- And remove them
				Call olBookmark.Removeentry( olentryBookmarkChild )
				Set olentryBookmarkChild = olEntryBookmarkChildNext
			Wend
		End If
		If blnFound = True And blnUpdate = True Then
			'- Now remove the root entry
			Call olBookmark.Removeentry( olEntryBookmark )
			Set olEntryBookmark = Nothing
		Else
			Set olentryBookmark = olBookmark.Getnextsibling( olentryBookmark )
		End If
	Wend
	
	If blnUpdate = True Then
		'- Save our changes
		Call olBookmark.Save()
		
		'- Now recreate the toolbar from scratch
		Set olentryBookmark = olBookmark.Createentryfrom( olentry )
		
		'- Now cycle through all child entries
		Set olentryReferenceBookmark = olEntryBookmark
		blnAddAsChild = True
		Set olentryChild = olSource.Getchild(olentry)
		While Not olentryChild Is Nothing
			'- And copy them as a child document to the toolbar
			Set olentryBookmarkChild = olBookmark.Createentryfrom( olentryChild, olentryReferenceBookmark, True, blnAddAsChild )
			Set olentryReferenceBookmark = olentryBookmarkChild
			blnAddAsChild = False
			Set olentryChild = olSource.Getnextsibling(olentryChild)
		Wend
		Call olBookmark.Save()
	End If
	'===================================================================================================================================
EndOfRoutine:
	Exit Sub
ErrorRoutine:
	If ErrorHandler (GetThreadInfo (LSI_THREAD_PROC), GetThreadInfo (LSI_THREAD_CALLPROC)) = ERRORHANDLER_TOP_OF_STACK Then
		Resume EndOfRoutine	
	End If	
End Sub
Titel: Re: Symbolleisten kopieren
Beitrag von: Patt74 am 13.02.17 - 17:19:10
Die werden lokal in die Bookmark.nsf gespeichert (Gliederungen).
Hast du einen Designer?

Ich bin nur einfacher Benutzer in einem großen Unternehmen, deswegen auch mein Hinweis von wegen Adminrechten.
Kann man denn die nsf Dateien als normaler User einsehen/bearbeiten?
Titel: Re: Symbolleisten kopieren
Beitrag von: Patt74 am 13.02.17 - 17:21:02
Die Symbolleisten liegen in der Bookmark.nsf, dort in einer Gliederung mit dem Namen "UserToolbar".

Problem: die bookmark.nsf liegt bei jedem lokal. Wenn Du das übertragen willst, dann musst Du die Toolbar an einer zentralen Stelle in einer Datenbank auf dem Server vorhalten und die Gliederungs- Einträge per Script kopieren.
Hier mal Code, wie das funktionier (Beispielcode, nicht vollständig, z.B. fehlen die errorhandler- funktionen, die verwendet werden)nur um zu zeigen, wie komplex das werden kann):


hier gilt dann entsprechend meiner o.g. Antwort. Kann ich solch Code überhaupt verwenden ohne Adminrechte? Falls ja wie?
Wobei das denke ich ohnehin eine Nummer zu groß für mich ist :-(
Titel: Re: Symbolleisten kopieren
Beitrag von: jBubbleBoy am 13.02.17 - 18:00:05
Darum die Frage nach einem Notes Designer, damit wäre eine Verteilung über die Schablone "bookmark.ntf" schnell umgesetzt, aber so ... frag mal deinen Admin, ob er das für dich machen kann ;)