There are three simple forms for creating a new mail message:
Memo
- Use this form to create a new message
Reply
- Use this form to reply to a message that you have received. This form will work only when you have selected a document to reply to.
Reply With History
- This is
similar to a Reply, except that a copy of the message being replied to will be automatically copied into your new message.
Before you send a message you must fill in the following information:
- The primary recipients of the message. The content of the message is directed to them or they must take action on this message.
- Recipients who will receive a copy of the message, but are not usually required to take action on it.
bcc:
- Recipients who will receive a blind copy of this message.
You can send a message by choosing the "Send" action.
Calendaring and Scheduling
This database can also be used to organize your time, keep a list of tasks and meetings, and create the following kinds of information to share with other Mail users:
Calendar Entry -
Use the Calendar Entry form for both personal appointments and for scheduling meetings with people. Select the Invitation radio-button to schedule a meeting with others. You can send meeting announcements, select Required and Optional attendees, and find free time slots for the people whom you invite.
Bookmark
- Use this form to send another Mail user a reference to a document. It is most useful when reading documents in a database that is shared with others on a server. For example, if you are reading a Discussion database and find a document that may be of use to someone else, creating a Bookmark message will allow that person to find the document very easily.
Phone Message
- Use this form to take a message for another Mail user.
Task
- Use this form to remind yourself of something that you need to do, or to ask another person to do something for you. If you send a Task to another Mail user, or to several users, they will be able to notify you when they have completed the Task.
A special view (see below) has been provided to help you organize your Tasks and Tasks that you have assigned to other people.
A Calendar Profile will automatically be created for you with default settings. The Calendar Profile lets you decide who can view your free time schedule as well as define personal Calendar settings. Use Actions Calendar Tools Calendar Profile to change your Calendar Profile settings.
Folders and Views
The following views and folders are provided for you:
Inbox
Messages that have been sent to you by another Mail user will appear here.
Calendar -
This view looks like a desktop calendar. Appointments you have scheduled will be displayed in two day, one week, two week, or one month calendar pages.
Drafts -
Messages that you have created and saved, but have not yet sent, will appear here.
Sent
- Messages will appear here if you after you have sent them. You can decide whether you want messages saved here automatically or whether you should be asked before a message is saved.
Trash
- Messages that you have marked for deletion will appear here.
Tasks
- Tasks that you have created for yourself and Tasks that you have assigned to other people will appear here. This view will also help you keep track of which Tasks have been completed and when.
Meetings
- Invitations to meetings and responses that people have returned to you will appear here.
In addition, you can create your own folders and views to help organize your Mail database.
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
Om=RK
$INFO
$BODY
Times New Roman
About Mail
The Mail template is used to create a database to send and receive electronic mail using Notes. The template can be used to create a mail database either on a local workstation or on a server.
The Mail template also contains Calendaring and Scheduling features which can be used for personal time management, meeting and appointment scheduling, or to delegate work to other people. The Calendar View provides a desktop calendar for ease in viewing scheduled appointments.
Please consult Help/Help Topics for more information on how to use the features of the Mail template.
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$INFO
$BODY
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$ACLDigest
*** Message Successfully Delivered ***
Delivery Report
Delivery Confirmation Report
Your document:
Subject
Subject
was delivered to:
IntendedRecipient
IntendedRecipient
DeliveryDate
BodyBody of memo.
Always Hidden:
Path_Info
Path_Info
Categori_ze
Close
0S0E
_Edit Document
Send Docu_ment
_Forward
_Move to Folder...
_Remove from Folder...
Trash
1S2S8S12S14S
/wCommand?OpenAgent&ToTrash=
&From="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
1S2S8S12S14S
/wFolders?OpenForm&UNID=
&View="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
In Box*
($Inbox)
Calendar.
($Calendar)
Meetings.
($Meetings)
To Do
($ToDo)
All Viewsu"
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$WINDOWTITLE
$$ScriptName
DeliveryDate
$BODY
$ACTIONS
*** Message Successfully Received ***
Return Receipt
Return Receipt
Your document:
Subject
Subject
was received by:
IntendedRecipient
IntendedRecipient
at:
DeliveryDate
Always Hidden:
Path_Info
Path_Info
Categori_ze
Close"
0S0E
_Edit Document
Send Docu_ment
_Forward
_Move to Folder...
_Remove from Folder...
Trash
1S2S8S12S14S
/wCommand?OpenAgent&ToTrash=
&From="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
1S2S8S12S14S
/wFolders?OpenForm&UNID=
&View="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
In Box*
($Inbox)
Calendar.
($Calendar)
Meetings.
($Meetings)
To Doe*
($ToDo)
All Viewsu"
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$WINDOWTITLE
$$Script_O
$$ScriptName
DeliveryDate
$BODY
$ACTIONS
*** Message Not Delivered ***
ReturnNonReceipt
Return Receipt Failure
Your document:
Subject
OriginalSubject
was not received by:
IntendedRecipient
IntendedRecipient
because:
FailureReason
FailureReason
Always Hidden:
Path_Info
Path_Info
Categori_ze
Close
0S0E
Edit Documenth
Resend
Resend>
7S12S
_Forward
_Move to Folder...
_Remove from Folder...
Trashs
1S2S8S12S14S
/wCommand?OpenAgent&ToTrash=
&From="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
1S2S8S12S14S
/wFolders?OpenForm&UNID=
&View="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
In Box*
($Inbox)
Calendar.
($Calendar)
Meetings.
($Meetings)
To Dos*
($ToDo)
All Viewsn"
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
T(lu RCt
OjR>CX
$TITLE
$INFO
$WINDOWTITLE
$$Script_O
$$ScriptName
$BODY
$ACTIONS
*** Message Successfully Delivered ***
Trace Report
Trace Report
Your trace:
Subject
Subject
has reached:
IntendedRecipient
MailServer
DeliveryDate
Trace Information
RouteServers
RouteServers
RouteTimes
RouteTimes
Always Hidden:
Path_Info
Path_Info
Categori_ze_
_Edit Document
Send Docu_ment
_Forward
_Move to Folder...
_Remove from Folder...
Trash
1S2S8S12S14S
/wCommand?OpenAgent&ToTrash=
&From="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
1S2S8S12S14S
/wFolders?OpenForm&UNID=
&View="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
In Box*
($Inbox)
Calendar.
($Calendar)
Meetings.
($Meetings)
To Dod*
($ToDo)
All ViewsA"
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$WINDOWTITLE
$$Script_O
$$ScriptName
DeliveryDate
$BODY
$ACTIONS
VersionOpt|
6S7S9S14S
$VersionOpt
0R1S2S3S
SavedOnce
0R1S2S3S
PostedDate(
0R1S2S3S
DeliveredDate
0R1S2S3S
$AutoEditMode
0R1S2S3S
MailSaveOptions
0R1S2S3S
VersionOpt
0R4S
New Bookmark
Subject
Subject
Subject
4S6S12S13S14S15S17S21S23S25S26S28S
Times New Roman
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
Use "EmailProcessing"
Use "DocumentConversions"
'++LotusScript Development Environment:2:5:(Forward):0:1
'++LotusScript Development Environment:2:5:(Declarations):0:2
Bookmark'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Postmodechange(Source As Notesuidocument)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Postopen From Source Call Postopen
On Event Querysave From Source Call Querysave
On Event Queryclose From Source Call Queryclose
On Event Postmodechange From Source Call Postmodechange
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
Set ws = New NotesUIWorkSpace
Set uidoc = source
Call EmailOpen
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Call EmailSave(Continue)
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Call EmailClose(Continue)
End Sub
'++LotusScript Development Environment:2:2:Postmodechange:1:12
Copy into\New Memo'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Click(Source As Button)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As BUTTON
Set Source = Bind(Objectname_)
On Event Click From Source Call Click
End Sub
'++LotusScript Development Environment:2:2:Click:1:12
Sub Click(Source As Button)
Call CreateNewDoc(NEW_MEMO)
End Sub
Copy into\New Calendar Entry'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Click(Source As Button)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As BUTTON
Set Source = Bind(Objectname_)
On Event Click From Source Call Click
End Sub
'++LotusScript Development Environment:2:2:Click:1:12
Sub Click(Source As Button)
Call CreateNewDoc(NEW_CALENDAR)
End Sub
tmpnewdoc
1S2S
Copy into\New Task'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Click(Source As Button)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As BUTTON
Set Source = Bind(Objectname_)
On Event Click From Source Call Click
End Sub
'++LotusScript Development Environment:2:2:Click:1:12
Sub Click(Source As Button)
Call CreateNewDoc(NEW_TASK)
End Sub
tmpnewdoc
1S2S
Copy into\New GroupK,
NewGroup
0S0E
tmpnewdoc
1S2S
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
Use "AppointmentProcessing"
Use "RepeatProcessing"
Use "DocumentConversions"
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub PutTask
Declare Sub SetViewObjectVariables(source)
Declare Sub PutCalendarEntry(Action)
Declare Sub PutAppointment(Action)
'++LotusScript Development Environment:2:5:(Declarations):0:10
Dim uiview As NotesUIView
Dim startdt As NotesDateTime
Dim enddt As NotesDateTime
'++LotusScript Development Environment:2:2:PutTask:1:8
Sub PutTask
'This subroutine is used both for drag/dropping and for pasting
Dim timeitem As NotesItem
Dim timedt As New NotesDateTime("")
On Error Goto ErrorRoutine
Set timeitem = note.GetFirstItem("OriginalStartDate")
Set datedt = New NotesDateTime(uiview.CalendarDateTime)
Set timedt = timeitem.DateTimeValue
Set date2 = New NotesDateTime(datedt.DateOnly & " " & timedt.TimeOnly)
'date1 is the original CalendarDateTime and date2 is the new one
TotalDiff = date2.TimeDifference(date1)
'break the difference down to a number that fits in the integer datatype
DayDiff = Fix(TotalDiff / 86400)
SecDiff = TotalDiff Mod 86400
MinDiff = Fix(SecDiff / 60)
SecDiff = SecDiff Mod 60
'If you are changing the date
If (date1.LSLocalTime <> date2.LSLocalTime) Then
If note.StartDateTime(0) = "" Then
Set note.DueDateTime = date2
note.CalendarDateTime = note.DueDateTime
Elseif note.DueDateTime(0) = "" Then
Set note.StartDateTime = date2
note.CalendarDateTime = note.StartDateTime
Else
Set note.StartDateTime = date2
note.CalendarDateTime = note.StartDateTime
Set dateitem = New NotesDateTime(note.DueDateTime(0))
dateitem.AdjustDay(DayDiff)
dateitem.AdjustMinute(MinDiff)
dateitem.AdjustSecond(SecDiff)
Set note.DueDateTime = dateitem
End If
Call MarkTempFields(note)
Call note.Save(True, True, True)
End If
Exit Sub
ErrorRoutine:
Messagebox Error & " (PutTask)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:SetViewObjectVariables:1:8
Sub SetViewObjectVariables(source)
Set uiview = source
Set session = New NotesSession
Set ws = New NotesUIWorkspace
Set db = session.CurrentDatabase
End Sub
'++LotusScript Development Environment:2:2:PutCalendarEntry:1:8
Sub PutCalendarEntry(Action)
'This subroutine is used both for drag/dropping and for pasting
On Error Goto ErrorRoutine
CheckAlarms = False
Set documents = uiview.documents
Set note = documents.GetFirstDocument
While Not(note Is Nothing)
note.OriginalStartDate = note.CalendarDateTime
Set date1 = New NotesDateTime(note.OriginalStartDate(0))
Select Case note.Form(0)
Case "Task"
PutTask
Case "Appointment"
PutAppointment(Action)
Case Else
'we only support this for Tasks and Appointments
End Select
Set note = documents.GetNextDocument(note)
Wend
If CheckAlarms Then ws.CheckAlarms
ws.ViewRefresh
%REM
'we need to de-reference these object variables, and we don't care if any of the delete's fail
On Error Resume Next
Delete documents
Delete parent
Delete note
Delete notice
Delete date1
Delete date2
%END REM
Exit Sub
ErrorRoutine:
Messagebox Error & " (PutCalendarEntry)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:PutAppointment:1:8
Sub PutAppointment(Action)
Dim timeitem As NotesItem
Dim timedt As New NotesDateTime("")
On Error Goto ErrorRoutine
Set notice = New NotesDocument(db)
If Action = "Drop" And note.HasItem("OrgRepeat") Then Call SaveOriginalValues
If note.HasItem("$Alarm") Then CheckAlarms = True
'see if the document was dropped onto a date but no time, or if this is an anniverary/event
If (Hour(uiview.CalendarDateTime) = 0) Or (note.AppointmentType(0) = "1") Or (note.AppointmentType(0) = "2") Then
'since this was dropped on a date with no time, keep the same time
Set datedt = New NotesDateTime(uiview.CalendarDateTime)
Set timeitem = note.GetFirstItem("OriginalStartDate")
Set timedt = timeitem.DateTimeValue
Set date2 = New NotesDateTime(datedt.DateOnly & " " & timedt.TimeOnly)
Else
Set date2 = New NotesDateTime(uiview.CalendarDateTime)
End If
TotalDiff = date2.TimeDifference(date1)
'break the difference down to a number that fits in the integer datatype
DayDiff = Fix(TotalDiff / 86400)
SecDiff = TotalDiff Mod 86400
MinDiff = Fix(SecDiff / 60)
SecDiff = SecDiff Mod 60
'If you are changing the date
If (date1.LSLocalTime <> date2.LSLocalTime) Then
If (note.Chair(0) <> Owner) Then
'we are not the creator of this entry -> make sure the user wants to change the date/time of this meeting
If (Messagebox("You are not the originator of this entry (" & note.Subject(0) & "). Are you sure you want to change the date/time?",36,"Warning") = 6) Then
Set note.StartDateTime = date2
note.StartDate = Datevalue(note.StartDateTime(0))
note.CalendarDateTime = note.StartDateTime
Set dateitem = New NotesDateTime(note.EndDateTime(0))
dateitem.AdjustDay(DayDiff)
dateitem.AdjustMinute(MinDiff)
dateitem.AdjustSecond(SecDiff)
Set note.EndDateTime = dateitem
If note.HasItem("$AlarmTime") Then
AlarmTime = note.GetItemValue("$AlarmTime")
Set dateitem = New NotesDateTime(AlarmTime(0))
dateitem.AdjustDay(DayDiff)
dateitem.AdjustMinute(MinDiff)
dateitem.AdjustSecond(SecDiff)
Set item = note.GetFirstItem("$AlarmTime")
Set item.DateTimeValue = dateitem
End If
If (note.AppointmentType(0) = "4") Then
note.ReminderTime = note.StartDateTime(0)
Else
Set trdr = session.CreateDateRange
Set startdt = New NotesDateTime(note.StartDateTime(0))
Set enddt = New NotesDateTime(note.EndDateTime(0))
Set trdr.StartDateTime = startdt
Set trdr.EndDateTime = enddt
Set note.TimeRange = trdr
End If
If Action = "Drop" Then
If note.HasItem("OrgRepeat") Then Call RepeatSave
Elseif note.HasItem("OrgRepeat") Then
note.RemoveItem("OrgRepeat")
note.RemoveItem("$Ref")
Messagebox "Pasting an instance of a repeating appointment creates a non-repeating appointment.", 64, "Paste"
End If
If CancelChange = True Then Exit Sub
Call MarkTempFields(note)
Call note.Save(True, True, True)
End If
Else
'we are the originator of this meeting
Set note.StartDateTime = date2
Set note.StartDate = date2
note.CalendarDateTime = note.StartDateTime
Set dateitem = New NotesDateTime(note.EndDateTime(0))
dateitem.AdjustDay(DayDiff)
dateitem.AdjustMinute(MinDiff)
dateitem.AdjustSecond(SecDiff)
Set note.EndDateTime = dateitem
If note.HasItem("$AlarmTime") Then
AlarmTime = note.GetItemValue("$AlarmTime")
Set dateitem = New NotesDateTime(AlarmTime(0))
dateitem.AdjustDay(DayDiff)
dateitem.AdjustMinute(MinDiff)
dateitem.AdjustSecond(SecDiff)
Set item = note.GetFirstItem("$AlarmTime")
Set item.DateTimeValue = dateitem
End If
If (note.AppointmentType(0) = "4") Then
note.ReminderTime = note.StartDateTime(0)
Else
Set trdr = session.CreateDateRange
Set startdt = New NotesDateTime(note.StartDateTime(0))
Set enddt = New NotesDateTime(note.EndDateTime(0))
Set trdr.StartDateTime = date2
Set trdr.EndDateTime = dateitem
Set note.TimeRange = trdr
End If
'see if we need to reschedule the appointment
If (Not(note.IsResponse) And (note.HasItem("PostedDate"))) Or ((note.IsResponse) And (note.AppointmentType(0) = "3")) Then
If (note.IsResponse) Then
Set parentnote = db.GetDocumentBYUNID(note.ParentDocumentUNID)
Call CreateInviteeTable(parentnote)
Else
Call CreateInviteeTable(note)
End If
NeedsReschedule = True
End If
If (NeedsReschedule) Then note.SequenceNum = note.SequenceNum(0) + 1
If Action = "Drop" Then
If note.HasItem("OrgRepeat") Then Call RepeatSave
Elseif note.HasItem("OrgRepeat") Then
note.RemoveItem("OrgRepeat")
note.RemoveItem("$Ref")
Messagebox "Pasting an instance of a repeating appointment creates a non-repeating appointment.", 64, "Paste"
End If
If CancelChange = True Then Exit Sub
If (NeedsReschedule) Then Call RescheduleAppointment
Call MarkTempFields(note)
Call note.Save(True, True, True)
End If
End If
Exit Sub
ErrorRoutine:
Messagebox Error & " (PutAppointment)"
Exit Sub
End Sub
0 0
,` Jh
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Postdragdrop(Source As Notesuiview)
Declare Sub Regiondoubleclick(Source As Notesuiview)
Declare Sub Querydragdrop(Source As Notesuiview, Continue As Variant)
Declare Sub Postpaste(Source As Notesuiview)
Declare Sub Queryopen(Source As Notesuiview, Continue As Variant)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIVIEW
Set Source = Bind(Objectname_)
On Event Postdragdrop From Source Call Postdragdrop
On Event Regiondoubleclick From Source Call Regiondoubleclick
On Event Querydragdrop From Source Call Querydragdrop
On Event Postpaste From Source Call Postpaste
On Event Queryopen From Source Call Queryopen
End Sub
'++LotusScript Development Environment:2:2:Postdragdrop:1:12
Sub Postdragdrop(Source As Notesuiview)
Call SetViewObjectVariables(source)
Call GetCalendarOwner
Call PutCalendarEntry("Drop")
End Sub
'++LotusScript Development Environment:2:2:Regiondoubleclick:1:12
Sub Regiondoubleclick(Source As Notesuiview)
Set ws = New NotesUIWorkspace
Set session = New NotesSession
If source.CalendarDateTime <> "" Then Call ws.ComposeDocument("", "", "Appointment")
End Sub
'++LotusScript Development Environment:2:2:Querydragdrop:1:12
Sub Querydragdrop(Source As Notesuiview, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Postpaste:1:12
Sub Postpaste(Source As Notesuiview)
Call SetViewObjectVariables(source)
GetCalendarOwner
PutCalendarEntry("Paste")
End Sub
'++LotusScript Development Environment:2:2:Queryopen:1:12
Sub Queryopen(Source As Notesuiview, Continue As Variant)
'++LotusScript Development Environment:2:2:EmailModeChange:1:8
Sub EmailModeChange
If note Is Nothing Then Call InstantiateObjectVariables
'If this is a message that was written by you or your mail file, we need to remove any options fields
If note.From(0) = Owner Or note.From(0) = session.UserName Or _
note.Principal(0) = Owner Or note.Principal(0) = session.UserName Then
note.RemoveItem("MailOptions")
note.RemoveItem("SaveOptions")
If Not(note.HasItem("SecureMail")) Then CheckSecureMail
'If this is a message that was not written by you we do not present the mail dialog
'but we do want to force processing into QuerySave
Else
note.MailOptions = "0"
note.RemoveItem("SaveOptions")
End If
If uidoc.EditMode Then uidoc.Reload
End Sub
'++LotusScript Development Environment:2:2:EmailSave:1:8
Sub EmailSave(Continue)
DoNotClose = False
If note Is Nothing Then Call InstantiateObjectVariables
note.RemoveItem("MailOptions")
note.RemoveItem("SaveOptions")
Action = note.tmpAction(0)
If note.HasItem("IsMailStationery") Then
If Action <> "RenameStationery" Then
Call SaveDialog("Stationery")
If ContinueSave = IDCANCEL Then continue = False
If ContinueSave <> IDYES Then
uidoc.reload
Exit Sub
End If
End If
End If
Select Case Action
Case "SaveAsStationery"
sName = Inputbox$("What would you like to call this Stationery?", "Save as Stationery", "-Untitled-")
If sName = "" Then
Continue = False
note.RemoveItem("tmpAction")
Exit Sub
End If
If NewDocument Then
note.IsMailStationery = 1
note.MailStationeryName = sName
note.MailOptions = "0"
note.SaveOptions = "1"
Else
note.SaveOptions = "0"
Set newnote = New NotesDocument(db)
Call note.CopyAllItems(newnote)
ItemList = newnote.Items
Forall i In ItemList
If Lcase(Left(i.Name, 3)) = "tmp" Then i.Remove
End Forall
newnote.IsMailStationery = 1
newnote.MailStationeryName = sName
newnote.Form = "Memo"
newnote.RemoveItem("PostedDate")
newnote.RemoveItem("DeliveredDate")
newnote.Save True, True
ws.ViewRefresh
End If
Messagebox "This Message has been saved as Stationery in your Drafts folder. A new message will be created every time you open this Stationery.", 0, "Save as Stationery"
note.RemoveItem("tmpAction")
Call uidoc.close
Case "RenameStationery"
MailStationeryName = note.MailStationeryName
sName = Inputbox$("What would you like to call this Stationery?", "Save as Stationery", MailStationeryName(0))
If sName = "" Then
note.MailOptions = "0"
note.RemoveItem("tmpAction")
DoNotClose = True
Continue = False
Exit Sub
End If
note.MailStationeryName = sName
note.MailOptions = "0"
note.SaveOptions = "1"
Case "SaveAsDraft", "SaveAndFile", "SendAndFile", "ConvertNewDoc"
note.MailOptions = "0"
note.SaveOptions = "1"
Case "Send"
note.MailOptions = "0"
note.SaveOptions = "0"
Case "Mailing"
'We do not want to do anything if mailing is in process (like from the Send button)
Case "ConvertToTask"
note.RemoveItem("DeliveredDate")
note.RemoveItem("PostedDate")
note.SendTo = ""
note.CopyTo = ""
note.SaveOptions ="1"
note.MailOptions = "0"
note.Form = "Task"
note.AssignState = 0
note.ExcludeFromView = "D"
Call note.ReplaceItemValue("_ViewIcon", 168)
Case Else
'If this is a message did not originate in this mailfile (it was sent here and therefore has DeliveredDate) we do not present the mail dialog
If note.HasItem("DeliveredDate") Then
note.MailOptions = "0"
note.SaveOptions = "1"
Call SaveDialog("Document")
If ContinueSave = IDCANCEL Then continue = False
If ContinueSave <> IDYES Then
uidoc.reload
Exit Sub
End If
End If
End Select
note.RemoveItem("tmpAction")
If note.HasItem("$VersionOpt") Then Call note.ReplaceItemValue("$VersionOpt", "0")
'If Not(note.HasItem("AuthorList")) Then Set item = New NotesItem(note, "AuthorList", note.From, AUTHORS)
uidoc.Reload
End Sub
'++LotusScript Development Environment:2:2:EmailClose:1:8
Sub EmailClose(Continue)
If DoNotClose Then
DoNotClose = False
Continue = False
'This backs out anything you did previously to MailOptions and SaveOptions and will force you back into QuerySave next time you try to exit
note.RemoveItem("MailOptions")
note.RemoveItem("SaveOptions")
uidoc.reload
End If
If TaskReply Then
Set namelookup = New NotesName(note.SendTo(0))
Messagebox "Notification has been sent to " & namelookup.Common & ".", 0, "Task Message"
End If
End Sub
'++LotusScript Development Environment:2:2:SaveDialog:1:8
Sub SaveDialog(SavedDoc)
ContinueSave = Messagebox("Do you wish to save this " & SavedDoc & "?", MB_YESNOCANCEL, "Save " & SavedDoc)
Select Case ContinueSave
Case IDCANCEL
note.MailOptions = "0"
'This will force us into querysave next time - this time it will set continue = false so no save will occur
note.SaveOptions = "1"
Case IDNO
note.SaveOptions = "0"
Case IDYES
note.SaveOptions = "1"
End Select
End Sub
'++LotusScript Development Environment:2:2:CheckSecureMail:1:8
Sub CheckSecureMail
'If SecureMail = 1 in notes.ini all mail gets Signed and Encrypted and the user is unable to override it
'now we need to update the original invitation document
Context = GetContext
Select Case Context
Case 1,3
'1 = non-repeat notice; 3 = repeat notice; in either case, update the parent note
Call UpdateOriginalInvitation(parentnote)
Case 2,4
'2 = repeat instance; 4 = non-repeat instance; in either case, update the current note
Call UpdateOriginalInvitation(note)
End Select
If Not(IsAgentProcessing) Then Messagebox "A notice has been sent informing " & ChairName(0) & " that you will be attending. A meeting document has been added to your Calendar.",0,"Status"
'see if we should remove this from the inbox
If (profile.AutoRemoveFromInbox(0) = "1") Then note.RemoveFromFolder("($Inbox)")
Exit Sub
ErrorRoutine:
Messagebox Error & " (AcceptInvitation)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:DeclineInvitation:1:8
Sub DeclineInvitation
*This routine is called whenever the user declines an invitation or
changes their mind after accepting an invitation
*A notice document is sent to the chair informing them of our decline
*The main invitation document is updated to reflect our decline
'1 = non-repeat notice; 3 = repeat notice; in either case, update the parent note
Call UpdateOriginalInvitation(parentnote)
parentnote.Delegee = DelegeeName(0)
parentnote.save True,False,True
Case 2,4
'2 = repeat instance; 4 = non-repeat instance; in either case, update the current note
Call UpdateOriginalInvitation(note)
End Select
Messagebox "An invitation has been sent to " & Delegeename(0) & ". A notice has been sent informing " & ChairName(0) & " that you will not be attending.",0,"Status"
'remove the sendto on the note
note.SendTo = ""
'see if we should remove this from the inbox
If (profile.AutoRemoveFromInbox(0) = "1") Then note.RemoveFromFolder("($Inbox)")
DelegateInvitation = 0
Else
DelegateInvitation = 1
End If
Exit Function
ErrorRoutine:
Messagebox Error & " (DelegateInvitation)"
Call MarkTempFields(note)
Call note.RemoveItem("tmpUserActions")
DelegateInvitation = 1
Exit Function
End Function
'++LotusScript Development Environment:2:2:CounterPropose:1:8
Sub CounterPropose
*This routine is called whenever the user wants to send a counter propose notice
*This routine sends a counter propose notice to the chair and updates the main
'++LotusScript Development Environment:2:2:GetMostRecentUpdateNotice:1:8
Sub GetMostRecentUpdateNotice(Context As Integer)
*This is the bulk of the processing for notice responses
*This routine iterates through the responses of a particular meeting invitation
and gets the most recent notice sent by the chair
%END REM
Dim index As Integer
Dim MainSequence As Integer
If (note.IsResponse) And (parentnote Is Nothing) Then Exit Sub
On Error Goto ErrorRoutine
Redim UpdateResponses(2)
numResponses = 0
'get the context that this document was opened in
Context = GetContext
Select Case context
Case 1,3
'1 means the current note is a non-repeat notice, 3 = repeat notice
Set documents = parentnote.Responses
MainSequence = parentnote.SequenceNum(0)
Case 2,4
'2 means repeat instance, 4 means non-repeat instance
Set documents = note.Responses
MainSequence = note.SequenceNum(0)
End Select
If (documents.Count = 0) Then Exit Sub
Set response = documents.GetFirstDocument
While Not(response Is Nothing)
'make sure we have a valid document
If (response.Form(0) = "Notice") Then
'get the necessary values for this update
GetUpdateResponseItems(Context)
'if the sequence is >= the original invitation sequence, we can process it
If (UpdateSequence >= MainSequence) Then
'if we haven't added anything to the array, add this one
If (numResponses = 0) Then
Call SetUpdateAsMostRecent(MainSequence)
Else
If (UpdateAction = ORS_MSGTYPE_CONFIRMATION) Then
index =1
Else
index = 0
End If
'if the UpdateSequence value is greater than the existing value, add this response
If (UpdateSequence > UpdateResponses(index).sequencenum) Then
Call SetUpdateAsMostRecent(MainSequence)
Else
'if the UpdateSequence = the existing value, compare creation dates
If (UpdateSequence = UpdateResponses(index).sequencenum) And (UpdateCreation > UpdateResponses(index).creationdate) Then Call SetUpdateAsMostRecent(MainSequence)
End If
End If
End If
End If
Set response = documents.GetNextDocument(response)
Wend
Exit Sub
ErrorRoutine:
Messagebox Error & " (GetMostRecentUpdateNotice)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:CheckForNoticeUpdates:1:8
Sub CheckForNoticeUpdates
*This routine is called from the QueryOpen event on notice and appointment forms
*It is only called if the mail owner != the meeting chair (i.e. we are an invitee)
*This routine calls GetMostRecentResponseNotice and performs an action based upon the notice
%END REM
Dim Context As Integer
Dim lDoc As NotesDocument
Call GetMostRecentUpdateNotice(Context)
If (documents.Count = 0) Then Exit Sub 'there are no responses
Select Case Context
'1 means the current note is a non-repeat notice, 3 = repeat notice
Case 1,3
Set lDoc = parentnote
Case 2,4
'2 means repeat instance, 4 means non-repeat instance
Set lDoc = note
End Select
On Error Goto ErrorRoutine
'if there are any responses waiting, see what the most recent one is;
Select Case UpdateResponses(0).action
Case ORS_MSGTYPE_RESCHEDULE
'if the user is not reading the most upto date notice, see if we should open the reschedule notice or not
If (UpdateResponses(0).misc2 <> note.UniversalID) Then
If (UpdateResponses(0).sequencenum > lDoc.SequenceNum(0)) Then
If IsWebClient Then
note.tmpConfirmMsg = "This meeting has been rescheduled. Check you In Box or Meetings view for the latest notice."
Else
If (Messagebox("This meeting has been rescheduled. Do you want to open the Reschedule notice now?.",33,"Open Reschedule") = 1) Then
'the user wants us to open the reschedule notice
OpenReschedule = True
Else
OpenReschedule = False
note.DoNotProcess = True
End If
End If
End If
Else
'the user is reading the most upto date reschedule notice -> make sure we can process this document
If (UpdateResponses(0).sequencenum <= parentnote.SequenceNum(0)) Then note.DoNotProcess = True
End If
Case ORS_MSGTYPE_CANCEL
staticstring = "This meeting has been cancelled."
If IsWebClient Then
note.tmpConfirmMsg = staticstring
Else
If (lDoc.NoticeType(0) = ORS_MSGTYPE_ACCEPT) Then
Messagebox staticstring & " The calendar entry will be updated to reflect this change",0,"Status"
Call DeCommitAppointment(lDoc)
Else
Messagebox staticstring, 0, "Status"
End If
End If
note.DoNotProcess = True
'we need to do this here since this is not handled in QuerySave
If Not IsWebClient And note.HasItem("OrgRepeat") Then
Action = "Cancel"
Call RepeatSave
End If
Case ORS_MSGTYPE_STATUSUPDATE
If (UpdateResponses(0).misc1 = ORS_STATUS_REMOVED) Then
'this user was uninvited
staticstring = "You are no longer required to attend this meeting."
If IsWebClient Then
note.tmpConfirmMsg = staticstring
Else
If (lDoc.NoticeType(0) = ORS_MSGTYPE_ACCEPT) Then
Messagebox staticstring & " The calendar entry will be updated to reflect this change",0,"Status"
Call DeCommitAppointment(lDoc)
Else
Messagebox staticstring,0,"Status"
End If
'we need to do this here since this is not handled in QuerySave
If note.HasItem("OrgRepeat") Then
Action = "Cancel"
Call RepeatSave
End If
End If
Else
'the user is being required to attend
If (lDoc.NoticeType(0) <> ORS_MSGTYPE_ACCEPT) Then
staticstring = "You are required to attend this meeting."
If IsWebClient Then
note.tmpConfirmMsg = staticstring
Else
Messagebox staticstring & " The calendar entry will be created to reflect this change",0,"Status"
Call CommitAppointment(lDoc)
End If
End If
End If
note.DoNotProcess = True
End Select
'see if there are any confirmation notice
If (UpdateResponses(1).Action = ORS_MSGTYPE_CONFIRMATION) Then
'if the user is not reading the most upto date notice, and their are no other update notices more recent than this one, then display the message
If (UpdateResponses(1).misc2 <> note.UniversalID) And _
((UpdateResponses(1).sequencenum > UpdateResponses(0).SequenceNum) Or _
(UpdateResponses(1).creationdate > UpdateResponses(0).creationdate)) Then
'++LotusScript Development Environment:2:1:GetParentDocument:1:8
Function GetParentDocument() As Integer
*this routine gets the parent document for a given note
%END REM
On Error Resume Next
GetParentDocument = False
Set parentnote = db.GetDocumentByUNID(note.ParentDocumentUNID)
If (parentnote Is Nothing) Then
'if this is a non-repeating note, see if we should re-create the document
If Not(note.hasitem("OrgRepeat")) Then
If (Msgbox("The appointment document has been deleted from your calendar, do you want to re-create it?",52) = 6) Then
Call ResurrectParentDoc
GetParentDocument =True
Exit Function
Else
note.tmpNoParent = True
note.DoNotProcess = True
Exit Function
End If
Else
'this is a repeating notice; see if the user is trying to process a response without processing the repeat parent
If (note.HasItem("RepeatParentUNID")) Then
Set parentnote = db.GetDocumentByUNID(note.RepeatParentUNID(0))
If (parentnote Is Nothing) Then
'the repeat set has been deleted; see if the user wants to continue on by creating a non-repeat instance
If(Msgbox("The parent document has been deleted from your calendar and was part of a repeat set. Do you want to re-create it as a single appointment?",52) = 6) Then
Call ResurrectParentDoc
GetParentDocument =True
Exit Function
Else
note.tmpNoParent = True
note.DoNotProcess = True
Exit Function
End If
Else
'the parent repeat set has not been deleted; see if it is an invitation
If (parentnote.NoticeType(0) = ORS_MSGTYPE_INVITE) Then
Msgbox "You need to respond to the original meeting invitation that this notice belongs to. After clicking on OK, the original invitation will be opened.",0,"Status"
OpenRepeatParent = True
Exit Function
Else
'the parent repeat set has been processed; see if the user wants to recreate this as a non-repeating instance
If(Msgbox("The parent document has been deleted from your calendar and was part of a repeat set. Do you want to re-create it as a single appointment?",52) = 6) Then
Call ResurrectParentDoc
GetParentDocument =True
Exit Function
Else
note.tmpNoParent = True
note.DoNotProcess = True
Exit Function
End If
End If
End If
End If
End If
Else
'we found the parent
GetParentDocument = True
End If
End Function
8 h
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$ScriptLib
$ScriptLib_O
$TITLE
$Flags
$PublicAccess
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Initialize
Declare Sub InstantiateObjectVariables
Declare Sub GetCalendarOwner
Declare Sub MarkTempFields(doc As NotesDocument)
Declare Sub CreateDefaultCalendarProfile
Declare Sub wInitDefaultSettings
'++LotusScript Development Environment:2:5:(Declarations):0:10
'Front end classes -> we declare these as variant so that backend server tasks will operate correctly
Dim ws As Variant
Dim uidoc As Variant
'Back end classes
Dim session As NotesSession
Dim db As NotesDatabase
Dim note As NotesDocument
Dim profile As NotesDocument
Dim notice As NotesDocument
Dim parentnote As NotesDocument
Dim parent As NotesDocument
Dim child As NotesDocument
Dim documents As NotesDocumentCollection
Dim children As NotesDocumentCollection
Dim date1 As NotesDateTime
Dim date2 As NotesDateTime
Dim dateItem As NotesDateTime
Dim item As NotesItem
Dim NameLookup As NotesName
'General Purpose classes
Dim Owner As String
Dim NewDocument As Integer
'Client Differenciation
Dim IsWebClient As Variant
%INCLUDE "orgconst.lss"
%INCLUDE "lsconst.lss"
'++LotusScript Development Environment:2:2:Initialize:1:10
Sub Initialize
End Sub
'++LotusScript Development Environment:2:2:InstantiateObjectVariables:1:8
Sub InstantiateObjectVariables
Set session = New NotesSession
Set db = session.CurrentDatabase
GetCalendarOwner
If Typename(uidoc) <> "EMPTY" Then
Set note = uidoc.Document
uidoc.AutoReload = False
End If
End Sub
'++LotusScript Development Environment:2:2:GetCalendarOwner:1:8
Sub GetCalendarOwner
On Error Resume Next
If (profile Is Nothing) Then Set profile = db.GetProfileDocument("CalendarProfile")
If Err > 0 Then
Err = 0
Call CreateDefaultCalendarProfile
End If
On Error Goto ErrorRoutine
If profile.Owner(0) = "" Then Call CreateDefaultCalendarProfile
Owner = profile.Owner(0)
Exit Sub
ErrorRoutine:
Messagebox Error & " (creating Calendar Profile)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:MarkTempFields:1:8
Sub MarkTempFields(doc As NotesDocument)
'Mark all temporary and compute for display fields such that they will not be saved to disk
On Error Resume Next
itemlist = doc.Items
Forall n In itemlist
If Lcase(Left(n.Name, 3)) = "tmp" Or Lcase(Left(n.Name, 4)) = "disp" Then n.SaveToDisk = False
End Forall
If Not IsWebClient Then Exit Sub
'remove web CGI variable so that they will get updated on the next doc read
Call doc.RemoveItem("$$QueryOpenAgent")
Call doc.RemoveItem("$$QuerySaveAgent")
Call doc.RemoveItem("Path_Info")
Call doc.RemoveItem("Query_String")
'if the mail option fields are all default values, remove them
If (doc.Importance(0) = "2" And doc.DeliveryPriority(0) = "N" And doc.DeliveryReport(0) = "B" And _
doc.Form(0) <> "Task") Then
Call doc.RemoveItem("Importance")
Call doc.RemoveItem("DeliveryPriority")
Call doc.RemoveItem("DeliveryReport")
End If
End Sub
'++LotusScript Development Environment:2:2:CreateDefaultCalendarProfile:1:8
Sub CreateDefaultCalendarProfile
*This routine creates a calendar profile document
containg default values for required fields
%END REM
'the global variable "profile" is a profile document already
'we need to add the fields to it
profile.Form = "CalendarProfile"
Call profile.ComputeWithForm(False, False)
If IsWebClient Then
Call wInitDefaultSettings()
Else
Call profile.Save(True,True,True)
End If
End Sub
'++LotusScript Development Environment:2:2:wInitDefaultSettings:1:8
Sub wInitDefaultSettings
profile.wDefaultMailOpt = "2"
profile.wEnableTrashIcon = "1"
profile.wCalGridType = "3"
profile.wEnableNABs = "0"
profile.wEnableFavorites = "0"
profile.wIsFolder1 = "1"
profile.wIsFolder2 = "1"
profile.wIsFolder3 = "1"
profile.wIsFolder4 = "1"
profile.wIsFolder5 = "1"
profile.wIsFolder6 = "1"
profile.NotesNab1 = "names.nsf"
Call profile.Save(True,True,True)
End Sub
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$ScriptLib
$ScriptLib_O
$TITLE
$Flags
$PublicAccess
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
Use "ObjectVariables"
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub RepeatSave
Declare Sub RepeatClose
Declare Sub SaveOriginalValues
Declare Sub ModifyRecurring
Declare Sub CopyChanges
Declare Sub BuildRepeatDates
Declare Sub NextAdjustment(x, TargetWeek)
Declare Function ProcessThisDoc As Integer
Declare Sub GetModifiedSettings
'++LotusScript Development Environment:2:5:(Declarations):0:10
'------PROCESSING VARIABLES------
Dim tmpnote As NotesDocument
Dim repnote As NotesDocument
Dim timerange As NotesDateRange
Dim Action As String
Dim AdjustDays As Integer
Dim Adjustment As Integer
Dim ChangeWhich As String
Dim DateList() As Variant
Dim DayList() As Integer
Dim SaveValueList List As Variant
Dim tmpRepeatDates() As Variant
Dim tmpRepeatIds() As Variant
Dim WeekList() As Integer
Dim WeekNbr As Integer
Dim CancelChange As Integer
Dim InstancesCreated As Integer
Dim QueriedForChanges As Integer
'++LotusScript Development Environment:2:2:RepeatSave:1:8
Sub RepeatSave
On Error Goto ErrorRoutine
'note IS THE CURRENT DOCUMENT
'repnote IS THE REPEAT INSTANCE
'parent IS THE ULTIMATE PARENT
'if note is a response, check to see if it is a notice
'if it is a notice then we need to find the parent
If note.IsResponse Then
If note.Form(0) = "Notice" Then
Set repnote = db.GetDocumentByUNID(note.ParentDocumentUNID)
Else
Set repnote = note
End If
If repnote Is Nothing Then Exit Sub
Err = 0
On Error Resume Next
Set parent = db.GetDocumentByUNID(repnote.ParentDocumentUNID)
If Err = 0 Then
On Error Goto ErrorRoutine
Else
Err = 0
If parent Is Nothing Then Messagebox "This document's repeat parent has been deleted, "&_
"therefore this calendar entry can no longer be processed as a repeating entry.", 0, "Repeat Parent Not Found"
Exit Sub
End If
Else
Set parent = note
End If
If parent Is Nothing Then Exit Sub
If (NewDocument Or Action = "Accept") And Not(InstancesCreated) Then
'Build a list of all the dates this appointment will recur on (Accept already has the RepeatDates)
If NewDocument And note.RepeatUnit(0) <> "C" Then Call BuildRepeatDates
'This doc becomes the parent of all of the repeat instances
'Mark all temporary and compute for display fields such that they will not be saved to disk
On Error Resume Next
itemlist = parent.Items
Forall n In itemlist
If Lcase(Left(n.Name, 3)) = "tmp" Or Lcase(Left(n.Name, 4)) = "disp" Then n.SaveToDisk = False
End Forall
On Error Goto ErrorRoutine
Set timerange = session.CreateDateRange
'Get the duration
Set date1 = New NotesDateTime(parent.StartDateTime(0))
Set date2 = New NotesDateTime(parent.EndDateTime(0))
Duration =date2.TimeDifference(date1) / 60
'Get the original start time and use it to set the time
Set date2 = New NotesDateTime(parent.StartDateTime(0))
date2.SetAnyDate
'If there is a $AlarmTime we need to create the correct alarm times for each instsance
If parent.HasItem("$AlarmTime") Then
AlarmTime = parent.GetItemValue("$AlarmTime")
Dim alarmdate As New NotesDateTime(AlarmTime(0))
AlarmDiff = alarmdate.TimeDifference(date1) / 60
End If
'Create a copy of this meeting for each of the repeatDates, these are all children of parent which we just created
RepeatDates = parent.RepeatDates
RepeatIds = parent.RepeatIds
BusyName = Owner
IdList = parent.RepeatIds
If Ubound(RepeatDates) > Ubound(IdList) Then Redim Preserve IdList(Ubound(RepeatDates))
x = 0
Forall d In RepeatDates
Print "Creating repeating appointments... (" & (x+1) & " out of " & (Ubound(RepeatDates)+1) & ")"
Set repnote = New NotesDocument(db)
Call parent.CopyAllItems(repnote)
repnote.Form = "Appointment"
If NewDocument Then
repnote.Chair = Owner
Else
repnote.Chair = note.Chair 'in this case we are accepting an invite
End If
repnote.SequenceNum = 1
'Store new date with original time (date2)
Set date1 = New NotesDateTime(d & " " & date2.LocalTime)
'++LotusScript Development Environment:2:1:CheckIfConflictExists:1:8
Function CheckIfConflictExists As Integer
*This function is called only if the user specifies conflict warnings in the profile
*This function can be called when creation or accepting meeting documents
*The AutoProcessNotices agent ALWAYS calls this routine
*This routine determines if a meeting time fits within the profile settings and is available
%END REM
Dim calentries As NotesDocumentCollection
Dim localView As NotesView
Dim othernote As NotesDocument
Dim tr As NotesDateRange
Dim sdt As NotesDateTime
Dim edt As NotesDateTime
Dim intl As NotesInternational
Dim nstartitem As NotesItem 'note startdatetime item
Dim nenditem As NotesItem 'note enddatetime item
Dim ostartitem As NotesItem 'othernote startdatetime item
Dim oenditem As NotesItem 'othernote enddatetime item
Dim nstartdt As NotesDateTime
Dim nenddt As NotesDateTime
Dim ostartdt As NotesDateTime
Dim oenddt As NotesDateTime
'first, check the profile settings -> if there is a conflict in the profile, then we don't need to check with existing appointments
'we only do this check if the autoprocessing agent is running
If (IsAgentProcessing) Then
If(CheckProfileTimes(note)) Then
CheckIfConflictExists = True
Exit Function
End If
End If
On Error Goto ErrorRoutine
Set localView = db.GetView("Calendar")
Set intl = session.International
CheckIfConflictExists = False
'get all of the documents that fit under the invited day
'othernote refers to existing appointments
Set nstartitem = note.GetFirstItem("StartDateTime")
Set nenditem = note.GetFirstItem("EndDateTime")
Set sdt = New NotesDateTime(nstartitem.DateTimeValue.DateOnly & " 00" & intl.TimeSep & "00" & intl.TimeSep & "01")
'if this is an event, use the enddatetime date
If (note.AppointmentType(0) = "2") Then
Set edt = New NotesDateTime(nenditem.DateTimeValue.DateOnly & " 23" & intl.TimeSep & "59" & intl.TimeSep & "59")
Else
Set edt = New NotesDateTime(nstartitem.DateTimeValue.DateOnly & " 23" & intl.TimeSep & "59" & intl.TimeSep & "59")
End If
Set tr = session.CreateDateRange
Set tr.StartDateTime = sdt
Set tr.EndDateTime = edt
Set nstartdt = New NotesDateTime(sdt.DateOnly & " " & nstartitem.DateTimeValue.TimeOnly)
Set nenddt = New NotesDateTime(sdt.DateOnly & " " & nenditem.DateTimeValue.TimeOnly)
'if the agent is running, we should mark the OrgDontDoubleBook item on the note
If (IsAgentProcessing) Then note.OrgDontDoubleBook = "1"
Set calentries = localView.GetAllDocumentsByKey(tr, False)
Set othernote = calentries.GetFirstDocument
Do While Not(othernote Is Nothing)
If (othernote.Form(0) <> "Task") Then
Set ostartitem = othernote.GetFirstItem("StartDateTime")
check to see if
the invited StartDateTime falls between a scheduled appointment,
the invited EndDateTime falls between a scheduled appointment,
the invitation surrounds an existing appointment
date1 = the Starting time of the othernote; date2 = the ending time of the othernote; dateItem = the starttime of the invitation,dateItem2 = the endtime of the invitation
%END REM
Set oenditem = othernote.GetFirstItem("EndDateTime")
'if the other document is not busy (i.e. is PencilledIn), then we don't need to check it
If (othernote.BookFreeTime(0) <> "1") Then
If(ProcessConflict(othernote)) Then
'we need to instantiate the date/time objects correctly
'othernote could be an event so the date portion of StartDateTime and EndDateTime are incorrect, but NIF return them to us
Set ostartdt = New NotesDateTime(nstartdt.DAteOnly & " " & ostartitem.DateTimeValue.TimeOnly)
Set oenddt = New NotesDateTime(nstartdt.DAteOnly & " " & oenditem.DateTimeValue.TimeOnly)
If ((nstartdt.TimeDifference(ostartdt) >= 0) And (oenddt.TimeDifference(nstartdt) > 0 )) Or _
((nenddt.TimeDifference(ostartdt) > 0) And (oenddt.TimeDifference(nenddt) >= 0 )) Or _
((ostartdt.TimeDifference(nstartdt) >= 0) And (nenddt.TimeDifference(oenddt) > 0 )) Then
'if the autoprocessing agent is running, simply return
If (IsAgentProcessing) Then
CheckIfConflictExists = True
Exit Do
End If
If (note.Form(0) = "Appointment") Then
MessageText$ = "Do you want to schedule this appointment anyway?"
Else
MessageText$ = "Do you want to Accept anyway?"
End If
If Messagebox("There is already an appointment in this time slot. " & MessageText$, _
MB_YESNO, "Conflict") = IDNO Then
CheckIfConflictExists = True
Exit Do 'we exit so that we don't waste time iterating through the view
Else
Exit Do 'we exit so that we don't waste time iterating through the view
End If
End If
End If
End If
End If
Set othernote = calentries.GetNextDocument(othernote)
Loop
Exit Function
ErrorRoutine:
Messagebox Error & " (CheckIfConflictExists)"
Exit Function
End Function
'++LotusScript Development Environment:2:2:AddInviteeComment:1:8
Sub AddInviteeComment
*This routine is called to include invitee's comments
%END REM
notice.IncludeComment = "1"
notice.Comments = note.Comments
End Sub
'++LotusScript Development Environment:2:2:CreateNoticeDocument:1:8
Sub CreateNoticeDocument(Subject As String,NoticeType As String,ViewIcon As Integer,Mode As Integer)
*This routine creates the outgoing notice document, either from the chair to the invitee's
or from an invitee to a chair
*This routine adds standard fields to the notice regardless of the type of notice
*Parameters
Subject -> value of subject item
NoticeType -> type of notice being sent
ViewIcon -> icon to display in view
Mode -> 1 = chair is sending, 2 = invitee is sending
%END REM
Dim ChairItem As NotesItem
Dim dummydoc As NotesDocument
'create the notice object
Set notice = New NotesDocument(db)
'determine the context of the current note
Context = GetContext
Select Case Context
Case 1,3
'1 = non-repeat notice, 3 = repeat notice -> make the notice doc a response to the parentnote
If(note.HasItem("ApptUNID")) Then
If(note.ApptUNID(0) <> parentnote.UniversalID) Then
Set dummydoc = New NotesDocument(db)
dummydoc.UniversalID = note.ApptUNID(0)
Call notice.MakeResponse(dummydoc)
notice.ApptUNID = note.ApptUNID
Else
Call notice.MakeResponse(parentnote)
notice.ApptUNID = parentnote.UniversalID
End If
Else
Call notice.MakeResponse(parentnote)
notice.ApptUNID = parentnote.UniversalID
End If
Case 2,4
'2 = repeat instance, 4 = non-repeat instance -> make the notice doc a response to the current note
If(note.HasItem("ApptUNID")) Then
If(note.ApptUNID(0) <> note.UniversalID) Then
Set dummydoc = New NotesDocument(db)
dummydoc.UniversalID = note.ApptUNID(0)
Call notice.MakeResponse(dummydoc)
notice.ApptUNID = note.ApptUNID
Else
Call notice.MakeResponse(note)
notice.ApptUNID = note.UniversalID
End If
Else
Call notice.MakeResponse(note)
notice.ApptUNID = note.UniversalID
End If
End Select
Call notice.ReplaceItemValue("$RefOptions","1")
'add default items regardless of notice type
notice.Form = "Notice"
notice.StartDate = note.StartDate
notice.StartDateTime = note.StartDateTime
notice.EndDateTime = note.EndDateTime
notice.AppointmentType = "3"
notice.SequenceNum = note.SequenceNum(0)
notice.ExcludeFromView = "D"
notice.Room = note.Room
notice.Principal = Owner
notice.NoticeType = NoticeType
notice.Broadcast = note.Broadcast
'add the required attendees -> we need to know what context the current document is in
'this is because non-repeat notices, repeat notices, and non-repeat appointments have this information
'repeat instances need to get this info from their parent
Select Case Context
Case 1,3,4
'1 = non-repeat notice,3 = repeat notice,4 = non-repeat instance -> get the values from the current note
notice.RequiredAttendees = note.RequiredAttendees
notice.OptionalAttendees = note.OptionalAttendees
Case 2
'the repeat instance document does not have this information -> get it from the parent
The source View cannot have documents moved out of it. This d
ocument will be copied into the new Folder.
[<BR><BR>]
tmpCurFolderIsView
1S2S
New folder options:
tmpNewFolderOptions
Move document to new folder|1Copy document to new folder|2
0S0E
Create Folder
List of folders:
dispFolderList
dispFolderList
[<b> </b>]
[<b>  </b>]
The current document can be moved or copied into and out of any folder.
The current document can only be copied out of a view.
Create a folder by entering a name and pressing the button. Only users with at least "Designer" access rights can create new folders. The "Maximum Internet browser access" setting for the mail file must also be set to "Designer" or above. The system administrator must set these values for you.
Click a link to the left of a folder's name to move or copy the current document into that folder.
Navigate to a folder by clicking it's name.
Remove a folder by clicking on the link to the right of that folder's name.
Documents that had been in a deleted folder remain unharmed in all their other folders and views.
All
of the
documents in the mail file are listed in the All Documents view.
Documents moved or copied into the Trash folder can be deleted by pressing the Empty Trash link.
Documents that are in the Trash will continue to be listed in views until the Trash is emptied.
To remove a document from the Trash, select the document while in the Trash view, click the File button, then click the Remove From Trash link.
Hidden w/ HTML tag in help description field:
tmpUNIDnote[<TYPE=hidden >]
tmpViewName[<TYPE=hidden >]
tmpCurFolderIsView[<TYPE=hidden >]
Categori_ze$
_Edit Document
Send Docu_ment
_Forward
_Move To Folder...
_Remove From Folder
In Box*
($InBox)
Calendar
1S2S8S12S14S
path"
/($Calendar)?OpenView&Grid=
CalendarProfile
wCalGridType
0R3S4S5S6S7S8S12S
Meetings.
($Meetings)
To Do
($ToDo)
All Views
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$$Script_O
$$ScriptName
$BODY
$ACTIONS
*** Message Not Delivered ***
NonDelivery Report
$HideMailHeader
0S0E
Delivery Failure Report
Your document:
Subject
OriginalSubject
was not delivered to
IntendedRecipient
IntendedRecipient
0S0E
IntendedRecipient
because:
FailureReason
FailureReason
What should you do?
You can resend the undeliverable document to the recipients listed above by choosing the Resend button.
Once you have resent the document you may delete this Delivery Failure Report.
If resending the document is not successful you will receive a new failure report
Unless you receive other Delivery Failure Reports, the document was successfully delivered to all other recipients.
Routing Path:
RouteServers
RouteServersServers along route.
[<b>  </b>]
From:[<b> </b>]
tmpDisplayFrom_NoLogo
PostedDateh
PostedDate
7S9S
tmpDisplayDate_NoLogoTime/date memo was created or mailed.
'There has to be something in the address lookup field so if the preferences doesn't have anything, we'll default to names.nsf
If note.addressbooks(0) = "" Then
note.addressbooks = NABEntry("names.nsf")
End If
'If this is a new temporary document, move it to the trash folder
If Instr(currentmemo.subject(0), "IN TRASH")>0 Then currentmemo.putinfolder("($Trash)")
Exit Sub
ErrorRoutine:
Messagebox Error & " (wAddressOpen)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:Terminate:1:10
Sub Terminate
End Sub
'++LotusScript Development Environment:2:1:NABEntry:1:8
Function NABEntry(NABFilename As String) As String
'pull the title of the address book and put it as the display string in the field
Dim newnab As notesdatabase
If NABFilename <> "" Then
Set newnab = New notesdatabase("", NABFilename)
If newnab.isopen Then
NABEntry = newnab.title + "|" + NABFilename
Else
NABEntry = NABFilename
End If
End If
End Function
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$AssistType
$AssistLastRun
$AssistDocCount
$AssistFlags
$AssistTrigger
$AssistInfo
$AssistQuery
$AssistAction
$AssistAction_Ex
Invitation from
Principal
1S2S6S
"Small Fonts
'++LotusScript Development Environment:2:5:(Options):0:74
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Declare Sub Postmodechange(Source As Notesuidocument)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Click(Source As Button)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:Postopen:1:8
Sub Postopen(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:8
Sub Querysave(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Queryopen:1:8
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Postmodechange:1:8
Sub Postmodechange(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:8
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Messagebox "(Globals) Notice Queryclose"
If (ErrorStatus > 0) Then
continue = False
ErrorStatus = 0
End If
If ((Action = "Accept") Or (Action = "AddCalendar")) And note.HasItem("RepeatFor") Then note.Subject = "Repeat parent for " & note.Subject(0) & " - do not delete"
ws.ViewRefresh
End Sub
'++LotusScript Development Environment:2:2:Click:1:8
Sub Click(Source As Button)
End Sub
Notice'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Postrecalc(Source As Notesuidocument)
Declare Sub Initialize
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Queryopen From Source Call Queryopen
On Event Querysave From Source Call Querysave
On Event Queryclose From Source Call Queryclose
On Event Postopen From Source Call Postopen
On Event Postrecalc From Source Call Postrecalc
End Sub
'++LotusScript Development Environment:2:2:Queryopen:1:12
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Postrecalc:1:12
Sub Postrecalc(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Initialize:1:10
button to save the time, date and duration selections to the Calendar Entry currently being editted.
Click on the "
Cancel time ...
" button to return to the Calendar Entry without the time, date and duration selections.
Click on the "
Refresh ...
" button to update the free time grid and suggestion list according to the current time, date and duration selections.
Select "
by day
" to display an entire week in the free time grid.
Select "
by person
" to display each attendee's free time schedule in the grid.
When there is a schedule conflict the "
Recommended Times
" list provides meeting times
suggestions
. Select a suggested meeting time, or modify the meeting's date, time and duration from the other controls. A recommended meeting time suggestion and changes to the date, time, or duration controls can be combined.
Hidden w/ HTML tag in help description field:
IsFindTime[<TYPE=hidden >]
HasFoundTime[<TYPE=hidden >]
IsAddressing[<TYPE=hidden >]
IsNewDoc[<TYPE=hidden >]
Chair[<TYPE=hidden >]
tmpOwner[<TYPE=hidden >]
AppointmentType[<TYPE=hidden >]
tmpDispAppType[<TYPE=hidden >]
tmpSubject[<TYPE=hidden >]
tmpBody[<TYPE=hidden >]
tmpSendTo2[<TYPE=hidden >]
tmpCopyTo2[<TYPE=hidden >]
tmpSendTo3[<TYPE=hidden >]
tmpCopyTo3[<TYPE=hidden >]
tmpRoom2[<TYPE=hidden >]
tmpDateOrg[<TYPE=hidden >]
tmpTimeOrg[<TYPE=hidden >]
tmpDurationOrg[<TYPE=hidden >]
tmpBookFreeTime[<TYPE=hidden >]
tmpOrgConfidential[<TYPE=hidden >]
tmpBroadcast[<TYPE=hidden >]
tmpImportance[<TYPE=hidden >]
tmpDeliveryPriority[<TYPE=hidden >]
tmpDeliveryReport[<TYPE=hidden >]
tmpDateRef[<TYPE=hidden >]
tmpTimeRef[<TYPE=hidden >]
tmpDurationRef[<TYPE=hidden >]
_Forward
_Move to Folder...
_Edit Document
Attendees
Principal
RepeatIds
4S5S6S7R11S12S13S14S15S17S18S
Categori_zep
Send Docu_ment
_Remove from Folder...
Meeting
1S2S8S12S14S
path"
/Appointment?OpenForm
0R3S4S5S6S
Addressi
OldSubject
Subject
Subject
IN TRASH - TEMPORARY DOCUMENT
Subject
0R1S2S3S
IsAddressing
0R1S
0R1S10S14S16S23S
0RR4S
path"
/wAddressInvite?OpenForm&
0R3S4S5S6S7S8S15S17S18Sr
AppointmentType
IsFindTime
tmpOwner
Chair
1S2S3S4S5S6S7S8S9S10S
Find Free Time(
tmpChair
Chair
1S2S6S
Domino
RefreshFreeTimeGrid
tmpGridField
tmpMeetingTimesCtrl
tmpMessages
StartDate
StartTime
DurationMin
tmpChair
SendTo
tmpSendTo
CopyTo
tmpCopyTo
0R4S6S8S10S12S14S16S18S20S22S24S28S
IsFindTime
0RR1S2S3S
HasFoundTime
0R1S2S3S
tmpGridFormat
0R1S2S3S
tmpDate
StartDate
0RR1S2S3S
tmpTime
StartTime
0R1S2S3S
tmpDuration
DurationMin
0R1S2S3S
tmpDateRef
StartDate
0RR1S2S3S
tmpTimeRef
StartTime
0R1S2S3S
tmpDurationRef
DurationMin
0R1S2S3S
tmpSendTo2
SendTo^
0RR1S2S3S
tmpCopyTo2
CopyTo^
0R1S2S3S
tmpSendTo3
tmpSendTo
0R1S2S3S
tmpCopyTo3
tmpCopyTo
0R1S2S3S
tmpDateOrg
StartDate
0RR1S2S3S
tmpTimeOrg
StartTime
0R1S2S3S
tmpDurationOrg
DurationMin
0R1S2S3S
tmpSubject
Subject
0R1S2S3S
tmpBody
0R1S2S3S
tmpRoom2
tmpRoom
0R1S2S3S
tmpBookFreeTime
BookFreeTime
0R1S2S3S
tmpOrgConfidential
OrgConfidential
0R1S2S3S
tmpBroadcast
Broadcast
0R1S2S3S
tmpImportance
Importance
0R1S2S3S
tmpDeliveryPriority
DeliveryPriority
0R1S2S3S
tmpDeliveryReport
DeliveryReport
0R1S2S3S
0RRr
AppointmentType
IsFindTime
tmpOwner
Chair
1S2S3S4S5S6S7S8S9S10S
Edit
0S0E
tmpOwner
Chair
1S2S
Trashe
1S2S8S12S14S
/wCommand?OpenAgent&ToTrash=
&From="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
1S2S8S12S14S
/wFolders?OpenForm&UNID=
&View="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
In Box*
($InBox)
IsFindTime
1S2S
Calendar
1S2S8S12S14S
&Grid=
CalendarProfile
wCalGridType
0R1S2S3S4S8S
path"
/($Calendar)?OpenView
args"
0R3S4S5S6S7S8S
IsFindTime
1S2S
Meetings.
($Meetings)
IsFindTime
1S2S
All Views
IsFindTime
1S2S
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
CompletedOn
EndDate
CalendarDate_Time___Start
CalendarDate_Time___End
CalendarDates
CalendarDate
RepeatDates
CalendarDateTime
EndDateTime
$NoPurge
EndTime
StartEndTime
StartDateTime
$FormPublicAccess
TimeRange
WebCalEntryTypeChanged
ReminderTime
$TITLE
$INFO
$WINDOWTITLE
$Script
$$Script_O
$$ScriptName
$$FormScript
$$$FormScript_O
_ViewIcon
Duration
$BODY
$ACTIONS
$PublicAccess
Times New Roman
VersionOpt|
6S7S9S14S
$VersionOpt
0R1S2S3S
SavedOnce
0R1S2S3S
PostedDate(
0R1S2S3S
DeliveredDate
0R1S2S3S
$AutoEditMode
0R1S2S3S
MailSaveOptions
0R1S2S3S
VersionOpt
0R4S
New Memo
Subject
Subject
Subject
4S6S12S13S14S15S17S21S23S25S26S28S
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
'++LotusScript Development Environment:2:5:(Forward):0:1
'++LotusScript Development Environment:2:5:(Declarations):0:2
Memo'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Postmodechange(Source As Notesuidocument)
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Initialize
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Querysave From Source Call Querysave
On Event Queryclose From Source Call Queryclose
On Event Postmodechange From Source Call Postmodechange
On Event Postopen From Source Call Postopen
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Postmodechange:1:12
Sub Postmodechange(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Initialize:1:10
On failure|BConfirm delivery|CTrace entire path|TNone|N
DeliveryReport
DeliveryPriority
High|HNormal|NLow|L
Delivery Priority
0S0E
Submit
[<BR><BR><BR>]
[<b>  </b>]Tips
Click on the
Address
button to search through your address books.
The
Trash
button will move this document into the Trash folder.
Some web browsers do not support adding
file attachments
to documents. In such cases, the file attachment control may appear as an edit control. Any text entered in that edit control will not be included in your mail message.
Telephoned|TPlease Call|PWill Call Again|WReturned Call|RWas In|IWill Return|LLeft Package|KPlease See Me|MUrgent|N
Message:
Body[<ROWS="5" COLS="60" WRAP=VIRTUAL>]
Phone Message from
PhoneCaller
1S2S
Subject
[<BR>]File Attachments:
0S0E
[<b>  </b>]Mail Options[<BR>]
Importance
High|1Normal|2Low|3
Importance
DeliveryReport
On failure|BConfirm delivery|CTrace entire path|TNone|N
DeliveryReport
DeliveryPriority
High|HNormal|NLow|L
Delivery Priority
0S0E
Submit
[<BR><BR><BR>]
[<b>  </b>]Tips
Click on the
Address
button to search through your address books.
The
Trash
button will move this document into the Trash folder.
Some web browsers do not support adding
file attachments
to documents. In such cases, the file attachment control may appear as an edit control. Any text entered in that edit control will not be included in your mail message.
Hidden w/ HTML tag in help description field:
Path_Info
tmpPath_Info[<TYPE=hidden >]
Edit Document
Edit
0S0E
Reply0(
Reply
Address
OldSubject
Subject
Subject
IN TRASH - TEMPORARY DOCUMENT
Subject
0R1S2S3S
tmpSendOptions
0R1S
0R1S10S14S16S23S
0R4S
path"
/wAddress?OpenForm&
0R3S4S5S6S7S8S15S17S18S
Trash
1S2S8S12S14S
/wCommand?OpenAgent&ToTrash=
&From="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
1S2S8S12S14S
/wFolders?OpenForm&UNID=
&View="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
_Move To Folder...
_Forward
_Remove From Folder...
Categori_ze
SSend
In Box*
($Inbox)
Calendar
1S2S8S12S14S
path"
/($Calendar)?OpenView&Grid=
CalendarProfile
wCalGridType
0R3S4S5S6S7S8S12S
Meetings.
($Meetings)
To Do
($ToDo)
All ViewsS"
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
?k`a<
$$FormPostOpenAction
$TypeIcon
ExpireDate
ReplyDate
ComposedDate
$TITLE
$INFO
$WINDOWTITLE
$Script
$$Script_O
$$ScriptName
$$FormScript
$$$FormScript_O
$BODY
$ACTIONS
Times New Roman
VersionOpt|
6S7S9S14S
$VersionOpt
0R1S2S3S
SavedOnce
0R1S2S3S
PostedDate(
0R1S2S3S
DeliveredDate
0R1S2S3S
$AutoEditMode
0R1S2S3S
MailSaveOptions
0R1S2S3S
VersionOpt
0R4S
InheritedBody
New Reply
Subject
Subject
Subject
4S6S12S13S14S15S17S21S23S25S26S28S
'++LotusScript Development Environment:2:5:(Options):0:74
'++LotusScript Development Environment:2:5:(Forward):0:1
'++LotusScript Development Environment:2:5:(Declarations):0:2
Reply'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Postmodechange(Source As Notesuidocument)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Postopen From Source Call Postopen
On Event Querysave From Source Call Querysave
On Event Queryclose From Source Call Queryclose
On Event Postmodechange From Source Call Postmodechange
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Postmodechange:1:12
On failure|BConfirm delivery|CTrace entire path|TNone|N
DeliveryReport
DeliveryPriority
High|HNormal|NLow|L
Delivery Priority
0S0E
Submit
[<BR><BR><BR>]
[<b>  </b>]Tips
Click on the
Address
button to search through your address books.
The
Trash
button will move this document into the Trash folder.
Some web browsers do not support adding
file attachments
to documents. In such cases, the file attachment control may appear as an edit control. Any text entered in that edit control will not be included in your mail message.
Hidden w/ HTML tag in help description field:
tmpAssign
&Assign
1S2S
Path_Info
tmpAssign
tmpAssign
0R1S6S11S12S14S16S
tmpAssignTask[<TYPE=hidden >]
Path_Info
tmpPath_Info[<TYPE=hidden >]
tmpTask
&Task
1S2S
Path_Info
tmpTask
tmpTask
0R1S6S11S12S14S16S
tmpBackToTask[<TYPE=hidden >]
Edit Document
Memo&
Edit
0S0E
Reply
Reply
Address
OldSubject
Subject
Subject
IN TRASH - TEMPORARY DOCUMENT
Subject
0R1S2S3S
tmpSendOptions
0R1S
0R1S10S14S16S23S
0R4S
path"
/wAddress?OpenForm&
0R3S4S5S6S7S8S15S17S18S
Trashi
1S2S8S12S14S
/wCommand?OpenAgent&ToTrash=
&From="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
1S2S8S12S14S
/wFolders?OpenForm&UNID=
&View="
0R1S2S3S4S11S13S15S16S
Path_Info
Path_Info
0R1S2S6S10S11S15S
view1
0R1S2S3S10S14S18S21S
view2
view1
view1
view1
0R1S2S3S10S14S18S21S
path"
view2
0RR3S4S5S6S7S8S
_Move To Folder...
_Forward
_Remove From Folder...
Categori_ze
SSend
In Box*
($InBox)
Calendar
1S2S8S12S14S
path"
/($Calendar)?OpenView&Grid=
CalendarProfile
wCalGridType
0R3S4S5S6S7S8S12S
Meetings.
($Meetings)
To Do
($ToDo)
All Views
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$$FormPostOpenAction
ExpireDate
ReplyDate
$TypeIcon
ReplyNumber
ComposedDate
$SCRIPTOBJ_25
$TITLE
$AUTOLAUNCH
$INFO
$WINDOWTITLE
$Script
$$Script_O
$$ScriptName
$$FormScript
$$$FormScript_O
$BODY
$ACTIONS
wGuide
Hidden:
SaveOptions
Work around for bug in $$Return related to @DbName
0R6S10S12S
PathAndName
PathAndName
/($Inbox)]"
1S2S3S4S
$$Return
[<b> </b>]
[<b>  </b>]Guide
Security
CGM Image
When accessing your mail file from a public workstation, always quit the web browser when you are done. This will clear your authentication with the Domino server and prevent unauthorized access to your mail file.
Preferences
owner of the mail file must be specified
before the Memo, Reply, Phone Message, Task, Calendar Entry and RSVP documents will work correctly.
Main Views
All views in your mail file have a similar format. The left column of the view includes links to common actions. Click these links to create new documents, navigate to different views, or access the preference page.
The right side of each view contains the list of documents in that view. Click on a document link to display that document.
Use the Begin and End links to move to the beginning or end of the current view. Use the Previous and Next links to display the previous or next page of documents in the view.
Action Bar
Most documents have an Action Bar of buttons at the top of the page. When displaying a document, use the up and down arrows to navigate to the next document in the current view without returning to that view.
A Memo is the basic email document. You can create and edit Memos, and then choose to save them as drafts, send them, or send and save a copy.
Before you send a message you must fill in the following information:
- The primary recipients of the message. The content of the message is directed to them or they must take action on this message.
- Recipients who will receive a copy of the message, but are not usually required to take action on it. Filling in this field is optional.
- Recipients who will receive a blind copy of this message. Filling in this field is optional.
Reply
Use this form to reply to a message that you have received.[<BR><BR>]
Meeting (Calendar Entry)
There are five flavors of Meeting documents. Appointments, Events, Reminders and Anniversaries are personal calendar entries, while Invitations are meetings that include other people.
By saving an Invitation that has required or optional attendees, those attendees will receive a mailed Invitation. The originator of an Invitation is considered the chairperson for that meeting.
The attendees may accept or decline an Invitation by selecting the "RSVP" button on their Invitation.
If the chairperson changes the date or beginning time of the meeting, all people invited will receive a reschedule notice.
The chairperson may choose to add additional attendees by editing the original meeting document and adding their names.
The chairperson has the option to display the RSVP status of invitees, send a confirmation notice or cancel the meeting.
Tasks
Use this form to remind yourself of something that you need to do, or to ask another person to do something for you. If you send a Task to another Mail user, or to several users, they will be able to notify you when they have completed the Task. A special view (see To Do view below) has been provided to help you organize your Tasks and the Tasks that you have assigned to other people.
Folders
Views
The following views and folders are provided for you:
Inbox
- Messages that have been sent to you by another Mail user will appear here.
Calendar
- This view looks like a desktop calendar. Appointments you have scheduled will be displayed in two day, one week, two week, or one month calendar pages.
Drafts
- Messages that you have created and saved, but have not yet sent, will appear here.
- Messages will appear here after you have sent them. You can choose to have messages saved here automatically if you like.
Trash
- Messages that you have marked for deletion will appear here.
To Do
- Tasks that you have created for yourself and Tasks that you have assigned to other people will appear here. This view will also help you keep track of which Tasks have been completed and when. Make sure that each Task is categorized correctly by clicking on the Update link in this view.
Meetings
- Invitations to meetings and responses that people have returned to you will appear here.
Folders -
Folders are special types of views. Documents can be moved in and out of any folder. Views, on the other hand, include documents according to a view selection formula. For example, the Calendar view will only display documents that are calendar entries and never display other kinds of documents. The Inbox and trash folders are special predefined folders.
File Utilities
Create and destroy folders, move and copy documents in and out of folders, and copy documents out of views by clicking on the File button at the top of each document.
Trash Button
Move a document into the Trash folder by clicking its action bar "Trash" button. Delete all documents in the Trash folder by clicking on a view's "Empty Trash" link.
To Do View
Click on the Update link in the top left corner to ensure that the status of each Task is up-to-date. The start date and due dates are compared to determine each Tasks' status.
Phone Message
Use this form to record a phone message for another Mail users.
File Attachments
Some web browsers do not support adding file attachments to documents. In such cases, the file attachment control may appear as an edit control. Any text entered in that edit control will not be included in your mail message.
[<br> <br>]
0S0E
Return to the In Box
Categori_ze
_Edit Document
Send Docu_ment
_Forward
_Move To Folder...
_Remove From Folder
In Box*
($InBox)
Calendar
1S2S8S12S14S
path"
/($Calendar)?OpenView&Grid=
CalendarProfile
wCalGridType
0R3S4S5S6S7S8S12S
Meetings.
($Meetings)
To Do
($ToDo)
All Views
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$$ScriptName
$BODY
$ACTIONS
Started running agent '_Calendar Tools\Calendar Profile... | Calendar Profile' on 03/10/97 11:01:08 AM
1 document(s) were modified by formula
Done running agent '_Calendar Tools\Calendar Profile... | Calendar Profile' on 03/10/97 11:01:08 AM
CalendarProfile
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
#>9Wf
$TITLE
$AssistType
$AssistLastRun
$AssistDocCount
$AssistFlags
$AssistTrigger
$AssistInfo
$AssistQuery
$AssistAction
$AssistAction_Ex
$PublicAccess
Started running agent 'Mail Tools\Create Stationery... | CreateStationery' on 03/10/97 10:55:04 AM
1 document(s) were modified by formula
Done running agent 'Mail Tools\Create Stationery... | CreateStationery' on 03/10/97 10:55:06 AM
TheForm
Create Stationery
Which Form would you like to use to create this Stationery message?
Personal Stationery
1S2S6S8S10S12S13S14S
MailStEd
0R1S2S3S
TheForm
0RR4S
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$Formula
$TYPE
$Operation
$Scan
&Arial
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
Owner
Calendar Profile
Calendar Profile for
Owner
3S4S5S6S7S8S9S10S'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Terminate
Declare Function IsValidDateRange(FieldName As String) As Integer
'++LotusScript Development Environment:2:5:(Declarations):0:10
Dim uidoc As NotesUIDocument
Dim session As NotesSession
Dim trdr As NotesDateRange
Dim note As NotesDocument
Dim db As NotesDatabase
Dim acl As NotesAcl
Dim aclentry As NotesAclEntry
Dim namelookup As NotesName
Dim DoNotEdit As Integer
'++LotusScript Development Environment:2:2:Terminate:1:10
Sub Terminate
End Sub
'++LotusScript Development Environment:2:1:IsValidDateRange:1:8
Function IsValidDateRange(FieldName As String) As Integer
'returns true if the given date range is valid, false otherwise
Dim datetime As String
On Error Goto ErrorRoutine
IsValidDateRange = True
datetime = uidoc.FieldGetText(FieldName)
trdr.Text = datetime
Exit Function
ErrorRoutine:
IsValidDateRange = False
Exit Function
End Function
wPreferences'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Querysave From Source Call Querysave
On Event Postopen From Source Call Postopen
On Event Querymodechange From Source Call Querymodechange
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
Set note = source.Document
Set session = New NotesSession
Set trdr = session.CreateDateRange
Set uidoc = source
Set db = session.CurrentDatabase
'if you are less than an Author you cannot edit
If db.CurrentAccessLevel < ACLLEVEL_AUTHOR Then
DoNotEdit = True
source.EditMode = False
End If
If source.EditMode Then Call source.Refresh
End Sub
'++LotusScript Development Environment:2:2:Querymodechange:1:12
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
If DoNotEdit And source.EditMode = False Then continue = False
End Sub
UserAccess
1S2S11S
AutoProcessMeetings
AutoProcessMeetings
0RR1S2S3S
AutoProcessMeetings
AutoProcessNotices
UserAccess
AutoProcessMeetings
Autoprocess
You are not authorized to enable the Autoprocessing agent. Please contact a designer or manager of this database.
AutoProcessNotices
AutoProcessMeetings
AutoProcessMeetings
AutoProcessNotices
UserAccess
AutoProcessMeetings
Autoprocess
You are not authorized to disable the Autoprocessing agent. Please contact a designer or manager of this database.
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Exiting(Source As Field)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As FIELD
Set Source = Bind(Objectname_)
On Event Exiting From Source Call Exiting
End Sub
'++LotusScript Development Environment:2:2:Exiting:1:12
Sub Exiting(Source As Field)
End Sub
[<b> </b>]
*.PCX
TIFF 5.0
.0/6.1
*.WPD;*.W
_ITIFF
[<b>  </b>]User Preferences
[<BR>]
0S0E
Save Preferences
[<BR><BR>]Mail File Owner:
Owner[<size=50>]
You are currently logged in as "
CurrentAcount
If you are the mail file owner, you can copy your account name as it appears here into the Mail File Owner field.
The Mail File Owner name must be entered in Notes canonical format. Please refer to the "Tips" section below if you should be listed as the owner of this file, but are not.
Default Mail setting:
DefaultMailOpt
Send Only|1Send and Save|2Save as Draft|3
EnableTrashIcon
Tag documents that have been moved to the trash folder.|1
[<BR><BR>]
AutoProcessMeetings
Meetings|1
Autoprocess Meetings only from the following people:
</TD><TD WIDTH="99%">Blind Copy To:</TD></TR></TABLE><!-- end #1.2.3 ... spacer gif to follow -->
!!!)))111999BBBJJJRRRZZZccckkksss
ssc11
B9{1)
cR1skZ
{sc11)
{sBsk9cZ!
11)ccR
kskZcZ
!1k)B
99RZZ
91kB1
RJsB9k
1.26 0.22 Ella
</TD><TD WIDTH="99%">
tmpBlindCopyTo
dispBlindCopyTo
</TD></TR></TABLE><!-- end #1.2 copy to buttons --></TD></TR></TABLE><!-- end #1 -->]
[<b>  </b>]Tips
Select the target
Address Book
to be searched. You may add to the list of available address books from the Preference page.
Enter the
Target Name
to search for, or just the first few letters of a name. Then click on the
Search for Target Name
button to initiate the search.
Select one or more person or group names from the
Address List
. Then click on the
Send To
Copy To
Blind Copy To
buttons to add to the list of recipients for the current mail message.
The
Maximum Entries
control allows you to select the maximum number of entries to be
displayed
in the Address List.
Use the
Display Previous Entries
and the
Display Next Entries
buttons to reload the Address List with the previous or next "maximum entries" worth of addresses.
Return your selection to the current mail message by clicking on the
Return with address selections
button.
Return to the current mail message without these selections by clicking on the
Cancel new address selections
button.
AbortGracefully
1S2S
Sorry, but the Address Finder does not understand that action.
Hidden w/ HTML tag in help description field:
Domino
LoadAddressListByIndex
TargetNAB
tmpAddressList
tmpMaxListed
4S6S8S10S12S
tmpCurIndex[<TYPE=hidden >]
tmpCurIndex
tmpMaxListedX
2S6S7S11StmpNextIndex[<TYPE=hidden >]
tmpSendTo
0S0E
tmpSendTo[<TYPE=hidden >]
tmpCopyTo[<TYPE=hidden >]
tmpBlindCopyTo[<TYPE=hidden >]
memounid[<TYPE=hidden >]
AddressBooks[<TYPE=hidden >]
OrigSendTo[<TYPE=hidden >]
OrigCopyTo[<TYPE=hidden >]
OrigBlindCopyTo[<TYPE=hidden >]
AbortGracefully[<TYPE=hidden >]
Edit Document
_Forward
_Remove From Folder...
Categori_zet
SSendt
In Box*
($InBox)
AbortGracefully
1S2S
Calendar
1S2S8S12S14S
path"
/($Calendar)?OpenView&Grid=
CalendarProfile
wCalGridType
0R3S4S5S6S7S8S12S0
AbortGracefully
1S2S
Meetings.
($Meetings)
AbortGracefully
1S2S
To Do
($ToDo)
AbortGracefully
1S2S
All Views
AbortGracefully
1S2S
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$$FormPostOpenAction
$TypeIcon
ExpireDate
ReplyDate
ComposedDate
$SCRIPTOBJ_25
$TITLE
$INFO
$WINDOWTITLE
$Script
$$Script_O
$$ScriptName
$$FormScript
$$$FormScript_O
$BODY
$ACTIONS
'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Initialize
Declare Sub Terminate
Declare Sub Main
Declare Sub GetProfileSettings
Declare Sub CreateLogDocument
Declare Sub ProcessDocuments
Declare Sub EvaluateDocument
Declare Sub ArchiveDocument
Declare Sub FixReaderNames
Declare Sub AddDocumentToLog
Declare Sub CloseLogDocument
Declare Sub MarkLogDocuments
'++LotusScript Development Environment:2:5:(Declarations):0:10
'%INCLUDE "lserr.lss"
'%INCLUDE "lsxbeerr.lss"
Const MAXARCHIVEITEMS = 50
Dim session As NotesSession
Dim dbSource As NotesDatabase
Dim dbArchive As NotesDatabase
Dim docSource As NotesDocument
Dim docArchive As NotesDocument
Dim docLog As NotesDocument
Dim docProfile As NotesDocument
Dim viewArchive As NotesView
Dim dtNow As NotesDateTime
Dim dtExpired As NotesDateTime
Dim dtDocument As NotesDateTime
Dim dtCompare As NotesDateTime
Dim docsCollection As NotesDocumentCollection
Dim rtitem As NotesRichTextItem
Dim item As NotesItem
Dim nidArray() As String
Dim SourcePath As String
Dim SourceServer As String
Dim ArchiveServer As String
Dim ArchivePath As String
Dim ArchiveLog As String
Dim IncludeDocLinks As String
Dim ArchiveExpired As String
Dim ArchiveInactive As String
Dim ExpiredLife As Integer
Dim DocumentLife As Integer
Dim nLogItems As Integer
Dim numDocs As Integer
Dim numDocsArchived As Integer
Dim i As Integer
Dim DoNotRun As Variant
Dim DocCanBeArchived As Variant
'++LotusScript Development Environment:2:2:Initialize:1:10
Sub Initialize
'initialize some variables
Set session = New NotesSession
Set dbSource = session.CurrentDatabase
Redim nidArray(5)
nLogItems = 0
numDocsArchived = 0
'call the main entry point
Main
End Sub
'++LotusScript Development Environment:2:2:Terminate:1:10
Sub Terminate
End Sub
'++LotusScript Development Environment:2:2:Main:1:8
Sub Main
'Read the profile document to see what options are enabled and where databases are located
GetProfileSettings
If DoNotRun Then Exit Sub
'setup the date/time structures
Set dtNow = New NotesDateTime("")
Set dtExpired = New NotesDateTime("")
Set dtDocument = New NotesDateTime("")
Set dtCompare = New NotesDateTime("")
dtNow.SetNow
dtExpired.SetNow
dtDocument.SetNow
dtCompare.SetNow
If ArchiveExpired = "Yes" Then dtExpired.AdjustDay(ExpiredLife * -1)
If ArchiveInactive = "Yes" Then dtDocument.AdjustDay(DocumentLife * -1)
'open the archive database
On Error Resume Next
Set dbArchive = New NotesDatabase(ArchiveServer,ArchivePath)
If Err = 4060 Then Goto ErrNoDBAccess
If Not (dbArchive.IsOpen) Then
Messagebox "Unable to open archive database.",16,"Error"
Exit Sub
End If
'see if we are logging documents, if we are, then create the first one
If ArchiveLog = "Yes" Then CreateLogDocument
'process the documents in the database
'this finds all documents that needs to be archived, archives them, logs them (if necessary), and removes them from this database
ProcessDocuments
'mark the log documents in terms of x out of y
If ArchiveLog = "Yes" Then MarkLogDocuments
Exit Sub
ErrNoDBAccess:
Messagebox "You do not have access to the archive database. Please contact the database manager to have your name added to the Access Control List.", 0, "Database Access Error"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:GetProfileSettings:1:8
Sub GetProfileSettings
'reads the profile document
Set view = dbSource.GetView("Archiving")
key = "Archive Profile"
Set docProfile = view.GetDocumentByKey(key,False)
If docProfile Is Nothing Then
'there is no profile document so exit
DoNotRun = True
Elseif docProfile.ArchivePath(0) = "" Then
'there is no archive database
Msgbox "You need to specify a location for the archive database.",16,"Error"
DoNotRun = True
Else
DoNotRun = False
ArchiveExpired = docProfile.ArchiveExpired(0)
ArchiveInactive = docProfile.ArchiveInactive(0)
DocumentLife = docProfile.DocumentLife(0)
ExpiredLife = docProfile.ExpiredLife(0)
ArchiveServer = docProfile.ArchiveServer(0)
ArchivePath = docProfile.ArchivePath(0)
ArchiveLog = docProfile.ArchiveLog(0)
IncludeDocLinks = docProfile.IncludeDocLinks(0)
End If
End Sub
'++LotusScript Development Environment:2:2:CreateLogDocument:1:8
Sub CreateLogDocument
'creates a new log document, incrementing the counter
Set docLog = New NotesDocument(dbSource)
Set rtitem = New NotesRichTextItem(docLog, "Body")
docLog.Form = "Archive Log"
dtNow.SetNow
docLog.ArchiveDate = dtNow.LSLocalTime
docLog.ProtectFromArchive = 1
docLog.ExcludeFromView = "D"
docLog.From = "Archiving"
docLog.Categories = "(Archive)"
docLog.ReplaceItemValue "_ViewIcon", 22
nLogItems = nLogItems + 1
'see if we need to redim the array
If nLogItems Mod 6 = 0 Then Redim Preserve nidArray(nLogItems + 4)
End Sub
'++LotusScript Development Environment:2:2:ProcessDocuments:1:8
Sub ProcessDocuments
'get a handle to all of the documents in the database
Set docsCollection = dbSource.AllDocuments
numDocs = docsCollection.Count
For i =1 To numDocs
Set docSource = docsCollection.GetNthDocument(i)
'see if this document can be archived
EvaluateDocument
If DocCanBeArchived Then
'archive this document
ArchiveDocument
If ArchiveLog = "Yes" Then AddDocumentToLog
docSource.Remove True
End If
'see if we have hit the maximum number of entries in a log document; if so close the existing one and create a new one
If (numDocsArchived Mod MAXARCHIVEITEMS = 0) And (numDocsArchived > 0) Then
If ArchiveLog = "Yes" Then
CloseLogDocument
CreateLogDocument
End If
End If
Next
'we are done processing all of the documents, close the last log document (if necessary)
If ArchiveLog = "Yes" Then CloseLogDocument
End Sub
'++LotusScript Development Environment:2:2:EvaluateDocument:1:8
Sub EvaluateDocument
'checks to see if a document should be archived or not
DocCanBeArchived = False
'see if this document is protected from archiving
If docSource.HasItem("ProtectFromArchive") Then
If docSource.ProtectFromArchive(0) = 1 Then Exit Sub
End If
'look for a $NoPurge item; if it is a date, compare it to today;
If (docSource.HasItem("$NoPurge")) Then
Set Purge = docSource.GetFirstItem("$NoPurge")
If (Purge.Type = DATETIMES) Then
Set enddt = New NotesDateTime("")
Set enddt = Purge.DateTimeValue
Set nowdt = New NotesDateTime("")
nowdt.SetNow
If enddt.TimeDifference(nowdt) >= 0 Then Exit Sub
Else
Exit Sub
End If
End If
'see if we should archive documents that expire
If ArchiveExpired = "Yes" Then
If docSource.HasItem("ExpireDate") Then
Set item = docSource.GetFirstItem("ExpireDate")
Set dtCompare = item.DateTimeValue
If dtCompare Is Nothing Then
Set dtCompare = New NotesDateTime("")
dtCompare.SetNow
Else
If dtExpired.TimeDifference(dtCompare) >= 0 Then
DocCanBeArchived = True
Exit Sub ' we exit here so that we don't archive this document again
End If
End If
End If
End If
'see if we should archive documents that are inactive
If ArchiveInactive = "Yes" Then
dtCompare.LSLocalTime = docSource.LastAccessed
If dtDocument.TimeDifference(dtCompare) >= 0 Then DocCanBeArchived = True
End If
End Sub
'++LotusScript Development Environment:2:2:ArchiveDocument:1:8
Sub ArchiveDocument
'copies the source document into the archive database
$Archived and DateArchived might already be present, if this agent failed the last
time it was run. None of these fields should be on the archived copy, because we
don't want the archive database to inadvertantly archive these documents (it can
archive, but it needs to use its own criteria)
%END REM
If docSource.HasItem("$Archived") Then docSource.RemoveItem("$Archived")
If docSource.HasItem("DateArchived") Then docSource.RemoveItem("DateArchived")
If docSource.HasItem("ExpireDate") Then docSource.RemoveItem("ExpireDate")
FixReaderNames
docSource.Save True, True
Set docArchive = docSource.CopyToDatabase(dbArchive)
docSource.DateArchived = dtNow.LSLocalTime
Call docSource.AppendItemValue("$Archived", True)
docSource.Save True, True
numDocsArchived = numDocsArchived + 1
End Sub
'++LotusScript Development Environment:2:2:FixReaderNames:1:8
Sub FixReaderNames
'if the reader access fields are blank, remove them
If docSource.HasItem("Readers") Then
If docSource.Readers(0) = "" Then docSource.RemoveItem("Readers")
End If
If docSource.HasItem("DocumentReaders") Then
If docSource.DocumentReaders(0) = "" Then docSource.RemoveItem("DocumentReaders")
End If
End Sub
'++LotusScript Development Environment:2:2:AddDocumentToLog:1:8
Sub AddDocumentToLog
'only called if a document was archived and logging was enabled
If IncludeDocLinks = "Yes" Then
'the user wants a doclink to the new archived document
Call rtitem.AppendDocLink(docArchive, "DocLink to " & docSource.Subject(0))
Call rtitem.AddTab(1)
End If
Call rtitem.AppendText(" " & docSource.Subject(0) & " (created by " & docSource.From(0) & " on " &_
Format(docSource.Created, "Short Date") & ")")
Call rtitem.AddNewLine(2)
End Sub
'++LotusScript Development Environment:2:2:CloseLogDocument:1:8
Sub CloseLogDocument
'saves the log document, adds the note id to the array,
docLog.Save True, True
nidArray(nLogItems) = docLog.NoteID
End Sub
'++LotusScript Development Environment:2:2:MarkLogDocuments:1:8
Sub MarkLogDocuments
'finds all of the log documents just created and marks them in terms of x out of y
For i = 1 To nLogItems
Set docLog = dbSource.GetDocumentByID(nidArray(i))
Messagebox "You do not have access to the archive database. Please contact the database manager to have your name added to the Access Control List.",0,"Database Access Error"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:ArchiveDocument:1:8
Sub ArchiveDocument
On Error Goto ErrorRoutine
On Error ErrObjectVariableNotSet Resume Next
Dim Purge As NotesItem
$Archived and DateArchived might already be present, if this agent failed the last
time it was run. None of these fields should be on the archived copy, because we
don't want the archive database to inadvertantly archive these documents (it can
archive, but it needs to use its own criteria)
%END REM
'If this type of form does not get archived then exit
If note.HasItem("ProtectFromArchive") Then
ProtectFromArchive = note.ProtectFromArchive
If ProtectFromArchive(0) = 1 Then Exit Sub
End If
'look for a $NoPurge item; if it is a date, compare it to today;
If (note.HasItem("$NoPurge")) Then
Set Purge = note.GetFirstItem("$NoPurge")
If (Purge.Type = DATETIMES) Then
Set enddt = New NotesDateTime("")
Set enddt = Purge.DateTimeValue
Set nowdt = New NotesDateTime("")
nowdt.SetNow
If enddt.TimeDifference(nowdt) >= 0 Then
Messagebox |The document "| & note.Subject(0) & |" could not be archived since the end date has not passed.|,0,"Status"
Exit Sub
End If
Else
Exit Sub
End If
End If
If note.HasItem("$Archived") Then note.RemoveItem("$Archived")
If note.HasItem("DateArchived") Then note.RemoveItem("DateArchived")
If note.HasItem("ExpireDate") Then note.RemoveItem("ExpireDate")
' Guess whether this is an internet address or and X.400/Notes address
If IsInternetAddress(fromItem(0)) Then
' It's an Internet address
full = GetInternetFullName(fromItem(0))
addressType = INTERNET
Else
' See if there are any slashes at all in the address
pos = Instr(fromItem(0), "/")
If pos = 0 Then
full = fromItem(0)
addressType = NOTES
Else
' Check to see if this is a canonical name
full = GetAttribute(fromItem(0), "CN")
' If there are no /P and /A attributes, guess that this is a Notes address
If pos = 0 Or (full <> "" And GetAttribute(fromItem(0), "/P") = "" And GetAttribute(fromItem(0), "/A") = "") Then
' It's a Notes address
addressType = NOTES
Else
addressType = X400
first = GetAttribute(fromItem(0), "/G")
last = GetAttribute(fromItem(0), "/S")
' try to get the common name, if it isn't there, make it from first and last name
full = GetAttribute(fromItem(0), "/CN")
If full = "" Then
If first <> "" Then
full = first + " " + last
Else
full = last
End If
End If
End If
End If
End If
gotFullName:
' if last is not empty then the name has already been parsed
If last = "" Then
full = Deflate(full)
full = FixFullName(full)
first = GetFirst(full)
last = GetLast(full)
End If ' last <> ""
If addressType = NOTES Then
full = fromItem(0)
mailAddress = full
End If
' If this person has already been added or it's you, skip it
If Iselement(alreadyAdded(full)) Goto nextDocument
Dim fullname As New notesname(full)
If Not addressDB.IsOpen Then Call addressDB.Open( "", AddressBook )
If addressDB.IsOpen Then
Dim view As NotesView
Set view = addressDb.GetView("($People)")
If view Is Nothing Then
' tell them you cannot check
Else
Dim tempDoc As NotesDocument
Dim searchKeys As String
searchKeys = Left(last, 1)
Set tempDoc = view.GetDocumentByKey(searchKeys)
NameFound = False
Do Until tempdoc Is Nothing
If tempDoc.FullName(0) = fullname.Canonical Then
NameFound = True
Exit Do
Else
Set tempDoc = view.GetNextDocument(tempDoc)
If tempDoc Is Nothing Then Exit Do
If Left(tempDoc.LastName(0), 1) <> searchKeys Then Exit Do
End If
Loop
If NameFound Then
' Don't prompt if we are doing 10 people or more, chances are that this will be an unattended operation. Default to no.
If docCount > 10 Goto nextDocument
If Messagebox (first & " " & last + " is already in your personal address book. Are you sure you want to add this address?", MB_YESNO+MB_ICONQUESTION, _
Route'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Postopen From Source Call Postopen
On Event Querysave From Source Call Querysave
On Event Queryclose From Source Call Queryclose
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
Dim cnName As Variant
If source.InPreviewPane Then Exit Sub
If note Is Nothing Then Call InstantiateObjectVariables(source)
cnName = Evaluate("@Name([CN];@Username)")
If (note.HasItem("PostedDate") Or note.HasItem("DeliveredDate")) And source.EditMode = False And Instr(Lcase(note.SendTo(0)), Lcase(cnName(0))) = 0 Then
Exit Sub
Else
source.EditMode = True
End If
If note.From(0) = s.UserName Or source.IsNewDoc Then
If Not(note.HasItem("SecureMail")) Then
CheckSecureMail
source.reload
End If
End If
EditType = s.GetEnvironmentValue("MailStEd")
If EditType = "5" Then
Call note.ReplaceItemValue("$VersionOpt", "6")
note.tmpAction = "ConvertNewDoc"
Call s.SetEnvironmentVar("MailStEd", "0")
source.reload
source.save
End If
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
If note Is Nothing Then Call InstantiateObjectVariables(source)
note.RemoveItem("MailOptions")
note.RemoveItem("SaveOptions")
Action = note.tmpAction
Select Case Action(0)
Case "SaveAsDraft"
note.MailOptions = "0"
note.SaveOptions = "1"
Case "SendAndFile"
If SendToNext(source) = False Then Continue = False
note.SaveOptions = "1"
Case "Send"
If SendToNext(source) = False Then Continue = False
note.SaveOptions = "0"
Case "Mailing"
'We do not want to do anything if mailing is in process (like from the Send button)
Case Else
'If this is a message that was not written by you we do not present the mail dialog
If note.From(0) <> s.UserName Then
note.MailOptions = "0"
note.SaveOptions = "1"
ContinueSave = True
Call SaveDialog("Document")
If ContinueSave = False Then
Continue = False
Exit Sub
End If
End If
End Select
note.RemoveItem("tmpAction")
If note.HasItem("$VersionOpt") Then Call note.ReplaceItemValue("$VersionOpt", "0")
source.Reload
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Every month on the|1Every other month on the|2Every 3rd month on the|3Every 4th month on the|4Every 5th month on the|5Every 6th month on the|6Every 7th month on the|7Every 8th month on the|8Every 9th month on the|9Every 10th month on the|10Every 11th month on the|11Every 12th month on the|12
When you create a calendar entry, you can specify the type of entry you want to create. You can create an appointment, meeting invitation, event, reminder, or anniversary.
To specify the type of calendar entry, click a
type at the top of the document. Notes displays different
fields depending on
the calendar type
you select.
Enter information in the calendar entry
fields Notes displays.
set an alarm that reminds you about
the calendar entry,
click Alarm options and specify information about the alarm.
To repeat the calendar entry at specified intervals, click Repeat and specify information about how often and how long you want the entry to repeat.
To check your calendar as you are entering information, click Check Calendar. To return to the document, press ESC.
Click Save and Close when you finish entering information
for the calendar entry.
If you created a meeting invitation, click Yes to send
invitations to the invitees.
For information on
each type of calendar entry, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Calendar entry--existing -> tmpContext = 1
tmpContext
1S2S
You can make changes to an appointment, event, reminder, or anniversary.
If you have not already done so, click Edit Document.
Make changes in
any of
the calendar entry
fields Notes displays.
To set an alarm that reminds you about the calendar entry, click Alarm options and specify information about the alarm.
To check your calendar as you are making changes, click Check Calendar. To return to the document, press ESC.
Click Save and Close.
For information on calendar entries, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
After you create a meeting invitation, you can make changes to the document by clicking Edit Document and doing the following:
Display responses to a meeting invitation by clicking "Display invitee responses."
Change the date, time, or location of the meeting by clicking Edit Document and changing the date or time fields or the reservation section.
Remove an invitee from the invitation list by clicking Edit Document
and choosing Actions - Remove - Invitees.
Cancel a room or resource reservation by clicking Edit Document and choosing Actions - Remove - Rooms & Resources.
Send a confirmation to the invitees by clicking Send Confirmation.
Cancel a meeting by choosing Actions - Cancel Meeting.
Accept a meeting invitation for an invitee by choosing Actions - Change Status to Accepted.
For information on calendar entries, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
You can make changes to a meeting invitation if necessary.
If you have not already done so, click Edit Document.
Make changes in
any of
the calendar entry
fields Notes displays.
change your response to the meeting invitation, choose Actions - Other and select
a different response
Click Save and Close.
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Invitation (invitee - no action taken yet) -> tmpContext = "4"
tmpContext
1S2S
When you receive a meeting invitation, you can:
Accept the meeting invitation by clicking Accept.
Accept the meeting invitation tentatively by clicking Other and selecting Pencil In.
Decline the meeting invitation by clicking Decline.
Ask someone to attend the meeting in your place by clicking Other and selecting Delegate.
Propose a different time or location for the meeting by clicking Other and selecting "Propose Alternative Time/Location."
When you receive a broadcast meeting invitation, you can add the broadcast meeting to your calendar by clicking Add to Calendar.
You can also accept meeting invitations from all or from selected people
automatically by using the Meetings option under Autoprocessing Options
in your Calendar Profile.
For information on responding to meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Declined -> tmpContext = "5"
tmpContext
1S2S
The person you invited to the meeting declined your meeting invitation.
To view a list of invitee responses, open the meeting invitation in the Calendar view and click "Display invitee responses."
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Change proposal ->tmpContext = "6"
tmpContext
1S2S
Someone you invited to the meeting proposed an alternative time or location for your meeting. You can accept or decline the proposal.
To accept, click "Accept Counter Proposal." Notes sends a new invitation with the updated meeting information to all invitees. To decline, click "Decline Counter Proposal." Notes sends a message telling the invitee who proposed the change that you declined it.
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Reschedule ->tmpContext = "7"
tmpContext
1S2S
The meeting chairperson rescheduled this meeting. You can respond to the rescheduled meeting invitation in one of the following ways:
Accept the meeting invitation by clicking Accept.
Accept the meeting invitation tentatively by clicking Other and selecting Pencil In.
Decline the meeting invitation by clicking Decline.
Ask someone to attend the meeting in your place by clicking Other and selecting Delegate.
Propose a different time or location for the meeting by clicking Other and selecting "Propose Alternative Time/Location."
When you receive a broadcast meeting invitation, you can add the broadcast meeting to your calendar by clicking Add to Calendar.
You can also accept meeting invitations automatically from all or selected people by using the Meetings option under Autoprocessing Options in your Calendar Profile.
For information on responding to meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Acceptance ->tmpContext = "8"
tmpContext
1S2S
The person you invited to the meeting accepted your meeting invitation.
To view a list of invitee responses, open the meeting invitation in the Calendar view and click "Display invitee responses."
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Counter proposal declined ->tmpContext = "9"
tmpContext
1S2S
The meeting chairperson declined the alternative time or location you proposed. You can respond to the meeting invitation in one of the following ways:
Accept the meeting invitation by clicking Accept.
Accept the meeting invitation tentatively by clicking Other and selecting Pencil In.
Decline the meeting invitation by clicking Decline.
Ask someone to attend the meeting in your place by clicking Other and selecting Delegate.
Propose another time or location for the meeting by clicking Other and selecting "Propose Alternative Time/Location."
You can also accept meeting invitations automatically from all or selected people by using the Meetings option under Autoprocessing Options in your Calendar Profile.
For information on responding to meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Cancelled ->tmpContext = "10"
tmpContext
1S2S
The chairperson cancelled this meeting. You do not need to respond to this message. Notes automatically removed the meeting from your calendar.
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Status update - Uninvite -> tmpContext = "11"
tmpContext
1S2S
You are no longer required to attend this meeting. You do not need to respond to this message. Notes automatically removed the meeting from your calendar.
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Status update - Change Status to Accepted -> tmpContext = "12"
tmpContext
1S2S
You are required to attend this meeting. You do not need to respond to this message. Notes automatically added the meeting to your calendar.
For information on responding to meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Confirmation -> tmpContext = "13"
tmpContext
1S2S
The chairperson sent this message to remind you of an upcoming meeting. You do not need to respond to this message. If you can no longer attend the meeting, open the original meeting invitation and choose Actions - I Can No Longer Attend.
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Delegation -> tmpContext = "14"
tmpContext
1S2S
Someone delegated this meeting invitation to you. You can respond to the meeting invitation in one of the following ways:
Accept the meeting invitation by clicking Accept.
Accept the meeting invitation tentatively by clicking Other and selecting Pencil In.
Decline the meeting invitation by clicking Decline.
Ask someone to attend the meeting in your place by clicking Other and selecting Delegate.
Propose a different time or location for the meeting by clicking Other and selecting "Propose Alternative Time/Location."
You can also accept meeting invitations automatically from all or selected people by using the Meetings option under Autoprocessing Options in your Calendar Profile.
For information on responding to meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Delegated Invitation -> tmpContext = "15"
tmpContext
1S2S
The person you invited to this meeting delegated the invitation to someone else.
To view a list of invitee responses, open the meeting invitation in the Calendar view and click "Display invitee responses."
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
You can make changes to a meeting invitation if necessary.
If you have not already done so, click Edit Document.
Make changes in any of
the calendar entry
fields Notes displays.
change your response to the meeting invitation, choose Actions - Other and select
a different response.
Click Save and Close.
For information on meeting invitations, choose Help - Help Topics, select How do I...?, select Do Everyday Tasks, and select 07 Use the Calendar, Assign Tasks, and Schedule Meetings.
Propose alternative time/location -> tmpContext = "17"
tmpContext
1S2S
You proposed a different time or location for the meeting. Notes sends this counter-proposal to the meeting chairperson.
When the chairperson accepts or declines the proposal, Notes sends you the chairperson's response.
Categori_zeK
_Edit Document
Send Docu_ment
_Forward
_Move To Folder...
_Remove From FolderK
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
B@BuW8
Uo-xO
$FormPublicAccess
$TITLE
$INFO
$$ScriptName
$BODY
$ACTIONS
$PublicAccess
Archive Profile
Times New Roman
'++LotusScript Development Environment:2:5:(Options):0:66
Option Public
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Initialize
Declare Sub ProcessExistingArchiveDB
Declare Sub ProcessNonExistingArchiveDB
Declare Sub ProcessArchiveDbExists
Declare Sub CreateNewArchiveDB
'++LotusScript Development Environment:2:5:(Declarations):0:10
%INCLUDE "lsconst.lss"
Dim s As NotesSession
Dim w As NotesUIWorkspace
Dim db As NotesDatabase
Dim existingdb As NotesDatabase
Dim archivedb As NotesDatabase
Dim view As NotesView
Dim note As NotesDocument
Dim profile As NotesDocument
Dim archivedoc As NotesDocument
Dim doc As NotesUIDocument
Dim DocWasSaved As Integer
Dim DoNotClose As Variant
Dim ExistingServer As String
Dim ExistingPath As String
'++LotusScript Development Environment:2:2:Initialize:1:10
Sub Initialize
End Sub
'++LotusScript Development Environment:2:2:ProcessExistingArchiveDB:1:12
Sub ProcessExistingArchiveDB
an existing archive already exists and the user has choosen to create a new one
this function gets called on one of two occasions
either the document has a value in the tmpArchivePath field
or the user entered a server and path that has an existing database
we need to handle both cases
%END REM
End Sub
'++LotusScript Development Environment:2:2:ProcessNonExistingArchiveDB:1:8
Sub ProcessNonExistingArchiveDB
On Error Goto ProcessError
On Error 4005 Goto DbCreateError
'render the dialog box to get the location of the archive database
If (w.DialogBox("(ArchiveProfileDlg)",True,True,"Specify New Location")) Then
'see if the archive database exists
Set archivedb = New NotesDatabase(note.ArchiveServer(0),note.ArchivePath(0))
If (archivedb.IsOpen) Then
Msgbox "Database already exists. Enter a new location"
ProcessNonExistingArchiveDB
Else
Set archivedb = db.CreateCopy(note.ArchiveServer(0),note.ArchivePath(0))
archivedb.Title = db.Title & " (Archive)"
End If
Call doc.Reload
Call doc.Refresh
Else
note.ArchiveServer = ""
note.ArchivePath = ""
End If
Exit Sub
DbCreateError:
Select Case Msgbox("Error creating archive database. The server may be down or you don't have access to create new databases on the server. Click Yes to try a different location now or No to cancel.",36,"Error")
Case 6
ProcessNonExistingArchiveDb
End Select
Exit Sub
ProcessError:
Msgbox Error & " - (ProcessNonExistingArchiveDB)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:ProcessArchiveDbExists:1:8
Sub ProcessArchiveDbExists
'this function gets called if a database already exists in the tmpArchiveServer field
'render the dialog box to get the location of the archive database
On Error 4005 Goto DbCreateError
If (w.DialogBox("(ProcessExistingDbDlg)",True,True,"Specify New Location")) Then
On Error Resume Next
'see if the archive database exists
Set archivedb = New NotesDatabase(note.ArchiveServer(0),note.ArchivePath(0))
If (archivedb.IsOpen) Then
Msgbox "Database already exists. Enter a new location"
ProcessArchiveDbExists
Else
Call CreateNewArchiveDB
archivedb.Title = db.Title & " (Archive)"
End If
Call doc.reload
Call doc.refresh
End If
Exit Sub
DbCreateError:
Select Case Msgbox("Error creating archive database. The server may be down or you don't have access to create new databases on the server. Click Yes to try a different location now or No to cancel.",36,"Error")
Case 6
ProcessNonExistingArchiveDb
End Select
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:CreateNewArchiveDB:1:8
Sub CreateNewArchiveDB
On Error 4005 Goto DbCreateError
On Error Goto ProcessError
'first, create the archive database
Set archivedb = db.CreateCopy(note.ArchiveServer(0),note.ArchivePath(0))
'if the profile says to copy new documents, then copy them now
If (note.CopyOptions(0) = "1") Then
Set allDocs = existingdb.AllDocuments
For i = 1 To allDocs.Count
Set archivedoc = allDocs.GetNthDocument(i)
Call archivedoc.CopyToDatabase(archivedb)
Next
End If
'if the profile says we should delete the original archive database, then remove it
If (note.DeleteOptions(0) = "1") Then Call existingdb.Remove
Exit Sub
DbCreateError:
Select Case Msgbox("Error creating archive database. The server may be down or you don't have access to create new databases on the server. Click Yes to try a different location now or No to cancel.",36,"Error")
Case 6
ProcessNonExistingArchiveDb
End Select
Exit Sub
ProcessError:
Msgbox Error & " - (ProcessNonExistingArchiveDB)"
Exit Sub
End Sub
Archive Profile'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Postopen(Source As Notesuidocument)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Queryclose From Source Call Queryclose
On Event Querysave From Source Call Querysave
On Event Postopen From Source Call Postopen
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
If (DocWasSaved = False) Or (profile Is Nothing) Or DoNotClose Then Exit Sub
ItemList = profile.Items
Forall n In ItemList
profile.RemoveItem(n.Name)
End Forall
note.CopyAllItems profile
profile.SaveOptions = "1"
profile.save True, True
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
DocWasSaved = True
DoNotClose = False
If Not(profile Is Nothing) Then note.SaveOptions = "0"
If (note.ArchivePath(0) = "") Then Msgbox "You will need to specify a location of the archive database before you can archive documents.",16
source.Reload
source.RefreshHideFormulas
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
'initialize global variables
Set note = source.Document
Set w = New NotesUIWorkspace
Set s = New NotesSession
Set db = s.CurrentDatabase
Set view = db.GetView("Archiving")
Set doc = source
'turn off auto reload to make processing faster
source.AutoReload = False
'if this is not a new doc, we don't need to continue
If Not (source.IsNewDoc) Then Exit Sub
'get the existing profile
key = "Archive Profile"
Set profile = view.GetDocumentByKey(key,False)
If profile Is Nothing Then
'an existing profile was not found
note.ProtectFromArchive = 1
note.ExcludeFromView = "D"
note.From = "Archiving"
note.Subject = "Archive Profile"
note.Categories = "(Archive)"
Call note.ReplaceItemValue("_ViewIcon", 11)
source.reload
Else
'copy the profile fields to this document
ItemList = note.Items
Forall n In ItemList
note.RemoveItem(n.Name)
End Forall
profile.CopyAllItems note
source.Reload
If source.EditMode Then source.Refresh
End If
DocWasSaved = False
End Sub
K ,`
Archive Profile
ArchiveExpired
Archive Expired documents | Yes
after
ExpiredLife
Number cannot be negative.{
3S4S6S11SExpiredLife
days
ArchiveInactive
Archive documents which have no activity | Yes
after
DocumentLife
Number cannot be negative.{
3S4S6S11SDocumentLife
days
ArchiveLog
Generate an Archive Log each time an archive occurs | Yes
IncludeDoclinks
Include document links | Yes
Archive Profile editors:
ProfileEditors
Archive Server:
ArchivePath
ArchiveServer
Local
ArchiveServer
3S4S9S10S12S14StmpArchiveServer
Archive Path:
ArchivePath
tmpArchivePath
Categori_ze
_Edit Document
Send Docu_ment
_Forward
Close
0S0E
Save Profile
0S0E
Specify Archive Location'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Click(Source As Button)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As BUTTON
Set Source = Bind(Objectname_)
On Event Click From Source Call Click
End Sub
'++LotusScript Development Environment:2:2:Click:1:12
Sub Click(Source As Button)
'see if an archive database already exists based upon some field values
Set existingdb = New NotesDatabase(ExistingServer,ExistingPath)
If (existingdb.IsOpen) Then
Select Case Msgbox("The database (" + Fullpath$ + ") already exists. To create a new database, select OK, otherwise click Cancel",33,"Database already exists")
Case IDOK: ProcessArchiveDBExists
End Select
Else
ProcessNonExistingArchiveDB
End If
Else
ProcessNonExistingArchiveDB
End If
End Sub
InstructionsF
(ArchiveInstructions)
2S4S
_Move to Folder...
_Remove from Folderr
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
0I'X"
DocLife
ArchiveDate
ObsoleteLife
$ManualArchivers_O
$TITLE
$INFO
$WINDOWTITLE
$Script
$$Script_O
$$ScriptName
$$FormScript
$$$FormScript_O
ExpiredLife
DocumentLife
$BODY
$ACTIONS
$SCRIPTOBJ_6
Times New Roman
(ArchiveInstructions)
Archive Profile Help
The Archive Profile allows you to specify which documents should be removed from the current database and stored in an archive database. This allows you to keep your discussion up-to-date with only the latest topics.
You can choose the following in your ArchiveProfile:
Archive expired documents
Choose this option if you wish to archive documents which have been marked as expired. Indicate the number of days to wait before the expired documents are archived.
Archive documents which have no activity
Choose this option if you wish to archive documents which have had no activity. Indicate the number of days to wait before the inactive documents are archived.
Generate an Archive Log each time an archive occurs
Choose this option if you wish to have an Archive Log created when documents are archived. You can also indicate if you would like document links to the archived documents included in the Archive Log.
Specify Archive Location:
Click on this button to specify the server and filename of the Archive database. The archive database is created for you based upon the values specified in the dialog box.
Categori_ze
_Edit Document
Send Docu_ment
_Forward
_Move To Folder...
_Remove From Folderm
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$$ScriptName
$BODY
$ACTIONS
$PublicAccess
&Arial
StdNotesLtr4
tmpDisplayFrom_Preview
tmpFrom
tmpDisplayDate_Preview
tmpDate
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
OMz{u
$TITLE
$INFO
$$ScriptName
$BODY
Temporary Export Certificate
"Helvetica
Temporary Export Certificate'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Queryclose From Source Call Queryclose
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
, by checking this box, that I have complied with the requirements of U.S. export law, specifically, 22 CFR 123.27, pertaining to the "temporary" export of cryptographic products for "personal" use.
I certify that:
the use of the product identified above was solely for personal use and not for sales, demonstration or marketing purposes;
only one copy of the product identified above was exported and it remained in my possession (and was not sent separately) during this travel;
I did not travel to a country to which exports are prohibited (countries on which a "ban or embargo" has been
imposed
by the U.S. government or United Nations); and
I have no knowledge or reason to believe the products were copied, transferred, stolen, or compromised while abroad.
. .
. .
Explanation of law:
The Personal Use Exemption authorizes temporary export of cryptographic products for personal use by U.S.citizens and lawful permanent residents when travelling abroad. The exemption requires the traveller to keep certain records and report instances where the product was stolen or otherwise compromised. There are no other export related requirements such as export licenses or Shipper's Export Declarations.
Requirements:
- Use of the cryptographic items must be for personal use and not for sales, marketing, or demonstration purposes
- Only one copy of a cryptographic item may be exported (i.e. one phone, one laptop,etc.) and one copy each of cryptographic software to be used on simultaneously exported hardware.
- The Exemption cannot be used for travel to countries which have been identified as supporting terrorism or those under certain United Nations embargoes. These countries currently are Cuba, Iran, Iraq, Libya, North Korea, Sudan and Syria.
- The cryptographic products must be hand carried (may be included with accompanying baggage), not sent separately, and must be returned to the U.S. at the completion of the stay abroad. Upon request of a U.S. Customs officer, the exporter will submit the products for inspection.
- The exporter must keep records for five years from the date the trip commenced. The records must include the description of the handcarried cryptographic products; dates and countries visited; dates of leaving the U.S. and re-entry. The record is to contain a statement that all conditions of the Exemption as outlined above were met and that no products were stolen, transferred or otherwise compromised.
- The exporter also has a duty to report to the U.S. Department of State, Office of Defense Trade Controls, any loss, transfer, copy, or compromise of the product while abroad within 10 days of returning to the U.S. (If the exporter has a reason to know any of these events has occurred he or she should immediately inform the Department of State.)
tmpDisplayDate_PreviewTime/date memo was created or mailed.
Preview letterheads for new Memos and Replies in the list below.
When you find one you like, press Done.
LetterHeadChoices
Plain Text|StdNotesLtr0Bouncy Earth|StdNotesLtr1Buck Rogers Mail|StdNotesLtr2Centered and Bold|StdNotesLtr3Decco|StdNotesLtr4Falling Spheres|StdNotesLtr5First Initial|StdNotesLtr6Frank Lloyd|StdNotesLtr7From The Desk|StdNotesLtr8Gateway|StdNotesLtrGatewayGeometry |StdNotesLtr9Gray Gradient with Lines|StdNotesLtr13Green and Yellow Diamond|StdNotesLtr14Marquee|StdNotesLtr34Metal Plate|StdNotesLtr15Pencil and Grid|StdNotesLtr16Pony Express|StdNotesLtr17Purple Geometry|StdNotesLtr18Reversed Teal|StdNotesLtr20Slashed Lines with Globe|StdNotesLtr21Squiggle with Backdrop|StdNotesLtr22Squiggly Line|StdNotesLtr23Tacks|StdNotesLtr24Tape|StdNotesLtr25Teal and Yellow Lines|StdNotesLtr26Three Dimensional Relief|StdNotesLtr27Torn Paper|StdNotesLtr28Triangle with Dots 1|StdNotesLtr29Triangle with Dots 2|StdNotesLtr30Wild Confetti|StdNotesLtr32Yellow Gradient|StdNotesLtr33
DefaultLogo
0S0E
Categori_ze
_Edit Document
Send Docu_ment
_Forward
_Move To Folder...
_Remove From Foldert
Choose New Letter Head
DefaultLogo
DefaultLogo
1S2S
Logos
0RR1S2S
The following list should be translated. It is presented to user in list box
0R1S
LogoNames
Three
Buck Rogers
Centered Rich
Confetti
Falling Balls
Frank Lloyde
0R1S2S
Select a Letterhead
Select the Letterhead which will appear at the top of all new Memos and Replys
DefaultLogo
Logos
LogoNames
LogoNames
0R1S2S14S16S19S
DefaultLogo
LogoNames
Logos
0RR4S8S10S
preview
Done
0S0E
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$WINDOWTITLE
$$Script_O
$$ScriptName
$$FormScript
$BODY
$ACTIONS
&Arial Narrow
&Arial
StdNotesLtrGateway
Hidden:
tmpDisplayDate_Preview
tmpDate
tmpDisplayFrom_Preview
on "
tmpDisplayDate_Preview
D0S2V
3S4S5S6S10StmpFrom
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
$TITLE
$INFO
$$Script_O
$$ScriptName
$BODY
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
Use "NoticeProcessing"
Use "NoticeResponses"
Use "RepeatProcessing"
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Initialize
Declare Function CanAutoProcess As Integer
'++LotusScript Development Environment:2:5:(Declarations):0:10
Dim FromList As Variant
Dim autodocs As NotesDocumentCollection
'++LotusScript Development Environment:2:2:Initialize:1:10
Sub Initialize
Dim context As Integer
On Error 4005 Resume Next ' handle the case if the parent document cannot be found
Set session = New NotesSession
Set db = session.CurrentDatabase
Set autodocs = db.UnprocessedDocuments
IsAgentProcessing = True
'if we don't have any documents to process, we can exit now
If (autodocs.count = 0) Then Exit Sub
Set profile = db.GetProfileDocument("CalendarProfile")
FromList = profile.MeetingsPeople
Owner = profile.Owner(0)
If (Owner = "") Then Owner = session.UserName
Set note = autodocs.GetFirstDocument
While Not (note Is Nothing)
'we only need to process meeting invitations from other people; do not process meeting responses back from invitees
If (note.Form(0) = "Notice") And (note.Chair(0) <> Owner) Then
'make sure we can process this notice
If (CanAutoProcess) Then
'determine the type of notice being sent to us
Select Case note.NoticeType(0)
Case ORS_MSGTYPE_INVITE,ORS_MSGTYPE_DELEGATE
'check for notice updates; if we have any, then do not process this note
Call GetMostRecentUpdateNotice(context)
If (UpdateResponses(0).misc2 = "") Then 'we didn't find any update notices that we care about
'we are receiving an invitation
If (note.HasItem("RepeatIds")) Then
'this is a repeating meeting; determine if this is a broadcast notice or not
If (note.Broadcast(0) <> "1") Then
note.tmpAction = "Accept"
Call AcceptInvitation
Else
note.tmpAction = "AddCalendar"
Call UpdateOriginalInvitation(note)
'see if we should remove this from the inbox
If (profile.AutoRemoveFromInbox(0) = "1") Then note.RemoveFromFolder("($Inbox)")
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
Use "NoticeProcessing"
Use "NoticeResponses"
Use "RepeatProcessing"
Use "DocumentConversions"
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Declare Sub Postmodechange(Source As Notesuidocument)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Click(Source As Button)
'++LotusScript Development Environment:2:5:(Declarations):0:10
Dim collection As NotesDocumentCollection
Dim nam As NotesName
Dim DocWasSaved As Integer
Dim NewForm As String
Dim ErrorStatus As Integer
'++LotusScript Development Environment:2:2:Postopen:1:8
Sub Postopen(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:8
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Call MarkTempFields(note)
Select Case note.tmpAction(0)
Case "Accept","PencilIn"
AcceptInvitation
Case "Decline"
DeclineInvitation
Case "Delegate"
ErrorStatus = DelegateInvitation
Case "CounterPropose"
CounterPropose
Case "AddCalendar"
'in this case, we treat this as an accept, but we do not return anything back to the Chair -> we only add this to the Calendar and Busytime
Call UpdateOriginalInvitation(note)
If (profile.AutoRemoveFromInbox(0) = "1") Then note.RemoveFromFolder("($Inbox)")
Case "AcceptCounterProposal"
AcceptCounterProposal
Case "DeclineCounterProposal"
DeclineCounterProposal
End Select
'#############################
'If this should repeat then we need create the repeat instances
Action = note.tmpAction(0)
If note.HasItem("OrgRepeat") Then Call RepeatSave
'#############################
source.Reload
End Sub
'++LotusScript Development Environment:2:2:Queryopen:1:8
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
On Error 4005 Resume Next 'we want to trap whenever the parentnote is nothing
'notice documents always exist when opening them
Set ws = New NotesUIWorkspace
Set uidoc = Source
InstantiateObjectVariables
note.RemoveItem("MailOptions")
'if the user is in the preview pane, exit
If (uidoc.InPreviewPane) Then Exit Sub
'if this is a response document, get the parent
'we do this for both the chair and the invitee so we can detect missing parent documents
If (note.IsResponse) Then
Set parentnote = db.GetDocumentByUNID(note.ParentDocumentUNID)
If (parentnote Is Nothing) Then
'if this is a non-repeating note, see if we should re-create the document
If Not(note.hasitem("OrgRepeat")) Then
If (Msgbox("The appointment document has been deleted from your calendar, do you want to re-create it?",52) = 6) Then
Call ResurrectParentDoc
Else
note.tmpNoParent = True
note.DoNotProcess = True
End If
Else
Msgbox "This deleted appointment was part of a repeat set but is being recreated as a single appointment.",48
Call ResurrectParentDoc
End If
End If
End If
'remove any sendto items
note.RemoveItem "SendTo"
note.tmpOwner = Owner
'get any update items if we are not the chair
If Not (note.tmpOwner(0) = note.Chair(0)) Then CheckForNoticeUpdates
End Sub
'++LotusScript Development Environment:2:2:Postmodechange:1:8
Sub Postmodechange(Source As Notesuidocument)
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:8
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
If (ErrorStatus > 0) Then
continue = False
ErrorStatus = 0
End If
If ((Action = "Accept") Or (Action = "AddCalendar")) And note.HasItem("RepeatFor") Then note.Subject = "Repeat parent for " & note.Subject(0) & " - do not delete"
ws.ViewRefresh
End Sub
'++LotusScript Development Environment:2:2:Click:1:8
Sub Click(Source As Button)
Call ResurrectParentDoc
Call note.RemoveItem("tmpNoParent")
Call note.RemoveItem("DoNotProcess")
Call uidoc.Refresh
End Sub
K| -t
%K| S
K| Qp
K| Sp
Notice'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Postrecalc(Source As Notesuidocument)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Queryopen From Source Call Queryopen
On Event Querysave From Source Call Querysave
On Event Queryclose From Source Call Queryclose
On Event Postopen From Source Call Postopen
On Event Postrecalc From Source Call Postrecalc
End Sub
'++LotusScript Development Environment:2:2:Queryopen:1:12
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
On Error 4005 Resume Next 'we want to trap whenever the parentnote is nothing
'notice documents always exist when opening them
Set ws = New NotesUIWorkspace
Set uidoc = Source
InstantiateObjectVariables
note.RemoveItem("MailOptions")
'if the user is in the preview pane, exit
If (uidoc.InPreviewPane) Then Exit Sub
'if this is a response document, get the parent
'we do this for both the chair and the invitee so we can detect missing parent documents
If (note.IsResponse) Then
Call GetParentDocument
'if the user did not create a parent, exit sub
If (parentnote Is Nothing) Then Exit Sub
End If
If Not(parentnote Is Nothing) Then
If(note.HasItem("RescheduleWhich")) Then parentnote.RescheduleWhich = note.RescheduleWhich
If(note.HasItem("OriginalStartDate")) Then parentnote.OriginalStartDate = note.OriginalStartDate
End If
'remove any sendto items
note.RemoveItem "SendTo"
note.tmpOwner = Owner
'get any update items if we are not the chair
If Not (note.tmpOwner(0) = note.Chair(0)) Then CheckForNoticeUpdates
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
ErrorStatus = 0
'if we had to open the repeat parent, then make sure the user actually processsed the parent
If (OpenRepeatParent) Then
If Not(GetParentDocument()) Then
continue = False
Exit Sub
End If
End If
'if the user had delegated the meeting invitation and is now trying to take a different action ,warn them
If (note.NoticeType(0) = ORS_MSGTYPE_DELEGATING) Or (note.HasItem("tmpDidDelegate")) Then
Select Case note.tmpAction(0)
Case "Accept","PencilIn","Decline","CounterPropose"
Set nam = New NotesName(note.Delegee(0))
If (Messagebox("You previously delegated this invitation to "& nam.Common & ". By taking a different action now, the delegee will no longer receive any notifications relevant to this meeting. " _
& "You may also have missed important change notifications (reschedule, cancellation) that were sent to the delegee by the Chairperson. Continue?",36,"Warning") = 7) Then
note.NoticeType = ORS_MSGTYPE_DELEGATING
note.RemoveItem("tmpDidDelegate")
note.RemoveItem("tmpUserActions")
source.Reload
source.Refresh
ErrorStatus = 1
continue = False
Exit Sub
End If
End Select
End If
If note.HasItem("OrgRepeat") Then Call SaveOriginalValues
If(note.NoticeType(0) = ORS_MSGTYPE_RESCHEDULE) Then
If (note.SequenceNum(0) <= parentnote.sequencenum(0)) Then
Messagebox "This reschedule notice cannot be processed since it has a lower sequence than the parent document."
continue = False
ErrorStatus = 1
Exit Sub
End If
End If
DocWasSaved = True
source.Reload
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
If Not(DocWasSaved) Then Exit Sub
Select Case note.tmpAction(0)
Case "Accept","PencilIn"
AcceptInvitation
Case "Decline"
DeclineInvitation
Case "Delegate"
ErrorStatus = DelegateInvitation
If (ErrorStatus <> 0) Then
note.RemoveItem "tmpUserActions"
note.RemoveItem "tmpAction"
continue = False
ErrorStatus = 0
Exit Sub
End If
Case "CounterPropose"
CounterPropose
Case "AddCalendar"
'in this case, we treat this as an accept, but we do not return anything back to the Chair -> we only add this to the Calendar and Busytime
Context = GetContext
Select Case Context
Case 1,3
Call UpdateOriginalInvitation(parentnote)
Case 2,4
Call UpdateOriginalInvitation(note)
End Select
If (profile.AutoRemoveFromInbox(0) = "1") Then note.RemoveFromFolder("($Inbox)")
Case "AcceptCounterProposal"
AcceptCounterProposal
Case "DeclineCounterProposal"
DeclineCounterProposal
End Select
'#############################
'If this should repeat then we need create the repeat instances
Action = note.tmpAction(0)
If (Action = "AddCalendar") Then Action = "Accept"
If note.HasItem("OrgRepeat") Then
If (note.NoticeType(0) = ORS_MSGTYPE_RESCHEDULE) Then Action = ""
Call RepeatSave
End If
'#############################
If (ErrorStatus > 0) Then
continue = False
ErrorStatus = 0
Exit Sub
End If
If ((Action = "Accept") Or (Action = "AddCalendar")) And note.HasItem("RepeatIds") Then note.Subject = "Do Not Delete - Repeat parent for " & note.Subject(0)
Call MarkTempFields(note)
Call note.Save(True,True,True)
ws.ViewRefresh
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
If (OpenReschedule) Then
Set TmpNote = db.GetDocumentByUNID(UpdateResponses(0).misc2)
Call ws.EditDocument(False,TmpNote)
Elseif (OpenRepeatParent) Then
Call ws.editdocument(False,parentnote)
End If
DocWasSaved = False
End Sub
'++LotusScript Development Environment:2:2:Postrecalc:1:12
Sub Postrecalc(Source As Notesuidocument)
If (note.NoticeType(0) = ORS_MSGTYPE_COUNTER) Then
Set trdr = session.CreateDateRange
trdr.Text = uidoc.FieldGetText("NewTimeRange")
Set startdt = New NotesDateTime(uidoc.FieldGetText("Newdate") & " " & trdr.StartDateTime.TimeOnly)
Set enddt = New NotesDateTime(uidoc.FieldGetText("Newdate") & " " & trdr.EndDateTime.TimeOnly)
Recreate Appointment'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Click(Source As Button)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As BUTTON
Set Source = Bind(Objectname_)
On Event Click From Source Call Click
End Sub
'++LotusScript Development Environment:2:2:Click:1:12
Sub Click(Source As Button)
If (uidoc.EditMode = False) Then uidoc.EditMode = True
Call ResurrectParentDoc
Call note.RemoveItem("tmpNoParent")
' Call note.RemoveItem("DoNotProcess")
Call uidoc.Refresh
End Sub
tmpNoParent
0S0E
Categori_zeK
Send Docu_ment
_Remove From FolderK
Copy into\New Memo,
NewMemo
0S0E
tmpnewdoc
1S2S
Copy into\New Calendar Entry4
NewCalendarEntry
0S0E
tmpnewdoc
1S2S
Copy into\New Task,
NewTask
0S0E
tmpnewdoc
1S2S
Copy into\New GroupK,
NewGroup
0S0E
tmpnewdoc
1S2S
O=Lotus Notes
O=Lotus Notes
PURSAFO
|.:#U
O=Lotus Notes
CN=Lotus Notes Template Development/O=Lotus Notes
PURSAFO
Fde!f^^
StartDate
TimeRange
$FormPublicAccess
tmpStartDate
tmpEndDate
$TITLE
$INFO
$WINDOWTITLE
$Script
$$Script_O
$$ScriptName
$$FormScript
$$$FormScript_O
NewDate
NewTimeRange
tmpNewStart
tmpNewEnd
$BODY
$ACTIONS
$SCRIPTOBJ_4
$SCRIPTOBJ_5
$SCRIPTOBJ_6
$SCRIPTOBJ_11
$SCRIPTOBJ_14
$SCRIPTOBJ_15
$PublicAccess
New Calendar Entry
Subject
"Small Fonts
'++LotusScript Development Environment:2:5:(Options):0:74
Option Public
Use "AppointmentProcessing" 'includes NoticeProcessing and AppointmentResponses
Use "NoticeResponses"
Use "ResourceProcessing" 'includes RepeatProcessing
Use "DocumentConversions"
'++LotusScript Development Environment:2:5:(Forward):0:1
'++LotusScript Development Environment:2:5:(Declarations):0:10
'(Globals):
Dim startdt As NotesDateTime
Dim enddt As NotesDateTime
Dim remdt As NotesDateTime
Dim trdr As NotesDateRange
Dim Intl As NotesInternational
Dim tmpList() As Variant
Dim SelectedDate As Variant
Dim AppointmentAlarms As Integer
Dim AnniversaryAlarms As Integer
Dim EventAlarms As Integer
Dim DocWasSaved As Integer
Dim ErrorStatus As Integer
Dim AlarmSet As Integer
Dim InAlarmFolder As Integer
Appointment'++LotusScript Development Environment:2:5:(Options):0:66
'++LotusScript Development Environment:2:5:(Forward):0:1
Declare Sub Postopen(Source As Notesuidocument)
Declare Sub Querysave(Source As Notesuidocument, Continue As Variant)
Declare Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Declare Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Declare Sub Postrecalc(Source As Notesuidocument)
Declare Sub Postmodechange(Source As Notesuidocument)
Declare Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
'++LotusScript Development Environment:2:5:(Declarations):0:2
'++LotusScript Development Environment:2:2:BindEvents:1:129
Private Sub BindEvents(Byval Objectname_ As String)
Static Source As NOTESUIDOCUMENT
Set Source = Bind(Objectname_)
On Event Postopen From Source Call Postopen
On Event Querysave From Source Call Querysave
On Event Queryopen From Source Call Queryopen
On Event Queryclose From Source Call Queryclose
On Event Postrecalc From Source Call Postrecalc
On Event Postmodechange From Source Call Postmodechange
On Event Querymodechange From Source Call Querymodechange
End Sub
'++LotusScript Development Environment:2:2:Postopen:1:12
Sub Postopen(Source As Notesuidocument)
If (source.InPreviewPane) Then Exit Sub
source.AutoReload = False
On Error Goto ErrorRoutine
'if the user wants to open the reschedule notice, go for it!
If (OpenReschedule) Then
Set note = db.GetDocumentByUNID(UpdateResponses(0).misc2)
' Call uidoc.Close
Set uidoc = ws.EditDocument(False,note)
End If
'if this is a new document we need to set up some defaults
If source.IsNewDoc Then
Set uidoc = source
Set note = uidoc.Document
Call GetCalendarOwner
If (note.AppointmentType(0) = "3") Then Call CreateInviteeTable(note)
Set trdr = session.CreateDateRange
If (Hour(SelectedDate) > 0) Then
'the user selected a date and time
note.StartDate = SelectedDate
note.StartDateTime = SelectedDate
PreferredDuration = profile.DefaultDuration(0)
Set enddt = New NotesDateTime(note.StartDateTime(0))
enddt.AdjustMinute(PreferredDuration)
Set note.EndDateTime = enddt
'set thet ime range value
Set trdr.StartDateTime = startdt
Set trdr.EndDateTime = enddt
Set note.TimeRange = trdr
Elseif (SelectedDate <> "") Then
'the user selected a date but now time
note.StartDate = SelectedDate
End If
note.ReminderTime = note.StartDateTime
note.From = session.UserName
note.Principal = Owner
note.ExcludeFromView = "D"
AlarmSet = 0
If (profile.EnableAlarms(0) = "1") And (profile.AutoSetAlarms(0) = "1") Then
Select Case note.AppointmentType(0)
Case "0","3"
If profile.SetAlarmAppointment(0) = "1" Then Call note.ReplaceItemValue("$Alarm", 1)
Case "1"
If profile.SetAlarmAnniversary(0) = "1" Then Call note.ReplaceItemValue("$Alarm", 1)
Case "2"
If profile.SetAlarmEvent(0) = "1" Then Call note.ReplaceItemValue("$Alarm", 1)
Case "4"
If (profile.SetAlarmReminder(0)) = "1" Then Call note.ReplaceItemValue("$Alarm",1)
End Select
End If
note.Chair = Owner
note.tmpOwner = Owner
If (profile.CalEntryType(0) = "1") Then note.BookFreeTime = "1"
'note.EndDateTime = note.StartDateTime
source.Reload
If (session.UserName = Owner) Then
source.RefreshHideFormulas
Else
source.refresh
End If
NewDocument = True
Else
'DO NOT SET NewDocument = FALSE
'In some cases, we set it to true in QueryOpen!!!
If source.InPreviewPane Then Exit Sub
If source.EditMode And note.HasItem("OrgRepeat") Then
If note.HasItem("RepeatIds") Then
source.EditMode = False
Else
Call SaveOriginalValues
End If
End If
End If
note.tmpApptFlags = note.AppointmentType
note.tmpOwner = Owner
DocWasSaved = False
Exit Sub
ErrorRoutine:
Messagebox Error & " (PostOpen)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:Querysave:1:12
Sub Querysave(Source As Notesuidocument, Continue As Variant)
'refresh the document to get any updated values
ErrorStatus = 0
source.reload
source.refresh
'the first thing we do is make sure the document can be saved
'if the current user is not the owner, and the HideEntries is set, warn the user
If (db.CurrentAccessLevel < ACLLEVEL_AUTHOR) And (note.OrgConfidential(0) = "1") Then
Messagebox "You have indicated that you want this document hidden from public viewing, but since you are considered a public viewer, " & _
"you will not be able to save this document. This option will be de-selected.",0,"Warning"
note.OrgConfidential = ""
source.Reload
source.Refresh
End If
'if this is not a new document, and the originaltype was an invitation but no longer is, make sure they want to proceed
If Not(NewDocument) And (Owner = note.Chair(0))Then
If ((OriginalType = "3") And (note.AppointmentType(0) <> "3")) Then
If Messagebox("Changing this entry from an Invitation will cancel this meeting. Continue?",36,"Cancel Invitation") = 6 Then
If Not(note.IsResponse) Then
If (note.HasItem("PostedDate")) Then Call CancelAppointment
Else
If (parentnote.HasItem("PostedDate")) Then Call CancelAppointment
End If
Else
Continue = False
DocWasSaved = False
Exit Sub
End If
End If
End If
'see if we are creating a document in the past
If (Owner = note.Chair(0)) And ((note.AppointmentType(0) <> "1") And (note.AppointmentType(0) <> "2")) And (NewDocument) And Not(note.HasItem("RepeatFor")) Then
Set nowdt = New NotesDateTime("")
Call nowdt.SetNow
Set apptdt = New NotesDateTime(note.StartDateTime(0))
If nowdt.TimeDifference(apptdt) > 0 Then
If(Msgbox("This appointment is being created in the past. Continue?",36,"Continue") <> 6) Then
Continue = False
ErrorStatus = 2
DocWasSaved = False
Exit Sub
Else
ErrorStatus = 0
End If
End If
End If
'check for any conflicts if this is not a reminder and the Warn for Conflicts button is selected
If (note.OrgDontDoubleBook(0) = "1") And (note.BookFreeTime(0) <> "1") And Not(note.HasItem("RepeatFor")) Then
If Isarray(OriginalStartDate) Then
If (OriginalStartDate(0) <> note.StartDateTime(0)) Then
If (CheckIfConflictExists) Then
Continue = False
DocWasSaved = False
Exit Sub
End If
End If
Else
If (CheckIfConflictExists) Then
Continue = False
DocWasSaved = False
Exit Sub
End If
End If
End If
If (NewDocument) And (note.hasitem("RepeatFor")) And (note.AppointmentType(0) = "3") Then note.Broadcast = "1"
'if the invitee is modifying the date/time, see if they want to proceed
If (Owner <> note.Chair(0)) Then
If (OriginalStartDate(0) <> note.StartDateTime(0)) Or (OriginalEndDate(0) <> note.EndDateTime(0)) Then
If(Messagebox("You are not the originator of this entry. Are you sure you want to change the date/time?",36,"Warning") = 7) Then
'the user does not want to change the date/time
Set trdr = session.CreateDateRange
Set startdt = New NotesDateTime(OriginalStartDate(0))
Set enddt = New NotesDateTime(OriginalEndDate(0))
Set trdr.StartDateTime = startdt
Set trdr.EndDateTime = enddt
Set note.StartDate = startdt
Set note.StartDateTime = startdt
Set note.EndDateTime = enddt
Set note.TimeRange = trdr
source.Reload
source.Refresh
End If
End If
End If
On Error Goto ErrorRoutine
If note.HasItem("$Alarm") Then
If Not(note.HasItem("$AlarmOffset") Or note.HasItem("$AlarmTime")) Then
'they want it set automatically so default it as shown in calendar profile
If (AlarmDesc(0) = "") Then Call note.ReplaceItemValue("$AlarmDescription",note.Subject(0))
End If
Else
note.RemoveItem("$AlarmOffset")
note.RemoveItem("$AlarmTime")
note.RemoveItem("$AlarmDescription")
End If
If Not(note.HasItem("DocAuthors")) Then Set item = New NotesItem(note, "DocAuthors", note.From, AUTHORS)
'if this is a repeating meeting, see if changes need to be copied
If Not(NewDocument) And note.HasItem("OrgRepeat") Then
Call GetModifiedSettings
If (CancelChange) Then
continue = False
Exit Sub
End If
End If
DocWasSaved = True
source.Reload
Exit Sub
ErrorRoutine:
Messagebox Error & " (QuerySave)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:Queryopen:1:12
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
'if this is a new document, get the currently selected time from the Calendar view
If IsNewDoc Then
Set ws = New NotesUIWorkspace
Set session = New NotesSession
Set db = session.CurrentDatabase
On Error Resume Next
Set profile = db.GetProfileDocument("CalendarProfile")
If Err > 0 Then
Err = 0
Messagebox "This mail file does not have a Calendar Profile. " &_
"Please ask the owner of this mail file to select Actions, Calendar Tools, Calendar Profile from the menu to create one.", 0, "Calendar Profile"
continue = False
Exit Sub
End If
If (profile.Owner(0) <> "") Then
If (db.CurrentAccessLevel < ACLLEVEL_AUTHOR) And (profile.CalEntryHide(0) = "1") Then
Set nam = New NotesName(profile.Owner(0))
Messagebox nam.Common & " has specified that new Calendar Entries are hidden from public viewing. You must have at least author access to create new Calendar Entries.",48,"Warning"
continue = False
Exit Sub
End If
End If
SelectedDate = ws.CurrentCalendarDateTime
Set startdt = New NotesDateTime(SelectedDate)
End If
'if this is a new document, then exit this routine
If Isnewdoc Or source.InPreviewPane Then Exit Sub
Set ws = New NotesUIWorkspace
Set uidoc = source
InstantiateObjectVariables
On Error Goto ErrorRoutine
On Error 4005 Resume Next 'this will handle the parentnote not being found
Set trdr = session.CreateDateRange
'see if this is a document being created from an existing one
If (note.HasItem("tmpNewDoc")) Then
NewDocument = True
Exit Sub
End If
If (note.HasItem("$Alarm")) Then
AlarmSet = 1
InAlarmFolder = True
End If
note.tmpOwner = Owner
If (note.IsResponse) Then
Set parentnote = db.GetDocumentByUNID(note.ParentDocumentUNID)
If (parentnote Is Nothing) Then
'this must be part of a repeat set -> we do not call GetParentDocument because that function is used to recreate the parent if it can't be found
'we do not need to create the parent document since this was part of a repeat set
If (note.HasItem("OrgRepeat")) Then
Messagebox "This calendar entry belonged to a repeat set. The parent document cannot be found so this entry will be converted to a non-repeating entry.",0,"Status"
note.RemoveItem("$REF")
note.RemoveItem("$REFOPTIONS")
note.RemoveItem("OrgRepeat")
Call note.Save(True,True,True)
End If
End If
End If
'we need to get the original start and end date times
OriginalStartDate = note.StartDateTime
OriginalEndDate = note.EndDateTime
OriginalType = note.AppointmentType(0)
If (note.AppointmentType(0) <> "3") Then Exit Sub
'get any update items if we are not the chair
If Not (note.tmpOwner(0) = note.Chair(0)) Then
Call note.RemoveItem("MailOptions")
Call note.RemoveItem("SendTo")
CheckForNoticeUpdates
note.SendTo = ""
Else
'we are the chair
If (note.IsResponse) Then
'this is a repeat instance; we need to add our parent's required & optional attendees
OriginalRequired = parentnote.RequiredAttendees
OriginalOptional = parentnote.OptionalAttendees
OriginalRoom = parentnote.Room(0)
Call CreateInviteeTable(parentnote)
Else
OriginalRequired = note.RequiredAttendees
OriginalOptional = note.OptionalAttendees
OriginalRoom = note.Room(0)
Call CreateInviteeTable(note)
End If
End If
Print Now
Exit Sub
ErrorRoutine:
Messagebox Error & " (QueryOpen)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:Queryclose:1:12
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Dim InstanceWarned As Integer
'if the document is in read mode, was not saved, or is a conflict, bail
If source.EditMode = False Or DocWasSaved = False Then Exit Sub
'we need to make this check here -> if the user is in preview pane, the note object would not be set
If note.HasItem("$Conflict") Then Exit Sub
'if this is a parent document, check for PostedDate
If Not(NewDocument) Then
If (note.AppointmentType(0) = "3") Then
If (OriginalStartDate(0) <> note.StartDateTime(0)) Or (OriginalEndDate(0) <> note.EndDateTime(0)) Then
IsDateChange = True
Else
IsDateChange = False
End If
'see if the room has changed
If (OriginalRoom <> note.Room(0)) And (OriginalRoom <> "") Then
IsRoomChange = True
note.OriginalRoom = OriginalRoom
Else
IsRoomChange = False
End If
If (IsDateChange Or IsRoomChange) And (note.chair(0) = owner) Then
If (note.IsResponse) Then
If (parentnote.HasItem("PostedDate") Or (note.RequiredResources(0) <> "") Or (note.RoomRequired(0) = "1" And note.Room(0) <> "")) Then NeedsReschedule = True
Else
If (note.HasItem("PostedDate")) Or (note.RequiredResources(0) <> "") Or (note.RoomRequired(0) = "1" And note.Room(0) <> "") Then NeedsReschedule = True
End If
End If
End If
End If
If (NeedsReschedule) Then note.SequenceNum = note.SequenceNum(0) + 1
'If they have not indicated that this should repeat then we don't need to do this stuff
'If they have not indicated that this should repeat then we don't need to do this stuff
If note.HasItem("OrgRepeat") And (note.tmpAction(0) <> "Confirm") Then
Action = note.tmpAction(0)
Call RepeatSave
End If
If (NeedsReschedule) Then Call RescheduleAppointment
Select Case note.tmpAction(0)
Case "Confirm"
ConfirmAppointment
Case "Cancel"
CancelAppointment
Case "Decline"
'this gets called if an invitee changes their mind
DeclineInvitation
Case "Delegate"
'the invitee is delegating a meeting that has been accepted
DelegateInvitation
End Select
On Error Goto ErrorRoutine
If note.HasItem("$Alarm") Then
ws.EnableAlarms(True)
If Not(note.HasItem("$AlarmOffset") Or note.HasItem("$AlarmTime")) Then
'they want it set automatically so default it as shown in calendar profile
If (AlarmDesc(0) = "") Then Call note.ReplaceItemValue("$AlarmDescription",note.Subject(0))
End If
'if the document is not in the Alarms folder, put it in there if it is not the parent document of a repeat set
If Not(InAlarmFolder) Then
If Not(note.HasItem("RepeatDates")) Then
If (note.noteid = "0") Then Call note.Save(True,True,True)
Call note.PutInFolder("$Alarms")
End If
Else
'the document is in the alarms folder, but if the times changed, then we need to add it back in if it is not the parent document of a repeat set
'we only need to check startdate time, regardless of appointment type since the alarm is based upon the start date time
If(OriginalStartDate(0) <> note.StartDateTime(0)) And Not(note.HasItem("RepeatIds"))Then Call note.PutInFolder("$Alarms")
End If
ws.CheckAlarms
End If
'check to see if this is a repeating entry and the repeat documents were not created
If (NewDocument) And (note.HasItem("OrgRepeat")) And Not(note.HasItem("RepeatIds")) Then Call RepeatSave
'see if we should invite the users/resources to this meeting
If (note.AppointmentType(0) = "3") And (note.Chair(0) = Owner) And (ErrorStatus = 0) Then
If (note.Resources(0) <> "") Or (note.SendTo(0) <> "") Or (note.CopyTo(0) <> "") Or (note.RoomRequired(0) = "1" And note.RoomToReserve(0) <> "" And OriginalRoom = "") Then
If Messagebox("Do you want to send this to the people/resources you invited?", 4 + 32, "Close") = 6 Then
'the user wants to send this out
'first, invite users
If (note.SendTo(0) <> "") Or (note.CopyTo(0) <> "") Then
If note.HasItem("Body") Then
ErrorStatus = SendInvitation
If (errorstatus > 0) Then
continue = False
ErrorStatus = 0
Exit Sub
End If
Else
ErrorStatus = SendInvitation
If (errorstatus > 0) Then
continue = False
ErrorStatus = 0
Exit Sub
End If
End If
If (note.HasItem("OrgRepeat")) And (note.IsResponse) And (ChangeWhich <> "0") Then
Messagebox "The people/resources invited will be for this repeat instance only.",0,"Status"
InstanceWarned =True
End If
End If
'invite any resources -> resources are on a per repeat instance basis, so we only invite resources for this meeting
If (note.Resources(0) <> "") Then
Call InviteResources(note)
If (note.HasItem("OrgRepeat")) And (note.IsResponse) And (ChangeWhich <> "0") And Not(InstanceWarned) Then Messagebox "The people/resources invited will be for this repeat instance only.",0,"Status"
End If
'invite the room -> the user can change the room for multiple repeat instances
If (note.RoomRequired(0) = "1") And (note.RoomToReserve(0) <> "") Then
If note.HasItem("RepeatFor") And (NewDocument) Then
note.Subject = "Do Not Delete - Repeat parent for " & note.Subject(0)
End If
If note.HasItem("OrgRepeat") And Not(note.IsResponse) Then note.RemoveItem("CalendarDateTime")
Call MarkTempFields(note)
Call note.Save(True,True,True)
If (note.tmpAction(0) = "CounterPropose") Then
note.NoticeType = ORS_MSGTYPE_COUNTER
note.Form = "Notice"
Call uidoc.Reload
noteunid = note.UniversalID
Set note = db.GetDocumentByUNID(noteunid)
Set uidoc = ws.EditDocument(True,note)
End If
' If notice Is Nothing Then
'Call MarkTempFields
'note.Save True,True
ws.ViewRefresh
' Exit Sub
' End If
%REM
If notice.NoticeType(0) = ORS_MSGTYPE_RESCHEDULE Or _
notice.NoticeType(0) = ORS_MSGTYPE_CONFIRMATION Or _
notice.NoticeType(0) = ORS_MSGTYPE_CANCEL Or _
notice.NoticeType(0) = ORS_MSGTYPE_STATUSUPDATE Then
note.OriginalAttendees = OriginalAttendees
'Call SendUpdateNotice
End If
%ENDREM
Exit Sub
ErrorRoutine:
Messagebox Error & " (QueryClose)"
Exit Sub
End Sub
'++LotusScript Development Environment:2:2:Postrecalc:1:12
Sub Postrecalc(Source As Notesuidocument)
Dim startitem As NotesItem
Dim enditem As NotesItem
If Not (source.EditMode) Then Exit Sub
On Error Goto ErrorRoutine
'if the user is attempting to change the appointment type of a repeating meeting, don't let them
If Not(NewDocument) And (note.HasItem("OrgRepeat")) And (note.IsResponse) And (OriginalType <> note.AppointmentType(0)) Then note.AppointmentType = OriginalType
'if there is no chair item and there should be, add it
If Not(note.HasItem("Chair")) Then note.Chair = Owner
'if the user is changing this from a non-invitation to an invitation, we need to set up the invitee objects
If (note.AppointmentType(0) = "3" And OriginalType <> "3") And (note.Chair(0) = Owner) Then Call CreateInviteeTable(note)
'First see if we have alarm set by default for this type and the new type doesn't have default alarm specified in Calendar Profile
If AlarmSet = 0 And note.HasItem("$Alarm") Then
Call note.RemoveItem("$Alarm")
End If
'If $Alarm is not set and $AlarmOffset is not, we check if it should be
'(they would both be set if the user set the alarm manually)
If Not(note.HasItem("$Alarm")) And Not(note.HasItem("$AlarmOffset") Or note.HasItem("$AlarmTime")) And (note.tmpAlarmOff(0) <> "1") And (profile.EnableAlarms(0) = "1") And (profile.AutoSetAlarms(0) = "1") Then
Select Case note.AppointmentType(0)
Case "0","3"
If profile.SetAlarmAppointment(0) = "1" Then Call note.ReplaceItemValue("$Alarm", 1)
Case "1"
If profile.SetAlarmAnniversary(0) = "1" Then Call note.ReplaceItemValue("$Alarm", 1)
Case "2"
If profile.SetAlarmEvent(0) = "1" Then Call note.ReplaceItemValue("$Alarm", 1)
Case "4"
If (profile.SetAlarmReminder(0)) = "1" Then Call note.ReplaceItemValue("$Alarm",1)
End Select
End If
'tmpFreeTime is set when you click the FreeTime action
Select Case note.tmpFreeTime(0)
'The first time through, we are only setting the Attendee list so that the FreeTime dialog can use it
Case "0"
OriginalTimeRange = note.TimeRange
note.tmpFreeTime = "1"
'we need to get the actual text from the time control since LotusScript date/time objects don't work as well as Notes objects
trdr.Text = uidoc.FieldGetText("TimeRange")
Set startdt = New NotesDatetime(uidoc.FieldGetText("StartDate") & " " & trdr.StartDateTime.TimeOnly)
Set enddt = New NotesDateTime(uidoc.FieldGetText("StartDate") & " " & trdr.EndDateTime.TimeOnly)
Set note.StartDateTime = startdt
Set note.EndDateTime = enddt
note.StartDate = note.StartDateTime
'The second time through, we are recalcing TimeRange from StartDateTime and EndDateTime
Case "1"
note.RemoveItem("tmpFreeTime")
Set startitem = note.GetFirstItem("StartDateTime")
Set enditem = note.GetFirstItem("EndDateTime")
Set note.StartDate = startitem.DateTimeValue
Set trdr.StartDateTime = startitem.DateTimeValue
Set trdr.EndDateTime = enditem.DateTimeValue
Set note.TimeRange = trdr
'otherwise we are recalcing based on what is on the screen
Case Else
If (note.AppointmentType(0) = "0") Or (note.AppointmentType(0) = "3") Then
'this is a personal appointment or a meeting
trdr.Text = uidoc.FieldGetText("TimeRange")
Set startdt = New NotesDatetime(uidoc.FieldGetText("StartDate") & " " & trdr.StartDateTime.TimeOnly)
Set enddt = New NotesDateTime(uidoc.FieldGetText("StartDate") & " " & trdr.EndDateTime.TimeOnly)
BlindCopyToList of undisclosed people to send copies of memo.
Subject:
ReplyText
MailStEd|
1S2S
Prefix
ReplyText
0R1S2S8S9S11S13S
Prefix
ReplyText
Subject
Topic
Subject
0R1S2S5S6S8S10S11S12S14S16S
Prefix
Subj"
0R10S12S16S17S19S21S22S23S
Subject
0S0E
SubjectSubject of memo.
Subject:
Subject
tmpDisplaySubjectSubject of memo.
0S0E
tmpDisplayLink
$HideMailHeader
Moods
PostedDate
SenderTag
Moods
7S9S11S13S14S15S16S17S19S20S21S22S25S27S
Edit Document
ForwardK
0S0E
New Memo.
0S0E
Delete
0S0E
_Move To Folder...
Delivery Information...Kz
DeliveryInfo
Delivery Information
4S5S6S7S8S9S10S12S
_Forward
Reply
Reply
0S0E
Reply With History
Reply with History
This document is truncated.
4S8S10S13S
Reply with history
Address...
0S0E
PostedDateh
5S6S7S8S
Close
0S0E
PostedDateY
0S0E
Reply To All
Owner
CalendarProfile
Owner
1S2S6S
CanonicalName
Owner
Owner
0R1S2S6S9S10S12S14S
Names
InheritedSendTo
0R1S2S
Try 4 different ways of removing the current sender from the new recipient list
0RR1S
Names1 compares the original names list with the canonical name plus the domain name and if found replaces with a null - works
0R1S
Names1
Names
CanonicalName
Names
CanonicalName
0R1S2S6S7S8S15S21S
Names 2 compares just the common name of the current user plus the domain against the result of Names 1 and replaces with null - appears to work
0RR1S
Names2
Names1
CanonicalName
Names1b
CanonicalName
0R1S2S6S10S12S13S20S26S31S
Names3 compares the canonical names against the Names 2 list and replaces with a null.
0RR1S
Names3
Names2
CanonicalName
Names 4 compares the common name only - no domain and if found replaces with null. Also makes sure there are no duplicates or extra spaces.
0RR1S
Names4
Names3
CanonicalName
0R1S2S10S14S17S
Names4
0R3S4S6S11S
Append the InheritedFromDomain to all entries which are left and let the @OptimizeMailAddress take care of duplicates. This ensures that mail will route the way that the message came in which lessens the chance of delivery failures...
0RR1S
Names4a
Names4
InheritedFromDomain
0R1S2S
Look for all addresses whose last domain is the same as the sender's domain - tack on the whole FromDomain
0RR1S
Names5
Names4a
Names4a
InheritedFromDomain
Names4a
InheritedFromDomain
0R1S2S6S10S12S13S14S15S21S25S29S31S32S33S34S
Find all the addresses without a domain and attach FromDomain
0RR1S
Names6
Names5
Names5
Names5
0R1S2S6S10S12S13S14S15S19S22S
Names7
Names5
Names6
Names6
InheritedFromDomain
0R1S2S6S8S9S10S11S12S
Find everyone whose domain is the same as yours and strip it off
BlindCopyToList of undisclosed people to send copies of memo.
Subject:
Subject
Topic
Subject
1S2S5S6S8S10S
Subj"
0R10S12S16S17S19S21S22S23S
Subject
0S0E
SubjectSubject of memo.
Subject:
Subject
tmpDisplaySubjectSubject of memo.
0S0E
tmpDisplayLink
$HideMailHeader
Moods
PostedDate
SenderTag
Moods
7S9S11S13S14S15S16S17S19S20S21S22S25S27S
Edit Document
ForwardK
0S0E
New Memo.
0S0E
Delete
0S0E
_Move To Folder...
Delivery Information...Kz
DeliveryInfo
Delivery Information
4S5S6S7S8S9S10S12S
_Forward
Reply
Reply
0S0E
Reply With History
Reply with History
This document is truncated.
4S8S10S13S
Reply with history
Address...
0S0E
PostedDateh
5S6S7S8S
Close
0S0E
PostedDateY
0S0E
Reply To All
Owner
CalendarProfile
Owner
1S2S6S
CanonicalName
Owner
Owner
0R1S2S6S9S10S12S14S
Names
InheritedSendTo
0R1S2S
Try 4 different ways of removing the current sender from the new recipient list
0RR1S
Names1 compares the original names list with the canonical name plus the domain name and if found replaces with a null - works
0R1S
Names1
Names
CanonicalName
Names
CanonicalName
0R1S2S6S7S8S15S21S
Names 2 compares just the common name of the current user plus the domain against the result of Names 1 and replaces with null - appears to work
0RR1S
Names2
Names1
CanonicalName
Names1b
CanonicalName
0R1S2S6S10S12S13S20S26S31S
Names3 compares the canonical names against the Names 2 list and replaces with a null.
0RR1S
Names3
Names2
CanonicalName
Names 4 compares the common name only - no domain and if found replaces with null. Also makes sure there are no duplicates or extra spaces.
0RR1S
Names4
Names3
CanonicalName
0R1S2S10S14S17S
Names4
0R3S4S6S11S
Append the InheritedFromDomain to all entries which are left and let the @OptimizeMailAddress take care of duplicates. This ensures that mail will route the way that the message came in which lessens the chance of delivery failures...
0RR1S
Names4a
Names4
InheritedFromDomain
0R1S2S
Look for all addresses whose last domain is the same as the sender's domain - tack on the whole FromDomain
0RR1S
Names5
Names4a
Names4a
InheritedFromDomain
Names4a
InheritedFromDomain
0R1S2S6S10S12S13S14S15S21S25S29S31S32S33S34S
Find all the addresses without a domain and attach FromDomain
0RR1S
Names6
Names5
Names5
Names5
0R1S2S6S10S12S13S14S15S19S22S
Names7
Names5
Names6
Names6
InheritedFromDomain
0R1S2S6S8S9S10S11S12S
Find everyone whose domain is the same as yours and strip it off