1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?> 2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="_Main" script:language="StarBasic">' Set of Macros used for Help Authoring 4*b1cdbd2cSJim Jagielski' ===================================== 5*b1cdbd2cSJim Jagielski' Version 6*b1cdbd2cSJim Jagielski' ------------------------------------- 7*b1cdbd2cSJim Jagielski' 8*b1cdbd2cSJim Jagielski 9*b1cdbd2cSJim Jagielski' #************************************************************** 10*b1cdbd2cSJim Jagielski' # 11*b1cdbd2cSJim Jagielski' # Licensed to the Apache Software Foundation (ASF) under one 12*b1cdbd2cSJim Jagielski' # or more contributor license agreements. See the NOTICE file 13*b1cdbd2cSJim Jagielski' # distributed with this work for additional information 14*b1cdbd2cSJim Jagielski' # regarding copyright ownership. The ASF licenses this file 15*b1cdbd2cSJim Jagielski' # to you under the Apache License, Version 2.0 (the 16*b1cdbd2cSJim Jagielski' # "License"); you may not use this file except in compliance 17*b1cdbd2cSJim Jagielski' # with the License. You may obtain a copy of the License at 18*b1cdbd2cSJim Jagielski' # 19*b1cdbd2cSJim Jagielski' # http://www.apache.org/licenses/LICENSE-2.0 20*b1cdbd2cSJim Jagielski' # 21*b1cdbd2cSJim Jagielski' # Unless required by applicable law or agreed to in writing, 22*b1cdbd2cSJim Jagielski' # software distributed under the License is distributed on an 23*b1cdbd2cSJim Jagielski' # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 24*b1cdbd2cSJim Jagielski' # KIND, either express or implied. See the License for the 25*b1cdbd2cSJim Jagielski' # specific language governing permissions and limitations 26*b1cdbd2cSJim Jagielski' # under the License. 27*b1cdbd2cSJim Jagielski' # 28*b1cdbd2cSJim Jagielski' #************************************************************** 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim JagielskiGlobal Const Version = "v3.20100805" 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim JagielskiGlobal Const strErr_NoHelpFile = "Not a Help File" 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski'======================================================= 35*b1cdbd2cSJim Jagielski' Main 36*b1cdbd2cSJim Jagielski'------------------------------------------------------- 37*b1cdbd2cSJim Jagielski' Ensure that necessary library functions are available 38*b1cdbd2cSJim Jagielski'======================================================= 39*b1cdbd2cSJim JagielskiSub Main 40*b1cdbd2cSJim Jagielski GlobalScope.BasicLibraries.loadLibrary("Tools") 41*b1cdbd2cSJim JagielskiEnd Sub 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski'======================================================= 44*b1cdbd2cSJim Jagielski' SetMetaDataOnSave 45*b1cdbd2cSJim Jagielski'------------------------------------------------------- 46*b1cdbd2cSJim Jagielski' Sets the document meta data. It is called when 47*b1cdbd2cSJim Jagielski' the document is saved. It changes the data and 48*b1cdbd2cSJim Jagielski' then saves it again. 49*b1cdbd2cSJim Jagielski'======================================================= 50*b1cdbd2cSJim JagielskiSub SetMetaDataOnSave(Path as String) 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski document = StarDesktop.CurrentComponent 53*b1cdbd2cSJim Jagielski sDocRoot = ReadConfig("HelpPrefix") 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski If Path = "" Then 56*b1cdbd2cSJim Jagielski Path = document.URL 57*b1cdbd2cSJim Jagielski End If 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski If not(IsSubDir(Path,sDocRoot)) Then ' doesn'tr work when resaving the file since it contains the OLD url (before resave) 60*b1cdbd2cSJim Jagielski 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") 61*b1cdbd2cSJim Jagielski Else 62*b1cdbd2cSJim Jagielski Path = Right(Path,Len(Path)-Len(sDocRoot)) 63*b1cdbd2cSJim Jagielski End If 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski document.DocumentInfo.SetUserFieldName(0,"Indexer") 66*b1cdbd2cSJim Jagielski document.DocumentInfo.SetUserFieldName(1,"ID") 67*b1cdbd2cSJim Jagielski' document.DocumentInfo.SetUserFieldName(2,"Comment") 68*b1cdbd2cSJim Jagielski document.DocumentInfo.SetPropertyValue("Subject",Path) 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim JagielskiEnd Sub 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski'======================================================= 74*b1cdbd2cSJim Jagielski' ValidateOnSave 75*b1cdbd2cSJim Jagielski'------------------------------------------------------- 76*b1cdbd2cSJim Jagielski' Ensures that the document is validated when saved 77*b1cdbd2cSJim Jagielski' should be bound to the "Document Save" event but 78*b1cdbd2cSJim Jagielski' currently isn't 79*b1cdbd2cSJim Jagielski'======================================================= 80*b1cdbd2cSJim JagielskiSub ValidateOnSave 81*b1cdbd2cSJim Jagielski BasicLibraries.LoadLibrary("HelpAuthoring") 82*b1cdbd2cSJim Jagielski document = StarDesktop.CurrentComponent 83*b1cdbd2cSJim Jagielski If document.URL <> "" Then ' not initial save 84*b1cdbd2cSJim Jagielski If IsHelpFile Then 85*b1cdbd2cSJim Jagielski SetMetaDataOnSave("") 86*b1cdbd2cSJim Jagielski ValidateXHP 87*b1cdbd2cSJim Jagielski End If 88*b1cdbd2cSJim Jagielski End If 89*b1cdbd2cSJim JagielskiEnd Sub 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski'======================================================= 93*b1cdbd2cSJim Jagielski' CreateFile 94*b1cdbd2cSJim Jagielski'------------------------------------------------------- 95*b1cdbd2cSJim Jagielski' Creates a new help file based on the help template 96*b1cdbd2cSJim Jagielski' and calls the save dialog 97*b1cdbd2cSJim Jagielski'======================================================= 98*b1cdbd2cSJim JagielskiSub CreateFile 99*b1cdbd2cSJim Jagielski GlobalScope.BasicLibraries.loadLibrary("Tools") 100*b1cdbd2cSJim Jagielski oPath = createUNOService("com.sun.star.util.PathSettings") 101*b1cdbd2cSJim Jagielski arPaths = Split(oPath.Template,";") ' get the paths to the templates from the configuration 102*b1cdbd2cSJim Jagielski sHelpTemplate = "" 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski ' change stw extension to ott extension for template 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski For i=0 to ubound(arPaths) ' see if the template path contains the help template 107*b1cdbd2cSJim Jagielski If FileExists(arPaths(i)+"/Help/xmlhelptemplate.ott") Then 108*b1cdbd2cSJim Jagielski sHelpTemplate = arPaths(i)+"/Help/xmlhelptemplate.ott" 109*b1cdbd2cSJim Jagielski End If 110*b1cdbd2cSJim Jagielski Next i 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski If sHelpTemplate = "" Then 113*b1cdbd2cSJim Jagielski msgbox "Cannot find the help template.",256 114*b1cdbd2cSJim Jagielski Else 115*b1cdbd2cSJim Jagielski oDoc = StarDesktop.loadComponentFromURL(sHelpTemplate,"_blank",0,Array()) 116*b1cdbd2cSJim Jagielski SaveAs(oDoc) 117*b1cdbd2cSJim Jagielski End If 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim JagielskiEnd Sub 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski'======================================================= 122*b1cdbd2cSJim Jagielski' SaveAs 123*b1cdbd2cSJim Jagielski'------------------------------------------------------- 124*b1cdbd2cSJim Jagielski' Initially saves a new help file on creation. 125*b1cdbd2cSJim Jagielski' Is called from CreateFile 126*b1cdbd2cSJim Jagielski'======================================================= 127*b1cdbd2cSJim JagielskiSub SaveAs(oDoc As Object) 128*b1cdbd2cSJim JagielskiDim ListAny(0) as Long 129*b1cdbd2cSJim JagielskiDim oStoreProperties(0) as New com.sun.star.beans.PropertyValue 130*b1cdbd2cSJim Jagielski On Local Error Goto ERRHANDLE: 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski sLastSaveDir = ReadConfig("LastSaveDir") 133*b1cdbd2cSJim Jagielski sDocRoot = ReadConfig("HelpPrefix") 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski ListAny(0) = com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION_PASSWORD 136*b1cdbd2cSJim Jagielski oFileDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 137*b1cdbd2cSJim Jagielski oFileDialog.Initialize(ListAny()) 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski If sLastSaveDir <> "" AND IsSubDir(sLastSaveDir,sDocRoot) Then 140*b1cdbd2cSJim Jagielski oFileDialog.setDisplayDirectory(sLastSaveDir) 141*b1cdbd2cSJim Jagielski Else 142*b1cdbd2cSJim Jagielski oFileDialog.setDisplayDirectory(sDocRoot) 143*b1cdbd2cSJim Jagielski End If 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski oMasterKey = GetRegistryKeyContent("org.openoffice.Office.TypeDetection/") 146*b1cdbd2cSJim Jagielski oFilters() = oMasterKey.Filters 147*b1cdbd2cSJim Jagielski oFileDialog.AppendFilter("Help", "*.xhp") 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski oFileDialog.SetTitle("Save Help File As") 150*b1cdbd2cSJim Jagielski iAccept = oFileDialog.Execute() 151*b1cdbd2cSJim Jagielski If iAccept = 1 Then 152*b1cdbd2cSJim Jagielski WriteConfig("LastSaveDir",oFileDialog.getDisplayDirectory+"/") 153*b1cdbd2cSJim Jagielski sPath = oFileDialog.Files(0) 154*b1cdbd2cSJim Jagielski oStoreProperties(0).Name = "FilterName" 155*b1cdbd2cSJim Jagielski oStoreProperties(0).Value = "XHP_Help" 156*b1cdbd2cSJim Jagielski SetMetaDataOnSave(sPath) 157*b1cdbd2cSJim Jagielski oDoc.StoreAsUrl(sPath, oStoreProperties()) 158*b1cdbd2cSJim Jagielski Else 159*b1cdbd2cSJim Jagielski msgbox "You must save a help document before you can work on it."+chr(13)+"This document will be disposed.", 48 160*b1cdbd2cSJim Jagielski oDoc.dispose 161*b1cdbd2cSJim Jagielski End If 162*b1cdbd2cSJim Jagielski oFileDialog.Dispose() 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski ERRHANDLE: 165*b1cdbd2cSJim Jagielski If Err <> 0 Then 166*b1cdbd2cSJim Jagielski msgbox "Error: "+chr(13)+ Error$+chr(13)+"Cannot save file."+chr(13),48,"Fatal Error" 167*b1cdbd2cSJim Jagielski oDoc.dispose 168*b1cdbd2cSJim Jagielski End If 169*b1cdbd2cSJim JagielskiEnd Sub 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim JagielskiSub CheckOnLoad 172*b1cdbd2cSJim Jagielski' oDoc = StarDesktop.CurrentComponent 173*b1cdbd2cSJim Jagielski' sDocRoot = ReadConfig("HelpPrefix") 174*b1cdbd2cSJim Jagielski' If sDocRoot="" Then 175*b1cdbd2cSJim Jagielski' msgbox("No document root set. Please set the root folder for your documents.") 176*b1cdbd2cSJim Jagielski' sDocRoot = SetDocumentRoot 177*b1cdbd2cSJim Jagielski' End If 178*b1cdbd2cSJim Jagielski' msgbox(HasUnoInterfaces(oDoc, "com.sun.star.lang.XServiceInfo")) 179*b1cdbd2cSJim Jagielski' sFName = oDoc.URL 180*b1cdbd2cSJim Jagielski' msgbox(sFName+chr(13)+sDocRoot) 181*b1cdbd2cSJim Jagielski' If not(IsSubDir(sFName,sDocRoot)) Then 182*b1cdbd2cSJim Jagielski' 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!") 183*b1cdbd2cSJim Jagielski' End If 184*b1cdbd2cSJim JagielskiEnd Sub 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim JagielskiSub DisplayVersion 187*b1cdbd2cSJim Jagielski msgbox "OpenOffice.org Help Authoring Framework"+chr(13)+"Version "+Version,256 188*b1cdbd2cSJim JagielskiEnd Sub 189*b1cdbd2cSJim Jagielski</script:module> 190