From 7eadf7cfd80176ab9b74c9c6a55c28db0f43fa88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Guillot?= Date: Sun, 9 Nov 2014 20:04:27 -0500 Subject: [PATCH] Start templates cleanup and reorganisation --- app/Controller/Action.php | 8 +-- app/Controller/App.php | 2 +- app/Controller/Base.php | 4 +- app/Controller/Board.php | 64 ++++++------------- app/Controller/Webhook.php | 2 +- app/Core/Request.php | 11 ++++ app/Model/GithubWebhook.php | 6 +- .../{action_event.php => action/event.php} | 7 +- .../{action_index.php => action/index.php} | 5 +- .../{action_params.php => action/params.php} | 7 +- .../{action_remove.php => action/remove.php} | 3 +- .../{app_forbidden.php => app/forbidden.php} | 0 app/Template/{app_index.php => app/index.php} | 0 .../{app_notfound.php => app/notfound.php} | 0 .../assignee.php} | 15 ++--- .../category.php} | 14 ++-- .../{board_edit.php => board/edit.php} | 7 +- app/Template/board/filters.php | 35 ++++++++++ app/Template/board/index.php | 21 ++++++ .../{board_remove.php => board/remove.php} | 0 .../{board_public.php => board/rename.php} | 2 +- .../{board_show.php => board/show.php} | 10 +-- .../{board_task.php => board/task.php} | 38 ++++++----- app/Template/board_index.php | 50 --------------- app/Template/layout.php | 2 +- assets/js/app.js | 32 ++++------ assets/js/base.js | 2 +- assets/js/board.js | 30 ++++----- 28 files changed, 182 insertions(+), 195 deletions(-) rename app/Template/{action_event.php => action/event.php} (72%) rename app/Template/{action_index.php => action/index.php} (89%) rename app/Template/{action_params.php => action/params.php} (88%) rename app/Template/{action_remove.php => action/remove.php} (80%) rename app/Template/{app_forbidden.php => app/forbidden.php} (100%) rename app/Template/{app_index.php => app/index.php} (100%) rename app/Template/{app_notfound.php => app/notfound.php} (100%) rename app/Template/{board_assignee.php => board/assignee.php} (59%) rename app/Template/{board_category.php => board/category.php} (59%) rename app/Template/{board_edit.php => board/edit.php} (90%) create mode 100644 app/Template/board/filters.php create mode 100644 app/Template/board/index.php rename app/Template/{board_remove.php => board/remove.php} (100%) rename app/Template/{board_public.php => board/rename.php} (95%) rename app/Template/{board_show.php => board/show.php} (82%) rename app/Template/{board_task.php => board/task.php} (70%) delete mode 100644 app/Template/board_index.php diff --git a/app/Controller/Action.php b/app/Controller/Action.php index bf72f36fa..22358cb50 100644 --- a/app/Controller/Action.php +++ b/app/Controller/Action.php @@ -19,7 +19,7 @@ class Action extends Base { $project = $this->getProjectManagement(); - $this->response->html($this->projectLayout('action_index', array( + $this->response->html($this->projectLayout('action/index', array( 'values' => array('project_id' => $project['id']), 'project' => $project, 'actions' => $this->action->getAllByProject($project['id']), @@ -49,7 +49,7 @@ class Action extends Base $this->response->redirect('?controller=action&action=index&project_id='.$project['id']); } - $this->response->html($this->projectLayout('action_event', array( + $this->response->html($this->projectLayout('action/event', array( 'values' => $values, 'project' => $project, 'events' => $this->action->getCompatibleEvents($values['action_name']), @@ -81,7 +81,7 @@ class Action extends Base $projects_list = $this->project->getList(false); unset($projects_list[$project['id']]); - $this->response->html($this->projectLayout('action_params', array( + $this->response->html($this->projectLayout('action/params', array( 'values' => $values, 'action_params' => $action_params, 'columns_list' => $this->board->getColumnsList($project['id']), @@ -137,7 +137,7 @@ class Action extends Base { $project = $this->getProjectManagement(); - $this->response->html($this->projectLayout('action_remove', array( + $this->response->html($this->projectLayout('action/remove', array( 'action' => $this->action->getById($this->request->getIntegerParam('action_id')), 'available_events' => $this->action->getAvailableEvents(), 'available_actions' => $this->action->getAvailableActions(), diff --git a/app/Controller/App.php b/app/Controller/App.php index 7fa97d4f7..9f8ded199 100644 --- a/app/Controller/App.php +++ b/app/Controller/App.php @@ -23,7 +23,7 @@ class App extends Base $projects = $this->projectPermission->getMemberProjects($user_id); $project_ids = array_keys($projects); - $this->response->html($this->template->layout('app_index', array( + $this->response->html($this->template->layout('app/index', array( 'board_selector' => $this->projectPermission->getAllowedProjects($user_id), 'events' => $this->projectActivity->getProjects($project_ids, 10), 'tasks' => $this->taskFinder->getAllTasksByUser($user_id), diff --git a/app/Controller/Base.php b/app/Controller/Base.php index 7eb75b072..2c8fb2214 100644 --- a/app/Controller/Base.php +++ b/app/Controller/Base.php @@ -174,7 +174,7 @@ abstract class Base */ public function notfound($no_layout = false) { - $this->response->html($this->template->layout('app_notfound', array( + $this->response->html($this->template->layout('app/notfound', array( 'title' => t('Page not found'), 'no_layout' => $no_layout, ))); @@ -188,7 +188,7 @@ abstract class Base */ public function forbidden($no_layout = false) { - $this->response->html($this->template->layout('app_forbidden', array( + $this->response->html($this->template->layout('app/forbidden', array( 'title' => t('Access Forbidden'), 'no_layout' => $no_layout, ))); diff --git a/app/Controller/Board.php b/app/Controller/Board.php index a2d6628f0..f5bb4d802 100644 --- a/app/Controller/Board.php +++ b/app/Controller/Board.php @@ -43,24 +43,11 @@ class Board extends Base $task = $this->getTask(); $project = $this->project->getById($task['project_id']); - $params = array( - 'errors' => array(), + $this->response->html($this->template->load('board/assignee', array( 'values' => $task, 'users_list' => $this->projectPermission->getMemberList($project['id']), - 'current_project_id' => $project['id'], - 'current_project_name' => $project['name'], - ); - - if ($this->request->isAjax()) { - - $this->response->html($this->template->load('board_assignee', $params)); - } - else { - - $this->response->html($this->template->layout('board_assignee', $params + array( - 'title' => t('Change assignee').' - '.$task['title'], - ))); - } + 'project' => $project, + ))); } /** @@ -95,24 +82,11 @@ class Board extends Base $task = $this->getTask(); $project = $this->project->getById($task['project_id']); - $params = array( - 'errors' => array(), + $this->response->html($this->template->load('board/category', array( 'values' => $task, 'categories_list' => $this->category->getList($project['id']), - 'current_project_id' => $project['id'], - 'current_project_name' => $project['name'], - ); - - if ($this->request->isAjax()) { - - $this->response->html($this->template->load('board_category', $params)); - } - else { - - $this->response->html($this->template->layout('board_category', $params + array( - 'title' => t('Change category').' - '.$task['title'], - ))); - } + 'project' => $project, + ))); } /** @@ -154,7 +128,7 @@ class Board extends Base } // Display the board with a specific layout - $this->response->html($this->template->layout('board_public', array( + $this->response->html($this->template->layout('board/public', array( 'project' => $project, 'columns' => $this->board->get($project['id']), 'categories' => $this->category->getList($project['id'], false), @@ -210,12 +184,10 @@ class Board extends Base $this->user->storeLastSeenProjectId($project['id']); - $this->response->html($this->template->layout('board_index', array( + $this->response->html($this->template->layout('board/index', array( 'users' => $this->projectPermission->getMemberList($project['id'], true, true), - 'filters' => array('user_id' => UserModel::EVERYBODY_ID), 'projects' => $projects, - 'current_project_id' => $project['id'], - 'current_project_name' => $project['name'], + 'project' => $project, 'board' => $this->board->get($project['id']), 'categories' => $this->category->getList($project['id'], true, true), 'title' => $project['name'], @@ -241,7 +213,7 @@ class Board extends Base $values['task_limit['.$column['id'].']'] = $column['task_limit'] ?: null; } - $this->response->html($this->projectLayout('board_edit', array( + $this->response->html($this->projectLayout('board/edit', array( 'errors' => array(), 'values' => $values + array('project_id' => $project['id']), 'columns' => $columns, @@ -281,7 +253,7 @@ class Board extends Base } } - $this->response->html($this->projectLayout('board_edit', array( + $this->response->html($this->projectLayout('board/edit', array( 'errors' => $errors, 'values' => $values + array('project_id' => $project['id']), 'columns' => $columns, @@ -319,7 +291,7 @@ class Board extends Base } } - $this->response->html($this->projectLayout('board_edit', array( + $this->response->html($this->projectLayout('board/edit', array( 'errors' => $errors, 'values' => $values + $data, 'columns' => $columns, @@ -351,7 +323,7 @@ class Board extends Base $this->response->redirect('?controller=board&action=edit&project_id='.$project['id']); } - $this->response->html($this->projectLayout('board_remove', array( + $this->response->html($this->projectLayout('board/remove', array( 'column' => $this->board->getColumn($this->request->getIntegerParam('column_id')), 'project' => $project, 'title' => t('Remove a column from a board') @@ -373,13 +345,13 @@ class Board extends Base $this->response->status(401); } - $values = $this->request->getValues(); + $values = $this->request->getJson(); if ($this->task->movePosition($project_id, $values['task_id'], $values['column_id'], $values['position'])) { $this->response->html( - $this->template->load('board_show', array( - 'current_project_id' => $project_id, + $this->template->load('board/show', array( + 'project' => $this->project->getById($project_id), 'board' => $this->board->get($project_id), 'categories' => $this->category->getList($project_id, false), 'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'), @@ -416,8 +388,8 @@ class Board extends Base if ($this->project->isModifiedSince($project_id, $timestamp)) { $this->response->html( - $this->template->load('board_show', array( - 'current_project_id' => $project_id, + $this->template->load('board/show', array( + 'project' => $this->project->getById($project_id), 'board' => $this->board->get($project_id), 'categories' => $this->category->getList($project_id, false), 'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'), diff --git a/app/Controller/Webhook.php b/app/Controller/Webhook.php index fa9c58340..a0bf369ad 100644 --- a/app/Controller/Webhook.php +++ b/app/Controller/Webhook.php @@ -57,7 +57,7 @@ class Webhook extends Base $result = $this->githubWebhook->parsePayload( $this->request->getHeader('X-Github-Event'), - $this->request->getBody() + $this->request->getJson() ); echo $result ? 'PARSED' : 'IGNORED'; diff --git a/app/Core/Request.php b/app/Core/Request.php index a4c426f04..1b6432081 100644 --- a/app/Core/Request.php +++ b/app/Core/Request.php @@ -75,6 +75,17 @@ class Request return file_get_contents('php://input'); } + /** + * Get the Json request body + * + * @access public + * @return array + */ + public function getJson() + { + return json_decode($this->getBody(), true); + } + /** * Get the content of an uploaded file * diff --git a/app/Model/GithubWebhook.php b/app/Model/GithubWebhook.php index 58c2fa54e..9c8bd366a 100644 --- a/app/Model/GithubWebhook.php +++ b/app/Model/GithubWebhook.php @@ -47,13 +47,11 @@ class GithubWebhook extends Base * * @access public * @param string $type Github event type - * @param string $payload Raw Github event (JSON) + * @param array $payload Github event * @return boolean */ - public function parsePayload($type, $payload) + public function parsePayload($type, array $payload) { - $payload = json_decode($payload, true); - switch ($type) { case 'push': return $this->parsePushEvent($payload); diff --git a/app/Template/action_event.php b/app/Template/action/event.php similarity index 72% rename from app/Template/action_event.php rename to app/Template/action/event.php index eee417808..565e900c6 100644 --- a/app/Template/action_event.php +++ b/app/Template/action/event.php @@ -3,8 +3,10 @@

-
+ + + @@ -17,6 +19,7 @@
- + + $project['id'])) ?>
\ No newline at end of file diff --git a/app/Template/action_index.php b/app/Template/action/index.php similarity index 89% rename from app/Template/action_index.php rename to app/Template/action/index.php index 308745913..858390982 100644 --- a/app/Template/action_index.php +++ b/app/Template/action/index.php @@ -42,17 +42,16 @@ - + $project['id'], 'action_id' => $action['id'])) ?> -

-
+ diff --git a/app/Template/action_params.php b/app/Template/action/params.php similarity index 88% rename from app/Template/action_params.php rename to app/Template/action/params.php index f647149bb..f221d92e8 100644 --- a/app/Template/action_params.php +++ b/app/Template/action/params.php @@ -3,8 +3,10 @@

- + + + @@ -35,6 +37,7 @@
- + + $project['id'])) ?>
\ No newline at end of file diff --git a/app/Template/action_remove.php b/app/Template/action/remove.php similarity index 80% rename from app/Template/action_remove.php rename to app/Template/action/remove.php index 668067da8..131c2b54b 100644 --- a/app/Template/action_remove.php +++ b/app/Template/action/remove.php @@ -9,6 +9,7 @@
$project['id'], 'action_id' => $action['id']), true, 'btn btn-red') ?> - $project['id'])) ?> + + $project['id'])) ?>
\ No newline at end of file diff --git a/app/Template/app_forbidden.php b/app/Template/app/forbidden.php similarity index 100% rename from app/Template/app_forbidden.php rename to app/Template/app/forbidden.php diff --git a/app/Template/app_index.php b/app/Template/app/index.php similarity index 100% rename from app/Template/app_index.php rename to app/Template/app/index.php diff --git a/app/Template/app_notfound.php b/app/Template/app/notfound.php similarity index 100% rename from app/Template/app_notfound.php rename to app/Template/app/notfound.php diff --git a/app/Template/board_assignee.php b/app/Template/board/assignee.php similarity index 59% rename from app/Template/board_assignee.php rename to app/Template/board/assignee.php index 41ede32b0..434daa51b 100644 --- a/app/Template/board_assignee.php +++ b/app/Template/board/assignee.php @@ -1,24 +1,21 @@
- - -

-
+ + + -
+
- + + $project['id'])) ?>
-
\ No newline at end of file diff --git a/app/Template/board_category.php b/app/Template/board/category.php similarity index 59% rename from app/Template/board_category.php rename to app/Template/board/category.php index 36126a1de..88d8e71c0 100644 --- a/app/Template/board_category.php +++ b/app/Template/board/category.php @@ -1,22 +1,20 @@
- - -

-
+ + + -
+
- + + $project['id'])) ?>
diff --git a/app/Template/board_edit.php b/app/Template/board/edit.php similarity index 90% rename from app/Template/board_edit.php rename to app/Template/board/edit.php index cfaebc50b..2c3236e2c 100644 --- a/app/Template/board_edit.php +++ b/app/Template/board/edit.php @@ -4,7 +4,7 @@

-
+ @@ -46,9 +46,12 @@

- + + + + diff --git a/app/Template/board/filters.php b/app/Template/board/filters.php new file mode 100644 index 000000000..21e51d98c --- /dev/null +++ b/app/Template/board/filters.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/app/Template/board/index.php b/app/Template/board/index.php new file mode 100644 index 000000000..210403735 --- /dev/null +++ b/app/Template/board/index.php @@ -0,0 +1,21 @@ +
+ + $categories, + 'users' => $users, + 'project' => $project, + )) ?> + + +

+ + $project, + 'board' => $board, + 'categories' => $categories, + 'board_private_refresh_interval' => $board_private_refresh_interval, + 'board_highlight_period' => $board_highlight_period, + )) ?> + + +
diff --git a/app/Template/board_remove.php b/app/Template/board/remove.php similarity index 100% rename from app/Template/board_remove.php rename to app/Template/board/remove.php diff --git a/app/Template/board_public.php b/app/Template/board/rename.php similarity index 95% rename from app/Template/board_public.php rename to app/Template/board/rename.php index 85c90cfaa..6514b0e59 100644 --- a/app/Template/board_public.php +++ b/app/Template/board/rename.php @@ -21,7 +21,7 @@
- $task, 'categories' => $categories, 'not_editable' => true, 'project' => $project)) ?> + $task, 'categories' => $categories, 'not_editable' => true, 'project' => $project)) ?>
diff --git a/app/Template/board_show.php b/app/Template/board/show.php similarity index 82% rename from app/Template/board_show.php rename to app/Template/board/show.php index 4865ce5c0..66e8b46d3 100644 --- a/app/Template/board_show.php +++ b/app/Template/board/show.php @@ -1,8 +1,9 @@
> + data-save-url=" $project['id'])) ?>" + data-check-url=" $project['id'], 'timestamp' => time())) ?>" +> @@ -37,9 +38,10 @@ data-owner-id="" data-category-id="" data-due-date="" + data-task-url=" $task['id'])) ?>" title=""> - $task, 'categories' => $categories)) ?> + $task, 'categories' => $categories)) ?> diff --git a/app/Template/board_task.php b/app/Template/board/task.php similarity index 70% rename from app/Template/board_task.php rename to app/Template/board/task.php index ca854f37c..02ae46c17 100644 --- a/app/Template/board_task.php +++ b/app/Template/board/task.php @@ -1,6 +1,6 @@ - # + $task['id'], 'token' => $project['token'])) ?> @@ -23,14 +23,12 @@
- - - + $task['id'], 'token' => $project['token'])) ?>
- # + $task['id']), false, 'task-edit-popover', t('Edit this task')) ?> @@ -41,13 +39,15 @@  -  - - - - - - - + $task['id']), + false, + 'assignee-popover', + t('Change assignee') + ) ?> @@ -55,7 +55,7 @@
- + $task['id']), false, '', t('View this task')) ?>
@@ -64,9 +64,15 @@
- - - + $task['id']), + false, + 'category-popover', + t('Change category') + ) ?>
diff --git a/app/Template/board_index.php b/app/Template/board_index.php deleted file mode 100644 index e478680f8..000000000 --- a/app/Template/board_index.php +++ /dev/null @@ -1,50 +0,0 @@ -
- - - -

- - $current_project_id, - 'board' => $board, - 'categories' => $categories, - 'board_private_refresh_interval' => $board_private_refresh_interval, - 'board_highlight_period' => $board_highlight_period, - )) ?> - - -
diff --git a/app/Template/layout.php b/app/Template/layout.php index 587614146..31a4c4077 100644 --- a/app/Template/layout.php +++ b/app/Template/layout.php @@ -34,7 +34,7 @@
  • - $board_name): ?> diff --git a/assets/js/app.js b/assets/js/app.js index 2dbcdc421..55bc4039a 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -97,7 +97,7 @@ var Kanboard = (function() { }); $("#board-selector").change(function() { - window.location = "?controller=board&action=show&project_id=" + $(this).val(); + window.location = $(this).attr("data-board-url").replace(/%d/g, $(this).val()); }); } }; @@ -140,9 +140,9 @@ Kanboard.Board = (function() { $(".task-description-popover").click(Kanboard.Popover); // Redirect to the task details page - $("[data-task-id]").each(function() { + $("[data-task-url]").each(function() { $(this).click(function() { - window.location = "?controller=task&action=show&task_id=" + $(this).attr("data-task-id"); + window.location = $(this).attr("data-task-url"); }); }); @@ -157,28 +157,26 @@ Kanboard.Board = (function() { // Stop events function board_unload_events() { - $("[data-task-id]").off(); + $("[data-task-url]").off(); clearInterval(checkInterval); } // Save and refresh the board function board_save(taskId, columnId, position) { - var boardSelector = $("#board"); - var projectId = boardSelector.attr("data-project-id"); - board_unload_events(); $.ajax({ cache: false, - url: "?controller=board&action=save&project_id=" + projectId, - data: { + url: $("#board").attr("data-save-url"), + contentType: "application/json", + type: "POST", + processData: false, + data: JSON.stringify({ "task_id": taskId, "column_id": columnId, "position": position, - "csrf_token": boardSelector.attr("data-csrf-token"), - }, - type: "POST", + }), success: function(data) { $("#board").remove(); $("#main").append(data); @@ -191,17 +189,13 @@ Kanboard.Board = (function() { // Check if a board have been changed by someone else function board_check() { - var boardSelector = $("#board"); - var projectId = boardSelector.attr("data-project-id"); - var timestamp = boardSelector.attr("data-time"); - - if (Kanboard.IsVisible() && projectId != undefined && timestamp != undefined) { + if (Kanboard.IsVisible()) { $.ajax({ cache: false, - url: "?controller=board&action=check&project_id=" + projectId + "×tamp=" + timestamp, + url: $("#board").attr("data-check-url"), statusCode: { 200: function(data) { - boardSelector.remove(); + $("#board").remove(); $("#main").append(data); board_unload_events(); board_load_events(); diff --git a/assets/js/base.js b/assets/js/base.js index 1e5ff9677..0a17696ea 100644 --- a/assets/js/base.js +++ b/assets/js/base.js @@ -82,7 +82,7 @@ var Kanboard = (function() { }); $("#board-selector").change(function() { - window.location = "?controller=board&action=show&project_id=" + $(this).val(); + window.location = $(this).attr("data-board-url").replace(/%d/g, $(this).val()); }); } }; diff --git a/assets/js/board.js b/assets/js/board.js index 1d890a331..09dbd069e 100644 --- a/assets/js/board.js +++ b/assets/js/board.js @@ -36,9 +36,9 @@ Kanboard.Board = (function() { $(".task-description-popover").click(Kanboard.Popover); // Redirect to the task details page - $("[data-task-id]").each(function() { + $("[data-task-url]").each(function() { $(this).click(function() { - window.location = "?controller=task&action=show&task_id=" + $(this).attr("data-task-id"); + window.location = $(this).attr("data-task-url"); }); }); @@ -53,28 +53,26 @@ Kanboard.Board = (function() { // Stop events function board_unload_events() { - $("[data-task-id]").off(); + $("[data-task-url]").off(); clearInterval(checkInterval); } // Save and refresh the board function board_save(taskId, columnId, position) { - var boardSelector = $("#board"); - var projectId = boardSelector.attr("data-project-id"); - board_unload_events(); $.ajax({ cache: false, - url: "?controller=board&action=save&project_id=" + projectId, - data: { + url: $("#board").attr("data-save-url"), + contentType: "application/json", + type: "POST", + processData: false, + data: JSON.stringify({ "task_id": taskId, "column_id": columnId, "position": position, - "csrf_token": boardSelector.attr("data-csrf-token"), - }, - type: "POST", + }), success: function(data) { $("#board").remove(); $("#main").append(data); @@ -87,17 +85,13 @@ Kanboard.Board = (function() { // Check if a board have been changed by someone else function board_check() { - var boardSelector = $("#board"); - var projectId = boardSelector.attr("data-project-id"); - var timestamp = boardSelector.attr("data-time"); - - if (Kanboard.IsVisible() && projectId != undefined && timestamp != undefined) { + if (Kanboard.IsVisible()) { $.ajax({ cache: false, - url: "?controller=board&action=check&project_id=" + projectId + "×tamp=" + timestamp, + url: $("#board").attr("data-check-url"), statusCode: { 200: function(data) { - boardSelector.remove(); + $("#board").remove(); $("#main").append(data); board_unload_events(); board_load_events();