From 2eedbc008fb7036f2950365b5eee9a6563a8e5a4 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 19 Dec 2017 15:52:24 +0200 Subject: [PATCH] Working on task kanban --- app/Http/Controllers/TaskKanbanController.php | 24 +++++++++++++++---- resources/views/tasks/kanban.blade.php | 4 ++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/TaskKanbanController.php b/app/Http/Controllers/TaskKanbanController.php index 06626ff1e509..30d217d15981 100644 --- a/app/Http/Controllers/TaskKanbanController.php +++ b/app/Http/Controllers/TaskKanbanController.php @@ -15,13 +15,13 @@ class TaskKanbanController extends BaseController public function index() { $tasks = Task::scope()->with(['project', 'client', 'task_status'])->orderBy('task_status_sort_order')->get(); - $stauses = TaskStatus::scope()->orderBy('sort_order')->get(); + $statuses = TaskStatus::scope()->orderBy('sort_order')->get(); $projects = Project::scope()->get(); $clients = Client::scope()->get(); // check initial statuses exist - if (! $stauses->count()) { - $stauses = []; + if (! $statuses->count()) { + $statuses = collect([]); $defaults = [ 'backlog', 'ready_to_do', @@ -33,13 +33,13 @@ class TaskKanbanController extends BaseController $status->name = trans('texts.' . $defaults[$i]); $status->sort_order = $i; $status->save(); - $stauses[] = $status; + $statuses[] = $status; } } $data = [ 'title' => trans('texts.kanban'), - 'statuses' => $stauses, + 'statuses' => $statuses, 'tasks' => $tasks, 'clients' => $clients, 'projects' => $projects, @@ -68,6 +68,20 @@ class TaskKanbanController extends BaseController public function updateStatus($publicId) { $status = TaskStatus::scope($publicId)->firstOrFail(); + + if ($status->sort_order != request('sort_order')) { + $origSortOrder = $status->sort_order; + $newSortOrder = request('sort_order'); + + TaskStatus::scope() + ->where('sort_order', '>', $origSortOrder) + ->decrement('sort_order'); + + TaskStatus::scope() + ->where('sort_order', '>=', $newSortOrder) + ->increment('sort_order'); + } + $status->fill(request()->all()); $status->save(); diff --git a/resources/views/tasks/kanban.blade.php b/resources/views/tasks/kanban.blade.php index 5013544879cb..566c015e0ebf 100644 --- a/resources/views/tasks/kanban.blade.php +++ b/resources/views/tasks/kanban.blade.php @@ -235,8 +235,8 @@ var status = dragged.item; status.sort_order(dragged.targetIndex); - var url = '{{ url('/task_status') }}/' + status.public_id(); - var data = task.toData(); + var url = '{{ url('/task_statuses') }}/' + status.public_id(); + var data = status.toData(); model.ajax('put', url, data, function(response) { // do nothing