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