Tasks: Due date without time support added

This commit is contained in:
Bart Visscher 2012-04-20 22:56:59 +02:00
parent 1384be4bff
commit 3d68732657
3 changed files with 22 additions and 8 deletions

View File

@ -23,18 +23,24 @@ switch($property) {
break; break;
case 'due': case 'due':
$due = $_POST['due']; $due = $_POST['due'];
$due_date_only = $_POST['date'];
$type = null;
if ($due != 'false') { if ($due != 'false') {
try { try {
$timezone = OC_Preferences::getValue(OC_User::getUser(), 'calendar', 'timezone', date_default_timezone_get()); $timezone = OC_Preferences::getValue(OC_User::getUser(), 'calendar', 'timezone', date_default_timezone_get());
$timezone = new DateTimeZone($timezone); $timezone = new DateTimeZone($timezone);
$due = new DateTime('@'.$due); $due = new DateTime('@'.$due);
$due->setTimezone($timezone); $due->setTimezone($timezone);
$type = Sabre_VObject_Element_DateTime::LOCALTZ;
if ($due_date_only) {
$type = Sabre_VObject_Element_DateTime::DATE;
}
} catch (Exception $e) { } catch (Exception $e) {
OC_JSON::error(array('data'=>array('message'=>OC_Task_App::$l10n->t('Invalid date/time')))); OC_JSON::error(array('data'=>array('message'=>OC_Task_App::$l10n->t('Invalid date/time'))));
exit(); exit();
} }
} }
$vtodo->setDateTime('DUE', $due); $vtodo->setDateTime('DUE', $due, $type);
break; break;
case 'complete': case 'complete':
$checked = $_POST['checked']; $checked = $_POST['checked'];

View File

@ -85,8 +85,10 @@ OC.Tasks = {
if (task.due){ if (task.due){
var date = new Date(parseInt(task.due)*1000); var date = new Date(parseInt(task.due)*1000);
due.find('.date').datepicker('setDate', date); due.find('.date').datepicker('setDate', date);
if (!task.due_date_only) {
due.find('.time').timepicker('setTime', date.getHours()+':'+date.getMinutes()); due.find('.time').timepicker('setTime', date.getHours()+':'+date.getMinutes());
} }
}
$('<div>') $('<div>')
.addClass('more') .addClass('more')
.append(description) .append(description)
@ -186,16 +188,21 @@ OC.Tasks = {
var $date = $(this).parent().children('.date'); var $date = $(this).parent().children('.date');
var $time = $(this).parent().children('.time'); var $time = $(this).parent().children('.time');
var date = $date.datepicker('getDate'); var date = $date.datepicker('getDate');
var time = $time.timepicker('getTime').split(':'); var time = $time.val().split(':');
var due; var due, date_only = false;
if (!date || time.length<2){ if (!date){
due = false; due = false;
} else { } else {
if (time.length==2){
date.setHours(time[0]); date.setHours(time[0]);
date.setMinutes(time[1]); date.setMinutes(time[1]);
}
else {
date_only = true;
}
due = date.getTime()/1000; 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') { if(jsondata.status != 'success') {
task.due = old_due; task.due = old_due;
} }

View File

@ -52,6 +52,7 @@ class OC_Task_App {
$task['categories'] = $vtodo->getAsArray('CATEGORIES'); $task['categories'] = $vtodo->getAsArray('CATEGORIES');
$due = $vtodo->DUE; $due = $vtodo->DUE;
if ($due) { if ($due) {
$task['due_date_only'] = $due->getDateType() == Sabre_VObject_Element_DateTime::DATE;
$due = $due->getDateTime(); $due = $due->getDateTime();
$due->setTimezone(new DateTimeZone($user_timezone)); $due->setTimezone(new DateTimeZone($user_timezone));
$task['due'] = $due->format('U'); $task['due'] = $due->format('U');