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:
Wolfgang Sourdeau
2008-10-01 19:32:14 +00:00
parent 2c519a90e3
commit a5f5eb705d
71 changed files with 325 additions and 1341 deletions

View File

@@ -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

View File

@@ -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 \

View File

@@ -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];
}
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>.

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -53,7 +53,7 @@
- (NSString *) getSubject;
- (NSString *) getBody;
@end
#endif /* SOGOAPTMAILICALREPLY_H */

View File

@@ -96,6 +96,11 @@ static NSCharacterSet *wsSet = nil;
return attendee;
}
- (NSString *) attendeeName
{
return [attendee cn];
}
- (BOOL) hasAccepted
{
NSString *partStat;

View File

@@ -1,6 +1,2 @@
<#IsSubject>L'appuntamento del giorno <#AptStartDate /> alle ore <#AptStartTime /> &egrave; stato cancellato</#IsSubject>
<#IsBody>
L'appuntamento del giorno <#AptStartDate /> alle ore <#AptStartTime
/> &egrave; stato cancellato da <#Organizer
/>.
</#IsBody>
<#IsSubject>Evento cancellato : " <#summary/> "</#IsSubject>
<#IsBody><#organizer/> ha cancellato questo elemento: " <#summary/> ".</#IsBody>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -1,11 +0,0 @@
<#IsSubject>L'appuntamento fissato in data <#OldAptStartDate /> alle ore <#OldAptStartTime /> &egrave; stato modificato </#IsSubject>
<#IsBody>
Questo appuntamento, fissato precedentemete in data <#OldAptStartDate />
alle ore <#OldAptStartTime /> &egrave; ora programmato il <#NewAptStartDate
/> alle ore <#NewAptStartTime
/>
<#HasHomePageURL>
Per confermare o disdire vai alla pagina <#HomePageURL
/>.
</#HasHomePageURL>
</#IsBody>

View File

@@ -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;
}

View File

@@ -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 */

View File

@@ -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 "

View File

@@ -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

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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];