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<!--*********************************************************** 4*b1cdbd2cSJim Jagielski * 5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 6*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 7*b1cdbd2cSJim Jagielski * distributed with this work for additional information 8*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 11*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 14*b1cdbd2cSJim Jagielski * 15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 20*b1cdbd2cSJim Jagielski * under the License. 21*b1cdbd2cSJim Jagielski * 22*b1cdbd2cSJim Jagielski ***********************************************************--> 23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Meta" script:language="StarBasic">REM ***** BASIC ***** 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim JagielskiDim oDialog AS Object 26*b1cdbd2cSJim JagielskiDim document AS Object 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski' Fetches the meta values from the document and executes the dialog 29*b1cdbd2cSJim JagielskiSub Main 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski If not IsHelpFile Then 32*b1cdbd2cSJim Jagielski msgbox(strErr_NoHelpFile) 33*b1cdbd2cSJim Jagielski Exit Sub 34*b1cdbd2cSJim Jagielski End If 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski document = StarDesktop.CurrentComponent 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski BasicLibraries.LoadLibrary("HelpAuthoring") 39*b1cdbd2cSJim Jagielski oDialog = LoadDialog("HelpAuthoring", "dlgMeta") 40*b1cdbd2cSJim Jagielski oDialogModel = oDialog.Model 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski 'oTxtFName = oDialog.GetControl("txtFileName") 43*b1cdbd2cSJim Jagielski 'oTxtFName.Text = document.DocumentInfo.PropertyValues(29).Value 44*b1cdbd2cSJim Jagielski 'oTxtFName.Text = document.DocumentInfo.GetPropertyValue("Description") 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski' If oTxtFName.Text = "" Then 47*b1cdbd2cSJim Jagielski' msgbox "The document must be saved first."+chr(13)+"Please save the document and call this dialog again." 48*b1cdbd2cSJim Jagielski' oDialog.dispose 49*b1cdbd2cSJim Jagielski' Exit Sub 50*b1cdbd2cSJim Jagielski' End If 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski oTxtTitle = oDialog.GetControl("txtTitle") 53*b1cdbd2cSJim Jagielski oTxtTitle.Text = document.DocumentInfo.Title 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski oOpIndInc = oDialog.GetControl("opIndexInclude") 56*b1cdbd2cSJim Jagielski oOpIndExc = oDialog.GetControl("opIndexExclude") 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski 'oCbFileStatus = oDialog.GetControl("cbFileStatus") 60*b1cdbd2cSJim Jagielski 'arItems = Array("DRAFT","FINAL","PUBLISH","STALLED","DEPRECATED") 61*b1cdbd2cSJim Jagielski 'oCbFileStatus.AddItems(arItems,ubound(arItems)) 62*b1cdbd2cSJim Jagielski 'sStatus = document.DocumentInfo.GetPropertyValue("Keywords") 63*b1cdbd2cSJim Jagielski 'If (InStr("DRAFT FINAL PUBLISH STALLED DEPRECATED",sStatus)=0) Then 64*b1cdbd2cSJim Jagielski ' oCbFileStatus.SetText("DRAFT") 65*b1cdbd2cSJim Jagielski 'Else 66*b1cdbd2cSJim Jagielski ' oCbFileStatus.SetText(sStatus) 67*b1cdbd2cSJim Jagielski 'End If 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski If document.DocumentInfo.GetUserFieldValue(GetUserFieldNumber("Indexer")) = "exclude" then 71*b1cdbd2cSJim Jagielski oOpIndExc.State = True 72*b1cdbd2cSJim Jagielski Else 73*b1cdbd2cSJim Jagielski oOpIndInc.State = True 74*b1cdbd2cSJim Jagielski End If 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski 'oTxtTopicID = oDialog.GetControl("txtTopicID") 77*b1cdbd2cSJim Jagielski 'oTxtTopicID.Text = document.DocumentInfo.GetUserFieldValue(1) 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski 'oTxtComment = oDialog.GetControl("txtComment") 80*b1cdbd2cSJim Jagielski 'oTxtComment.Text = document.DocumentInfo.GetUserFieldValue(GetUserFieldNumber("Comment")) 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski 'oTxtEdited = oDialog.GetControl("txtLastEdited") 83*b1cdbd2cSJim Jagielski 'oTxtEdited.Text = document.DocumentInfo.GetUserFieldValue(3) 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski If oDialog.Execute() = 1 Then ' update the meta data 86*b1cdbd2cSJim Jagielski document.DocumentInfo.Title = oTxtTitle.Text 87*b1cdbd2cSJim Jagielski 'document.DocumentInfo.SetUserFieldValue(1,oTxtTopicID.Text) 88*b1cdbd2cSJim Jagielski 'document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber("Comment"),oTxtComment.Text) 89*b1cdbd2cSJim Jagielski 'document.DocumentInfo.SetUserFieldValue(3,oTxtEdited.Text) 90*b1cdbd2cSJim Jagielski 'document.DocumentInfo.SetPropertyValue("Keywords",oCbFileStatus.Text) 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski 'If (oCbFileStatus.Text = "PUBLISH") Then 93*b1cdbd2cSJim Jagielski REM... Check for paras without ID: If there are any, this cannot be PUBLISH! 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski 'End If 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski If oOpIndExc.State = True Then 98*b1cdbd2cSJim Jagielski document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber("Indexer"),"exclude") 99*b1cdbd2cSJim Jagielski Else 100*b1cdbd2cSJim Jagielski document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber("Indexer"),"include") 101*b1cdbd2cSJim Jagielski End If 102*b1cdbd2cSJim Jagielski End If 103*b1cdbd2cSJim Jagielski oDialog.dispose 104*b1cdbd2cSJim Jagielskiend sub 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski' Normalizes the values for title and topic id 107*b1cdbd2cSJim Jagielski' (if the fields are empty or contain invalid values) 108*b1cdbd2cSJim JagielskiSub NormalizeMeta (Event As Object) 109*b1cdbd2cSJim Jagielski Select Case Event.Source.Model.Name 110*b1cdbd2cSJim Jagielski Case "txtTitle": 111*b1cdbd2cSJim Jagielski If Event.Source.Text = "" Then 112*b1cdbd2cSJim Jagielski msgbox "Topic title must not be empty!"+chr(13)+"Resetting to default value." 113*b1cdbd2cSJim Jagielski End If 114*b1cdbd2cSJim Jagielski SetTopicTitle(Event.Source.Text) 115*b1cdbd2cSJim Jagielski Case "txtTopicID": 116*b1cdbd2cSJim Jagielski If Event.Source.Text = "" Then 117*b1cdbd2cSJim Jagielski msgbox "Topic ID must not be empty!"+chr(13)+"Resetting to default value." 118*b1cdbd2cSJim Jagielski End If 119*b1cdbd2cSJim Jagielski SetTopicID(Event.Source.Text) 120*b1cdbd2cSJim Jagielski End Select 121*b1cdbd2cSJim JagielskiEnd Sub 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski' Sets the value in the Topic ID dialog field 124*b1cdbd2cSJim JagielskiSub SetTopicID(txt As String) 125*b1cdbd2cSJim Jagielski oTxtTopicID = oDialog.GetControl("txtTopicID") 126*b1cdbd2cSJim Jagielski If txt = "" Then 127*b1cdbd2cSJim Jagielski oTxtTopicID.Text = AlphaNum(document.DocumentInfo.PropertyValues(29).Value) 128*b1cdbd2cSJim Jagielski Else 129*b1cdbd2cSJim Jagielski oTxtTopicID.Text = AlphaNum(txt) 130*b1cdbd2cSJim Jagielski End If 131*b1cdbd2cSJim JagielskiEnd Sub 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim JagielskiSub Test 134*b1cdbd2cSJim Jagielski On Error Resume Next 135*b1cdbd2cSJim Jagielski document = StarDesktop.CurrentComponent 136*b1cdbd2cSJim Jagielski' showprop document 137*b1cdbd2cSJim Jagielski msgbox document.URL 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim JagielskiEnd Sub 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski' Sets the value in the Topic title dialog field 142*b1cdbd2cSJim JagielskiSub SetTopicTitle(txt As String) 143*b1cdbd2cSJim Jagielski dim strg As String 144*b1cdbd2cSJim Jagielski oTxtTitle = oDialog.GetControl("txtTitle") 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski If txt ="" Then 147*b1cdbd2cSJim Jagielski Enum = document.Text.createEnumeration 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski Do While Enum.hasMoreElements 150*b1cdbd2cSJim Jagielski TextElement = Enum.nextElement 151*b1cdbd2cSJim Jagielski If TextElement.supportsService("com.sun.star.text.Paragraph") Then 152*b1cdbd2cSJim Jagielski If Left(TextElement.ParaStyleName,8)="hlp_head" Then 153*b1cdbd2cSJim Jagielski Enum2 = TextElement.createEnumeration 154*b1cdbd2cSJim Jagielski While Enum2.hasMoreElements 155*b1cdbd2cSJim Jagielski TextPortion = Enum2.nextElement 156*b1cdbd2cSJim Jagielski If Not(TextPortion.TextPortionType="TextField") Then 157*b1cdbd2cSJim Jagielski strg = strg + TextPortion.String 158*b1cdbd2cSJim Jagielski End If 159*b1cdbd2cSJim Jagielski Wend 160*b1cdbd2cSJim Jagielski oTxtTitle.Text = strg 161*b1cdbd2cSJim Jagielski Exit Do 162*b1cdbd2cSJim Jagielski End If 163*b1cdbd2cSJim Jagielski End If 164*b1cdbd2cSJim Jagielski Loop 165*b1cdbd2cSJim Jagielski Else 166*b1cdbd2cSJim Jagielski oTxtTitle.Text = txt 167*b1cdbd2cSJim Jagielski End If 168*b1cdbd2cSJim JagielskiEnd Sub 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski' Sets the value in the Topic title field when 171*b1cdbd2cSJim Jagielski' "Fetch" button is pressed 172*b1cdbd2cSJim JagielskiSub FetchTopicTitle 173*b1cdbd2cSJim Jagielski SetTopicTitle("") 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim JagielskiEnd Sub 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski' Sets the value in the Topic ID dialog field when 178*b1cdbd2cSJim Jagielski' "Suggest" button is pressed 179*b1cdbd2cSJim JagielskiSub SuggestTopicID 180*b1cdbd2cSJim Jagielski SetTopicID("") 181*b1cdbd2cSJim JagielskiEnd Sub 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim JagielskiSub ChangeStatus 184*b1cdbd2cSJim Jagielski oCbFileStatus = oDialog.GetControl("cbFileStatus") 185*b1cdbd2cSJim Jagielski sStatus = document.DocumentInfo.GetPropertyValue("Keywords") 186*b1cdbd2cSJim Jagielski If (oCbFileStatus.Text = "PUBLISH") Then 187*b1cdbd2cSJim Jagielski nNoID = 0 ' DEBUG 188*b1cdbd2cSJim Jagielski If nNoID <> 0 Then 189*b1cdbd2cSJim Jagielski msgbox "There are "+nNoID+" new paragraphs in the file."+chr(13)+"File status PUBLISH invalid."+chr(13)+"Setting back to "+sStatus, 48, "D'oh!" 190*b1cdbd2cSJim Jagielski End If 191*b1cdbd2cSJim Jagielski End If 192*b1cdbd2cSJim JagielskiEnd Sub 193*b1cdbd2cSJim Jagielski</script:module> 194