diff --git a/NEWS b/NEWS index f9e554a46..6991e7400 100644 --- a/NEWS +++ b/NEWS @@ -46,6 +46,7 @@ Bug fixes - [web] replaced checkboxes in menu by a custom checkmark (#3557) - [web] fixed attachments display when forwarding a message (#3560) - [web] activate new calendar subscriptions by default + - [web] keep specified task status when not completed (#3499) - [eas] allow EAS attachments get on 2nd-level mailboxes (#3505) - [eas] fix EAS bday shift (#3518) diff --git a/SoObjects/Appointments/iCalToDo+SOGo.m b/SoObjects/Appointments/iCalToDo+SOGo.m index a64e7c21a..7cb00323e 100644 --- a/SoObjects/Appointments/iCalToDo+SOGo.m +++ b/SoObjects/Appointments/iCalToDo+SOGo.m @@ -187,11 +187,15 @@ // Handle completed date o = [data objectForKey: @"completedDate"]; if ([o isKindOfClass: [NSString class]] && [o length]) - completedDate = [self dateFromString: o inContext: context]; + { + completedDate = [self dateFromString: o inContext: context]; - o = [data objectForKey: @"completedTime"]; - if ([o isKindOfClass: [NSString class]] && [o length]) - [self adjustDate: &completedDate withTimeString: o inContext: context]; + o = [data objectForKey: @"completedTime"]; + if ([o isKindOfClass: [NSString class]] && [o length]) + [self adjustDate: &completedDate withTimeString: o inContext: context]; + } + else + [(iCalDateTime *) [self uniqueChildWithTag: @"completed"] setDateTime: nil]; o = [self status]; if ([o length]) diff --git a/UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox b/UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox index 9a79347cf..da921366c 100644 --- a/UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox +++ b/UI/Templates/SchedulerUI/UIxTaskEditorTemplate.wox @@ -137,7 +137,7 @@
+ label:md-placeholder="Due"> @@ -152,7 +152,7 @@
-
+
@@ -161,10 +161,9 @@ - - - - +
diff --git a/UI/WebServerResources/js/Scheduler/Component.service.js b/UI/WebServerResources/js/Scheduler/Component.service.js index 43a455ec1..65a1548a2 100644 --- a/UI/WebServerResources/js/Scheduler/Component.service.js +++ b/UI/WebServerResources/js/Scheduler/Component.service.js @@ -470,7 +470,7 @@ if (this.component == 'vevent') this.type = 'appointment'; - else if (this.component == 'vtoto') + else if (this.component == 'vtodo') this.type = 'task'; if (this.startDate) { @@ -497,6 +497,11 @@ if (this.dueDate) this.due = Component.$parseDate(this.dueDate); + if (this.completedDate) + this.completed = Component.$parseDate(this.completedDate); + else if (this.type == 'task') + this.completed = new Date(); + if (this.c_category) this.categories = _.invokeMap(this.c_category, 'asCSSIdentifier'); @@ -1059,6 +1064,7 @@ component.endTime = component.end ? component.end.format(dlp, '%H:%M') : ''; component.dueDate = component.due ? component.due.format(dlp, '%Y-%m-%d') : ''; component.dueTime = component.due ? component.due.format(dlp, '%H:%M') : ''; + component.completedDate = component.completed ? component.completed.format(dlp, '%Y-%m-%d') : ''; // Update recurrence definition depending on selections if (this.$hasCustomRepeat) { @@ -1093,6 +1099,8 @@ // Check status if (this.status == 'not-specified') delete component.status; + else if (this.status != 'completed') + delete component.completedDate; // Verify alarm if (this.$hasAlarm) {