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