mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-10-11 23:07:12 +00:00
propagate from branch 'ca.inverse.sogo.1_3_12' (head f5ba6db440f5a8ba817af65dea12b4a616fdfe71)
to branch 'ca.inverse.sogo' (head df5dd81d62db331ba5c8de9f2257f9430c586534) Monotone-Parent: df5dd81d62db331ba5c8de9f2257f9430c586534 Monotone-Parent: f5ba6db440f5a8ba817af65dea12b4a616fdfe71 Monotone-Revision: 31373520d86c320c1658f22e3bde2eee178c2003 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-01-09T16:38:18 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
commit
5468b9b1a2
11 files changed
+141
-68
No files matched your search
@@ -35,14 +35,19 @@ vtodo_class2 = "(Confidential task)";
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Event Invitation: \"%{Summary}\"";
|
||||
"(sent by %{SentBy}) " = "(sent by %{SentBy}) ";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}";
|
||||
|
||||
/* Deletion */
|
||||
"Event Cancelled: \"%{Summary}\"" = "Event Cancelled: \"%{Summary}\"";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}";
|
||||
|
||||
/* Update */
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} has changed"
|
||||
= "The appointment \"%{Summary}\" for the %{OldStartDate} has changed";
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"
|
||||
= "The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed";
|
||||
"The following parameters have changed in the \"%{Summary}\" meeting:"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2010 Inverse
|
||||
Copyright (C) 2010-2012 Inverse
|
||||
|
||||
This file is part of SOGo
|
||||
|
||||
@@ -49,12 +49,20 @@
|
||||
if (!values)
|
||||
[self setupValues];
|
||||
|
||||
bodyFormat = [self labelForKey: (@"%{Organizer} %{SentByText}has cancelled"
|
||||
@" this event: %{Summary}.\n\n"
|
||||
@"Start: %{StartDate} at %{StartTime}\n"
|
||||
@"End: %{EndDate} at %{EndTime}\n"
|
||||
@"Description: %{Description}")
|
||||
inContext: context];
|
||||
if ([values objectForKey: @"StartTime"] && [values objectForKey: @"EndTime"])
|
||||
bodyFormat = [self labelForKey: (@"%{Organizer} %{SentByText}has cancelled"
|
||||
@" this event: %{Summary}.\n\n"
|
||||
@"Start: %{StartDate} at %{StartTime}\n"
|
||||
@"End: %{EndDate} at %{EndTime}\n"
|
||||
@"Description: %{Description}")
|
||||
inContext: context];
|
||||
else
|
||||
bodyFormat = [self labelForKey: (@"%{Organizer} %{SentByText}has cancelled"
|
||||
@" this event: %{Summary}.\n\n"
|
||||
@"Start: %{StartDate}\n"
|
||||
@"End: %{EndDate}\n"
|
||||
@"Description: %{Description}")
|
||||
inContext: context];
|
||||
|
||||
return [values keysWithFormat: bodyFormat];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2010 Inverse
|
||||
Copyright (C) 2010-2012 Inverse
|
||||
|
||||
This file is part of SOGo
|
||||
|
||||
@@ -54,8 +54,20 @@
|
||||
if (!values)
|
||||
[self setupValues];
|
||||
|
||||
bodyFormat = [self labelForKey: @"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
|
||||
inContext: context];
|
||||
if ([values objectForKey: @"StartTime"] && [values objectForKey: @"EndTime"])
|
||||
bodyFormat = [self labelForKey: (@"%{Organizer} %{SentByText}has invited you"
|
||||
@" to %{Summary}.\n\n"
|
||||
@"Start: %{StartDate} at %{StartTime}\n"
|
||||
@"End: %{EndDate} at %{EndTime}\n"
|
||||
@"Description: %{Description}")
|
||||
inContext: context];
|
||||
else
|
||||
bodyFormat = [self labelForKey: (@"%{Organizer} %{SentByText}has invited you"
|
||||
@" to %{Summary}.\n\n"
|
||||
@"Start: %{StartDate}\n"
|
||||
@"End: %{EndDate}\n"
|
||||
@"Description: %{Description}")
|
||||
inContext: context];
|
||||
|
||||
return [values keysWithFormat: bodyFormat];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2006-2010 Inverse inc.
|
||||
Copyright (C) 2006-2012 Inverse inc.
|
||||
Copyright (C) 2000-2005 SKYRIX Software AG
|
||||
|
||||
This file is part of SOGo.
|
||||
@@ -209,14 +209,16 @@
|
||||
date = [self newStartDate];
|
||||
[values setObject: [dateFormatter shortFormattedDate: date]
|
||||
forKey: @"StartDate"];
|
||||
[values setObject: [dateFormatter formattedTime: date]
|
||||
forKey: @"StartTime"];
|
||||
if (![apt isAllDay])
|
||||
[values setObject: [dateFormatter formattedTime: date]
|
||||
forKey: @"StartTime"];
|
||||
|
||||
date = [self newEndDate];
|
||||
[values setObject: [dateFormatter shortFormattedDate: date]
|
||||
forKey: @"EndDate"];
|
||||
[values setObject: [dateFormatter formattedTime: date]
|
||||
forKey: @"EndTime"];
|
||||
if (![apt isAllDay])
|
||||
[values setObject: [dateFormatter formattedTime: date]
|
||||
forKey: @"EndTime"];
|
||||
|
||||
description = [[self apt] comment];
|
||||
[values setObject: (description ? description : @"")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SOGoAptMailReceipt.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2009 Inverse inc.
|
||||
* Copyright (C) 2009-2012 Inverse inc.
|
||||
*
|
||||
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
*
|
||||
@@ -146,9 +146,12 @@ static NSCharacterSet *wsSet = nil;
|
||||
|
||||
formatter = [currentUser dateFormatterInContext: context];
|
||||
|
||||
return [NSString stringWithFormat: @"%@ - %@",
|
||||
[formatter formattedDate: tzDate],
|
||||
[formatter formattedTime: tzDate]];
|
||||
if ([apt isAllDay])
|
||||
return [formatter formattedDate: tzDate];
|
||||
else
|
||||
return [NSString stringWithFormat: @"%@ - %@",
|
||||
[formatter formattedDate: tzDate],
|
||||
[formatter formattedTime: tzDate]];
|
||||
}
|
||||
|
||||
- (NSString *) aptStartDate
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2010 Inverse
|
||||
Copyright (C) 2010-2012 Inverse
|
||||
|
||||
This file is part of SOGo
|
||||
|
||||
@@ -131,8 +131,10 @@
|
||||
date = [self oldStartDate];
|
||||
[values setObject: [dateFormatter shortFormattedDate: date]
|
||||
forKey: @"OldStartDate"];
|
||||
[values setObject: [dateFormatter formattedTime: date]
|
||||
forKey: @"OldStartTime"];
|
||||
|
||||
if (![apt isAllDay])
|
||||
[values setObject: [dateFormatter formattedTime: date]
|
||||
forKey: @"OldStartTime"];
|
||||
|
||||
[self _setupBodyValuesWithFormatter: dateFormatter];
|
||||
}
|
||||
@@ -144,10 +146,16 @@
|
||||
if (!values)
|
||||
[self setupValues];
|
||||
|
||||
subjectFormat = [self labelForKey: @"The appointment \"%{Summary}\" for the"
|
||||
@" %{OldStartDate} at"
|
||||
@" %{OldStartTime} has changed"
|
||||
inContext: context];
|
||||
if ([values objectForKey: @"OldStartTime"])
|
||||
subjectFormat = [self labelForKey: (@"The appointment \"%{Summary}\" for the"
|
||||
@" %{OldStartDate} at"
|
||||
@" %{OldStartTime} has changed")
|
||||
inContext: context];
|
||||
else
|
||||
subjectFormat = [self labelForKey: (@"The appointment \"%{Summary}\" for the"
|
||||
@" %{OldStartDate}"
|
||||
@" has changed")
|
||||
inContext: context];
|
||||
|
||||
return [values keysWithFormat: subjectFormat];
|
||||
}
|
||||
|
||||
@@ -103,44 +103,51 @@
|
||||
sourceID = [udSource objectForKey: @"id"];
|
||||
if ([sourceID length] > 0)
|
||||
{
|
||||
type = [[udSource objectForKey: @"type"] lowercaseString];
|
||||
c = NSClassFromString([_registry sourceClassForType: type]);
|
||||
sogoSource = [c sourceFromUDSource: udSource inDomain: domain];
|
||||
if (sourceID)
|
||||
[_sources setObject: sogoSource forKey: sourceID];
|
||||
else
|
||||
[self errorWithFormat: @"id field missing in an user source,"
|
||||
@" check the SOGoUserSources defaults"];
|
||||
metadata = [NSMutableDictionary dictionary];
|
||||
if (domain)
|
||||
[metadata setObject: domain forKey: @"domain"];
|
||||
value = [udSource objectForKey: @"canAuthenticate"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"canAuthenticate"];
|
||||
value = [udSource objectForKey: @"isAddressBook"];
|
||||
if (value)
|
||||
{
|
||||
[metadata setObject: value forKey: @"isAddressBook"];
|
||||
isAddressBook = [value boolValue];
|
||||
}
|
||||
else
|
||||
isAddressBook = NO;
|
||||
value = [udSource objectForKey: @"displayName"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"displayName"];
|
||||
if ([_sourcesMetadata objectForKey: sourceID])
|
||||
[self errorWithFormat: @"attempted to register a contact/user source"
|
||||
@" with duplicated id (%@)", sourceID];
|
||||
else
|
||||
{
|
||||
if (isAddressBook)
|
||||
[self errorWithFormat: @"addressbook source '%@' has"
|
||||
@" no displayname", sourceID];
|
||||
type = [[udSource objectForKey: @"type"] lowercaseString];
|
||||
c = NSClassFromString([_registry sourceClassForType: type]);
|
||||
sogoSource = [c sourceFromUDSource: udSource inDomain: domain];
|
||||
if (sourceID)
|
||||
[_sources setObject: sogoSource forKey: sourceID];
|
||||
else
|
||||
[self errorWithFormat: @"id field missing in an user source,"
|
||||
@" check the SOGoUserSources defaults"];
|
||||
metadata = [NSMutableDictionary dictionary];
|
||||
if (domain)
|
||||
[metadata setObject: domain forKey: @"domain"];
|
||||
value = [udSource objectForKey: @"canAuthenticate"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"canAuthenticate"];
|
||||
value = [udSource objectForKey: @"isAddressBook"];
|
||||
if (value)
|
||||
{
|
||||
[metadata setObject: value forKey: @"isAddressBook"];
|
||||
isAddressBook = [value boolValue];
|
||||
}
|
||||
else
|
||||
isAddressBook = NO;
|
||||
value = [udSource objectForKey: @"displayName"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"displayName"];
|
||||
else
|
||||
{
|
||||
if (isAddressBook)
|
||||
[self errorWithFormat: @"addressbook source '%@' has"
|
||||
@" no displayname", sourceID];
|
||||
}
|
||||
value = [udSource objectForKey: @"MailFieldNames"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"MailFieldNames"];
|
||||
value = [udSource objectForKey: @"SearchFieldNames"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"SearchFieldNames"];
|
||||
|
||||
[_sourcesMetadata setObject: metadata forKey: sourceID];
|
||||
}
|
||||
value = [udSource objectForKey: @"MailFieldNames"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"MailFieldNames"];
|
||||
value = [udSource objectForKey: @"SearchFieldNames"];
|
||||
if (value)
|
||||
[metadata setObject: value forKey: @"SearchFieldNames"];
|
||||
[_sourcesMetadata setObject: metadata forKey: sourceID];
|
||||
}
|
||||
else
|
||||
[self errorWithFormat: @"attempted to register a contact/user source"
|
||||
|
||||
Reference in new issue
Block a user