From 3d68732657dee0e131bb54c6ca4c4052cce7ce2f Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Fri, 20 Apr 2012 22:56:59 +0200 Subject: [PATCH] Tasks: Due date without time support added --- apps/tasks/ajax/update_property.php | 8 +++++++- apps/tasks/js/tasks.js | 21 ++++++++++++++------- apps/tasks/lib/app.php | 1 + 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/apps/tasks/ajax/update_property.php b/apps/tasks/ajax/update_property.php index 66ff34f848..2ce5f1a1f5 100644 --- a/apps/tasks/ajax/update_property.php +++ b/apps/tasks/ajax/update_property.php @@ -23,18 +23,24 @@ switch($property) { break; case 'due': $due = $_POST['due']; + $due_date_only = $_POST['date']; + $type = null; if ($due != 'false') { try { $timezone = OC_Preferences::getValue(OC_User::getUser(), 'calendar', 'timezone', date_default_timezone_get()); $timezone = new DateTimeZone($timezone); $due = new DateTime('@'.$due); $due->setTimezone($timezone); + $type = Sabre_VObject_Element_DateTime::LOCALTZ; + if ($due_date_only) { + $type = Sabre_VObject_Element_DateTime::DATE; + } } catch (Exception $e) { OC_JSON::error(array('data'=>array('message'=>OC_Task_App::$l10n->t('Invalid date/time')))); exit(); } } - $vtodo->setDateTime('DUE', $due); + $vtodo->setDateTime('DUE', $due, $type); break; case 'complete': $checked = $_POST['checked']; diff --git a/apps/tasks/js/tasks.js b/apps/tasks/js/tasks.js index 9866250322..684f671e41 100644 --- a/apps/tasks/js/tasks.js +++ b/apps/tasks/js/tasks.js @@ -85,7 +85,9 @@ OC.Tasks = { if (task.due){ var date = new Date(parseInt(task.due)*1000); due.find('.date').datepicker('setDate', date); - due.find('.time').timepicker('setTime', date.getHours()+':'+date.getMinutes()); + if (!task.due_date_only) { + due.find('.time').timepicker('setTime', date.getHours()+':'+date.getMinutes()); + } } $('
') .addClass('more') @@ -186,16 +188,21 @@ OC.Tasks = { var $date = $(this).parent().children('.date'); var $time = $(this).parent().children('.time'); var date = $date.datepicker('getDate'); - var time = $time.timepicker('getTime').split(':'); - var due; - if (!date || time.length<2){ + var time = $time.val().split(':'); + var due, date_only = false; + if (!date){ due = false; } else { - date.setHours(time[0]); - date.setMinutes(time[1]); + if (time.length==2){ + date.setHours(time[0]); + date.setMinutes(time[1]); + } + else { + date_only = true; + } due = date.getTime()/1000; } - $.post('ajax/update_property.php', {id:task.id, type:'due', due:due}, function(jsondata){ + $.post('ajax/update_property.php', {id:task.id, type:'due', due:due, date:date_only?1:0}, function(jsondata){ if(jsondata.status != 'success') { task.due = old_due; } diff --git a/apps/tasks/lib/app.php b/apps/tasks/lib/app.php index ae7efc3788..32d924c10d 100644 --- a/apps/tasks/lib/app.php +++ b/apps/tasks/lib/app.php @@ -52,6 +52,7 @@ class OC_Task_App { $task['categories'] = $vtodo->getAsArray('CATEGORIES'); $due = $vtodo->DUE; if ($due) { + $task['due_date_only'] = $due->getDateType() == Sabre_VObject_Element_DateTime::DATE; $due = $due->getDateTime(); $due->setTimezone(new DateTimeZone($user_timezone)); $task['due'] = $due->format('U');