Add project description field.

Description is shown in a popup when hovering the 'information' icon, like column description,
which is shown in project list on dashboard and in board's title.

This is useful to document the categories and colors used in the project.
This commit is contained in:
Francois Ferrand 2015-02-24 14:20:34 +01:00
parent 0450d86a18
commit dedf425e81
11 changed files with 91 additions and 15 deletions

View File

@ -127,6 +127,7 @@ class Board extends Base
'swimlanes' => $this->board->getBoard($project['id']),
'categories' => $this->category->getList($project['id'], false),
'title' => $project['name'],
'description' => $project['description'],
'no_layout' => true,
'not_editable' => true,
'board_public_refresh_interval' => $this->config->get('board_public_refresh_interval'),
@ -187,6 +188,7 @@ class Board extends Base
'swimlanes' => $this->board->getBoard($project['id']),
'categories' => $this->category->getList($project['id'], true, true),
'title' => $project['name'],
'description' => $project['description'],
'board_selector' => $board_selector,
'board_private_refresh_interval' => $this->config->get('board_private_refresh_interval'),
'board_highlight_period' => $this->config->get('board_highlight_period'),

View File

@ -6,7 +6,12 @@ use PDO;
use Core\Security;
use Model\Link;
const VERSION = 46;
const VERSION = 47;
function version_47($pdo)
{
$pdo->exec('ALTER TABLE projects ADD COLUMN description TEXT');
}
function version_46($pdo)
{

View File

@ -6,7 +6,12 @@ use PDO;
use Core\Security;
use Model\Link;
const VERSION = 27;
const VERSION = 28;
function version_28($pdo)
{
$pdo->exec('ALTER TABLE projects ADD COLUMN description TEXT');
}
function version_27($pdo)
{

View File

@ -6,7 +6,12 @@ use Core\Security;
use PDO;
use Model\Link;
const VERSION = 45;
const VERSION = 46;
function version_46($pdo)
{
$pdo->exec('ALTER TABLE projects ADD COLUMN description TEXT');
}
function version_45($pdo)
{

View File

@ -17,9 +17,15 @@
<?php if ($this->isManager($project['id'])): ?>
<?= $this->a('<i class="fa fa-cog"></i>', 'project', 'show', array('project_id' => $project['id']), false, 'dashboard-table-link', t('Settings')) ?>&nbsp;
<?php endif ?>
<?= $this->a('<i class="fa fa-calendar"></i>', 'calendar', 'show', array('project_id' => $project['id']), false, 'dashboard-table-link', t('Calendar')) ?>&nbsp;
<?= $this->a($this->e($project['name']), 'board', 'show', array('project_id' => $project['id'])) ?>
<?php if (! empty($project['description'])): ?>
<span class="column-tooltip" title="<?= $this->markdown($project['description']) ?>">
<i class="fa fa-info-circle"></i>
</span>
<?php endif ?>
</td>
<td class="dashboard-project-stats">
<?php foreach ($project['columns'] as $column): ?>
@ -32,4 +38,4 @@
</table>
<?= $paginator ?>
<?php endif ?>
<?php endif ?>

View File

@ -35,7 +35,13 @@
<?php else: ?>
<header>
<nav>
<h1><?= $this->a('K<span>B</span>', 'app', 'index', array(), false, 'logo', t('Dashboard')).' '.$this->summary($this->e($title)) ?></h1>
<h1><?= $this->a('K<span>B</span>', 'app', 'index', array(), false, 'logo', t('Dashboard')).' '.$this->summary($this->e($title)) ?>
<?php if (! empty($description)): ?>
<span class="column-tooltip" title="<?= $this->markdown($description) ?>">
<i class="fa fa-info-circle"></i>
</span>
<?php endif ?>
</h1>
<ul>
<?php if (isset($board_selector) && ! empty($board_selector)): ?>
<li>

View File

@ -9,7 +9,28 @@
<?= $this->formLabel(t('Name'), 'name') ?>
<?= $this->formText('name', $values, $errors, array('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>
</form>
</form>

View File

@ -39,7 +39,13 @@
<?php if ($project['is_private']): ?>
<i class="fa fa-lock fa-fw"></i>
<?php endif ?>
<?= $this->a($this->e($project['name']), 'project', 'show', array('project_id' => $project['id'])) ?>
<?php if (! empty($project['description'])): ?>
<span class="column-tooltip" title="<?= $this->markdown($project['description']) ?>">
<i class="fa fa-info-circle"></i>
</span>
<?php endif ?>
</td>
<td class="dashboard-project-stats">
<?php foreach ($project['columns'] as $column): ?>
@ -54,4 +60,4 @@
<?= $paginator ?>
<?php endif ?>
</section>
</section>
</section>

View File

@ -60,3 +60,13 @@
</tr>
<?php endforeach ?>
</table>
<?php if (! empty($project['description'])): ?>
<div class="page-header">
<h2><?= t('Description') ?></h2>
</div>
<article class="markdown">
<?= $this->markdown($project['description']) ?>
</article>
<?php endif ?>

View File

@ -176,6 +176,7 @@ Response example:
- Purpose: **Create a new project**
- Parameters:
- **name** (string, required)
- **description** (string, optional)
- Result on success: **project_id**
- Result on failure: **false**
@ -235,7 +236,8 @@ Response example:
"is_active": "1",
"token": "",
"last_modified": "1410263246",
"is_public": "0"
"is_public": "0",
"description": "A sample project"
}
}
```
@ -273,7 +275,8 @@ Response example:
"is_active": "1",
"token": "",
"last_modified": "0",
"is_public": "0"
"is_public": "0",
"description": "A sample project"
}
}
```
@ -309,7 +312,8 @@ Response example:
"is_active": "1",
"token": "",
"last_modified": "0",
"is_public": "0"
"is_public": "0",
"description": "PHP client project"
},
{
"id": "1",
@ -317,7 +321,8 @@ Response example:
"is_active": "1",
"token": "",
"last_modified": "0",
"is_public": "0"
"is_public": "0",
"description": "Test project"
}
]
}
@ -332,6 +337,7 @@ Response example:
- **is_active** (integer, optional)
- **token** (string, optional)
- **is_public** (integer, optional)
- **description** (string, optional)
- Result on success: **true**
- Result on failure: **false**

View File

@ -22,13 +22,16 @@ $server->bind('enableProjectPublicAccess', $container['project'], 'enablePublicA
$server->bind('disableProjectPublicAccess', $container['project'], 'disablePublicAccess');
$server->bind('getProjectActivity', $container['projectActivity'], 'getProjects');
$server->register('createProject', function($name) use ($container) {
$values = array('name' => $name);
$server->register('createProject', function($name, $description = null) use ($container) {
$values = array(
'name' => $name,
'description' => $description
);
list($valid,) = $container['project']->validateCreation($values);
return $valid ? $container['project']->create($values) : false;
});
$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null) use ($container) {
$server->register('updateProject', function($id, $name, $is_active = null, $is_public = null, $token = null, $description = null) use ($container) {
$values = array(
'id' => $id,
@ -36,6 +39,7 @@ $server->register('updateProject', function($id, $name, $is_active = null, $is_p
'is_active' => $is_active,
'is_public' => $is_public,
'token' => $token,
'description' => $description
);
foreach ($values as $key => $value) {