mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-21 22:32:45 +00:00
Monotone-Parent: eb4066dbb2d4884ebc2bc331edf7b31b88a6a893
Monotone-Revision: e8f995e6002f41264c59c3e47d28de38b92c16e7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2008-10-01T19:32:14 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
17
ChangeLog
17
ChangeLog
@@ -1,3 +1,20 @@
|
||||
2008-10-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* SoObjects/Appointments/SOGoCalendarComponent.m
|
||||
([SOGoCalendarComponent
|
||||
-sendEMailUsingTemplateNamed:newPageNameforObject:objecttoAttendees:attendees]):
|
||||
changed method to only accept one event from now on, since we
|
||||
actually use less information with the Lightning-inspired
|
||||
templates than before.
|
||||
|
||||
* SoObjects/Appointments/SOGoAptMailNotification.m ([-homePageURL])
|
||||
([-setHomePageURL:newhomePageURL], [-appointmentURL], [-viewTZ])
|
||||
([-setViewTZ:newViewTZ]): removed obsolete accessors.
|
||||
|
||||
* SoObjects/Appointments/SOGoAptMailICalReply.m
|
||||
([SOGoAptMailICalReply -attendeeName]): new method returning the
|
||||
cn of the attendee.
|
||||
|
||||
2008-09-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults
|
||||
|
||||
@@ -30,8 +30,6 @@ Appointments_OBJC_FILES = \
|
||||
\
|
||||
SOGoAptMailNotification.m \
|
||||
SOGoAptMailInvitation.m \
|
||||
SOGoAptMailUpdate.m \
|
||||
SOGoAptMailRemoval.m \
|
||||
SOGoAptMailDeletion.m \
|
||||
SOGoAptMailICalReply.m \
|
||||
|
||||
@@ -46,33 +44,21 @@ Appointments_LOCALIZED_RESOURCE_FILES = Localizable.strings
|
||||
Appointments_COMPONENTS += \
|
||||
SOGoAptMailDutchInvitation.wo \
|
||||
SOGoAptMailDutchICalReply.wo \
|
||||
SOGoAptMailDutchUpdate.wo \
|
||||
SOGoAptMailDutchRemoval.wo \
|
||||
SOGoAptMailDutchDeletion.wo \
|
||||
SOGoAptMailEnglishInvitation.wo \
|
||||
SOGoAptMailEnglishICalReply.wo \
|
||||
SOGoAptMailEnglishUpdate.wo \
|
||||
SOGoAptMailEnglishRemoval.wo \
|
||||
SOGoAptMailEnglishDeletion.wo \
|
||||
SOGoAptMailFrenchInvitation.wo \
|
||||
SOGoAptMailFrenchICalReply.wo \
|
||||
SOGoAptMailFrenchUpdate.wo \
|
||||
SOGoAptMailFrenchRemoval.wo \
|
||||
SOGoAptMailFrenchDeletion.wo \
|
||||
SOGoAptMailGermanInvitation.wo \
|
||||
SOGoAptMailGermanICalReply.wo \
|
||||
SOGoAptMailGermanUpdate.wo \
|
||||
SOGoAptMailGermanRemoval.wo \
|
||||
SOGoAptMailGermanDeletion.wo \
|
||||
SOGoAptMailItalianInvitation.wo \
|
||||
SOGoAptMailItalianICalReply.wo \
|
||||
SOGoAptMailItalianUpdate.wo \
|
||||
SOGoAptMailItalianRemoval.wo \
|
||||
SOGoAptMailItalianDeletion.wo \
|
||||
SOGoAptMailSpanishInvitation.wo \
|
||||
SOGoAptMailSpanishICalReply.wo \
|
||||
SOGoAptMailSpanishUpdate.wo \
|
||||
SOGoAptMailSpanishRemoval.wo \
|
||||
SOGoAptMailSpanishDeletion.wo \
|
||||
|
||||
|
||||
|
||||
@@ -269,9 +269,8 @@
|
||||
forUID: currentUID];
|
||||
}
|
||||
|
||||
[self sendEMailUsingTemplateNamed: @"Update"
|
||||
forOldObject: oldEvent
|
||||
andNewObject: [newEvent itipEntryWithMethod: @"request"]
|
||||
[self sendEMailUsingTemplateNamed: @"Invitation"
|
||||
forObject: [newEvent itipEntryWithMethod: @"request"]
|
||||
toAttendees: updateAttendees];
|
||||
}
|
||||
|
||||
@@ -304,8 +303,7 @@
|
||||
{
|
||||
[self _handleRemovedUsers: attendees];
|
||||
[self sendEMailUsingTemplateNamed: @"Deletion"
|
||||
forOldObject: oldEvent
|
||||
andNewObject: [newEvent itipEntryWithMethod: @"cancel"]
|
||||
forObject: [newEvent itipEntryWithMethod: @"cancel"]
|
||||
toAttendees: attendees];
|
||||
}
|
||||
|
||||
@@ -325,8 +323,7 @@
|
||||
{
|
||||
[self _handleAddedUsers: attendees fromEvent: newEvent];
|
||||
[self sendEMailUsingTemplateNamed: @"Invitation"
|
||||
forOldObject: oldEvent
|
||||
andNewObject: [newEvent itipEntryWithMethod: @"request"]
|
||||
forObject: [newEvent itipEntryWithMethod: @"request"]
|
||||
toAttendees: attendees];
|
||||
}
|
||||
}
|
||||
@@ -351,8 +348,7 @@
|
||||
{
|
||||
[self _handleAddedUsers: attendees fromEvent: newEvent];
|
||||
[self sendEMailUsingTemplateNamed: @"Invitation"
|
||||
forOldObject: nil
|
||||
andNewObject: [newEvent itipEntryWithMethod: @"request"]
|
||||
forObject: [newEvent itipEntryWithMethod: @"request"]
|
||||
toAttendees: attendees];
|
||||
}
|
||||
|
||||
@@ -470,7 +466,7 @@
|
||||
[self _addOrUpdateEvent: event forUID: uid];
|
||||
#warning fix this when sendEmailUsing blabla has been cleaned up
|
||||
[self sendEMailUsingTemplateNamed: @"Invitation"
|
||||
forOldObject: nil andNewObject: event
|
||||
forObject: event
|
||||
toAttendees: [NSArray arrayWithObject: person]];
|
||||
[person release];
|
||||
[elements
|
||||
@@ -502,7 +498,7 @@
|
||||
[self _removeEventFromUID: uid];
|
||||
#warning fix this when sendEmailUsing blabla has been cleaned up
|
||||
[self sendEMailUsingTemplateNamed: @"Deletion"
|
||||
forOldObject: nil andNewObject: event
|
||||
forObject: event
|
||||
toAttendees: [NSArray arrayWithObject: person]];
|
||||
[person release];
|
||||
[elements
|
||||
@@ -619,8 +615,7 @@
|
||||
{
|
||||
[self _handleRemovedUsers: attendees];
|
||||
[self sendEMailUsingTemplateNamed: @"Deletion"
|
||||
forOldObject: nil
|
||||
andNewObject: [occurence itipEntryWithMethod: @"cancel"]
|
||||
forObject: [occurence itipEntryWithMethod: @"cancel"]
|
||||
toAttendees: attendees];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Appointment <#AptStartDate /> at <#AptStartTime /> has been cancelled</#IsSubject>
|
||||
<#IsBody>
|
||||
The appointment at <#AptStartDate /> <#AptStartTime /> has been cancelled by <#Organizer />.
|
||||
</#IsBody>
|
||||
<#IsSubject>Gebeurtenis geannuleerd: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> heeft deze gebeurtenis geannuleerd: « <#summary/> ».</#IsBody>
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Re: rendez-vous le <#AptStartDate/> à <#AptStartTime/></#IsSubject>
|
||||
<#IsBody>
|
||||
<#Attendee/> has <#HasAccepted>accepted</#HasAccepted><#HasDeclined>declined</#HasDeclined> your invitation.
|
||||
</#IsBody>
|
||||
<#IsSubject>Antwoord voor de gebeurtenisuitnodiging: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> heeft uw uitnodiging voor de gebeurtenis <#HasAccepted>geaccepteerd<#HasAccepted><#HasDeclined>geweigerd<#HasDeclined>.</#IsBody>
|
||||
@@ -1,17 +1,19 @@
|
||||
AptStartDate: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Attendee: WOString {
|
||||
value = attendee.cnWithoutQuotes;
|
||||
attendee: WOString {
|
||||
value = attendeeName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -22,12 +24,3 @@ HasAccepted: WOConditional {
|
||||
HasDeclined: WOConditional {
|
||||
condition = hasDeclined;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,2 @@
|
||||
<#IsSubject>Appointment on <#AptStartDate /> at <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
You're invited by <#Organizer /> to a meeting.
|
||||
<#HasHomePageURL>
|
||||
Please make a decision for this invitation at <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
<#IsSubject>Uitnodiging voor gebeurtenis: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> heeft u uitgenodigd voor <#summary/>.</#IsBody>
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<#IsSubject>Removed from appointment <#AptStartDate /> at <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
You have been removed by <#Organizer /> from the appointment scheduled at <#AptStartDate /> <#AptStartTime />.
|
||||
</#IsBody>
|
||||
@@ -1,34 +0,0 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
<#IsSubject>The appointment for the <#OldAptStartDate /> at <#OldAptStartTime /> has changed</#IsSubject>
|
||||
<#IsBody>
|
||||
This appointment, previously set for <#OldAptStartDate />
|
||||
at <#OldAptStartTime /> is now scheduled for <#NewAptStartDate /> at <#NewAptStartTime />
|
||||
<#HasHomePageURL>
|
||||
Please make a decision for these new settings at <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
@@ -1,46 +0,0 @@
|
||||
OldAptStartDate: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
OldAptStartTime: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Appointment <#AptStartDate /> at <#AptStartTime /> has been cancelled</#IsSubject>
|
||||
<#IsBody>
|
||||
The appointment at <#AptStartDate /> <#AptStartTime /> has been cancelled by <#Organizer />.
|
||||
</#IsBody>
|
||||
<#IsSubject>Event Cancelled: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> has cancelled this event: <#summary/>.</#IsBody>
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Re: rendez-vous le <#AptStartDate/> à <#AptStartTime/></#IsSubject>
|
||||
<#IsBody>
|
||||
<#Attendee/> has <#HasAccepted>accepted</#HasAccepted><#HasDeclined>declined</#HasDeclined> your invitation.
|
||||
</#IsBody>
|
||||
<#IsSubject>Event Invitation Reply: <#summary/></#IsSubject>
|
||||
<#IsBody><#attendee/> has <#HasAccepted>accepted</#HasAccepted><#HasDeclined>declined<#HasDeclined> your event invitation.</#IsBody>
|
||||
@@ -1,17 +1,19 @@
|
||||
AptStartDate: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Attendee: WOString {
|
||||
value = attendee.cnWithoutQuotes;
|
||||
attendee: WOString {
|
||||
value = attendeeName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -22,12 +24,3 @@ HasAccepted: WOConditional {
|
||||
HasDeclined: WOConditional {
|
||||
condition = hasDeclined;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,2 @@
|
||||
<#IsSubject>Appointment on <#AptStartDate /> at <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
You're invited by <#Organizer /> to a meeting.
|
||||
<#HasHomePageURL>
|
||||
Please make a decision for this invitation at <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
<#IsSubject>Event Invitation: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> has invited you to <#summary/>.</#IsBody>
|
||||
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<#IsSubject>Removed from appointment <#AptStartDate /> at <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
You have been removed by <#Organizer /> from the appointment scheduled at <#AptStartDate /> <#AptStartTime />.
|
||||
</#IsBody>
|
||||
@@ -1,34 +0,0 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
<#IsSubject>The appointment for the <#OldAptStartDate /> at <#OldAptStartTime /> has changed</#IsSubject>
|
||||
<#IsBody>
|
||||
This appointment, previously set for <#OldAptStartDate />
|
||||
at <#OldAptStartTime /> is now scheduled for <#NewAptStartDate /> at <#NewAptStartTime />
|
||||
<#HasHomePageURL>
|
||||
Please make a decision for these new settings at <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
@@ -1,46 +0,0 @@
|
||||
OldAptStartDate: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
OldAptStartTime: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Le rendez-vous du <#AptStartDate /> à <#AptStartTime /> a été supprimé</#IsSubject>
|
||||
<#IsBody>
|
||||
Le rendez-vous du <#AptStartDate /> à <#AptStartTime /> a été supprimé par <#Organizer />.
|
||||
</#IsBody>
|
||||
<#IsSubject>Événement annulé : « <#summary/> »</#IsSubject>
|
||||
<#IsBody><#organizer/> a annulé cet événement : « <#summary/> ».</#IsBody>
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Re: rendez-vous le <#AptStartDate/> à <#AptStartTime/></#IsSubject>
|
||||
<#IsBody>
|
||||
<#Attendee/> a <#HasAccepted>accepté</#HasAccepted><#HasDeclined>décliné</#HasDeclined> votre invitation.
|
||||
</#IsBody>
|
||||
<#IsSubject>Réponse à l'invitation : «<#summary/>»</#IsSubject>
|
||||
<#IsBody><#attendee/> a <#HasAccepted>accepté</#HasAccepted><#HasDeclined>refusé</#HasDeclined> votre invitation.</#IsBody>
|
||||
@@ -1,17 +1,19 @@
|
||||
AptStartDate: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Attendee: WOString {
|
||||
value = attendee.cnWithoutQuotes;
|
||||
attendee: WOString {
|
||||
value = attendeeName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -22,12 +24,3 @@ HasAccepted: WOConditional {
|
||||
HasDeclined: WOConditional {
|
||||
condition = hasDeclined;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,2 @@
|
||||
<#IsSubject>Rendez-vous le <#AptStartDate /> à <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
Vous êtes invité par <#Organizer /> à une réunion.
|
||||
<#HasHomePageURL>
|
||||
Veuillez donner votre réponse à l'adresse <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
<#IsSubject>Invitation : <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> vous a invité à « <#summary/> ».</#IsBody>
|
||||
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<#IsSubject>Supprimé de la réunion du <#AptStartDate /> à <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
Vous ne faites plus parti de la liste des invités de la réunion du <#AptStartDate /> à <#AptStartTime /> organisée par <#Organizer />.
|
||||
</#IsBody>
|
||||
@@ -1,34 +0,0 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
<#IsSubject>Le rendez-vous du <#OldAptStartDate /> à <#OldAptStartTime /> est modifié</#IsSubject>
|
||||
<#IsBody>
|
||||
La réunion qui devait se dérouler le <#OldAptStartDate /> à <#OldAptStartTime /> est maintenant prévue le <#NewAptStartDate /> à <#NewAptStartTime />.
|
||||
Vous êtes invité à accepter ou refuser de participer à la réunion pour cette nouvelle date à l'adresse <#HomePageURL />.
|
||||
</#IsBody>
|
||||
@@ -1,46 +0,0 @@
|
||||
OldAptStartDate: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
OldAptStartTime: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Der Termin am <#AptStartDate /> um <#AptStartTime /> wurde gelöscht.</#IsSubject>
|
||||
<#IsBody>
|
||||
Der Termin am <#AptStartDate /> um <#AptStartTime /> wurde von <#Organizer /> gelöscht.
|
||||
</#IsBody>
|
||||
<#IsSubject>Termin abgesagt: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> hat diesen Termin abgesagt: <#summary/></#IsBody>
|
||||
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Re: rendez-vous le <#AptStartDate/> à <#AptStartTime/></#IsSubject>
|
||||
<#IsBody>
|
||||
<#Attendee/> has <#HasAccepted>accepted</#HasAccepted><#HasDeclined>declined</#HasDeclined> your invitation.
|
||||
</#IsBody>
|
||||
<#IsSubject>Antwort Termineinladung: <#summary/></#IsSubject>
|
||||
<#IsBody><#attendee/> hat Ihre Termineinladung <#HasAccepted>akzeptiert</#HasAccepted><#HasDeclined>abgelehnt<#HasDeclined></#IsBody>.
|
||||
@@ -1,17 +1,19 @@
|
||||
AptStartDate: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Attendee: WOString {
|
||||
value = attendee.cnWithoutQuotes;
|
||||
attendee: WOString {
|
||||
value = attendeeName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -22,12 +24,3 @@ HasAccepted: WOConditional {
|
||||
HasDeclined: WOConditional {
|
||||
condition = hasDeclined;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,2 @@
|
||||
<#IsSubject>Termin am <#AptStartDate /> um <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
<#Organizer /> lädt Sie zu einem Termin am <#AptStartDate /> um <#AptStartTime /> ein.
|
||||
<#HasHomePageURL>
|
||||
Bitte benutzen Sie folgende URL, um anzugeben, ob Sie an dem Termin teilnehmen können: <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
<#IsSubject>Termineinladung: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> hat Sie zu <#summary/> eingeladen.</#IsBody>
|
||||
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<#IsSubject>Von dem Termin am <#AptStartDate /> um <#AptStartTime /> gelöscht</#IsSubject>
|
||||
<#IsBody>
|
||||
Sie sind nicht mehr eingeladen zu dem Termin am <#AptStartDate /> um <#AptStartTime /> organisiert von <#Organizer />.
|
||||
</#IsBody>
|
||||
@@ -1,34 +0,0 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
<#IsSubject>Veränderung des Termins am <#OldAptStartDate /> um <#OldAptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
Der Termin, der ursprünglich am <#OldAptStartDate /> um <#OldAptStartTime /> stattfinden sollte, ist jetzt für den <#NewAptStartDate /> um <#NewAptStartTime /> geplant.
|
||||
Bitte geben Sie an folgender URL an, ob Sie an diesem Termin zum neuen Datum teilnehmen können: <#HomePageURL />.
|
||||
</#IsBody>
|
||||
@@ -1,46 +0,0 @@
|
||||
OldAptStartDate: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
OldAptStartTime: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
- (NSString *) getSubject;
|
||||
- (NSString *) getBody;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
#endif /* SOGOAPTMAILICALREPLY_H */
|
||||
|
||||
@@ -96,6 +96,11 @@ static NSCharacterSet *wsSet = nil;
|
||||
return attendee;
|
||||
}
|
||||
|
||||
- (NSString *) attendeeName
|
||||
{
|
||||
return [attendee cn];
|
||||
}
|
||||
|
||||
- (BOOL) hasAccepted
|
||||
{
|
||||
NSString *partStat;
|
||||
|
||||
@@ -1,6 +1,2 @@
|
||||
<#IsSubject>L'appuntamento del giorno <#AptStartDate /> alle ore <#AptStartTime /> è stato cancellato</#IsSubject>
|
||||
<#IsBody>
|
||||
L'appuntamento del giorno <#AptStartDate /> alle ore <#AptStartTime
|
||||
/> è stato cancellato da <#Organizer
|
||||
/>.
|
||||
</#IsBody>
|
||||
<#IsSubject>Evento cancellato : " <#summary/> "</#IsSubject>
|
||||
<#IsBody><#organizer/> ha cancellato questo elemento: " <#summary/> ".</#IsBody>
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,2 @@
|
||||
<#IsSubject>Re: appuntamento del <#AptStartDate/> alle ore <#AptStartTime/></#IsSubject>
|
||||
<#IsBody>
|
||||
<#Attendee/> ha <#HasAccepted>accettato</#HasAccepted><#HasDeclined>declinato</#HasDeclined> il
|
||||
tuo invito.
|
||||
</#IsBody>
|
||||
<#IsSubject>Re: Appuntemento : "<#summary/>"</#IsSubject>
|
||||
<#IsBody><#attendee/> ha <#HasAccepted>accettato</#HasAccepted><#HasDeclined>declinato<#HasDeclined> l'invito al proprio evento.</#IsBody>
|
||||
@@ -1,17 +1,19 @@
|
||||
AptStartDate: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Attendee: WOString {
|
||||
value = attendee.cnWithoutQuotes;
|
||||
attendee: WOString {
|
||||
value = attendeeName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -22,12 +24,3 @@ HasAccepted: WOConditional {
|
||||
HasDeclined: WOConditional {
|
||||
condition = hasDeclined;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,2 @@
|
||||
<#IsSubject>Appunatemento in data <#AptStartDate /> alle ore <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
Sei stato invitato da <#Organizer /> ad un appuntamento.
|
||||
<#HasHomePageURL>
|
||||
Per accettare o declinare l'invito vai alla pagina <#HomePageURL
|
||||
/>.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
<#IsSubject>Invito evento: <#summary/></#IsSubject>
|
||||
<#IsBody>Si è stati invitati da <#organizer> a <#summary/>.</#IsBody>
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<#IsSubject>Rimozione dall'appuntamento del <#AptStartDate /> alle ore <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
Sei stato rimosso da <#Organizer /> dall'appuntamento programmato per il giorno <#AptStartDate
|
||||
/> alle ore <#AptStartTime />.
|
||||
</#IsBody>
|
||||
@@ -1,34 +0,0 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<#IsSubject>L'appuntamento fissato in data <#OldAptStartDate /> alle ore <#OldAptStartTime /> è stato modificato </#IsSubject>
|
||||
<#IsBody>
|
||||
Questo appuntamento, fissato precedentemete in data <#OldAptStartDate />
|
||||
alle ore <#OldAptStartTime /> è ora programmato il <#NewAptStartDate
|
||||
/> alle ore <#NewAptStartTime
|
||||
/>
|
||||
<#HasHomePageURL>
|
||||
Per confermare o disdire vai alla pagina <#HomePageURL
|
||||
/>.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
@@ -1,46 +0,0 @@
|
||||
OldAptStartDate: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
OldAptStartTime: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright (C) 2000-2005 SKYRIX Software AG
|
||||
Copyright (C) 2006-2008 Inverse inc.
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
@@ -33,8 +34,7 @@
|
||||
*/
|
||||
@interface SOGoAptMailNotification : SoComponent
|
||||
{
|
||||
iCalEntityObject* oldApt;
|
||||
iCalEntityObject* newApt;
|
||||
iCalEntityObject* apt;
|
||||
NSString *homePageURL;
|
||||
NSTimeZone *viewTZ;
|
||||
NSCalendarDate *oldStartDate;
|
||||
@@ -42,22 +42,8 @@
|
||||
BOOL isSubject;
|
||||
}
|
||||
|
||||
- (id) oldApt;
|
||||
- (void) setOldApt: (iCalEntityObject *) _oldApt;
|
||||
|
||||
- (id) newApt;
|
||||
- (void) setNewApt: (iCalEntityObject *) _newApt;
|
||||
|
||||
- (NSString *) homePageURL;
|
||||
- (void) setHomePageURL: (NSString *) _homePageURL;
|
||||
|
||||
- (NSTimeZone *) viewTZ;
|
||||
- (void) setViewTZ: (NSTimeZone *) _viewTZ;
|
||||
|
||||
/* Helpers */
|
||||
|
||||
- (NSCalendarDate *) oldStartDate;
|
||||
- (NSCalendarDate *) newStartDate;
|
||||
- (iCalEntityObject *) apt;
|
||||
- (void) setApt: (iCalEntityObject *) newApt;
|
||||
|
||||
/* Content Generation */
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#import <NGObjWeb/WOResponse.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <NGCards/iCalEntityObject.h>
|
||||
#import <NGCards/iCalPerson.h>
|
||||
|
||||
#import <SoObjects/SOGo/NSString+Utilities.h>
|
||||
|
||||
@@ -54,75 +55,32 @@ static NSTimeZone *UTC = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (id) init
|
||||
{
|
||||
if ((self = [super init]))
|
||||
{
|
||||
apt = nil;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
[oldApt release];
|
||||
[newApt release];
|
||||
[homePageURL release];
|
||||
[viewTZ release];
|
||||
|
||||
[oldStartDate release];
|
||||
[newStartDate release];
|
||||
[apt release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (id) oldApt
|
||||
- (iCalEntityObject *) apt
|
||||
{
|
||||
return oldApt;
|
||||
return apt;
|
||||
}
|
||||
|
||||
- (void) setOldApt: (iCalEntityObject *) newOldApt
|
||||
- (void) setApt: (iCalEntityObject *) newApt
|
||||
{
|
||||
ASSIGN (oldApt, newOldApt);
|
||||
ASSIGN (apt, newApt);
|
||||
}
|
||||
|
||||
- (id) newApt
|
||||
{
|
||||
return newApt;
|
||||
}
|
||||
|
||||
- (void) setNewApt: (iCalEntityObject *) newNewApt
|
||||
{
|
||||
ASSIGN (newApt, newNewApt);
|
||||
}
|
||||
|
||||
- (NSString *) homePageURL
|
||||
{
|
||||
return homePageURL;
|
||||
}
|
||||
|
||||
- (void) setHomePageURL: (NSString *) newhomePageURL
|
||||
{
|
||||
ASSIGN (homePageURL, newhomePageURL);
|
||||
}
|
||||
|
||||
- (NSString *) appointmentURL
|
||||
{
|
||||
NSString *aptUID;
|
||||
|
||||
aptUID = [[self newApt] uid];
|
||||
|
||||
return [NSString stringWithFormat: @"%@/Calendar/personal/%@/edit?mail-invitation=yes",
|
||||
[self homePageURL],
|
||||
aptUID];
|
||||
}
|
||||
|
||||
- (NSTimeZone *) viewTZ
|
||||
{
|
||||
NSTimeZone *tz;
|
||||
|
||||
if (viewTZ)
|
||||
tz = viewTZ;
|
||||
else
|
||||
tz = UTC;
|
||||
|
||||
return tz;
|
||||
}
|
||||
|
||||
- (void) setViewTZ: (NSTimeZone *) newViewTZ
|
||||
{
|
||||
ASSIGN (viewTZ, newViewTZ);
|
||||
}
|
||||
|
||||
- (BOOL) isSubject
|
||||
{
|
||||
@@ -134,30 +92,18 @@ static NSTimeZone *UTC = nil;
|
||||
isSubject = newIsSubject;
|
||||
}
|
||||
|
||||
- (NSString *) summary
|
||||
{
|
||||
return [apt summary];
|
||||
}
|
||||
|
||||
- (NSString *) organizerName
|
||||
{
|
||||
return [[apt organizer] cn];
|
||||
}
|
||||
|
||||
/* Helpers */
|
||||
|
||||
- (NSCalendarDate *) oldStartDate
|
||||
{
|
||||
if (!oldStartDate)
|
||||
{
|
||||
ASSIGN (oldStartDate, [[self oldApt] startDate]);
|
||||
[oldStartDate setTimeZone: [self viewTZ]];
|
||||
}
|
||||
|
||||
return oldStartDate;
|
||||
}
|
||||
|
||||
- (NSCalendarDate *) newStartDate
|
||||
{
|
||||
if (!newStartDate)
|
||||
{
|
||||
ASSIGN (newStartDate, [[self newApt] startDate]);
|
||||
[newStartDate setTimeZone: [self viewTZ]];
|
||||
}
|
||||
|
||||
return newStartDate;
|
||||
}
|
||||
|
||||
/* Generate Response */
|
||||
|
||||
- (NSString *) getSubject
|
||||
@@ -166,7 +112,7 @@ static NSTimeZone *UTC = nil;
|
||||
|
||||
[self setIsSubject: YES];
|
||||
subject = [[[self generateResponse] contentAsString]
|
||||
stringByTrimmingCharactersInSet:wsSet];
|
||||
stringByTrimmingCharactersInSet: wsSet];
|
||||
if (!subject)
|
||||
{
|
||||
[self errorWithFormat:@"Failed to properly generate subject! Please check "
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2000-2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
|
||||
#import "SOGoAptMailNotification.h"
|
||||
|
||||
@interface SOGoAptMailEnglishRemoval : SOGoAptMailNotification
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailEnglishRemoval
|
||||
@end
|
||||
|
||||
@interface SOGoAptMailFrenchRemoval : SOGoAptMailNotification
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailFrenchRemoval
|
||||
@end
|
||||
|
||||
@interface SOGoAptMailGermanRemoval : SOGoAptMailNotification
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailGermanRemoval
|
||||
@end
|
||||
|
||||
@interface SOGoAptMailItalianRemoval : SOGoAptMailNotification
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailItalianRemoval
|
||||
@end
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Appointment <#AptStartDate /> at <#AptStartTime /> has been cancelled</#IsSubject>
|
||||
<#IsBody>
|
||||
The appointment at <#AptStartDate /> <#AptStartTime /> has been cancelled by <#Organizer />.
|
||||
</#IsBody>
|
||||
<#IsSubject>Evento cancelado: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> ha cancelado este evento: « <#summary/> ».</#IsBody>
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
<#IsSubject>Re: rendez-vous le <#AptStartDate/> à <#AptStartTime/></#IsSubject>
|
||||
<#IsBody>
|
||||
<#Attendee/> has <#HasAccepted>accepted</#HasAccepted><#HasDeclined>declined</#HasDeclined> your invitation.
|
||||
</#IsBody>
|
||||
<#IsSubject>Respuesta a la invitación al evento: <#summary/></#IsSubject>
|
||||
<#IsBody><#attendee/> ha <#HasAccepted>aceptado</#HasAccepted><#HasDelined>rechazado</#HasDeclined> su invitación al evento.</#IsBody>
|
||||
@@ -1,17 +1,19 @@
|
||||
AptStartDate: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = startDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Attendee: WOString {
|
||||
value = attendee.cnWithoutQuotes;
|
||||
attendee: WOString {
|
||||
value = attendeeName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -22,12 +24,3 @@ HasAccepted: WOConditional {
|
||||
HasDeclined: WOConditional {
|
||||
condition = hasDeclined;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,2 @@
|
||||
<#IsSubject>Appointment on <#AptStartDate /> at <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
You're invited by <#Organizer /> to a meeting.
|
||||
<#HasHomePageURL>
|
||||
Please make a decision for this invitation at <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
<#IsSubject>Invitación a evento: <#summary/></#IsSubject>
|
||||
<#IsBody><#organizer/> le ha invitado a <#summary/>.</#IsBody>
|
||||
|
||||
@@ -1,34 +1,18 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
negate = YES;
|
||||
}
|
||||
|
||||
organizer: WOString {
|
||||
value = organizerName;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
summary: WOString {
|
||||
value = summary;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<#IsSubject>Removed from appointment <#AptStartDate /> at <#AptStartTime /></#IsSubject>
|
||||
<#IsBody>
|
||||
You have been removed by <#Organizer /> from the appointment scheduled at <#AptStartDate /> <#AptStartTime />.
|
||||
</#IsBody>
|
||||
@@ -1,34 +0,0 @@
|
||||
AptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
AptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
<#IsSubject>The appointment for the <#OldAptStartDate /> at <#OldAptStartTime /> has changed</#IsSubject>
|
||||
<#IsBody>
|
||||
This appointment, previously set for <#OldAptStartDate />
|
||||
at <#OldAptStartTime /> is now scheduled for <#NewAptStartDate /> at <#NewAptStartTime />
|
||||
<#HasHomePageURL>
|
||||
Please make a decision for these new settings at <#HomePageURL />.
|
||||
</#HasHomePageURL>
|
||||
</#IsBody>
|
||||
@@ -1,46 +0,0 @@
|
||||
OldAptStartDate: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
OldAptStartTime: WOString {
|
||||
value = oldStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartDate: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%d/%m/%y";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
NewAptStartTime: WOString {
|
||||
value = newStartDate;
|
||||
dateformat = "%H:%M";
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
Organizer: WOString {
|
||||
value = newApt.organizer.cnWithoutQuotes;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
HasHomePageURL: WOConditional {
|
||||
condition = homePageURL.length;
|
||||
}
|
||||
|
||||
HomePageURL: WOString {
|
||||
value = appointmentURL;
|
||||
escapeHTML = NO;
|
||||
}
|
||||
|
||||
IsSubject: WOConditional {
|
||||
condition = isSubject;
|
||||
}
|
||||
|
||||
IsBody: WOConditional {
|
||||
condition = isSubject;
|
||||
negate = YES;
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2000-2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "SOGoAptMailNotification.h"
|
||||
|
||||
@interface SOGoAptMailEnglishUpdate : SOGoAptMailNotification
|
||||
{
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailEnglishUpdate
|
||||
@end
|
||||
|
||||
@interface SOGoAptMailFrenchUpdate : SOGoAptMailNotification
|
||||
{
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailFrenchUpdate
|
||||
@end
|
||||
|
||||
|
||||
@interface SOGoAptMailGermanUpdate : SOGoAptMailNotification
|
||||
{
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailGermanUpdate
|
||||
@end
|
||||
|
||||
|
||||
@interface SOGoAptMailItalianUpdate : SOGoAptMailNotification
|
||||
{
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation SOGoAptMailItalianUpdate
|
||||
@end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SOGoCalendarComponent.h - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2006 Inverse inc.
|
||||
* Copyright (C) 2006-2008 Inverse inc.
|
||||
*
|
||||
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
*
|
||||
@@ -59,10 +59,9 @@
|
||||
|
||||
/* mail notifications */
|
||||
- (BOOL) sendEMailNotifications;
|
||||
- (void) sendEMailUsingTemplateNamed: (NSString *) _pageName
|
||||
forOldObject: (iCalRepeatableEntityObject *) _oldObject
|
||||
andNewObject: (iCalRepeatableEntityObject *) _newObject
|
||||
toAttendees: (NSArray *) _attendees;
|
||||
- (void) sendEMailUsingTemplateNamed: (NSString *) pageName
|
||||
forObject: (iCalRepeatableEntityObject *) object
|
||||
toAttendees: (NSArray *) attendees;
|
||||
- (void) sendIMIPReplyForEvent: (iCalRepeatableEntityObject *) event
|
||||
to: (iCalPerson *) recipient;
|
||||
- (void) sendResponseToOrganizer: (iCalRepeatableEntityObject *) newComponent;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SOGoCalendarComponent.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2006 Inverse inc.
|
||||
* Copyright (C) 2006-2008 Inverse inc.
|
||||
*
|
||||
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
*
|
||||
@@ -465,10 +465,9 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
|
||||
}
|
||||
}
|
||||
|
||||
- (void) sendEMailUsingTemplateNamed: (NSString *) _pageName
|
||||
forOldObject: (iCalRepeatableEntityObject *) _oldObject
|
||||
andNewObject: (iCalRepeatableEntityObject *) _newObject
|
||||
toAttendees: (NSArray *) _attendees
|
||||
- (void) sendEMailUsingTemplateNamed: (NSString *) newPageName
|
||||
forObject: (iCalRepeatableEntityObject *) object
|
||||
toAttendees: (NSArray *) attendees
|
||||
{
|
||||
NSString *pageName;
|
||||
NSString *senderEmail, *shortSenderEmail, *email, *iCalString;
|
||||
@@ -485,9 +484,9 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
|
||||
SOGoUser *ownerUser, *currentUser;
|
||||
|
||||
if (sendEMailNotifications
|
||||
&& [_newObject isStillRelevant])
|
||||
&& [object isStillRelevant])
|
||||
{
|
||||
count = [_attendees count];
|
||||
count = [attendees count];
|
||||
if (count)
|
||||
{
|
||||
/* sender */
|
||||
@@ -496,11 +495,11 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
|
||||
shortSenderEmail = [[currentUser allEmails] objectAtIndex: 0];
|
||||
senderEmail = [NSString stringWithFormat: @"%@ <%@>",
|
||||
[ownerUser cn], shortSenderEmail];
|
||||
[self _setupSentByIfNeeded: [_newObject organizer]];
|
||||
[self _setupSentByIfNeeded: [object organizer]];
|
||||
// NSLog (@"sending '%@' from %@",
|
||||
// [(iCalCalendar *) [_newObject parent] method], senderEmail);
|
||||
// [(iCalCalendar *) [object parent] method], senderEmail);
|
||||
/* generate iCalString once */
|
||||
iCalString = [[_newObject parent] versitString];
|
||||
iCalString = [[object parent] versitString];
|
||||
|
||||
/* get WOApplication instance */
|
||||
app = [WOApplication application];
|
||||
@@ -509,7 +508,7 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
attendee = [_attendees objectAtIndex: i];
|
||||
attendee = [attendees objectAtIndex: i];
|
||||
if (![[attendee uid] isEqualToString: owner])
|
||||
{
|
||||
/* construct recipient */
|
||||
@@ -521,13 +520,10 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
|
||||
SOGoObject acl notification mechanism
|
||||
/* create page name */
|
||||
pageName = [NSString stringWithFormat: @"SOGoAptMail%@%@",
|
||||
language, _pageName];
|
||||
language, newPageName];
|
||||
/* construct message content */
|
||||
p = [app pageWithName: pageName inContext: context];
|
||||
[p setNewApt: _newObject];
|
||||
[p setOldApt: _oldObject];
|
||||
[p setHomePageURL: [self homePageURLForPerson: attendee]];
|
||||
[p setViewTZ: [self timeZoneForUser: email]];
|
||||
[p setApt: object];
|
||||
subject = [p getSubject];
|
||||
text = [p getBody];
|
||||
|
||||
@@ -563,7 +559,7 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
|
||||
/* calendar part */
|
||||
header = [NSString stringWithFormat: @"text/calendar; method=%@;"
|
||||
@" charset=utf-8",
|
||||
[(iCalCalendar *) [_newObject parent] method]];
|
||||
[(iCalCalendar *) [object parent] method]];
|
||||
headerMap = [NGMutableHashMap hashMapWithCapacity: 1];
|
||||
[headerMap setObject:header forKey: @"content-type"];
|
||||
bodyPart = [NGMimeBodyPart bodyPartWithHeader: headerMap];
|
||||
|
||||
Reference in New Issue
Block a user