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&apos; 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(&quot;HelpAuthoring&quot;)
19*1ecadb57SMathias Bauer	oDialog = LoadDialog(&quot;HelpAuthoring&quot;, &quot;dlgMeta&quot;)
20*1ecadb57SMathias Bauer	oDialogModel = oDialog.Model
21*1ecadb57SMathias Bauer
22*1ecadb57SMathias Bauer	&apos;oTxtFName = oDialog.GetControl(&quot;txtFileName&quot;)
23*1ecadb57SMathias Bauer	&apos;oTxtFName.Text = document.DocumentInfo.PropertyValues(29).Value
24*1ecadb57SMathias Bauer	&apos;oTxtFName.Text = document.DocumentInfo.GetPropertyValue(&quot;Description&quot;)
25*1ecadb57SMathias Bauer
26*1ecadb57SMathias Bauer&apos;	If oTxtFName.Text = &quot;&quot; Then
27*1ecadb57SMathias Bauer&apos;		msgbox &quot;The document must be saved first.&quot;+chr(13)+&quot;Please save the document and call this dialog again.&quot;
28*1ecadb57SMathias Bauer&apos;		oDialog.dispose
29*1ecadb57SMathias Bauer&apos;		Exit Sub
30*1ecadb57SMathias Bauer&apos;	End If
31*1ecadb57SMathias Bauer
32*1ecadb57SMathias Bauer	oTxtTitle = oDialog.GetControl(&quot;txtTitle&quot;)
33*1ecadb57SMathias Bauer	oTxtTitle.Text = document.DocumentInfo.Title
34*1ecadb57SMathias Bauer
35*1ecadb57SMathias Bauer	oOpIndInc = oDialog.GetControl(&quot;opIndexInclude&quot;)
36*1ecadb57SMathias Bauer	oOpIndExc = oDialog.GetControl(&quot;opIndexExclude&quot;)
37*1ecadb57SMathias Bauer
38*1ecadb57SMathias Bauer
39*1ecadb57SMathias Bauer	&apos;oCbFileStatus = oDialog.GetControl(&quot;cbFileStatus&quot;)
40*1ecadb57SMathias Bauer	&apos;arItems = Array(&quot;DRAFT&quot;,&quot;FINAL&quot;,&quot;PUBLISH&quot;,&quot;STALLED&quot;,&quot;DEPRECATED&quot;)
41*1ecadb57SMathias Bauer	&apos;oCbFileStatus.AddItems(arItems,ubound(arItems))
42*1ecadb57SMathias Bauer	&apos;sStatus = document.DocumentInfo.GetPropertyValue(&quot;Keywords&quot;)
43*1ecadb57SMathias Bauer	&apos;If (InStr(&quot;DRAFT FINAL PUBLISH STALLED DEPRECATED&quot;,sStatus)=0) Then
44*1ecadb57SMathias Bauer	&apos;	oCbFileStatus.SetText(&quot;DRAFT&quot;)
45*1ecadb57SMathias Bauer	&apos;Else
46*1ecadb57SMathias Bauer	&apos;	oCbFileStatus.SetText(sStatus)
47*1ecadb57SMathias Bauer	&apos;End If
48*1ecadb57SMathias Bauer
49*1ecadb57SMathias Bauer
50*1ecadb57SMathias Bauer	If document.DocumentInfo.GetUserFieldValue(GetUserFieldNumber(&quot;Indexer&quot;)) = &quot;exclude&quot; 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	&apos;oTxtTopicID = oDialog.GetControl(&quot;txtTopicID&quot;)
57*1ecadb57SMathias Bauer	&apos;oTxtTopicID.Text = document.DocumentInfo.GetUserFieldValue(1)
58*1ecadb57SMathias Bauer
59*1ecadb57SMathias Bauer	&apos;oTxtComment = oDialog.GetControl(&quot;txtComment&quot;)
60*1ecadb57SMathias Bauer	&apos;oTxtComment.Text = document.DocumentInfo.GetUserFieldValue(GetUserFieldNumber(&quot;Comment&quot;))
61*1ecadb57SMathias Bauer
62*1ecadb57SMathias Bauer	&apos;oTxtEdited = oDialog.GetControl(&quot;txtLastEdited&quot;)
63*1ecadb57SMathias Bauer	&apos;oTxtEdited.Text = document.DocumentInfo.GetUserFieldValue(3)
64*1ecadb57SMathias Bauer
65*1ecadb57SMathias Bauer	If oDialog.Execute() = 1 Then &apos; update the meta data
66*1ecadb57SMathias Bauer		document.DocumentInfo.Title = oTxtTitle.Text
67*1ecadb57SMathias Bauer		&apos;document.DocumentInfo.SetUserFieldValue(1,oTxtTopicID.Text)
68*1ecadb57SMathias Bauer		&apos;document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber(&quot;Comment&quot;),oTxtComment.Text)
69*1ecadb57SMathias Bauer		&apos;document.DocumentInfo.SetUserFieldValue(3,oTxtEdited.Text)
70*1ecadb57SMathias Bauer		&apos;document.DocumentInfo.SetPropertyValue(&quot;Keywords&quot;,oCbFileStatus.Text)
71*1ecadb57SMathias Bauer
72*1ecadb57SMathias Bauer		&apos;If (oCbFileStatus.Text = &quot;PUBLISH&quot;) Then
73*1ecadb57SMathias Bauer			REM... Check for paras without ID: If there are any, this cannot be PUBLISH!
74*1ecadb57SMathias Bauer
75*1ecadb57SMathias Bauer		&apos;End If
76*1ecadb57SMathias Bauer
77*1ecadb57SMathias Bauer		If oOpIndExc.State = True Then
78*1ecadb57SMathias Bauer			document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber(&quot;Indexer&quot;),&quot;exclude&quot;)
79*1ecadb57SMathias Bauer		Else
80*1ecadb57SMathias Bauer			document.DocumentInfo.SetUserFieldValue(GetUserFieldNumber(&quot;Indexer&quot;),&quot;include&quot;)
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&apos; Normalizes the values for title and topic id
87*1ecadb57SMathias Bauer&apos; (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 &quot;txtTitle&quot;:
91*1ecadb57SMathias Bauer			If Event.Source.Text = &quot;&quot; Then
92*1ecadb57SMathias Bauer				msgbox &quot;Topic title must not be empty!&quot;+chr(13)+&quot;Resetting to default value.&quot;
93*1ecadb57SMathias Bauer			End If
94*1ecadb57SMathias Bauer			SetTopicTitle(Event.Source.Text)
95*1ecadb57SMathias Bauer		Case &quot;txtTopicID&quot;:
96*1ecadb57SMathias Bauer			If Event.Source.Text = &quot;&quot; Then
97*1ecadb57SMathias Bauer				msgbox &quot;Topic ID must not be empty!&quot;+chr(13)+&quot;Resetting to default value.&quot;
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&apos; Sets the value in the Topic ID dialog field
104*1ecadb57SMathias BauerSub SetTopicID(txt As String)
105*1ecadb57SMathias Bauer	oTxtTopicID = oDialog.GetControl(&quot;txtTopicID&quot;)
106*1ecadb57SMathias Bauer	If txt = &quot;&quot; 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&apos;	showprop document
117*1ecadb57SMathias Bauer	msgbox document.URL
118*1ecadb57SMathias Bauer
119*1ecadb57SMathias BauerEnd Sub
120*1ecadb57SMathias Bauer
121*1ecadb57SMathias Bauer&apos; 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(&quot;txtTitle&quot;)
125*1ecadb57SMathias Bauer
126*1ecadb57SMathias Bauer	If txt =&quot;&quot; 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(&quot;com.sun.star.text.Paragraph&quot;) Then
132*1ecadb57SMathias Bauer				If Left(TextElement.ParaStyleName,8)=&quot;hlp_head&quot; 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=&quot;TextField&quot;) 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&apos; Sets the value in the Topic title field when
151*1ecadb57SMathias Bauer&apos; &quot;Fetch&quot; button is pressed
152*1ecadb57SMathias BauerSub FetchTopicTitle
153*1ecadb57SMathias Bauer	SetTopicTitle(&quot;&quot;)
154*1ecadb57SMathias Bauer
155*1ecadb57SMathias BauerEnd Sub
156*1ecadb57SMathias Bauer
157*1ecadb57SMathias Bauer&apos; Sets the value in the Topic ID dialog field when
158*1ecadb57SMathias Bauer&apos; &quot;Suggest&quot; button is pressed
159*1ecadb57SMathias BauerSub SuggestTopicID
160*1ecadb57SMathias Bauer	SetTopicID(&quot;&quot;)
161*1ecadb57SMathias BauerEnd Sub
162*1ecadb57SMathias Bauer
163*1ecadb57SMathias BauerSub ChangeStatus
164*1ecadb57SMathias Bauer	oCbFileStatus = oDialog.GetControl(&quot;cbFileStatus&quot;)
165*1ecadb57SMathias Bauer	sStatus = document.DocumentInfo.GetPropertyValue(&quot;Keywords&quot;)
166*1ecadb57SMathias Bauer	If (oCbFileStatus.Text = &quot;PUBLISH&quot;) Then
167*1ecadb57SMathias Bauer		nNoID = 0 &apos; DEBUG
168*1ecadb57SMathias Bauer		If nNoID &lt;&gt; 0 Then
169*1ecadb57SMathias Bauer			msgbox &quot;There are &quot;+nNoID+&quot; new paragraphs in the file.&quot;+chr(13)+&quot;File status PUBLISH invalid.&quot;+chr(13)+&quot;Setting back to &quot;+sStatus, 48, &quot;D&apos;oh!&quot;
170*1ecadb57SMathias Bauer		End If
171*1ecadb57SMathias Bauer	End If
172*1ecadb57SMathias BauerEnd Sub
173*1ecadb57SMathias Bauer</script:module>