home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2003 September / VPR0309.ISO / OPENOFFICE / install / f_0114 / Correspondence.xba < prev    next >
Extensible Markup Language  |  2002-11-01  |  9KB  |  249 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
  3. <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Correspondence" script:language="StarBasic">Option Explicit
  4.  
  5. Public msgNoTextmark$, msgError$
  6. Public sAddressbook$
  7. Public Table
  8. Public sCompany$, sFirstName$, sLastName$, sStreet$, sPostalCode$, sCity$, sState$, sInitials$, sPosition$
  9. Public DialogExited
  10. Public oDocument, oText, oBookMarks, oBookMark, oBookMarkCursor, oBookText as Object
  11.  
  12. Sub Main
  13.     BasicLibraries.LoadLibrary("Tools")
  14.     TemplateDialog = LoadDialog("Template", "TemplateDialog")
  15.     DialogModel = TemplateDialog.Model
  16.     DialogModel.Step = 2
  17.     DialogModel.Optmerge.State = True
  18.     LoadLanguageCorrespondence()
  19.     TemplateDialog.Execute
  20. End Sub
  21.  
  22.  
  23. Function LoadLanguageCorrespondence() as Boolean
  24.     If InitResources("'Template'", "tpl") Then
  25.         msgNoTextmark$ = GetResText(1303) & Chr(13) & Chr(10) & GetResText(1301)
  26.         msgError$ = GetResText(1302)
  27.         DialogModel.Title = GetResText(1303+3)
  28.         DialogModel.CmdCancel.Label = GetResText(1102)
  29.         DialogModel.CmdCorrGoOn.Label = GetResText(1103)
  30.         DialogModel.OptSingle.Label = GetResText(1303 + 1)
  31.         DialogModel.Optmerge.Label = GetResText(1303 + 2)
  32.         DialogModel.FrmLetter.Label = GetResText(1303)
  33.         LoadLanguageCorrespondence() = True
  34.     Else
  35.         msgbox("Warning: Resource could not be loaded!")
  36.     End If
  37. End Function
  38.  
  39.  
  40. Function GetFieldName(oFieldKnot as Object, GeneralFieldName as String)
  41.     If oFieldKnot.HasByName(GeneralFieldName) Then
  42.     GetFieldName = oFieldKnot.GetByName(GeneralFieldName).AssignedFieldName
  43.     Else
  44.         GetFieldName = ""
  45.     End If
  46. End Function
  47.  
  48.  
  49. Sub OK
  50. Dim ParaBreak
  51. Dim sDocLang as String
  52. Dim bDBFields as Boolean
  53. Dim oSearchDesc as Object
  54. Dim oFoundAll as Object
  55. Dim oFound as Object
  56. Dim sFoundContent as String
  57. Dim sFoundString as String
  58. Dim sDBField as String
  59. Dim i as Integer
  60. Dim oDBAccess as Object
  61. Dim oAddressDialog as Object
  62. Dim oAddressPilot as Object
  63. Dim oFields as Object
  64. Dim oDocSettings as Object
  65.  
  66.     TemplateDialog.EndExecute()
  67.     DialogExited = TRUE
  68.     bDBFields = DialogModel.Optmerge.State              'database or placeholder
  69.  
  70.     If bDBFields Then
  71.         oDBAccess = GetRegistryKeyContent("org.openoffice.Office.DataAccess/AddressBook/")
  72.         sAddressbook = oDBAccess.DataSourceName
  73.  
  74.         If sAddressbook = "" Then                       'If there is no field mapping
  75.             If Not odBAccess.AutoPilotCompleted Then                 'If the Mapping Pilot never ran
  76.                 oAddressPilot = createUnoService("com.sun.star.ui.dialogs.AddressBookSourcePilot")
  77.                 oAddressPilot.execute
  78.             Else
  79.                 oAddressDialog = CreateUnoService("com.sun.star.ui.AddressBookSourceDialog")
  80.                 oAddressDialog.execute
  81.             End If
  82.             oDBAccess = GetRegistryKeyContent("org.openoffice.Office.DataAccess/AddressBook/")
  83.             sAddressbook = oDBAccess.DataSourceName
  84.             If sAddressbook = "" Then
  85.                 MsgBox(GetResText(1301))
  86.                 Exit Sub
  87.             End If
  88.         End If
  89.         oFields = oDBAccess.GetByName("Fields")
  90.         Table = oDBAccess.GetByName("Command")
  91.     End If
  92.  
  93.     ParaBreak = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
  94.   oDocument = ThisComponent
  95.     If bDBFields Then
  96.         'set the address db as current db at the document
  97.     oDocSettings = oDocument.createInstance("com.sun.star.document.Settings")
  98.         oDocSettings.CurrentDatabaseDataSource = sAddressbook
  99.         oDocSettings.CurrentDatabaseCommand = Table
  100.         oDocSettings.CurrentDatabaseCommandType = 0
  101.     End If
  102.     oBookmarks = oDocument.Bookmarks
  103.     oText = oDocument.Text
  104.  
  105.     oSearchDesc = oDocument.createsearchDescriptor()
  106.     oSearchDesc.SearchRegularExpression = True
  107.     oSearchDesc.SearchWords = True
  108.     oSearchDesc.SearchString  = "<[^>]+>"
  109.     oFoundall = oDocument.FindAll(oSearchDesc)
  110.  
  111.     'Loop over the foundings
  112.   For i = oFoundAll.Count -1 To 0 Step -1
  113.         oFound = oFoundAll.GetByIndex(i)
  114.         sFoundString = oFound.String
  115.         'Extract the string inside the brackets
  116.         sFoundContent = FindPartString(sFoundString,"<",">",1)
  117.         sFoundContent = LTrim(sFoundContent)
  118.         ' Define the Cursor and place it on the founding
  119.         oBookmarkCursor = oFound.Text.CreateTextCursorbyRange(oFound)
  120.         oBookText = oFound.Text
  121.         If bDBFields Then
  122.             sDBField = GetFieldname(oFields, sFoundContent)
  123.             If sDBField <> "" Then
  124.                 InsertDBField(sAddressbook, Table, sDBField)
  125.             Else
  126.                 InsertPlaceholder(sFoundContent)
  127.             End If
  128.         Else
  129.             InsertPlaceholder(sFoundContent)
  130.         End If
  131.     Next i
  132.     If bDBFields Then
  133.         'Open the DB beamer with the right DB
  134.         Dim oDisp as Object
  135.         Dim oTransformer
  136.         Dim aURL as new com.sun.star.util.URL
  137.         aURL.complete = ".component:DB/DataSourceBrowser"
  138.         oTransformer = createUnoService("com.sun.star.util.URLTransformer")
  139.         oTransformer.parseStrict(aURL)
  140.         oDisp = oDocument.getCurrentController.getFrame.queryDispatch(aURL, "_beamer", com.sun.star.frame.FrameSearchFlag.CHILDREN + com.sun.star.frame.FrameSearchFlag.CREATE)
  141.         Dim aArgs(3) as new com.sun.star.beans.PropertyValue
  142.         aArgs(1).Name = "DataSourceName"
  143.         aArgs(1).Value = sAddressbook
  144.         aArgs(2).Name = "CommandType"
  145.         aArgs(2).Value = com.sun.star.sdb.CommandType.TABLE
  146.         aArgs(3).Name = "Command"
  147.         aArgs(3).Value = Table
  148.         oDisp.dispatch(aURL, aArgs())
  149.     End If
  150.  
  151. End Sub
  152.  
  153.  
  154. Sub InsertDBField(sDBName as String, sTableName as String, sColName as String)
  155. Dim oFieldMaster, oField as Object
  156.     If sColname <> "" Then
  157.         oFieldMaster = oDocument.createInstance("com.sun.star.text.FieldMaster.Database")
  158.         oField = oDocument.createInstance("com.sun.star.text.TextField.Database")
  159.         oFieldMaster.DataBaseName = sDBName
  160.         oFieldMaster.DataBaseName = sDBName
  161.         oFieldMaster.DataTableName = sTableName
  162.         oFieldMaster.DataColumnName = sColName
  163.         oField.AttachTextfieldmaster (oFieldMaster)
  164.         oBookText.InsertTextContent(oBookMarkCursor, oField, True)
  165.         oField.Content = "<" & sColName & ">"
  166.     End If
  167. End Sub
  168.  
  169.  
  170. Sub InsertPlaceholder(sColName as String)
  171. Dim oFieldMaster as Object
  172. Dim bCorrectField as Boolean
  173.     If sColname <> "" Then
  174.         bCorrectField = True
  175.         oFieldMaster = oDocument.createInstance("com.sun.star.text.TextField.JumpEdit")
  176.         Select Case sColName
  177.             Case "Company"
  178.                 oFieldMaster.PlaceHolder = getResText(1350+1)
  179.             Case "Department"
  180.                 oFieldMaster.PlaceHolder = getResText(1350+2)
  181.             Case "FirstName"
  182.                 oFieldMaster.PlaceHolder = getResText(1350+3)
  183.             Case "LastName"
  184.                 oFieldMaster.PlaceHolder = getResText(1350+4)
  185.             Case "Street"
  186.                 oFieldMaster.PlaceHolder = getResText(1350+5)
  187.             Case "Country"
  188.                 oFieldMaster.PlaceHolder = getResText(1350+6)
  189.             Case "Zip"
  190.                 oFieldMaster.PlaceHolder = getResText(1350+7)
  191.             Case "City"
  192.                 oFieldMaster.PlaceHolder = getResText(1350+8)
  193.             Case "Title"
  194.                 oFieldMaster.PlaceHolder = getResText(1350+9)
  195.             Case "Position"
  196.                 oFieldMaster.PlaceHolder = getResText(1350+10)
  197.             Case "AddrForm"
  198.                 oFieldMaster.PlaceHolder = getResText(1350+11)
  199.             Case "Code"
  200.                 oFieldMaster.PlaceHolder = getResText(1350+12)
  201.             Case "AddrFormMail"
  202.                 oFieldMaster.PlaceHolder = getResText(1350+13)
  203.             Case "PhonePriv"
  204.                 oFieldMaster.PlaceHolder = getResText(1350+14)
  205.             Case "PhoneComp"
  206.                 oFieldMaster.PlaceHolder = getResText(1350+15)
  207.             Case "Fax"
  208.                 oFieldMaster.PlaceHolder = getResText(1350+16)
  209.             Case "EMail"
  210.                 oFieldMaster.PlaceHolder = getResText(1350+17)
  211.             Case "URL"
  212.                 oFieldMaster.PlaceHolder = getResText(1350+18)
  213.             Case "Note"
  214.                 oFieldMaster.PlaceHolder = getResText(1350+19)
  215.             Case "Altfield1"
  216.                 oFieldMaster.PlaceHolder = getResText(1350+20)
  217.             Case "Altfield2"
  218.                 oFieldMaster.PlaceHolder = getResText(1350+21)
  219.             Case "Altfield3"
  220.                 oFieldMaster.PlaceHolder = getResText(1350+22)
  221.             Case "Altfield4"
  222.                 oFieldMaster.PlaceHolder = getResText(1350+23)
  223.             Case "Id"
  224.                 oFieldMaster.PlaceHolder = getResText(1350+24)
  225.             Case "State"
  226.                 oFieldMaster.PlaceHolder = getResText(1350+25)
  227.             Case "PhoneOffice"
  228.                 oFieldMaster.PlaceHolder = getResText(1350+26)
  229.             Case "Pager"
  230.                 oFieldMaster.PlaceHolder = getResText(1350+27)
  231.             Case "PhoneCell"
  232.                 oFieldMaster.PlaceHolder = getResText(1350+28)
  233.             Case "PhoneOther"
  234.                 oFieldMaster.PlaceHolder = getResText(1350+29)
  235.             Case "CalendarURL"
  236.                 oFieldMaster.PlaceHolder = getResText(1350+30)
  237.             Case "InviteParticipant"
  238.                 oFieldMaster.PlaceHolder = getResText(1350+31)
  239.             Case Else
  240.                 bCorrectField = False
  241.         End Select
  242.         If bCorrectField Then
  243.             oFieldMaster.Hint = getResText(1350)
  244.             oBookText.InsertTextContent(oBookMarkCursor, oFieldMaster, True)
  245.         End If
  246.     End If
  247. End Sub
  248. </script:module>
  249.