Im Templatemanager kannst du (Icon ganz links unten) Categories erzeugen und bearbeiten, z.B. A oder B … erzeugen.
Du musst dann aber die betreffenden Vorlagen in diese Categories importieren.
Weil die Categories und Templates standardmäßig in user/template physisch als Baum gespeichert werden, nehme ich an, dass das auch mit einem “verstellten” Pfad funktioniert. Ich möchte aber mein System hier nicht mit Experimenten traktieren.
Eventuell ziehst du auch vor, auf die manchmal (für mich) undurchsichtige Unterstütung durch den Templatemanager für diese Aufgabe zu verzichten, und mit Hilfe eines kleinen Sub in Basic die Benutzer direkt zu einem Baum von Templates zu leiten. Da wäre halt ein zusätzliches Element in eine Toolbar und/oder ins File Menü einzufügen. (Das müsste man freilich fir LibO und für jede Dokumentenklasse extra machen und für jedes User Profile, wenn es da mehrere gibt.)
(Ich habe gerade die Gelegenheiot genutzt, mal eine halbe Stunde zu spielen, un das für mich [nur Win, ein Benutzer] zu machen, weil ich mit der eingebauten “Stütze” auch nicht glücklich bin. Ich habe dazu nur ein Skript aus Andrew Pitonyaks “Useful Information”) kopieren und ein wenig anpassen müssen. Im Templatemanager kannst du (Icon ganz links unten) Categories erzeugen und bearbeiten, z.B. A oder B … erzeugen.
Du musst dann aber die betreffenden Vorlagen in diese Categories importieren.
Weil die Categories und Templates standardmäßig in user/template physisch als Baum gespeichert werden, nehme ich an, dass das auch mit einem “verstellten” Pfad funktioniert. Ich möchte aber mein System hier nicht mit Experimenten traktieren.
(Ich habe gerade die Gelegenheiot genutzt, mal eine halbe Stunde zu spielen, un das für mich [nur Win, ein Benutzer] zu machen, weil ich mit der eingebauten “Stütze” auch nicht glücklich bin. Ich habe dazu nur ein Skript aus Andrew Pitonyaks “Useful Information”) kopieren und ein wenig anpassen müssen.
=== EDITING ===
Welche Möglichkeien bestehen, wenn man in einem solchen Fall ganz auf die Anwendung des Templatemanagers verzichtet? Alle Templates sind in einemUnter-Dateibaum strukturiert abgelegt, der nicht in ‘Pfade’ als Templatepfad eingetragen sein muss.
Ob damit die Nachführungsmöglichkeit für geänderte Styles verlässlich funktioniert, kann ich nicht sicher genug sagen. Dies ist eine Darstellung vo Möglichkeiten, keine dringende Empfehlung!
A
Auf allen beteiligten Systemen sind die Dateitypen für LibO-Templates korrekt mit LibO als Anwendung assoziiert.
Dann kann man eine Instanz des Dateimanagers für die Templates offen halten, und sie von dort aus zum Erzeugen neuer Dokumente aufrufen. Das ist schon alles. Auf die Templates selbst sollen die “gewöhnlichen Nutzer” keine Schreibrechte haben.
B
Die Anwendung der Templates soll jetzt unbedingt vom laufenden LibO aus erfolgen.
In MyMacros.wird ein Modul mit etwas BasicCode angelegt. Ein Aufruf der relevanten Routine wird in ein Menü und/oder eine Toolbar eigefügt. Damit öffnet man einen FilePicker für die Auswahl eines Templates. Auf diesem Weg kann man sogar Dateien, die im “gewöhnlichen Modus” gespeichert wurden, als Tempates verwenden (heißt; eine neue unbenannte Kopie daraus erzeugen).
Ein (roh entworfener) Code dafür:
Sub NewFromOurTemplates()
Dim filterNames(0) As String
Const errMsg As String = "No template selected!"
filterNames(0) = "*.o??"
lInitPath = "C:\Users\Wolfgang\Documents\00Templates"
got = getAFilePath(filterNames(), lInitPath)
If FileExists(got) Then
Dim mediaD(1) As New com.sun.star.beans.PropertyValue
mediaD(0).Name = "AsTemplate"
mediaD(0).Value = True
mediaD(1).Name = "Hidden"
mediaD(1).Value = True
doc1 = StarDesktop.LoadComponentFromUrl(got, "_blank", 0, mediaD)
'The document is hidden interim. If newly created from a template (URL="") it will be
'set visible. Otherwise (impossible?) the running process should not allow the user to access it.
If NOT (doc1.URL="") Then
doc1.Close(True)
MsgBox(errMsg)
Exit Sub
Else
doc1.CurrentController.Frame.ContainerWindow.SetVisible(True)
End If
Else
MsgBox(errMsg)
End If
End Sub
Function getAFilePath(pFilter As String, pInitPath As String, Optional pStrict As Long) As String
getAFilePath = ":error:"
pInitPath = ConvertToUrl(pInitPath)
If IsMissing(pStrict) Then pStrict = 0 'Unused in the preliminary version!
Dim filePicker As Object, servSFAcc As Object
GlobalScope.BasicLibraries.LoadLibrary("Tools")
filePicker = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
servSFAcc = createUnoService("com.sun.star.ucb.SimpleFileAccess")
AddFiltersToDialog(pFilter, filePicker)
If servSFAcc.Exists(pInitPath) Then
filePicker.SetDisplayDirectory("")
filePicker.SetDisplayDirectory(pInitPath)
'This is the statement that does not work. I didn't find remedy yet though I wasted
'some time with the search. filePicker, once created, behaves as if immortal.
'The property DisplayDirectory always remembers the last run.
End If
If filePicker.Execute()=1 Then
getAFilePath = filePicker.Files(0)
End If
filePicker.Dispose()
End Function