From eacd110b2b34d7af80e338ee617377ab596877bc Mon Sep 17 00:00:00 2001 From: Imbasaur Date: Fri, 25 Mar 2016 17:20:02 +0100 Subject: Update form.php Task Creation Left Column Hook --- app/Template/task_creation/form.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'app/Template') diff --git a/app/Template/task_creation/form.php b/app/Template/task_creation/form.php index cecba9ef..9bfd839f 100644 --- a/app/Template/task_creation/form.php +++ b/app/Template/task_creation/form.php @@ -28,6 +28,8 @@ form->checkbox('another_task', t('Create another task'), 1, isset($values['another_task']) && $values['another_task'] == 1) ?> + + hook->render('template:task:form:left-column', array('values'=>$values, 'errors'=>$errors)) ?>
@@ -48,4 +50,4 @@ url->link(t('cancel'), 'board', 'show', array('project_id' => $values['project_id']), false, 'close-popover') ?>
- \ No newline at end of file + -- cgit v1.2.3 From 354e37971d43d3b62d8f4e2a23eff09e88525627 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Fri, 25 Mar 2016 17:41:41 -0400 Subject: Unification of project header --- ChangeLog | 1 + app/Controller/Activity.php | 1 + app/Controller/Analytic.php | 3 +- app/Controller/Base.php | 56 ---------------------- app/Controller/Board.php | 13 +++--- app/Controller/Calendar.php | 7 ++- app/Controller/Gantt.php | 11 +++-- app/Controller/Listing.php | 15 +++--- app/Controller/ProjectOverview.php | 21 +++++---- app/Controller/Task.php | 8 ++-- app/Core/Helper.php | 25 +++++----- app/Helper/ProjectHeaderHelper.php | 80 ++++++++++++++++++++++++++++++++ app/ServiceProvider/HelperProvider.php | 1 + app/Template/activity/project.php | 40 +++------------- app/Template/analytic/layout.php | 33 +------------ app/Template/app/layout.php | 2 +- app/Template/board/view_private.php | 17 ++----- app/Template/calendar/show.php | 6 +-- app/Template/gantt/project.php | 7 +-- app/Template/listing/show.php | 8 +--- app/Template/project/layout.php | 27 +---------- app/Template/project_header/dropdown.php | 4 +- app/Template/project_header/header.php | 2 +- app/Template/project_header/views.php | 2 +- app/Template/project_overview/show.php | 6 +-- app/Template/task/details.php | 7 +++ app/Template/task/layout.php | 22 +-------- app/Template/task/menu.php | 78 ------------------------------- app/Template/task/show.php | 1 - assets/css/app.css | 2 +- assets/css/print.css | 2 +- assets/css/src/filters.css | 12 +++++ assets/css/src/header.css | 7 --- assets/css/src/task.css | 5 ++ assets/js/app.js | 2 +- assets/js/src/Gantt.js | 2 +- doc/plugin-hooks.markdown | 1 - 37 files changed, 194 insertions(+), 343 deletions(-) create mode 100644 app/Helper/ProjectHeaderHelper.php delete mode 100644 app/Template/task/menu.php (limited to 'app/Template') diff --git a/ChangeLog b/ChangeLog index 54a28db7..327d2389 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ New features: Improvements: +* Unification of the project header * Refactoring of Javascript code * Improve comments design * Improve task summary sections diff --git a/app/Controller/Activity.php b/app/Controller/Activity.php index db520ebe..e455b1da 100644 --- a/app/Controller/Activity.php +++ b/app/Controller/Activity.php @@ -38,6 +38,7 @@ class Activity extends Base $this->response->html($this->helper->layout->task('activity/task', array( 'title' => $task['title'], 'task' => $task, + 'project' => $this->project->getById($task['project_id']), 'events' => $this->projectActivity->getTask($task['id']), ))); } diff --git a/app/Controller/Analytic.php b/app/Controller/Analytic.php index 6ce062c4..6b0730b0 100644 --- a/app/Controller/Analytic.php +++ b/app/Controller/Analytic.php @@ -44,8 +44,7 @@ class Analytic extends Base public function compareHours() { $project = $this->getProject(); - $params = $this->getProjectFilters('analytic', 'compareHours'); - $query = $this->taskFilter->create()->filterByProject($params['project']['id'])->getQuery(); + $query = $this->taskFilter->create()->filterByProject($project['id'])->getQuery(); $paginator = $this->paginator ->setUrl('analytic', 'compareHours', array('project_id' => $project['id'])) diff --git a/app/Controller/Base.php b/app/Controller/Base.php index 2453be18..beb56909 100644 --- a/app/Controller/Base.php +++ b/app/Controller/Base.php @@ -287,60 +287,4 @@ abstract class Base extends \Kanboard\Core\Base return $subtask; } - - /** - * Common method to get project filters - * - * @access protected - * @param string $controller - * @param string $action - * @return array - */ - protected function getProjectFilters($controller, $action) - { - $project = $this->getProject(); - $search = $this->request->getStringParam('search', $this->userSession->getFilters($project['id'])); - $board_selector = $this->projectUserRole->getActiveProjectsByUser($this->userSession->getId()); - unset($board_selector[$project['id']]); - - $filters = array( - 'controller' => $controller, - 'action' => $action, - 'project_id' => $project['id'], - 'search' => urldecode($search), - ); - - $this->userSession->setFilters($project['id'], $filters['search']); - - return array( - 'project' => $project, - 'board_selector' => $board_selector, - 'filters' => $filters, - 'title' => $project['name'], - 'description' => $this->getProjectDescription($project), - ); - } - - /** - * Get project description - * - * @access protected - * @param array &$project - * @return string - */ - protected function getProjectDescription(array &$project) - { - if ($project['owner_id'] > 0) { - $description = t('Project owner: ').'**'.$this->helper->text->e($project['owner_name'] ?: $project['owner_username']).'**'.PHP_EOL.PHP_EOL; - - if (! empty($project['description'])) { - $description .= '***'.PHP_EOL.PHP_EOL; - $description .= $project['description']; - } - } else { - $description = $project['description']; - } - - return $description; - } } diff --git a/app/Controller/Board.php b/app/Controller/Board.php index 199f1703..51344bd3 100644 --- a/app/Controller/Board.php +++ b/app/Controller/Board.php @@ -47,16 +47,17 @@ class Board extends Base */ public function show() { - $params = $this->getProjectFilters('board', 'show'); + $project = $this->getProject(); + $search = $this->helper->projectHeader->getSearchQuery($project); $this->response->html($this->helper->layout->app('board/view_private', array( - 'categories_list' => $this->category->getList($params['project']['id'], false), - 'users_list' => $this->projectUserRole->getAssignableUsersList($params['project']['id'], false), - 'custom_filters_list' => $this->customFilter->getAll($params['project']['id'], $this->userSession->getId()), - 'swimlanes' => $this->taskFilter->search($params['filters']['search'])->getBoard($params['project']['id']), + 'swimlanes' => $this->taskFilter->search($search)->getBoard($project['id']), + 'project' => $project, + 'title' => $project['name'], + 'description' => $this->helper->projectHeader->getDescription($project), 'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'), 'board_highlight_period' => $this->config->get('board_highlight_period'), - ) + $params)); + ))); } /** diff --git a/app/Controller/Calendar.php b/app/Controller/Calendar.php index a0a25e41..af31ae47 100644 --- a/app/Controller/Calendar.php +++ b/app/Controller/Calendar.php @@ -20,9 +20,14 @@ class Calendar extends Base */ public function show() { + $project = $this->getProject(); + $this->response->html($this->helper->layout->app('calendar/show', array( + 'project' => $project, + 'title' => $project['name'], + 'description' => $this->helper->projectHeader->getDescription($project), 'check_interval' => $this->config->get('board_private_refresh_interval'), - ) + $this->getProjectFilters('calendar', 'show'))); + ))); } /** diff --git a/app/Controller/Gantt.php b/app/Controller/Gantt.php index 9ffa277f..02ee946c 100644 --- a/app/Controller/Gantt.php +++ b/app/Controller/Gantt.php @@ -54,8 +54,9 @@ class Gantt extends Base */ public function project() { - $params = $this->getProjectFilters('gantt', 'project'); - $filter = $this->taskFilterGanttFormatter->search($params['filters']['search'])->filterByProject($params['project']['id']); + $project = $this->getProject(); + $search = $this->helper->projectHeader->getSearchQuery($project); + $filter = $this->taskFilterGanttFormatter->search($search)->filterByProject($project['id']); $sorting = $this->request->getStringParam('sorting', 'board'); if ($sorting === 'date') { @@ -64,8 +65,10 @@ class Gantt extends Base $filter->getQuery()->asc('column_position')->asc(TaskModel::TABLE.'.position'); } - $this->response->html($this->helper->layout->app('gantt/project', $params + array( - 'users_list' => $this->projectUserRole->getAssignableUsersList($params['project']['id'], false), + $this->response->html($this->helper->layout->app('gantt/project', array( + 'project' => $project, + 'title' => $project['name'], + 'description' => $this->helper->projectHeader->getDescription($project), 'sorting' => $sorting, 'tasks' => $filter->format(), ))); diff --git a/app/Controller/Listing.php b/app/Controller/Listing.php index c784dd50..9931c346 100644 --- a/app/Controller/Listing.php +++ b/app/Controller/Listing.php @@ -19,22 +19,23 @@ class Listing extends Base */ public function show() { - $params = $this->getProjectFilters('listing', 'show'); - $query = $this->taskFilter->search($params['filters']['search'])->filterByProject($params['project']['id'])->getQuery(); + $project = $this->getProject(); + $search = $this->helper->projectHeader->getSearchQuery($project); + $query = $this->taskFilter->search($search)->filterByProject($project['id'])->getQuery(); $paginator = $this->paginator - ->setUrl('listing', 'show', array('project_id' => $params['project']['id'])) + ->setUrl('listing', 'show', array('project_id' => $project['id'])) ->setMax(30) ->setOrder(TaskModel::TABLE.'.id') ->setDirection('DESC') ->setQuery($query) ->calculate(); - $this->response->html($this->helper->layout->app('listing/show', $params + array( + $this->response->html($this->helper->layout->app('listing/show', array( + 'project' => $project, + 'title' => $project['name'], + 'description' => $this->helper->projectHeader->getDescription($project), 'paginator' => $paginator, - 'categories_list' => $this->category->getList($params['project']['id'], false), - 'users_list' => $this->projectUserRole->getAssignableUsersList($params['project']['id'], false), - 'custom_filters_list' => $this->customFilter->getAll($params['project']['id'], $this->userSession->getId()), ))); } } diff --git a/app/Controller/ProjectOverview.php b/app/Controller/ProjectOverview.php index b0687ed3..04645804 100644 --- a/app/Controller/ProjectOverview.php +++ b/app/Controller/ProjectOverview.php @@ -15,15 +15,18 @@ class ProjectOverview extends Base */ public function show() { - $params = $this->getProjectFilters('ProjectOverview', 'show'); - $params['users'] = $this->projectUserRole->getAllUsersGroupedByRole($params['project']['id']); - $params['roles'] = $this->role->getProjectRoles(); - $params['events'] = $this->projectActivity->getProject($params['project']['id'], 10); - $params['images'] = $this->projectFile->getAllImages($params['project']['id']); - $params['files'] = $this->projectFile->getAllDocuments($params['project']['id']); + $project = $this->getProject(); + $this->project->getColumnStats($project); - $this->project->getColumnStats($params['project']); - - $this->response->html($this->helper->layout->app('project_overview/show', $params)); + $this->response->html($this->helper->layout->app('project_overview/show', array( + 'project' => $project, + 'title' => $project['name'], + 'description' => $this->helper->projectHeader->getDescription($project), + 'users' => $this->projectUserRole->getAllUsersGroupedByRole($project['id']), + 'roles' => $this->role->getProjectRoles(), + 'events' => $this->projectActivity->getProject($project['id'], 10), + 'images' => $this->projectFile->getAllImages($project['id']), + 'files' => $this->projectFile->getAllDocuments($project['id']), + ))); } } diff --git a/app/Controller/Task.php b/app/Controller/Task.php index dc10604e..902a32d6 100644 --- a/app/Controller/Task.php +++ b/app/Controller/Task.php @@ -71,17 +71,16 @@ class Task extends Base $values = $this->dateParser->format($values, array('date_started'), $this->config->get('application_datetime_format', DateParser::DATE_TIME_FORMAT)); $this->response->html($this->helper->layout->task('task/show', array( + 'task' => $task, 'project' => $this->project->getById($task['project_id']), + 'values' => $values, 'files' => $this->taskFile->getAllDocuments($task['id']), 'images' => $this->taskFile->getAllImages($task['id']), 'comments' => $this->comment->getAll($task['id'], $this->userSession->getCommentSorting()), 'subtasks' => $subtasks, 'internal_links' => $this->taskLink->getAllGroupedByLabel($task['id']), 'external_links' => $this->taskExternalLink->getAll($task['id']), - 'task' => $task, - 'values' => $values, 'link_label_list' => $this->link->getList(0, false), - 'users_list' => $this->projectUserRole->getAssignableUsersList($task['project_id'], true, false, false), ))); } @@ -96,6 +95,7 @@ class Task extends Base $this->response->html($this->helper->layout->task('task/analytics', array( 'task' => $task, + 'project' => $this->project->getById($task['project_id']), 'lead_time' => $this->taskAnalytic->getLeadTime($task), 'cycle_time' => $this->taskAnalytic->getCycleTime($task), 'time_spent_columns' => $this->taskAnalytic->getTimeSpentByColumn($task), @@ -121,6 +121,7 @@ class Task extends Base $this->response->html($this->helper->layout->task('task/time_tracking_details', array( 'task' => $task, + 'project' => $this->project->getById($task['project_id']), 'subtask_paginator' => $subtask_paginator, ))); } @@ -136,6 +137,7 @@ class Task extends Base $this->response->html($this->helper->layout->task('task/transitions', array( 'task' => $task, + 'project' => $this->project->getById($task['project_id']), 'transitions' => $this->transition->getAllByTask($task['id']), ))); } diff --git a/app/Core/Helper.php b/app/Core/Helper.php index 3764a67c..e6152127 100644 --- a/app/Core/Helper.php +++ b/app/Core/Helper.php @@ -10,18 +10,19 @@ use Pimple\Container; * @package core * @author Frederic Guillot * - * @property \Kanboard\Helper\AppHelper $app - * @property \Kanboard\Helper\AssetHelper $asset - * @property \Kanboard\Helper\DateHelper $dt - * @property \Kanboard\Helper\FileHelper $file - * @property \Kanboard\Helper\FormHelper $form - * @property \Kanboard\Helper\ModelHelper $model - * @property \Kanboard\Helper\SubtaskHelper $subtask - * @property \Kanboard\Helper\TaskHelper $task - * @property \Kanboard\Helper\TextHelper $text - * @property \Kanboard\Helper\UrlHelper $url - * @property \Kanboard\Helper\UserHelper $user - * @property \Kanboard\Helper\LayoutHelper $layout + * @property \Kanboard\Helper\AppHelper $app + * @property \Kanboard\Helper\AssetHelper $asset + * @property \Kanboard\Helper\DateHelper $dt + * @property \Kanboard\Helper\FileHelper $file + * @property \Kanboard\Helper\FormHelper $form + * @property \Kanboard\Helper\ModelHelper $model + * @property \Kanboard\Helper\SubtaskHelper $subtask + * @property \Kanboard\Helper\TaskHelper $task + * @property \Kanboard\Helper\TextHelper $text + * @property \Kanboard\Helper\UrlHelper $url + * @property \Kanboard\Helper\UserHelper $user + * @property \Kanboard\Helper\LayoutHelper $layout + * @property \Kanboard\Helper\ProjectHeaderHelper $projectHeader */ class Helper { diff --git a/app/Helper/ProjectHeaderHelper.php b/app/Helper/ProjectHeaderHelper.php new file mode 100644 index 00000000..19570059 --- /dev/null +++ b/app/Helper/ProjectHeaderHelper.php @@ -0,0 +1,80 @@ +request->getStringParam('search', $this->userSession->getFilters($project['id'])); + $this->userSession->setFilters($project['id'], $search); + return urldecode($search); + } + + /** + * Render project header (views switcher and search box) + * + * @access public + * @param array $project + * @param string $controller + * @param string $action + * @param bool $boardView + * @return string + */ + public function render(array $project, $controller, $action, $boardView = false) + { + $filters = array( + 'controller' => $controller, + 'action' => $action, + 'project_id' => $project['id'], + 'search' => $this->getSearchQuery($project), + ); + + return $this->template->render('project_header/header', array( + 'project' => $project, + 'filters' => $filters, + 'categories_list' => $this->category->getList($project['id'], false), + 'users_list' => $this->projectUserRole->getAssignableUsersList($project['id'], false), + 'custom_filters_list' => $this->customFilter->getAll($project['id'], $this->userSession->getId()), + 'board_view' => $boardView, + )); + } + + /** + * Get project description + * + * @access public + * @param array &$project + * @return string + */ + public function getDescription(array &$project) + { + if ($project['owner_id'] > 0) { + $description = t('Project owner: ').'**'.$this->helper->text->e($project['owner_name'] ?: $project['owner_username']).'**'.PHP_EOL.PHP_EOL; + + if (! empty($project['description'])) { + $description .= '***'.PHP_EOL.PHP_EOL; + $description .= $project['description']; + } + } else { + $description = $project['description']; + } + + return $description; + } +} diff --git a/app/ServiceProvider/HelperProvider.php b/app/ServiceProvider/HelperProvider.php index 37be5a05..43a78e32 100644 --- a/app/ServiceProvider/HelperProvider.php +++ b/app/ServiceProvider/HelperProvider.php @@ -27,6 +27,7 @@ class HelperProvider implements ServiceProviderInterface $container['helper']->register('url', '\Kanboard\Helper\UrlHelper'); $container['helper']->register('user', '\Kanboard\Helper\UserHelper'); $container['helper']->register('avatar', '\Kanboard\Helper\AvatarHelper'); + $container['helper']->register('projectHeader', '\Kanboard\Helper\ProjectHeaderHelper'); $container['template'] = new Template($container['helper']); diff --git a/app/Template/activity/project.php b/app/Template/activity/project.php index ba6d6629..176d9b99 100644 --- a/app/Template/activity/project.php +++ b/app/Template/activity/project.php @@ -1,40 +1,14 @@
-
\ No newline at end of file diff --git a/app/Template/analytic/layout.php b/app/Template/analytic/layout.php index f1dba552..35793cbb 100644 --- a/app/Template/analytic/layout.php +++ b/app/Template/analytic/layout.php @@ -1,36 +1,5 @@
- + projectHeader->render($project, 'Listing', 'show') ?>