1*1ecadb57SMathias Bauer<?xml version="1.0" encoding="UTF-8"?> 2*1ecadb57SMathias Bauer<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*1ecadb57SMathias Bauer<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Meta" script:language="StarBasic">REM ***** BASIC ***** 4*1ecadb57SMathias Bauer 5*1ecadb57SMathias BauerDim oDialog AS Object 6*1ecadb57SMathias BauerDim document AS Object 7*1ecadb57SMathias Bauer 8*1ecadb57SMathias Bauer' Fetches the meta values from the document and executes the dialog 9*1ecadb57SMathias BauerSub Main 10*1ecadb57SMathias Bauer 11*1ecadb57SMathias Bauer If not IsHelpFile Then 12*1ecadb57SMathias Bauer msgbox(strErr_NoHelpFile) 13*1ecadb57SMathias Bauer Exit Sub 14*1ecadb57SMathias Bauer End If 15*1ecadb57SMathias Bauer 16*1ecadb57SMathias Bauer document = StarDesktop.CurrentComponent 17*1ecadb57SMathias Bauer 18*1ecadb57SMathias Bauer BasicLibraries.LoadLibrary("HelpAuthoring") 19*1ecadb57SMathias Bauer oDialog = LoadDialog("HelpAuthoring", "dlgMeta") 20*1ecadb57SMathias Bauer oDialogModel = oDialog.Model 21*1ecadb57SMathias Bauer 22*1ecadb57SMathias Bauer 'oTxtFName = oDialog.GetControl("txtFileName") 23*1ecadb57SMathias Bauer 'oTxtFName.Text = document.DocumentInfo.PropertyValues(29).Value 24*1ecadb57SMathias Bauer 'oTxtFName.Text = document.DocumentInfo.GetPropertyValue("Description") 25*1ecadb57SMathias Bauer 26*1ecadb57SMathias Bauer' If oTxtFName.Text = "" Then 27*1ecadb57SMathias Bauer' msgbox "The document must be saved first."+chr(13)+"Please save the document and call this dialog again." 28*1ecadb57SMathias Bauer' oDialog.dispose 29*1ecadb57SMathias Bauer' Exit Sub 30*1ecadb57SMathias Bauer' End If 31*1ecadb57SMathias Bauer 32*1ecadb57SMathias Bauer oTxtTitle = oDialog.GetControl("txtTitle") 33*1ecadb57SMathias Bauer oTxtTitle.Text = document.DocumentInfo.Title 34*1ecadb57SMathias Bauer 35*1ecadb57SMathias Bauer oOpIndInc = oDialog.GetControl("opIndexInclude") 36*1ecadb57SMathias Bauer oOpIndExc = oDialog.GetControl("opIndexExclude") 37*1ecadb57SMathias Bauer 38*1ecadb57SMathias Bauer 39*1ecadb57SMathias Bauer 'oCbFileStatus = oDialog.GetControl("cbFileStatus") 40*1ecadb57SMathias Bauer 'arItems = Array("DRAFT","FINAL","PUBLISH","STALLED","DEPRECATED") 41*1ecadb57SMathias Bauer 'oCbFileStatus.AddItems(arItems,ubound(arItems)) 42*1ecadb57SMathias Bauer 'sStatus = document.DocumentInfo.GetPropertyValue("Keywords") 43*1ecadb57SMathias Bauer 'If (InStr("DRAFT FINAL PUBLISH STALLED DEPRECATED",sStatus)=0) Then 44*1ecadb57SMathias Bauer ' oCbFileStatus.SetText("DRAFT") 45*1ecadb57SMathias Bauer 'Else 46*1ecadb57SMathias Bauer ' oCbFileStatus.SetText(sStatus) 47*1ecadb57SMathias Bauer 'End If 48*1ecadb57SMathias Bauer 49*1ecadb57SMathias Bauer 50*1ecadb57SMathias Bauer If document.DocumentInfo.GetUserFieldValue(GetUserFieldNumber("Indexer")) = "exclude" then 51*1ecadb57SMathias Bauer oOpIndExc.State = True 52*1ecadb57SMathias Bauer Else 53*1ecadb57SMathias Bauer oOpIndInc.State = True 54*1ecadb57SMathias Bauer End If 55*1ecadb57SMathias Bauer 56*1ecadb57SMathias Bauer 'oTxtTopicID = oDialog.GetControl("txtTopicID") 57*1ecadb57SMathias Bauer 'oTxtTopicID.Text = document.DocumentInfo.GetUserFieldValue(1) 58*1ecadb57SMathias Bauer 59*1ecadb57SMathias Bauer 'oTxtComment = oDialog.GetControl("txtComment") 60*1ecadb57SMathias Bauer 'oTxtComment.Text = document.DocumentInfo.GetUserFieldValue(GetUserFieldNumber("Comment")) 61*1ecadb57SMathias Bauer 62*1ecadb57SMathias Bauer 'oTxtEdited = oDialog.GetControl("txtLastEdited") 63*1ecadb57SMathias Bauer 'oTxtEdited.Text = document.DocumentInfo.GetUserFieldValue(3) 64*1ecadb57SMathias Bauer 65*1ecadb57SMathias Bauer If oDialog.Execute() = 1 Then ' update the meta data 66*1ecadb57SMathias Bauer document.DocumentInfo.Title = oTxtTitle.Text 67*1ecadb57SMathias Bauer 'document.DocumentInfo.SetUserFieldValue(1,oTxtTopicID.Text) 68*1ecadb57SMathias Bauer 'document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber("Comment"),oTxtComment.Text) 69*1ecadb57SMathias Bauer 'document.DocumentInfo.SetUserFieldValue(3,oTxtEdited.Text) 70*1ecadb57SMathias Bauer 'document.DocumentInfo.SetPropertyValue("Keywords",oCbFileStatus.Text) 71*1ecadb57SMathias Bauer 72*1ecadb57SMathias Bauer 'If (oCbFileStatus.Text = "PUBLISH") Then 73*1ecadb57SMathias Bauer REM... Check for paras without ID: If there are any, this cannot be PUBLISH! 74*1ecadb57SMathias Bauer 75*1ecadb57SMathias Bauer 'End If 76*1ecadb57SMathias Bauer 77*1ecadb57SMathias Bauer If oOpIndExc.State = True Then 78*1ecadb57SMathias Bauer document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber("Indexer"),"exclude") 79*1ecadb57SMathias Bauer Else 80*1ecadb57SMathias Bauer document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber("Indexer"),"include") 81*1ecadb57SMathias Bauer End If 82*1ecadb57SMathias Bauer End If 83*1ecadb57SMathias Bauer oDialog.dispose 84*1ecadb57SMathias Bauerend sub 85*1ecadb57SMathias Bauer 86*1ecadb57SMathias Bauer' Normalizes the values for title and topic id 87*1ecadb57SMathias Bauer' (if the fields are empty or contain invalid values) 88*1ecadb57SMathias BauerSub NormalizeMeta (Event As Object) 89*1ecadb57SMathias Bauer Select Case Event.Source.Model.Name 90*1ecadb57SMathias Bauer Case "txtTitle": 91*1ecadb57SMathias Bauer If Event.Source.Text = "" Then 92*1ecadb57SMathias Bauer msgbox "Topic title must not be empty!"+chr(13)+"Resetting to default value." 93*1ecadb57SMathias Bauer End If 94*1ecadb57SMathias Bauer SetTopicTitle(Event.Source.Text) 95*1ecadb57SMathias Bauer Case "txtTopicID": 96*1ecadb57SMathias Bauer If Event.Source.Text = "" Then 97*1ecadb57SMathias Bauer msgbox "Topic ID must not be empty!"+chr(13)+"Resetting to default value." 98*1ecadb57SMathias Bauer End If 99*1ecadb57SMathias Bauer SetTopicID(Event.Source.Text) 100*1ecadb57SMathias Bauer End Select 101*1ecadb57SMathias BauerEnd Sub 102*1ecadb57SMathias Bauer 103*1ecadb57SMathias Bauer' Sets the value in the Topic ID dialog field 104*1ecadb57SMathias BauerSub SetTopicID(txt As String) 105*1ecadb57SMathias Bauer oTxtTopicID = oDialog.GetControl("txtTopicID") 106*1ecadb57SMathias Bauer If txt = "" Then 107*1ecadb57SMathias Bauer oTxtTopicID.Text = AlphaNum(document.DocumentInfo.PropertyValues(29).Value) 108*1ecadb57SMathias Bauer Else 109*1ecadb57SMathias Bauer oTxtTopicID.Text = AlphaNum(txt) 110*1ecadb57SMathias Bauer End If 111*1ecadb57SMathias BauerEnd Sub 112*1ecadb57SMathias Bauer 113*1ecadb57SMathias BauerSub Test 114*1ecadb57SMathias Bauer On Error Resume Next 115*1ecadb57SMathias Bauer document = StarDesktop.CurrentComponent 116*1ecadb57SMathias Bauer' showprop document 117*1ecadb57SMathias Bauer msgbox document.URL 118*1ecadb57SMathias Bauer 119*1ecadb57SMathias BauerEnd Sub 120*1ecadb57SMathias Bauer 121*1ecadb57SMathias Bauer' Sets the value in the Topic title dialog field 122*1ecadb57SMathias BauerSub SetTopicTitle(txt As String) 123*1ecadb57SMathias Bauer dim strg As String 124*1ecadb57SMathias Bauer oTxtTitle = oDialog.GetControl("txtTitle") 125*1ecadb57SMathias Bauer 126*1ecadb57SMathias Bauer If txt ="" Then 127*1ecadb57SMathias Bauer Enum = document.Text.createEnumeration 128*1ecadb57SMathias Bauer 129*1ecadb57SMathias Bauer Do While Enum.hasMoreElements 130*1ecadb57SMathias Bauer TextElement = Enum.nextElement 131*1ecadb57SMathias Bauer If TextElement.supportsService("com.sun.star.text.Paragraph") Then 132*1ecadb57SMathias Bauer If Left(TextElement.ParaStyleName,8)="hlp_head" Then 133*1ecadb57SMathias Bauer Enum2 = TextElement.createEnumeration 134*1ecadb57SMathias Bauer While Enum2.hasMoreElements 135*1ecadb57SMathias Bauer TextPortion = Enum2.nextElement 136*1ecadb57SMathias Bauer If Not(TextPortion.TextPortionType="TextField") Then 137*1ecadb57SMathias Bauer strg = strg + TextPortion.String 138*1ecadb57SMathias Bauer End If 139*1ecadb57SMathias Bauer Wend 140*1ecadb57SMathias Bauer oTxtTitle.Text = strg 141*1ecadb57SMathias Bauer Exit Do 142*1ecadb57SMathias Bauer End If 143*1ecadb57SMathias Bauer End If 144*1ecadb57SMathias Bauer Loop 145*1ecadb57SMathias Bauer Else 146*1ecadb57SMathias Bauer oTxtTitle.Text = txt 147*1ecadb57SMathias Bauer End If 148*1ecadb57SMathias BauerEnd Sub 149*1ecadb57SMathias Bauer 150*1ecadb57SMathias Bauer' Sets the value in the Topic title field when 151*1ecadb57SMathias Bauer' "Fetch" button is pressed 152*1ecadb57SMathias BauerSub FetchTopicTitle 153*1ecadb57SMathias Bauer SetTopicTitle("") 154*1ecadb57SMathias Bauer 155*1ecadb57SMathias BauerEnd Sub 156*1ecadb57SMathias Bauer 157*1ecadb57SMathias Bauer' Sets the value in the Topic ID dialog field when 158*1ecadb57SMathias Bauer' "Suggest" button is pressed 159*1ecadb57SMathias BauerSub SuggestTopicID 160*1ecadb57SMathias Bauer SetTopicID("") 161*1ecadb57SMathias BauerEnd Sub 162*1ecadb57SMathias Bauer 163*1ecadb57SMathias BauerSub ChangeStatus 164*1ecadb57SMathias Bauer oCbFileStatus = oDialog.GetControl("cbFileStatus") 165*1ecadb57SMathias Bauer sStatus = document.DocumentInfo.GetPropertyValue("Keywords") 166*1ecadb57SMathias Bauer If (oCbFileStatus.Text = "PUBLISH") Then 167*1ecadb57SMathias Bauer nNoID = 0 ' DEBUG 168*1ecadb57SMathias Bauer If nNoID <> 0 Then 169*1ecadb57SMathias Bauer msgbox "There are "+nNoID+" new paragraphs in the file."+chr(13)+"File status PUBLISH invalid."+chr(13)+"Setting back to "+sStatus, 48, "D'oh!" 170*1ecadb57SMathias Bauer End If 171*1ecadb57SMathias Bauer End If 172*1ecadb57SMathias BauerEnd Sub 173*1ecadb57SMathias Bauer</script:module>