From a4c610c3ceb195bfecc4e7179f89de1209c4a5d4 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 22 Aug 2007 20:47:28 +0000 Subject: [PATCH 001/247] Monotone-Parent: 5e8e3a60febf923bbe9f832e38c96576ad9426fb Monotone-Revision: a713d0509030e441b5a09ab7710505e61689f5c3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-22T20:47:28 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6a5addd2a..0bcd7abee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,8 @@ 2007-08-22 Wolfgang Sourdeau - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -messageForwardingList]) - ([UIxPreferences -itemMessageForwardingText]) + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences + -messageForwardingList]) + ([UIxPreferences -itemMessageForwardingText])D ([UIxPreferences -userMessageForwarding]) ([UIxPreferences -setUserMessageForwarding:newMessageForwarding]): new template methods for manage the user preference regarding From 472702e8b7691bb77ed11d6a7538768070667918 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 16:12:01 +0000 Subject: [PATCH 002/247] Monotone-Parent: 43e7e47465a89cfa3fa751612c2e6e4afa685684 Monotone-Revision: 7746da4f8174076cb29adb4420696a2435d1c654 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T16:12:01 Monotone-Branch: ca.inverse.sogo --- UI/Templates/MailerUI/UIxMailEditor.wox | 2 +- UI/Templates/MailerUI/UIxMailToSelection.wox | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/UI/Templates/MailerUI/UIxMailEditor.wox b/UI/Templates/MailerUI/UIxMailEditor.wox index 2106c7ba9..10ef59a97 100644 --- a/UI/Templates/MailerUI/UIxMailEditor.wox +++ b/UI/Templates/MailerUI/UIxMailEditor.wox @@ -21,7 +21,7 @@ -
+
diff --git a/UI/Templates/MailerUI/UIxMailToSelection.wox b/UI/Templates/MailerUI/UIxMailToSelection.wox index 40d503e22..ebde46970 100644 --- a/UI/Templates/MailerUI/UIxMailToSelection.wox +++ b/UI/Templates/MailerUI/UIxMailToSelection.wox @@ -18,7 +18,7 @@ @@ -41,7 +41,7 @@ const:disabled="1" list="headers" item="item" - label:string="$item" + label:displayString="$item" /> From c7ff1e0ea2f0e355a8994e95ec8ece7b7aa9153c Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 16:12:16 +0000 Subject: [PATCH 003/247] Monotone-Parent: 7746da4f8174076cb29adb4420696a2435d1c654 Monotone-Revision: cdfb1cbc8fa7b1a396e50237bf8ca26cd9be6e06 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T16:12:16 Monotone-Branch: ca.inverse.sogo --- UI/SOGoUI/UIxComponent.m | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/UI/SOGoUI/UIxComponent.m b/UI/SOGoUI/UIxComponent.m index e0b7f2cab..0e8e45cdb 100644 --- a/UI/SOGoUI/UIxComponent.m +++ b/UI/SOGoUI/UIxComponent.m @@ -199,7 +199,7 @@ static BOOL uixDebugEnabled = NO; queryParameters = [[NSMutableDictionary alloc] initWithCapacity:8]; - req = [[self context] request]; + req = [context request]; uri = [req uri]; r = [uri rangeOfString:@"?" options:NSBackwardsSearch]; if (r.length > 0) @@ -246,7 +246,7 @@ static BOOL uixDebugEnabled = NO; qp = [self queryParameters]; if ([qp count] > 0) { - ctx = [self context]; + ctx = context; qps = [ctx queryPathSeparator]; [ctx setQueryPathSeparator: @"&"]; qs = [ctx queryStringFromDictionary: qp]; @@ -264,7 +264,7 @@ static BOOL uixDebugEnabled = NO; NSString *uri; NSRange r; - uri = [[[self context] request] uri]; + uri = [[context request] uri]; /* first: cut off query parameters */ @@ -293,7 +293,7 @@ static BOOL uixDebugEnabled = NO; SOGoObject *currentObject; BOOL found; - ctx = [self context]; + ctx = context; objects = [[ctx objectTraversalStack] objectEnumerator]; currentObject = [objects nextObject]; found = NO; @@ -331,7 +331,7 @@ static BOOL uixDebugEnabled = NO; currentClient = parent; } - ctx = [self context]; + ctx = context; return [[currentClient baseURLInContext:ctx] hostlessURL]; } @@ -351,7 +351,7 @@ static BOOL uixDebugEnabled = NO; NSString *uri; NSRange r; - uri = [[[self context] request] uri]; + uri = [[context request] uri]; /* first: cut off query parameters */ @@ -422,7 +422,7 @@ static BOOL uixDebugEnabled = NO; { WOContext *ctx; - ctx = [self context]; + ctx = context; return [[[self clientObject] authenticatorInContext: ctx] userInContext: ctx]; } @@ -463,7 +463,7 @@ static BOOL uixDebugEnabled = NO; /* lookup languages */ - languages = [[self context] resourceLookupLanguages]; + languages = [context resourceLookupLanguages]; /* find resource manager */ @@ -530,7 +530,7 @@ static BOOL uixDebugEnabled = NO; // TODO: move to WORequest? NSString *m; - m = [[[self context] request] method]; + m = [[context request] method]; if ([m isEqualToString:@"GET"]) return YES; if ([m isEqualToString:@"HEAD"]) return YES; return NO; @@ -547,7 +547,7 @@ static BOOL uixDebugEnabled = NO; { WOResourceManager *rm; - if ((rm = [[[self context] page] resourceManager]) == nil) + if ((rm = [[context page] resourceManager]) == nil) rm = [[WOApplication application] resourceManager]; return rm; @@ -570,12 +570,12 @@ static BOOL uixDebugEnabled = NO; if (!url) { rm = [self pageResourceManager]; - page = [[self context] page]; + page = [context page]; pageBundle = [NSBundle bundleForClass: [page class]]; url = [rm urlForResourceNamed: filename inFramework: [pageBundle bundlePath] languages: nil - request: [[self context] request]]; + request: [context request]]; if (!url) url = @""; else From c124fecb3e0427bb4f6262c0c10344b7da0836e2 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 16:12:32 +0000 Subject: [PATCH 004/247] Monotone-Parent: cdfb1cbc8fa7b1a396e50237bf8ca26cd9be6e06 Monotone-Revision: 100769dcb2b9d6ff69316a1bfc656ef29e7e49c0 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T16:12:32 Monotone-Branch: ca.inverse.sogo --- UI/Common/German.lproj/Localizable.strings | 16 ++++---- UI/Contacts/German.lproj/Localizable.strings | 25 ++++++------ UI/MailerUI/German.lproj/Localizable.strings | 38 +++++++++---------- .../German.lproj/Localizable.strings | 2 +- UI/Scheduler/German.lproj/Localizable.strings | 28 +++++++------- 5 files changed, 55 insertions(+), 54 deletions(-) diff --git a/UI/Common/German.lproj/Localizable.strings b/UI/Common/German.lproj/Localizable.strings index 0693ab367..d1b779ba6 100644 --- a/UI/Common/German.lproj/Localizable.strings +++ b/UI/Common/German.lproj/Localizable.strings @@ -19,17 +19,19 @@ "noJavascriptError" = "SOGo requiert l'utilisation de Javascript. Veuillez vous assurer que cette option est disponible et activée dans votre fureteur."; "noJavascriptRetry" = "Réessayer"; -"Owner:" = "Propriétaire :"; +"Add..." = "Hinzufügen..."; +"Remove" = "Löschen"; +"Owner:" = "Besitzer:"; "Associated Users:" = "Utilisateurs associés :"; "(Unchecked = assistant, checked = delegate)" = "(Coché = assistant, décoché = délégué)"; "Publish the Free/Busy information" = "Publier l'occupation du temps"; -"Default Roles" = "Rôles par défaut"; +"Default Roles" = "Standard-Rollen"; -"Sorry, the user rights can not be configured for that object." = "Sorry, the user rights can not be configured for that object."; +"Sorry, the user rights can not be configured for that object." = "Leider können die Benutzerrechte für dieses Objekt nicht konfiguriert werden."; /* generic.js */ -"Unable to subscribe to that folder!" = "Impossible de s'abonner à ce dossier."; -"You cannot subscribe to a folder that you own!" = "Impossible de vous abonner à un dossier qui vous appartient."; -"Unable to unsubscribe from that folder!" = "Impossible de se désabonner de ce dossier."; -"You cannot unsubscribe from a folder that you own!" = "Impossible de vous désabonner d'un dossier qui vous appartient."; +"Unable to subscribe to that folder!" = "Unmöglich sich an diesem Ordner zu abonnieren."; +"You cannot subscribe to a folder that you own!" = "Unmöglich sich an einem Ordner zu abonnieren, der Ihnen selbst gehört."; +"Unable to unsubscribe from that folder!" = "Unmöglich sich von diesem Ordner zu des-abonnieren."; +"You cannot unsubscribe from a folder that you own!" = "Unmöglich sich von einem Ordner zu des-abonnieren, der Ihnen selbst gehört."; diff --git a/UI/Contacts/German.lproj/Localizable.strings b/UI/Contacts/German.lproj/Localizable.strings index 11a6ce8b1..9f4500abb 100644 --- a/UI/Contacts/German.lproj/Localizable.strings +++ b/UI/Contacts/German.lproj/Localizable.strings @@ -12,7 +12,7 @@ "Address Books" = "Adressbücher"; "Addresses" = "Adresses"; -"Update" = "Mettre à jour"; +"Update" = "Speichern"; "Cancel" = "Abbrechen"; "Common" = "Name"; "Contact editor" = "Éditer le contact"; @@ -50,12 +50,12 @@ "New Card" = "Neue Karte"; "New List" = "Neue Liste"; "Modify" = "Eigenschaften"; -"Sharing..." = "Partage..."; +"Sharing..." = "Benutzerrechte..."; "Write" = "Verfassen"; "Delete" = "Löschen"; "Instant Message" = "Messenger"; -"Add..." = "Ajouter..."; -"Remove" = "Enlever"; +"Add..." = "Hinzufügen..."; +"Remove" = "Löschen"; "Preferred" = "Préféré"; "Card for %@" = "%@"; @@ -102,7 +102,7 @@ "Blind Carbon Copy" = "C. carbone cachée"; "New Addressbook..." = "Neues Adressbuch..."; -"Subscribe to an Addressbook..." = "S'inscrire à un carnet d'adresses..."; +"Subscribe to an Addressbook..." = "Abonnieren..."; "Remove the selected Addressbook" = "Adressbuch löschen"; "Name of the Address Book" = "Adressbuch-Name"; @@ -114,17 +114,16 @@ "Unable to subscribe to that folder!" = "Impossible de vous inscrire à ce dossier!"; -"Default Roles" = "Rôles par défaut"; -"User rights for:" = "Autorisations pour :"; +"Default Roles" = "Standard-Rollen"; +"User rights for:" = "Benutzerrechte für:"; "This person can add cards to this addressbook." -= "Cette personne peut ajouter des fiches à ce carnet d'adresses."; += "Diese Person kann neue Karten zu diesem Adressbuch hinzufügen."; "This person can edit the cards of this addressbook." -= "Cette personne peut éditer des fiches de ce carnet d'adresses."; += "Diese Person kann in diesem Adressbuch bestehende Karten verändern."; "This person can list the content of this addressbook." -= "Cette personne peut lister le contenu de ce carnet d'adresses."; += "Diese Person kann die Liste der Karten dieses Adressbuches anzeigen."; "This person can read the cards of this addressbook." -= "Cette personne peut visionner les fiches de ce carnet d'adresses."; += "Diese Person kann Karten dieses Adressbuches anzeigen."; "This person can erase cards from this addressbook." -= "Cette personne peut effacer des fiches de ce carnet d'adresses."; - += "Diese Person kann Karten aus diesem Adressbuch löschen"; diff --git a/UI/MailerUI/German.lproj/Localizable.strings b/UI/MailerUI/German.lproj/Localizable.strings index 1bd77f2f3..9f5b86c3a 100644 --- a/UI/MailerUI/German.lproj/Localizable.strings +++ b/UI/MailerUI/German.lproj/Localizable.strings @@ -14,10 +14,10 @@ "Stop" = "Stopp"; "Write" = "Verfassen"; -"Send" = "Senden" -"Contacts" = "Kontakte" +"Send" = "Senden"; +"Contacts" = "Kontakte"; "Attach" = "Anhang"; -"Save" = "Speichern" +"Save" = "Speichern"; /* Main Frame */ @@ -35,27 +35,27 @@ "Read messages" = "Lire les messages"; "Write a new message" = "Eine neue Nachricht schreiben"; -"Share: " = "Partage : "; +"Share: " = "Benutzerrechte: "; "Account: " = "Konto: "; "Shared Account: " = "Compte Partagé "; /* acls */ -"Default Roles" = "Rôles par défaut"; -"User rights for:" = "Autorisations pour:"; +"Default Roles" = "Standard-Rollen"; +"User rights for:" = "Benutzerrechte für:"; -"List and see this folder" = "Lister et voir ce dossier"; -"Read mails from this folder" = "Lire les messages de ce dossier"; -"Mark mails read and unread" = "Marquer les messages comme lus ou non-lus"; -"Modify the flags of the mails in this folder" = "Modifier les indicateurs sur les messages"; -"Insert, copy and move mails into this folder" = "Insérer, copier et déplacer des messages dans ce dossier"; -"Post mails" = "Poster des messages"; -"Add subfolders to this folder" = "Ajouter des sous-dossiers à ce dossier"; -"Remove this folder" = "Effacer ce dossier"; -"Erase mails from this folder" = "Effacer des messages de ce dossier"; -"Expunge this folder" = "Compacter ce dossier"; -"Modify the acl of this folder" = "Administrer les droits sur ce dossier"; +"List and see this folder" = "Diesen Ordner sehen"; +"Read mails from this folder" = "E-Mails in diesem Ordner lesen"; +"Mark mails read and unread" = "E-Mails in diesem Ordner als (un)gelesen markieren"; +"Modify the flags of the mails in this folder" = "Schlagwörter in diesem Ordner verändern"; +"Insert, copy and move mails into this folder" = "E-Mails in diesem Ordner hinzufügen, kopieren und verschieben"; +"Post mails" = "E-Mails versenden"; +"Add subfolders to this folder" = "Neue Unterordner anlegen"; +"Remove this folder" = "Diesen Ordner löschen"; +"Erase mails from this folder" = "E-Mails in diesem Ordner löschen"; +"Expunge this folder" = "Diesen Ordner komprimieren"; +"Modify the acl of this folder" = "Benutzerrechte dieses Ordners verändern"; -"Update" = "Mettre à jour"; +"Update" = "Speichern"; "Cancel" = "Abbrechen"; /* Mail edition */ @@ -136,7 +136,7 @@ "New Folder..." = "Neuer Ordner..."; "Compact This Folder" = "Komprimieren"; "Search Messages..." = "Suchen..."; -"Sharing..." = "Partage..."; +"Sharing..." = "Benutzerrechte..."; "New Subfolder..." = "Neuer Unterordner..."; "Rename Folder..." = "Umbenennen..."; "Delete Folder" = "Löschen"; diff --git a/UI/PreferencesUI/German.lproj/Localizable.strings b/UI/PreferencesUI/German.lproj/Localizable.strings index dbc7941c3..1b0ff7ead 100644 --- a/UI/PreferencesUI/German.lproj/Localizable.strings +++ b/UI/PreferencesUI/German.lproj/Localizable.strings @@ -45,7 +45,7 @@ "First week of year :" = "Erste Woche des Jahres:"; "Enable reminders for Calendar items" = "Terminerinnerung aktivieren"; "Play a sound when a reminder comes due" = "Akustisches Signal zur Terminerinnerung"; -"Default reminder :" = "Voreingestellte Terminerinnerung:"; +"Default reminder :" = "Standard Terminerinnerung:"; "firstWeekOfYear_HideWeekNumbers" = "Keine Wochennummern anzeigen"; "firstWeekOfYear_January1" = "Beginnt am 1.Januar"; diff --git a/UI/Scheduler/German.lproj/Localizable.strings b/UI/Scheduler/German.lproj/Localizable.strings index 8fab1c290..9a52d23d9 100644 --- a/UI/Scheduler/German.lproj/Localizable.strings +++ b/UI/Scheduler/German.lproj/Localizable.strings @@ -71,7 +71,7 @@ "New Calendar..." = "Neuer Kalender..."; "Delete Calendar" = "Kalender löschen"; -"Sharing..." = "Partage..."; +"Sharing..." = "Benutzerrechte..."; "Export Calendar..." = "Kalender exportieren..."; "Publish Calendar..." = "Kalender publizieren..."; "Reload Remote Calendars" = "Externe Kalender neu laden"; @@ -83,27 +83,27 @@ "Forbidden" = "Accès non autorisée"; /* acls */ -"Default Roles" = "Rôles par défaut"; -"User rights for:" = "Autorisations pour :"; +"Default Roles" = "Standard-Rollen"; +"User rights for:" = "Benutzerrechte für:"; "label_Public" = "Öffentlich"; "label_Private" = "Privat"; "label_Confidential" = "Vertraulich"; -"View All" = "Voir tout"; -"View the Date & Time" = "Voir la date & l'heure"; -"Modify" = "Modifier"; -"Respond To" = "Répondre"; -"None" = "Aucun"; +"View All" = "Alles sehen"; +"View the Date & Time" = "Datum & Uhrzeit sehen"; +"Modify" = "Ändern"; +"Respond To" = "Antworten"; +"None" = "Keine"; "This person can create objects in my calendar." -= "Cette personne peut ajouter des objets à mon agenda."; += "Diese Person kann Termine in meinem Kalender hinzufügen."; "This person can erase objects from my calendar." -= "Cette personne peut effacer des objets de mon agenda."; += "Diese Person kann Termine in meinem Kalender löschen."; /* Button Titles */ -"Add..." = "Ajouter..."; -"Remove" = "Enlever"; +"Add..." = "Hinzufügen..."; +"Remove" = "Löschen"; -"new" = "Nouveau"; +"new" = "Neu"; "printview" = "Version imprimable"; "edit" = "Bearbeiten"; "delete" = "Löschen"; @@ -112,7 +112,7 @@ "Close" = "Schließen"; "Invite Attendees" = "Teilnehmer"; "Documents" = "Dokumente"; -"Update" = "Mettre à jour"; +"Update" = "Speichern"; "Cancel" = "Abbrechen"; "show_rejected_apts" = "Afficher les rendez-vous refusés"; "hide_rejected_apts" = "Cacher les rendez-vous refusés"; From 11ceffb202256113a71c208c018157b8fcc9cd65 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 16:13:24 +0000 Subject: [PATCH 005/247] Monotone-Parent: 100769dcb2b9d6ff69316a1bfc656ef29e7e49c0 Monotone-Revision: 4bd363f979fcaebb2b95eab75100f8270ec1489c Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T16:13:24 Monotone-Branch: ca.inverse.sogo --- SoObjects/Appointments/SOGoAptMailDeletion.m | 10 +++--- .../Appointments/SOGoAptMailInvitation.m | 12 ++++--- SoObjects/Appointments/SOGoAptMailRemoval.m | 12 ++++--- SoObjects/Mailer/GNUmakefile | 7 ++-- SoObjects/Mailer/SOGoMailEnglishForward.m | 29 ----------------- SoObjects/Mailer/SOGoMailForward.h | 9 ++++++ SoObjects/Mailer/SOGoMailForward.m | 9 ++++++ SoObjects/Mailer/SOGoMailFrenchForward.m | 29 ----------------- .../SOGoMailGermanForward.html | 2 +- UI/SOGoUI/GNUmakefile | 6 +--- UI/SOGoUI/SOGoACLAdvisory.h | 18 +++++++++++ UI/SOGoUI/SOGoACLAdvisory.m | 18 +++++++++++ UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.h | 31 ------------------ UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.m | 32 ------------------- UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.h | 31 ------------------ UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.m | 32 ------------------- UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.h | 31 ------------------ UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.m | 27 ---------------- UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.h | 31 ------------------ UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.m | 27 ---------------- 20 files changed, 79 insertions(+), 324 deletions(-) delete mode 100644 SoObjects/Mailer/SOGoMailEnglishForward.m delete mode 100644 SoObjects/Mailer/SOGoMailFrenchForward.m delete mode 100644 UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.h delete mode 100644 UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.m delete mode 100644 UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.h delete mode 100644 UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.m delete mode 100644 UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.h delete mode 100644 UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.m delete mode 100644 UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.h delete mode 100644 UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.m diff --git a/SoObjects/Appointments/SOGoAptMailDeletion.m b/SoObjects/Appointments/SOGoAptMailDeletion.m index dec1e8c04..e0c13c8ee 100644 --- a/SoObjects/Appointments/SOGoAptMailDeletion.m +++ b/SoObjects/Appointments/SOGoAptMailDeletion.m @@ -22,17 +22,19 @@ #include "SOGoAptMailNotification.h" @interface SOGoAptMailEnglishDeletion : SOGoAptMailNotification -{ -} @end @implementation SOGoAptMailEnglishDeletion @end @interface SOGoAptMailFrenchDeletion : SOGoAptMailNotification -{ -} @end @implementation SOGoAptMailFrenchDeletion @end + +@interface SOGoAptMailGermanDeletion : SOGoAptMailNotification +@end + +@implementation SOGoAptMailGermanDeletion +@end diff --git a/SoObjects/Appointments/SOGoAptMailInvitation.m b/SoObjects/Appointments/SOGoAptMailInvitation.m index 64f8a8b75..84d4b3f7c 100644 --- a/SoObjects/Appointments/SOGoAptMailInvitation.m +++ b/SoObjects/Appointments/SOGoAptMailInvitation.m @@ -19,20 +19,22 @@ 02111-1307, USA. */ -#include "SOGoAptMailNotification.h" +#import "SOGoAptMailNotification.h" @interface SOGoAptMailEnglishInvitation : SOGoAptMailNotification -{ -} @end @implementation SOGoAptMailEnglishInvitation @end @interface SOGoAptMailFrenchInvitation : SOGoAptMailNotification -{ -} @end @implementation SOGoAptMailFrenchInvitation @end + +@interface SOGoAptMailGermanInvitation : SOGoAptMailNotification +@end + +@implementation SOGoAptMailGermanInvitation +@end diff --git a/SoObjects/Appointments/SOGoAptMailRemoval.m b/SoObjects/Appointments/SOGoAptMailRemoval.m index d10493f81..0053ce4be 100644 --- a/SoObjects/Appointments/SOGoAptMailRemoval.m +++ b/SoObjects/Appointments/SOGoAptMailRemoval.m @@ -19,20 +19,22 @@ 02111-1307, USA. */ -#include "SOGoAptMailNotification.h" +#import "SOGoAptMailNotification.h" @interface SOGoAptMailEnglishRemoval : SOGoAptMailNotification -{ -} @end @implementation SOGoAptMailEnglishRemoval @end @interface SOGoAptMailFrenchRemoval : SOGoAptMailNotification -{ -} @end @implementation SOGoAptMailFrenchRemoval @end + +@interface SOGoAptMailGermanRemoval : SOGoAptMailNotification +@end + +@implementation SOGoAptMailGermanRemoval +@end diff --git a/SoObjects/Mailer/GNUmakefile b/SoObjects/Mailer/GNUmakefile index 698e6b6fa..2abb34c71 100644 --- a/SoObjects/Mailer/GNUmakefile +++ b/SoObjects/Mailer/GNUmakefile @@ -30,9 +30,7 @@ Mailer_OBJC_FILES += \ SOGoDraftsFolder.m \ SOGoDraftObject.m \ \ - SOGoMailForward.m \ - SOGoMailEnglishForward.m \ - SOGoMailFrenchForward.m + SOGoMailForward.m Mailer_RESOURCE_FILES += \ Version \ @@ -40,7 +38,8 @@ Mailer_RESOURCE_FILES += \ Mailer_RESOURCE_FILES += \ SOGoMailEnglishForward.wo \ - SOGoMailFrenchForward.wo + SOGoMailFrenchForward.wo \ + SOGoMailGermanForward.wo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/wobundle.make diff --git a/SoObjects/Mailer/SOGoMailEnglishForward.m b/SoObjects/Mailer/SOGoMailEnglishForward.m deleted file mode 100644 index 73e2b50e0..000000000 --- a/SoObjects/Mailer/SOGoMailEnglishForward.m +++ /dev/null @@ -1,29 +0,0 @@ -/* SOGoMailEnglishForward.m - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#import "SOGoMailForward.h" - -@interface SOGoMailEnglishForward : SOGoMailForward -@end - -@implementation SOGoMailEnglishForward -@end diff --git a/SoObjects/Mailer/SOGoMailForward.h b/SoObjects/Mailer/SOGoMailForward.h index 6ad18c018..d5da45494 100644 --- a/SoObjects/Mailer/SOGoMailForward.h +++ b/SoObjects/Mailer/SOGoMailForward.h @@ -38,4 +38,13 @@ @end +@interface SOGoMailEnglishForward : SOGoMailForward +@end + +@interface SOGoMailFrenchForward : SOGoMailForward +@end + +@interface SOGoMailGermanForward : SOGoMailForward +@end + #endif /* SOGOMAILFORWARD_H */ diff --git a/SoObjects/Mailer/SOGoMailForward.m b/SoObjects/Mailer/SOGoMailForward.m index a09db3736..ce3545ddb 100644 --- a/SoObjects/Mailer/SOGoMailForward.m +++ b/SoObjects/Mailer/SOGoMailForward.m @@ -150,3 +150,12 @@ } @end + +@implementation SOGoMailEnglishForward +@end + +@implementation SOGoMailFrenchForward +@end + +@implementation SOGoMailGermanForward +@end diff --git a/SoObjects/Mailer/SOGoMailFrenchForward.m b/SoObjects/Mailer/SOGoMailFrenchForward.m deleted file mode 100644 index cb229b0a4..000000000 --- a/SoObjects/Mailer/SOGoMailFrenchForward.m +++ /dev/null @@ -1,29 +0,0 @@ -/* SOGoMailFrenchForward.m - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#import "SOGoMailForward.h" - -@interface SOGoMailFrenchForward : SOGoMailForward -@end - -@implementation SOGoMailFrenchForward -@end diff --git a/SoObjects/Mailer/SOGoMailGermanForward.wo/SOGoMailGermanForward.html b/SoObjects/Mailer/SOGoMailGermanForward.wo/SOGoMailGermanForward.html index eb2429712..26fa08039 100644 --- a/SoObjects/Mailer/SOGoMailGermanForward.wo/SOGoMailGermanForward.html +++ b/SoObjects/Mailer/SOGoMailGermanForward.wo/SOGoMailGermanForward.html @@ -1,4 +1,4 @@ --------- Message original -------- +-------- Original E-Mail -------- Betreff: <#subject/> Datum: <#date/> Sender: <#from/> diff --git a/UI/SOGoUI/GNUmakefile b/UI/SOGoUI/GNUmakefile index 554741b55..034e2764c 100644 --- a/UI/SOGoUI/GNUmakefile +++ b/UI/SOGoUI/GNUmakefile @@ -28,11 +28,7 @@ libSOGoUI_OBJC_FILES += \ SOGoJSStringFormatter.m \ WOContext+UIx.m \ \ - SOGoACLAdvisory.m \ - SOGoACLFrenchAdditionAdvisory.m \ - SOGoACLFrenchRemovalAdvisory.m \ - SOGoACLEnglishAdditionAdvisory.m \ - SOGoACLEnglishRemovalAdvisory.m + SOGoACLAdvisory.m # make diff --git a/UI/SOGoUI/SOGoACLAdvisory.h b/UI/SOGoUI/SOGoACLAdvisory.h index 788a49a02..c6ac9b664 100644 --- a/UI/SOGoUI/SOGoACLAdvisory.h +++ b/UI/SOGoUI/SOGoACLAdvisory.h @@ -47,4 +47,22 @@ @end +@interface SOGoACLEnglishAdditionAdvisory : SOGoACLAdvisory +@end + +@interface SOGoACLEnglishRemovalAdvisory : SOGoACLAdvisory +@end + +@interface SOGoACLFrenchAdditionAdvisory : SOGoACLAdvisory +@end + +@interface SOGoACLFrenchRemovalAdvisory : SOGoACLAdvisory +@end + +@interface SOGoACLGermanAdditionAdvisory : SOGoACLAdvisory +@end + +@interface SOGoACLGermanRemovalAdvisory : SOGoACLAdvisory +@end + #endif /* SOGOACLADVISORY_H */ diff --git a/UI/SOGoUI/SOGoACLAdvisory.m b/UI/SOGoUI/SOGoACLAdvisory.m index 31b42ad6c..12c2be31b 100644 --- a/UI/SOGoUI/SOGoACLAdvisory.m +++ b/UI/SOGoUI/SOGoACLAdvisory.m @@ -209,3 +209,21 @@ } @end + +@implementation SOGoACLEnglishAdditionAdvisory +@end + +@implementation SOGoACLEnglishRemovalAdvisory +@end + +@implementation SOGoACLFrenchAdditionAdvisory +@end + +@implementation SOGoACLFrenchRemovalAdvisory +@end + +@implementation SOGoACLGermanAdditionAdvisory +@end + +@implementation SOGoACLGermanRemovalAdvisory +@end diff --git a/UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.h b/UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.h deleted file mode 100644 index cfc2bc5c7..000000000 --- a/UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.h +++ /dev/null @@ -1,31 +0,0 @@ -/* SOGoACLEnglishAdditionAdvisory.h - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef SOGOACLFRENCHADDITIONADVISORY_H -#define SOGOACLFRENCHADDITIONADVISORY_H - -#import "SOGoACLAdvisory.h" - -@interface SOGoACLEnglishAdditionAdvisory : SOGoACLAdvisory -@end - -#endif /* SOGOACLFRENCHADDITIONADVISORY_H */ diff --git a/UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.m b/UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.m deleted file mode 100644 index 323684dc7..000000000 --- a/UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.m +++ /dev/null @@ -1,32 +0,0 @@ -/* SOGoACLEnglishAdditionAdvisory.m - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#import "SOGoACLEnglishAdditionAdvisory.h" - -@implementation SOGoACLEnglishAdditionAdvisory - -- (NSString *) aclMethod -{ - return @"add"; -} - -@end diff --git a/UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.h b/UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.h deleted file mode 100644 index 7590f1060..000000000 --- a/UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.h +++ /dev/null @@ -1,31 +0,0 @@ -/* SOGoACLEnglishRemovalAdvisory.h - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef SOGOACLENGLISHREMOVALADVISORY_H -#define SOGOACLENGLISHREMOVALADVISORY_H - -#import "SOGoACLAdvisory.h" - -@interface SOGoACLEnglishRemovalAdvisory : SOGoACLAdvisory -@end - -#endif /* SOGOACLENGLISHREMOVALADVISORY_H */ diff --git a/UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.m b/UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.m deleted file mode 100644 index f5eacbcf0..000000000 --- a/UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.m +++ /dev/null @@ -1,32 +0,0 @@ -/* SOGoACLEnglishRemovalAdvisory.m - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#import "SOGoACLEnglishRemovalAdvisory.h" - -@implementation SOGoACLEnglishRemovalAdvisory - -- (NSString *) aclMethod -{ - return @"add"; -} - -@end diff --git a/UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.h b/UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.h deleted file mode 100644 index 2b482ac18..000000000 --- a/UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.h +++ /dev/null @@ -1,31 +0,0 @@ -/* SOGoACLFrenchAdditionAdvisory.h - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef SOGOACLFRENCHADDITIONADVISORY_H -#define SOGOACLFRENCHADDITIONADVISORY_H - -#import "SOGoACLAdvisory.h" - -@interface SOGoACLFrenchAdditionAdvisory : SOGoACLAdvisory -@end - -#endif /* SOGOACLFRENCHADDITIONADVISORY_H */ diff --git a/UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.m b/UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.m deleted file mode 100644 index 229dcbc95..000000000 --- a/UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.m +++ /dev/null @@ -1,27 +0,0 @@ -/* SOGoACLFrenchAdditionAdvisory.m - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#import "SOGoACLFrenchAdditionAdvisory.h" - -@implementation SOGoACLFrenchAdditionAdvisory - -@end diff --git a/UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.h b/UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.h deleted file mode 100644 index 9a6c9634d..000000000 --- a/UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.h +++ /dev/null @@ -1,31 +0,0 @@ -/* SOGoACLFrenchRemovalAdvisory.h - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef SOGOACLFRENCHREMOVALADVISORY_H -#define SOGOACLFRENCHREMOVALADVISORY_H - -#import "SOGoACLAdvisory.h" - -@interface SOGoACLFrenchRemovalAdvisory : SOGoACLAdvisory -@end - -#endif /* SOGOACLFRENCHREMOVALADVISORY_H */ diff --git a/UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.m b/UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.m deleted file mode 100644 index 050d2cfca..000000000 --- a/UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.m +++ /dev/null @@ -1,27 +0,0 @@ -/* SOGoACLFrenchRemovalAdvisory.m - this file is part of SOGo - * - * Copyright (C) 2007 Inverse groupe conseil - * - * Author: Wolfgang Sourdeau - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This file 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#import "SOGoACLFrenchRemovalAdvisory.h" - -@implementation SOGoACLFrenchRemovalAdvisory - -@end From c22977f7529ab119f3456c4f0bf6d9e4446ee983 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 16:13:31 +0000 Subject: [PATCH 006/247] Monotone-Parent: 4bd363f979fcaebb2b95eab75100f8270ec1489c Monotone-Revision: 597f7a17318243daa790c41285d7666b3fb0c9ce Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T16:13:31 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/MailerUI.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/WebServerResources/MailerUI.css b/UI/WebServerResources/MailerUI.css index 1c2f2e729..5b0f932f4 100644 --- a/UI/WebServerResources/MailerUI.css +++ b/UI/WebServerResources/MailerUI.css @@ -366,7 +366,7 @@ img.mailer_imagecontent DIV.mailer_plaincontent { font-family: monospace, fixed; - white-space: normal; + white-space: pre; font-size: inherit; margin: 0px; padding: 0px; From 6cbe337368a7974a53e8eb924ee31061203852a2 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 20:17:06 +0000 Subject: [PATCH 007/247] SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo Monotone-Parent: 597f7a17318243daa790c41285d7666b3fb0c9ce Monotone-Revision: 9d5eb4e7832f5841a0da73e6cf40b3cd3294b0d3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T20:17:06 Monotone-Branch: ca.inverse.sogo --- .../SOGoAptMailFrenchDeletion.html | 4 ++-- .../SOGoAptMailFrenchInvitation.html | 6 +++--- .../SOGoAptMailFrenchRemoval.html | 4 ++-- .../SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html | 6 +++--- .../SOGoAptMailGermanDeletion.html | 4 ++-- .../SOGoAptMailGermanInvitation.html | 4 ++-- .../SOGoAptMailGermanRemoval.html | 2 +- .../SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html | 6 +++--- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.html b/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.html index 38d29abb3..780726512 100644 --- a/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.html +++ b/SoObjects/Appointments/SOGoAptMailFrenchDeletion.wo/SOGoAptMailFrenchDeletion.html @@ -1,4 +1,4 @@ -<#IsSubject>Le rendez-vous du <#AptStartDate /> à <#AptStartTime /> a été supprimé +<#IsSubject>Le rendez-vous du <#AptStartDate /> à <#AptStartTime /> a été supprimé <#IsBody> -Le rendez-vous du <#AptStartDate /> à <#AptStartTime /> a été supprimé par <#Organizer />. +Le rendez-vous du <#AptStartDate /> à <#AptStartTime /> a été supprimé par <#Organizer />. diff --git a/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.html b/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.html index 271a375c9..b3313946f 100644 --- a/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.html +++ b/SoObjects/Appointments/SOGoAptMailFrenchInvitation.wo/SOGoAptMailFrenchInvitation.html @@ -1,7 +1,7 @@ -<#IsSubject>Rendez-vous le <#AptStartDate /> à <#AptStartTime /> +<#IsSubject>Rendez-vous le <#AptStartDate /> à <#AptStartTime /> <#IsBody> -Vous êtes invité par <#Organizer /> à une réunion. +Vous êtes invité par <#Organizer /> à une réunion. <#HasHomePageURL> -Veuillez donner votre réponse à l'adresse <#HomePageURL />. +Veuillez donner votre réponse à l'adresse <#HomePageURL />. diff --git a/SoObjects/Appointments/SOGoAptMailFrenchRemoval.wo/SOGoAptMailFrenchRemoval.html b/SoObjects/Appointments/SOGoAptMailFrenchRemoval.wo/SOGoAptMailFrenchRemoval.html index bbe73df30..1cf438f7e 100644 --- a/SoObjects/Appointments/SOGoAptMailFrenchRemoval.wo/SOGoAptMailFrenchRemoval.html +++ b/SoObjects/Appointments/SOGoAptMailFrenchRemoval.wo/SOGoAptMailFrenchRemoval.html @@ -1,4 +1,4 @@ -<#IsSubject>Supprimé de la réunion du <#AptStartDate /> à <#AptStartTime /> +<#IsSubject>Supprimé de la réunion du <#AptStartDate /> à <#AptStartTime /> <#IsBody> -Vous ne faites plus parti de la liste des invités de la réunion du <#AptStartDate /> à <#AptStartTime /> organisée par <#Organizer />. +Vous ne faites plus parti de la liste des invités de la réunion du <#AptStartDate /> à <#AptStartTime /> organisée par <#Organizer />. diff --git a/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html b/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html index 901e34e14..c008d3804 100644 --- a/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html +++ b/SoObjects/Appointments/SOGoAptMailFrenchUpdate.wo/SOGoAptMailFrenchUpdate.html @@ -1,5 +1,5 @@ -<#IsSubject>Rendez-vous du <#OldAptStartDate /> à <#OldAptStartTime /> modifié +<#IsSubject>Rendez-vous du <#OldAptStartDate /> à <#OldAptStartTime /> modifié <#IsBody> -La réunion qui devait se dérouler le <#OldAptStartDate /> à <#OldAptStartTime /> est maintenant prévue le <#NewAptStartDate /> à <#NewAptStartTime />. -Vous êtes invité à accepter ou refuser de participer à la réunion pour cette nouvelle date à l'adresse <#HomePageURL />. +La réunion qui devait se dérouler le <#OldAptStartDate /> à <#OldAptStartTime /> est maintenant prévue le <#NewAptStartDate /> à <#NewAptStartTime />. +Vous êtes invité à accepter ou refuser de participer à la réunion pour cette nouvelle date à l'adresse <#HomePageURL />. diff --git a/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.html b/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.html index 5653d7447..edbc30882 100644 --- a/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.html +++ b/SoObjects/Appointments/SOGoAptMailGermanDeletion.wo/SOGoAptMailGermanDeletion.html @@ -1,4 +1,4 @@ -<#IsSubject>Der Termin am <#AptStartDate /> um <#AptStartTime /> wurde gelöscht. +<#IsSubject>Der Termin am <#AptStartDate /> um <#AptStartTime /> wurde gelöscht. <#IsBody> -Der Termin am <#AptStartDate /> um <#AptStartTime /> wurde von <#Organizer /> gelöscht. +Der Termin am <#AptStartDate /> um <#AptStartTime /> wurde von <#Organizer /> gelöscht. diff --git a/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.html b/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.html index 982c66a1a..383fbb856 100644 --- a/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.html +++ b/SoObjects/Appointments/SOGoAptMailGermanInvitation.wo/SOGoAptMailGermanInvitation.html @@ -1,7 +1,7 @@ <#IsSubject>Termin am <#AptStartDate /> um <#AptStartTime /> <#IsBody> -<#Organizer /> lädt Sie zu einem Termin am <#AptStartDate /> um <#AptStartTime /> ein. +<#Organizer /> lädt Sie zu einem Termin am <#AptStartDate /> um <#AptStartTime /> ein. <#HasHomePageURL> -Bitte benutzen Sie folgende URL, um anzugeben, ob Sie an dem Termin teilnehmen können: <#HomePageURL />. +Bitte benutzen Sie folgende URL, um anzugeben, ob Sie an dem Termin teilnehmen können: <#HomePageURL />. diff --git a/SoObjects/Appointments/SOGoAptMailGermanRemoval.wo/SOGoAptMailGermanRemoval.html b/SoObjects/Appointments/SOGoAptMailGermanRemoval.wo/SOGoAptMailGermanRemoval.html index 3133ccc63..3261311e5 100644 --- a/SoObjects/Appointments/SOGoAptMailGermanRemoval.wo/SOGoAptMailGermanRemoval.html +++ b/SoObjects/Appointments/SOGoAptMailGermanRemoval.wo/SOGoAptMailGermanRemoval.html @@ -1,4 +1,4 @@ -<#IsSubject>Von dem Termin am <#AptStartDate /> um <#AptStartTime /> gelöscht +<#IsSubject>Von dem Termin am <#AptStartDate /> um <#AptStartTime /> gelöscht <#IsBody> Sie sind nicht mehr eingeladen zu dem Termin am <#AptStartDate /> um <#AptStartTime /> organisiert von <#Organizer />. diff --git a/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html b/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html index b0fd4dc93..f5ce36672 100644 --- a/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html +++ b/SoObjects/Appointments/SOGoAptMailGermanUpdate.wo/SOGoAptMailGermanUpdate.html @@ -1,5 +1,5 @@ -<#IsSubject>Veränderung des Termins am <#OldAptStartDate /> um <#OldAptStartTime /> +<#IsSubject>Veränderung des Termins am <#OldAptStartDate /> um <#OldAptStartTime /> <#IsBody> -Der Termin, der ursprünglich am <#OldAptStartDate /> um <#OldAptStartTime /> stattfinden sollte, ist jetzt für den <#NewAptStartDate /> um <#NewAptStartTime /> geplant. -Bitte geben Sie an folgender URL an, ob Sie an diesem Termin zum neuen Datum teilnehmen können: <#HomePageURL />. +Der Termin, der ursprünglich am <#OldAptStartDate /> um <#OldAptStartTime /> stattfinden sollte, ist jetzt für den <#NewAptStartDate /> um <#NewAptStartTime /> geplant. +Bitte geben Sie an folgender URL an, ob Sie an diesem Termin zum neuen Datum teilnehmen können: <#HomePageURL />. From f3f813cf03cc1be54933990e153cf45662a75c61 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 20:17:26 +0000 Subject: [PATCH 008/247] Monotone-Parent: 9d5eb4e7832f5841a0da73e6cf40b3cd3294b0d3 Monotone-Revision: 3408f2dd09c68bd5b735490d9b4f0dd184e5f6ed Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T20:17:26 Monotone-Branch: ca.inverse.sogo --- SoObjects/Appointments/SOGoAptMailNotification.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SoObjects/Appointments/SOGoAptMailNotification.h b/SoObjects/Appointments/SOGoAptMailNotification.h index 934571757..ba774b185 100644 --- a/SoObjects/Appointments/SOGoAptMailNotification.h +++ b/SoObjects/Appointments/SOGoAptMailNotification.h @@ -48,21 +48,21 @@ - (id) newApt; - (void) setNewApt: (iCalEntityObject *) _newApt; -- (NSString *)homePageURL; -- (void)setHomePageURL: (NSString *)_homePageURL; +- (NSString *) homePageURL; +- (void) setHomePageURL: (NSString *) _homePageURL; -- (NSTimeZone *)viewTZ; -- (void)setViewTZ:(NSTimeZone *)_viewTZ; +- (NSTimeZone *) viewTZ; +- (void) setViewTZ: (NSTimeZone *) _viewTZ; /* Helpers */ -- (NSCalendarDate *)oldStartDate; -- (NSCalendarDate *)newStartDate; +- (NSCalendarDate *) oldStartDate; +- (NSCalendarDate *) newStartDate; /* Content Generation */ -- (NSString *)getSubject; -- (NSString *)getBody; +- (NSString *) getSubject; +- (NSString *) getBody; @end From 20f22ec676913db5f771f69496e8a06ab8bf243c Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 20:17:46 +0000 Subject: [PATCH 009/247] Monotone-Parent: 3408f2dd09c68bd5b735490d9b4f0dd184e5f6ed Monotone-Revision: 47bbed6cb762b2941933e8851cea9a6b681e40f4 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T20:17:46 Monotone-Branch: ca.inverse.sogo --- Scripts/sql-update-20070822.sh | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 Scripts/sql-update-20070822.sh diff --git a/Scripts/sql-update-20070822.sh b/Scripts/sql-update-20070822.sh new file mode 100755 index 000000000..a8014c7ac --- /dev/null +++ b/Scripts/sql-update-20070822.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# this script only work with PostgreSQL + +defaultusername=$USER +defaulthostname=localhost +defaultdatabase=$USER +indextable=sogo_folder_info + +read -p "Username ($defaultusername): " username +read -p "Hostname ($defaulthostname): " hostname +read -p "Database ($defaultdatabase): " database + +if [ -z "$username" ] +then + username=$defaultusername +fi +if [ -z "$hostname" ] +then + hostname=$defaulthostname +fi +if [ -z "$database" ] +then + database=$defaultdatabase +fi + +echo "" +echo "You will now be requested your password twice..." +echo "After that, a list of SQL operations will scroll." +echo "" + +sqlscript="" + +function addField() { + oldIFS="$IFS" + IFS=" " + part="`echo -e \"ALTER TABLE $table ADD COLUMN c_deleted INTEGER;\\n\"`"; + sqlscript="$sqlscript$part" + IFS="$oldIFS" +} + +tables=`psql -t -U $username -h $hostname $database -c "select split_part(c_location, '/', 5) from $indextable where c_folder_type != 'Container';"` + +for table in $tables; +do + addField +done + +sqlscript="$sqlscript;" +echo "$sqlscript" | psql -e -U $username -h $hostname $database From 0bdd63032564cf5dda0fd6828c56fc39b2788c9f Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 20:17:54 +0000 Subject: [PATCH 010/247] Monotone-Parent: 47bbed6cb762b2941933e8851cea9a6b681e40f4 Monotone-Revision: 1da368aaadb9a2d416b138131edcc4dcaffd44d0 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T20:17:54 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/UIxMailView.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 UI/WebServerResources/UIxMailView.js diff --git a/UI/WebServerResources/UIxMailView.js b/UI/WebServerResources/UIxMailView.js new file mode 100644 index 000000000..14f04fecf --- /dev/null +++ b/UI/WebServerResources/UIxMailView.js @@ -0,0 +1,5 @@ +function onPrintCurrentMessage(event) { + window.print(); + + preventDefault(event); +} From 7eff40373f980f136ada33ea64a89c4bc93849bf Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 20:18:08 +0000 Subject: [PATCH 011/247] Monotone-Parent: 1da368aaadb9a2d416b138131edcc4dcaffd44d0 Monotone-Revision: 629c2dca3a0b44cbcdea7cfee80dec01b2841d80 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T20:18:08 Monotone-Branch: ca.inverse.sogo --- SoObjects/Mailer/bundle-info.plist | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 SoObjects/Mailer/bundle-info.plist diff --git a/SoObjects/Mailer/bundle-info.plist b/SoObjects/Mailer/bundle-info.plist new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/SoObjects/Mailer/bundle-info.plist @@ -0,0 +1,2 @@ +{ +} From bb86546829526bbcf9f8ae37acd2f1f2a9764276 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:10:01 +0000 Subject: [PATCH 012/247] Monotone-Parent: 629c2dca3a0b44cbcdea7cfee80dec01b2841d80 Monotone-Revision: 6ba5493c91f538701d638d36d00899eaa08ff21f Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:10:01 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/SchedulerUI.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index a5ceafa4d..0fb99c34f 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -174,21 +174,22 @@ function closeInvitationWindow() { } function modifyEventCallback(http) { - if (http.readyState == 4) { - if (http.status == 200) { - if (queryParameters["mail-invitation"].toLowerCase() == "yes") - closeInvitationWindow(); - else { - window.opener.setTimeout("refreshEventsAndDisplay();", 100); - window.setTimeout("window.close();", 100); - } - } + if (http.readyState == 4) { + if (http.status == 200) { + var mailInvitation = queryParameters["mail-invitation"]; + if (mailInvitation && mailInvitation.toLowerCase() == "yes") + closeInvitationWindow(); else { -// log("showing alert..."); - window.alert(labels["eventPartStatModificationError"]); + window.opener.setTimeout("refreshEventsAndDisplay();", 100); + window.setTimeout("window.close();", 100); } - document.modifyEventAjaxRequest = null; - } + } + else { +// log("showing alert..."); + window.alert(labels["eventPartStatModificationError"]); + } + document.modifyEventAjaxRequest = null; + } } function deleteEventCallback(http) { From 408a6a0c4a41f428d99a2a5ee8effd6821d951cd Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:10:50 +0000 Subject: [PATCH 013/247] Monotone-Parent: 6ba5493c91f538701d638d36d00899eaa08ff21f Monotone-Revision: 3e993bd57ea644d0e5344b9c04aa3026c95efcee Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:10:50 Monotone-Branch: ca.inverse.sogo --- SoObjects/Mailer/SOGoDraftObject.m | 31 +---------------------------- SoObjects/SOGo/NSString+Utilities.h | 2 ++ SoObjects/SOGo/NSString+Utilities.m | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/SoObjects/Mailer/SOGoDraftObject.m b/SoObjects/Mailer/SOGoDraftObject.m index 6c49beb97..a8a631351 100644 --- a/SoObjects/Mailer/SOGoDraftObject.m +++ b/SoObjects/Mailer/SOGoDraftObject.m @@ -53,6 +53,7 @@ #import #import +#import #import #import #import "SOGoMailAccount.h" @@ -66,36 +67,6 @@ static NSString *contentTypeValue = @"text/plain; charset=utf-8"; static NSString *headerKeys[] = {@"subject", @"to", @"cc", @"bcc", @"from", @"replyTo", nil}; -@interface NSString (NGMimeHelpers) - -- (NSString *) asQPSubjectString: (NSString *) encoding; - -@end - -@implementation NSString (NGMimeHelpers) - -- (NSString *) asQPSubjectString: (NSString *) encoding; -{ - NSString *qpString, *subjectString; - NSData *subjectData, *destSubjectData; - - subjectData = [self dataUsingEncoding: NSUTF8StringEncoding]; - destSubjectData = [subjectData dataByEncodingQuotedPrintable]; - - qpString = [[NSString alloc] initWithData: destSubjectData - encoding: NSASCIIStringEncoding]; - [qpString autorelease]; - if ([qpString length] > [self length]) - subjectString = [NSString stringWithFormat: @"=?%@?Q?%@?=", - encoding, qpString]; - else - subjectString = self; - - return subjectString; -} - -@end - @implementation SOGoDraftObject static NGMimeType *TextPlainType = nil; diff --git a/SoObjects/SOGo/NSString+Utilities.h b/SoObjects/SOGo/NSString+Utilities.h index 7cd8042b4..0f2e95a99 100644 --- a/SoObjects/SOGo/NSString+Utilities.h +++ b/SoObjects/SOGo/NSString+Utilities.h @@ -46,6 +46,8 @@ /* bare email addresses */ - (NSString *) pureEMailAddress; +- (NSString *) asQPSubjectString: (NSString *) encoding; + #ifndef GNUSTEP_BASE_LIBRARY - (BOOL) boolValue; #endif diff --git a/SoObjects/SOGo/NSString+Utilities.m b/SoObjects/SOGo/NSString+Utilities.m index 38c09bad5..bb8ece23c 100644 --- a/SoObjects/SOGo/NSString+Utilities.m +++ b/SoObjects/SOGo/NSString+Utilities.m @@ -268,6 +268,26 @@ static NSMutableCharacterSet *urlAfterEndingChars = nil; return pureAddress; } +- (NSString *) asQPSubjectString: (NSString *) encoding +{ + NSString *qpString, *subjectString; + NSData *subjectData, *destSubjectData; + + subjectData = [self dataUsingEncoding: NSUTF8StringEncoding]; + destSubjectData = [subjectData dataByEncodingQuotedPrintable]; + + qpString = [[NSString alloc] initWithData: destSubjectData + encoding: NSASCIIStringEncoding]; + [qpString autorelease]; + if ([qpString length] > [self length]) + subjectString = [NSString stringWithFormat: @"=?%@?Q?%@?=", + encoding, qpString]; + else + subjectString = self; + + return subjectString; +} + #if LIB_FOUNDATION_LIBRARY - (BOOL) boolValue { From 2e9c9bbecaa89e1dea924173b34d69f3cfec93fe Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:10:59 +0000 Subject: [PATCH 014/247] Monotone-Parent: 3e993bd57ea644d0e5344b9c04aa3026c95efcee Monotone-Revision: 45d53812c476b99cde3bfb2aff442c821d1b158b Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:10:59 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0bcd7abee..4bb7777f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-08-23 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoDraftObject.m ([NSString + -asQPSubjectString:encoding]): moved method into + NSString+Utilities.m. + 2007-08-22 Wolfgang Sourdeau * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences From 20aa35be722c1cce60207b2844755976f5020e26 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:11:19 +0000 Subject: [PATCH 015/247] Monotone-Parent: 45d53812c476b99cde3bfb2aff442c821d1b158b Monotone-Revision: b06d90de35f95b2fca244d963a06f54c84dad4b9 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:11:19 Monotone-Branch: ca.inverse.sogo --- SoObjects/Appointments/SOGoAppointmentObject.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index 9b1b334fe..1058df10c 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -106,7 +106,9 @@ /* store in all the other folders */ -- (NSException *)saveContentString:(NSString *)_iCal inUIDs:(NSArray *)_uids { +- (NSException *) saveContentString: (NSString *) _iCal + inUIDs: (NSArray *) _uids +{ NSEnumerator *e; id folder; NSException *allErrors = nil; From 9a32b3328d8219c3ae1e460bd537eafc8b69dd7e Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:11:55 +0000 Subject: [PATCH 016/247] Monotone-Parent: b06d90de35f95b2fca244d963a06f54c84dad4b9 Monotone-Revision: 6c97a1225df3211288924e19ffc57661e947cccb Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:11:55 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ SoObjects/Appointments/SOGoAptMailNotification.m | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4bb7777f1..b2bf625c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-08-23 Wolfgang Sourdeau + * SoObjects/Appointments/SOGoAptMailNotification.m + ([SOGoAptMailNotification -getSubject]): returns the subject an a + quoted-printable encoded string, if needed. + * SoObjects/Mailer/SOGoDraftObject.m ([NSString -asQPSubjectString:encoding]): moved method into NSString+Utilities.m. diff --git a/SoObjects/Appointments/SOGoAptMailNotification.m b/SoObjects/Appointments/SOGoAptMailNotification.m index 788669afd..5c6b2c4f0 100644 --- a/SoObjects/Appointments/SOGoAptMailNotification.m +++ b/SoObjects/Appointments/SOGoAptMailNotification.m @@ -28,6 +28,8 @@ #import #import +#import + #import "SOGoAptMailNotification.h" @interface SOGoAptMailNotification (PrivateAPI) @@ -141,7 +143,8 @@ static NSTimeZone *EST = nil; [self name]]; subject = @"ERROR: missing subject!"; } - return subject; + + return [subject asQPSubjectString: @"utf-8"]; } - (NSString *)getBody { From e3897a0150728b61e126aec4334ec62eba8ae1b4 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:12:15 +0000 Subject: [PATCH 017/247] Monotone-Parent: 6c97a1225df3211288924e19ffc57661e947cccb Monotone-Revision: ca2163bc9ead3d33b8626f28648e40de8de6e0e0 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:12:15 Monotone-Branch: ca.inverse.sogo --- SoObjects/Appointments/GNUmakefile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/SoObjects/Appointments/GNUmakefile b/SoObjects/Appointments/GNUmakefile index 4e3d3255d..789501a3d 100644 --- a/SoObjects/Appointments/GNUmakefile +++ b/SoObjects/Appointments/GNUmakefile @@ -32,13 +32,17 @@ Appointments_RESOURCE_FILES += \ Appointments_COMPONENTS += \ SOGoAptMailEnglishInvitation.wo \ - SOGoAptMailFrenchInvitation.wo \ SOGoAptMailEnglishUpdate.wo \ - SOGoAptMailFrenchUpdate.wo \ SOGoAptMailEnglishRemoval.wo \ - SOGoAptMailFrenchRemoval.wo \ SOGoAptMailEnglishDeletion.wo \ + SOGoAptMailFrenchInvitation.wo \ + SOGoAptMailFrenchUpdate.wo \ + SOGoAptMailFrenchRemoval.wo \ SOGoAptMailFrenchDeletion.wo \ + SOGoAptMailGermanInvitation.wo \ + SOGoAptMailGermanUpdate.wo \ + SOGoAptMailGermanRemoval.wo \ + SOGoAptMailGermanDeletion.wo \ -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/wobundle.make From 9a2eb20aff78d34d007dc7073450b73ce0b67caa Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:13:12 +0000 Subject: [PATCH 018/247] Monotone-Parent: ca2163bc9ead3d33b8626f28648e40de8de6e0e0 Monotone-Revision: d9596f4b43a014a2c792aa15954418eac4a2fe8d Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:13:12 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ UI/Scheduler/UIxAppointmentEditor.m | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b2bf625c1..01ada3ade 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2007-08-23 Wolfgang Sourdeau + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -shouldTakeValuesFromRequest:requestinContext:context]): + redesigned method since any method called can be received from a + POST or a GET. Instead we check the method call itself and we + accept only if it has the "save" prefix. + * SoObjects/Appointments/SOGoAptMailNotification.m ([SOGoAptMailNotification -getSubject]): returns the subject an a quoted-printable encoded string, if needed. diff --git a/UI/Scheduler/UIxAppointmentEditor.m b/UI/Scheduler/UIxAppointmentEditor.m index 365cab4e3..f4f041979 100644 --- a/UI/Scheduler/UIxAppointmentEditor.m +++ b/UI/Scheduler/UIxAppointmentEditor.m @@ -319,8 +319,12 @@ - (BOOL) shouldTakeValuesFromRequest: (WORequest *) request inContext: (WOContext*) context { + NSString *actionName; + + actionName = [[request requestHandlerPath] lastPathComponent]; + return ([[self clientObject] isKindOfClass: [SOGoAppointmentObject class]] - && [[request method] isEqualToString: @"POST"]); + && [actionName hasPrefix: @"save"]); } - (void) takeValuesFromRequest: (WORequest *) _rq From 6fece5d06603c8980fb6c3d5f697163d0012ccbe Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 23 Aug 2007 22:13:27 +0000 Subject: [PATCH 019/247] Monotone-Parent: d9596f4b43a014a2c792aa15954418eac4a2fe8d Monotone-Revision: 8e549e50cb51a6b6301c7b5cf0bc1863d2610949 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-23T22:13:27 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ UI/Scheduler/UIxTaskEditor.m | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 01ada3ade..d12c4ea5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-08-23 Wolfgang Sourdeau + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor + -shouldTakeValuesFromRequest:requestinContext:context]): same as + below. + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor -shouldTakeValuesFromRequest:requestinContext:context]): redesigned method since any method called can be received from a diff --git a/UI/Scheduler/UIxTaskEditor.m b/UI/Scheduler/UIxTaskEditor.m index d2c2a342c..0258ae2d2 100644 --- a/UI/Scheduler/UIxTaskEditor.m +++ b/UI/Scheduler/UIxTaskEditor.m @@ -357,8 +357,12 @@ - (BOOL) shouldTakeValuesFromRequest: (WORequest *) request inContext: (WOContext*) context { + NSString *actionName; + + actionName = [[request requestHandlerPath] lastPathComponent]; + return ([[self clientObject] isKindOfClass: [SOGoTaskObject class]] - && [[request method] isEqualToString: @"POST"]); + && [actionName hasPrefix: @"save"]); } - (void) takeValuesFromRequest: (WORequest *) _rq From 9e1e8e73081e05fce868e01b2ddf3c0745237da7 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 13:51:41 +0000 Subject: [PATCH 020/247] Monotone-Parent: 8e549e50cb51a6b6301c7b5cf0bc1863d2610949 Monotone-Revision: 1f3379bc1d46c50f1894d41c482b32cc154669fd Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T13:51:41 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 9 ++++++ SoObjects/Mailer/SOGoMailFolder.m | 49 ++++++------------------------- 2 files changed, 18 insertions(+), 40 deletions(-) diff --git a/ChangeLog b/ChangeLog index d12c4ea5b..7cc9183ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-08-24 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -lookupName:_keyinContext:acquire:_acquire]): moved the lookup + methods back here. Moved the folder existence check here, and do + it on self only when the lookup happens for a non-folder object. + This permits to accept entries for folders with parents who + don't really exist. + 2007-08-23 Wolfgang Sourdeau * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index 7087a1711..babd5684f 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -225,42 +225,6 @@ static BOOL useAltNamespace = NO; /* name lookup */ -- (id) lookupImap4Folder: (NSString *) _key - inContext: (id) _ctx -{ - // TODO: we might want to check for existence prior controller creation - NSURL *sf; - SOGoMailFolder *newFolder; - - /* check whether URL exists */ - - sf = [self imap4URL]; - sf = [NSURL URLWithString: [_key substringFromIndex: 6] - relativeToURL: sf]; - -// - sf = [NSURL URLWithString:[[sf path] stringByAppendingPathComponent:_key] -// - relativeToURL:sf]; - - if ([[self imap4Connection] doesMailboxExistAtURL: sf]) - newFolder = [SOGoMailFolder objectWithName: _key inContainer: self]; - else - newFolder = nil; - /* - We may not return 404, confuses path traversal - but we still do in the - calling method. Probably the traversal process should be fixed to - support 404 exceptions (as stop traversal _and_ acquisition). - */ - - return newFolder; -} - -- (id) lookupImap4Message: (NSString *) _key - inContext: (id) _ctx -{ - // TODO: we might want to check for existence prior controller creation - return [SOGoMailObject objectWithName: _key inContainer: self]; -} - - (id) lookupName: (NSString *) _key inContext: (id)_ctx acquire: (BOOL) _acquire @@ -268,13 +232,18 @@ static BOOL useAltNamespace = NO; id obj; if ([_key hasPrefix: @"folder"]) - obj = [self lookupImap4Folder: _key inContext: _ctx]; + obj = [SOGoMailFolder objectWithName: _key inContainer: self]; else { - if (isdigit ([_key characterAtIndex: 0])) - obj = [self lookupImap4Message: _key inContext: _ctx]; + if ([[self imap4Connection] doesMailboxExistAtURL: [self imap4URL]]) + { + if (isdigit ([_key characterAtIndex: 0])) + obj = [SOGoMailObject objectWithName: _key inContainer: self]; + else + obj = [super lookupName: _key inContext: _ctx acquire: NO]; + } else - obj = [super lookupName: _key inContext: _ctx acquire: NO]; + obj = nil; } if (!obj && _acquire) From 3a5f7d79afcb25df7d1a4534c177d5903a791794 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 18:44:49 +0000 Subject: [PATCH 021/247] Monotone-Parent: 1f3379bc1d46c50f1894d41c482b32cc154669fd Monotone-Revision: 10ee465c100361bd7d29696c41a31e2501089432 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T18:44:49 Monotone-Branch: ca.inverse.sogo --- SoObjects/Contacts/SOGoContactFolders.m | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/SoObjects/Contacts/SOGoContactFolders.m b/SoObjects/Contacts/SOGoContactFolders.m index f166515a0..215870978 100644 --- a/SoObjects/Contacts/SOGoContactFolders.m +++ b/SoObjects/Contacts/SOGoContactFolders.m @@ -240,29 +240,6 @@ return nil; } -// - (NSString *) roleOfUser: (NSString *) uid -// { -// NSArray *roles, *traversalPath; -// NSString *objectName, *role; - -// role = nil; -// traversalPath = [context objectForKey: @"SoRequestTraversalPath"]; -// if ([traversalPath count] > 2) -// { -// objectName = [traversalPath objectAtIndex: 2]; -// roles = [[context activeUser] -// rolesForObject: [self lookupName: objectName -// inContext: context -// acquire: NO] -// inContext: context]; -// if ([roles containsObject: SOGoRole_Assistant] -// || [roles containsObject: SOGoRole_Delegate]) -// role = SOGoRole_Assistant; -// } - -// return role; -// } - - (BOOL) davIsCollection { return YES; From b96cff0d99231f47a1d86e6d8114cdb48eac20f0 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 18:45:56 +0000 Subject: [PATCH 022/247] Monotone-Parent: 10ee465c100361bd7d29696c41a31e2501089432 Monotone-Revision: dba6030e8ab5f3e8a853dc8c3dc20a3e3fb3973a Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T18:45:56 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/SOGoUserFolder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoUserFolder.m b/SoObjects/SOGo/SOGoUserFolder.m index 933779c33..8db12b30e 100644 --- a/SoObjects/SOGo/SOGoUserFolder.m +++ b/SoObjects/SOGo/SOGoUserFolder.m @@ -101,7 +101,7 @@ - (NSString *) ocsPrivateCalendarPath { - return [[self ocsUserPath] stringByAppendingString:@"/Calendar"]; + return [[self ocsUserPath] stringByAppendingString:@"/Calendar/personal"]; } - (NSString *) ocsPrivateContactsPath From e68bf83d3cb107897ce014a2d05dc8199a97c184 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 18:47:32 +0000 Subject: [PATCH 023/247] Monotone-Parent: dba6030e8ab5f3e8a853dc8c3dc20a3e3fb3973a Monotone-Revision: c0a9477f1eb52db3cc79a428d99ba7227f71fa3c Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T18:47:32 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 11 +++++ .../Appointments/SOGoAppointmentFolder.m | 43 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7cc9183ea..3bdbd22df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2007-08-24 Wolfgang Sourdeau + * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -aclUsersForObjectAtPath:objectPathArray]) + ([SOGoAppointmentFolder -aclsForUser:uidforObjectAtPath:objectPathArray]) + ([SOGoAppointmentFolder -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]) + ([SOGoAppointmentFolder + -removeAclsForUsers:usersforObjectAtPath:objectPathArray]): + override those methods to use the "personal" additional directory. + + * SoObjects/SOGo/SOGoUserFolder.m ([-ocsPrivateCalendarPath]): + append "/personal" to the calendar path to simulate a single + calendar in a choice of many. + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder -lookupName:_keyinContext:acquire:_acquire]): moved the lookup methods back here. Moved the folder existence check here, and do diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index 5e7955a7e..a5314d019 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -1297,4 +1297,47 @@ static NSNumber *sharedYes = nil; return @"IPF.Appointment"; } +/* hack until we permit more than 1 cal per user */ +- (NSArray *) _fixedPath: (NSArray *) objectPath +{ + NSMutableArray *newPath; + + newPath = [NSMutableArray arrayWithArray: objectPath]; + if ([newPath count] > 2 + && ![[newPath objectAtIndex: 2] isEqualToString: @"personal"]) + [newPath insertObject: @"personal" atIndex: 2]; + else + [newPath addObject: @"personal"]; + + return newPath; +} + +- (NSArray *) aclUsersForObjectAtPath: (NSArray *) objectPathArray +{ + return [super aclUsersForObjectAtPath: [self _fixedPath: objectPathArray]]; +} + +- (NSArray *) aclsForUser: (NSString *) uid + forObjectAtPath: (NSArray *) objectPathArray +{ + return [super aclsForUser: uid + forObjectAtPath: [self _fixedPath: objectPathArray]]; +} + +- (void) setRoles: (NSArray *) roles + forUser: (NSString *) uid + forObjectAtPath: (NSArray *) objectPathArray +{ + [super setRoles: roles + forUser: uid + forObjectAtPath: [self _fixedPath: objectPathArray]]; +} + +- (void) removeAclsForUsers: (NSArray *) users + forObjectAtPath: (NSArray *) objectPathArray +{ + [super removeAclsForUsers: users + forObjectAtPath: [self _fixedPath: objectPathArray]]; +} + @end /* SOGoAppointmentFolder */ From 6c21591e54839d203f5706b89dfd7555310ac3c6 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 18:47:41 +0000 Subject: [PATCH 024/247] Monotone-Parent: c0a9477f1eb52db3cc79a428d99ba7227f71fa3c Monotone-Revision: 0bde24af2d54dcd7bdb9395dcc3baf170b2a7d03 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T18:47:41 Monotone-Branch: ca.inverse.sogo --- Scripts/sql-update-20070822.sh | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Scripts/sql-update-20070822.sh b/Scripts/sql-update-20070822.sh index a8014c7ac..80a41a2bd 100755 --- a/Scripts/sql-update-20070822.sh +++ b/Scripts/sql-update-20070822.sh @@ -46,5 +46,25 @@ do addField done -sqlscript="$sqlscript;" -echo "$sqlscript" | psql -e -U $username -h $hostname $database +sqlscript="$sqlscript;update $indextable set c_path4 = 'personal', c_path = '/Users/' || c_path2 || '/Calendar/personal' where c_path3 = 'Calendar' and c_path4 is null;" + +function updateCalendarLocation() { + oldIFS="$IFS" + IFS=" " + user="`echo $table | cut -f 1 -d :`" + tablename="`echo $table | cut -f 2 -d :`" + newstart="/$user/Calendar/personal"; + part="update $tablename set c_object = replace(c_object, '/$user/Calendar', '$newstart') where c_object not like '$newstart%';"; + sqlscript="$sqlscript$part" + IFS="$oldIFS" +} + +tables=`psql -t -U $username -h $hostname $database -c "select c_path2 || ':' || split_part(c_acl_location, '/', 5) from $indextable where c_folder_type = 'Appointment';"` +for table in $tables; +do + updateCalendarLocation +done + +echo "$sqlscript" | psql -q -e -U $username -h $hostname $database > /dev/null + +echo "Please ignore the errors above. They just mean that the migration was already done for the elements in question."; \ No newline at end of file From 32a6330a97d1fd63e328f23b7f396b621df5d33d Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 18:48:32 +0000 Subject: [PATCH 025/247] Monotone-Parent: 0bde24af2d54dcd7bdb9395dcc3baf170b2a7d03 Monotone-Revision: e0d6bca914a4da0940a671160d74b221a1596487 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T18:48:32 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ UI/MailPartViewers/UIxMailPartViewer.m | 30 +++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3bdbd22df..db41b9ec3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2007-08-24 Wolfgang Sourdeau + * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer + -flatContentAsString]): use latin1 when the encoding is not + specified, and to reencode data chunk which were not correctly + decoded with the original charset. + * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -aclUsersForObjectAtPath:objectPathArray]) ([SOGoAppointmentFolder -aclsForUser:uidforObjectAtPath:objectPathArray]) ([SOGoAppointmentFolder -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]) diff --git a/UI/MailPartViewers/UIxMailPartViewer.m b/UI/MailPartViewers/UIxMailPartViewer.m index 36c2a1ad7..ab4ace1c3 100644 --- a/UI/MailPartViewers/UIxMailPartViewer.m +++ b/UI/MailPartViewers/UIxMailPartViewer.m @@ -164,7 +164,8 @@ return 0; } -- (NSString *)flatContentAsString { +- (NSString *) flatContentAsString +{ /* Note: we even have the line count in the body-info! */ NSString *charset; NSString *s; @@ -175,18 +176,27 @@ { charset = [[bodyInfo objectForKey:@"parameterList"] objectForKey: @"charset"]; - - // TODO: properly decode charset, might need to handle encoding? - - if ([charset length] > 0) - s = [NSString stringWithData: content - usingEncodingNamed: [charset lowercaseString]]; - else + charset = [charset lowercaseString]; + if (![charset length] + || [charset isEqualToString: @"us-ascii"]) { s = [[NSString alloc] initWithData: content - encoding: NSUTF8StringEncoding]; + encoding: NSISOLatin1StringEncoding]; [s autorelease]; } + else + { + s = [NSString stringWithData: content + usingEncodingNamed: charset]; + if (![s length]) + { + /* latin 1 is used as a 8bit fallback charset... but does this + encoding accept any byte from 0 to 255? */ + s = [[NSString alloc] initWithData: content + encoding: NSISOLatin1StringEncoding]; + [s autorelease]; + } + } if (!s) { @@ -302,7 +312,7 @@ - (NSString *) pathToAttachmentObject { /* this points to the SoObject representing the part, no modifications */ - NSString *url, *n, *pext; + NSString *url, *n; /* path to mail controller object */ From b52ed7db1d0e7186a7c8c55bc800135d2d6bf309 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 20:38:36 +0000 Subject: [PATCH 026/247] Monotone-Parent: e0d6bca914a4da0940a671160d74b221a1596487 Monotone-Revision: 2b72439bcc17ba4d9a4c37701d8a818e14887487 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T20:38:36 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ SoObjects/Appointments/SOGoAppointmentFolder.m | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index db41b9ec3..6c30d788f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-08-24 Wolfgang Sourdeau + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): add + "personal" to the ocs path of the appointment folder. + * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer -flatContentAsString]): use latin1 when the encoding is not specified, and to reencode data chunk which were not correctly diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index a5314d019..9fa1695fc 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -1029,7 +1029,7 @@ static NSNumber *sharedYes = nil; calendarFolder = [SOGoAppointmentFolder objectWithName: @"Calendar" inContainer: userFolder]; [calendarFolder - setOCSPath: [NSString stringWithFormat: @"/Users/%@/Calendar", uid]]; + setOCSPath: [NSString stringWithFormat: @"/Users/%@/Calendar/personal", uid]]; [calendarFolder setOwner: uid]; return calendarFolder; @@ -1303,9 +1303,11 @@ static NSNumber *sharedYes = nil; NSMutableArray *newPath; newPath = [NSMutableArray arrayWithArray: objectPath]; - if ([newPath count] > 2 - && ![[newPath objectAtIndex: 2] isEqualToString: @"personal"]) - [newPath insertObject: @"personal" atIndex: 2]; + if ([newPath count] > 2) + { + if (![[newPath objectAtIndex: 2] isEqualToString: @"personal"]) + [newPath insertObject: @"personal" atIndex: 2]; + } else [newPath addObject: @"personal"]; From 749a8a19fb2ee568bafed5aa2e22743f7a4fe7b3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 20:38:44 +0000 Subject: [PATCH 027/247] Monotone-Parent: 2b72439bcc17ba4d9a4c37701d8a818e14887487 Monotone-Revision: 1489f2765f23cbd92e06307e4281420b107088c7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T20:38:44 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/SOGoFolder.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoFolder.m b/SoObjects/SOGo/SOGoFolder.m index d6676c0e5..20a3b8944 100644 --- a/SoObjects/SOGo/SOGoFolder.m +++ b/SoObjects/SOGo/SOGoFolder.m @@ -42,6 +42,7 @@ #import #import +#import "NSArray+Utilities.h" #import "NSString+Utilities.h" #import "SOGoPermissions.h" @@ -211,7 +212,7 @@ static NSString *defaultUserID = @""; } if ([records isKindOfClass: [NSException class]]) return records; - return [records valueForKey: @"c_name"]; + return [records objectsForKey: @"c_name"]; } - (BOOL) nameExistsInFolder: (NSString *) objectName From 36d48390c1295e995ccfd3b4f96417c0befaa4d1 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 21:25:39 +0000 Subject: [PATCH 028/247] Monotone-Parent: 1489f2765f23cbd92e06307e4281420b107088c7 Monotone-Revision: 1917c0fd92cfcada439335d9d71cceeead0ab9c1 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T21:25:39 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/ContactsUI.css | 23 ++++++++--------- UI/WebServerResources/MailerUI.css | 36 ++++++++------------------- UI/WebServerResources/SchedulerUI.css | 4 +-- 3 files changed, 23 insertions(+), 40 deletions(-) diff --git a/UI/WebServerResources/ContactsUI.css b/UI/WebServerResources/ContactsUI.css index f70ba607a..a610e2332 100644 --- a/UI/WebServerResources/ContactsUI.css +++ b/UI/WebServerResources/ContactsUI.css @@ -30,16 +30,17 @@ DIV#rightPanel overflow: hidden; } +/* top list */ DIV#contactsListContent -{ position: absolute; - background: #fff; - width: 100%; - height: 16em; +{ cursor: default; + position: absolute; + background-color: #fff; top: 2.5em; - overflow: auto; - overflow-x: hidden; left: 0px; -} + right: 0px; + height: 16em; + overflow: hidden; + overflow-y: auto; } .aptview_text { @@ -167,13 +168,9 @@ DIV#folderTreeContent TABLE TD padding: 0px; } TABLE#contactsList -{ - display: block; +{ display: block; position: relative; - color: #000; - background: #fff; - width: 100%; -} + width: 100%; } TABLE#contactsList TD { white-space: nowrap; diff --git a/UI/WebServerResources/MailerUI.css b/UI/WebServerResources/MailerUI.css index 5b0f932f4..9c383e66b 100644 --- a/UI/WebServerResources/MailerUI.css +++ b/UI/WebServerResources/MailerUI.css @@ -45,14 +45,17 @@ DIV#rightPanel overflow: hidden; } +/* top list */ DIV#mailboxContent -{ background-color: #fff; +{ cursor: default; position: absolute; - width: 100%; - height: 15.5em; - left: 0px; + background-color: #fff; top: 2.5em; - right: 0px; } + left: 0px; + right: 0px; + height: 15.5em; + overflow: hidden; + overflow-y: auto; } DIV#messageContent { position: absolute; @@ -474,26 +477,9 @@ TABLE#addr_table } TABLE#messageList -{ cursor: default; - display: block; - position: absolute; - background-color: #fff; - color: #000; - width: 100%; - left: 0px; - right: 0px; - top: 3.25em; - bottom: 1px; - overflow: auto; - overflow-x: hidden; } - -TABLE#messageList THEAD -{ position: fixed; - margin-top: 1px; - top: 7.5em; - right: 0px; - left: 15.5em; - height: 2em; } +{ display: block; + position: relative; + width: 100%; } TABLE#messageList TD { height: 1.2em; } diff --git a/UI/WebServerResources/SchedulerUI.css b/UI/WebServerResources/SchedulerUI.css index 6eddb0195..8bea4af88 100644 --- a/UI/WebServerResources/SchedulerUI.css +++ b/UI/WebServerResources/SchedulerUI.css @@ -122,9 +122,9 @@ DIV#rightPanel padding: 0px; overflow: hidden; } +/* top list */ DIV#eventsListView -{ display: block; - cursor: default; +{ cursor: default; position: absolute; background-color: #fff; top: 2.5em; From fda4136656032ddde820563f627e65dc4cf66bb3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Aug 2007 21:31:03 +0000 Subject: [PATCH 029/247] Monotone-Parent: 1917c0fd92cfcada439335d9d71cceeead0ab9c1 Monotone-Revision: 42b58443911b2b0947af5477ee58de454679c77d Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-24T21:31:03 Monotone-Branch: ca.inverse.sogo --- UI/Templates/MailerUI/UIxMailEditor.wox | 2 +- UI/WebServerResources/UIxMailEditor.css | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/UI/Templates/MailerUI/UIxMailEditor.wox b/UI/Templates/MailerUI/UIxMailEditor.wox index 10ef59a97..bacdcb53a 100644 --- a/UI/Templates/MailerUI/UIxMailEditor.wox +++ b/UI/Templates/MailerUI/UIxMailEditor.wox @@ -22,7 +22,6 @@
-
    @@ -32,6 +31,7 @@ />
