propagate from branch 'ca.inverse.sogo.1_3_12' (head 7d5711d36b09624f7b8bf3747c0b7c2d743b3d00)
to branch 'ca.inverse.sogo' (head 15b9d9900d3605d1920661f52678d25d93c587ef) Monotone-Parent: 15b9d9900d3605d1920661f52678d25d93c587ef Monotone-Parent: 7d5711d36b09624f7b8bf3747c0b7c2d743b3d00 Monotone-Revision: ac81d77fda86dad3ce300e48e20f65bd639b24cb Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2012-02-03T16:59:00 Monotone-Branch: ca.inverse.sogomaint-2.0.2
commit
b9266a4e53
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
<<<<<<< variant A
|
||||||
|
2012-02-02 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* UI/MailerUI/UIxMailMainFrame.m (-composeAction): recipient
|
||||||
|
addresses are now passed as a JSON-formatted string.
|
||||||
|
|
||||||
|
* UI/MailerUI/UIxMailAccountActions.m (-composeAction): the
|
||||||
|
received "mailto" parameter is now a JSON-formatted string; we
|
||||||
|
parse it accordingly.
|
||||||
|
|
||||||
|
>>>>>>> variant B
|
||||||
2012-02-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2012-02-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* OpenChange/MAPIStoreSOGo.m (sogo_backend_create_root_folder):
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_create_root_folder):
|
||||||
|
@ -38,6 +49,8 @@
|
||||||
* OpenChange/MAPIApplication.m (-setUserContext:): do not retain
|
* OpenChange/MAPIApplication.m (-setUserContext:): do not retain
|
||||||
the user context.
|
the user context.
|
||||||
|
|
||||||
|
####### Ancestor
|
||||||
|
======= end
|
||||||
2012-02-01 Francis Lachapelle <flachapelle@inverse.ca>
|
2012-02-01 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL):
|
* UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL):
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2012-02-03 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* iCalDailyRecurrenceCalculator.m
|
||||||
|
(-recurrenceRangesWithinCalendarDateRange): handle the case
|
||||||
|
where the occurrence start date doesn't cover the reference period
|
||||||
|
but the end date does.
|
||||||
|
|
||||||
2012-01-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2012-01-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* NSString+NGCards.m (-asCardAttributeValues): fixed a leak by
|
* NSString+NGCards.m (-asCardAttributeValues): fixed a leak by
|
||||||
|
|
|
@ -144,9 +144,12 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wrongDay == NO &&
|
if (wrongDay == NO)
|
||||||
([startDate compare: currentStartDate] == NSOrderedAscending ||
|
{
|
||||||
[startDate compare: currentStartDate] == NSOrderedSame))
|
currentEndDate = [currentStartDate addTimeInterval: [firstRange duration]];
|
||||||
|
if ([startDate compare: currentStartDate] == NSOrderedAscending ||
|
||||||
|
[startDate compare: currentStartDate] == NSOrderedSame ||
|
||||||
|
[startDate compare: currentEndDate] == NSOrderedAscending)
|
||||||
{
|
{
|
||||||
NGCalendarDateRange *r;
|
NGCalendarDateRange *r;
|
||||||
|
|
||||||
|
@ -158,13 +161,13 @@
|
||||||
|
|
||||||
if (isFirStart == YES || wrongDay == NO)
|
if (isFirStart == YES || wrongDay == NO)
|
||||||
{
|
{
|
||||||
currentEndDate = [currentStartDate addTimeInterval: [firstRange duration]];
|
|
||||||
r = [NGCalendarDateRange calendarDateRangeWithStartDate: currentStartDate
|
r = [NGCalendarDateRange calendarDateRangeWithStartDate: currentStartDate
|
||||||
endDate: currentEndDate];
|
endDate: currentEndDate];
|
||||||
if ([_r containsDateRange: r] || [_r doesIntersectWithDateRange: r])
|
if ([_r containsDateRange: r] || [_r doesIntersectWithDateRange: r])
|
||||||
[ranges addObject: r];
|
[ranges addObject: r];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
currentStartDate = [firStart dateByAddingYears: 0 months: 0
|
currentStartDate = [firStart dateByAddingYears: 0 months: 0
|
||||||
days: (interval * i)];
|
days: (interval * i)];
|
||||||
|
|
|
@ -392,7 +392,7 @@
|
||||||
ignoringAttendees: (NSArray *) attendees
|
ignoringAttendees: (NSArray *) attendees
|
||||||
fromOldEvent: (iCalEvent *) oldEvent
|
fromOldEvent: (iCalEvent *) oldEvent
|
||||||
{
|
{
|
||||||
NSMutableArray *updateAttendees, *updateUIDs;
|
NSMutableArray *updateAttendees;
|
||||||
NSEnumerator *enumerator;
|
NSEnumerator *enumerator;
|
||||||
iCalPerson *currentAttendee;
|
iCalPerson *currentAttendee;
|
||||||
NSString *currentUID;
|
NSString *currentUID;
|
||||||
|
@ -400,7 +400,6 @@
|
||||||
updateAttendees = [NSMutableArray arrayWithArray: [newEvent attendees]];
|
updateAttendees = [NSMutableArray arrayWithArray: [newEvent attendees]];
|
||||||
[updateAttendees removeObjectsInArray: attendees];
|
[updateAttendees removeObjectsInArray: attendees];
|
||||||
|
|
||||||
updateUIDs = [NSMutableArray arrayWithCapacity: [updateAttendees count]];
|
|
||||||
enumerator = [updateAttendees objectEnumerator];
|
enumerator = [updateAttendees objectEnumerator];
|
||||||
while ((currentAttendee = [enumerator nextObject]))
|
while ((currentAttendee = [enumerator nextObject]))
|
||||||
{
|
{
|
||||||
|
|
|
@ -73,6 +73,15 @@
|
||||||
"delegate is a participant" = "The delegate is already a participant.";
|
"delegate is a participant" = "The delegate is already a participant.";
|
||||||
"delegate is a group" = "The specified address corresponds to a group. You can only delegate to a unique person.";
|
"delegate is a group" = "The specified address corresponds to a group. You can only delegate to a unique person.";
|
||||||
|
|
||||||
|
"Snooze for " = "Snooze for ";
|
||||||
|
"5 minutes" = "5 minutes";
|
||||||
|
"10 minutes" = "10 minutes";
|
||||||
|
"15 minutes" = "15 minutes";
|
||||||
|
"30 minutes" = "30 minutes";
|
||||||
|
"45 minutes" = "45 minutes";
|
||||||
|
"1 hour" = "1 hour";
|
||||||
|
|
||||||
|
|
||||||
/* common buttons */
|
/* common buttons */
|
||||||
"OK" = "OK";
|
"OK" = "OK";
|
||||||
"Cancel" = "Cancel";
|
"Cancel" = "Cancel";
|
||||||
|
|
|
@ -73,6 +73,15 @@
|
||||||
"delegate is a participant" = "Le délégué est déjà un participant.";
|
"delegate is a participant" = "Le délégué est déjà un participant.";
|
||||||
"delegate is a group" = "L'adresse spécifiée correspond à un groupe. Vous ne pouvez déléguer qu'à une personne.";
|
"delegate is a group" = "L'adresse spécifiée correspond à un groupe. Vous ne pouvez déléguer qu'à une personne.";
|
||||||
|
|
||||||
|
"Snooze for " = "Rappel dans ";
|
||||||
|
"5 minutes" = "5 minutes";
|
||||||
|
"10 minutes" = "10 minutes";
|
||||||
|
"15 minutes" = "15 minutes";
|
||||||
|
"30 minutes" = "30 minutes";
|
||||||
|
"45 minutes" = "45 minutes";
|
||||||
|
"1 hour" = "1 heure";
|
||||||
|
|
||||||
|
|
||||||
/* common buttons */
|
/* common buttons */
|
||||||
"OK" = "OK";
|
"OK" = "OK";
|
||||||
"Cancel" = "Annuler";
|
"Cancel" = "Annuler";
|
||||||
|
|
|
@ -212,7 +212,7 @@
|
||||||
SOGoDraftsFolder *drafts;
|
SOGoDraftsFolder *drafts;
|
||||||
SOGoDraftObject *newDraftMessage;
|
SOGoDraftObject *newDraftMessage;
|
||||||
NSString *urlBase, *url, *value, *signature;
|
NSString *urlBase, *url, *value, *signature;
|
||||||
NSArray *mailTo;
|
id mailTo;
|
||||||
NSMutableDictionary *headers;
|
NSMutableDictionary *headers;
|
||||||
BOOL save;
|
BOOL save;
|
||||||
|
|
||||||
|
@ -225,10 +225,13 @@
|
||||||
value = [[self request] formValueForKey: @"mailto"];
|
value = [[self request] formValueForKey: @"mailto"];
|
||||||
if ([value length] > 0)
|
if ([value length] > 0)
|
||||||
{
|
{
|
||||||
mailTo = [[value stringByUnescapingURL] componentsSeparatedByString: @","];
|
mailTo = [[value stringByUnescapingURL] objectFromJSONString];
|
||||||
[headers setObject: mailTo forKey: @"to"];
|
if (mailTo && [mailTo isKindOfClass: [NSArray class]])
|
||||||
|
{
|
||||||
|
[headers setObject: (NSArray *) mailTo forKey: @"to"];
|
||||||
save = YES;
|
save = YES;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
value = [[self request] formValueForKey: @"subject"];
|
value = [[self request] formValueForKey: @"subject"];
|
||||||
if ([value length] > 0)
|
if ([value length] > 0)
|
||||||
|
|
|
@ -251,7 +251,7 @@
|
||||||
|
|
||||||
if ([addresses count] > 0)
|
if ([addresses count] > 0)
|
||||||
parameters = [NSString stringWithFormat: @"?mailto=%@",
|
parameters = [NSString stringWithFormat: @"?mailto=%@",
|
||||||
[addresses componentsJoinedByString: @","]];
|
[addresses jsonRepresentation]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ([[request formValues] objectForKey: @"mailto"])
|
else if ([[request formValues] objectForKey: @"mailto"])
|
||||||
|
|
|
@ -109,17 +109,15 @@ DIV#filtersListWrapper
|
||||||
top: 174px;
|
top: 174px;
|
||||||
left: 2em; }
|
left: 2em; }
|
||||||
|
|
||||||
|
DIV#filtersListWrapper TD,
|
||||||
|
DIV.bottomToolbar
|
||||||
|
{ -khtml-user-select: none;
|
||||||
|
-moz-user-select: none; }
|
||||||
|
|
||||||
TABLE#filtersList
|
TABLE#filtersList
|
||||||
{ width: 100%;
|
{ width: 100%;
|
||||||
cursor: default; }
|
cursor: default; }
|
||||||
|
|
||||||
TR.filterListRow
|
|
||||||
{ background: #ccddec;
|
|
||||||
cursor: pointer; }
|
|
||||||
|
|
||||||
TD.filterListCell
|
|
||||||
{ -moz-user-select: none; }
|
|
||||||
|
|
||||||
TH#activeTableHeader
|
TH#activeTableHeader
|
||||||
{ width: 50px;
|
{ width: 50px;
|
||||||
text-align: center; }
|
text-align: center; }
|
||||||
|
|
|
@ -364,6 +364,8 @@ function onFilterMoveDown(event) {
|
||||||
function onFilterEdit(event) {
|
function onFilterEdit(event) {
|
||||||
_editFilter(this.rowIndex - 1);
|
_editFilter(this.rowIndex - 1);
|
||||||
event.stop();
|
event.stop();
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function copyFilter(originalFilter) {
|
function copyFilter(originalFilter) {
|
||||||
|
|
|
@ -535,9 +535,6 @@ DIV.dTreeNode SPAN._dragOver
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
INPUT.checkBox
|
|
||||||
{ vertical-align: middle; }
|
|
||||||
|
|
||||||
/* resizable columns */
|
/* resizable columns */
|
||||||
|
|
||||||
TABLE TD.resize-handle-active,
|
TABLE TD.resize-handle-active,
|
||||||
|
@ -814,9 +811,7 @@ SPAN.caption
|
||||||
|
|
||||||
DIV.tabsContainer
|
DIV.tabsContainer
|
||||||
{ overflow: hidden;
|
{ overflow: hidden;
|
||||||
padding: 0px 5px;
|
padding: 0px 5px; }
|
||||||
-moz-user-select: none;
|
|
||||||
-khtml-user-select: none; }
|
|
||||||
|
|
||||||
DIV.tabsContainer > DIV.scrollToolbar
|
DIV.tabsContainer > DIV.scrollToolbar
|
||||||
{ position: absolute;
|
{ position: absolute;
|
||||||
|
|
|
@ -84,6 +84,16 @@ DIV#editorTabs TABLE.frame INPUT.textField
|
||||||
INPUT.textField._invalid, INPUT.comboBoxField._invalid
|
INPUT.textField._invalid, INPUT.comboBoxField._invalid
|
||||||
{ background: #f00 !important; }
|
{ background: #f00 !important; }
|
||||||
|
|
||||||
|
/* SchedulerUI */
|
||||||
|
|
||||||
|
DIV.eventInside.tentative,
|
||||||
|
DIV.eventInside.needs-action
|
||||||
|
{ filter: alpha(opacity=70); }
|
||||||
|
|
||||||
|
DIV.eventInside.delegated,
|
||||||
|
DIV.eventInside.declined
|
||||||
|
{ filter: alpha(opacity=40); }
|
||||||
|
|
||||||
/* UIxAppointmentEditor */
|
/* UIxAppointmentEditor */
|
||||||
|
|
||||||
DIV#attendeesMenu LI.separator
|
DIV#attendeesMenu LI.separator
|
||||||
|
|
|
@ -75,7 +75,7 @@ case "$1" in
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
log_daemon_msg "Stopping $DESC" "$NAME"
|
log_daemon_msg "Stopping $DESC" "$NAME"
|
||||||
start-stop-daemon --stop --pidfile $PIDFILE --retry=TERM/20/KILL/5
|
start-stop-daemon --stop --pidfile $PIDFILE --retry=TERM/20/KILL/5 --oknodo
|
||||||
log_end_msg 0
|
log_end_msg 0
|
||||||
;;
|
;;
|
||||||
restart|force-reload)
|
restart|force-reload)
|
||||||
|
|
Loading…
Reference in New Issue