feat: replace subtasks with task commenting system and update task view UI

This commit is contained in:
root
2026-03-29 20:32:15 +07:00
parent 78d309ae4e
commit 513de7813f
2 changed files with 82 additions and 75 deletions

View File

@@ -18,7 +18,7 @@ if ($action === 'api') {
try { $pdo->exec("ALTER TABLE tasks ADD COLUMN completed_by INTEGER DEFAULT NULL"); } catch(Exception $e) {}
try { $pdo->exec("ALTER TABLE tasks ADD COLUMN archived_by INTEGER DEFAULT NULL"); } catch(Exception $e) {}
try { $pdo->exec("CREATE TABLE IF NOT EXISTS task_attachments (id INTEGER PRIMARY KEY AUTOINCREMENT, task_id INTEGER, file_name TEXT, file_path TEXT, owner_id INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP)"); } catch(Exception $e) {}
try { $pdo->exec("CREATE TABLE IF NOT EXISTS task_subtasks (id INTEGER PRIMARY KEY AUTOINCREMENT, task_id INTEGER, title TEXT NOT NULL, is_completed INTEGER DEFAULT 0, created_by INTEGER, completed_by INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP)"); } catch(Exception $e) {}
try { $pdo->exec("CREATE TABLE IF NOT EXISTS task_comments (id INTEGER PRIMARY KEY AUTOINCREMENT, task_id INTEGER, comment TEXT NOT NULL, created_by INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP)"); } catch(Exception $e) {}
$format_dt = function($value) {
$value = is_string($value) ? trim($value) : $value;
@@ -62,27 +62,27 @@ if ($action === 'api') {
exit;
}
if($api_action === 'add_subtask') {
if($api_action === 'add_comment') {
if(!isset($_SESSION['user_id'])) die(json_encode(['status'=>'error','msg'=>'unauthorized']));
$task_id = $_POST['task_id'] ?? null;
$title = $_POST['title'] ?? null;
$comment = $_POST['comment'] ?? null;
$user_id = $_SESSION['user_id'];
if($task_id && $title) {
$stmt = $pdo->prepare("INSERT INTO task_subtasks (task_id, title, created_by) VALUES (?, ?, ?)");
$stmt->execute([$task_id, $title, $user_id]);
if($task_id && $comment) {
$stmt = $pdo->prepare("INSERT INTO task_comments (task_id, comment, created_by) VALUES (?, ?, ?)");
$stmt->execute([$task_id, $comment, $user_id]);
$t = query("SELECT title FROM tasks WHERE id=?", [$task_id])->fetch();
if($t) notify_waha('Commented on', 'Task', $t['title']);
}
echo json_encode(['status'=>'ok']);
exit;
}
if($api_action === 'toggle_subtask') {
if($api_action === 'delete_comment') {
if(!isset($_SESSION['user_id'])) die(json_encode(['status'=>'error','msg'=>'unauthorized']));
$subtask_id = $_POST['subtask_id'] ?? null;
$is_completed = (int)($_POST['is_completed'] ?? 0);
$user_id = $_SESSION['user_id'];
if($subtask_id) {
$stmt = $pdo->prepare("UPDATE task_subtasks SET is_completed = ?, completed_by = ? WHERE id = ?");
$stmt->execute([$is_completed, $is_completed ? $user_id : null, $subtask_id]);
$comment_id = $_POST['comment_id'] ?? null;
if($comment_id) {
$stmt = $pdo->prepare("DELETE FROM task_comments WHERE id = ?");
$stmt->execute([$comment_id]);
}
echo json_encode(['status'=>'ok']);
exit;