Tasks: Mark task as complete when checking the checkbox

remotes/origin/stable4
Bart Visscher 13 years ago
parent 19d81068f6
commit 947d2e5705
  1. 24
      apps/tasks/ajax/complete.php
  2. 1
      apps/tasks/css/style.css
  3. 24
      apps/tasks/js/tasks.js
  4. 10
      apps/tasks/lib/app.php

@ -0,0 +1,24 @@
<?php
/**
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
// Init owncloud
require_once('../../../lib/base.php');
OC_JSON::checkLoggedIn();
OC_JSON::checkAppEnabled('tasks');
$id = $_POST['id'];
$checked = $_POST['checked'];
$vcalendar = OC_Calendar_App::getVCalendar( $id );
$vtodo = $vcalendar->VTODO;
OC_Task_App::setComplete($vtodo, $checked ? '100' : '0', null);
OC_Calendar_Object::edit($id, $vcalendar->serialize());
$user_timezone = OC_Preferences::getValue(OC_USER::getUser(), 'calendar', 'timezone', date_default_timezone_get());
$task_info = OC_Task_App::arrayForJSON($id, $vtodo, $user_timezone);
OC_JSON::success(array('data' => $task_info));

@ -24,6 +24,7 @@
.task .completed {position:absolute;left:3em;top:0.3em;}
.task .summary{padding-left:4em;}
.task.done .summary{text-decoration:line-through;}
.task .tag{border-radius:0.4em;display:inline-block;opacity:0.2;margin:0 0.2em;border:1px solid transparent;padding:0 0.4em;}
.task .tag:hover{opacity:0.5;}

@ -24,9 +24,11 @@ OC.Tasks = {
)
//.append(actions.clone().removeAttr('id'))
;
var checkbox = $('<input type="checkbox">');
var checkbox = $('<input type="checkbox">')
.click(OC.Tasks.complete_task);
if (task.completed) {
checkbox.attr('checked', 'checked');
task_container.addClass('done');
}
$('<div>')
.addClass('completed')
@ -112,6 +114,26 @@ OC.Tasks = {
}
container.append(this);
});
},
complete_task:function() {
var $task = $(this).closest('.task'),
task = $task.data('task'),
checked = $(this).is(':checked');
$.post('ajax/complete.php', {id:task.id, checked:checked?1:0}, function(jsondata){
if(jsondata.status == 'success') {
task = jsondata.data;
$task.data('task', task)
if (task.completed) {
$task.addClass('done');
}
else {
$task.removeClass('done');
}
}
else{
alert(jsondata.data.message);
}
}, 'json');
}
};

@ -154,6 +154,13 @@ class OC_Task_App {
unset($vtodo->DUE);
}
self::setComplete($vtodo, $percent_complete, $completed);
return $vcalendar;
}
public static function setComplete($vtodo, $percent_complete, $completed)
{
if (!empty($percent_complete)) {
$vtodo->setString('PERCENT-COMPLETE', $percent_complete);
}else{
@ -175,8 +182,5 @@ class OC_Task_App {
} else {
unset($vtodo->COMPLETED);
}
return $vcalendar;
}
}

Loading…
Cancel
Save