Add category description (merge and modify pull-request #692)

This commit is contained in:
Frederic Guillot 2015-04-11 16:26:45 -04:00
parent 52bc2efc65
commit d3727e92a6
13 changed files with 121 additions and 24 deletions

View File

@ -121,11 +121,14 @@ class Board extends Base
$this->forbidden(true);
}
list($categories_listing, $categories_description) = $this->category->getBoardCategories($project['id']);
// Display the board with a specific layout
$this->response->html($this->template->layout('board/public', array(
'project' => $project,
'swimlanes' => $this->board->getBoard($project['id']),
'categories' => $this->category->getList($project['id'], false),
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'title' => $project['name'],
'description' => $project['description'],
'no_layout' => true,
@ -181,12 +184,15 @@ class Board extends Base
$this->userSession->storeLastSeenProjectId($project['id']);
list($categories_listing, $categories_description) = $this->category->getBoardCategories($project['id']);
$this->response->html($this->template->layout('board/index', array(
'users' => $this->projectPermission->getMemberList($project['id'], true, true),
'projects' => $projects,
'project' => $project,
'swimlanes' => $this->board->getBoard($project['id']),
'categories' => $this->category->getList($project['id'], true, true),
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'title' => $project['name'],
'description' => $project['description'],
'board_selector' => $board_selector,
@ -358,11 +364,14 @@ class Board extends Base
return $this->response->status(400);
}
list($categories_listing, $categories_description) = $this->category->getBoardCategories($project_id);
$this->response->html(
$this->template->render('board/show', array(
'project' => $this->project->getById($project_id),
'swimlanes' => $this->board->getBoard($project_id),
'categories' => $this->category->getList($project_id, false),
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'),
'board_highlight_period' => $this->config->get('board_highlight_period'),
)),
@ -392,11 +401,14 @@ class Board extends Base
return $this->response->status(304);
}
list($categories_listing, $categories_description) = $this->category->getBoardCategories($project_id);
$this->response->html(
$this->template->render('board/show', array(
'project' => $this->project->getById($project_id),
'swimlanes' => $this->board->getBoard($project_id),
'categories' => $this->category->getList($project_id, false),
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'),
'board_highlight_period' => $this->config->get('board_highlight_period'),
))

View File

@ -73,6 +73,38 @@ class Category extends Base
->findOneColumn('id');
}
/**
* Prepare categories to be displayed on the board
*
* @access public
* @param integer $project_id
* @return array
*/
public function getBoardCategories($project_id)
{
$descriptions = array();
$listing = array(
-1 => t('All categories'),
0 => t('No category'),
);
$categories = $this->db->table(self::TABLE)
->eq('project_id', $project_id)
->asc('name')
->findAll();
foreach ($categories as $category) {
$listing[$category['id']] = $category['name'];
$descriptions[$category['id']] = $category['description'];
}
return array(
$listing,
$descriptions,
);
}
/**
* Return the list of all categories
*

View File

@ -6,7 +6,12 @@ use PDO;
use Core\Security;
use Model\Link;
const VERSION = 62;
const VERSION = 63;
function version_63($pdo)
{
$pdo->exec('ALTER TABLE project_has_categories ADD COLUMN description TEXT');
}
function version_62($pdo)
{

View File

@ -6,7 +6,12 @@ use PDO;
use Core\Security;
use Model\Link;
const VERSION = 43;
const VERSION = 44;
function version_44($pdo)
{
$pdo->exec('ALTER TABLE project_has_categories ADD COLUMN description TEXT');
}
function version_43($pdo)
{

View File

@ -6,7 +6,12 @@ use Core\Security;
use PDO;
use Model\Link;
const VERSION = 61;
const VERSION = 62;
function version_62($pdo)
{
$pdo->exec('ALTER TABLE project_has_categories ADD COLUMN description TEXT');
}
function version_61($pdo)
{

View File

@ -1,7 +1,7 @@
<section id="main">
<?= $this->render('board/filters', array(
'categories' => $categories,
'categories' => $categories_listing,
'users' => $users,
'project' => $project,
)) ?>
@ -9,7 +9,8 @@
<?= $this->render('board/show', array(
'project' => $project,
'swimlanes' => $swimlanes,
'categories' => $categories,
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'board_private_refresh_interval' => $board_private_refresh_interval,
'board_highlight_period' => $board_highlight_period,
)) ?>

View File

@ -3,7 +3,8 @@
<?= $this->render('board/show', array(
'project' => $project,
'swimlanes' => $swimlanes,
'categories' => $categories,
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'board_private_refresh_interval' => $board_private_refresh_interval,
'board_highlight_period' => $board_highlight_period,
'not_editable' => true,

View File

@ -21,7 +21,8 @@
'project' => $project,
'swimlane' => $swimlane,
'board_highlight_period' => $board_highlight_period,
'categories' => $categories,
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'hide_swimlane' => count($swimlanes) === 1,
'not_editable' => isset($not_editable),
)) ?>

View File

@ -74,7 +74,8 @@
<?= $this->render($not_editable ? 'board/task_public' : 'board/task_private', array(
'project' => $project,
'task' => $task,
'categories' => $categories,
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'board_highlight_period' => $board_highlight_period,
'not_editable' => $not_editable,
)) ?>

View File

@ -1,15 +1,19 @@
<?php if ($task['category_id']): ?>
<?php if (! empty($task['category_id'])): ?>
<div class="task-board-category-container">
<span class="task-board-category">
<?= $this->a(
$this->inList($task['category_id'], $categories),
'board',
'changeCategory',
array('task_id' => $task['id'], 'project_id' => $task['project_id']),
false,
'task-board-popover',
t('Change category')
) ?>
<?php if ($not_editable): ?>
<?= $this->inList($task['category_id'], $categories_listing) ?>
<?php else: ?>
<?= $this->a(
$this->inList($task['category_id'], $categories_listing),
'board',
'changeCategory',
array('task_id' => $task['id'], 'project_id' => $task['project_id']),
false,
'task-board-popover' . (isset($categories_description[$task['category_id']]) ? ' column-tooltip' : ''),
isset($categories_description[$task['category_id']]) ? $this->markdown($categories_description[$task['category_id']]) : t('Change category')
) ?>
<?php endif ?>
</span>
</div>
<?php endif ?>

View File

@ -40,6 +40,11 @@
<?= $this->a($this->e($task['title']), 'task', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, '', t('View this task')) ?>
</div>
<?= $this->render('board/task_footer', array('task' => $task, 'categories' => $categories)) ?>
<?= $this->render('board/task_footer', array(
'task' => $task,
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'not_editable' => $not_editable,
)) ?>
</div>
</div>

View File

@ -22,5 +22,10 @@
<?= $this->a($this->e($task['title']), 'task', 'readonly', array('task_id' => $task['id'], 'token' => $project['token'])) ?>
</div>
<?= $this->render('board/task_footer', array('task' => $task, 'categories' => $categories)) ?>
<?= $this->render('board/task_footer', array(
'task' => $task,
'categories_listing' => $categories_listing,
'categories_description' => $categories_description,
'not_editable' => $not_editable,
)) ?>
</div>

View File

@ -12,6 +12,26 @@
<?= $this->formLabel(t('Category Name'), 'name') ?>
<?= $this->formText('name', $values, $errors, array('autofocus', 'required', 'maxlength="50"')) ?>
<?= $this->formLabel(t('Description'), 'description') ?>
<div class="form-tabs">
<div class="write-area">
<?= $this->formTextarea('description', $values, $errors) ?>
</div>
<div class="preview-area">
<div class="markdown"></div>
</div>
<ul class="form-tabs-nav">
<li class="form-tab form-tab-selected">
<i class="fa fa-pencil-square-o fa-fw"></i><a id="markdown-write" href="#"><?= t('Write') ?></a>
</li>
<li class="form-tab">
<a id="markdown-preview" href="#"><i class="fa fa-eye fa-fw"></i><?= t('Preview') ?></a>
</li>
</ul>
</div>
<div class="form-help"><a href="http://kanboard.net/documentation/syntax-guide" target="_blank" rel="noreferrer"><?= t('Write your text in Markdown') ?></a></div>
<div class="form-actions">
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/>
</div>