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.sogo
maint-2.0.2
Francis Lachapelle 2012-02-03 16:59:00 +00:00
commit b9266a4e53
13 changed files with 88 additions and 40 deletions

View File

@ -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>
* OpenChange/MAPIStoreSOGo.m (sogo_backend_create_root_folder):
@ -38,6 +49,8 @@
* OpenChange/MAPIApplication.m (-setUserContext:): do not retain
the user context.
####### Ancestor
======= end
2012-02-01 Francis Lachapelle <flachapelle@inverse.ca>
* UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL):

View File

@ -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>
* NSString+NGCards.m (-asCardAttributeValues): fixed a leak by

View File

@ -144,26 +144,29 @@
break;
}
if (wrongDay == NO &&
([startDate compare: currentStartDate] == NSOrderedAscending ||
[startDate compare: currentStartDate] == NSOrderedSame))
{
NGCalendarDateRange *r;
if (wrongDay == NO)
{
currentEndDate = [currentStartDate addTimeInterval: [firstRange duration]];
if ([startDate compare: currentStartDate] == NSOrderedAscending ||
[startDate compare: currentStartDate] == NSOrderedSame ||
[startDate compare: currentEndDate] == NSOrderedAscending)
{
NGCalendarDateRange *r;
if (isFirStart == NO && dayMask && repeatCount == 0)
{
if (![dayMask occursOnDay: [currentStartDate dayOfWeek]])
wrongDay = YES;
}
if (isFirStart == YES || wrongDay == NO)
{
currentEndDate = [currentStartDate addTimeInterval: [firstRange duration]];
r = [NGCalendarDateRange calendarDateRangeWithStartDate: currentStartDate
endDate: currentEndDate];
if ([_r containsDateRange: r] || [_r doesIntersectWithDateRange: r])
[ranges addObject: r];
}
if (isFirStart == NO && dayMask && repeatCount == 0)
{
if (![dayMask occursOnDay: [currentStartDate dayOfWeek]])
wrongDay = YES;
}
if (isFirStart == YES || wrongDay == NO)
{
r = [NGCalendarDateRange calendarDateRangeWithStartDate: currentStartDate
endDate: currentEndDate];
if ([_r containsDateRange: r] || [_r doesIntersectWithDateRange: r])
[ranges addObject: r];
}
}
}
currentStartDate = [firStart dateByAddingYears: 0 months: 0

View File

@ -392,7 +392,7 @@
ignoringAttendees: (NSArray *) attendees
fromOldEvent: (iCalEvent *) oldEvent
{
NSMutableArray *updateAttendees, *updateUIDs;
NSMutableArray *updateAttendees;
NSEnumerator *enumerator;
iCalPerson *currentAttendee;
NSString *currentUID;
@ -400,7 +400,6 @@
updateAttendees = [NSMutableArray arrayWithArray: [newEvent attendees]];
[updateAttendees removeObjectsInArray: attendees];
updateUIDs = [NSMutableArray arrayWithCapacity: [updateAttendees count]];
enumerator = [updateAttendees objectEnumerator];
while ((currentAttendee = [enumerator nextObject]))
{

View File

@ -73,6 +73,15 @@
"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.";
"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 */
"OK" = "OK";
"Cancel" = "Cancel";

View File

@ -73,6 +73,15 @@
"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.";
"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 */
"OK" = "OK";
"Cancel" = "Annuler";

View File

@ -212,7 +212,7 @@
SOGoDraftsFolder *drafts;
SOGoDraftObject *newDraftMessage;
NSString *urlBase, *url, *value, *signature;
NSArray *mailTo;
id mailTo;
NSMutableDictionary *headers;
BOOL save;
@ -225,9 +225,12 @@
value = [[self request] formValueForKey: @"mailto"];
if ([value length] > 0)
{
mailTo = [[value stringByUnescapingURL] componentsSeparatedByString: @","];
[headers setObject: mailTo forKey: @"to"];
save = YES;
mailTo = [[value stringByUnescapingURL] objectFromJSONString];
if (mailTo && [mailTo isKindOfClass: [NSArray class]])
{
[headers setObject: (NSArray *) mailTo forKey: @"to"];
save = YES;
}
}
value = [[self request] formValueForKey: @"subject"];

View File

@ -251,7 +251,7 @@
if ([addresses count] > 0)
parameters = [NSString stringWithFormat: @"?mailto=%@",
[addresses componentsJoinedByString: @","]];
[addresses jsonRepresentation]];
}
}
else if ([[request formValues] objectForKey: @"mailto"])

View File

@ -109,17 +109,15 @@ DIV#filtersListWrapper
top: 174px;
left: 2em; }
DIV#filtersListWrapper TD,
DIV.bottomToolbar
{ -khtml-user-select: none;
-moz-user-select: none; }
TABLE#filtersList
{ width: 100%;
cursor: default; }
TR.filterListRow
{ background: #ccddec;
cursor: pointer; }
TD.filterListCell
{ -moz-user-select: none; }
TH#activeTableHeader
{ width: 50px;
text-align: center; }

View File

@ -364,6 +364,8 @@ function onFilterMoveDown(event) {
function onFilterEdit(event) {
_editFilter(this.rowIndex - 1);
event.stop();
return false;
}
function copyFilter(originalFilter) {

View File

@ -535,9 +535,6 @@ DIV.dTreeNode SPAN._dragOver
color: #fff;
}
INPUT.checkBox
{ vertical-align: middle; }
/* resizable columns */
TABLE TD.resize-handle-active,
@ -814,9 +811,7 @@ SPAN.caption
DIV.tabsContainer
{ overflow: hidden;
padding: 0px 5px;
-moz-user-select: none;
-khtml-user-select: none; }
padding: 0px 5px; }
DIV.tabsContainer > DIV.scrollToolbar
{ position: absolute;

View File

@ -84,6 +84,16 @@ DIV#editorTabs TABLE.frame INPUT.textField
INPUT.textField._invalid, INPUT.comboBoxField._invalid
{ 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 */
DIV#attendeesMenu LI.separator

2
debian/sogo.init vendored
View File

@ -75,7 +75,7 @@ case "$1" in
;;
stop)
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
;;
restart|force-reload)