diff --git a/ChangeLog b/ChangeLog index a7ef29e25..bf70df092 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,20 @@ 2010-04-09 Wolfgang Sourdeau + * SoObjects/Appointments/SOGoAptMailUpdate.m, + SoObjects/Appointments/SOGoAptMailInvitation.m, + SoObjects/Appointments/SOGoAptMailICalReply.m, + SoObjects/Appointments/SOGoAptMailDeletion.m: revamped to make use + of language dictionaries rather than language-specific classes. + This hugely simplifies the code and ease the job of implementing + languages for SOGo. + + * SoObjects/SOGo/SOGoObject.m (-labelForKey:) removed method, + obsoleted by the new one below. + + * SoObjects/SOGo/NSObject+Utilities.m (-labelForKey:inContext:): + new method that enables the querying of module based language + dictionaries from non SoComponent instances. + * Tests/Integration/utilities.py (TestUtility.fetchUserInfo): same as below. diff --git a/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings b/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings index 7194423c4..5bcd02e3c 100644 --- a/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings +++ b/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Tarefa Confidencial)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Resposta a Evento de Convite: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}foi aceitado seu convite ao evento."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}foi declinado seu convite ao evento."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}foi ainda não decidiu seu convite ao evento."; diff --git a/SoObjects/Appointments/Czech.lproj/Localizable.strings b/SoObjects/Appointments/Czech.lproj/Localizable.strings index 564478bdd..68bce0bab 100644 --- a/SoObjects/Appointments/Czech.lproj/Localizable.strings +++ b/SoObjects/Appointments/Czech.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Skrytý úkol)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Reply to invitation: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}has accepted your event invitation."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}has declined your event invitation."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}has not yet decided upon your event invitation."; diff --git a/SoObjects/Appointments/Dutch.lproj/Localizable.strings b/SoObjects/Appointments/Dutch.lproj/Localizable.strings index a5dfe5944..2af2f58db 100644 --- a/SoObjects/Appointments/Dutch.lproj/Localizable.strings +++ b/SoObjects/Appointments/Dutch.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Vertrouwelijke taak)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Antwoord voor de gebeurtenisuitnodiging: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}heeft uw uitnodiging voor de gebeurtenis geaccepteerd."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}heeft uw uitnodiging voor de gebeurtenis geweigerd."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}has not yet decided upon your event invitation."; diff --git a/SoObjects/Appointments/English.lproj/Localizable.strings b/SoObjects/Appointments/English.lproj/Localizable.strings index d6d3fdd01..d0531abaf 100644 --- a/SoObjects/Appointments/English.lproj/Localizable.strings +++ b/SoObjects/Appointments/English.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Confidential task)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Reply to invitation: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}has accepted your event invitation."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}has declined your event invitation."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}has not yet decided upon your event invitation."; diff --git a/SoObjects/Appointments/French.lproj/Localizable.strings b/SoObjects/Appointments/French.lproj/Localizable.strings index 606a9c23b..509471e1f 100644 --- a/SoObjects/Appointments/French.lproj/Localizable.strings +++ b/SoObjects/Appointments/French.lproj/Localizable.strings @@ -23,3 +23,41 @@ vtodo_class2 = "(Tâche confidentielle)"; "Receipt: attendees removed from an event" = "Acc. de réception: invitations annulées"; "You have removed the following attendees(s):" = "Les utilisateurs suivants :"; "... from the following event:" = "... ne sont plus invités à cette réunion :"; + +/* IMIP messages */ +"startDate_label" = "Du :"; +"endDate_label" = "au :"; +"due_label" = "Fin prévue :"; +"location_label" = "Lieu :"; +"summary_label" = "Titre :"; +"comment_label" = "Description :"; + +/* 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} »."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Réunion annulée : « %{Summary} »"; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}a annulé cette réunion : « %{Summary} »"; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "La réunion « %{Summary} » de %{OldStartDate} à %{OldStartTime} a été modifiée"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "Les paramètres suivants ont été modifiés pour la réunion « %{Summary} » :"; +"Please accept or decline those changes." += "Veuillez reconfirmer ou annuler votre présence."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Réponse à l'invitation : « %{Summary} »"; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}a accepté votre invitation."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}a décliné votre invitation."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}a délégué votre invitation à %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}choisir de reporter sa décision par rapport à votre invitation."; diff --git a/SoObjects/Appointments/GNUmakefile b/SoObjects/Appointments/GNUmakefile index 9ef6e934e..45771bc29 100644 --- a/SoObjects/Appointments/GNUmakefile +++ b/SoObjects/Appointments/GNUmakefile @@ -48,54 +48,6 @@ Appointments_LANGUAGES = BrazilianPortuguese Czech Dutch English French German H Appointments_LOCALIZED_RESOURCE_FILES = Localizable.strings -Appointments_COMPONENTS += \ - SOGoAptMailBrazilianPortugueseInvitation.wo \ - SOGoAptMailBrazilianPortugueseICalReply.wo \ - SOGoAptMailBrazilianPortugueseDeletion.wo \ - SOGoAptMailBrazilianPortugueseUpdate.wo \ - SOGoAptMailCzechInvitation.wo \ - SOGoAptMailCzechICalReply.wo \ - SOGoAptMailCzechDeletion.wo \ - SOGoAptMailCzechUpdate.wo \ - SOGoAptMailDutchInvitation.wo \ - SOGoAptMailDutchICalReply.wo \ - SOGoAptMailDutchDeletion.wo \ - SOGoAptMailDutchUpdate.wo \ - SOGoAptMailEnglishInvitation.wo \ - SOGoAptMailEnglishDeletion.wo \ - SOGoAptMailEnglishUpdate.wo \ - SOGoAptMailFrenchInvitation.wo \ - SOGoAptMailFrenchICalReply.wo \ - SOGoAptMailFrenchDeletion.wo \ - SOGoAptMailFrenchUpdate.wo \ - SOGoAptMailGermanInvitation.wo \ - SOGoAptMailGermanICalReply.wo \ - SOGoAptMailGermanDeletion.wo \ - SOGoAptMailGermanUpdate.wo \ - SOGoAptMailHungarianInvitation.wo \ - SOGoAptMailHungarianICalReply.wo \ - SOGoAptMailHungarianDeletion.wo \ - SOGoAptMailHungarianUpdate.wo \ - SOGoAptMailItalianInvitation.wo \ - SOGoAptMailItalianICalReply.wo \ - SOGoAptMailItalianDeletion.wo \ - SOGoAptMailItalianUpdate.wo \ - SOGoAptMailRussianInvitation.wo \ - SOGoAptMailRussianICalReply.wo \ - SOGoAptMailRussianDeletion.wo \ - SOGoAptMailRussianUpdate.wo \ - SOGoAptMailSpanishInvitation.wo \ - SOGoAptMailSpanishICalReply.wo \ - SOGoAptMailSpanishDeletion.wo \ - SOGoAptMailSpanishUpdate.wo \ - SOGoAptMailSwedishInvitation.wo \ - SOGoAptMailSwedishDeletion.wo \ - SOGoAptMailSwedishUpdate.wo \ - SOGoAptMailWelshInvitation.wo \ - SOGoAptMailWelshICalReply.wo \ - SOGoAptMailWelshDeletion.wo \ - SOGoAptMailWelshUpdate.wo - ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ diff --git a/SoObjects/Appointments/German.lproj/Localizable.strings b/SoObjects/Appointments/German.lproj/Localizable.strings index 44e7199af..8f146e4e5 100644 --- a/SoObjects/Appointments/German.lproj/Localizable.strings +++ b/SoObjects/Appointments/German.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Vertrauliche Aufgabe)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Antwort Termineinladung: %{Summary}"; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}hat Ihre Termineinladung akzeptiert."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}hat Ihre Termineinladung abgelehnt."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}hat noch nicht über Ihre Termineinladung entschieden."; diff --git a/SoObjects/Appointments/Hungarian.lproj/Localizable.strings b/SoObjects/Appointments/Hungarian.lproj/Localizable.strings index 3690f891b..40ad46305 100644 --- a/SoObjects/Appointments/Hungarian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Hungarian.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Bizalmas feladat)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Válasz a meghívásra: %{Summary}"; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}elfogadta a meghívását."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}visszautasította a meghívását."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}még meggondolja a meghívását."; diff --git a/SoObjects/Appointments/Italian.lproj/Localizable.strings b/SoObjects/Appointments/Italian.lproj/Localizable.strings index 9b6a93843..1e1d6dc97 100644 --- a/SoObjects/Appointments/Italian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Italian.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Attività confidenziale)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Re: Appuntemento : \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}ha accepttato l'invito al proprio evento."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}ha declinato l'invito al proprio evento."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}has not yet decided upon your event invitation."; diff --git a/SoObjects/Appointments/Russian.lproj/Localizable.strings b/SoObjects/Appointments/Russian.lproj/Localizable.strings index d6d3fdd01..3d4408384 100644 --- a/SoObjects/Appointments/Russian.lproj/Localizable.strings +++ b/SoObjects/Appointments/Russian.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Confidential task)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Ответ на приглашение: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}согласился участвовать в запланированном мероприятии."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}отказался участвовать в запланированном мероприятии."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}не определился с желанием участвовать в запланированном мероприятии."; diff --git a/SoObjects/Appointments/SOGoAppointmentFolders.m b/SoObjects/Appointments/SOGoAppointmentFolders.m index c391aeec5..4257cd1d6 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolders.m +++ b/SoObjects/Appointments/SOGoAppointmentFolders.m @@ -38,6 +38,7 @@ #import #import +#import #import #import #import @@ -74,7 +75,7 @@ - (NSString *) defaultFolderName { - return [self labelForKey: @"Personal Calendar"]; + return [self labelForKey: @"Personal Calendar" inContext: context]; } - (NSArray *) toManyRelationshipKeys diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseDeletion.wo/SOGoAptMailBrazilianPortugueseDeletion.html b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseDeletion.wo/SOGoAptMailBrazilianPortugueseDeletion.html deleted file mode 100644 index 6a267fb80..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseDeletion.wo/SOGoAptMailBrazilianPortugueseDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Evento Cancelado: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(enviado por <#sentBy/>) cancelou este evento: <#summary/>. \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseDeletion.wo/SOGoAptMailBrazilianPortugueseDeletion.wod b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseDeletion.wo/SOGoAptMailBrazilianPortugueseDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseDeletion.wo/SOGoAptMailBrazilianPortugueseDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseICalReply.wo/SOGoAptMailBrazilianPortugueseICalReply.html b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseICalReply.wo/SOGoAptMailBrazilianPortugueseICalReply.html deleted file mode 100644 index ca1b588f5..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseICalReply.wo/SOGoAptMailBrazilianPortugueseICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Resposta a Evento de Convite: <#summary/> -<#IsBody><#attendee/><#HasSentBy> (enviado por <#sentBy/>) foi <#HasAccepted>aceitado<#HasDeclined>declinado<#HasNotAcceptedNotDeclined>ainda não decidiu seu convite ao evento. diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseICalReply.wo/SOGoAptMailBrazilianPortugueseICalReply.wod b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseICalReply.wo/SOGoAptMailBrazilianPortugueseICalReply.wod deleted file mode 100644 index 5c54f3352..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseICalReply.wo/SOGoAptMailBrazilianPortugueseICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseInvitation.wo/SOGoAptMailBrazilianPortugueseInvitation.html b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseInvitation.wo/SOGoAptMailBrazilianPortugueseInvitation.html deleted file mode 100644 index ab7f5a3b1..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseInvitation.wo/SOGoAptMailBrazilianPortugueseInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Convite a Evento: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(enviado por <#sentBy/>) convidou você para <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseInvitation.wo/SOGoAptMailBrazilianPortugueseInvitation.wod b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseInvitation.wo/SOGoAptMailBrazilianPortugueseInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseInvitation.wo/SOGoAptMailBrazilianPortugueseInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseUpdate.wo/SOGoAptMailBrazilianPortugueseUpdate.html b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseUpdate.wo/SOGoAptMailBrazilianPortugueseUpdate.html deleted file mode 100644 index 415ffcfa4..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseUpdate.wo/SOGoAptMailBrazilianPortugueseUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>O apontamento "<#Summary />" para <#OldAptStartDate /> as <#OldAptStartTime /> foi modificado -<#IsBody> -O apontamento<#HasSentBy> (enviado por <#sentBy/>), previamente confirmado para <#OldAptStartDate /><#IsNotOldAllDay> as <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) está agendado agora para <#NewAptStartDate /><#IsNotNewAllDay> as <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Por favor, decida sobre esta nova modificação. - diff --git a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseUpdate.wo/SOGoAptMailBrazilianPortugueseUpdate.wod b/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseUpdate.wo/SOGoAptMailBrazilianPortugueseUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailBrazilianPortugueseUpdate.wo/SOGoAptMailBrazilianPortugueseUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailCzechDeletion.wo/SOGoAptMailCzechDeletion.html b/SoObjects/Appointments/SOGoAptMailCzechDeletion.wo/SOGoAptMailCzechDeletion.html deleted file mode 100644 index 6a490d197..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechDeletion.wo/SOGoAptMailCzechDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Událost zrušena: <#summary/> -<#IsBody><#organizer/><#HasSentBy> (zaslal/a <#sentBy/>) zrušil/a tuto událost: <#summary/>. \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailCzechDeletion.wo/SOGoAptMailCzechDeletion.wod b/SoObjects/Appointments/SOGoAptMailCzechDeletion.wo/SOGoAptMailCzechDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechDeletion.wo/SOGoAptMailCzechDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailCzechICalReply.wo/SOGoAptMailCzechICalReply.html b/SoObjects/Appointments/SOGoAptMailCzechICalReply.wo/SOGoAptMailCzechICalReply.html deleted file mode 100644 index 19e6d4e89..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechICalReply.wo/SOGoAptMailCzechICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Odpověď na pozvánku k události: <#summary/> -<#IsBody><#attendee/><#HasSentBy> (zaslal/a <#sentBy/>) <#HasAccepted> přijal/a<#HasDeclined> odmítl/a<#HasNotAcceptedNotDeclined> zatím nerozhodl/a o Vaši pozvánku/ce. diff --git a/SoObjects/Appointments/SOGoAptMailCzechICalReply.wo/SOGoAptMailCzechICalReply.wod b/SoObjects/Appointments/SOGoAptMailCzechICalReply.wo/SOGoAptMailCzechICalReply.wod deleted file mode 100644 index 5c54f3352..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechICalReply.wo/SOGoAptMailCzechICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailCzechInvitation.wo/SOGoAptMailCzechInvitation.html b/SoObjects/Appointments/SOGoAptMailCzechInvitation.wo/SOGoAptMailCzechInvitation.html deleted file mode 100644 index 68efc110c..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechInvitation.wo/SOGoAptMailCzechInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Pozvánka na událost: <#summary/> -<#IsBody><#organizer/><#HasSentBy> (zaslal/a <#sentBy/>) Vás pozval na <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailCzechInvitation.wo/SOGoAptMailCzechInvitation.wod b/SoObjects/Appointments/SOGoAptMailCzechInvitation.wo/SOGoAptMailCzechInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechInvitation.wo/SOGoAptMailCzechInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailCzechUpdate.wo/SOGoAptMailCzechUpdate.html b/SoObjects/Appointments/SOGoAptMailCzechUpdate.wo/SOGoAptMailCzechUpdate.html deleted file mode 100644 index 5a360ee52..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechUpdate.wo/SOGoAptMailCzechUpdate.html +++ /dev/null @@ -1,4 +0,0 @@ -<#IsSubject>Schůzka "<#Summary />" na <#OldAptStartDate /> v <#OldAptStartTime /> byla změněna -<#IsBody>Tato schůzka<#HasSentBy> (zaslal/a <#sentBy/>), předtím ujednána na <#OldAptStartDate /><#IsNotOldAllDay> v <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) je nyní přesunuta na <#NewAptStartDate /><#IsNotNewAllDay> v <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Rozhodněte prosím o tomto novém nastavení. - diff --git a/SoObjects/Appointments/SOGoAptMailCzechUpdate.wo/SOGoAptMailCzechUpdate.wod b/SoObjects/Appointments/SOGoAptMailCzechUpdate.wo/SOGoAptMailCzechUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailCzechUpdate.wo/SOGoAptMailCzechUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailDeletion.m b/SoObjects/Appointments/SOGoAptMailDeletion.m index 7972e9359..2163e763c 100644 --- a/SoObjects/Appointments/SOGoAptMailDeletion.m +++ b/SoObjects/Appointments/SOGoAptMailDeletion.m @@ -1,94 +1,59 @@ /* - Copyright (C) 2000-2005 SKYRIX Software AG + Copyright (C) 2010 Inverse - This file is part of OpenGroupware.org. + This file is part of SOGo - OGo is free software; you can redistribute it and/or modify it under + SOGo 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 + SOGo 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 + License along with SOGo; 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" +#import +#import -@interface SOGoAptMailEnglishDeletion : SOGoAptMailNotification +#import "SOGoAptMailNotification.h" + +@interface SOGoAptMailDeletion : SOGoAptMailNotification @end -@implementation SOGoAptMailEnglishDeletion -@end +@implementation SOGoAptMailDeletion -@interface SOGoAptMailBrazilianPortugueseDeletion : SOGoAptMailNotification -@end +- (NSString *) getSubject +{ + NSString *subjectFormat; -@implementation SOGoAptMailBrazilianPortugueseDeletion -@end + if (!values) + [self setupValues]; -@interface SOGoAptMailCzechDeletion : SOGoAptMailNotification -@end + subjectFormat = [self labelForKey: @"Event Cancelled: \"%{Summary}\"" + inContext: context]; -@implementation SOGoAptMailCzechDeletion -@end + return [values keysWithFormat: subjectFormat]; +} -@interface SOGoAptMailDutchDeletion : SOGoAptMailNotification -@end +- (NSString *) getBody +{ + NSString *bodyFormat; -@implementation SOGoAptMailDutchDeletion -@end + if (!values) + [self setupValues]; -@interface SOGoAptMailFrenchDeletion : SOGoAptMailNotification -@end + bodyFormat = [self labelForKey: @"%{Organizer} %{SentByText}has" + @" cancelled this event: %{Summary}." + inContext: context]; -@implementation SOGoAptMailFrenchDeletion -@end + return [values keysWithFormat: bodyFormat]; +} -@interface SOGoAptMailGermanDeletion : SOGoAptMailNotification -@end - -@implementation SOGoAptMailGermanDeletion -@end - -@interface SOGoAptMailHungarianDeletion : SOGoAptMailNotification -@end - -@implementation SOGoAptMailHungarianDeletion -@end - -@interface SOGoAptMailItalianDeletion : SOGoAptMailNotification -@end - -@implementation SOGoAptMailItalianDeletion -@end - -@interface SOGoAptMailRussianDeletion : SOGoAptMailNotification -@end - -@implementation SOGoAptMailRussianDeletion -@end - -@interface SOGoAptMailSpanishDeletion : SOGoAptMailNotification -@end - -@implementation SOGoAptMailSpanishDeletion -@end - -@interface SOGoAptMailSwedishDeletion : SOGoAptMailNotification -@end - -@implementation SOGoAptMailSwedishDeletion -@end - -@interface SOGoAptMailWelshDeletion : SOGoAptMailNotification -@end - -@implementation SOGoAptMailWelshDeletion @end diff --git a/SoObjects/Appointments/SOGoAptMailDutchDeletion.wo/SOGoAptMailDutchDeletion.html b/SoObjects/Appointments/SOGoAptMailDutchDeletion.wo/SOGoAptMailDutchDeletion.html deleted file mode 100644 index 9c7fc4cd5..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchDeletion.wo/SOGoAptMailDutchDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Gebeurtenis geannuleerd: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) heeft deze gebeurtenis geannuleerd: « <#summary/> ». diff --git a/SoObjects/Appointments/SOGoAptMailDutchDeletion.wo/SOGoAptMailDutchDeletion.wod b/SoObjects/Appointments/SOGoAptMailDutchDeletion.wo/SOGoAptMailDutchDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchDeletion.wo/SOGoAptMailDutchDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailDutchICalReply.wo/SOGoAptMailDutchICalReply.html b/SoObjects/Appointments/SOGoAptMailDutchICalReply.wo/SOGoAptMailDutchICalReply.html deleted file mode 100644 index 48959a4cf..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchICalReply.wo/SOGoAptMailDutchICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Antwoord voor de gebeurtenisuitnodiging: <#summary/> -<#IsBody><#organizer/><#HasSentBy> (sent by <#sentBy/>) heeft uw uitnodiging voor de gebeurtenis <#HasAccepted>geaccepteerd<#HasDeclined>geweigerd<#HasNotAcceptedNotDeclined>not yet decided upon. diff --git a/SoObjects/Appointments/SOGoAptMailDutchICalReply.wo/SOGoAptMailDutchICalReply.wod b/SoObjects/Appointments/SOGoAptMailDutchICalReply.wo/SOGoAptMailDutchICalReply.wod deleted file mode 100644 index aebf86c26..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchICalReply.wo/SOGoAptMailDutchICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailDutchInvitation.wo/SOGoAptMailDutchInvitation.html b/SoObjects/Appointments/SOGoAptMailDutchInvitation.wo/SOGoAptMailDutchInvitation.html deleted file mode 100644 index 02a92f4c2..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchInvitation.wo/SOGoAptMailDutchInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Uitnodiging voor gebeurtenis: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) heeft u uitgenodigd voor <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailDutchInvitation.wo/SOGoAptMailDutchInvitation.wod b/SoObjects/Appointments/SOGoAptMailDutchInvitation.wo/SOGoAptMailDutchInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchInvitation.wo/SOGoAptMailDutchInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailDutchUpdate.wo/SOGoAptMailDutchUpdate.html b/SoObjects/Appointments/SOGoAptMailDutchUpdate.wo/SOGoAptMailDutchUpdate.html deleted file mode 100644 index 10b806356..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchUpdate.wo/SOGoAptMailDutchUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>The appointment "<#Summary />" for the <#OldAptStartDate /> at <#OldAptStartTime /> has changed -<#IsBody> -This appointment<#HasSentBy> (sent by <#sentBy/>), previously set for <#OldAptStartDate /><#IsNotOldAllDay> at <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) is now scheduled for <#NewAptStartDate /><#IsNotNewAllDay> at <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Please make a decision for these new settings. - diff --git a/SoObjects/Appointments/SOGoAptMailDutchUpdate.wo/SOGoAptMailDutchUpdate.wod b/SoObjects/Appointments/SOGoAptMailDutchUpdate.wo/SOGoAptMailDutchUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailDutchUpdate.wo/SOGoAptMailDutchUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.html b/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.html deleted file mode 100644 index 80644f86e..000000000 --- a/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Event Cancelled: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) has cancelled this event: <#summary/>. \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.wod b/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailEnglishInvitation.wo/SOGoAptMailEnglishInvitation.html b/SoObjects/Appointments/SOGoAptMailEnglishInvitation.wo/SOGoAptMailEnglishInvitation.html deleted file mode 100644 index a8805ccb6..000000000 --- a/SoObjects/Appointments/SOGoAptMailEnglishInvitation.wo/SOGoAptMailEnglishInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Event Invitation: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) has invited you to <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailEnglishInvitation.wo/SOGoAptMailEnglishInvitation.wod b/SoObjects/Appointments/SOGoAptMailEnglishInvitation.wo/SOGoAptMailEnglishInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailEnglishInvitation.wo/SOGoAptMailEnglishInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailEnglishUpdate.wo/SOGoAptMailEnglishUpdate.html b/SoObjects/Appointments/SOGoAptMailEnglishUpdate.wo/SOGoAptMailEnglishUpdate.html deleted file mode 100644 index 10b806356..000000000 --- a/SoObjects/Appointments/SOGoAptMailEnglishUpdate.wo/SOGoAptMailEnglishUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>The appointment "<#Summary />" for the <#OldAptStartDate /> at <#OldAptStartTime /> has changed -<#IsBody> -This appointment<#HasSentBy> (sent by <#sentBy/>), previously set for <#OldAptStartDate /><#IsNotOldAllDay> at <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) is now scheduled for <#NewAptStartDate /><#IsNotNewAllDay> at <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Please make a decision for these new settings. - diff --git a/SoObjects/Appointments/SOGoAptMailEnglishUpdate.wo/SOGoAptMailEnglishUpdate.wod b/SoObjects/Appointments/SOGoAptMailEnglishUpdate.wo/SOGoAptMailEnglishUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailEnglishUpdate.wo/SOGoAptMailEnglishUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.html b/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.html deleted file mode 100644 index a025bde4d..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Événement annulé : « <#summary/> » -<#IsBody><#organizer/> <#HasSentBy>(envoyé par <#sentBy/>) a annulé cet événement : « <#summary/> ». diff --git a/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.wod b/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailFrenchICalReply.wo/SOGoAptMailFrenchICalReply.html b/SoObjects/Appointments/SOGoAptMailFrenchICalReply.wo/SOGoAptMailFrenchICalReply.html deleted file mode 100644 index fe5c4ff95..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchICalReply.wo/SOGoAptMailFrenchICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Réponse à l'invitation : «<#summary/>» -<#IsBody><#attendee/><#HasSentBy> (envoyé par <#sentBy/>) a <#HasAccepted>accepté<#HasDeclined>refusé<#HasNotAcceptedNotDeclined>choisi de reporter sa décision par rapport à votre invitation. diff --git a/SoObjects/Appointments/SOGoAptMailFrenchICalReply.wo/SOGoAptMailFrenchICalReply.wod b/SoObjects/Appointments/SOGoAptMailFrenchICalReply.wo/SOGoAptMailFrenchICalReply.wod deleted file mode 100644 index aebf86c26..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchICalReply.wo/SOGoAptMailFrenchICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.html b/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.html deleted file mode 100644 index 8a4ec4b82..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Invitation : <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(envoyé par <#sentBy/>) vous a invité à « <#summary/> ». diff --git a/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.wod b/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html b/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html deleted file mode 100644 index 4bd7f62e9..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>Le rendez-vous "<#Summary />" du <#OldAptStartDate /> à <#OldAptStartTime /> est modifié -<#IsBody> -La réunion<#HasSentBy> (envoyé par <#sentBy/>) qui devait se dérouler le <#OldAptStartDate /><#IsNotOldAllDay> à <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) est maintenant prévue le <#NewAptStartDate /><#IsNotNewAllDay> à <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Vous êtes invité à accepter ou refuser de participer à la réunion pour cette nouvelle date. - diff --git a/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.wod b/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.html b/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.html deleted file mode 100644 index 3c0264a20..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Termin abgesagt: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) hat diesen Termin abgesagt: <#summary/> diff --git a/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.wod b/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailGermanICalReply.wo/SOGoAptMailGermanICalReply.html b/SoObjects/Appointments/SOGoAptMailGermanICalReply.wo/SOGoAptMailGermanICalReply.html deleted file mode 100644 index b008ad29c..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanICalReply.wo/SOGoAptMailGermanICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Antwort Termineinladung: <#summary/> -<#IsBody><#attendee/><#HasSentBy> (sent by <#sentBy/>) hat <#HasAccepted>Ihre Termineinladung akzeptiert<#HasDeclined>Ihre Termineinladung abgelehnt<#HasNotAcceptedNotDeclined>noch nicht über Ihre Termineinladung entschieden. diff --git a/SoObjects/Appointments/SOGoAptMailGermanICalReply.wo/SOGoAptMailGermanICalReply.wod b/SoObjects/Appointments/SOGoAptMailGermanICalReply.wo/SOGoAptMailGermanICalReply.wod deleted file mode 100644 index aebf86c26..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanICalReply.wo/SOGoAptMailGermanICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.html b/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.html deleted file mode 100644 index 3f6163919..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Termineinladung: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) hat Sie zu <#summary/> eingeladen. diff --git a/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.wod b/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html b/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html deleted file mode 100644 index 0de7e95ad..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>Der Termin "<#Summary />" am <#OldAptStartDate /> um <#OldAptStartTime /> hat sich geändert -<#IsBody> -Dieser Termin <#HasSentBy>(sent by <#sentBy/>), ursprünglich geplant am <#OldAptStartDate /><#IsNotOldAllDay> um <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />), ist nun verschoben auf den <#NewAptStartDate /><#IsNotNewAllDay> um <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Bitte treffen Sie eine Entscheidung über diese Änderung. - diff --git a/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.wod b/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailHungarianDeletion.wo/SOGoAptMailHungarianDeletion.html b/SoObjects/Appointments/SOGoAptMailHungarianDeletion.wo/SOGoAptMailHungarianDeletion.html deleted file mode 100644 index 5fce816c8..000000000 --- a/SoObjects/Appointments/SOGoAptMailHungarianDeletion.wo/SOGoAptMailHungarianDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Találkozó törölve: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(<#sentBy/> által elküldve) törölte ezt a találkozót: <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailHungarianICalReply.wo/SOGoAptMailHungarianICalReply.html b/SoObjects/Appointments/SOGoAptMailHungarianICalReply.wo/SOGoAptMailHungarianICalReply.html deleted file mode 100644 index 06ceabd67..000000000 --- a/SoObjects/Appointments/SOGoAptMailHungarianICalReply.wo/SOGoAptMailHungarianICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Válasz a meghívásra: <#summary/> -<#IsBody><#attendee/><#HasSentBy> (<#sentBy/> által elküldve) <#HasAccepted>elfogadta<#HasDeclined>visszautasította<#HasNotAcceptedNotDeclined>még meggondolja a meghívását. diff --git a/SoObjects/Appointments/SOGoAptMailHungarianInvitation.wo/SOGoAptMailHungarianInvitation.html b/SoObjects/Appointments/SOGoAptMailHungarianInvitation.wo/SOGoAptMailHungarianInvitation.html deleted file mode 100644 index 32b8813b4..000000000 --- a/SoObjects/Appointments/SOGoAptMailHungarianInvitation.wo/SOGoAptMailHungarianInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Meghívás találkozóra: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(<#sentBy/> által elküldve) meghívta önt erre a találkozóra: <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailHungarianUpdate.wo/SOGoAptMailHungarianUpdate.html b/SoObjects/Appointments/SOGoAptMailHungarianUpdate.wo/SOGoAptMailHungarianUpdate.html deleted file mode 100644 index d5dc440a7..000000000 --- a/SoObjects/Appointments/SOGoAptMailHungarianUpdate.wo/SOGoAptMailHungarianUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>A "<#Summary />" találkozó a(z) <#OldAptStartDate /> időpontban <#OldAptStartTime /> megváltozott -<#IsBody> -A találkozó<#HasSentBy> (<#sentBy/> által elküldve), amelyet korábban a(z) <#OldAptStartDate /> időpontra tervezetek<#IsNotOldAllDay> <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) most a <#NewAptStartDate /><#IsNotNewAllDay> <#NewAptStartTime /> időpontra lett ütemezve.<#HasNewLocation> (<#NewAptLocation />). -Kérem döntsön az új időpontról. - diff --git a/SoObjects/Appointments/SOGoAptMailICalReply.h b/SoObjects/Appointments/SOGoAptMailICalReply.h index ba81f03c1..539966932 100644 --- a/SoObjects/Appointments/SOGoAptMailICalReply.h +++ b/SoObjects/Appointments/SOGoAptMailICalReply.h @@ -23,29 +23,21 @@ #ifndef SOGOAPTMAILICALREPLY_H #define SOGOAPTMAILICALREPLY_H -#import +#import "SOGoAptMailNotification.h" @class NSString; -@class NSCalendarDate; @class iCalPerson; -@class iCalEntityObject; /* * NOTE: We inherit from SoComponent in order to get the correct * resourceManager required for this product */ -@interface SOGoAptMailICalReply : SoComponent +@interface SOGoAptMailICalReply : SOGoAptMailNotification { - iCalEntityObject *apt; iCalPerson *attendee; - NSString *homePageURL; - BOOL isSubject; } -- (void) setApt: (iCalEntityObject *) newApt; -- (iCalEntityObject *) apt; - - (void) setAttendee: (iCalPerson *) newAttendee; - (iCalPerson *) attendee; diff --git a/SoObjects/Appointments/SOGoAptMailICalReply.m b/SoObjects/Appointments/SOGoAptMailICalReply.m index bbd113809..15a43828c 100644 --- a/SoObjects/Appointments/SOGoAptMailICalReply.m +++ b/SoObjects/Appointments/SOGoAptMailICalReply.m @@ -1,6 +1,6 @@ /* SOGoAptMailICalReply - this file is part of SOGo * - * Copyright (C) 2007-2009 Inverse inc. + * Copyright (C) 2010 Inverse inc. * * Author: Wolfgang Sourdeau * @@ -20,51 +20,18 @@ * Boston, MA 02111-1307, USA. */ -#import -#import -#import - -#import -#import -#import -#import - -#import -#import - -#import -#import -#import +#import +#import #import "iCalPerson+SOGo.h" #import "SOGoAptMailICalReply.h" -@interface SOGoAptMailICalReply (PrivateAPI) - -- (BOOL) isSubject; - -@end - @implementation SOGoAptMailICalReply -static NSCharacterSet *wsSet = nil; - -+ (void) initialize -{ - static BOOL didInit = NO; - - if (!didInit) - { - didInit = YES; - wsSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet] retain]; - } -} - - (id) init { if ((self = [super init])) { - apt = nil; attendee = nil; } @@ -73,21 +40,10 @@ static NSCharacterSet *wsSet = nil; - (void) dealloc { - [apt release]; [attendee release]; [super dealloc]; } -- (void) setApt: (iCalEntityObject *) newApt -{ - ASSIGN (apt, newApt); -} - -- (iCalEntityObject *) apt -{ - return apt; -} - - (void) setAttendee: (iCalPerson *) newAttendee { ASSIGN (attendee, newAttendee); @@ -110,158 +66,76 @@ static NSCharacterSet *wsSet = nil; return [attendee rfc822Email]; } -- (BOOL) hasSentBy +- (void) setupValues { - return [attendee hasSentBy]; -} + NSDictionary *sentByValues; + NSString *sentBy, *sentByText; -- (NSString *) sentBy -{ - return [attendee sentBy]; -} + [super setupValues]; -- (BOOL) hasAccepted -{ - NSString *partStat; + [values setObject: [self attendeeName] forKey: @"Attendee"]; - partStat = [[attendee partStat] lowercaseString]; - - return [partStat isEqualToString: @"accepted"]; -} - -- (BOOL) hasDeclined -{ - NSString *partStat; - - partStat = [[attendee partStat] lowercaseString]; - - return [partStat isEqualToString: @"declined"]; -} - -- (BOOL) hasNotAcceptedNotDeclined -{ - return !([self hasAccepted] || [self hasDeclined]); -} - -- (NSCalendarDate *) startDate -{ - NSCalendarDate *date; - SOGoUser *user; - NSTimeZone *tz; - - date = [apt startDate]; - user = [[self context] activeUser]; - tz = [[user userDefaults] timeZone]; - [date setTimeZone: tz]; - - return date; -} - -- (NSString *) summary -{ - return [apt summary]; -} - -- (BOOL) isSubject -{ - return isSubject; + sentBy = [attendee sentBy]; + if ([sentBy length]) + { + sentByValues = [NSDictionary dictionaryWithObject: sentBy + forKey: @"SentBy"]; + sentByText + = [sentByValues keysWithFormat: [self + labelForKey: @"(sent by %{SentBy})" + inContext: context]]; + } + else + sentByText = @""; + [values setObject: sentByText forKey: @"SentByText"]; } /* Generate Response */ - (NSString *) getSubject { - NSString *subject; + NSString *subjectFormat; - isSubject = YES; - subject = [[[self generateResponse] contentAsString] - stringByTrimmingCharactersInSet: wsSet]; - if (!subject) - { - [self errorWithFormat:@"Failed to properly generate subject! Please check " - @"template for component '%@'!", - [self name]]; - subject = @"ERROR: missing subject!"; - } + if (!values) + [self setupValues]; - return [subject asQPSubjectString: @"utf-8"]; + subjectFormat = [self labelForKey: @"Reply to invitation: \"%{Summary}\"" + inContext: context]; + + return [values keysWithFormat: subjectFormat]; } - (NSString *) getBody { - NSString *body; + NSString *bodyFormat; + NSString *partStat, *delegate; - isSubject = NO; + if (!values) + [self setupValues]; - body = [[self generateResponse] contentAsString]; + partStat = [[attendee partStat] lowercaseString]; + if ([partStat isEqualToString: @"accepted"]) + bodyFormat = @"%{Attendee} %{SentByText}has accepted your event invitation."; + else if ([partStat isEqualToString: @"declined"]) + bodyFormat = @"%{Attendee} %{SentByText}has declined your event invitation."; + else if ([partStat isEqualToString: @"delegated"]) + { + bodyFormat = @"%{Attendee} %{SentByText}has delegated the invitation" + @" to %{Delegate}."; + delegate = [attendee delegatedTo]; + if ([delegate length] > 7) + { + delegate = [delegate substringFromIndex: 7]; + if ([delegate characterAtIndex: 0] == '"' && [delegate hasSuffix: @"\""]) + delegate = [delegate substringWithRange: NSMakeRange(1, [delegate length]-2)]; + + [values setObject: delegate forKey: @"Delegate"]; + } + } + else + bodyFormat = @"%{Attendee} %{SentByText}has not yet decided upon your event invitation."; - return [body stringByTrimmingCharactersInSet: wsSet]; + return [values keysWithFormat: [self labelForKey: bodyFormat inContext: context]]; } @end - -@interface SOGoAptMailEnglishICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailEnglishICalReply -@end - -@interface SOGoAptMailBrazilianPortugueseICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailBrazilianPortugueseICalReply -@end - -@interface SOGoAptMailCzechICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailCzechICalReply -@end - -@interface SOGoAptMailFrenchICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailFrenchICalReply -@end - -@interface SOGoAptMailGermanICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailGermanICalReply -@end - -@interface SOGoAptMailHungarianICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailHungarianICalReply -@end - -@interface SOGoAptMailItalianICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailItalianICalReply -@end - -@interface SOGoAptMailRussianICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailRussianICalReply -@end - -@interface SOGoAptMailSpanishICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailSpanishICalReply -@end - -@interface SOGoAptMailSwedishICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailSwedishICalReply -@end - -@interface SOGoAptMailWelshICalReply : SOGoAptMailICalReply -@end - -@implementation SOGoAptMailWelshICalReply -@end diff --git a/SoObjects/Appointments/SOGoAptMailInvitation.m b/SoObjects/Appointments/SOGoAptMailInvitation.m index c8ac1fc46..3761f215b 100644 --- a/SoObjects/Appointments/SOGoAptMailInvitation.m +++ b/SoObjects/Appointments/SOGoAptMailInvitation.m @@ -1,94 +1,62 @@ /* - 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 + Copyright (C) 2010 Inverse + + This file is part of SOGo + + SOGo 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 + SOGo 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 + License along with SOGo; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#import + +#import +#import + +#import "iCalPerson+SOGo.h" + #import "SOGoAptMailNotification.h" -@interface SOGoAptMailEnglishInvitation : SOGoAptMailNotification +@interface SOGoAptMailInvitation : SOGoAptMailNotification @end -@implementation SOGoAptMailEnglishInvitation -@end +@implementation SOGoAptMailInvitation -@interface SOGoAptMailBrazilianPortugueseInvitation : SOGoAptMailNotification -@end +- (NSString *) getSubject +{ + NSString *subjectFormat; -@implementation SOGoAptMailBrazilianPortugueseInvitation -@end + if (!values) + [self setupValues]; -@interface SOGoAptMailCzechInvitation : SOGoAptMailNotification -@end + subjectFormat = [self labelForKey: @"Event Invitation: \"%{Summary}\"" + inContext: context]; -@implementation SOGoAptMailCzechInvitation -@end + return [values keysWithFormat: subjectFormat]; +} -@interface SOGoAptMailDutchInvitation : SOGoAptMailNotification -@end +- (NSString *) getBody +{ + NSString *bodyFormat; -@implementation SOGoAptMailDutchInvitation -@end + if (!values) + [self setupValues]; -@interface SOGoAptMailFrenchInvitation : SOGoAptMailNotification -@end + bodyFormat = [self labelForKey: @"%{Organizer} %{SentByText}has invited you to %{Summary}." + inContext: context]; -@implementation SOGoAptMailFrenchInvitation -@end + return [values keysWithFormat: bodyFormat]; +} -@interface SOGoAptMailGermanInvitation : SOGoAptMailNotification -@end - -@implementation SOGoAptMailGermanInvitation -@end - -@interface SOGoAptMailHungarianInvitation : SOGoAptMailNotification -@end - -@implementation SOGoAptMailHungarianInvitation -@end - -@interface SOGoAptMailItalianInvitation : SOGoAptMailNotification -@end - -@implementation SOGoAptMailItalianInvitation -@end - -@interface SOGoAptMailRussianInvitation : SOGoAptMailNotification -@end - -@implementation SOGoAptMailRussianInvitation -@end - -@interface SOGoAptMailSpanishInvitation : SOGoAptMailNotification -@end - -@implementation SOGoAptMailSpanishInvitation -@end - -@interface SOGoAptMailSwedishInvitation : SOGoAptMailNotification -@end - -@implementation SOGoAptMailSwedishInvitation -@end - -@interface SOGoAptMailWelshInvitation : SOGoAptMailNotification -@end - -@implementation SOGoAptMailWelshInvitation @end diff --git a/SoObjects/Appointments/SOGoAptMailItalianDeletion.wo/SOGoAptMailItalianDeletion.html b/SoObjects/Appointments/SOGoAptMailItalianDeletion.wo/SOGoAptMailItalianDeletion.html deleted file mode 100644 index 754921b66..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianDeletion.wo/SOGoAptMailItalianDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Evento cancellato : " <#summary/> " -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) ha cancellato questo elemento: " <#summary/> ". diff --git a/SoObjects/Appointments/SOGoAptMailItalianDeletion.wo/SOGoAptMailItalianDeletion.wod b/SoObjects/Appointments/SOGoAptMailItalianDeletion.wo/SOGoAptMailItalianDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianDeletion.wo/SOGoAptMailItalianDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailItalianICalReply.wo/SOGoAptMailItalianICalReply.html b/SoObjects/Appointments/SOGoAptMailItalianICalReply.wo/SOGoAptMailItalianICalReply.html deleted file mode 100644 index 3365b2211..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianICalReply.wo/SOGoAptMailItalianICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Re: Appuntemento : "<#summary/>" -<#IsBody><#attendee/><#HasSentBy> (sent by <#sentBy/>) ha <#HasAccepted>accettato<#HasDeclined>declinato<#HasNotAcceptedNotDeclined>not yet decided upon l'invito al proprio evento. diff --git a/SoObjects/Appointments/SOGoAptMailItalianICalReply.wo/SOGoAptMailItalianICalReply.wod b/SoObjects/Appointments/SOGoAptMailItalianICalReply.wo/SOGoAptMailItalianICalReply.wod deleted file mode 100644 index aebf86c26..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianICalReply.wo/SOGoAptMailItalianICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailItalianInvitation.wo/SOGoAptMailItalianInvitation.html b/SoObjects/Appointments/SOGoAptMailItalianInvitation.wo/SOGoAptMailItalianInvitation.html deleted file mode 100644 index 066d88a7b..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianInvitation.wo/SOGoAptMailItalianInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Invito evento: <#summary/> -<#IsBody>Si è stati invitati da <#organizer/> <#HasSentBy>(sent by <#sentBy/>) a <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailItalianInvitation.wo/SOGoAptMailItalianInvitation.wod b/SoObjects/Appointments/SOGoAptMailItalianInvitation.wo/SOGoAptMailItalianInvitation.wod deleted file mode 100644 index 66b51444b..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianInvitation.wo/SOGoAptMailItalianInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} diff --git a/SoObjects/Appointments/SOGoAptMailItalianUpdate.wo/SOGoAptMailItalianUpdate.html b/SoObjects/Appointments/SOGoAptMailItalianUpdate.wo/SOGoAptMailItalianUpdate.html deleted file mode 100644 index 5b2637a8a..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianUpdate.wo/SOGoAptMailItalianUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>L'appuntamento "<#Summary />" fissato in data <#OldAptStartDate /> alle ore <#OldAptStartTime /> è stato modificato -<#IsBody> -Questo appuntamento<#HasSentBy> (sent by <#sentBy/>), fissato precedentemete in data <#OldAptStartDate /><#HasOldLocation> (<#OldAptLocation />)<#IsNotOldAllDay> alle ore <#OldAptStartTime /> è ora programmato il <#NewAptStartDate /><#IsNotNewAllDay> alle ore <#NewAptStartTime/><#HasNewLocation> (<#NewAptLocation />). -Per confermare o disdire. - diff --git a/SoObjects/Appointments/SOGoAptMailItalianUpdate.wo/SOGoAptMailItalianUpdate.wod b/SoObjects/Appointments/SOGoAptMailItalianUpdate.wo/SOGoAptMailItalianUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailItalianUpdate.wo/SOGoAptMailItalianUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailNotification.h b/SoObjects/Appointments/SOGoAptMailNotification.h index 06aa31768..36dec76dd 100644 --- a/SoObjects/Appointments/SOGoAptMailNotification.h +++ b/SoObjects/Appointments/SOGoAptMailNotification.h @@ -25,8 +25,11 @@ #include -@class NSString, NSTimeZone, NSCalendarDate; -@class iCalEntityObject; +@class NSCalendarDate; +@class NSMutableDictionary; +@class NSString; +@class NSTimeZone; +@class iCalEvent; /* * NOTE: We inherit from SoComponent in order to get the correct @@ -34,27 +37,30 @@ */ @interface SOGoAptMailNotification : SoComponent { - iCalEntityObject *apt; - iCalEntityObject *previousApt; + iCalEvent *apt; + iCalEvent *previousApt; NSString *homePageURL; NSTimeZone *viewTZ; NSCalendarDate *oldStartDate; NSCalendarDate *newStartDate; BOOL isSubject; NSString *organizerName; + NSMutableDictionary *values; } -- (iCalEntityObject *) apt; -- (void) setApt: (iCalEntityObject *) theApt; +- (void) setupValues; -- (iCalEntityObject *) previousApt; -- (void) setPreviousApt: (iCalEntityObject *) theApt; +- (iCalEvent *) apt; +- (void) setApt: (iCalEvent *) theApt; + +- (iCalEvent *) previousApt; +- (void) setPreviousApt: (iCalEvent *) theApt; - (void) setOrganizerName: (NSString *) theString; - (NSString *) organizerName; -- (BOOL) hasSentBy; -- (NSString *) sentBy; +- (NSCalendarDate *) oldStartDate; +- (NSCalendarDate *) newStartDate; - (NSString *) getSubject; - (NSString *) getBody; diff --git a/SoObjects/Appointments/SOGoAptMailNotification.m b/SoObjects/Appointments/SOGoAptMailNotification.m index 3f5dfe02b..19e870ce0 100644 --- a/SoObjects/Appointments/SOGoAptMailNotification.m +++ b/SoObjects/Appointments/SOGoAptMailNotification.m @@ -27,33 +27,24 @@ #import #import #import -#import +#import #import -#import +#import +#import +#import #import "iCalPerson+SOGo.h" #import "SOGoAptMailNotification.h" -@interface SOGoAptMailNotification (PrivateAPI) - -- (BOOL) isSubject; -- (void) setIsSubject: (BOOL) newIsSubject; - -@end - @implementation SOGoAptMailNotification -static NSCharacterSet *wsSet = nil; static NSTimeZone *UTC = nil; + (void) initialize { - if (!wsSet) - { - wsSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet] retain]; - UTC = [[NSTimeZone timeZoneWithAbbreviation: @"UTC"] retain]; - } + if (!UTC) + UTC = [[NSTimeZone timeZoneWithAbbreviation: @"UTC"] retain]; } - (id) init @@ -61,6 +52,7 @@ static NSTimeZone *UTC = nil; if ((self = [super init])) { apt = nil; + values = nil; } return self; @@ -68,6 +60,7 @@ static NSTimeZone *UTC = nil; - (void) dealloc { + [values release]; [apt release]; [previousApt release]; [organizerName release]; @@ -77,24 +70,24 @@ static NSTimeZone *UTC = nil; [super dealloc]; } -- (iCalEntityObject *) apt +- (iCalEvent *) apt { return apt; } -- (void) setApt: (iCalEntityObject *) theApt +- (void) setApt: (iCalEvent *) theApt { - ASSIGN(apt, theApt); + ASSIGN (apt, theApt); } -- (iCalEntityObject *) previousApt +- (iCalEvent *) previousApt { return previousApt; } -- (void) setPreviousApt: (iCalEntityObject *) theApt +- (void) setPreviousApt: (iCalEvent *) theApt { - ASSIGN(previousApt, theApt); + ASSIGN (previousApt, theApt); } - (BOOL) hasNewLocation @@ -109,42 +102,32 @@ static NSTimeZone *UTC = nil; - (NSTimeZone *) viewTZ { - if (self->viewTZ) return self->viewTZ; + if (viewTZ) return viewTZ; return UTC; } - (void) setViewTZ: (NSTimeZone *) _viewTZ { - ASSIGN(self->viewTZ, _viewTZ); + ASSIGN (viewTZ, _viewTZ); } - (NSCalendarDate *) oldStartDate { - if (!self->oldStartDate) + if (!oldStartDate) { - ASSIGN(self->oldStartDate, [[self previousApt] startDate]); - [self->oldStartDate setTimeZone: [self viewTZ]]; + ASSIGN (oldStartDate, [[self previousApt] startDate]); + [oldStartDate setTimeZone: [self viewTZ]]; } - return self->oldStartDate; + return oldStartDate; } - (NSCalendarDate *) newStartDate { - if (!self->newStartDate) + if (!newStartDate) { - ASSIGN(self->newStartDate, [[self apt] startDate]); - [self->newStartDate setTimeZone:[self viewTZ]]; + ASSIGN (newStartDate, [[self apt] startDate]); + [newStartDate setTimeZone:[self viewTZ]]; } - return self->newStartDate; -} - -- (BOOL) isSubject -{ - return isSubject; -} - -- (void) setIsSubject: (BOOL) newIsSubject -{ - isSubject = newIsSubject; + return newStartDate; } - (NSString *) summary @@ -154,7 +137,7 @@ static NSTimeZone *UTC = nil; - (void) setOrganizerName: (NSString *) theString { - ASSIGN(organizerName, theString); + ASSIGN (organizerName, theString); } - (NSString *) organizerName @@ -162,47 +145,49 @@ static NSTimeZone *UTC = nil; return organizerName; } -- (BOOL) hasSentBy -{ - return [[apt organizer] hasSentBy]; -} - -- (NSString *) sentBy -{ - return [[apt organizer] sentBy]; -} - /* Helpers */ /* Generate Response */ - (NSString *) getSubject { - NSString *subject; + [self subclassResponsibility: _cmd]; - [self setIsSubject: YES]; - subject = [[[self generateResponse] contentAsString] - stringByTrimmingCharactersInSet: wsSet]; - if (!subject) - { - [self errorWithFormat:@"Failed to properly generate subject! Please check " - @"template for component '%@'!", - [self name]]; - subject = @"ERROR: missing subject!"; - } - - return [subject asQPSubjectString: @"utf-8"]; + return nil; } - (NSString *) getBody { - NSString *body; + [self subclassResponsibility: _cmd]; - [self setIsSubject:NO]; + return nil; +} - body = [[self generateResponse] contentAsString]; +- (void) setupValues +{ + NSDictionary *sentByValues; + NSString *sentBy, *sentByText; - return [body stringByTrimmingCharactersInSet: wsSet]; + values = [NSMutableDictionary new]; + [values setObject: [self summary] forKey: @"Summary"]; + if (organizerName) + { + [values setObject: organizerName forKey: @"Organizer"]; + + sentBy = [[apt organizer] sentBy]; + if ([sentBy length]) + { + sentByValues = [NSDictionary dictionaryWithObject: sentBy + forKey: @"SentBy"]; + sentByText + = [sentByValues keysWithFormat: [self + labelForKey: @"(sent by %{SentBy})" + inContext: context]]; + } + else + sentByText = @""; + [values setObject: sentByText forKey: @"SentByText"]; + } } @end diff --git a/SoObjects/Appointments/SOGoAptMailRussianDeletion.wo/SOGoAptMailRussianDeletion.html b/SoObjects/Appointments/SOGoAptMailRussianDeletion.wo/SOGoAptMailRussianDeletion.html deleted file mode 100644 index 3bfc63827..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianDeletion.wo/SOGoAptMailRussianDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Событие отменено: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(отправил <#sentBy/>) отменил это событие: <#summary/>. \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailRussianDeletion.wo/SOGoAptMailRussianDeletion.wod b/SoObjects/Appointments/SOGoAptMailRussianDeletion.wo/SOGoAptMailRussianDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianDeletion.wo/SOGoAptMailRussianDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailRussianICalReply.wo/SOGoAptMailRussianICalReply.html b/SoObjects/Appointments/SOGoAptMailRussianICalReply.wo/SOGoAptMailRussianICalReply.html deleted file mode 100644 index 6d17b327c..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianICalReply.wo/SOGoAptMailRussianICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Ответ на приглашение: <#summary/> -<#IsBody><#attendee/><#HasSentBy> (послал <#sentBy/>) <#HasAccepted>согласился<#HasDeclined>отказался<#HasNotAcceptedNotDeclined>не определился с желанием участвовать в запланированном мероприятии. diff --git a/SoObjects/Appointments/SOGoAptMailRussianICalReply.wo/SOGoAptMailRussianICalReply.wod b/SoObjects/Appointments/SOGoAptMailRussianICalReply.wo/SOGoAptMailRussianICalReply.wod deleted file mode 100644 index 0bb57ca7f..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianICalReply.wo/SOGoAptMailRussianICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} diff --git a/SoObjects/Appointments/SOGoAptMailRussianInvitation.wo/SOGoAptMailRussianInvitation.html b/SoObjects/Appointments/SOGoAptMailRussianInvitation.wo/SOGoAptMailRussianInvitation.html deleted file mode 100644 index deeb2b0a9..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianInvitation.wo/SOGoAptMailRussianInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Приглашение на мероприятие: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(послал <#sentBy/>) приглашает Вас на мероприятие <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailRussianInvitation.wo/SOGoAptMailRussianInvitation.wod b/SoObjects/Appointments/SOGoAptMailRussianInvitation.wo/SOGoAptMailRussianInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianInvitation.wo/SOGoAptMailRussianInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailRussianUpdate.wo/SOGoAptMailRussianUpdate.html b/SoObjects/Appointments/SOGoAptMailRussianUpdate.wo/SOGoAptMailRussianUpdate.html deleted file mode 100644 index 3abdf48c0..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianUpdate.wo/SOGoAptMailRussianUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>Изменено мероприятие "<#Summary />", запланированное на <#OldAptStartDate /> <#OldAptStartTime />. -<#IsBody> -Это мероприятие<#HasSentBy> (пригласил <#sentBy/>), ранее было запланировано на <#OldAptStartDate /><#IsNotOldAllDay> в <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) теперь запланировано на <#NewAptStartDate /><#IsNotNewAllDay> в <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Пожалуйста примите решение об участии в мероприятии в новое время и/или в новом месте. - diff --git a/SoObjects/Appointments/SOGoAptMailRussianUpdate.wo/SOGoAptMailRussianUpdate.wod b/SoObjects/Appointments/SOGoAptMailRussianUpdate.wo/SOGoAptMailRussianUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailRussianUpdate.wo/SOGoAptMailRussianUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailSpanishDeletion.wo/SOGoAptMailSpanishDeletion.html b/SoObjects/Appointments/SOGoAptMailSpanishDeletion.wo/SOGoAptMailSpanishDeletion.html deleted file mode 100644 index 97636c29a..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishDeletion.wo/SOGoAptMailSpanishDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Evento cancelado: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) ha cancelado este evento: « <#summary/> ». diff --git a/SoObjects/Appointments/SOGoAptMailSpanishDeletion.wo/SOGoAptMailSpanishDeletion.wod b/SoObjects/Appointments/SOGoAptMailSpanishDeletion.wo/SOGoAptMailSpanishDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishDeletion.wo/SOGoAptMailSpanishDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailSpanishICalReply.wo/SOGoAptMailSpanishICalReply.html b/SoObjects/Appointments/SOGoAptMailSpanishICalReply.wo/SOGoAptMailSpanishICalReply.html deleted file mode 100644 index 76ac36766..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishICalReply.wo/SOGoAptMailSpanishICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Respuesta a la invitación al evento: <#summary/> -<#IsBody><#attendee/><#HasSentBy> (sent by <#sentBy/>) ha <#HasAccepted>aceptado<#HasDelined>rechazado<#HasNotAcceptedNotDeclined>not yet decided upon su invitación al evento. diff --git a/SoObjects/Appointments/SOGoAptMailSpanishICalReply.wo/SOGoAptMailSpanishICalReply.wod b/SoObjects/Appointments/SOGoAptMailSpanishICalReply.wo/SOGoAptMailSpanishICalReply.wod deleted file mode 100644 index aebf86c26..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishICalReply.wo/SOGoAptMailSpanishICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailSpanishInvitation.wo/SOGoAptMailSpanishInvitation.html b/SoObjects/Appointments/SOGoAptMailSpanishInvitation.wo/SOGoAptMailSpanishInvitation.html deleted file mode 100644 index 22ddafe96..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishInvitation.wo/SOGoAptMailSpanishInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Invitación a evento: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) le ha invitado a <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailSpanishInvitation.wo/SOGoAptMailSpanishInvitation.wod b/SoObjects/Appointments/SOGoAptMailSpanishInvitation.wo/SOGoAptMailSpanishInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishInvitation.wo/SOGoAptMailSpanishInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailSpanishUpdate.wo/SOGoAptMailSpanishUpdate.html b/SoObjects/Appointments/SOGoAptMailSpanishUpdate.wo/SOGoAptMailSpanishUpdate.html deleted file mode 100644 index 10b806356..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishUpdate.wo/SOGoAptMailSpanishUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>The appointment "<#Summary />" for the <#OldAptStartDate /> at <#OldAptStartTime /> has changed -<#IsBody> -This appointment<#HasSentBy> (sent by <#sentBy/>), previously set for <#OldAptStartDate /><#IsNotOldAllDay> at <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) is now scheduled for <#NewAptStartDate /><#IsNotNewAllDay> at <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Please make a decision for these new settings. - diff --git a/SoObjects/Appointments/SOGoAptMailSpanishUpdate.wo/SOGoAptMailSpanishUpdate.wod b/SoObjects/Appointments/SOGoAptMailSpanishUpdate.wo/SOGoAptMailSpanishUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailSpanishUpdate.wo/SOGoAptMailSpanishUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailSwedishDeletion.wo/SOGoAptMailSwedishDeletion.html b/SoObjects/Appointments/SOGoAptMailSwedishDeletion.wo/SOGoAptMailSwedishDeletion.html deleted file mode 100644 index 8915564dd..000000000 --- a/SoObjects/Appointments/SOGoAptMailSwedishDeletion.wo/SOGoAptMailSwedishDeletion.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Händelse inställd: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sent by <#sentBy/>) har ställt in denna händelse: <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailSwedishDeletion.wo/SOGoAptMailSwedishDeletion.wod b/SoObjects/Appointments/SOGoAptMailSwedishDeletion.wo/SOGoAptMailSwedishDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailSwedishDeletion.wo/SOGoAptMailSwedishDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailSwedishInvitation.wo/SOGoAptMailSwedishInvitation.html b/SoObjects/Appointments/SOGoAptMailSwedishInvitation.wo/SOGoAptMailSwedishInvitation.html deleted file mode 100644 index 43ee2e10d..000000000 --- a/SoObjects/Appointments/SOGoAptMailSwedishInvitation.wo/SOGoAptMailSwedishInvitation.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Händelseinbjudan: <#summary/> -<#IsBody><#organizer/> <#HasSentBy>(sänt genom <#sentBy/>) har bjudit in dig till <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailSwedishInvitation.wo/SOGoAptMailSwedishInvitation.wod b/SoObjects/Appointments/SOGoAptMailSwedishInvitation.wo/SOGoAptMailSwedishInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailSwedishInvitation.wo/SOGoAptMailSwedishInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailSwedishUpdate.wo/SOGoAptMailSwedishUpdate.html b/SoObjects/Appointments/SOGoAptMailSwedishUpdate.wo/SOGoAptMailSwedishUpdate.html deleted file mode 100644 index b8eb43a20..000000000 --- a/SoObjects/Appointments/SOGoAptMailSwedishUpdate.wo/SOGoAptMailSwedishUpdate.html +++ /dev/null @@ -1,5 +0,0 @@ -<#IsSubject>Mötet "<#Summary />" den <#OldAptStartDate /> kl <#OldAptStartTime /> har ändrats -<#IsBody> -Mötet<#HasSentBy> (sänt genom <#sentBy/>), tidigare bokat den <#OldAptStartDate /><#IsNotOldAllDay> kl <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) är nu ändrat att hållas <#NewAptStartDate /><#IsNotNewAllDay> kl <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). -Var vänlig och svara på denna ändring. - diff --git a/SoObjects/Appointments/SOGoAptMailSwedishUpdate.wo/SOGoAptMailSwedishUpdate.wod b/SoObjects/Appointments/SOGoAptMailSwedishUpdate.wo/SOGoAptMailSwedishUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailSwedishUpdate.wo/SOGoAptMailSwedishUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailUpdate.m b/SoObjects/Appointments/SOGoAptMailUpdate.m index cbfa7be23..39f200ac8 100644 --- a/SoObjects/Appointments/SOGoAptMailUpdate.m +++ b/SoObjects/Appointments/SOGoAptMailUpdate.m @@ -1,97 +1,172 @@ /* - Copyright (C) 2000-2005 SKYRIX Software AG + Copyright (C) 2010 Inverse - This file is part of OpenGroupware.org. + This file is part of SOGo - OGo is free software; you can redistribute it and/or modify it under + SOGo 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 + SOGo 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 + License along with SOGo; 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" +#import +#import +#import + +#import +#import +#import +#import + +#import "SOGoAptMailNotification.h" + +@interface SOGoAptMailUpdate : SOGoAptMailNotification +{ + NSMutableDictionary *values; +} -@interface SOGoAptMailEnglishUpdate : SOGoAptMailNotification @end -@implementation SOGoAptMailEnglishUpdate -@end - -@interface SOGoAptMailRussianUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailRussianUpdate -@end - -@interface SOGoAptMailBrazilianPortugueseUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailBrazilianPortugueseUpdate -@end - -@interface SOGoAptMailCzechUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailCzechUpdate -@end - -@interface SOGoAptMailDutchUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailDutchUpdate -@end - -@interface SOGoAptMailFrenchUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailFrenchUpdate -@end - - -@interface SOGoAptMailGermanUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailGermanUpdate -@end - - -@interface SOGoAptMailHungarianUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailHungarianUpdate -@end - - -@interface SOGoAptMailItalianUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailItalianUpdate -@end - -@interface SOGoAptMailSpanishUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailSpanishUpdate -@end - -@interface SOGoAptMailSwedishUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailSwedishUpdate -@end - -@interface SOGoAptMailWelshUpdate : SOGoAptMailNotification -@end - -@implementation SOGoAptMailWelshUpdate +@implementation SOGoAptMailUpdate + +- (NSString *) valueForProperty: (NSString *) property +{ + static NSDictionary *valueTypes = nil; + SOGoDateFormatter *dateFormatter; + NSString *valueType; + id value; + + if (!valueTypes) + { + valueTypes = [NSDictionary dictionaryWithObjectsAndKeys: + @"date", @"startDate", + @"date", @"endDate", + @"date", @"due", + @"text", @"location", + @"text", @"summary", + @"text", @"comment", + nil]; + [valueTypes retain]; + } + + valueType = [valueTypes objectForKey: property]; + if (valueType) + { + value = [(iCalEvent *) apt propertyValue: property]; + if ([valueType isEqualToString: @"date"]) + { + dateFormatter = [[context activeUser] + dateFormatterInContext: context]; + value = [dateFormatter formattedDateAndTime: value]; + } + } + else + value = nil; + + return value; +} + +- (void) _setupBodyContent +{ + NSArray *updatedProperties; + NSMutableString *bodyContent; + NSString *property, *label, *value; + int count, max; + + updatedProperties = [[iCalEventChanges changesFromEvent: previousApt + toEvent: apt] + updatedProperties]; + bodyContent = [NSMutableString new]; + max = [updatedProperties count]; + for (count = 0; count < max; count++) + { + property = [updatedProperties objectAtIndex: count]; + value = [self valueForProperty: property]; + /* Unhandled properties will return nil */ + if (value) + { + label = [self labelForKey: [NSString stringWithFormat: @"%@_label", + property] + inContext: context]; + [bodyContent appendFormat: @" %@ %@\n", label, value]; + } + } + [values setObject: bodyContent forKey: @"_bodyContent"]; + [bodyContent release]; +} + +- (void) _setupBodyValues +{ + NSString *bodyText; + + bodyText = [self labelForKey: @"The following parameters have changed" + @" in the \"%{Summary}\" meeting:" + inContext: context]; + [values setObject: [values keysWithFormat: bodyText] + forKey: @"_bodyStart"]; + [self _setupBodyContent]; + [values setObject: [self labelForKey: @"Please accept" + @" or decline those changes." + inContext: context] + forKey: @"_bodyEnd"]; +} + +- (void) setupValues +{ + NSCalendarDate *date; + SOGoDateFormatter *dateFormatter; + + [super setupValues]; + + dateFormatter = [[context activeUser] dateFormatterInContext: context]; + + date = [self oldStartDate]; + [values setObject: [dateFormatter shortFormattedDate: date] + forKey: @"OldStartDate"]; + [values setObject: [dateFormatter formattedTime: date] + forKey: @"OldStartTime"]; + + date = [self newStartDate]; + [values setObject: [dateFormatter shortFormattedDate: date] + forKey: @"StartDate"]; + [values setObject: [dateFormatter formattedTime: date] + forKey: @"StartTime"]; + + [self _setupBodyValues]; +} + +- (NSString *) getSubject +{ + NSString *subjectFormat; + + if (!values) + [self setupValues]; + + subjectFormat = [self labelForKey: @"The appointment \"%{Summary}\" for the" + @" %{OldStartDate} at" + @" %{OldStartTime} has changed" + inContext: context]; + + return [values keysWithFormat: subjectFormat]; +} + +- (NSString *) getBody +{ + if (!values) + [self setupValues]; + + return [values keysWithFormat: + @"%{_bodyStart}\n%{_bodyContent}\n%{_bodyEnd}\n"]; +} + @end diff --git a/SoObjects/Appointments/SOGoAptMailWelshDeletion.wo/SOGoAptMailWelshDeletion.html b/SoObjects/Appointments/SOGoAptMailWelshDeletion.wo/SOGoAptMailWelshDeletion.html deleted file mode 100644 index 6805738e9..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshDeletion.wo/SOGoAptMailWelshDeletion.html +++ /dev/null @@ -1 +0,0 @@ -<#IsSubject>Digwyddiad wedi'i ganslo: <#summary/> <#IsBody><#organizer/> <#HasSentBy>(anfonwyd gan <#sentBy/>) wedi canslo'r digwyddiad hwn: <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailWelshDeletion.wo/SOGoAptMailWelshDeletion.wod b/SoObjects/Appointments/SOGoAptMailWelshDeletion.wo/SOGoAptMailWelshDeletion.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshDeletion.wo/SOGoAptMailWelshDeletion.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailWelshICalReply.wo/SOGoAptMailWelshICalReply.html b/SoObjects/Appointments/SOGoAptMailWelshICalReply.wo/SOGoAptMailWelshICalReply.html deleted file mode 100644 index c3ce52e64..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshICalReply.wo/SOGoAptMailWelshICalReply.html +++ /dev/null @@ -1,2 +0,0 @@ -<#IsSubject>Ymateb i wahoddiad: <#summary/> -<#IsBody><#attendee/><#HasSentBy> (anfon gan <#sentBy/>) wedi <#HasAccepted>wedi derbyn<#HasDeclined>wedi gwrthod<#HasNotAcceptedNotDeclined>heb benderfynu ar eich gwahoddiad eto. diff --git a/SoObjects/Appointments/SOGoAptMailWelshICalReply.wo/SOGoAptMailWelshICalReply.wod b/SoObjects/Appointments/SOGoAptMailWelshICalReply.wo/SOGoAptMailWelshICalReply.wod deleted file mode 100644 index 5c54f3352..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshICalReply.wo/SOGoAptMailWelshICalReply.wod +++ /dev/null @@ -1,39 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -attendee: WOString { - value = attendeeName; - escapeHTML = NO; -} - -HasAccepted: WOConditional { - condition = hasAccepted; -} - -HasDeclined: WOConditional { - condition = hasDeclined; -} - -HasNotAcceptedNotDeclined: WOConditional { - condition = hasNotAcceptedNotDeclined; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailWelshInvitation.wo/SOGoAptMailWelshInvitation.html b/SoObjects/Appointments/SOGoAptMailWelshInvitation.wo/SOGoAptMailWelshInvitation.html deleted file mode 100644 index 01630c9dd..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshInvitation.wo/SOGoAptMailWelshInvitation.html +++ /dev/null @@ -1 +0,0 @@ -<#IsSubject>Gwahoddiad i ddigwyddiad: <#summary/><#IsBody><#organizer/> <#HasSentBy>(anfonwyd gan <#sentBy/>) wedi eich gwahodd i <#summary/>. diff --git a/SoObjects/Appointments/SOGoAptMailWelshInvitation.wo/SOGoAptMailWelshInvitation.wod b/SoObjects/Appointments/SOGoAptMailWelshInvitation.wo/SOGoAptMailWelshInvitation.wod deleted file mode 100644 index 92428f429..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshInvitation.wo/SOGoAptMailWelshInvitation.wod +++ /dev/null @@ -1,27 +0,0 @@ -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailWelshUpdate.wo/SOGoAptMailWelshUpdate.html b/SoObjects/Appointments/SOGoAptMailWelshUpdate.wo/SOGoAptMailWelshUpdate.html deleted file mode 100644 index d313886bb..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshUpdate.wo/SOGoAptMailWelshUpdate.html +++ /dev/null @@ -1 +0,0 @@ -<#IsSubject>Mae'r apwyntiad "<#Summary />" ar <#OldAptStartDate /> am <#OldAptStartTime /> wedi newid <#IsBody> Mae'r apwyntiad yma<#HasSentBy> (anfonwyd gan <#sentBy/>), yn flaenorol ar <#OldAptStartDate /> am <#OldAptStartTime /><#HasOldLocation> (<#OldAptLocation />) yn awr wedi'i drefnu ar <#NewAptStartDate /> am <#NewAptStartTime /><#HasNewLocation> (<#NewAptLocation />). Gwnewch benderfyniad ar y newidiadau yma os gwelwch yn dda. \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoAptMailWelshUpdate.wo/SOGoAptMailWelshUpdate.wod b/SoObjects/Appointments/SOGoAptMailWelshUpdate.wo/SOGoAptMailWelshUpdate.wod deleted file mode 100644 index df9b65c38..000000000 --- a/SoObjects/Appointments/SOGoAptMailWelshUpdate.wo/SOGoAptMailWelshUpdate.wod +++ /dev/null @@ -1,79 +0,0 @@ -OldAptStartDate: WOString { - value = oldStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -OldAptStartTime: WOString { - value = oldStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotOldAllDay: WOConditional { - condition = previousApt.isAllDay; - negate = YES; -} - -NewAptStartDate: WOString { - value = newStartDate; - dateformat = "%d/%m/%y"; - escapeHTML = NO; -} - -NewAptStartTime: WOString { - value = newStartDate; - dateformat = "%H:%M"; - escapeHTML = NO; -} - -IsNotNewAllDay: WOConditional { - condition = apt.isAllDay; - negate = YES; -} - -Organizer: WOString { - value = organizerName; - escapeHTML = NO; -} - -OldAptLocation: WOString { - value = previousApt.location; - escapeHTML = NO; -} - -NewAptLocation: WOString { - value = apt.location; - escapeHTML = NO; -} - -IsSubject: WOConditional { - condition = isSubject; -} - -IsBody: WOConditional { - condition = isSubject; - negate = YES; -} - -Summary: WOString { - value = summary; - escapeHTML = NO; -} - -HasNewLocation: WOConditional { - condition = hasNewLocation; -} - -HasOldLocation: WOConditional { - condition = hasOldLocation; -} - -HasSentBy: WOConditional { - condition = hasSentBy; -} - -sentBy: WOString { - value = sentBy; - escapeHTML = NO; -} \ No newline at end of file diff --git a/SoObjects/Appointments/SOGoCalendarComponent.m b/SoObjects/Appointments/SOGoCalendarComponent.m index 226599320..2aebb0be3 100644 --- a/SoObjects/Appointments/SOGoCalendarComponent.m +++ b/SoObjects/Appointments/SOGoCalendarComponent.m @@ -31,6 +31,7 @@ #import #import #import +#import #import #import #import @@ -44,6 +45,8 @@ #import #import #import +#import +#import #import #import #import @@ -174,7 +177,7 @@ - (void) _filterComponent: (iCalEntityObject *) component { - NSString *type; + NSString *type, *summary; int classification; type = @"vtodo"; @@ -187,8 +190,11 @@ classification = 1; else if ([component symbolicAccessClass] == iCalAccessConfidential) classification = 2; - - [component setSummary: [self labelForKey: [NSString stringWithFormat: @"%@_class%d", type, classification]]]; + + summary = [self labelForKey: [NSString stringWithFormat: @"%@_class%d", + type, classification] + inContext: context]; + [component setSummary: summary]; [component setComment: @""]; [component setUserComment: @""]; [component setLocation: @""]; @@ -653,7 +659,7 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr WOApplication *app; unsigned i, count; iCalPerson *attendee; - NSString *recipient, *language; + NSString *recipient; SOGoAptMailNotification *p; NSString *mailDate, *subject, *text, *header; NGMutableHashMap *headerMap; @@ -667,7 +673,6 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr dd = [ownerUser domainDefaults]; if ([dd appointmentSendEMailNotifications] && [object isStillRelevant]) { - language = [[ownerUser userDefaults] language]; count = [attendees count]; if (count) { @@ -707,12 +712,12 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr #warning this could be optimized in a class hierarchy common with the \ SOGoObject acl notification mechanism /* create page name */ - pageName = [NSString stringWithFormat: @"SOGoAptMail%@%@", - language, newPageName]; + pageName = [NSString stringWithFormat: @"SOGoAptMail%@", + newPageName]; /* construct message content */ p = [app pageWithName: pageName inContext: context]; - [p setApt: object]; - [p setPreviousApt: previousObject]; + [p setApt: (iCalEvent *) object]; + [p setPreviousApt: (iCalEvent *) previousObject]; if ([[object organizer] cn] && [[[object organizer] cn] length]) { @@ -723,7 +728,7 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr [p setOrganizerName: [ownerUser cn]]; } - subject = [p getSubject]; + subject = [[p getSubject] asQPSubjectString: @"utf-8"]; text = [p getBody]; /* construct message */ @@ -792,7 +797,7 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr from: (SOGoUser *) from to: (iCalPerson *) recipient { - NSString *pageName, *language, *mailDate, *email; + NSString *pageName, *mailDate, *email; WOApplication *app; iCalPerson *attendee; NSString *iCalString; @@ -810,13 +815,11 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr /* get WOApplication instance */ app = [WOApplication application]; - language = [[from userDefaults] language]; /* create page name */ - pageName = [NSString stringWithFormat: @"SOGoAptMail%@ICalReply", - language]; + pageName = @"SOGoAptMailICalReply"; /* construct message content */ p = [app pageWithName: pageName inContext: context]; - [p setApt: event]; + [p setApt: (iCalEvent *) event]; attendee = [event findParticipant: from]; [p setAttendee: attendee]; @@ -834,7 +837,8 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr [headerMap setObject: [recipient mailAddress] forKey: @"to"]; mailDate = [[NSCalendarDate date] rfc822DateString]; [headerMap setObject: mailDate forKey: @"date"]; - [headerMap setObject: [p getSubject] forKey: @"subject"]; + [headerMap setObject: [[p getSubject] asQPSubjectString: @"utf-8"] + forKey: @"subject"]; [headerMap setObject: @"1.0" forKey: @"MIME-Version"]; [headerMap setObject: @"multipart/mixed" forKey: @"content-type"]; msg = [NGMimeMessage messageWithHeader: headerMap]; @@ -915,7 +919,7 @@ static inline BOOL _occurenceHasID (iCalRepeatableEntityObject *occurence, NSStr template]; page = [[WOApplication application] pageWithName: pageName inContext: context]; - [page setApt: object]; + [page setApt: (iCalEvent *) object]; [page setRecipients: attendees]; identity = [currentUser primaryIdentity]; diff --git a/SoObjects/Appointments/Spanish.lproj/Localizable.strings b/SoObjects/Appointments/Spanish.lproj/Localizable.strings index 75e0fb200..a68e4044f 100644 --- a/SoObjects/Appointments/Spanish.lproj/Localizable.strings +++ b/SoObjects/Appointments/Spanish.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Tarea confidencial)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Respuesta a la invitación al evento: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}ha aceptado su invitación al evento."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}ha rechazado su invitación al evento."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}has not yet decided upon your event invitation."; diff --git a/SoObjects/Appointments/Swedish.lproj/Localizable.strings b/SoObjects/Appointments/Swedish.lproj/Localizable.strings index 12583d457..c419cd11c 100644 --- a/SoObjects/Appointments/Swedish.lproj/Localizable.strings +++ b/SoObjects/Appointments/Swedish.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Konfidentiell uppgift)"; "Receipt: attendees removed from an event" = "Kvitto: deltagare bottagna från en händelse"; "You have removed the following attendees(s):" = "Du har tagit bort följande deltagare:"; "... from the following event:" = "... från följande händelse:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Reply to invitation: \"%{Summary}\""; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}has accepted your event invitation."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}has declined your event invitation."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}has not yet decided upon your event invitation."; diff --git a/SoObjects/Appointments/Welsh.lproj/Localizable.strings b/SoObjects/Appointments/Welsh.lproj/Localizable.strings index c86b31897..51a5ac2b1 100644 --- a/SoObjects/Appointments/Welsh.lproj/Localizable.strings +++ b/SoObjects/Appointments/Welsh.lproj/Localizable.strings @@ -23,3 +23,40 @@ vtodo_class2 = "(Tasg gyfrinachol)"; "Receipt: attendees removed from an event" = "Receipt: attendees removed from an event"; "You have removed the following attendees(s):" = "You have removed the following attendees(s):"; "... from the following event:" = "... from the following event:"; + +/* IMIP messages */ +"startDate_label" = "Start:"; +"endDate_label" = "End:"; +"due_label" = "Due Date:"; +"location_label" = "Location:"; +"summary_label" = "Summary:"; +"comment_label" = "Comment:"; + +/* 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}."; + +/* Deletion */ +"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\""; +"%{Organizer} %{SentByText}has cancelled this event: %{Summary}." += "%{Organizer} %{SentByText}has cancelled this event: %{Summary}."; + +/* Update */ +"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed" += "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"; +"The following parameters have changed in the \"%{Summary}\" meeting:" += "The following parameters have changed in the \"%{Summary}\" meeting:"; +"Please accept or decline those changes." += "Please accept or decline those changes."; + +/* Reply */ +"Reply to invitation: \"%{Summary}\"" = "Ymateb i wahoddiad: %{Summary}"; +"%{Attendee} %{SentByText}has accepted your event invitation." += "%{Attendee} %{SentByText}wedi derbyn."; +"%{Attendee} %{SentByText}has declined your event invitation." += "%{Attendee} %{SentByText}wedi gwrthod."; +"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}." += "%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."; +"%{Attendee} %{SentByText}has not yet decided upon your event invitation." += "%{Attendee} %{SentByText}heb benderfynu ar eich gwahoddiad eto."; diff --git a/SoObjects/SOGo/NSObject+Utilities.h b/SoObjects/SOGo/NSObject+Utilities.h index 7708e99fe..469eab8b9 100644 --- a/SoObjects/SOGo/NSObject+Utilities.h +++ b/SoObjects/SOGo/NSObject+Utilities.h @@ -28,6 +28,7 @@ #import @class NSString; +@class WOContext; @interface NSObject (SOGoObjectUtilities) @@ -36,6 +37,9 @@ - (NSArray *) domNode: (id ) node getChildNodesByType: (DOMNodeType) type; +- (NSString *) labelForKey: (NSString *) key + inContext: (WOContext *) context; + @end #endif /* NSOBJECT+UTILITIES_H */ diff --git a/SoObjects/SOGo/NSObject+Utilities.m b/SoObjects/SOGo/NSObject+Utilities.m index 5a64b49f6..b6d9c00d3 100644 --- a/SoObjects/SOGo/NSObject+Utilities.m +++ b/SoObjects/SOGo/NSObject+Utilities.m @@ -21,8 +21,16 @@ */ #import +#import #import +#import +#import + +#import "NSDictionary+Utilities.h" +#import "SOGoUser.h" +#import "SOGoUserDefaults.h" + #import "NSObject+Utilities.h" @implementation NSObject (SOGoObjectUtilities) @@ -53,4 +61,64 @@ return nodes; } +- (NSArray *) _languagesForLabelsInContext: (WOContext *) context +{ + NSMutableArray *languages; + NSArray *browserLanguages; + NSString *language; + SOGoUser *user; + +#warning the purpose of this method needs to be reviewed + languages = [NSMutableArray array]; + + user = [context activeUser]; + if ([user isKindOfClass: [SOGoUser class]]) + { + language = [[user userDefaults] language]; + [languages addObject: language]; + } + else + { + browserLanguages = [[context request] browserLanguages]; + [languages addObjectsFromArray: browserLanguages]; + } + + return languages; +} + +- (NSString *) labelForKey: (NSString *) key + inContext: (WOContext *) context +{ + NSString *language, *label; + NSArray *paths; + NSEnumerator *languages; + NSBundle *bundle; + NSDictionary *strings; + + label = nil; + + bundle = [NSBundle bundleForClass: [self class]]; + if (!bundle) + bundle = [NSBundle mainBundle]; + languages = [[self _languagesForLabelsInContext: context] objectEnumerator]; + + while (!label && (language = [languages nextObject])) + { + paths = [bundle pathsForResourcesOfType: @"strings" + inDirectory: [NSString stringWithFormat: @"%@.lproj", + language] + forLocalization: language]; + if ([paths count] > 0) + { + strings = [NSDictionary + dictionaryFromStringsFile: [paths objectAtIndex: 0]]; + label = [strings objectForKey: key]; + } + } + if (!label) + label = key; + + return label; +} + @end diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index 5e7fd70bd..57907f5c8 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -58,6 +58,7 @@ #import "NSArray+Utilities.h" #import "NSArray+DAV.h" #import "NSObject+DAV.h" +#import "NSObject+Utilities.h" #import "NSString+Utilities.h" #import "NSString+DAV.h" @@ -271,7 +272,8 @@ static NSArray *childRecordFields = nil; { displayName = [NSMutableString new]; if ([primaryDN isEqualToString: [container defaultFolderName]]) - [displayName appendString: [self labelForKey: primaryDN]]; + [displayName appendString: [self labelForKey: primaryDN + inContext: context]]; else [displayName appendString: primaryDN]; diff --git a/SoObjects/SOGo/SOGoObject.h b/SoObjects/SOGo/SOGoObject.h index b27a30632..a51c67f9a 100644 --- a/SoObjects/SOGo/SOGoObject.h +++ b/SoObjects/SOGo/SOGoObject.h @@ -90,8 +90,6 @@ - (NSURL *) soURLToBaseContainerForCurrentUser; - (NSString *) davURLAsString; -- (NSString *) labelForKey: (NSString *) key; - /* ownership */ - (void) setOwner: (NSString *) newOwner; diff --git a/SoObjects/SOGo/SOGoObject.m b/SoObjects/SOGo/SOGoObject.m index 4537897df..90ae694f1 100644 --- a/SoObjects/SOGo/SOGoObject.m +++ b/SoObjects/SOGo/SOGoObject.m @@ -1013,65 +1013,6 @@ return nil; } -- (NSArray *) _languagesForLabels -{ - NSMutableArray *languages; - NSArray *browserLanguages; - NSString *language; - SOGoUser *user; - -#warning the purpose of this method needs to be reviewed - languages = [NSMutableArray array]; - - user = [context activeUser]; - if ([user isKindOfClass: [SOGoUser class]]) - { - language = [[user userDefaults] language]; - [languages addObject: language]; - } - else - { - browserLanguages = [[context request] browserLanguages]; - [languages addObjectsFromArray: browserLanguages]; - } - - return languages; -} - -- (NSString *) labelForKey: (NSString *) key -{ - NSString *language, *label; - NSArray *paths; - NSEnumerator *languages; - NSBundle *bundle; - NSDictionary *strings; - - label = nil; - - bundle = [NSBundle bundleForClass: [self class]]; - if (!bundle) - bundle = [NSBundle mainBundle]; - languages = [[self _languagesForLabels] objectEnumerator]; - - while (!label && (language = [languages nextObject])) - { - paths = [bundle pathsForResourcesOfType: @"strings" - inDirectory: [NSString stringWithFormat: @"%@.lproj", - language] - forLocalization: language]; - if ([paths count] > 0) - { - strings = [NSDictionary - dictionaryFromStringsFile: [paths objectAtIndex: 0]]; - label = [strings objectForKey: key]; - } - } - if (!label) - label = key; - - return label; -} - /* description */ - (void) appendAttributesToDescription: (NSMutableString *) _ms diff --git a/UI/Templates/Appointments/SOGoAptMailDeletion.wox b/UI/Templates/Appointments/SOGoAptMailDeletion.wox new file mode 100644 index 000000000..030a9112c --- /dev/null +++ b/UI/Templates/Appointments/SOGoAptMailDeletion.wox @@ -0,0 +1,3 @@ + + + diff --git a/UI/Templates/Appointments/SOGoAptMailEnglishICalReply.wox b/UI/Templates/Appointments/SOGoAptMailEnglishICalReply.wox deleted file mode 100644 index b6f39b69e..000000000 --- a/UI/Templates/Appointments/SOGoAptMailEnglishICalReply.wox +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - [Event Invitation Reply] - - - - (sent by ) has delegated the invitation to .accepteddeclinednot yet decided upon your event invitation. - - \ No newline at end of file diff --git a/UI/Templates/Appointments/SOGoAptMailICalReply.wox b/UI/Templates/Appointments/SOGoAptMailICalReply.wox new file mode 100644 index 000000000..030a9112c --- /dev/null +++ b/UI/Templates/Appointments/SOGoAptMailICalReply.wox @@ -0,0 +1,3 @@ + + + diff --git a/UI/Templates/Appointments/SOGoAptMailInvitation.wox b/UI/Templates/Appointments/SOGoAptMailInvitation.wox new file mode 100644 index 000000000..030a9112c --- /dev/null +++ b/UI/Templates/Appointments/SOGoAptMailInvitation.wox @@ -0,0 +1,3 @@ + + + diff --git a/UI/Templates/Appointments/SOGoAptMailUpdate.wox b/UI/Templates/Appointments/SOGoAptMailUpdate.wox new file mode 100644 index 000000000..030a9112c --- /dev/null +++ b/UI/Templates/Appointments/SOGoAptMailUpdate.wox @@ -0,0 +1,3 @@ + + +