diff options
author | Tom Verbeek <tv@openoffice.org> | 2001-06-08 13:22:17 +0000 |
---|---|---|
committer | Tom Verbeek <tv@openoffice.org> | 2001-06-08 13:22:17 +0000 |
commit | 3d1f05bb971b31e39c5b3f026f266e2c99eee553 (patch) | |
tree | 41f8c2452967b5babdcda189b85f68085e5b8f7d /wizards/source/template/Correspondence.xba | |
parent | 16b122fd33e03ac91af1a7d2a9453e04cdb79111 (diff) |
#87217# new way of setting db fields in correspondence templates
Diffstat (limited to 'wizards/source/template/Correspondence.xba')
-rw-r--r-- | wizards/source/template/Correspondence.xba | 303 |
1 files changed, 153 insertions, 150 deletions
diff --git a/wizards/source/template/Correspondence.xba b/wizards/source/template/Correspondence.xba index ce3bf788ab14..927c168da6ab 100644 --- a/wizards/source/template/Correspondence.xba +++ b/wizards/source/template/Correspondence.xba @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> - +<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Correspondence" script:language="StarBasic">Option Explicit Public msgNoTextmark$, msgError$ @@ -10,64 +10,36 @@ Public DialogExited Public oDocument, oText, oBookMarks, oBookMark, oBookMarkCursor, oBookText as Object Sub Main - BasicLibraries.LoadLibrary("Tools") + BasicLibraries.LoadLibrary("Tools") TemplateDialog = LoadDialog("Template", "TemplateDialog") DialogModel = TemplateDialog.Model DialogModel.Step = 2 DialogModel.Optmerge.State = True - If LoadLanguageCorrespondence() Then - TemplateDialog.Execute - End If + LoadLanguageCorrespondence() + TemplateDialog.Execute End Sub Function LoadLanguageCorrespondence() as Boolean -Dim oDBAccess as Object -Dim oAddressDialog as Object -Dim oFields as Object - If InitResources("'Template'", "tpl") Then - oDBAccess = GetRegistryKeyContent("org.openoffice.Office.DataAccess/AddressBook/") - sAddressbook = oDBAccess.DataSourceName - If sAddressbook = "" Then - oAddressDialog = CreateUnoService("com.sun.star.ui.AddressBookSourceDialog") - oAddressDialog.Execute - oDBAccess = GetRegistryKeyContent("org.openoffice.Office.DataAccess/AddressBook/") - sAddressbook = oDBAccess.DataSourceName - If sAddressbook = "" Then - LoadLanguageCorrespondence() = False - Exit Function - End If - End If - oFields = oDBAccess.GetByName("Fields") - Table = oDBAccess.GetByName("Command") - sCompany = GetFieldname(oFields, "Company") - sFirstName = GetFieldname(oFields, "FirstName") - sLastName = GetFieldname(oFields, "LastName") - sStreet = GetFieldname(oFields, "Street") - sPostalCode = GetFieldname(oFields, "Zip") - sCity = GetFieldname(oFields, "City") - sState = GetFieldname(oFields, "State") - sInitials = GetFieldname(oFields, "Code") - sPosition = GetFieldname(oFields, "Position") msgNoTextmark$ = GetResText(1303) & Chr(13) & Chr(10) & GetResText(1301) msgError$ = GetResText(1302) - DialogModel.Title = GetResText(1303) + DialogModel.Title = GetResText(1303+3) DialogModel.CmdCancel.Label = GetResText(1102) DialogModel.CmdCorrGoOn.Label = GetResText(1103) DialogModel.OptSingle.Label = GetResText(1303 + 1) DialogModel.Optmerge.Label = GetResText(1303 + 2) + DialogModel.FrmLetter.Label = GetResText(1303) LoadLanguageCorrespondence() = True Else -' Todo: Meldung, was Passiert wenn Datenbank nicht angelegt werden konnte - LoadLanguageCorrespondence() = False + msgbox("Warning: Resource could not be loaded!") End If End Function -Function GetFieldName(oFieldKnot as Object, GeneralFieldName as String) - If oFieldKnot.HasbyName(GeneralFieldName) Then - GetFieldName = oFieldKnot.GetbyName(GeneralFieldName).FieldName +Function GetFieldName(oFieldKnot as Object, GeneralFieldName as String) + If oFieldKnot.HasByName(GeneralFieldName) Then + GetFieldName = oFieldKnot.GetByName(GeneralFieldName).FieldName Else GetFieldName = "" End If @@ -77,100 +49,79 @@ End Function Sub OK Dim ParaBreak Dim sDocLang as String -Dim bMerge as Boolean - bMerge = DialogModel.Optmerge.State -' Todo: das muss wieder rein! - DialogTemplate.EndExecute() - DialogExited = TRUE - If bMerge Then - ParaBreak = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK - oDocument = StarDesktop.ActiveFrame.Controller.Model - oBookmarks = oDocument.Bookmarks - oText = oDocument.Text - If oBookmarks.HasbyName("Recipient")Then - oBookMark = oDocument.BookMarks.GetbyName("Recipient") - Else - MsgBox msgNoTextmark, 16, msgError - Exit Sub - End If - oBookMarkCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) - OBookText = oBookMarkCursor.Text - sDocLang = oDocument.CharLocale.Language - Select Case sDocLang - Case "nl" - InsertDBField(sAddressbook, Table, sCompany) - oBookMarkCursor.Text.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertBookMarkString("T.a.v. ") - InsertDBField(sAddressbook, Table, sFirstName) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sLastName) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sStreet) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sPostalCode) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sCity) - - Case "en" - InsertDBField(sAddressbook, Table, sCompany) - oBookMarkCursor.Text.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sFirstName) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sLastName) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sStreet) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sCity) - InsertBookMarkString(", ") - InsertDBField(sAddressbook, Table, sState) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sPostalCode) - - Case "sv" - InsertDBField(sAddressbook, Table, sCompany) - oBookMarkCursor.Text.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sFirstName) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sLastName) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sStreet) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sPostalCode) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sCity) +Dim bDBFields as Boolean +Dim oSearchDesc as Object +Dim oFoundAll as Object +Dim oFound as Object +Dim sFoundContent as String +Dim sFoundString as String +Dim sDBField as String +Dim i as Integer +Dim oDBAccess as Object +Dim oAddressDialog as Object +Dim oFields as Object +Dim oDocSettings as Object - Case "ru" - InsertDBField(sAddressbook, Table, sPosition) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sCompany) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sLastName) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sInitials) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sPostalCode) - InsertBookMarkString(", ") - InsertDBField(sAddressbook, Table, sCity) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sStreet) + bDBFields = DialogModel.Optmerge.State 'db oder PLatzhalter + + If bDBFields Then + oDBAccess = GetRegistryKeyContent("org.openoffice.Office.DataAccess/AddressBook/") + sAddressbook = oDBAccess.DataSourceName + If sAddressbook = "" Then + oAddressDialog = CreateUnoService("com.sun.star.ui.AddressBookSourceDialog") + oAddressDialog.Execute + oDBAccess = GetRegistryKeyContent("org.openoffice.Office.DataAccess/AddressBook/") + sAddressbook = oDBAccess.DataSourceName + If sAddressbook = "" Then + MsgBox(GetResText(1301)) + Exit Sub + End If + End If + oFields = oDBAccess.GetByName("Fields") + Table = oDBAccess.GetByName("Command") + End If - Case Else - InsertDBField(sAddressbook, Table, sCompany) - oBookMarkCursor.Text.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sFirstName) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sLastName) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sStreet) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - oBookText.insertControlCharacter(oBookMarkCursor, ParaBreak, False) - InsertDBField(sAddressbook, Table, sPostalCode) - InsertBookMarkString(" ") - InsertDBField(sAddressbook, Table, sCity) - End Select + TemplateDialog.EndExecute() + DialogExited = TRUE + + ParaBreak = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK + oDocument = StarDesktop.ActiveFrame.Controller.Model + If bDBFields Then + 'set the address db as current db at the document + oDocSettings = oDocument.createInstance("com.sun.star.document.DocumentSettings") + oDocSettings.CurrentDatabaseDataSource = sAddressbook + oDocSettings.CurrentDatabaseCommand = Table + oDocSettings.CurrentDatabaseCommandType = 0 End If + oBookmarks = oDocument.Bookmarks + oText = oDocument.Text + + oSearchDesc = oDocument.createsearchDescriptor() + oSearchDesc.SearchRegularExpression = True + oSearchDesc.SearchWords = True + oSearchDesc.SearchString = "<[^>]+>" + oFoundall = oDocument.FindAll(oSearchDesc) + + 'Loop over the foundings + For i = 0 To oFoundAll.Count - 1 + oFound = oFoundAll.GetByIndex(i) + sFoundString = oFound.String + 'Extract the string inside the brackets + sFoundContent = FindPartString(sFoundString,"<",">",1) + sFoundContent = LTrim(sFoundContent) + ' Define the Cursor and place it on the founding + oBookmarkCursor = oFound.Text.CreateTextCursorbyRange(oFound) + oBookText = oFound.Text + If bDBFields Then + sDBField = GetFieldname(oFields, sFoundContent) + If sDBField <> "" Then + InsertDBField(sAddressbook, Table, sDBField) + End If + Else + InsertPlaceholder(sFoundContent) + End If + Next i + End Sub @@ -190,26 +141,78 @@ Dim oFieldMaster, oField as Object End Sub -Sub InsertBookmarkString(sBookmarkString as String) - oBookText.InsertString(oBookMarkCursor, sBookmarkString, True) - oBookMarkCursor.CollapseToEnd() -End Sub - - -Sub LoadLibrary(sLibname as String) -Dim oArg(0) as new com.sun.star.beans.PropertyValue -Dim oUrl as new com.sun.star.util.URL -Dim oTrans as Object -Dim oDisp as Object - - oArg(0).Name = "LibraryName" - oArg(0).Value = sLibname - - oTrans = createUNOService("com.sun.star.util.URLTransformer") - oUrl.Complete = "slot:6517" - oTrans.parsestrict(oUrl) - - oDisp = StarDesktop.currentFrame.queryDispatch(oUrl, "_self", 0) - oDisp.dispatch(oUrl, oArg()) +Sub InsertPlaceholder(sColName as String) +Dim oFieldMaster as Object + If sColname <> "" Then + oFieldMaster = oDocument.createInstance("com.sun.star.text.TextField.JumpEdit") + Select Case sColName + Case "Company" + oFieldMaster.PlaceHolder = getResText(1350+1) + Case "Department" + oFieldMaster.PlaceHolder = getResText(1350+2) + Case "FirstName" + oFieldMaster.PlaceHolder = getResText(1350+3) + Case "LastName" + oFieldMaster.PlaceHolder = getResText(1350+4) + Case "Street" + oFieldMaster.PlaceHolder = getResText(1350+5) + Case "Country" + oFieldMaster.PlaceHolder = getResText(1350+6) + Case "Zip" + oFieldMaster.PlaceHolder = getResText(1350+7) + Case "City" + oFieldMaster.PlaceHolder = getResText(1350+8) + Case "Title" + oFieldMaster.PlaceHolder = getResText(1350+9) + Case "Position" + oFieldMaster.PlaceHolder = getResText(1350+10) + Case "AddrForm" + oFieldMaster.PlaceHolder = getResText(1350+11) + Case "Code" + oFieldMaster.PlaceHolder = getResText(1350+12) + Case "AddrFormMail" + oFieldMaster.PlaceHolder = getResText(1350+13) + Case "PhonePriv" + oFieldMaster.PlaceHolder = getResText(1350+14) + Case "PhoneComp" + oFieldMaster.PlaceHolder = getResText(1350+15) + Case "Fax" + oFieldMaster.PlaceHolder = getResText(1350+16) + Case "EMail" + oFieldMaster.PlaceHolder = getResText(1350+17) + Case "URL" + oFieldMaster.PlaceHolder = getResText(1350+18) + Case "Note" + oFieldMaster.PlaceHolder = getResText(1350+19) + Case "Altfield1" + oFieldMaster.PlaceHolder = getResText(1350+20) + Case "Altfield2" + oFieldMaster.PlaceHolder = getResText(1350+21) + Case "Altfield3" + oFieldMaster.PlaceHolder = getResText(1350+22) + Case "Altfield4" + oFieldMaster.PlaceHolder = getResText(1350+23) + Case "Id" + oFieldMaster.PlaceHolder = getResText(1350+24) + Case "State" + oFieldMaster.PlaceHolder = getResText(1350+25) + Case "PhoneOffice" + oFieldMaster.PlaceHolder = getResText(1350+26) + Case "Pager" + oFieldMaster.PlaceHolder = getResText(1350+27) + Case "PhoneCell" + oFieldMaster.PlaceHolder = getResText(1350+28) + Case "PhoneOther" + oFieldMaster.PlaceHolder = getResText(1350+29) + Case "CalendarURL" + oFieldMaster.PlaceHolder = getResText(1350+30) + Case "InviteParticipant" + oFieldMaster.PlaceHolder = getResText(1350+31) + Case Else + oFieldMaster.PlaceHolder = sColName + End Select + oFieldMaster.Hint = getResText(1350) + oBookText.InsertTextContent(oBookMarkCursor, oFieldMaster, True) + End If End Sub </script:module>
\ No newline at end of file |