| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> |
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="_Main" script:language="StarBasic">' Set of Macros used for Help Authoring |
| ' ===================================== |
| ' Version |
| ' ------------------------------------- |
| ' |
| |
| ' #************************************************************** |
| ' # |
| ' # Licensed to the Apache Software Foundation (ASF) under one |
| ' # or more contributor license agreements. See the NOTICE file |
| ' # distributed with this work for additional information |
| ' # regarding copyright ownership. The ASF licenses this file |
| ' # to you under the Apache License, Version 2.0 (the |
| ' # "License"); you may not use this file except in compliance |
| ' # with the License. You may obtain a copy of the License at |
| ' # |
| ' # http://www.apache.org/licenses/LICENSE-2.0 |
| ' # |
| ' # Unless required by applicable law or agreed to in writing, |
| ' # software distributed under the License is distributed on an |
| ' # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ' # KIND, either express or implied. See the License for the |
| ' # specific language governing permissions and limitations |
| ' # under the License. |
| ' # |
| ' #************************************************************** |
| |
| Global Const Version = "v3.20100805" |
| |
| Global Const strErr_NoHelpFile = "Not a Help File" |
| |
| '======================================================= |
| ' Main |
| '------------------------------------------------------- |
| ' Ensure that necessary library functions are available |
| '======================================================= |
| Sub Main |
| GlobalScope.BasicLibraries.loadLibrary("Tools") |
| End Sub |
| |
| '======================================================= |
| ' SetMetaDataOnSave |
| '------------------------------------------------------- |
| ' Sets the document meta data. It is called when |
| ' the document is saved. It changes the data and |
| ' then saves it again. |
| '======================================================= |
| Sub SetMetaDataOnSave(Path as String) |
| |
| document = StarDesktop.CurrentComponent |
| sDocRoot = ReadConfig("HelpPrefix") |
| |
| If Path = "" Then |
| Path = document.URL |
| End If |
| |
| If not(IsSubDir(Path,sDocRoot)) Then ' doesn'tr work when resaving the file since it contains the OLD url (before resave) |
| msgbox("The File"+chr(13)+Path+chr(13)+"is outside of your Document Root"+chr(13)+sDocRoot+chr(13)+chr(13)+"You may want to adjust your document root settings and re-save the file.",48,"Warning") |
| Else |
| Path = Right(Path,Len(Path)-Len(sDocRoot)) |
| End If |
| |
| document.DocumentInfo.SetUserFieldName(0,"Indexer") |
| document.DocumentInfo.SetUserFieldName(1,"ID") |
| ' document.DocumentInfo.SetUserFieldName(2,"Comment") |
| document.DocumentInfo.SetPropertyValue("Subject",Path) |
| |
| |
| End Sub |
| |
| '======================================================= |
| ' ValidateOnSave |
| '------------------------------------------------------- |
| ' Ensures that the document is validated when saved |
| ' should be bound to the "Document Save" event but |
| ' currently isn't |
| '======================================================= |
| Sub ValidateOnSave |
| BasicLibraries.LoadLibrary("HelpAuthoring") |
| document = StarDesktop.CurrentComponent |
| If document.URL <> "" Then ' not initial save |
| If IsHelpFile Then |
| SetMetaDataOnSave("") |
| ValidateXHP |
| End If |
| End If |
| End Sub |
| |
| |
| '======================================================= |
| ' CreateFile |
| '------------------------------------------------------- |
| ' Creates a new help file based on the help template |
| ' and calls the save dialog |
| '======================================================= |
| Sub CreateFile |
| GlobalScope.BasicLibraries.loadLibrary("Tools") |
| oPath = createUNOService("com.sun.star.util.PathSettings") |
| arPaths = Split(oPath.Template,";") ' get the paths to the templates from the configuration |
| sHelpTemplate = "" |
| |
| ' change stw extension to ott extension for template |
| |
| For i=0 to ubound(arPaths) ' see if the template path contains the help template |
| If FileExists(arPaths(i)+"/Help/xmlhelptemplate.ott") Then |
| sHelpTemplate = arPaths(i)+"/Help/xmlhelptemplate.ott" |
| End If |
| Next i |
| |
| If sHelpTemplate = "" Then |
| msgbox "Cannot find the help template.",256 |
| Else |
| oDoc = StarDesktop.loadComponentFromURL(sHelpTemplate,"_blank",0,Array()) |
| SaveAs(oDoc) |
| End If |
| |
| End Sub |
| |
| '======================================================= |
| ' SaveAs |
| '------------------------------------------------------- |
| ' Initially saves a new help file on creation. |
| ' Is called from CreateFile |
| '======================================================= |
| Sub SaveAs(oDoc As Object) |
| Dim ListAny(0) as Long |
| Dim oStoreProperties(0) as New com.sun.star.beans.PropertyValue |
| On Local Error Goto ERRHANDLE: |
| |
| sLastSaveDir = ReadConfig("LastSaveDir") |
| sDocRoot = ReadConfig("HelpPrefix") |
| |
| ListAny(0) = com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION_PASSWORD |
| oFileDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") |
| oFileDialog.Initialize(ListAny()) |
| |
| If sLastSaveDir <> "" AND IsSubDir(sLastSaveDir,sDocRoot) Then |
| oFileDialog.setDisplayDirectory(sLastSaveDir) |
| Else |
| oFileDialog.setDisplayDirectory(sDocRoot) |
| End If |
| |
| oMasterKey = GetRegistryKeyContent("org.openoffice.Office.TypeDetection/") |
| oFilters() = oMasterKey.Filters |
| oFileDialog.AppendFilter("Help", "*.xhp") |
| |
| oFileDialog.SetTitle("Save Help File As") |
| iAccept = oFileDialog.Execute() |
| If iAccept = 1 Then |
| WriteConfig("LastSaveDir",oFileDialog.getDisplayDirectory+"/") |
| sPath = oFileDialog.Files(0) |
| oStoreProperties(0).Name = "FilterName" |
| oStoreProperties(0).Value = "XHP_Help" |
| SetMetaDataOnSave(sPath) |
| oDoc.StoreAsUrl(sPath, oStoreProperties()) |
| Else |
| msgbox "You must save a help document before you can work on it."+chr(13)+"This document will be disposed.", 48 |
| oDoc.dispose |
| End If |
| oFileDialog.Dispose() |
| |
| ERRHANDLE: |
| If Err <> 0 Then |
| msgbox "Error: "+chr(13)+ Error$+chr(13)+"Cannot save file."+chr(13),48,"Fatal Error" |
| oDoc.dispose |
| End If |
| End Sub |
| |
| Sub CheckOnLoad |
| ' oDoc = StarDesktop.CurrentComponent |
| ' sDocRoot = ReadConfig("HelpPrefix") |
| ' If sDocRoot="" Then |
| ' msgbox("No document root set. Please set the root folder for your documents.") |
| ' sDocRoot = SetDocumentRoot |
| ' End If |
| ' msgbox(HasUnoInterfaces(oDoc, "com.sun.star.lang.XServiceInfo")) |
| ' sFName = oDoc.URL |
| ' msgbox(sFName+chr(13)+sDocRoot) |
| ' If not(IsSubDir(sFName,sDocRoot)) Then |
| ' msgbox("The file is located outside of your Document Root"+chr(13)+sDocRoot+chr(13)+chr(13)+"Please adjust your document root settings to avoid trouble with links, transcludes and images!",48,"Warning!") |
| ' End If |
| End Sub |
| |
| Sub DisplayVersion |
| msgbox "OpenOffice.org Help Authoring Framework"+chr(13)+"Version "+Version,256 |
| End Sub |
| </script:module> |