From 0510e1d8353208362dcd53b8ce6f9e3237202b06 Mon Sep 17 00:00:00 2001 From: kiswa Date: Thu, 3 Aug 2017 16:03:54 +0000 Subject: [PATCH] WIP --- src/api/composer.lock | 10 +- src/api/controllers/Tasks.php | 23 ++++ src/app/board/board.component.html | 3 +- src/app/board/board.component.ts | 15 ++- src/app/board/column/column.component.html | 20 ++- src/app/board/column/column.component.ts | 37 ++++- src/app/board/task/task.component.html | 1 + src/app/board/task/task.component.ts | 127 ++++++++++++++++-- .../board-admin/board-admin.component.html | 2 +- .../context-menu/context-menu.component.html | 3 +- .../context-menu/context-menu.component.ts | 7 +- .../context-menu/context-menu.service.ts | 2 +- src/json/en.json | 13 +- src/json/es.json | 13 +- src/scss/_board.scss | 37 ++++- test/api/controllers/TasksTest.php | 21 +++ 16 files changed, 292 insertions(+), 42 deletions(-) diff --git a/src/api/composer.lock b/src/api/composer.lock index d11202c..caffcb2 100644 --- a/src/api/composer.lock +++ b/src/api/composer.lock @@ -1643,16 +1643,16 @@ }, { "name": "symfony/yaml", - "version": "v3.3.5", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "1f93a8d19b8241617f5074a123e282575b821df8" + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/1f93a8d19b8241617f5074a123e282575b821df8", - "reference": "1f93a8d19b8241617f5074a123e282575b821df8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed", "shasum": "" }, "require": { @@ -1694,7 +1694,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-06-15T12:58:50+00:00" + "time": "2017-07-23T12:43:26+00:00" }, { "name": "webmozart/assert", diff --git a/src/api/controllers/Tasks.php b/src/api/controllers/Tasks.php index e607386..8e78927 100644 --- a/src/api/controllers/Tasks.php +++ b/src/api/controllers/Tasks.php @@ -59,6 +59,8 @@ class Tasks extends BaseController { R::store($task); $actor = R::load('user', Auth::GetUserId($request)); + $this->updateTaskOrder($task, $actor); + $this->dbLogger->logChange($actor->id, $actor->username . ' added task ' . $task->title . '.', '', json_encode($task), 'task', $task->id); @@ -168,5 +170,26 @@ class Tasks extends BaseController { return $column->board_id; } + + private function updateTaskOrder($task, $user) { + $column = R::load('column', $task->column_id); + $user_opts = R::load('useroption', $user->user_option_id); + + $index = count($column->xownTaskList); + $newTask = $column->xownTaskList[$index]; + + if ($user_opts->new_tasks_at_bottom) { + $newTask->position = $index; + R::store($newTask); + return; + } + + for ($i = count($column->xownTaskList); $i > 0; --$i) { + $updateTask = $column->xownTaskList[$i]; + $updateTask->position = $i; + + R::store($column); + } + } } diff --git a/src/app/board/board.component.html b/src/app/board/board.component.html index 89e46c0..5fc7256 100644 --- a/src/app/board/board.component.html +++ b/src/app/board/board.component.html @@ -64,6 +64,7 @@ + [boards]="boards" + (on-update-boards)="updateBoards()"> diff --git a/src/app/board/board.component.ts b/src/app/board/board.component.ts index fdd0da3..f992175 100644 --- a/src/app/board/board.component.ts +++ b/src/app/board/board.component.ts @@ -50,7 +50,6 @@ export class BoardDisplay implements OnInit { this.userFilter = null; this.categoryFilter = null; - this.pageName = 'Boards'; this.loading = true; stringsService.stringsChanged.subscribe(newStrings => { @@ -62,10 +61,8 @@ export class BoardDisplay implements OnInit { } }); - boardService.getBoards().subscribe((response: ApiResponse) => { - this.updateBoardsList(response.data[1]); - this.loading = false; - }); + this.pageName = this.strings.boards; + this.updateBoards(); boardService.activeBoardChanged.subscribe((board: Board) => { if (!board) { @@ -107,6 +104,14 @@ export class BoardDisplay implements OnInit { this.router.navigate(['/boards/' + this.boardNavId]); } + updateBoards() { + this.boardService.getBoards().subscribe((response: ApiResponse) => { + this.boards = []; + this.updateBoardsList(response.data[1]); + this.loading = false; + }); + } + private updateBoardsList(boards: Array): void { let activeBoards: Array = []; diff --git a/src/app/board/column/column.component.html b/src/app/board/column/column.component.html index 7f4e452..cb1b126 100644 --- a/src/app/board/column/column.component.html +++ b/src/app/board/column/column.component.html @@ -27,7 +27,7 @@ [title]="strings['boards_collapseColumn']" (click)="toggleCollapsed()"> + *ngIf="activeUser.isAnyAdmin()"> @@ -44,6 +44,21 @@ (click)="saveLimitChanges()"> + + {{ strings['sortBy'] }}: + +
@@ -62,6 +77,7 @@ [add-task]="getShowModalFunction()" [edit-task]="getShowModalFunction(task.id)" [remove-task]="getRemoveTaskFunction(task.id)" + (on-update-boards)="callBoardUpdate();" [collapse]="collapseTasks">
@@ -75,7 +91,7 @@
+ (click)="modal.close(MODAL_CONFIRM_ID + columnData.id);removeTask()">{{ strings['yes'] }}