Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/tasks.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraimund-schluessler <raimund.schluessler@googlemail.com>2014-04-27 19:34:35 +0400
committerraimund-schluessler <raimund.schluessler@googlemail.com>2014-04-27 19:34:35 +0400
commit34dd3b2aa5a3a023663f7cec1f15b0ce0be92826 (patch)
treedfc8f7b05687a0f44c30af0c81edea1df42bf120
parent910d0938c8161b3b77c3a311df7e9859a9b5fbaf (diff)
Setting reminders of type Date-Time
-rw-r--r--css/style.css23
-rw-r--r--css/style.less22
-rw-r--r--js/app/app.coffee22
-rw-r--r--js/app/controllers/detailscontroller.coffee59
-rw-r--r--js/app/controllers/taskscontroller.coffee2
-rw-r--r--js/app/directives/timepicker.coffee7
-rw-r--r--js/app/filters/dateTaskList.coffee (renamed from js/app/filters/timeDetails.coffee)11
-rw-r--r--js/app/filters/reminderDetails.coffee39
-rw-r--r--js/app/services/businesslayer/tasksbusinesslayer.coffee104
-rw-r--r--js/app/services/models/tasksmodel.coffee6
-rw-r--r--js/app/services/persistence.coffee30
-rw-r--r--js/public/app.js298
-rw-r--r--l10n/de.php26
-rw-r--r--lib/controller/taskscontroller.php50
-rw-r--r--lib/helper.php19
-rw-r--r--templates/part.details.php15
16 files changed, 515 insertions, 218 deletions
diff --git a/css/style.css b/css/style.css
index 54119023..109014ac 100644
--- a/css/style.css
+++ b/css/style.css
@@ -837,6 +837,14 @@
border: 1px solid rgba(43, 136, 217, 0.65);
box-shadow: 0 0 4px rgba(43, 136, 217, 0.32), 0 1px 1px rgba(255, 255, 255, 0.43), 0 2px 4px rgba(43, 136, 217, 0.12) inset, 0 0 4px rgba(43, 136, 217, 0.2) inset;
}
+#task-details .body .section select {
+ background-color: rgba(0, 0, 0, 0);
+ border-radius: 0px;
+ border: 1px solid #CCC;
+ padding: 0;
+ width: 100px;
+ font-weight: normal;
+}
#task-details .body .section .icon {
left: 16px;
position: absolute;
@@ -907,9 +915,6 @@
#task-details .body .section.detail-reminder.date .section-description {
display: block;
}
-#task-details .body .section.detail-reminder.date .section-title {
- margin-top: -2px;
-}
input,
textarea {
-moz-user-select: text;
@@ -953,6 +958,14 @@ input.timepicker-input {
td.ui-timepicker-hours table {
border-right: 1px solid #CCCCCC;
}
+.ui-timepicker table td a.ui-state-active {
+ background: -moz-linear-gradient(center top, #33a3ef, #168ad4) repeat scroll 0 0 transparent !important;
+ border-radius: 3px 3px 3px 3px;
+ color: white;
+ opacity: 1;
+ position: relative;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);
+}
.ui-datepicker,
.ui-timepicker {
width: 185px;
@@ -1039,9 +1052,7 @@ td.ui-timepicker-hours table {
color: #2289DA;
}
.ui-datepicker table td.selected a,
-.ui-timepicker table td.selected a,
-.ui-datepicker table td a.ui-state-active,
-.ui-timepicker table td a.ui-state-active {
+.ui-timepicker table td.selected a {
background: -moz-linear-gradient(center top, #33a3ef, #168ad4) repeat scroll 0 0 transparent !important;
border-radius: 3px 3px 3px 3px;
color: white;
diff --git a/css/style.less b/css/style.less
index e47845f5..d34814c1 100644
--- a/css/style.less
+++ b/css/style.less
@@ -871,6 +871,14 @@
box-shadow: 0 0 4px rgba(43, 136, 217, 0.32), 0 1px 1px rgba(255, 255, 255, 0.43), 0 2px 4px rgba(43, 136, 217, 0.12) inset, 0 0 4px rgba(43, 136, 217, 0.2) inset;
}
}
+ select{
+ background-color: rgba(0, 0, 0, 0);
+ border-radius: 0px;
+ border: 1px solid #CCC;
+ padding:0;
+ width: 100px;
+ font-weight: normal;
+ }
.icon{
left: 16px;
position: absolute;
@@ -947,7 +955,7 @@
display: block;
}
.section-title{
- margin-top:-2px;
+ // margin-top:-2px;
}
}
}
@@ -1001,6 +1009,16 @@ input.timepicker-input{
td.ui-timepicker-hours table{
border-right: 1px solid #CCCCCC;
}
+.ui-timepicker{
+ table td a.ui-state-active{
+ background: -moz-linear-gradient(center top , #33A3EF, #168AD4) repeat scroll 0 0 transparent !important;
+ border-radius: 3px 3px 3px 3px;
+ color: white;
+ opacity: 1;
+ position: relative;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);
+ }
+}
.ui-datepicker, .ui-timepicker {
width: 185px;
.ui-widget-header{
@@ -1074,7 +1092,7 @@ td.ui-timepicker-hours table{
color:#2289DA;
}
}
- &.selected a, a.ui-state-active{
+ &.selected a{
background: -moz-linear-gradient(center top , #33A3EF, #168AD4) repeat scroll 0 0 transparent !important;
border-radius: 3px 3px 3px 3px;
color: white;
diff --git a/js/app/app.coffee b/js/app/app.coffee
index 980ea8ab..5e11f714 100644
--- a/js/app/app.coffee
+++ b/js/app/app.coffee
@@ -78,9 +78,9 @@ angular.module('Tasks').run ['Config', '$timeout',
moment.lang('details', {
calendar: {
- lastDay : '['+t('tasks_enhanced','Due Yesterday')+'], HH:mm'
- sameDay : '['+t('tasks_enhanced','Due Today')+'], HH:mm'
- nextDay : '['+t('tasks_enhanced','Due Tomorrow')+'], HH:mm'
+ lastDay : '['+t('tasks_enhanced','Due yesterday')+'], HH:mm'
+ sameDay : '['+t('tasks_enhanced','Due today')+'], HH:mm'
+ nextDay : '['+t('tasks_enhanced','Due tomorrow')+'], HH:mm'
lastWeek : '['+t('tasks_enhanced', 'Due on')+'] MMM DD, YYYY, HH:mm'
nextWeek : '['+t('tasks_enhanced', 'Due on')+'] MMM DD, YYYY, HH:mm'
sameElse : '['+t('tasks_enhanced', 'Due on')+'] MMM DD, YYYY, HH:mm'
@@ -88,9 +88,9 @@ angular.module('Tasks').run ['Config', '$timeout',
})
moment.lang('start', {
calendar: {
- lastDay : '['+t('tasks_enhanced','Started Yesterday')+'], HH:mm'
- sameDay : '['+t('tasks_enhanced','Starts Today')+'], HH:mm'
- nextDay : '['+t('tasks_enhanced','Starts Tomorrow')+'], HH:mm'
+ lastDay : '['+t('tasks_enhanced','Started yesterday')+'], HH:mm'
+ sameDay : '['+t('tasks_enhanced','Starts today')+'], HH:mm'
+ nextDay : '['+t('tasks_enhanced','Starts tomorrow')+'], HH:mm'
lastWeek : '['+t('tasks_enhanced', 'Started on')+'] MMM DD, YYYY, HH:mm'
nextWeek : '['+t('tasks_enhanced', 'Starts on')+'] MMM DD, YYYY, HH:mm'
sameElse : () ->
@@ -100,6 +100,16 @@ angular.module('Tasks').run ['Config', '$timeout',
'['+t('tasks_enhanced', 'Started on')+'] MMM DD, YYYY, HH:mm'
}
})
+ moment.lang('reminder', {
+ calendar: {
+ lastDay : t('tasks_enhanced', '[Remind me yesterday at ]HH:mm')
+ sameDay : t('tasks_enhanced', '[Remind me today at ]HH:mm')
+ nextDay : t('tasks_enhanced', '[Remind me tomorrow at ]HH:mm')
+ lastWeek : t('tasks_enhanced', '[Remind me on ]MMM DD, YYYY,[ at ]HH:mm')
+ nextWeek : t('tasks_enhanced', '[Remind me on ]MMM DD, YYYY,[ at ]HH:mm')
+ sameElse : t('tasks_enhanced', '[Remind me on ]MMM DD, YYYY,[ at ]HH:mm')
+ }
+ })
moment.lang('tasks', {
calendar: {
lastDay : '['+t('tasks_enhanced','Yesterday')+']'
diff --git a/js/app/controllers/detailscontroller.coffee b/js/app/controllers/detailscontroller.coffee
index a216cd58..c8a4001d 100644
--- a/js/app/controllers/detailscontroller.coffee
+++ b/js/app/controllers/detailscontroller.coffee
@@ -37,6 +37,17 @@ $timeout, $routeParams) ->
_$scope.task = _$tasksmodel.getById(_$scope.route.taskID)
)
+ @_$scope.durations = [
+ {name: t('tasks_enhanced','years'), abbr: 'y'},
+ {name: t('tasks_enhanced','months'), abbr: 'm'},
+ {name: t('tasks_enhanced','days'), abbr: 'd'},
+ {name: t('tasks_enhanced','hours'), abbr: 'h'},
+ {name: t('tasks_enhanced','minutes'), abbr: 'i'},
+ {name: t('tasks_enhanced','seconds'), abbr: 's'}
+ ]
+
+ @_$scope.duration = _$scope.durations[1]
+
@_$scope.closeDetails = () ->
if _$scope.status.searchActive
_$location.path('/search/'+_$scope.route.searchString)
@@ -106,15 +117,15 @@ $timeout, $routeParams) ->
_$scope.endEdit()
@_$scope.deleteDueDate = () ->
- _tasksbusinesslayer.deleteDueDate(_$scope.route.taskID, undefined)
+ _tasksbusinesslayer.deleteDueDate(_$scope.route.taskID)
_$scope.endEdit()
- @_$scope.deleteReminder = () ->
- _tasksbusinesslayer.setReminderDate(_$scope.route.taskID, undefined)
+ @_$scope.deleteStartDate = () ->
+ _tasksbusinesslayer.deleteStartDate(_$scope.route.taskID)
_$scope.endEdit()
- @_$scope.deleteStartDate = () ->
- _tasksbusinesslayer.setStartDate(_$scope.route.taskID, undefined)
+ @_$scope.deleteReminder = () ->
+ _tasksbusinesslayer.deleteReminderDate(_$scope.route.taskID)
_$scope.endEdit()
@_$scope.toggleCompleted = (taskID) ->
@@ -155,24 +166,38 @@ $timeout, $routeParams) ->
,true)
@_$scope.setstartday = (date) ->
- _tasksbusinesslayer.setStartDay(_$scope.route.taskID,
- moment(date,'MM/DD/YYYY'))
+ _tasksbusinesslayer.setStart(_$scope.route.taskID,
+ moment(date,'MM/DD/YYYY'),'day')
@_$scope.setstarttime = (date) ->
- _tasksbusinesslayer.setStartTime(_$scope.route.taskID,
- moment(date,'HH:mm'))
+ _tasksbusinesslayer.setStart(_$scope.route.taskID,
+ moment(date,'HH:mm'),'time')
@_$scope.setdueday = (date) ->
- _tasksbusinesslayer.setDueDay(_$scope.route.taskID,
- moment(date,'MM/DD/YYYY'))
+ _tasksbusinesslayer.setDue(_$scope.route.taskID,
+ moment(date,'MM/DD/YYYY'),'day')
@_$scope.setduetime = (date) ->
- _tasksbusinesslayer.setDueTime(_$scope.route.taskID,
- moment(date,'HH:mm'))
-
- @_$scope.setreminder = (date) ->
- _tasksbusinesslayer.setReminderDate(_$scope.route.taskID,
- moment(date,'MM/DD/YYYY').format('YYYYMMDDTHHmmss'))
+ _tasksbusinesslayer.setDue(_$scope.route.taskID,
+ moment(date,'HH:mm'),'time')
+
+ @_$scope.setreminderday = (date) ->
+ _tasksbusinesslayer.setReminder(_$scope.route.taskID,
+ moment(date,'MM/DD/YYYY'),'day')
+
+ @_$scope.setremindertime = (date) ->
+ _tasksbusinesslayer.setReminder(_$scope.route.taskID,
+ moment(date,'HH:mm'),'time')
+
+ @_$scope.reminderType = (task) ->
+ if !angular.isUndefined(task)
+ if task.reminder == null
+ if moment(task.start, "YYYYMMDDTHHmmss").isValid()
+ return 'DURATION'
+ else
+ return 'DATE-TIME'
+ else
+ return task.reminder.type
return new DetailsController($scope, $window, TasksModel,
TasksBusinessLayer, $route, $location, $timeout, $routeParams)
diff --git a/js/app/controllers/taskscontroller.coffee b/js/app/controllers/taskscontroller.coffee
index bc5cbea4..6bfc7bba 100644
--- a/js/app/controllers/taskscontroller.coffee
+++ b/js/app/controllers/taskscontroller.coffee
@@ -129,7 +129,7 @@ CollectionsModel, TasksBusinessLayer, $location) ->
task = {
tmpID: 'newTask' + Date.now()
- calendarID: undefined
+ calendarID: null
name: taskName
starred: false
due: false
diff --git a/js/app/directives/timepicker.coffee b/js/app/directives/timepicker.coffee
index 75c2b12d..7411d906 100644
--- a/js/app/directives/timepicker.coffee
+++ b/js/app/directives/timepicker.coffee
@@ -30,11 +30,4 @@ angular.module('Tasks').directive 'timepicker', ->
atPosition: 'center bottom'
hourText: t('tasks_enhanced','Hours')
minuteText: t('tasks_enhanced','Minutes')
- # beforeShowDay: (date) ->
- # if (moment(date).startOf('day')
- # .diff(moment(scope.task[attr.datepicker], "YYYYMMDDTHHmmss")
- # .startOf('day'),'days') == 0)
- # return [1,"selected"]
- # else
- # return [1,""]
}) \ No newline at end of file
diff --git a/js/app/filters/timeDetails.coffee b/js/app/filters/dateTaskList.coffee
index 15fc2833..f2fc743a 100644
--- a/js/app/filters/timeDetails.coffee
+++ b/js/app/filters/dateTaskList.coffee
@@ -19,10 +19,9 @@ You should have received a copy of the GNU Affero General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
###
-angular.module('Tasks').filter 'timeDetails', () ->
- (reminder) ->
- if moment(reminder, "YYYYMMDDTHHmmss").isValid()
- return moment(reminder, "YYYYMMDDTHHmmss").
- format('['+t('tasks_enhanced','Remind me at')+'] HH:mm A')
+angular.module('Tasks').filter 'dateTaskList', () ->
+ (due) ->
+ if moment(due, "YYYYMMDDTHHmmss").isValid()
+ return moment(due, "YYYYMMDDTHHmmss").lang('tasks').calendar()
else
- return t('tasks_enhanced', 'Remind me') \ No newline at end of file
+ return '' \ No newline at end of file
diff --git a/js/app/filters/reminderDetails.coffee b/js/app/filters/reminderDetails.coffee
new file mode 100644
index 00000000..346374e7
--- /dev/null
+++ b/js/app/filters/reminderDetails.coffee
@@ -0,0 +1,39 @@
+###
+
+ownCloud - Tasks
+
+@author Raimund Schlüßler
+@copyright 2013
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+License as published by the Free Software Foundation; either
+version 3 of the License, or any later version.
+
+This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
+
+You should have received a copy of the GNU Affero General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+###
+angular.module('Tasks').filter 'reminderDetails', () ->
+ (reminder,scope) ->
+ if !(angular.isUndefined(reminder) || reminder == null)
+ if reminder.type == 'DATE-TIME' &&
+ moment(reminder.date, "YYYYMMDDTHHmmss").isValid()
+ return moment(reminder.date, "YYYYMMDDTHHmmss").lang('reminder').calendar()
+ else if reminder.type == 'DURATION'
+ ds = t('tasks_enhanced', 'Remind me')
+ for token in scope.durations
+ if reminder.duration[token.abbr]
+ ds+=' '+reminder.duration[token.abbr]+' '+t('tasks_enhanced',token.name)
+ if reminder.duration.invert
+ ds+= ' '+t('tasks_enhanced','before')
+ else
+ ds+= ' '+t('tasks_enhanced','after')
+ return ds
+ else
+ return t('tasks_enhanced', 'Remind me') \ No newline at end of file
diff --git a/js/app/services/businesslayer/tasksbusinesslayer.coffee b/js/app/services/businesslayer/tasksbusinesslayer.coffee
index ec6718c7..a472c4fd 100644
--- a/js/app/services/businesslayer/tasksbusinesslayer.coffee
+++ b/js/app/services/businesslayer/tasksbusinesslayer.coffee
@@ -62,65 +62,87 @@ angular.module('Tasks').factory 'TasksBusinessLayer',
@_$tasksmodel.removeById(taskID)
@_persistence.deleteTask(taskID)
- setDueDay: (taskID, day) ->
+ setDue: (taskID, date, type='day') ->
due = moment(@_$tasksmodel.getById(taskID).due, "YYYYMMDDTHHmmss")
- if moment(due).isValid()
- due.year(day.year()).month(day.month()).day(day.day())
- else
- due = day.add('h',12)
-
- @_$tasksmodel.setDueDate(taskID,due.format('YYYYMMDDTHHmmss'))
- @_persistence.setDueDate(taskID,
- if due.isValid() then due.unix() else false)
-
- setDueTime: (taskID, time) ->
- due = moment(@_$tasksmodel.getById(taskID).due, "YYYYMMDDTHHmmss")
- if moment(due).isValid()
- due.hour(time.hour()).minute(time.minute())
+ if type=='day'
+ if moment(due).isValid()
+ due.year(date.year()).month(date.month()).date(date.date())
+ else
+ due = date.add('h',12)
+ else if type == 'time'
+ if moment(due).isValid()
+ due.hour(date.hour()).minute(date.minute())
+ else
+ due = date
else
- due = time
+ return
@_$tasksmodel.setDueDate(taskID,due.format('YYYYMMDDTHHmmss'))
@_persistence.setDueDate(taskID,
if due.isValid() then due.unix() else false)
deleteDueDate: (taskID) ->
- @_$tasksmodel.setDueDate(taskID, undefined)
+ @_$tasksmodel.setDueDate(taskID, null)
@_persistence.setDueDate(taskID, false)
- setStartDay: (taskID, day) ->
- start = moment(@_$tasksmodel.getById(taskID).start, "YYYYMMDDTHHmmss")
- if moment(start).isValid()
- start.year(day.year()).month(day.month()).day(day.day())
- else
- start = day.add('h',12)
-
- @_$tasksmodel.setStartDate(taskID,start.format('YYYYMMDDTHHmmss'))
- @_persistence.setStartDate(taskID,
- if start.isValid() then start.unix() else false)
-
- setStartTime: (taskID, time) ->
+ setStart: (taskID, date, type='day') ->
start = moment(@_$tasksmodel.getById(taskID).start, "YYYYMMDDTHHmmss")
- if moment(start).isValid()
- start.hour(time.hour()).minute(time.minute())
+ if type == 'day'
+ if moment(start).isValid()
+ start.year(date.year()).month(date.month()).date(date.date())
+ else
+ start = date.add('h',12)
+ else if type == 'time'
+ if moment(start).isValid()
+ start.hour(date.hour()).minute(date.minute())
+ else
+ start = date
else
- start = time
+ return
@_$tasksmodel.setStartDate(taskID,start.format('YYYYMMDDTHHmmss'))
@_persistence.setStartDate(taskID,
if start.isValid() then start.unix() else false)
deleteStartDate: (taskID) ->
- @_$tasksmodel.setStartDate(taskID, undefined)
+ @_$tasksmodel.setStartDate(taskID, null)
@_persistence.setStartDate(taskID, false)
-
- setStartDate: (taskID, start) ->
- @_$tasksmodel.setStartDate(taskID,start)
- date = moment(start, "YYYYMMDDTHHmmss")
- @_persistence.setStartDate(taskID,
- if date.isValid() then date.unix() else false)
-
- setReminderDate: (taskID, reminder) ->
- @_$tasksmodel.setReminderDate(taskID,reminder)
+ setReminder: (taskID, date, type='day') ->
+ reminder = @_$tasksmodel.getById(taskID).reminder
+ newreminder = {
+ type: 'DATE-TIME',
+ action: 'DISPLAY',
+ duration: null,
+ trigger: null
+ }
+ if type == 'day'
+ if !(angular.isUndefined(reminder) || reminder == null)
+ reminderdate = moment(reminder.date, "YYYYMMDDTHHmmss")
+ newreminder.action = reminder.action
+ if (reminderdate.isValid() && reminder.type == 'DATE-TIME')
+ reminderdate.year(date.year()).month(date.month()).date(date.date())
+ else
+ reminderdate = date.add('h',12)
+ else
+ reminderdate = date.add('h',12)
+ else if type == 'time'
+ if !(angular.isUndefined(reminder) || reminder == null)
+ reminderdate = moment(reminder.date, "YYYYMMDDTHHmmss")
+ newreminder.action = reminder.action
+ if (reminderdate.isValid() && reminder.type == 'DATE-TIME')
+ reminderdate.hour(date.hour()).minute(date.minute())
+ else
+ reminderdate = date
+ else
+ reminderdate = date
+ else
+ return
+ newreminder.date = reminderdate.format('YYYYMMDDTHHmmss')
+ @_$tasksmodel.setReminderDate(taskID,newreminder)
+ @_persistence.setReminder(taskID,newreminder)
+
+ deleteReminderDate: (taskID) ->
+ @_$tasksmodel.setReminderDate(taskID, null)
+ @_persistence.setReminder(taskID,false)
changeCalendarId: (taskID, calendarID) ->
@_$tasksmodel.changeCalendarId(taskID, calendarID)
diff --git a/js/app/services/models/tasksmodel.coffee b/js/app/services/models/tasksmodel.coffee
index 508e554a..a759c751 100644
--- a/js/app/services/models/tasksmodel.coffee
+++ b/js/app/services/models/tasksmodel.coffee
@@ -122,13 +122,13 @@ angular.module('Tasks').factory 'TasksModel',
uncomplete: (taskID) ->
@update({id:taskID,completed:false,
- completed_date:undefined})
+ completed_date:null})
setDueDate: (taskID,date) ->
@update({id:taskID,due:date})
- setReminderDate: (taskID,date) ->
- @update({id:taskID,reminder:{date:date}})
+ setReminderDate: (taskID,reminder) ->
+ @update({id:taskID,reminder:reminder})
setStartDate: (taskID,date) ->
@update({id:taskID,start:date})
diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee
index 14630b6b..ab07ed88 100644
--- a/js/app/services/persistence.coffee
+++ b/js/app/services/persistence.coffee
@@ -183,12 +183,30 @@ angular.module('Tasks').factory 'Persistence',
@_request.post '/apps/tasks_enhanced/tasks/{taskID}/start', params
- setReminderDate: (taskID, reminder) ->
- params =
- routeParams:
- taskID: taskID
- data:
- reminder: reminder
+ setReminder: (taskID, reminder) ->
+ if reminder == false
+ params =
+ routeParams:
+ taskID: taskID
+ data:
+ type: false
+ else if reminder.type == 'DATE-TIME'
+ params =
+ routeParams:
+ taskID: taskID
+ data:
+ type: reminder.type
+ action: reminder.action
+ date: moment(reminder.date, 'YYYYMMDDTHHmmss').unix()
+ else if reminder.type == 'DURATION'
+ params =
+ routeParams:
+ taskID: taskID
+ data:
+ type: reminder.type
+ action: reminder.action
+ duration: reminder.duration
+ else return
@_request.post '/apps/tasks_enhanced/tasks/{taskID}/reminder', params
diff --git a/js/public/app.js b/js/public/app.js
index ac8c4b67..cd3b312b 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -74,9 +74,9 @@
})();
moment.lang('details', {
calendar: {
- lastDay: '[' + t('tasks_enhanced', 'Due Yesterday') + '], HH:mm',
- sameDay: '[' + t('tasks_enhanced', 'Due Today') + '], HH:mm',
- nextDay: '[' + t('tasks_enhanced', 'Due Tomorrow') + '], HH:mm',
+ lastDay: '[' + t('tasks_enhanced', 'Due yesterday') + '], HH:mm',
+ sameDay: '[' + t('tasks_enhanced', 'Due today') + '], HH:mm',
+ nextDay: '[' + t('tasks_enhanced', 'Due tomorrow') + '], HH:mm',
lastWeek: '[' + t('tasks_enhanced', 'Due on') + '] MMM DD, YYYY, HH:mm',
nextWeek: '[' + t('tasks_enhanced', 'Due on') + '] MMM DD, YYYY, HH:mm',
sameElse: '[' + t('tasks_enhanced', 'Due on') + '] MMM DD, YYYY, HH:mm'
@@ -84,9 +84,9 @@
});
moment.lang('start', {
calendar: {
- lastDay: '[' + t('tasks_enhanced', 'Started Yesterday') + '], HH:mm',
- sameDay: '[' + t('tasks_enhanced', 'Starts Today') + '], HH:mm',
- nextDay: '[' + t('tasks_enhanced', 'Starts Tomorrow') + '], HH:mm',
+ lastDay: '[' + t('tasks_enhanced', 'Started yesterday') + '], HH:mm',
+ sameDay: '[' + t('tasks_enhanced', 'Starts today') + '], HH:mm',
+ nextDay: '[' + t('tasks_enhanced', 'Starts tomorrow') + '], HH:mm',
lastWeek: '[' + t('tasks_enhanced', 'Started on') + '] MMM DD, YYYY, HH:mm',
nextWeek: '[' + t('tasks_enhanced', 'Starts on') + '] MMM DD, YYYY, HH:mm',
sameElse: function() {
@@ -98,6 +98,16 @@
}
}
});
+ moment.lang('reminder', {
+ calendar: {
+ lastDay: t('tasks_enhanced', '[Remind me yesterday at ]HH:mm'),
+ sameDay: t('tasks_enhanced', '[Remind me today at ]HH:mm'),
+ nextDay: t('tasks_enhanced', '[Remind me tomorrow at ]HH:mm'),
+ lastWeek: t('tasks_enhanced', '[Remind me on ]MMM DD, YYYY,[ at ]HH:mm'),
+ nextWeek: t('tasks_enhanced', '[Remind me on ]MMM DD, YYYY,[ at ]HH:mm'),
+ sameElse: t('tasks_enhanced', '[Remind me on ]MMM DD, YYYY,[ at ]HH:mm')
+ }
+ });
moment.lang('tasks', {
calendar: {
lastDay: '[' + t('tasks_enhanced', 'Yesterday') + ']',
@@ -337,6 +347,28 @@
this._$scope.$on('$routeChangeSuccess', function() {
return _$scope.task = _$tasksmodel.getById(_$scope.route.taskID);
});
+ this._$scope.durations = [
+ {
+ name: t('tasks_enhanced', 'years'),
+ abbr: 'y'
+ }, {
+ name: t('tasks_enhanced', 'months'),
+ abbr: 'm'
+ }, {
+ name: t('tasks_enhanced', 'days'),
+ abbr: 'd'
+ }, {
+ name: t('tasks_enhanced', 'hours'),
+ abbr: 'h'
+ }, {
+ name: t('tasks_enhanced', 'minutes'),
+ abbr: 'i'
+ }, {
+ name: t('tasks_enhanced', 'seconds'),
+ abbr: 's'
+ }
+ ];
+ this._$scope.duration = _$scope.durations[1];
this._$scope.closeDetails = function() {
if (_$scope.status.searchActive) {
return _$location.path('/search/' + _$scope.route.searchString);
@@ -402,15 +434,15 @@
}
};
this._$scope.deleteDueDate = function() {
- _tasksbusinesslayer.deleteDueDate(_$scope.route.taskID, void 0);
+ _tasksbusinesslayer.deleteDueDate(_$scope.route.taskID);
return _$scope.endEdit();
};
- this._$scope.deleteReminder = function() {
- _tasksbusinesslayer.setReminderDate(_$scope.route.taskID, void 0);
+ this._$scope.deleteStartDate = function() {
+ _tasksbusinesslayer.deleteStartDate(_$scope.route.taskID);
return _$scope.endEdit();
};
- this._$scope.deleteStartDate = function() {
- _tasksbusinesslayer.setStartDate(_$scope.route.taskID, void 0);
+ this._$scope.deleteReminder = function() {
+ _tasksbusinesslayer.deleteReminderDate(_$scope.route.taskID);
return _$scope.endEdit();
};
this._$scope.toggleCompleted = function(taskID) {
@@ -456,19 +488,35 @@
}
}, true);
this._$scope.setstartday = function(date) {
- return _tasksbusinesslayer.setStartDay(_$scope.route.taskID, moment(date, 'MM/DD/YYYY'));
+ return _tasksbusinesslayer.setStart(_$scope.route.taskID, moment(date, 'MM/DD/YYYY'), 'day');
};
this._$scope.setstarttime = function(date) {
- return _tasksbusinesslayer.setStartTime(_$scope.route.taskID, moment(date, 'HH:mm'));
+ return _tasksbusinesslayer.setStart(_$scope.route.taskID, moment(date, 'HH:mm'), 'time');
};
this._$scope.setdueday = function(date) {
- return _tasksbusinesslayer.setDueDay(_$scope.route.taskID, moment(date, 'MM/DD/YYYY'));
+ return _tasksbusinesslayer.setDue(_$scope.route.taskID, moment(date, 'MM/DD/YYYY'), 'day');
};
this._$scope.setduetime = function(date) {
- return _tasksbusinesslayer.setDueTime(_$scope.route.taskID, moment(date, 'HH:mm'));
+ return _tasksbusinesslayer.setDue(_$scope.route.taskID, moment(date, 'HH:mm'), 'time');
};
- this._$scope.setreminder = function(date) {
- return _tasksbusinesslayer.setReminderDate(_$scope.route.taskID, moment(date, 'MM/DD/YYYY').format('YYYYMMDDTHHmmss'));
+ this._$scope.setreminderday = function(date) {
+ return _tasksbusinesslayer.setReminder(_$scope.route.taskID, moment(date, 'MM/DD/YYYY'), 'day');
+ };
+ this._$scope.setremindertime = function(date) {
+ return _tasksbusinesslayer.setReminder(_$scope.route.taskID, moment(date, 'HH:mm'), 'time');
+ };
+ this._$scope.reminderType = function(task) {
+ if (!angular.isUndefined(task)) {
+ if (task.reminder === null) {
+ if (moment(task.start, "YYYYMMDDTHHmmss").isValid()) {
+ return 'DURATION';
+ } else {
+ return 'DATE-TIME';
+ }
+ } else {
+ return task.reminder.type;
+ }
+ }
};
}
@@ -776,7 +824,7 @@
_$scope.isAddingTask = true;
task = {
tmpID: 'newTask' + Date.now(),
- calendarID: void 0,
+ calendarID: null,
name: taskName,
starred: false,
due: false,
@@ -951,73 +999,113 @@
return this._persistence.deleteTask(taskID);
};
- TasksBusinessLayer.prototype.setDueDay = function(taskID, day) {
+ TasksBusinessLayer.prototype.setDue = function(taskID, date, type) {
var due;
- due = moment(this._$tasksmodel.getById(taskID).due, "YYYYMMDDTHHmmss");
- if (moment(due).isValid()) {
- due.year(day.year()).month(day.month()).day(day.day());
- } else {
- due = day.add('h', 12);
+ if (type == null) {
+ type = 'day';
}
- this._$tasksmodel.setDueDate(taskID, due.format('YYYYMMDDTHHmmss'));
- return this._persistence.setDueDate(taskID, due.isValid() ? due.unix() : false);
- };
-
- TasksBusinessLayer.prototype.setDueTime = function(taskID, time) {
- var due;
due = moment(this._$tasksmodel.getById(taskID).due, "YYYYMMDDTHHmmss");
- if (moment(due).isValid()) {
- due.hour(time.hour()).minute(time.minute());
+ if (type === 'day') {
+ if (moment(due).isValid()) {
+ due.year(date.year()).month(date.month()).date(date.date());
+ } else {
+ due = date.add('h', 12);
+ }
+ } else if (type === 'time') {
+ if (moment(due).isValid()) {
+ due.hour(date.hour()).minute(date.minute());
+ } else {
+ due = date;
+ }
} else {
- due = time;
+ return;
}
this._$tasksmodel.setDueDate(taskID, due.format('YYYYMMDDTHHmmss'));
return this._persistence.setDueDate(taskID, due.isValid() ? due.unix() : false);
};
TasksBusinessLayer.prototype.deleteDueDate = function(taskID) {
- this._$tasksmodel.setDueDate(taskID, void 0);
+ this._$tasksmodel.setDueDate(taskID, null);
return this._persistence.setDueDate(taskID, false);
};
- TasksBusinessLayer.prototype.setStartDay = function(taskID, day) {
+ TasksBusinessLayer.prototype.setStart = function(taskID, date, type) {
var start;
- start = moment(this._$tasksmodel.getById(taskID).start, "YYYYMMDDTHHmmss");
- if (moment(start).isValid()) {
- start.year(day.year()).month(day.month()).day(day.day());
- } else {
- start = day.add('h', 12);
+ if (type == null) {
+ type = 'day';
}
- this._$tasksmodel.setStartDate(taskID, start.format('YYYYMMDDTHHmmss'));
- return this._persistence.setStartDate(taskID, start.isValid() ? start.unix() : false);
- };
-
- TasksBusinessLayer.prototype.setStartTime = function(taskID, time) {
- var start;
start = moment(this._$tasksmodel.getById(taskID).start, "YYYYMMDDTHHmmss");
- if (moment(start).isValid()) {
- start.hour(time.hour()).minute(time.minute());
+ if (type === 'day') {
+ if (moment(start).isValid()) {
+ start.year(date.year()).month(date.month()).date(date.date());
+ } else {
+ start = date.add('h', 12);
+ }
+ } else if (type === 'time') {
+ if (moment(start).isValid()) {
+ start.hour(date.hour()).minute(date.minute());
+ } else {
+ start = date;
+ }
} else {
- start = time;
+ return;
}
this._$tasksmodel.setStartDate(taskID, start.format('YYYYMMDDTHHmmss'));
return this._persistence.setStartDate(taskID, start.isValid() ? start.unix() : false);
};
TasksBusinessLayer.prototype.deleteStartDate = function(taskID) {
- this._$tasksmodel.setStartDate(taskID, void 0);
+ this._$tasksmodel.setStartDate(taskID, null);
return this._persistence.setStartDate(taskID, false);
};
- TasksBusinessLayer.prototype.setStartDate = function(taskID, start) {
- var date;
- this._$tasksmodel.setStartDate(taskID, start);
- date = moment(start, "YYYYMMDDTHHmmss");
- return this._persistence.setStartDate(taskID, date.isValid() ? date.unix() : false);
+ TasksBusinessLayer.prototype.setReminder = function(taskID, date, type) {
+ var newreminder, reminder, reminderdate;
+ if (type == null) {
+ type = 'day';
+ }
+ reminder = this._$tasksmodel.getById(taskID).reminder;
+ newreminder = {
+ type: 'DATE-TIME',
+ action: 'DISPLAY',
+ duration: null,
+ trigger: null
+ };
+ if (type === 'day') {
+ if (!(angular.isUndefined(reminder) || reminder === null)) {
+ reminderdate = moment(reminder.date, "YYYYMMDDTHHmmss");
+ newreminder.action = reminder.action;
+ if (reminderdate.isValid() && reminder.type === 'DATE-TIME') {
+ reminderdate.year(date.year()).month(date.month()).date(date.date());
+ } else {
+ reminderdate = date.add('h', 12);
+ }
+ } else {
+ reminderdate = date.add('h', 12);
+ }
+ } else if (type === 'time') {
+ if (!(angular.isUndefined(reminder) || reminder === null)) {
+ reminderdate = moment(reminder.date, "YYYYMMDDTHHmmss");
+ newreminder.action = reminder.action;
+ if (reminderdate.isValid() && reminder.type === 'DATE-TIME') {
+ reminderdate.hour(date.hour()).minute(date.minute());
+ } else {
+ reminderdate = date;
+ }
+ } else {
+ reminderdate = date;
+ }
+ } else {
+ return;
+ }
+ newreminder.date = reminderdate.format('YYYYMMDDTHHmmss');
+ this._$tasksmodel.setReminderDate(taskID, newreminder);
+ return this._persistence.setReminder(taskID, newreminder);
};
- TasksBusinessLayer.prototype.setReminderDate = function(taskID, reminder) {
- return this._$tasksmodel.setReminderDate(taskID, reminder);
+ TasksBusinessLayer.prototype.deleteReminderDate = function(taskID) {
+ this._$tasksmodel.setReminderDate(taskID, null);
+ return this._persistence.setReminder(taskID, false);
};
TasksBusinessLayer.prototype.changeCalendarId = function(taskID, calendarID) {
@@ -1505,7 +1593,7 @@
return this.update({
id: taskID,
completed: false,
- completed_date: void 0
+ completed_date: null
});
};
@@ -1516,12 +1604,10 @@
});
};
- TasksModel.prototype.setReminderDate = function(taskID, date) {
+ TasksModel.prototype.setReminderDate = function(taskID, reminder) {
return this.update({
id: taskID,
- reminder: {
- date: date
- }
+ reminder: reminder
});
};
@@ -1807,16 +1893,42 @@
return this._request.post('/apps/tasks_enhanced/tasks/{taskID}/start', params);
};
- Persistence.prototype.setReminderDate = function(taskID, reminder) {
+ Persistence.prototype.setReminder = function(taskID, reminder) {
var params;
- params = {
- routeParams: {
- taskID: taskID
- },
- data: {
- reminder: reminder
- }
- };
+ if (reminder === false) {
+ params = {
+ routeParams: {
+ taskID: taskID
+ },
+ data: {
+ type: false
+ }
+ };
+ } else if (reminder.type === 'DATE-TIME') {
+ params = {
+ routeParams: {
+ taskID: taskID
+ },
+ data: {
+ type: reminder.type,
+ action: reminder.action,
+ date: moment(reminder.date, 'YYYYMMDDTHHmmss').unix()
+ }
+ };
+ } else if (reminder.type === 'DURATION') {
+ params = {
+ routeParams: {
+ taskID: taskID
+ },
+ data: {
+ type: reminder.type,
+ action: reminder.action,
+ duration: reminder.duration
+ }
+ };
+ } else {
+ return;
+ }
return this._request.post('/apps/tasks_enhanced/tasks/{taskID}/reminder', params);
};
@@ -1991,6 +2103,37 @@
}).call(this);
(function() {
+ angular.module('Tasks').filter('reminderDetails', function() {
+ return function(reminder, scope) {
+ var ds, token, _i, _len, _ref;
+ if (!(angular.isUndefined(reminder) || reminder === null)) {
+ if (reminder.type === 'DATE-TIME' && moment(reminder.date, "YYYYMMDDTHHmmss").isValid()) {
+ return moment(reminder.date, "YYYYMMDDTHHmmss").lang('reminder').calendar();
+ } else if (reminder.type === 'DURATION') {
+ ds = t('tasks_enhanced', 'Remind me');
+ _ref = scope.durations;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ token = _ref[_i];
+ if (reminder.duration[token.abbr]) {
+ ds += ' ' + reminder.duration[token.abbr] + ' ' + t('tasks_enhanced', token.name);
+ }
+ }
+ if (reminder.duration.invert) {
+ ds += ' ' + t('tasks_enhanced', 'before');
+ } else {
+ ds += ' ' + t('tasks_enhanced', 'after');
+ }
+ return ds;
+ }
+ } else {
+ return t('tasks_enhanced', 'Remind me');
+ }
+ };
+ });
+
+}).call(this);
+
+(function() {
angular.module('Tasks').filter('startDetails', function() {
return function(due) {
if (moment(due, "YYYYMMDDTHHmmss").isValid()) {
@@ -2027,19 +2170,6 @@
}).call(this);
(function() {
- angular.module('Tasks').filter('timeDetails', function() {
- return function(reminder) {
- if (moment(reminder, "YYYYMMDDTHHmmss").isValid()) {
- return moment(reminder, "YYYYMMDDTHHmmss").format('[' + t('tasks_enhanced', 'Remind me at') + '] HH:mm A');
- } else {
- return t('tasks_enhanced', 'Remind me');
- }
- };
- });
-
-}).call(this);
-
-(function() {
angular.module('Tasks').filter('timeTaskList', function() {
return function(due) {
if (moment(due, "YYYYMMDDTHHmmss").isValid()) {
diff --git a/l10n/de.php b/l10n/de.php
index 606a7acf..2e3439b7 100644
--- a/l10n/de.php
+++ b/l10n/de.php
@@ -7,24 +7,36 @@
"Done" => "Erledigt",
"All" => "Alle",
"Current" => "Aktuell",
+"years" => "Jahre",
+"months" => "Monate",
+"weeks" => "Wochen",
+"days" => "Tage",
"Hours" => "Stunden",
+"hours" => "Stunden",
"Minutes" => "Minuten",
+"minutes" => "Minuten",
+"seconds" => "Sekunden",
+"before" => "vorher",
+"after" => "danach",
"Week" => "Woche",
"Add Task" => "Task hinzufügen",
"Set due date" => "Fälligkeitsdatum auswählen",
"Remind me" => "Erinnere mich",
-"Remind me at" => "Erinnere mich um",
+'[Remind me yesterday at ]HH:mm' => '[Erinnere mich gestern um ]HH:mm',
+'[Remind me today at ]HH:mm' => '[Erinnere mich heute um ]HH:mm',
+'[Remind me tomorrow at ]HH:mm' => '[Erinnere mich morgen um ]HH:mm',
+'[Remind me on ]MMM DD, YYYY,[ at ]HH:mm' => '[Erinnere mich am ]MMM DD, YYYY,[ um ]HH:mm',
"Add Subtask" => "Teilaufgabe hinzufügen",
"Add List..." => "Liste hinzufügen...",
"Due on" => "Fällig am",
-"Due Yesterday" => "Zu erledigen Gestern",
-"Due Today" => "Zu erledigen Heute",
-"Due Tomorrow" => "Zu erledigen Morgen",
+"Due yesterday" => "Zu erledigen gestern",
+"Due today" => "Zu erledigen heute",
+"Due tomorrow" => "Zu erledigen morgen",
"Starts on" => "Beginnt am",
"Started on" => "Begann am",
-"Started Yesterday" => "Begann gestern",
-"Starts Today" => "Beginnt heute",
-"Starts Tomorrow" => "Beginnt morgen",
+"Started yesterday" => "Begann gestern",
+"Starts today" => "Beginnt heute",
+"Starts tomorrow" => "Beginnt morgen",
"Set start date" => "Beginn auswählen",
"Yesterday" => "Gestern",
"Tomorrow" => "Morgen",
diff --git a/lib/controller/taskscontroller.php b/lib/controller/taskscontroller.php
index f7b0481d..c4b6f1c0 100644
--- a/lib/controller/taskscontroller.php
+++ b/lib/controller/taskscontroller.php
@@ -343,35 +343,45 @@ class TasksController extends Controller {
*/
public function setReminderDate(){
$taskId = $this->params('taskID');
- $reminder = $this->params('reminder');
- $remindertype = $this->params('reminder_type');
+ $type = $this->params('type');
+ $action = $this->params('action');
+ // $date = $this->params('date');
$response = new JSONResponse();
- try{
- $vcalendar = \OC_Calendar_App::getVCalendar($taskId);
- $vtodo = $vcalendar->VTODO;
- $valarm = $vtodo->VALARM;
- if ($reminder != 'false'){
+
+ $types = array('DATE-TIME','DURATION');
+
+ $vcalendar = \OC_Calendar_App::getVCalendar($taskId);
+ $vtodo = $vcalendar->VTODO;
+ $valarm = $vtodo->VALARM;
+
+ if ($type == false){
+ unset($vtodo->VALARM);
+ \OC_Calendar_Object::edit($taskId, $vcalendar->serialize());
+ }
+ elseif (in_array($type,$types)) {
+ try{
if($valarm == null) {
- $valarm = new OC_VObject('VALARM');
-
- $valarm->setString('ACTION', $remindertype);
+ $valarm = new \OC_VObject('VALARM');
+ $valarm->setString('ACTION', $action);
$valarm->setString('DESCRIPTION', 'Default Event Notification');
$valarm->setString('');
-
- $vevent->add($valarm);
+ $vtodo->add($valarm);
} else {
unset($valarm->TRIGGER);
}
-
- $valarm->addProperty('TRIGGER', $reminder, array('VALUE' => 'DURATION'));
-
- } else {
- if($valarm != null) {
- unset($vevent->VALARM);
+ $triggervalue = '';
+ if ($type == 'DATE-TIME') {
+ $date = new \DateTime('@'.$this->params('date'));
+ $triggervalue = $date->format('Ymd\THis\Z');
+ } elseif ($type == 'DURATION') {
+ // TODO
+ $triggervalue = '-PT5M';
}
- }
- } catch (\Exception $e) {
+ $valarm->addProperty('TRIGGER', $triggervalue, array('VALUE' => $type));
+ \OC_Calendar_Object::edit($taskId, $vcalendar->serialize());
+ } catch (\Exception $e) {
+ }
}
return $response;
diff --git a/lib/helper.php b/lib/helper.php
index ddc29f85..86165bf2 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -46,11 +46,11 @@ Class helper {
$start->setTimezone(new \DateTimeZone($user_timezone));
$task['start'] = $start->format('Ymd\THis');
} catch(\Exception $e) {
- $task['start'] = 'undefined';
+ $task['start'] = null;
\OCP\Util::writeLog('tasks_enhanced', $e->getMessage(), \OCP\Util::ERROR);
}
} else {
- $task['start'] = 'undefined';
+ $task['start'] = null;
}
$due = $vtodo->DUE;
if ($due) {
@@ -59,11 +59,11 @@ Class helper {
$due->setTimezone(new \DateTimeZone($user_timezone));
$task['due'] = $due->format('Ymd\THis');
} catch(\Exception $e) {
- $task['due'] = 'undefined';
+ $task['due'] = null;
\OCP\Util::writeLog('tasks_enhanced', $e->getMessage(), \OCP\Util::ERROR);
}
} else {
- $task['due'] = 'undefined';
+ $task['due'] = null;
}
$reminder = $vtodo->VALARM;
if($reminder) {
@@ -72,17 +72,19 @@ Class helper {
$reminderType = $reminder->TRIGGER['VALUE']->value;
$reminderTrigger = $reminder->TRIGGER->value;
$reminderAction = $reminder->ACTION->value;
+ $parsed1 = null;
if($reminderType == 'DATE-TIME'){
$reminderDate = $reminder->TRIGGER->getDateTime();
$reminderDate->setTimezone(new \DateTimeZone($user_timezone));
$reminderDate = $reminderDate->format('Ymd\THis');
} elseif ($reminderType == 'DURATION' && $start) {
+ $parsed_complete = VObject\DateTimeParser::parseDuration($reminder->TRIGGER);
$parsed = VObject\DateTimeParser::parseDuration($reminder->TRIGGER,true);
// Calculate the reminder date from duration and start date
$reminderDate = $start->modify($parsed)->format('Ymd\THis');
} else {
- $reminderDate = 'undefined';
+ $reminderDate = null;
}
@@ -90,15 +92,16 @@ Class helper {
'type' => $reminderType,
'trigger' => $reminderTrigger,
'action' => $reminderAction,
- 'date' => $reminderDate
+ 'date' => $reminderDate,
+ 'duration' => $parsed_complete
);
} catch(\Exception $e) {
- $task['reminder'] = 'undefined';
+ $task['reminder'] = null;
\OCP\Util::writeLog('tasks_enhanced', $e->getMessage(), \OCP\Util::ERROR);
}
} else {
- $task['reminder'] = 'undefined';
+ $task['reminder'] = null;
}
$starred = $vtodo->getAsString('PRIORITY');
if($starred){
diff --git a/templates/part.details.php b/templates/part.details.php
index e1f73c69..08f1d642 100644
--- a/templates/part.details.php
+++ b/templates/part.details.php
@@ -50,15 +50,22 @@
<!-- oc-click-focus="{selector: 'div.detail-reminder input.datepicker-input', timeout: 0}" -->
<span class="icon detail-reminder" ng-class="{'overdue':isOverDue(task.reminder.date)}"></span>
<div class="section-title" ng-class="{'overdue':isOverDue(task.reminder.date)}" ng-hide="route.parameter=='reminder'">
- <text rel="">{{ task.reminder.date | timeDetails }}</text>
+ <text rel="">{{ task.reminder | reminderDetails:this }}</text>
</div>
- <div class="section-description" ng-hide="route.parameter=='reminder'">{{ task.reminder.date | dateDetailsShort }}</div>
+ <!-- <div class="section-description" ng-hide="route.parameter=='reminder'">{{ task.reminder.date | dateDetailsShort }}</div> -->
<a class="detail-delete" ng-click="deleteReminder()" stop-event="click">
<span class="icon detail-delete"></span>
</a>
<span class="icon detail-save" ng-click="endEdit()" stop-event="click"></span>
- <div class="section-edit" ng-show="route.parameter=='reminder'">
- <input class="datepicker-input medium focus" type="text" key-value="" value="{{ task.reminder.date | dateTaskList }}" datepicker="reminder">
+ <div class="section-edit" ng-show="route.parameter=='reminder'" ng-switch='reminderType(task)'>
+ <div ng-switch-when="DATE-TIME">
+ <input class="datepicker-input medium focus" type="text" key-value="" placeholder="dd.mm.yyyy" value="{{ task.reminder.date | dateTaskList }}" datepicker="reminder">
+ <input class="timepicker-input medium focus" type="text" key-value="" placeholder="hh:mm" value="{{ task.reminder.date | timeTaskList }}" timepicker="reminder" stop-event="click">
+ </div>
+ <div ng-switch-when="DURATION">
+ <input class="datepicker-input medium focus" type="text" key-value="" placeholder="" value="">
+ <select ng-model="duration" ng-options="duration.name for duration in durations"></select>
+ </div>
</div>
</div>
<!-- <ul class="subtasks buffer"></ul> -->