diff --git a/ChangeLog b/ChangeLog index 35dd40d5e..5ff8b6570 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-10-21 Ludovic Marcotte + + * Changes required for http://sogo.nu/bugs/view.php?id=795 + 2010-10-19 Wolfgang Sourdeau * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): fixed a diff --git a/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings b/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings index 5bcd02e3c..e23635767 100644 --- a/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings +++ b/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Tarefa Confidencial)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(enviado por %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Catalan.lproj/Localizable.strings b/SoObjects/Appointments/Catalan.lproj/Localizable.strings index 5c9b2fea5..79ef794cc 100644 --- a/SoObjects/Appointments/Catalan.lproj/Localizable.strings +++ b/SoObjects/Appointments/Catalan.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Tasca confidencial)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Invitació a l'esdeveniment: \"%{Summary}\""; "(sent by %{SentBy}) " = "(enviada per %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText} us ha invitat a %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText} us ha invitat a %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Esdeveniment suspès: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Czech.lproj/Localizable.strings b/SoObjects/Appointments/Czech.lproj/Localizable.strings index de287dbc0..15c40336f 100644 --- a/SoObjects/Appointments/Czech.lproj/Localizable.strings +++ b/SoObjects/Appointments/Czech.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Skrytý úkol)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Pozvání na událost: \"%{Summary}\""; "(sent by %{SentBy}) " = "(poslal/a %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}Vás pozval/a na %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}Vás pozval/a na %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Zrušení události: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Dutch.lproj/Localizable.strings b/SoObjects/Appointments/Dutch.lproj/Localizable.strings index 2af2f58db..4f9088aae 100644 --- a/SoObjects/Appointments/Dutch.lproj/Localizable.strings +++ b/SoObjects/Appointments/Dutch.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Vertrouwelijke taak)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(sent by %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; diff --git a/SoObjects/Appointments/English.lproj/Localizable.strings b/SoObjects/Appointments/English.lproj/Localizable.strings index d0531abaf..2fc0234bb 100644 --- a/SoObjects/Appointments/English.lproj/Localizable.strings +++ b/SoObjects/Appointments/English.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Confidential task)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(sent by %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; diff --git a/SoObjects/Appointments/French.lproj/Localizable.strings b/SoObjects/Appointments/French.lproj/Localizable.strings index 921816d3d..64d040a1f 100644 --- a/SoObjects/Appointments/French.lproj/Localizable.strings +++ b/SoObjects/Appointments/French.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Tâche confidentielle)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Invitation à la réunion : \"%{Summary}\""; "(sent by %{SentBy}) " = "(envoyé par %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}vous a invité à la réunion « %{Summary} »."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}vous a invité à la réunion « %{Summary} ».\n\nDébut: %{StartDate} à %{StartTime}\nFin: %{EndDate} à %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Réunion annulée : « %{Summary} »"; diff --git a/SoObjects/Appointments/German.lproj/Localizable.strings b/SoObjects/Appointments/German.lproj/Localizable.strings index 007ae0b90..5ad0feafa 100644 --- a/SoObjects/Appointments/German.lproj/Localizable.strings +++ b/SoObjects/Appointments/German.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Vertrauliche Aufgabe)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Termin Einladung: \"%{Summary}\""; "(sent by %{SentBy}) " = "(gesendet von %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}hat Sie eingeladen zu %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}hat Sie eingeladen zu %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Termin abgesagt: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Hungarian.lproj/Localizable.strings b/SoObjects/Appointments/Hungarian.lproj/Localizable.strings index 40ad46305..e3d79698a 100644 --- a/SoObjects/Appointments/Hungarian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Hungarian.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Bizalmas feladat)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(%{SentBy} által elküldve) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Italian.lproj/Localizable.strings b/SoObjects/Appointments/Italian.lproj/Localizable.strings index fe421e1bc..4567bce4a 100644 --- a/SoObjects/Appointments/Italian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Italian.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Attività confidenziale)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Invito Evento: \"%{Summary}\""; "(sent by %{SentBy}) " = "(inviato da %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}ti ha invitato al %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}ti ha invitato al %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Evento cancellato: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Polish.lproj/Localizable.strings b/SoObjects/Appointments/Polish.lproj/Localizable.strings index 7bfdf7b6c..59474334f 100644 --- a/SoObjects/Appointments/Polish.lproj/Localizable.strings +++ b/SoObjects/Appointments/Polish.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Zadanie poufne)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Zaproszenie na wydarzenie: \"%{Summary}\""; "(sent by %{SentBy}) " = "(wysłane przez %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}zaprosił cię na %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}zaprosił cię na %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Wydarzenie anulowane: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Russian.lproj/Localizable.strings b/SoObjects/Appointments/Russian.lproj/Localizable.strings index 3d4408384..8d7066aeb 100644 --- a/SoObjects/Appointments/Russian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Russian.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Confidential task)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(послал %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; diff --git a/SoObjects/Appointments/SOGoAptMailInvitation.m b/SoObjects/Appointments/SOGoAptMailInvitation.m index 3761f215b..389bbb0ce 100644 --- a/SoObjects/Appointments/SOGoAptMailInvitation.m +++ b/SoObjects/Appointments/SOGoAptMailInvitation.m @@ -21,9 +21,11 @@ #import +#import #import #import - +#import +#import #import "iCalPerson+SOGo.h" #import "SOGoAptMailNotification.h" @@ -33,6 +35,34 @@ @implementation SOGoAptMailInvitation +- (void) setupValues +{ + SOGoDateFormatter *dateFormatter; + NSCalendarDate *date; + NSString *description; + + [super setupValues]; + + + dateFormatter = [[context activeUser] dateFormatterInContext: context]; + + date = [self newStartDate]; + [values setObject: [dateFormatter shortFormattedDate: date] + forKey: @"StartDate"]; + [values setObject: [dateFormatter formattedTime: date] + forKey: @"StartTime"]; + + date = [self newEndDate]; + [values setObject: [dateFormatter shortFormattedDate: date] + forKey: @"EndDate"]; + [values setObject: [dateFormatter formattedTime: date] + forKey: @"EndTime"]; + + description = [[self apt] comment]; + [values setObject: (description ? description : @"") + forKey: @"Description"]; +} + - (NSString *) getSubject { NSString *subjectFormat; @@ -53,7 +83,7 @@ if (!values) [self setupValues]; - bodyFormat = [self labelForKey: @"%{Organizer} %{SentByText}has invited you to %{Summary}." + bodyFormat = [self labelForKey: @"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" inContext: context]; return [values keysWithFormat: bodyFormat]; diff --git a/SoObjects/Appointments/SOGoAptMailNotification.h b/SoObjects/Appointments/SOGoAptMailNotification.h index f3388be6a..984ca668d 100644 --- a/SoObjects/Appointments/SOGoAptMailNotification.h +++ b/SoObjects/Appointments/SOGoAptMailNotification.h @@ -1,6 +1,6 @@ /* + Copyright (C) 2006-2010 Inverse inc. Copyright (C) 2000-2005 SKYRIX Software AG - Copyright (C) 2006-2009 Inverse inc. This file is part of OpenGroupware.org. @@ -43,6 +43,8 @@ NSTimeZone *viewTZ; NSCalendarDate *oldStartDate; NSCalendarDate *newStartDate; + NSCalendarDate *oldEndDate; + NSCalendarDate *newEndDate; NSString *organizerName; NSMutableDictionary *values; } @@ -61,6 +63,9 @@ - (NSCalendarDate *) oldStartDate; - (NSCalendarDate *) newStartDate; +- (NSCalendarDate *) oldEndDate; +- (NSCalendarDate *) newEndDate; + - (NSString *) getSubject; - (NSString *) getBody; diff --git a/SoObjects/Appointments/SOGoAptMailNotification.m b/SoObjects/Appointments/SOGoAptMailNotification.m index fa7f3faa6..5cc54cfac 100644 --- a/SoObjects/Appointments/SOGoAptMailNotification.m +++ b/SoObjects/Appointments/SOGoAptMailNotification.m @@ -62,6 +62,8 @@ [viewTZ release]; [oldStartDate release]; [newStartDate release]; + [oldEndDate release]; + [newEndDate release]; [super dealloc]; } @@ -115,6 +117,26 @@ return newStartDate; } +- (NSCalendarDate *) oldEndDate +{ + if (!oldEndDate) + { + ASSIGN (oldEndDate, [[self previousApt] endDate]); + [oldEndDate setTimeZone: viewTZ]; + } + return oldEndDate; +} + +- (NSCalendarDate *) newEndDate +{ + if (!newEndDate) + { + ASSIGN (newEndDate, [[self apt] endDate]); + [newEndDate setTimeZone: viewTZ]; + } + return newEndDate; +} + - (NSString *) summary { return [apt summary]; diff --git a/SoObjects/Appointments/Spanish.lproj/Localizable.strings b/SoObjects/Appointments/Spanish.lproj/Localizable.strings index a68e4044f..46131df13 100644 --- a/SoObjects/Appointments/Spanish.lproj/Localizable.strings +++ b/SoObjects/Appointments/Spanish.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Tarea confidencial)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(sent by %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Swedish.lproj/Localizable.strings b/SoObjects/Appointments/Swedish.lproj/Localizable.strings index c419cd11c..14a93ef7a 100644 --- a/SoObjects/Appointments/Swedish.lproj/Localizable.strings +++ b/SoObjects/Appointments/Swedish.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Konfidentiell uppgift)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(sent by %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Ukrainian.lproj/Localizable.strings b/SoObjects/Appointments/Ukrainian.lproj/Localizable.strings index 9b010131b..0c7021993 100644 --- a/SoObjects/Appointments/Ukrainian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Ukrainian.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Конфіденційне завдання)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Запрошення на подію: \"%{Summary}\""; "(sent by %{SentBy}) " = "(надіслано %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText} запросив вас до %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText} запросив вас до %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Подію скасовано: \"%{Summary}\""; diff --git a/SoObjects/Appointments/Welsh.lproj/Localizable.strings b/SoObjects/Appointments/Welsh.lproj/Localizable.strings index 51a5ac2b1..0522bb36d 100644 --- a/SoObjects/Appointments/Welsh.lproj/Localizable.strings +++ b/SoObjects/Appointments/Welsh.lproj/Localizable.strings @@ -35,7 +35,7 @@ vtodo_class2 = "(Tasg gyfrinachol)"; /* Invitation */ "Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\""; "(sent by %{SentBy}) " = "(anfon gan %{SentBy}) "; -"%{Organizer} %{SentByText}has invited you to %{Summary}." = "%{Organizer} %{SentByText}has invited you to %{Summary}."; +"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"; /* Deletion */ "Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\"";