+
: Date: Mon, 27 Aug 2007 21:54:32 +0000 Subject: [PATCH 030/247] Monotone-Parent: 42b58443911b2b0947af5477ee58de454679c77d Monotone-Revision: d14cd8383abb887a8f6ab0d37123f98344e95100 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-27T21:54:32 Monotone-Branch: ca.inverse.sogo --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index db619da5a..c0c4a0c6d 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -0.9.0-20070xxx +0.9.0-20070824 -------------- - added the ability to choose the default module from the application settings: "Calendars", "Contacts" or "Mail"; From 9f063a8ceab3f001d421b51a20f129a53d391263 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 27 Aug 2007 21:54:44 +0000 Subject: [PATCH 031/247] Monotone-Parent: d14cd8383abb887a8f6ab0d37123f98344e95100 Monotone-Revision: e89976befd12af0a55cc75574e64196ca89eb6d6 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-27T21:54:44 Monotone-Branch: ca.inverse.sogo --- SOPE/NGCards/NGCardsSaxHandler.m | 8 +++---- SOPE/NGCards/versitCardsSaxDriver/ChangeLog | 6 +++++ .../versitCardsSaxDriver/VSSaxDriver.m | 23 ++++++++----------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/SOPE/NGCards/NGCardsSaxHandler.m b/SOPE/NGCards/NGCardsSaxHandler.m index e91cb36c9..dd939c179 100644 --- a/SOPE/NGCards/NGCardsSaxHandler.m +++ b/SOPE/NGCards/NGCardsSaxHandler.m @@ -60,7 +60,7 @@ /* state */ -- (void)resetExceptResult +- (void) resetExceptResult { if (content) { @@ -130,7 +130,7 @@ } } -- (void)endValueTag +- (void) endValueTag { [types removeAllObjects]; [args removeAllObjects]; @@ -151,14 +151,14 @@ currentGroup = nil; } -- (void)startVCardSet +- (void) startVCardSet { currentCardGroup = nil; currentGroup = nil; vcs.isInVCardSet = 1; } -- (void)endVCardSet +- (void) endVCardSet { vcs.isInVCardSet = 0; } diff --git a/SOPE/NGCards/versitCardsSaxDriver/ChangeLog b/SOPE/NGCards/versitCardsSaxDriver/ChangeLog index 454e8397c..a39b14061 100644 --- a/SOPE/NGCards/versitCardsSaxDriver/ChangeLog +++ b/SOPE/NGCards/versitCardsSaxDriver/ChangeLog @@ -1,3 +1,9 @@ +2007-08-27 Wolfgang Sourdeau + + * VSSaxDriver.m ([VSSaxDriver + -parseFromSource:_sourcesystemId:_sysId]): report only tags for + which the content is not empty. + 2007-05-03 Wolfgang Sourdeau * VSSaxDriver.m ([VSSaxDriver +initialize]): removed the space diff --git a/SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m b/SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m index 138df5e4a..98c3037a8 100644 --- a/SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m +++ b/SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m @@ -471,20 +471,17 @@ static VSStringFormatter *stringFormatter = nil; withAttrs: (SaxAttributes *) _attrs andContent: (NSString *) _content { - /* - This is called for all non-BEGIN|END types. - */ + VSSaxTag *a; + NSString *testContent; -// _content = [stringFormatter stringByUnescapingRFC2445Text: _content]; + /* This is called for all non-BEGIN|END types. */ + testContent = [[_content unescapedFromCard] stringByReplacingString: @";" + withString: @""]; - /* check whether type should be reported as an attribute in XML */ - - [self _beginTag: _tagName group: _group withAttrs: _attrs]; - - if ([_content length] > 0) + if ([[testContent stringByTrimmingSpaces] length] > 0) { - VSSaxTag *a; - + [self _beginTag: _tagName group: _group withAttrs: _attrs]; + a = [(VSSaxTag *)[VSSaxTag alloc] initWithContentString: [_content unescapedFromCard]]; if (a) @@ -492,9 +489,9 @@ static VSStringFormatter *stringFormatter = nil; [elementList addObject: a]; [a release]; } - } - [self _endTag: _tagName]; + [self _endTag: _tagName]; + } } /* report events for collected elements */ From 309cba267fa6355e66dca8447324938d31da762e Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 28 Aug 2007 21:41:13 +0000 Subject: [PATCH 032/247] Monotone-Parent: e89976befd12af0a55cc75574e64196ca89eb6d6 Monotone-Revision: 6127aab36b319cc2b6c594cdd7434dfabd89bab3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-28T21:41:13 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/MailerUI.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/WebServerResources/MailerUI.css b/UI/WebServerResources/MailerUI.css index 9c383e66b..24261f7e5 100644 --- a/UI/WebServerResources/MailerUI.css +++ b/UI/WebServerResources/MailerUI.css @@ -369,7 +369,7 @@ img.mailer_imagecontent DIV.mailer_plaincontent { font-family: monospace, fixed; - white-space: pre; + white-space: normal; font-size: inherit; margin: 0px; padding: 0px; From 6eaba7c3ded9ca84a2f6ec4617effcbca540d148 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 28 Aug 2007 21:42:28 +0000 Subject: [PATCH 033/247] Monotone-Parent: 6127aab36b319cc2b6c594cdd7434dfabd89bab3 Monotone-Revision: 91f695324033a759f628aa29aa6bbda21c6e7dfa Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-28T21:42:28 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 10 ++++++++++ SoObjects/Appointments/SOGoFreeBusyObject.m | 4 ++-- UI/MainUI/SOGoUserHomePage.m | 6 +++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6c30d788f..0a4d75b32 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-08-28 Wolfgang Sourdeau + + * UI/MainUI/SOGoUserHomePage.m: add the "c_" prefix to the quick + table field names that are queried. + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + -iCalStringForFreeBusyInfos:_infosfrom:_startDateto:_endDate]): + add the "c_" prefix to the quick table field names that are + queried. + 2007-08-24 Wolfgang Sourdeau * SoObjects/Appointments/SOGoAppointmentFolder.m diff --git a/SoObjects/Appointments/SOGoFreeBusyObject.m b/SoObjects/Appointments/SOGoFreeBusyObject.m index d8559111a..bddee8ace 100644 --- a/SoObjects/Appointments/SOGoFreeBusyObject.m +++ b/SoObjects/Appointments/SOGoFreeBusyObject.m @@ -169,9 +169,9 @@ info = [events nextObject]; while (info) { - if ([[info objectForKey: @"isopaque"] boolValue]) + if ([[info objectForKey: @"c_isopaque"] boolValue]) { - type = [self _fbTypeForEventStatus: [info objectForKey: @"status"]]; + type = [self _fbTypeForEventStatus: [info objectForKey: @"c_status"]]; [freebusy addFreeBusyFrom: [info objectForKey: @"startDate"] to: [info objectForKey: @"endDate"] type: type]; diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index f64869933..410753ec8 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -97,9 +97,9 @@ static NSString *defaultModule = nil; record = [records nextObject]; while (record) { - status = [record objectForKey: @"status"]; + status = [record objectForKey: @"c_status"]; - value = [[record objectForKey: @"startdate"] intValue]; + value = [[record objectForKey: @"c_startdate"] intValue]; currentDate = [NSCalendarDate dateWithTimeIntervalSince1970: value]; if ([currentDate earlierDate: startDate] == currentDate) startInterval = 0; @@ -107,7 +107,7 @@ static NSString *defaultModule = nil; startInterval = ([currentDate timeIntervalSinceDate: startDate] / 900); - value = [[record objectForKey: @"enddate"] intValue]; + value = [[record objectForKey: @"c_enddate"] intValue]; currentDate = [NSCalendarDate dateWithTimeIntervalSince1970: value]; if ([currentDate earlierDate: endDate] == endDate) endInterval = [items count] - 1; From 51e70457dd2d12d4afbb6f483a6f7bd3186879d1 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 28 Aug 2007 21:43:06 +0000 Subject: [PATCH 034/247] Monotone-Parent: 91f695324033a759f628aa29aa6bbda21c6e7dfa Monotone-Revision: 3b6167a285693c223c66e79510a47baee8f6a2c9 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-28T21:43:06 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ SoObjects/Mailer/SOGoDraftObject.h | 1 + SoObjects/Mailer/SOGoDraftObject.m | 32 +++++++++++++++++++++++++----- UI/MailerUI/UIxMailEditor.m | 7 +------ 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a4d75b32..915951cb4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-08-28 Wolfgang Sourdeau + * SoObjects/Mailer/SOGoDraftObject.m: added support for the + "In-Reply-To" header field when replying. + * UI/MainUI/SOGoUserHomePage.m: add the "c_" prefix to the quick table field names that are queried. diff --git a/SoObjects/Mailer/SOGoDraftObject.h b/SoObjects/Mailer/SOGoDraftObject.h index 0a2415e81..f2d448492 100644 --- a/SoObjects/Mailer/SOGoDraftObject.h +++ b/SoObjects/Mailer/SOGoDraftObject.h @@ -53,6 +53,7 @@ NGImap4Envelope *envelope; int IMAP4ID; NSMutableDictionary *headers; + NSString *inReplyTo; NSString *text; NSString *sourceURL; NSString *sourceFlag; diff --git a/SoObjects/Mailer/SOGoDraftObject.m b/SoObjects/Mailer/SOGoDraftObject.m index a8a631351..173e62d09 100644 --- a/SoObjects/Mailer/SOGoDraftObject.m +++ b/SoObjects/Mailer/SOGoDraftObject.m @@ -65,7 +65,8 @@ static NSString *contentTypeValue = @"text/plain; charset=utf-8"; static NSString *headerKeys[] = {@"subject", @"to", @"cc", @"bcc", - @"from", @"replyTo", nil}; + @"from", @"replyTo", + nil}; @implementation SOGoDraftObject @@ -99,6 +100,7 @@ static BOOL showTextAttachmentsInline = NO; text = @""; sourceURL = nil; sourceFlag = nil; + inReplyTo = nil; } return self; @@ -112,6 +114,7 @@ static BOOL showTextAttachmentsInline = NO; [path release]; [sourceURL release]; [sourceFlag release]; + [inReplyTo release]; [super dealloc]; } @@ -161,7 +164,7 @@ static BOOL showTextAttachmentsInline = NO; id headerValue; unsigned int count; - for (count = 0; count < 6; count++) + for (count = 0; count < 7; count++) { headerValue = [newHeaders objectForKey: headerKeys[count]]; if (headerValue) @@ -187,6 +190,11 @@ static BOOL showTextAttachmentsInline = NO; return text; } +- (void) setInReplyTo: (NSString *) newInReplyTo +{ + ASSIGN (inReplyTo, newInReplyTo); +} + - (void) setSourceURL: (NSString *) newSourceURL { ASSIGN (sourceURL, newSourceURL); @@ -208,6 +216,8 @@ static BOOL showTextAttachmentsInline = NO; [infos setObject: headers forKey: @"headers"]; if (text) [infos setObject: text forKey: @"text"]; + if (inReplyTo) + [infos setObject: inReplyTo forKey: @"inReplyTo"]; if (IMAP4ID > -1) [infos setObject: [NSNumber numberWithInt: IMAP4ID] forKey: @"IMAP4ID"]; @@ -262,6 +272,10 @@ static BOOL showTextAttachmentsInline = NO; value = [infoDict objectForKey: @"sourceFlag"]; if (value) [self setSourceFlag: value]; + + value = [infoDict objectForKey: @"inReplyTo"]; + if (value) + [self setInReplyTo: value]; } - (NSString *) relativeImap4Name @@ -469,15 +483,21 @@ static BOOL showTextAttachmentsInline = NO; - (void) fetchMailForReplying: (SOGoMailObject *) sourceMail toAll: (BOOL) toAll { - NSString *contentForReply; + NSString *contentForReply, *msgID; NSMutableDictionary *info; + NGImap4Envelope *sourceEnvelope; [sourceMail fetchCoreInfos]; info = [NSMutableDictionary dictionaryWithCapacity: 16]; [info setObject: [sourceMail subjectForReply] forKey: @"subject"]; + + sourceEnvelope = [sourceMail envelope]; [self _fillInReplyAddresses: info replyToAll: toAll - envelope: [sourceMail envelope]]; + envelope: sourceEnvelope]; + msgID = [sourceEnvelope messageID]; + if ([msgID length] > 0) + [self setInReplyTo: msgID]; contentForReply = [sourceMail contentForReply]; [self setText: contentForReply]; [self setHeaders: info]; @@ -1000,7 +1020,9 @@ static BOOL showTextAttachmentsInline = NO; [map setObjects:[map objectsForKey: @"from"] forKey: @"reply-to"]; /* add subject */ - + if (inReplyTo) + [map setObject: inReplyTo forKey: @"in-reply-to"]; + if ([(s = [headers objectForKey: @"subject"]) length] > 0) [map setObject: [s asQPSubjectString: @"utf-8"] forKey: @"subject"]; diff --git a/UI/MailerUI/UIxMailEditor.m b/UI/MailerUI/UIxMailEditor.m index a221609e1..726b79709 100644 --- a/UI/MailerUI/UIxMailEditor.m +++ b/UI/MailerUI/UIxMailEditor.m @@ -73,7 +73,6 @@ @implementation UIxMailEditor -static BOOL keepMailTmpFile = NO; static BOOL showInternetMarker = NO; static BOOL useLocationBasedSentFolder = NO; static NSDictionary *internetMailHeaders = nil; @@ -85,13 +84,9 @@ static NSArray *infoKeys = nil; infoKeys = [[NSArray alloc] initWithObjects: @"subject", @"to", @"cc", @"bcc", - @"from", @"replyTo", + @"from", @"replyTo", @"inReplyTo", nil]; - keepMailTmpFile = [ud boolForKey:@"SOGoMailEditorKeepTmpFile"]; - if (keepMailTmpFile) - NSLog(@"WARNING: keeping mail files."); - useLocationBasedSentFolder = [ud boolForKey:@"SOGoUseLocationBasedSentFolder"]; From d2f2d74c9ac7519d29151fafdb54e2a98f23414b Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 29 Aug 2007 16:01:11 +0000 Subject: [PATCH 035/247] Monotone-Parent: 3b6167a285693c223c66e79510a47baee8f6a2c9 Monotone-Revision: 051d8ace5da3411559f163252040cc091ab7fb99 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-29T16:01:11 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 7 +++++++ SoObjects/SOGo/LDAPSource.m | 5 ++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 915951cb4..b4510ef44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-08-29 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + -checkLogin:loginToCheckandPassword:passwordToCheck]): initialize + didBind to NO to make sure no false authentication is returned if + the bind operation is not executed. + 2007-08-28 Wolfgang Sourdeau * SoObjects/Mailer/SOGoDraftObject.m: added support for the diff --git a/SoObjects/SOGo/LDAPSource.m b/SoObjects/SOGo/LDAPSource.m index eeb0a14af..c2350e446 100644 --- a/SoObjects/SOGo/LDAPSource.m +++ b/SoObjects/SOGo/LDAPSource.m @@ -272,6 +272,8 @@ static int sizeLimit; NSString *userDN; NGLdapConnection *bindConnection; + didBind = NO; + if ([loginToCheck length] > 0) { bindConnection = [[NGLdapConnection alloc] initWithHostName: hostname @@ -290,13 +292,10 @@ static int sizeLimit; binddn: userDN credentials: passwordToCheck]; NS_HANDLER - didBind = NO; NS_ENDHANDLER } [bindConnection release]; } - else - didBind = NO; return didBind; } From 2221278723bc9282f8fc13f9e3f3d4b5116db702 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 29 Aug 2007 16:03:13 +0000 Subject: [PATCH 036/247] Monotone-Parent: 051d8ace5da3411559f163252040cc091ab7fb99 Monotone-Revision: 5a1d0b6708fa1d24cc20a53e690caa54f19d060d Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-29T16:03:13 Monotone-Branch: ca.inverse.sogo --- NEWS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NEWS b/NEWS index c0c4a0c6d..8e8a4f282 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,8 @@ +0.9.0-200709XX +-------------- +- fixed a bug where a false positive happening whenever a wrong user login was + given during an indirect bind; + 0.9.0-20070824 -------------- - added the ability to choose the default module from the From efda4398c693ab6606567cc109034b7029d91d71 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 29 Aug 2007 16:27:35 +0000 Subject: [PATCH 037/247] Monotone-Parent: 5a1d0b6708fa1d24cc20a53e690caa54f19d060d Monotone-Revision: ba576bee28bb5fde24965fd841c522b4e6574a7b Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-08-29T16:27:35 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/JavascriptAPIExtensions.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/UI/WebServerResources/JavascriptAPIExtensions.js b/UI/WebServerResources/JavascriptAPIExtensions.js index 509b2ed8c..e29f1b347 100644 --- a/UI/WebServerResources/JavascriptAPIExtensions.js +++ b/UI/WebServerResources/JavascriptAPIExtensions.js @@ -82,8 +82,14 @@ Date.prototype.sogoDayName = function() { Date.prototype.daysUpTo = function(otherDate) { var days = new Array(); - var day1 = this.getTime(); - var day2 = otherDate.getTime(); + var day1Date = new Date(); + day1Date.setTime(this.getTime()); + day1Date.setHours(0, 0, 0, 0); + var day2Date = new Date(); + day2Date.setTime(otherDate.getTime()); + day2Date.setHours(23, 59, 59, 999); + var day1 = day1Date.getTime(); + var day2 = day2Date.getTime(); var nbrDays = Math.floor((day2 - day1) / 86400000) + 1; for (var i = 0; i < nbrDays; i++) { From b8d37ff97ea143e8e0bd7bf235449c857330835d Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 14:57:58 +0000 Subject: [PATCH 038/247] Monotone-Parent: ba576bee28bb5fde24965fd841c522b4e6574a7b Monotone-Revision: 087e158aafe04993604b5cf99cdb4ebb52e6405e Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T14:57:58 Monotone-Branch: ca.inverse.sogo --- UI/MainUI/English.lproj/Localizable.strings | 10 ++-------- UI/MainUI/French.lproj/Localizable.strings | 10 ++-------- UI/MainUI/German.lproj/Localizable.strings | 10 ++-------- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/UI/MainUI/English.lproj/Localizable.strings b/UI/MainUI/English.lproj/Localizable.strings index ae3e21df0..b9ccf8f2f 100644 --- a/UI/MainUI/English.lproj/Localizable.strings +++ b/UI/MainUI/English.lproj/Localizable.strings @@ -2,11 +2,5 @@ "Homepage" = "Homepage"; -"Internet access unauthorized and" = "Internet access unauthorized and"; -"Internet access authorized and" = "Internet access authorized and"; -"internetAccessState_0" = "CLOSED"; -"internetAccessState_1" = "OPEN"; - -"Automatic vacation messages activation" = "Automatic vacation messages activation"; -"Internet" = "Internet"; -"Intranet" = "Intranet"; +"Login:" = "Login:"; +"Password:" = "Password:"; diff --git a/UI/MainUI/French.lproj/Localizable.strings b/UI/MainUI/French.lproj/Localizable.strings index 90f6e89c3..88966d5f5 100644 --- a/UI/MainUI/French.lproj/Localizable.strings +++ b/UI/MainUI/French.lproj/Localizable.strings @@ -2,11 +2,5 @@ "Homepage" = "Accueil"; -"Internet access authorized and" = "L'accès depuis internet est autorisé et "; -"Internet access unauthorized and" = "L'accès depuis internet est interdit et "; -"internetAccessState_0" = "FERMÉ"; -"internetAccessState_1" = "OUVERT"; - -"Automatic vacation messages activation" = "Activation du message de réponse automatique "; -"Internet" = "Internet"; -"Intranet" = "Intranet"; +"Login:" = "Nom d'utilisateur :"; +"Password:" = "Mot de passe :"; diff --git a/UI/MainUI/German.lproj/Localizable.strings b/UI/MainUI/German.lproj/Localizable.strings index 57d2a15a5..536e765b5 100644 --- a/UI/MainUI/German.lproj/Localizable.strings +++ b/UI/MainUI/German.lproj/Localizable.strings @@ -2,11 +2,5 @@ "Homepage" = "Startseite"; -"Internet access authorized and" = "Internetzugang ist erlaubt und "; -"Internet access unauthorized and" = "Internetzugang ist nicht erlaubt und "; -"internetAccessState_0" = "GESCHLOSSEN"; -"internetAccessState_1" = "OFFEN"; - -"Automatic vacation messages activation" = "Activation du message de réponse automatique "; -"Internet" = "Internet"; -"Intranet" = "Intranet"; +"Login:" = "Login:"; +"Password:" = "Password:"; From 94dc3b73c84f7ef6248d548baf2b36bdb1bee4ee Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 14:59:16 +0000 Subject: [PATCH 039/247] Monotone-Parent: 087e158aafe04993604b5cf99cdb4ebb52e6405e Monotone-Revision: d013a98ba61610c7cc9fbecdb189cfec0dd40527 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T14:59:16 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/generic.css | 6 ++++++ UI/WebServerResources/generic.js | 28 +++++++++++++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/UI/WebServerResources/generic.css b/UI/WebServerResources/generic.css index d399878ba..65ea6e83a 100644 --- a/UI/WebServerResources/generic.css +++ b/UI/WebServerResources/generic.css @@ -155,6 +155,12 @@ DIV.linkbanner A DIV.linkbanner A:hover { color: #dd5; } +DIV.linkbanner A#logoff +{ float: right; + margin: 0px; + padding: 0px; + padding-right: .5em; } + .linkbannerlinks { vertical-align: bottom; text-align: left; } diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 0e5d7587f..a8b01e994 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -309,19 +309,27 @@ function triggerAjaxRequest(url, callback, userdata) { return http; } +function startAnimation(parent, nextNode) { + var anim = document.createElement("img"); + anim = $(anim); + anim.id = "progressIndicator"; + anim.src = ResourcesURL + "/busy.gif"; + anim.setStyle({ visibility: "hidden" }); + if (nextNode) + parent.insertBefore(anim, nextNode); + else + parent.appendChild(anim); + anim.setStyle({ visibility: "visible" }); + + return anim; +} + function checkAjaxRequestsState() { var toolbar = document.getElementById("toolbar"); if (toolbar) { if (activeAjaxRequests > 0 && !document.busyAnim) { - var anim = document.createElement("img"); - anim = $(anim); - document.busyAnim = anim; - anim.id = "progressIndicator"; - anim.src = ResourcesURL + "/busy.gif"; - anim.setStyle({ visibility: "hidden" }); - toolbar.appendChild(anim); - anim.setStyle({ visibility: "visible" }); + document.busyAnim = startAnimation(toolbar); } else if (activeAjaxRequests == 0 && document.busyAnim @@ -1252,7 +1260,9 @@ function loadPreferences() { } function onLoadHandler(event) { - loadPreferences(); + if (!document.body.hasClassName("loginPage")) { + loadPreferences(); + } queryParameters = parseQueryParameters('' + window.location); if (!$(document.body).hasClassName("popup")) { initLogConsole(); From 80f8f908d6a78b7b8259b03ca6632ac5ab628d6f Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 14:59:26 +0000 Subject: [PATCH 040/247] Monotone-Parent: d013a98ba61610c7cc9fbecdb189cfec0dd40527 Monotone-Revision: 652e0f2181b09502424d75b2252957791631037a Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T14:59:26 Monotone-Branch: ca.inverse.sogo --- .../JavascriptAPIExtensions.js | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/UI/WebServerResources/JavascriptAPIExtensions.js b/UI/WebServerResources/JavascriptAPIExtensions.js index e29f1b347..2e39fe69a 100644 --- a/UI/WebServerResources/JavascriptAPIExtensions.js +++ b/UI/WebServerResources/JavascriptAPIExtensions.js @@ -228,3 +228,118 @@ Date.prototype.endOfWeek = function() { return endOfWeek; } + +String.prototype._base64_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +String.prototype.base64encode = function () { + var output = ""; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0; + + var input = this._base64_utf8_encode(); + + while (i < input.length) { + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + + this._base64_keyStr.charAt(enc1) + this._base64_keyStr.charAt(enc2) + + this._base64_keyStr.charAt(enc3) + this._base64_keyStr.charAt(enc4); + } + + return output; +}; + +String.prototype.base64decode = function() { + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + + var input = this.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + while (i < input.length) { + enc1 = this._base64_keyStr.indexOf(input.charAt(i++)); + enc2 = this._base64_keyStr.indexOf(input.charAt(i++)); + enc3 = this._base64_keyStr.indexOf(input.charAt(i++)); + enc4 = this._base64_keyStr.indexOf(input.charAt(i++)); + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + output = output + String.fromCharCode(chr1); + + if (enc3 != 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 != 64) { + output = output + String.fromCharCode(chr3); + } + } + + return output._base64_utf8_decode(); +}; + +String.prototype._base64_utf8_encode = function() { + var string = this.replace(/\r\n/g,"\n"); + var utftext = ""; + + for (var n = 0; n < this.length; n++) { + var c = this.charCodeAt(n); + + if (c < 128) { + utftext += String.fromCharCode(c); + } + else if((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } + else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + } + + return utftext; +}; + +String.prototype._base64_utf8_decode = function() { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while (i < string.length) { + c = utftext.charCodeAt(i); + + if (c < 128) { + string += String.fromCharCode(c); + i++; + } + else if((c > 191) && (c < 224)) { + c2 = this.charCodeAt(i+1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } + else { + c2 = this.charCodeAt(i+1); + c3 = this.charCodeAt(i+2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return string; +}; From 4bc603ac5cc174aa6afc5d4ac54df81ad1761075 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:00:08 +0000 Subject: [PATCH 041/247] Monotone-Parent: 652e0f2181b09502424d75b2252957791631037a Monotone-Revision: 6a992007713d2f020f08ac174a9e020ecc427b50 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:00:08 Monotone-Branch: ca.inverse.sogo --- UI/Common/UIxPageFrame.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/UI/Common/UIxPageFrame.m b/UI/Common/UIxPageFrame.m index b093fa75b..267a653d8 100644 --- a/UI/Common/UIxPageFrame.m +++ b/UI/Common/UIxPageFrame.m @@ -171,7 +171,7 @@ WOComponent *page; NSString *pageJSFilename; - page = [[self context] page]; + page = [context page]; pageJSFilename = [NSString stringWithFormat: @"%@.js", NSStringFromClass([page class])]; @@ -183,7 +183,7 @@ WOComponent *page; NSString *fwJSFilename; - page = [[self context] page]; + page = [context page]; fwJSFilename = [NSString stringWithFormat: @"%@.js", [page frameworkName]]; @@ -194,7 +194,7 @@ { WOComponent *page; - page = [[self context] page]; + page = [context page]; return [NSString stringWithFormat: @"%@.SOGo", [page frameworkName]]; } @@ -214,7 +214,7 @@ WOComponent *page; NSString *pageJSFilename; - page = [[self context] page]; + page = [context page]; pageJSFilename = [NSString stringWithFormat: @"%@.css", NSStringFromClass([page class])]; @@ -226,7 +226,7 @@ WOComponent *page; NSString *fwJSFilename; - page = [[self context] page]; + page = [context page]; fwJSFilename = [NSString stringWithFormat: @"%@.css", [page frameworkName]]; @@ -235,7 +235,7 @@ - (NSString *) thisPageURL { - return [[[self context] page] uri]; + return [[context page] uri]; } - (BOOL) hasPageSpecificCSS From d78f807510a776a7ca016e63bf19410ea98609ee Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:00:15 +0000 Subject: [PATCH 042/247] Monotone-Parent: 6a992007713d2f020f08ac174a9e020ecc427b50 Monotone-Revision: 7f9eeda74d55829371d1c66f2c2545473af168ff Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:00:15 Monotone-Branch: ca.inverse.sogo --- UI/Templates/UIxPageFrame.wox | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UI/Templates/UIxPageFrame.wox b/UI/Templates/UIxPageFrame.wox index 08ec47188..a38aa506b 100644 --- a/UI/Templates/UIxPageFrame.wox +++ b/UI/Templates/UIxPageFrame.wox @@ -69,6 +69,8 @@ >
+ | | - | Date: Tue, 4 Sep 2007 15:00:44 +0000 Subject: [PATCH 043/247] Monotone-Parent: 7f9eeda74d55829371d1c66f2c2545473af168ff Monotone-Revision: e36214d6c44a28c81a60a0867712c70d3e3a1651 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:00:44 Monotone-Branch: ca.inverse.sogo --- UI/MainUI/SOGoRootPage.h | 35 +++++++ UI/MainUI/SOGoRootPage.m | 122 ++++++++++--------------- UI/Templates/MainUI/SOGoRootPage.wox | 95 +++++++++++++++---- UI/WebServerResources/SOGoRootPage.css | 36 ++++++++ UI/WebServerResources/SOGoRootPage.js | 15 +++ 5 files changed, 212 insertions(+), 91 deletions(-) create mode 100644 UI/MainUI/SOGoRootPage.h create mode 100644 UI/WebServerResources/SOGoRootPage.css create mode 100644 UI/WebServerResources/SOGoRootPage.js diff --git a/UI/MainUI/SOGoRootPage.h b/UI/MainUI/SOGoRootPage.h new file mode 100644 index 000000000..fe3ebe466 --- /dev/null +++ b/UI/MainUI/SOGoRootPage.h @@ -0,0 +1,35 @@ +/* SOGoRootPage.h - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef SOGOROOTPAGE_H +#define SOGOROOTPAGE_H + +#import + +@interface SOGoRootPage : UIxPageFrame +{ + NSString *userName; +} + +@end + +#endif /* SOGOROOTPAGE_H */ diff --git a/UI/MainUI/SOGoRootPage.m b/UI/MainUI/SOGoRootPage.m index 912def217..2b5cca182 100644 --- a/UI/MainUI/SOGoRootPage.m +++ b/UI/MainUI/SOGoRootPage.m @@ -19,87 +19,58 @@ 02111-1307, USA. */ -#import - -#import -#import #import #import +#import #import #import #import -#import #import -#import -#import +#import -@interface SOGoRootPage : SoComponent -{ - NSString *userName; -} +#import +#import -@end +#import "SOGoRootPage.h" @implementation SOGoRootPage -static BOOL doNotRedirect = NO; - -+ (void)initialize { - NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; - - if ((doNotRedirect = [ud boolForKey:@"SOGoDoNotRedirectRootPage"])) - NSLog(@"SOGoRootPage: home-page redirect is disabled."); -} - -- (void)dealloc { - [self->userName release]; +- (void) dealloc +{ + [userName release]; [super dealloc]; } /* accessors */ -- (void)setUserName:(NSString *)_value { - ASSIGNCOPY(self->userName, _value); +- (void) setUserName: (NSString *) _value +{ + ASSIGNCOPY (userName, _value); } -- (NSString *)userName { - return self->userName; + +- (NSString *) userName +{ + return userName; } /* actions */ -- (id)connectAction { - NSString *url; - - [self takeFormValuesForKeys:@"userName", nil]; - - if ([[self userName] length] == 0) - return nil; - - url = [@"/" stringByAppendingString:[[self userName] stringByEscapingURL]]; - if (![url hasSuffix:@"/"]) - url = [url stringByAppendingString:@"/"]; - - url = [[self context] urlWithRequestHandlerKey:@"so" - path:url queryString:nil]; - return [self redirectToLocation:url]; -} - -- (id)defaultAction { +- (id ) defaultAction +{ WOResponse *r; NSString *login, *rhk; - id auth, user; - id home, base; + SOGoAuthenticator *auth; + SOGoUser *user; + SOGoUserFolder *home; + WOApplication *base; - if (doNotRedirect) - return self; - /* Note: ctx.activeUser is NOT set here. Don't know why, so we retrieve the user from the authenticator. */ - auth = [[self clientObject] authenticatorInContext:[self context]]; - user = [auth userInContext:[self context]]; + auth = [[self clientObject] authenticatorInContext: context]; + user = [auth userInContext: context]; login = [user login]; if ([login isEqualToString:@"anonymous"]) { @@ -108,11 +79,11 @@ static BOOL doNotRedirect = NO; } /* check base */ - + base = [self application]; - rhk = [[[self context] request] requestHandlerKey]; + rhk = [[context request] requestHandlerKey]; if (([rhk length] == 0) || ([base requestHandlerForKey:rhk] == nil)) { - base = [base lookupName:@"so" inContext:[self context] acquire:NO]; + base = [base lookupName: @"so" inContext: context acquire: NO]; if (![base isNotNull] || [base isKindOfClass:[NSException class]]) { /* use root page if home could not be found */ @@ -123,7 +94,7 @@ static BOOL doNotRedirect = NO; /* lookup home-page */ - home = [base lookupName:login inContext:[self context] acquire:NO]; + home = [base lookupName: login inContext: context acquire: NO]; if (![home isNotNull] || [home isKindOfClass:[NSException class]]) { /* use root page if home could not be found */ return self; @@ -131,33 +102,40 @@ static BOOL doNotRedirect = NO; /* redirect to home-page */ - r = [[self context] response]; - [r setStatus:302 /* moved */]; - [r setHeader:[home baseURLInContext:[self context]] forKey:@"location"]; + r = [context response]; + [r setStatus: 302 /* moved */]; + [r setHeader: [home baseURLInContext: context] + forKey: @"location"]; + return r; } /* response generation */ -- (void)appendToResponse:(WOResponse *)_response inContext:(WOContext *)_ctx { +- (void) appendToResponse: (WOResponse *) response + inContext: (WOContext *) ctx +{ NSString *rhk; // TODO: we might also want to look into the HTTP basic-auth to redirect to // the login URL! - rhk = [[_ctx request] requestHandlerKey]; - if ([rhk length]==0 || [[self application] requestHandlerForKey:rhk]==nil) { - /* a small hack to redirect to a valid URL */ - NSString *url; + rhk = [[ctx request] requestHandlerKey]; + if ([rhk length] == 0 + || [[self application] requestHandlerForKey: rhk] == nil) + { + /* a small hack to redirect to a valid URL */ + NSString *url; - url = [_ctx urlWithRequestHandlerKey:@"so" path:@"/" queryString:nil]; - [_response setStatus:302 /* moved */]; - [_response setHeader:url forKey:@"location"]; - [self logWithFormat:@"URL: %@", url]; - return; - } - - [super appendToResponse:_response inContext:_ctx]; + url = [ctx urlWithRequestHandlerKey: @"so" path: @"/" queryString: nil]; + [response setStatus: 302 /* moved */]; + [response setHeader: url forKey: @"location"]; + [self logWithFormat: @"URL: %@", url]; + return; + } + + [response setHeader: @"text/html" forKey: @"content-type"]; + [super appendToResponse: response inContext: ctx]; } @end /* SOGoRootPage */ diff --git a/UI/Templates/MainUI/SOGoRootPage.wox b/UI/Templates/MainUI/SOGoRootPage.wox index 5cf9a093f..314b97f89 100644 --- a/UI/Templates/MainUI/SOGoRootPage.wox +++ b/UI/Templates/MainUI/SOGoRootPage.wox @@ -1,24 +1,81 @@ - - + + - - Scalable OGo Homepage - + xmlns:rsrc="OGo:url" + xmlns:label="OGo:label" + > + + + + <var:string value="title"/> + + + + + + + + + + + + + - -

Scalable OGo Homepage

+ + - - Login: - - - - - - + + + + + + + + + + + + + + +
+
+
+

+
+ +
+ +
+
+
+
+ + + +
diff --git a/UI/WebServerResources/SOGoRootPage.css b/UI/WebServerResources/SOGoRootPage.css new file mode 100644 index 000000000..ee7ab9448 --- /dev/null +++ b/UI/WebServerResources/SOGoRootPage.css @@ -0,0 +1,36 @@ +BODY +{ background-color: #999; } + +DIV#loginScreen +{ + background-color: #d4d0c8; + margin: 0px auto; + margin-top: 5em; + padding: 10px; + border: 2px solid transparent; + width: 158px; + height: 250px; + -moz-border-top-colors: #efebe7 #fff; + -moz-border-left-colors: #efebe7 #fff; + -moz-border-right-colors: #000 #9c9a94 transparent; + -moz-border-bottom-colors: #000 #9c9a94 transparent; +} + +DIV#loginScreen IMG +{ border: 1px solid #999; } + +DIV#loginScreen INPUT +{ width: 100%; } + +DIV#loginButton +{ text-align: right; } + +DIV#loginButton INPUT +{ width: auto; + margin-top: 5px; } + +DIV#loginButton IMG#progressIndicator +{ float: left; + border: 0px none; + margin-top: 5px; + margin-left: 5px; } diff --git a/UI/WebServerResources/SOGoRootPage.js b/UI/WebServerResources/SOGoRootPage.js new file mode 100644 index 000000000..dd93cb3b2 --- /dev/null +++ b/UI/WebServerResources/SOGoRootPage.js @@ -0,0 +1,15 @@ +function initLogin() { + var submit = $("submit"); + var userName = $("userName"); + userName.focus(); + Event.observe(submit, "click", onLoginClick); +} + +function onLoginClick(event) { + startAnimation($("loginButton"), $("submit")); + + var loginString = $("userName").value + ":" + $("password").value; + document.cookie = "0xHIGHFLYxSOGo-0.9 = basic" + loginString.base64encode(); +} + +addEvent(window, 'load', initLogin); From 758c27c2b13d5c7adbc3c74dc2d3207cdf46baae Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:00:59 +0000 Subject: [PATCH 044/247] Monotone-Parent: e36214d6c44a28c81a60a0867712c70d3e3a1651 Monotone-Revision: 10176984ec45d7a411a9a108016cb82540c31e0e Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:00:59 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/lori-login.jpg | Bin 0 -> 5849 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 UI/WebServerResources/lori-login.jpg diff --git a/UI/WebServerResources/lori-login.jpg b/UI/WebServerResources/lori-login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..306cfca25030962ace4de872a18723bd2d26f79b GIT binary patch literal 5849 zcmb7IcT`i&o4z3l0jVJfNN>`lcSK5*-kTsGO79?DM5K$-2}QaXdRIUc5u{6#l7MtX zz|fn3QUtR>zi)Sc=j=Z__uQFx%AIp(p64wy_(}X%fLcpUQw;zSk|0PB0PqU{oob+q zBLL{?0s;U4kPu!%!p{IV04Nv&fqh_nSTr;G+t@Yu4{1!X^sq$ zO3V{cJ#TZKVDC5C1dr*sJtTRQ&nA_vbbaaB0ic8*A*VWUk#m^sfy%#+deXt$xP? zXx!k|uOGq3ct9B_o2Z*$X1ZoWCL`io9XxMwqp*?}GgfurAJ|$${{g1IJ+IaMd?lfV zB6TzupcO1WWR&#`{B@UkuIAm|S;FAfqrp}Z%IKH8tLy!~O)WB`#ny-4u%}l?!GB|*J>s_A4(--qLmr6J0Yp-y8P2UlO)%D=Za7J z;LLEe|D6ns^L%jA{EfY#gt^m{!Do%&OJxpHuDQ-rRgEvGp7cG>kl5IBIZJ%hnzyN- zKU@b;J?X@Rg}p3^p>{Ki+_Wic5&kKpU)JOws?>6qxeWkBS@j*k&_G4FgAzsV@y0AR zL?IH7{Ri9$4mazxc)}<`g0(&RQxdXsD)CYSAP9(vm_Vn0nh7;96d;CE(;#TsIXFeR z#FQ@*C__RZ6$nc7`|xd6t$EqUvnbN>KIg>{-BPE?5zp%yHG+lhKjh-uey~e8d_|d$ zy9_jhhjea-!L>dk-Z{LlPrZ24EX~G6a2`M^=;$@+||8y{*6koZ0SWFlkxuGFhDk5ZH0%C8YjM(t$gI1 zb^Lh0F5B&W&%T*uC<^y4*gS9qr7yE_9XzelPi#)v}apH;{- z)QsMoOExb{H(iVO9o4F3asHIVdAm712$w%==CX)+ZQadZ$M+#DT|K|s77u6}?S6(I zY_Gz$xkhQYgp3&)Cvb&Xa5ZeUBucqDil;;&er-l|n8KUH;I{pJZhyOgj@|LjUzjA^ zt9LAI787ZmP}QywIm1B@|6qNF=ud(5Te13GWFa zJ4jVbX-NyS*vQ@rm<=%Qli%6euCtXHo z-j~P_1`P+uM8UUwB3YNrApa1`ZqK7}8=<35!>MX(4TCe?eNC4(gBhWG&)gHf&qO86 z@kD-`yssJA6Z@?@dOse13BXU_%fi~&Kfn3g_gdBo}%#7A?#dUVeGAeGh zHg|=XQv&?N-8EFsxqv%3T)iNVjA1i&B{!2dAm+(<#-Py&%S zM3G|R$~Ls@oYxHu!_l=EVy?PBoFbShCD2g-ofOW=V8v;I6);OaP-~7X<;9PDL*DKW zPPMbQn^N8Ipldk8DHsjAv}8ZwTel;dt3%vkm`lzz&V8Gy`&yz~6lW0`u;cWquwYYM zXpQZI@(;fF{@mx!5e+v};olB!UP{_deOsDBH=bO@6)^LVN;tJvfWMuNe`z7lWFzbL zj7^FBWI0KMz6NUneg4mzQzX-s6U5ET<^AKQ-87UtH=Gy(6MFFLSd zp4AE;g75$y^X-O2f!qcD9KHenC1GbJ(UPdGdj&g5ttdm{>3EGX0lrEbm(8Gu-*HFF zL>4}@_n*tp8hdsH1G=k7A#Mc*f zHg=N=Uvn3iQr8JTh&@^%pmXI9Iz&(+;{S~f970V4C7>h5ZpbO2jJ$4O6OQ_W3(+|) zXa1GgbOEGUK)S#W*0~_kqRmOBW1i)9pV7PA zJd>up)b2fYCoEKUA0su3;iAoFDAcIN9UPM}*X@WP$Zyv5Rg>!CPG7n2qs@Kb+O+QC-3#7L#Z>I$I#!=8wm0 zIxI?DP7AJzHy4}JXS8UempLg+`9L42HtFIE5Bhj~qfW}#;=A4jPYOiSM;E0idzqe_ z#L_C_Pv~fmZV&UFde6V9@*EF8pmg>sKznG|UA0wxHUAQ)GGuJG<$jaWjD1{SGr^60^^I)HP?rFw#L)S zXB!gIENKc~MUmfhzl4nqf%9cGPh_b3YjnAaz9j+k4P9SdrmEEBD&W1oOb#Z zU1#ppL{XY(AI80%z{vGHKrJ0Ue8pA^!c3v*Uw^si6N6`R&NJRl8T?4KezQA0xgOj) z3lF4`+~mm_E$6c8`U-Kdm!5_>km!U}3=%(a@lNTqwykz-&Y0FZ+=$rcZX9YhHXieR zRfS#|yCB6h$J4dYVsObmSZlnH0)xc3JFxN;iN}pQkUF5bOX@bFhmE`o=;l zjRqE9uJpfcHZm(R#)>Te484YC-zq87rcoZ8E`3ms|p zq<%&d*QEo@MEz+(n|68+<37(k{>24&wS z0ylHnr^H_8X~n-W>%Q7;Pf=XNibynk&&*mY`=P=vvz%-6aQ(rIS>nV7==zeormc6s zVIF&2H7Y*an7M3+jNB!IQIWedp&&UzqdwjZ7VPP}a?6}Xgzw!+kiQCVec;@4=J6B? z&BC~ZN?9I&4m55>uZr>4FZEj>)yVE`5;J?wbO+ci zp|2<#_A?78`j+U@9cg!caa$=iL$p>i#`SB2h(u-RT@ja)r^xYf%uJf~NJv-ft8(P8 zuOIt;6e*?xgi92hqC0dm<5`#&!dUJ~uPBnE+*U&iSH@phhO=p#*}H~%G%q*nEyP$} z*f~kMCN5lFJbSeiPw4X#vegda+HfvAS7E0@^#KA9cInl2x0 zQ)NeAs=)oSI-;@ncyE|rk9db(e<>@P={V8)gcVsmf2xZIkaO?3CHEBLTzhYkRp;TIDV=gaD7NT(gK}h^r69WQ+-Bw_U;v< zc_o*`K&wq9-z$w4cK%awauF@P>ARF*13}HFAF5v}4kB1A+CRxEgD*XcpcKmqjM_x> zADw&816srFw{|>0mLUcYVDDNNua|3^cbro68EZM&OvvJF#@r3TU6h}|U7lCP+DW5q z%e;QhYxJXnxe{zMmtxk4YCfhUs6S25!JiWEr+J}US}fjbi+N+!h|t9nY|=?6f!cpgT)?^Sr6w%<|9tfSZT7z?nEzKk6X4$d zEA4Yf$0_^~NAN(-ZMA0fd1bmH7&=M#?(CkQrQ>}zJg~E@{LpAU^fY9|_aUn~VF+PY z-}1{KA+6`bmuM<(*PRPLy-5YV@8W?OPiU0Uhx3--zfPZm2ovD3=e3!$H(z(og}=|% zzruf%T>u~auWEy#{~jI)s!i~1NOnVlZi}L8l?_nsnB6~`eIDsi|AOxSaHC1F41){C zeXfT#gKr77Tq$b?su5bD2+L40cqu}W5Lk4(I`)%4xaHcPy#E0N9cd)X+E(DoA*!Vw zvwno2%rbNrA~t}j8I7XmGxiipn0$O+?vEx|SFw08u|zvZNRp<83&$IfNhj)W2)g1Z z&h&+cW-S_c+OEvEHIDrP$5@YravlXQ;N_fnIO_guF_Qad>vu|@P|#V<)%dG> z0kb-&bvX$c4fDwfA$_NUOp`{*Pid!@DpGs)EcE*Imh6?CQq{XR7VijMzUmsB*Jp?| z(5um$-urn1B~IzRTQP@yIL65+D!AwNW@YHf^Si3f8=;-~gP&%t8ov#G^9`lxVVv(o zzr~Q#nH+2g^*1^7j(qPV#Ny|X2LE3uAjE`y{wLD-2MW=1EKs%W7z6a~!e1+U9^Fx& zLhm?9e}_0+wk;@8V8)1MdtLr2gM+p)147Q(sJ-E77uc{!AkpW{VlM*hBVEGwm-E<7 zX(wdRdq1A%w0sxJI~WZVrFc;b@RY4F#y z{sJbq6416&#axt^P6qrQy`)aBN{KtHaBM1@mvY%o;`bMG*VBRIk=BcYX+45(0_Bnj z=!n}DiD#2BDku$&_M)bCt&3jEvqS|x*$3Q|CVYR%Vt1`X^5^H1Ro~DX#-OI+%N|K7 z_KqtDgshwL$>Hi#Pr|1LsuU&~PQ0Mbc`!%#R6mF(mUHX2Qs?n@{h%< z$nNDTK49MH*!90!1JIuD4tC{s>qkOKPzi#!1A)O1qVxNiKR^&JZqB`(4K)D;cC=`% za{Iq95JoCd{|@dV;Zf*ODH>wn__>ro@AWkX4zc(8t?Niq;>3MtH64^3b&$E}>bO>4 z5Sqx(>Pf?Z1ob0Zh{!RIik(-D_Cz?-VnYytkJR}LUXu@LwY?8^=TP!nH>fIE|H0l79~GoDsfRJLe*_YMT0iT) zIF5qJIMB-{b=7m2eF(@m%>7;4WCFOA`qFOljorSYjtd_8~cy*0W z6*OuKn)zj{(O-JPb62}yz{KQp zlQP7Z{EPGIYRRPt_iz-QhtSkL*N64*gwS%Clw*DwB5YC8H8@p%F(w1qv{Q!+=W9IS zdz3m|_f&^%>OYVA(Qbl&mgfmtI4F5t!|oH$h4XutUH<`=l z=W#-~Xp;6_X=nOIxBS^UEKIt95ABnpY_HM;vkuIrjC%1&NrhFBxUo=n~=<}RaS zh?O=BT)n^mrdY0!gK>(tZ>4)}B2hoM?7zgJ8$IPh9T$xoEpJv~Md6S-E_-z9Q^tW} zxTEdo7!8ejRIh&atL%&J_eK%>PgdI&wTJKGG3#h`@w9_z2l3KbMAz7UIbGyEReCa2 z*!|vhw=aatP7d`B=Ts*h9xZ@J{Nwzj`I_*S4&SCTl^S?Z)Mj((Kp~GWu|_<$cTXzx ztPFZ#EQj5&Qs`76*o1-ztQDiGNI`Y$#KCkoEbxh1x^-oTre=MXwCPd`inmvoTJShl z$2+@?=lzQ1pi1+gayeDy z*|5fe%?IVwKF-*+7xQCp%4~r>7I1jjXj6r;dq&XsBV(rt zea>TA8d2K^(s{0)JQ5sT%`OdGnI?u4c=aD2&%8_*d{(f Jwm$sSe*qTzaXbJ3 literal 0 HcmV?d00001 From fe91698a13dec59632919e07ee47ec275a675361 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:01:02 +0000 Subject: [PATCH 045/247] Monotone-Parent: 10176984ec45d7a411a9a108016cb82540c31e0e Monotone-Revision: 731b884e08c6de775b61ebcbaaa80856806dd4f0 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:01:02 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/attachment.gif | Bin 0 -> 971 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 UI/WebServerResources/attachment.gif diff --git a/UI/WebServerResources/attachment.gif b/UI/WebServerResources/attachment.gif new file mode 100644 index 0000000000000000000000000000000000000000..e12c78fb549eae7839b9cfe8a7c0088c46b5a487 GIT binary patch literal 971 zcmeIx+e=dc9KiA8{WN?SXr&M_L#&{epa;VqG-Fl}Vb4(-N&3W1FZ0BspZEkZqr*3ZNx--vpXWH3c(Mun`{NVTcgI~ujZS&P`HJ}Dk z1HkA=%J41qU*gm0DS%R&3PjvJ$+yJ8j;z<~bvv_=D+|N0$EB=W2!ePZ#tSh%pAYshu$S@s11O3jFym7~7!-~9kz61U z@cVM8FBc33*ZsLrC=@_*!S%y%I2;NbhJs4$Mu-h>5aHrvBVjfci$x=BG{S90x!5MR z731RD$@n(E6Xz2<{BDBZ+ZFcrgyg=EObV%_kWQx$Qeyf*#4s$A7O{*-5Co1(1TIk& zMUu*tXeyso(0L}C&oOycaVWE_%yAsg$vn>sf*=+ZBvF)tVsDJ_B5}+vl1OOUqmz^o_^MM zzY)|7f4cn8)YEC}g&g`W%afUVy{g)#jt8o8-Ky*Tg*)%m;@kGe?HBKUs5@aB(GH!| zmT2k|Wv{DGoxkyXa7_Q|O>N`#eni)hQPrHg)@SYNE`4dxH20WW8(!!uz^{)Cnx(d~ eiYit0prmUnEi11CLEXd`n|-+c_Srf$(DD~mv=2}K literal 0 HcmV?d00001 From 2c3a7170164d878391c429e617d0301ee3ff4ac3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:02:03 +0000 Subject: [PATCH 046/247] Monotone-Parent: 731b884e08c6de775b61ebcbaaa80856806dd4f0 Monotone-Revision: afb936940418b75e98e7e6cf8708708932b6179f Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:02:03 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ UI/MainUI/SOGoUserHomePage.m | 29 +++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index b4510ef44..571acc491 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-09-04 Wolfgang Sourdeau + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): + new method that resets the authentification cookie. + 2007-08-29 Wolfgang Sourdeau * SoObjects/SOGo/LDAPSource.m ([LDAPSource diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 410753ec8..7859b90d6 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -26,14 +26,16 @@ #import #import #import +#import #import #import #import #import #import -#import -#import +#import +#import +#import #import static NSString *defaultModule = nil; @@ -198,4 +200,27 @@ static NSString *defaultModule = nil; return response; } +- (id ) logoffAction +{ + WOResponse *response; + NSEnumerator *cookies; + WOCookie *cookie; + SOGoAuthenticator *auth; + id container; + + container = [[self clientObject] container]; + + response = [context response]; + [response setStatus: 302]; + [response setHeader: [container baseURLInContext: context] + forKey: @"location"]; + cookies = [[response cookies] objectEnumerator]; + auth = [[self clientObject] authenticatorInContext: context]; + cookie = [WOCookie cookieWithName: [auth cookieNameInContext: context] + value: @"logoff"]; + [response addCookie: cookie]; + + return response; +} + @end From ab4a9bc60f1897dc13efd6c3b1d93d84ddb1b73f Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:02:23 +0000 Subject: [PATCH 047/247] Monotone-Parent: afb936940418b75e98e7e6cf8708708932b6179f Monotone-Revision: 4698781d4a032bc88d4d9a572eb98273c608bed8 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:02:23 Monotone-Branch: ca.inverse.sogo --- UI/MainUI/product.plist | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/UI/MainUI/product.plist b/UI/MainUI/product.plist index 7582875fb..213438a6b 100644 --- a/UI/MainUI/product.plist +++ b/UI/MainUI/product.plist @@ -1,5 +1,5 @@ { - requires = ( MAIN ); + requires = ( MAIN, CommonUI ); publicResources = ( ); @@ -59,13 +59,18 @@ categories = { SOGo = { // TODO: move decls to class methods = { - index = { + view = { protectedBy = "View"; - pageName = "SOGoRootPage"; + pageName = "SOGoRootPage"; + }; + connect = { + protectedBy = "View"; + pageName = "SOGoRootPage"; + actionName = "connect"; }; GET = { // more or less a hack, see README of dbd protectedBy = "View"; - pageName = "SOGoRootPage"; + pageName = "SOGoRootPage"; }; }; }; @@ -77,13 +82,18 @@ protectedBy = ""; pageName = "SOGoUserHomePage"; }; + logoff = { + protectedBy = ""; + pageName = "SOGoUserHomePage"; + actionName = "logoff"; + }; }; }; SOGoGroupsFolder = { methods = { index = { protectedBy = "View"; - pageName = "SOGoGroupsPage"; + pageName = "SOGoGroupsPage"; }; }; }; @@ -91,7 +101,7 @@ methods = { index = { protectedBy = "View"; - pageName = "SOGoGroupPage"; + pageName = "SOGoGroupPage"; }; }; }; From dd0cacd42dffd47dc257a6dab148a2bf16fc9d02 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:03:10 +0000 Subject: [PATCH 048/247] Monotone-Parent: 4698781d4a032bc88d4d9a572eb98273c608bed8 Monotone-Revision: 73022a2c3285239a51943bbc9bfadf82c7be66d9 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:03:10 Monotone-Branch: ca.inverse.sogo --- SoObjects/Appointments/SOGoCalendarComponent.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/Appointments/SOGoCalendarComponent.m b/SoObjects/Appointments/SOGoCalendarComponent.m index 73f9766d6..f61b756f4 100644 --- a/SoObjects/Appointments/SOGoCalendarComponent.m +++ b/SoObjects/Appointments/SOGoCalendarComponent.m @@ -567,7 +567,7 @@ static BOOL sendEMailNotifications = NO; } else role = SOGoCalendarRole_Organizer; - + return role; } From 0451c7478da272fe96bacbd520b96e48ab1ed90f Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:38:25 +0000 Subject: [PATCH 049/247] Monotone-Parent: 73022a2c3285239a51943bbc9bfadf82c7be66d9 Monotone-Revision: 7f0ab11449bfed467e7eb2411375074d9017d620 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:38:25 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/NSString+Utilities.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SoObjects/SOGo/NSString+Utilities.m b/SoObjects/SOGo/NSString+Utilities.m index bb8ece23c..3cab55fb1 100644 --- a/SoObjects/SOGo/NSString+Utilities.m +++ b/SoObjects/SOGo/NSString+Utilities.m @@ -24,6 +24,8 @@ #import #import +#import + #import "NSArray+Utilities.h" #import "NSDictionary+URL.h" From 0158375204175af23290f433cfc0bf4fdff28254 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:39:51 +0000 Subject: [PATCH 050/247] Monotone-Parent: 7f0ab11449bfed467e7eb2411375074d9017d620 Monotone-Revision: cb310c719dd9d9eb9bc98d19485f667d0d6bf777 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:39:51 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 + SoObjects/SOGo/SOGoWebAuthenticator.h | 42 +++++++ SoObjects/SOGo/SOGoWebAuthenticator.m | 157 ++++++++++++++++++++++++++ 3 files changed, 203 insertions(+) create mode 100644 SoObjects/SOGo/SOGoWebAuthenticator.h create mode 100644 SoObjects/SOGo/SOGoWebAuthenticator.m diff --git a/ChangeLog b/ChangeLog index 571acc491..04969059a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-09-04 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoWebAuthenticator.m: new class module + implementing a subclass of SoCookieAuthenticator, designed for + web-based cookie authentication of users.m + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): new method that resets the authentification cookie. diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.h b/SoObjects/SOGo/SOGoWebAuthenticator.h new file mode 100644 index 000000000..464f38dc0 --- /dev/null +++ b/SoObjects/SOGo/SOGoWebAuthenticator.h @@ -0,0 +1,42 @@ +/* SOGoWebAuthenticator.h - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef _SOGOWEBAUTHENTICATOR_H_ +#define _SOGOWEBAUTHENTICATOR_H_ + +#import +#import "SOGoAuthenticator.h" + +@class NSString; + +@class SOGoUser; + +@interface SOGoWebAuthenticator : SoCookieAuthenticator +{ + NSString *authMethod; +} + ++ (id) sharedSOGoWebAuthenticator; + +@end + +#endif /* _SOGOWEBAUTHENTICATOR_H__ */ diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.m b/SoObjects/SOGo/SOGoWebAuthenticator.m new file mode 100644 index 000000000..2ab8cb6ef --- /dev/null +++ b/SoObjects/SOGo/SOGoWebAuthenticator.m @@ -0,0 +1,157 @@ +/* SOGoWebAuthenticator.m - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import +#import +#import + +#import +#import +#import +#import +#import + +#import + +#import "LDAPUserManager.h" +#import "SOGoPermissions.h" +#import "SOGoUser.h" + +#import "SOGoWebAuthenticator.h" + +@implementation SOGoWebAuthenticator + ++ (id) sharedSOGoWebAuthenticator +{ + static SOGoWebAuthenticator *auth = nil; + + if (!auth) + auth = [self new]; + + return auth; +} + +- (id) init +{ + if ((self = [super init])) + { + authMethod = [[NSUserDefaults standardUserDefaults] + stringForKey: @"SOGoAuthentificationMethod"]; + [authMethod retain]; + } + + return self; +} + +- (void) dealloc +{ + [authMethod release]; + [super dealloc]; +} + +- (BOOL) checkLogin: (NSString *) _login + password: (NSString *) _pwd +{ + BOOL accept; + LDAPUserManager *um; + + if ([authMethod isEqualToString: @"LDAP"]) + { + um = [LDAPUserManager sharedUserManager]; + accept = [um checkLogin: _login andPassword: _pwd]; + } + else + accept = ([authMethod isEqualToString: @"bypass"] + && [_login length] > 0); + + return accept; +// || ([_login isEqualToString: @"freebusy"] +// && [_pwd isEqualToString: @"freebusy"])); +} + +- (NSString *) passwordInContext: (WOContext *) context +{ + NSArray *creds; + NSString *auth, *password; + + auth = [[context request] cookieValueForKey: + [self cookieNameInContext: context]]; + creds = [self parseCredentials: auth]; + if ([creds count] > 1) + password = [creds objectAtIndex: 1]; + else + password = nil; + + return password; +} + +/* create SOGoUser */ + +- (SOGoUser *) userWithLogin: (NSString *) login + andRoles: (NSArray *) roles + inContext: (WOContext *) ctx +{ + /* the actual factory method */ + return [SOGoUser userWithLogin: login roles: roles]; +} + +- (void) setupAuthFailResponse: (WOResponse *) response + withReason: (NSString *) reason + inContext: (WOContext *) context +{ + id page; + + page = [[WOApplication application] pageWithName: @"SOGoRootPage" + inContext: context]; + [page appendToResponse: response inContext: context]; +} + +// - (BOOL) renderException: (NSException *) exception +// inContext: (WOContext *) context +// { +// id renderedException; +// WOComponent *tmpComponent; +// WOResponse *response; +// BOOL rc; + +// rc = [super renderException: exception inContext: context]; +// if (!rc) +// { +// tmpComponent = [WOComponent new]; +// renderedException = [tmpComponent pageWithName: @"UIxException"]; +// if (renderedException) +// { +// rc = YES; +// response = [context response]; +// [response setHeader: @"text/html" forKey: @"content-type"]; +// [renderedException setClientObject: exception]; +// [context setPage: renderedException]; +// [renderedException appendToResponse: response +// inContext: context]; +// } +// [tmpComponent release]; +// } + +// return rc; +// } + +@end /* SOGoWebAuthenticator */ From e46d9d931d29f5289ce29b5cfe9a4d7988e52be9 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:40:26 +0000 Subject: [PATCH 051/247] Monotone-Parent: cb310c719dd9d9eb9bc98d19485f667d0d6bf777 Monotone-Revision: c80328c7641cc92221810e163f1f30bb47dbbd6e Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:40:26 Monotone-Branch: ca.inverse.sogo --- ...OGoAuthenticator.h => SOGoDAVAuthenticator.h} | 16 +++++++++------- ...OGoAuthenticator.m => SOGoDAVAuthenticator.m} | 10 +++++----- 2 files changed, 14 insertions(+), 12 deletions(-) rename SoObjects/SOGo/{SOGoAuthenticator.h => SOGoDAVAuthenticator.h} (77%) rename SoObjects/SOGo/{SOGoAuthenticator.m => SOGoDAVAuthenticator.m} (95%) diff --git a/SoObjects/SOGo/SOGoAuthenticator.h b/SoObjects/SOGo/SOGoDAVAuthenticator.h similarity index 77% rename from SoObjects/SOGo/SOGoAuthenticator.h rename to SoObjects/SOGo/SOGoDAVAuthenticator.h index 6f8cd5feb..21e06a8af 100644 --- a/SoObjects/SOGo/SOGoAuthenticator.h +++ b/SoObjects/SOGo/SOGoDAVAuthenticator.h @@ -19,13 +19,15 @@ 02111-1307, USA. */ -#ifndef __Main_SOGoAuthenticator_H__ -#define __Main_SOGoAuthenticator_H__ +#ifndef __Main_SOGoDAVAuthenticator_H__ +#define __Main_SOGoDAVAuthenticator_H__ -#include +#import + +#import "SOGoAuthenticator.h" /* - SOGoAuthenticator + SOGoDAVAuthenticator This just overrides the login/pwd check method and always returns YES since the password is already checked in Apache. @@ -36,16 +38,16 @@ @class SOGoUser; -@interface SOGoAuthenticator : SoHTTPAuthenticator +@interface SOGoDAVAuthenticator : SoHTTPAuthenticator { NSString *authMethod; } -+ (id) sharedSOGoAuthenticator; ++ (id) sharedSOGoDAVAuthenticator; - (SOGoUser *) userInContext: (WOContext *) _ctx; - (NSString *) passwordInContext: (WOContext *) context; @end -#endif /* __Main_SOGoAuthenticator_H__ */ +#endif /* __Main_SOGoDAVAuthenticator_H__ */ diff --git a/SoObjects/SOGo/SOGoAuthenticator.m b/SoObjects/SOGo/SOGoDAVAuthenticator.m similarity index 95% rename from SoObjects/SOGo/SOGoAuthenticator.m rename to SoObjects/SOGo/SOGoDAVAuthenticator.m index 20856a419..2380e672f 100644 --- a/SoObjects/SOGo/SOGoAuthenticator.m +++ b/SoObjects/SOGo/SOGoDAVAuthenticator.m @@ -31,13 +31,13 @@ #import "SOGoPermissions.h" #import "SOGoUser.h" -#import "SOGoAuthenticator.h" +#import "SOGoDAVAuthenticator.h" -@implementation SOGoAuthenticator +@implementation SOGoDAVAuthenticator -+ (id) sharedSOGoAuthenticator ++ (id) sharedSOGoDAVAuthenticator { - static SOGoAuthenticator *auth = nil; + static SOGoDAVAuthenticator *auth = nil; if (!auth) auth = [self new]; @@ -164,4 +164,4 @@ // return rc; // } -@end /* SOGoAuthenticator */ +@end /* SOGoDAVAuthenticator */ From cbf592830548ac260d05705cc34bcf8be0fa264b Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:41:14 +0000 Subject: [PATCH 052/247] Monotone-Parent: c80328c7641cc92221810e163f1f30bb47dbbd6e Monotone-Revision: 32f5ff4c695e7e7d495966f686556dc800e22466 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:41:14 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 7 +++++++ Main/SOGo.m | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 04969059a..012f73bf1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2007-09-04 Wolfgang Sourdeau + * Main/SOGo.m ([SOGo -authenticatorInContext:_ctx]): choose the + authenticator based on the request handler key. "dav" returns the + SOGoDAVAuthenticator, anything else returns the Web authenticator. + + * SoObjects/SOGo/SOGoDAVAuthenticator.m: renamed module from + "SOGoAuthenticator". + * SoObjects/SOGo/SOGoWebAuthenticator.m: new class module implementing a subclass of SoCookieAuthenticator, designed for web-based cookie authentication of users.m diff --git a/Main/SOGo.m b/Main/SOGo.m index 702297498..52c2a0d76 100644 --- a/Main/SOGo.m +++ b/Main/SOGo.m @@ -41,10 +41,11 @@ #import -#import +#import +#import #import #import -#import +#import #import "build.h" #import "SOGoProductLoader.h" @@ -233,7 +234,16 @@ static BOOL debugObjectAllocation = NO; - (id) authenticatorInContext: (id) _ctx { - return [$(@"SOGoAuthenticator") sharedSOGoAuthenticator]; + id authenticator; + NSString *key; + + key = [[_ctx request] requestHandlerKey]; + if ([key isEqualToString: @"dav"]) + authenticator = [SOGoDAVAuthenticator sharedSOGoDAVAuthenticator]; + else + authenticator = [SOGoWebAuthenticator sharedSOGoWebAuthenticator]; + + return authenticator; } /* name lookup */ From f4c37e58d8f58a3c2e0776488d9e4fc2418592d6 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:41:25 +0000 Subject: [PATCH 053/247] Monotone-Parent: 32f5ff4c695e7e7d495966f686556dc800e22466 Monotone-Revision: 5d729efce0fc70839821f83308c6adead44aec1c Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:41:25 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/generic.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index a8b01e994..608947f61 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -1314,14 +1314,14 @@ function configureLinkBanner() { var linkBanner = $("linkBanner"); if (linkBanner) { var anchors = linkBanner.childNodesWithTag("a"); - for (var i = 0; i < 2; i++) { + for (var i = 1; i < 3; i++) { Event.observe(anchors[i], "mousedown", listRowMouseDownHandler); Event.observe(anchors[i], "click", onLinkBannerClick); } - Event.observe(anchors[3], "mousedown", listRowMouseDownHandler); - Event.observe(anchors[3], "click", onPreferencesClick); - if (anchors.length > 4) - Event.observe(anchors[4], "click", toggleLogConsole); + Event.observe(anchors[4], "mousedown", listRowMouseDownHandler); + Event.observe(anchors[4], "click", onPreferencesClick); + if (anchors.length > 5) + Event.observe(anchors[5], "click", toggleLogConsole); } } From 0856cd6e795323fb61bb6ccf8cb055f8eb0cc740 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:41:59 +0000 Subject: [PATCH 054/247] Monotone-Parent: 5d729efce0fc70839821f83308c6adead44aec1c Monotone-Revision: 1c0531a754185ea8992128b43f8114ecf312a212 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:41:59 Monotone-Branch: ca.inverse.sogo --- SoObjects/Mailer/SOGoMailBaseObject.m | 1 - SoObjects/SOGo/GNUmakefile | 6 ++++-- SoObjects/SOGo/SOGoObject.m | 6 +++--- UI/MainUI/SOGoRootPage.m | 6 +++--- UI/MainUI/SOGoUserHomePage.m | 4 ++-- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/SoObjects/Mailer/SOGoMailBaseObject.m b/SoObjects/Mailer/SOGoMailBaseObject.m index 11b74259b..e6c2260d4 100644 --- a/SoObjects/Mailer/SOGoMailBaseObject.m +++ b/SoObjects/Mailer/SOGoMailBaseObject.m @@ -20,7 +20,6 @@ */ #import -#import #import #import #import diff --git a/SoObjects/SOGo/GNUmakefile b/SoObjects/SOGo/GNUmakefile index 0b3e7ef24..f8a602b73 100644 --- a/SoObjects/SOGo/GNUmakefile +++ b/SoObjects/SOGo/GNUmakefile @@ -43,7 +43,8 @@ libSOGo_HEADER_FILES = \ NSDictionary+URL.h \ NSCalendarDate+SOGo.h \ \ - SOGoAuthenticator.h \ + SOGoDAVAuthenticator.h \ + SOGoWebAuthenticator.h \ SOGoMailer.h \ SOGoUser.h \ @@ -71,7 +72,8 @@ libSOGo_OBJC_FILES = \ NSNull+Utilities.m \ NSCalendarDate+SOGo.m \ \ - SOGoAuthenticator.m \ + SOGoDAVAuthenticator.m \ + SOGoWebAuthenticator.m \ SOGoMailer.m \ SOGoUser.m \ diff --git a/SoObjects/SOGo/SOGoObject.m b/SoObjects/SOGo/SOGoObject.m index 8d84e9289..280211e53 100644 --- a/SoObjects/SOGo/SOGoObject.m +++ b/SoObjects/SOGo/SOGoObject.m @@ -46,7 +46,7 @@ #import "SOGoPermissions.h" #import "SOGoUser.h" -#import "SOGoAuthenticator.h" +#import "SOGoDAVAuthenticator.h" #import "SOGoUserFolder.h" #import "SOGoDAVRendererTypes.h" @@ -268,13 +268,13 @@ static BOOL kontactGroupDAV = YES; - (SOGoDAVSet *) davCurrentUserPrivilegeSet { - SOGoAuthenticator *sAuth; + SOGoDAVAuthenticator *sAuth; SoUser *user; NSArray *roles; SoClassSecurityInfo *sInfo; NSArray *davPermissions; - sAuth = [SOGoAuthenticator sharedSOGoAuthenticator]; + sAuth = [SOGoDAVAuthenticator sharedSOGoDAVAuthenticator]; user = [sAuth userInContext: context]; roles = [user rolesForObject: self inContext: context]; sInfo = [[self class] soClassSecurityInfo]; diff --git a/UI/MainUI/SOGoRootPage.m b/UI/MainUI/SOGoRootPage.m index 2b5cca182..01801d0f0 100644 --- a/UI/MainUI/SOGoRootPage.m +++ b/UI/MainUI/SOGoRootPage.m @@ -28,7 +28,7 @@ #import #import -#import +#import #import #import "SOGoRootPage.h" @@ -59,7 +59,7 @@ { WOResponse *r; NSString *login, *rhk; - SOGoAuthenticator *auth; + SOGoWebAuthenticator *auth; SOGoUser *user; SOGoUserFolder *home; WOApplication *base; @@ -72,7 +72,7 @@ auth = [[self clientObject] authenticatorInContext: context]; user = [auth userInContext: context]; login = [user login]; - + if ([login isEqualToString:@"anonymous"]) { /* use root page for unauthenticated users */ return self; diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 7859b90d6..572ee1aa8 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -33,7 +33,7 @@ #import #import -#import +#import #import #import #import @@ -205,7 +205,7 @@ static NSString *defaultModule = nil; WOResponse *response; NSEnumerator *cookies; WOCookie *cookie; - SOGoAuthenticator *auth; + SOGoWebAuthenticator *auth; id container; container = [[self clientObject] container]; From 37e4310b7634e45f6a6435185c99b4acdce4b874 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:42:13 +0000 Subject: [PATCH 055/247] Monotone-Parent: 1c0531a754185ea8992128b43f8114ecf312a212 Monotone-Revision: 50c7cdafb86543f6dae899261002b0e053792856 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:42:13 Monotone-Branch: ca.inverse.sogo --- .../Appointments/iCalEntityObject+SOGo.m | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/SoObjects/Appointments/iCalEntityObject+SOGo.m b/SoObjects/Appointments/iCalEntityObject+SOGo.m index 6b67f2da4..3a4411161 100644 --- a/SoObjects/Appointments/iCalEntityObject+SOGo.m +++ b/SoObjects/Appointments/iCalEntityObject+SOGo.m @@ -23,6 +23,8 @@ #import #import +#import + #import #import @@ -32,44 +34,31 @@ - (BOOL) userIsParticipant: (SOGoUser *) user { - NSEnumerator *emails; - NSArray *identities; - NSString *currentEmail; - BOOL response; + NSEnumerator *participants; + iCalPerson *currentParticipant; + BOOL isParticipant; - response = NO; + isParticipant = NO; - identities = [user allIdentities]; - emails = [[identities objectsForKey: @"email"] objectEnumerator]; - currentEmail = [emails nextObject]; - while (!response && currentEmail) - if ([self isParticipant: currentEmail]) - response = YES; + participants = [[self participants] objectEnumerator]; + currentParticipant = [participants nextObject]; + while (!isParticipant + && currentParticipant) + if ([user hasEmail: [currentParticipant rfc822Email]]) + isParticipant = YES; else - currentEmail = [emails nextObject]; + currentParticipant = [participants nextObject]; - return response; + return isParticipant; } - (BOOL) userIsOrganizer: (SOGoUser *) user { - NSEnumerator *emails; - NSArray *identities; - NSString *currentEmail; - BOOL response; + NSString *orgMail; - response = NO; + orgMail = [[self organizer] rfc822Email]; - identities = [user allIdentities]; - emails = [[identities objectsForKey: @"email"] objectEnumerator]; - currentEmail = [emails nextObject]; - while (!response && currentEmail) - if ([self isOrganizer: currentEmail]) - response = YES; - else - currentEmail = [emails nextObject]; - - return response; + return [user hasEmail: orgMail]; } @end From 6a36d8d08f0d79526b661aa3ff84efcb679f9e8e Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 15:43:21 +0000 Subject: [PATCH 056/247] Monotone-Parent: 50c7cdafb86543f6dae899261002b0e053792856 Monotone-Revision: f3ba392396a9c26952f2681367c61b9f343a0958 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T15:43:21 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/SOGoAuthenticator.h | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 SoObjects/SOGo/SOGoAuthenticator.h diff --git a/SoObjects/SOGo/SOGoAuthenticator.h b/SoObjects/SOGo/SOGoAuthenticator.h new file mode 100644 index 000000000..2a2f11d99 --- /dev/null +++ b/SoObjects/SOGo/SOGoAuthenticator.h @@ -0,0 +1,39 @@ +/* SOGoAuthenticator.h - this file is part of SOGo + * + * Copyright (C) 2007 Inverse groupe conseil + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef SOGOAUTHENTICATOR_H +#define SOGOAUTHENTICATOR_H + +#import + +@class NSString; +@class SOGoUser; +@class WOContext; + +@protocol SOGoAuthenticator + +- (NSString *) passwordInContext: (WOContext *) context; +- (SOGoUser *) userInContext: (WOContext *) context; + +@end + +#endif /* SOGOAUTHENTICATOR_H */ From 10d226e1afa39ff25ef78220fcdf41cf29a3cf6f Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 22:02:29 +0000 Subject: [PATCH 057/247] Monotone-Parent: f3ba392396a9c26952f2681367c61b9f343a0958 Monotone-Revision: c11102929b603ab469a45df5f02109db336fb641 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T22:02:29 Monotone-Branch: ca.inverse.sogo --- Main/SOGo.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Main/SOGo.m b/Main/SOGo.m index 52c2a0d76..dc5065f7e 100644 --- a/Main/SOGo.m +++ b/Main/SOGo.m @@ -232,12 +232,12 @@ static BOOL debugObjectAllocation = NO; /* authenticator */ -- (id) authenticatorInContext: (id) _ctx +- (id) authenticatorInContext: (WOContext *) context { id authenticator; NSString *key; - key = [[_ctx request] requestHandlerKey]; + key = [[context request] requestHandlerKey]; if ([key isEqualToString: @"dav"]) authenticator = [SOGoDAVAuthenticator sharedSOGoDAVAuthenticator]; else From df80136f96ddbedc49197f4ff583ab357939db77 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 22:02:54 +0000 Subject: [PATCH 058/247] Monotone-Parent: c11102929b603ab469a45df5f02109db336fb641 Monotone-Revision: b0d9f14d0c38dc8c423945fa93f72e813626fe6f Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T22:02:54 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/SOGoDAVAuthenticator.m | 29 --------------------------- 1 file changed, 29 deletions(-) diff --git a/SoObjects/SOGo/SOGoDAVAuthenticator.m b/SoObjects/SOGo/SOGoDAVAuthenticator.m index 2380e672f..d52f57406 100644 --- a/SoObjects/SOGo/SOGoDAVAuthenticator.m +++ b/SoObjects/SOGo/SOGoDAVAuthenticator.m @@ -135,33 +135,4 @@ return user; } -// - (BOOL) renderException: (NSException *) exception -// inContext: (WOContext *) context -// { -// id renderedException; -// WOComponent *tmpComponent; -// WOResponse *response; -// BOOL rc; - -// rc = [super renderException: exception inContext: context]; -// if (!rc) -// { -// tmpComponent = [WOComponent new]; -// renderedException = [tmpComponent pageWithName: @"UIxException"]; -// if (renderedException) -// { -// rc = YES; -// response = [context response]; -// [response setHeader: @"text/html" forKey: @"content-type"]; -// [renderedException setClientObject: exception]; -// [context setPage: renderedException]; -// [renderedException appendToResponse: response -// inContext: context]; -// } -// [tmpComponent release]; -// } - -// return rc; -// } - @end /* SOGoDAVAuthenticator */ From c3b6c0d9e2f496a4889382b914c1b3d6b7635432 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 22:03:32 +0000 Subject: [PATCH 059/247] Monotone-Parent: b0d9f14d0c38dc8c423945fa93f72e813626fe6f Monotone-Revision: 9c07f354f964b61c31ef1e65537005f323405e8b Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T22:03:32 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/SOGoWebAuthenticator.m | 31 +-------------------------- 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.m b/SoObjects/SOGo/SOGoWebAuthenticator.m index 2ab8cb6ef..9bd84e2a5 100644 --- a/SoObjects/SOGo/SOGoWebAuthenticator.m +++ b/SoObjects/SOGo/SOGoWebAuthenticator.m @@ -121,37 +121,8 @@ id page; page = [[WOApplication application] pageWithName: @"SOGoRootPage" - inContext: context]; + forRequest: [context request]]; [page appendToResponse: response inContext: context]; } -// - (BOOL) renderException: (NSException *) exception -// inContext: (WOContext *) context -// { -// id renderedException; -// WOComponent *tmpComponent; -// WOResponse *response; -// BOOL rc; - -// rc = [super renderException: exception inContext: context]; -// if (!rc) -// { -// tmpComponent = [WOComponent new]; -// renderedException = [tmpComponent pageWithName: @"UIxException"]; -// if (renderedException) -// { -// rc = YES; -// response = [context response]; -// [response setHeader: @"text/html" forKey: @"content-type"]; -// [renderedException setClientObject: exception]; -// [context setPage: renderedException]; -// [renderedException appendToResponse: response -// inContext: context]; -// } -// [tmpComponent release]; -// } - -// return rc; -// } - @end /* SOGoWebAuthenticator */ From 981e0b207779673ff9281a34916d5d90354dceb1 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 22:04:07 +0000 Subject: [PATCH 060/247] Monotone-Parent: 9c07f354f964b61c31ef1e65537005f323405e8b Monotone-Revision: 1817cf065d663afc3b444da020adc9c76385c97c Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T22:04:07 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ UI/MainUI/SOGoUserHomePage.m | 1 + 2 files changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 012f73bf1..d542f488f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-09-04 Wolfgang Sourdeau + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): + set the cookie path to "/". + * Main/SOGo.m ([SOGo -authenticatorInContext:_ctx]): choose the authenticator based on the request handler key. "dav" returns the SOGoDAVAuthenticator, anything else returns the Web authenticator. diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 572ee1aa8..6f211ce67 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -218,6 +218,7 @@ static NSString *defaultModule = nil; auth = [[self clientObject] authenticatorInContext: context]; cookie = [WOCookie cookieWithName: [auth cookieNameInContext: context] value: @"logoff"]; + [cookie setPath: @"/"]; [response addCookie: cookie]; return response; From 5b16b35d26b810626191bcc86730654e5e1a4973 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 22:04:21 +0000 Subject: [PATCH 061/247] Monotone-Parent: 1817cf065d663afc3b444da020adc9c76385c97c Monotone-Revision: 14087896447308202d48d857b3916ffdc5b41ef5 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T22:04:21 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/SOGoRootPage.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UI/WebServerResources/SOGoRootPage.js b/UI/WebServerResources/SOGoRootPage.js index dd93cb3b2..7e311008d 100644 --- a/UI/WebServerResources/SOGoRootPage.js +++ b/UI/WebServerResources/SOGoRootPage.js @@ -9,7 +9,8 @@ function onLoginClick(event) { startAnimation($("loginButton"), $("submit")); var loginString = $("userName").value + ":" + $("password").value; - document.cookie = "0xHIGHFLYxSOGo-0.9 = basic" + loginString.base64encode(); + document.cookie = ("0xHIGHFLYxSOGo-0.9 = basic" + loginString.base64encode() + + "; path=/"); } addEvent(window, 'load', initLogin); From 098c9117e2ebdefe90ec0f833f386ae053432c73 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 4 Sep 2007 22:04:43 +0000 Subject: [PATCH 062/247] Monotone-Parent: 14087896447308202d48d857b3916ffdc5b41ef5 Monotone-Revision: ec985fb9e6b66a8966484429823a42e99822facc Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-04T22:04:43 Monotone-Branch: ca.inverse.sogo --- UI/Templates/MainUI/SOGoRootPage.wox | 1 + 1 file changed, 1 insertion(+) diff --git a/UI/Templates/MainUI/SOGoRootPage.wox b/UI/Templates/MainUI/SOGoRootPage.wox index 314b97f89..c5f08cbd8 100644 --- a/UI/Templates/MainUI/SOGoRootPage.wox +++ b/UI/Templates/MainUI/SOGoRootPage.wox @@ -30,6 +30,7 @@ From 45e64e1465969bb1918005255ab87864235409f8 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 14:55:58 +0000 Subject: [PATCH 063/247] Monotone-Parent: ec985fb9e6b66a8966484429823a42e99822facc Monotone-Revision: 9710a1d0cb659a58b931bdacad52d1d28dbbbe47 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T14:55:58 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ UI/SOGoUI/UIxComponent.h | 1 - UI/SOGoUI/UIxComponent.m | 28 +--------------------------- 3 files changed, 7 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index d542f488f..c36be425e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-09-05 Wolfgang Sourdeau + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -shortUserNameForDisplay]): simplified method. + ([-user]): removed method since [context activeUser] is as useful. + 2007-09-04 Wolfgang Sourdeau * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): diff --git a/UI/SOGoUI/UIxComponent.h b/UI/SOGoUI/UIxComponent.h index ff5996842..4435c7303 100644 --- a/UI/SOGoUI/UIxComponent.h +++ b/UI/SOGoUI/UIxComponent.h @@ -75,7 +75,6 @@ - (UIxComponent *) jsCloseWithRefreshMethod: (NSString *) methodName; /* SoUser */ -- (SoUser *)user; - (NSString *)shortUserNameForDisplay; /* labels */ diff --git a/UI/SOGoUI/UIxComponent.m b/UI/SOGoUI/UIxComponent.m index 0e8e45cdb..83eb9b18f 100644 --- a/UI/SOGoUI/UIxComponent.m +++ b/UI/SOGoUI/UIxComponent.m @@ -418,35 +418,9 @@ static BOOL uixDebugEnabled = NO; /* SoUser */ -- (SoUser *) user -{ - WOContext *ctx; - - ctx = context; - - return [[[self clientObject] authenticatorInContext: ctx] userInContext: ctx]; -} - - (NSString *) shortUserNameForDisplay { - // TODO: better use a SoUser formatter? - // TODO: who calls that? - NSString *s; - NSRange r; - - // TODO: USE USER MANAGER INSTEAD! - - s = [[self user] login]; - if ([s length] < 10) - return s; - - // TODO: algorithm might be inappropriate, depends on the actual UID - - r = [s rangeOfString:@"."]; - if (r.length == 0) - return s; - - return [s substringToIndex:r.location]; + return [[context activeUser] login]; } /* labels */ From a7639609045727b9d622e6a01b8719d1bc98ba53 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 15:33:03 +0000 Subject: [PATCH 064/247] Monotone-Parent: 9710a1d0cb659a58b931bdacad52d1d28dbbbe47 Monotone-Revision: 0be0c535500e7a08745c9f2d3ffe2b5c0c183d2e Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T15:33:03 Monotone-Branch: ca.inverse.sogo --- NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS b/NEWS index 8e8a4f282..9c7872c5b 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,6 @@ 0.9.0-200709XX -------------- +- implemented cookie-based identification in the web interface; - fixed a bug where a false positive happening whenever a wrong user login was given during an indirect bind; From 10968a8f9ab22ab1aee49d5f570669a468870fa0 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 15:33:31 +0000 Subject: [PATCH 065/247] Monotone-Parent: 0be0c535500e7a08745c9f2d3ffe2b5c0c183d2e Monotone-Revision: 4c9c451ed285e35bcbdb393184764a8aeee61e28 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T15:33:31 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ UI/Scheduler/UIxCalendarSelector.m | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c36be425e..1a506694e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-09-05 Wolfgang Sourdeau + * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector + -currentCalendarLogin]): replace css-unsafe characters with _. + * UI/SOGoUI/UIxComponent.m ([UIxComponent -shortUserNameForDisplay]): simplified method. ([-user]): removed method since [context activeUser] is as useful. diff --git a/UI/Scheduler/UIxCalendarSelector.m b/UI/Scheduler/UIxCalendarSelector.m index 7205bfec7..1beef4b43 100644 --- a/UI/Scheduler/UIxCalendarSelector.m +++ b/UI/Scheduler/UIxCalendarSelector.m @@ -152,13 +152,19 @@ colorForNumber (unsigned int number) - (NSString *) currentCalendarLogin { NSArray *parts; + NSMutableString *login; + login = [NSMutableString string]; parts = [[currentCalendarFolder objectForKey: @"folder"] componentsSeparatedByString: @":"]; + [login appendString: (([parts count] > 1) + ? [parts objectAtIndex: 0] + : [[context activeUser] login])]; + [login replaceString: @"." withString: @"_"]; + [login replaceString: @"#" withString: @"_"]; + [login replaceString: @"@" withString: @"_"]; - return (([parts count] > 1) - ? [parts objectAtIndex: 0] - : [[context activeUser] login]); + return login; } - (NSString *) currentCalendarStyle From 20cb2353adb4069d3fe413171e8b9d178172dae5 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 15:33:38 +0000 Subject: [PATCH 066/247] Monotone-Parent: 4c9c451ed285e35bcbdb393184764a8aeee61e28 Monotone-Revision: 56e0f38bea25a5921a2f3e1d83bfb6ccde59aa4a Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T15:33:38 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/JavascriptAPIExtensions.js | 8 ++++++++ UI/WebServerResources/SchedulerUI.js | 14 +++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/UI/WebServerResources/JavascriptAPIExtensions.js b/UI/WebServerResources/JavascriptAPIExtensions.js index 2e39fe69a..69aa6bd5e 100644 --- a/UI/WebServerResources/JavascriptAPIExtensions.js +++ b/UI/WebServerResources/JavascriptAPIExtensions.js @@ -343,3 +343,11 @@ String.prototype._base64_utf8_decode = function() { return string; }; + +String.prototype.cssSafeString = function() { + var newString = this.replace("#", "_", "g"); + newString = newString.replace(".", "_", "g"); + newString = newString.replace("@", "_", "g"); + + return newString; +} diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 0fb99c34f..fc864847b 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -374,7 +374,7 @@ function tasksListCallback(http) { $(listItem).addClassName(data[i][5]); var owner = data[i][1]; listItem.owner = owner; - $(listItem).addClassName("ownerIs" + owner); + $(listItem).addClassName("ownerIs" + owner.cssSafeString()); listItem.cname = escape(data[i][0]); var input = document.createElement("input"); input.setAttribute("type", "checkbox"); @@ -723,7 +723,7 @@ function newEventDIV(cname, owner, starts, lasts, var innerDiv = document.createElement("div"); eventDiv.appendChild(innerDiv); $(innerDiv).addClassName("eventInside"); - $(innerDiv).addClassName("ownerIs" + owner); + $(innerDiv).addClassName("ownerIs" + owner.cssSafeString()); var gradientDiv = document.createElement("div"); innerDiv.appendChild(gradientDiv); @@ -1390,16 +1390,16 @@ function appendCalendar(folderName, folder) { var theRules = new Array(); var lastSheet = document.styleSheets[document.styleSheets.length - 1]; if (lastSheet.insertRule) { // Mozilla - lastSheet.insertRule('.ownerIs' + contactId + ' {' + lastSheet.insertRule('.ownerIs' + contactId.cssSafeString() + ' {' + ' background-color: ' + color + ' !important; }', 0); } else { // IE - lastSheet.addRule('.ownerIs' + contactId, - ' background-color: ' - + color - + ' !important; }'); + lastSheet.addRule('.ownerIs' + contactId.cssSafeString(), + ' background-color: ' + + color + + ' !important; }'); } } From 2c95d2aecff037819268b7549a3e8929561cefe8 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 17:55:46 +0000 Subject: [PATCH 067/247] Monotone-Parent: 56e0f38bea25a5921a2f3e1d83bfb6ccde59aa4a Monotone-Revision: ef929534458c63024938c529b0dd268003e5c97c Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T17:55:46 Monotone-Branch: ca.inverse.sogo --- UI/MainUI/English.lproj/Localizable.strings | 4 +++- UI/MainUI/French.lproj/Localizable.strings | 4 +++- UI/MainUI/German.lproj/Localizable.strings | 8 +++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/UI/MainUI/English.lproj/Localizable.strings b/UI/MainUI/English.lproj/Localizable.strings index b9ccf8f2f..932c42194 100644 --- a/UI/MainUI/English.lproj/Localizable.strings +++ b/UI/MainUI/English.lproj/Localizable.strings @@ -1,6 +1,8 @@ /* this file is in UTF-8 format! */ -"Homepage" = "Homepage"; +"title" = "SOGo"; "Login:" = "Login:"; "Password:" = "Password:"; + +"Connect" = "Connect"; diff --git a/UI/MainUI/French.lproj/Localizable.strings b/UI/MainUI/French.lproj/Localizable.strings index 88966d5f5..dbdc05ac2 100644 --- a/UI/MainUI/French.lproj/Localizable.strings +++ b/UI/MainUI/French.lproj/Localizable.strings @@ -1,6 +1,8 @@ /* this file is in UTF-8 format! */ -"Homepage" = "Accueil"; +"title" = "SOGo"; "Login:" = "Nom d'utilisateur :"; "Password:" = "Mot de passe :"; + +"Connect" = "Connexion"; diff --git a/UI/MainUI/German.lproj/Localizable.strings b/UI/MainUI/German.lproj/Localizable.strings index 536e765b5..790286f09 100644 --- a/UI/MainUI/German.lproj/Localizable.strings +++ b/UI/MainUI/German.lproj/Localizable.strings @@ -1,6 +1,8 @@ /* this file is in UTF-8 format! */ -"Homepage" = "Startseite"; +"title" = "SOGo"; -"Login:" = "Login:"; -"Password:" = "Password:"; +"Login:" = "Benutzername:"; +"Password:" = "Passwort:"; + +"Connect" = "Verbinden"; From 46709b88c647ca62f51f8f2709da1ce372d4040b Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 17:56:00 +0000 Subject: [PATCH 068/247] Monotone-Parent: ef929534458c63024938c529b0dd268003e5c97c Monotone-Revision: d166194697bcb5739b7984b3f4bff186a687d742 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T17:56:00 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/SOGoRootPage.css | 12 +++++++++--- UI/WebServerResources/SOGoRootPage.js | 3 +++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/UI/WebServerResources/SOGoRootPage.css b/UI/WebServerResources/SOGoRootPage.css index ee7ab9448..fe301a452 100644 --- a/UI/WebServerResources/SOGoRootPage.css +++ b/UI/WebServerResources/SOGoRootPage.css @@ -1,6 +1,12 @@ BODY { background-color: #999; } +IMG#preparedAnimation +{ + width: 0px; + height: 0px; +} + DIV#loginScreen { background-color: #d4d0c8; @@ -9,7 +15,7 @@ DIV#loginScreen padding: 10px; border: 2px solid transparent; width: 158px; - height: 250px; + height: 253px; -moz-border-top-colors: #efebe7 #fff; -moz-border-left-colors: #efebe7 #fff; -moz-border-right-colors: #000 #9c9a94 transparent; @@ -19,8 +25,8 @@ DIV#loginScreen DIV#loginScreen IMG { border: 1px solid #999; } -DIV#loginScreen INPUT -{ width: 100%; } +DIV#loginScreen INPUT.textField +{ width: 148px; } DIV#loginButton { text-align: right; } diff --git a/UI/WebServerResources/SOGoRootPage.js b/UI/WebServerResources/SOGoRootPage.js index 7e311008d..28ea18e7a 100644 --- a/UI/WebServerResources/SOGoRootPage.js +++ b/UI/WebServerResources/SOGoRootPage.js @@ -3,6 +3,9 @@ function initLogin() { var userName = $("userName"); userName.focus(); Event.observe(submit, "click", onLoginClick); + + var image = $("preparedAnimation"); + image.parentNode.removeChild(image); } function onLoginClick(event) { From ed97119aa3eb4162e063d02decc61263c451fcda Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 17:56:11 +0000 Subject: [PATCH 069/247] Monotone-Parent: d166194697bcb5739b7984b3f4bff186a687d742 Monotone-Revision: 2d25ad6bd4e7c655ec57826578b1f9451831574b Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T17:56:11 Monotone-Branch: ca.inverse.sogo --- UI/Templates/MainUI/SOGoRootPage.wox | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/UI/Templates/MainUI/SOGoRootPage.wox b/UI/Templates/MainUI/SOGoRootPage.wox index c5f08cbd8..1990379c3 100644 --- a/UI/Templates/MainUI/SOGoRootPage.wox +++ b/UI/Templates/MainUI/SOGoRootPage.wox @@ -10,7 +10,7 @@ - <var:string value="title"/> + <var:string label:value="title"/> @@ -28,6 +28,8 @@ + + + From ae46d1ccb126222a2cea6b95bdf0715fcd24218d Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 17:56:39 +0000 Subject: [PATCH 070/247] Monotone-Parent: 2d25ad6bd4e7c655ec57826578b1f9451831574b Monotone-Revision: 916c9f862b9a3055282ce374be1879734051ee31 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T17:56:39 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ UI/MainUI/SOGoRootPage.m | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1a506694e..d13f95d6c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-09-05 Wolfgang Sourdeau + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage + -isPublicInContext:localContext]): new overriden method that + returns YES. + * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector -currentCalendarLogin]): replace css-unsafe characters with _. diff --git a/UI/MainUI/SOGoRootPage.m b/UI/MainUI/SOGoRootPage.m index 01801d0f0..f99b4e9e9 100644 --- a/UI/MainUI/SOGoRootPage.m +++ b/UI/MainUI/SOGoRootPage.m @@ -138,4 +138,9 @@ [super appendToResponse: response inContext: ctx]; } +- (BOOL) isPublicInContext: (WOContext *) localContext +{ + return YES; +} + @end /* SOGoRootPage */ From 3da1ca9aa10322b7947ab444ca1b1e56e33b53c0 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 5 Sep 2007 17:57:17 +0000 Subject: [PATCH 071/247] Monotone-Parent: 916c9f862b9a3055282ce374be1879734051ee31 Monotone-Revision: d20ec84ad2b4b3caf96c35a13c3f6b3c714ea6e3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-05T17:57:17 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ SoObjects/SOGo/SOGoWebAuthenticator.m | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d13f95d6c..304011c3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-09-05 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator + -setupAuthFailResponse:responsewithReason:reasoninContext:context]): + render the login page through the SoDefaultRenderer. + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -isPublicInContext:localContext]): new overriden method that returns YES. diff --git a/SoObjects/SOGo/SOGoWebAuthenticator.m b/SoObjects/SOGo/SOGoWebAuthenticator.m index 9bd84e2a5..7692c2396 100644 --- a/SoObjects/SOGo/SOGoWebAuthenticator.m +++ b/SoObjects/SOGo/SOGoWebAuthenticator.m @@ -24,6 +24,7 @@ #import #import +#import #import #import #import @@ -118,11 +119,12 @@ withReason: (NSString *) reason inContext: (WOContext *) context { - id page; + WOComponent *page; page = [[WOApplication application] pageWithName: @"SOGoRootPage" forRequest: [context request]]; - [page appendToResponse: response inContext: context]; + [[SoDefaultRenderer sharedRenderer] renderObject: page + inContext: context]; } @end /* SOGoWebAuthenticator */ From 3964cc04d51e1937a53f377d3bab1b33df0aff0a Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 6 Sep 2007 20:51:59 +0000 Subject: [PATCH 072/247] Monotone-Parent: d20ec84ad2b4b3caf96c35a13c3f6b3c714ea6e3 Monotone-Revision: 841f4e0f7b8c42d31d853c73f76ede6b5aad76e9 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-06T20:51:59 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 7 +++++++ .../Appointments/SOGoAppointmentObject.m | 19 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 304011c3f..828e27eec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-09-06 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -saveContentString:_iCalbaseSequence:_v]): + check whether the new appointment object is still relevant before + sending a notification. + 2007-09-05 Wolfgang Sourdeau * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index 1058df10c..e394ff5d6 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -19,6 +19,8 @@ 02111-1307, USA. */ +#import + #import #import #import @@ -181,6 +183,14 @@ } /* "iCal multifolder saves" */ +- (BOOL) _aptIsStillRelevant: (iCalEvent *) appointment +{ + NSCalendarDate *now; + + now = [NSCalendarDate calendarDate]; + + return ([[appointment endDate] earlierDate: now] == now); +} - (NSException *) saveContentString: (NSString *) _iCal baseSequence: (int) _v @@ -321,9 +331,11 @@ if (delError != nil) return delError; /* email notifications */ - if ([self sendEMailNotifications]) + if ([self sendEMailNotifications] + && [self _aptIsStillRelevant: newApt]) { - attendees = [NSMutableArray arrayWithArray: [changes insertedAttendees]]; + attendees + = [NSMutableArray arrayWithArray: [changes insertedAttendees]]; [attendees removePerson: organizer]; [self sendEMailUsingTemplateNamed: @"Invitation" forOldObject: nil @@ -340,7 +352,8 @@ toAttendees: attendees]; } - attendees = [NSMutableArray arrayWithArray:[changes deletedAttendees]]; + attendees + = [NSMutableArray arrayWithArray: [changes deletedAttendees]]; [attendees removePerson: organizer]; if ([attendees count]) { From c00d1c80187aaa215f426d2123a568e361903702 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 6 Sep 2007 21:10:51 +0000 Subject: [PATCH 073/247] Monotone-Parent: 841f4e0f7b8c42d31d853c73f76ede6b5aad76e9 Monotone-Revision: 5f77c4d42b039780b9479f2cc6f1904662a55f87 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-06T21:10:51 Monotone-Branch: ca.inverse.sogo --- SoObjects/Appointments/SOGoAppointmentObject.m | 12 ++++++------ SoObjects/Appointments/SOGoTaskObject.m | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index e394ff5d6..33e140282 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -357,15 +357,15 @@ [attendees removePerson: organizer]; if ([attendees count]) { - iCalEvent *canceledApt; + iCalEvent *cancelledApt; - canceledApt = [newApt copy]; - [(iCalCalendar *) [canceledApt parent] setMethod: @"cancel"]; + cancelledApt = [newApt copy]; + [(iCalCalendar *) [cancelledApt parent] setMethod: @"cancel"]; [self sendEMailUsingTemplateNamed: @"Removal" forOldObject: nil - andNewObject: canceledApt + andNewObject: cancelledApt toAttendees: attendees]; - [canceledApt release]; + [cancelledApt release]; } } @@ -411,7 +411,7 @@ attendees = [NSMutableArray arrayWithArray:[apt attendees]]; [attendees removePerson:[apt organizer]]; - /* flag appointment as being canceled */ + /* flag appointment as being cancelled */ [(iCalCalendar *) [apt parent] setMethod: @"cancel"]; [apt increaseSequence]; diff --git a/SoObjects/Appointments/SOGoTaskObject.m b/SoObjects/Appointments/SOGoTaskObject.m index ac3b241cf..547d19e04 100644 --- a/SoObjects/Appointments/SOGoTaskObject.m +++ b/SoObjects/Appointments/SOGoTaskObject.m @@ -376,15 +376,15 @@ static NSString *mailTemplateDefaultLanguage = nil; // attendees = [NSMutableArray arrayWithArray:[changes deletedAttendees]]; // [attendees removePerson: organizer]; // if ([attendees count]) { -// iCalToDo *canceledApt; +// iCalToDo *cancelledApt; -// canceledApt = [newApt copy]; -// [(iCalCalendar *) [canceledApt parent] setMethod: @"cancel"]; +// cancelledApt = [newApt copy]; +// [(iCalCalendar *) [cancelledApt parent] setMethod: @"cancel"]; // [self sendEMailUsingTemplateNamed: @"Removal" // forOldObject: nil -// andNewObject: canceledApt +// andNewObject: cancelledApt // toAttendees: attendees]; -// [canceledApt release]; +// [cancelledApt release]; // } // } @@ -428,7 +428,7 @@ static NSString *mailTemplateDefaultLanguage = nil; attendees = [NSMutableArray arrayWithArray:[task attendees]]; [attendees removePerson:[task organizer]]; - /* flag task as being canceled */ + /* flag task as being cancelled */ [(iCalCalendar *) [task parent] setMethod: @"cancel"]; [task increaseSequence]; From d7ef24f323704aa253b69e2f15786d4b22052bf3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 6 Sep 2007 21:11:15 +0000 Subject: [PATCH 074/247] Monotone-Parent: 5f77c4d42b039780b9479f2cc6f1904662a55f87 Monotone-Revision: 2cbda748eb7f493052f1dcec5caf07d314c4cf08 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-06T21:11:15 Monotone-Branch: ca.inverse.sogo --- .../SOGoAptMailEnglishDeletion.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.html b/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.html index cea93f0d7..2353f8f3c 100644 --- a/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.html +++ b/SoObjects/Appointments/SOGoAptMailEnglishDeletion.wo/SOGoAptMailEnglishDeletion.html @@ -1,4 +1,4 @@ -<#IsSubject>Appointment <#AptStartDate /> at <#AptStartTime /> has been canceled +<#IsSubject>Appointment <#AptStartDate /> at <#AptStartTime /> has been cancelled <#IsBody> The appointment at <#AptStartDate /> <#AptStartTime /> has been cancelled by <#Organizer />. \ No newline at end of file From 3edec4df42c3783b7908577daca7df05c1bdf35d Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 6 Sep 2007 21:41:19 +0000 Subject: [PATCH 075/247] Monotone-Parent: 2cbda748eb7f493052f1dcec5caf07d314c4cf08 Monotone-Revision: 0d409e504dc163706ba6e61412f0fdcf19d859cc Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-06T21:41:19 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/ContactsUI.js | 2 +- UI/WebServerResources/JavascriptAPIExtensions.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index 718c494f6..be1808fd7 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -35,7 +35,7 @@ function openContactsFolder(contactsFolder, reload, idx) { var searchValue = search["value"]; if (searchValue && searchValue.length > 0) url += ("&search=" + search["criteria"] - + "&value=" + escape(searchValue)); + + "&value=" + escape(searchValue.utf8encode())); var sortAttribute = sorting["attribute"]; if (sortAttribute && sortAttribute.length > 0) url += ("&sort=" + sorting["attribute"] diff --git a/UI/WebServerResources/JavascriptAPIExtensions.js b/UI/WebServerResources/JavascriptAPIExtensions.js index 69aa6bd5e..a1cf862cf 100644 --- a/UI/WebServerResources/JavascriptAPIExtensions.js +++ b/UI/WebServerResources/JavascriptAPIExtensions.js @@ -235,7 +235,7 @@ String.prototype.base64encode = function () { var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; - var input = this._base64_utf8_encode(); + var input = this.utf8encode(); while (i < input.length) { chr1 = input.charCodeAt(i++); @@ -289,10 +289,10 @@ String.prototype.base64decode = function() { } } - return output._base64_utf8_decode(); + return output.utf8decode(); }; -String.prototype._base64_utf8_encode = function() { +String.prototype.utf8encode = function() { var string = this.replace(/\r\n/g,"\n"); var utftext = ""; @@ -316,7 +316,7 @@ String.prototype._base64_utf8_encode = function() { return utftext; }; -String.prototype._base64_utf8_decode = function() { +String.prototype.utf8decode = function() { var string = ""; var i = 0; var c = c1 = c2 = 0; From ae3aed46eaa95df1edbd0af55468babc17572497 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 6 Sep 2007 21:46:56 +0000 Subject: [PATCH 076/247] Monotone-Parent: 0d409e504dc163706ba6e61412f0fdcf19d859cc Monotone-Revision: f19fdd786dfd329c3bdbcd167acc31f4f8f3c949 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-09-06T21:46:56 Monotone-Branch: ca.inverse.sogo --- UI/Templates/ContactsUI/UIxContactEditor.wox | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/UI/Templates/ContactsUI/UIxContactEditor.wox b/UI/Templates/ContactsUI/UIxContactEditor.wox index c4cc0e9ed..c1c1b45e7 100644 --- a/UI/Templates/ContactsUI/UIxContactEditor.wox +++ b/UI/Templates/ContactsUI/UIxContactEditor.wox @@ -74,6 +74,15 @@ + + + + +