Allow to associate project categories to colors

The color is then used as background in the board and list views
This commit is contained in:
Julian Maurice 2018-08-09 19:45:51 +02:00
parent efd64d842d
commit ae3ade0908
12 changed files with 33 additions and 7 deletions

View File

@ -41,6 +41,7 @@ class CategoryController extends BaseController
$this->response->html($this->template->render('category/create', array(
'values' => $values + array('project_id' => $project['id']),
'colors' => $this->colorModel->getList(),
'errors' => $errors,
'project' => $project,
)));
@ -87,6 +88,7 @@ class CategoryController extends BaseController
$this->response->html($this->template->render('category/edit', array(
'values' => empty($values) ? $category : $values,
'colors' => $this->colorModel->getList(),
'errors' => $errors,
'project' => $project,
)));

View File

@ -218,7 +218,7 @@ class ColorModel extends Base
$buffer = '';
foreach ($this->default_colors as $color => $values) {
$buffer .= '.task-board.color-'.$color.', .task-summary-container.color-'.$color.', .color-picker-square.color-'.$color.' {';
$buffer .= '.task-board.color-'.$color.', .task-summary-container.color-'.$color.', .color-picker-square.color-'.$color.', .task-board-category.color-'.$color.', .table-list-category.color-'.$color.' {';
$buffer .= 'background-color: '.$values['background'].';';
$buffer .= 'border-color: '.$values['border'];
$buffer .= '}';

View File

@ -123,6 +123,7 @@ class TaskFinderModel extends Base
UserModel::TABLE.'.avatar_path AS assignee_avatar_path',
CategoryModel::TABLE.'.name AS category_name',
CategoryModel::TABLE.'.description AS category_description',
CategoryModel::TABLE.'.color_id AS category_color_id',
ColumnModel::TABLE.'.title AS column_name',
ColumnModel::TABLE.'.position AS column_position',
SwimlaneModel::TABLE.'.name AS swimlane_name',

View File

@ -8,7 +8,12 @@ use PDO;
use Kanboard\Core\Security\Token;
use Kanboard\Core\Security\Role;
const VERSION = 131;
const VERSION = 132;
function version_132(PDO $pdo)
{
$pdo->exec('ALTER TABLE `project_has_categories` ADD COLUMN `color_id` VARCHAR(50) DEFAULT NULL');
}
function version_131(PDO $pdo)
{

View File

@ -8,7 +8,12 @@ use PDO;
use Kanboard\Core\Security\Token;
use Kanboard\Core\Security\Role;
const VERSION = 109;
const VERSION = 110;
function version_110(PDO $pdo)
{
$pdo->exec('ALTER TABLE "project_has_categories" ADD COLUMN "color_id" VARCHAR(50) DEFAULT NULL');
}
function version_109(PDO $pdo)
{

View File

@ -294,6 +294,7 @@ CREATE TABLE `project_has_categories` (
`name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`project_id` int(11) NOT NULL,
`description` mediumtext COLLATE utf8mb4_unicode_ci,
`color_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_project_category` (`project_id`,`name`),
KEY `categories_project_idx` (`project_id`),

View File

@ -542,7 +542,8 @@ CREATE TABLE "project_has_categories" (
"id" integer NOT NULL,
"name" character varying(255) NOT NULL,
"project_id" integer NOT NULL,
"description" "text"
"description" "text",
"color_id" character varying(255)
);

View File

@ -8,7 +8,12 @@ use Kanboard\Core\Security\Token;
use Kanboard\Core\Security\Role;
use PDO;
const VERSION = 118;
const VERSION = 119;
function version_119(PDO $pdo)
{
$pdo->exec('ALTER TABLE project_has_categories ADD COLUMN color_id TEXT DEFAULT NULL');
}
function version_118(PDO $pdo)
{

View File

@ -1,6 +1,6 @@
<?php if (! empty($task['category_id'])): ?>
<div class="task-board-category-container task-board-category-container-color">
<span class="task-board-category category-<?= $this->text->e($task['category_name']) ?>">
<span class="task-board-category category-<?= $this->text->e($task['category_name']) ?> <?= $task['category_color_id'] ? "color-{$task['category_color_id']}" : '' ?>">
<?php if ($not_editable): ?>
<?= $this->text->e($task['category_name']) ?>
<?php else: ?>

View File

@ -7,5 +7,8 @@
<?= $this->form->label(t('Category Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors, array('autofocus', 'required')) ?>
<?= $this->form->label(t('Color'), 'color_id') ?>
<?= $this->form->select('color_id', array('' => t('No color')) + $colors, $values, $errors, array(), 'color-picker') ?>
<?= $this->modal->submitButtons() ?>
</form>

View File

@ -11,5 +11,8 @@
<?= $this->form->label(t('Description'), 'description') ?>
<?= $this->form->textEditor('description', $values, $errors, array('tabindex' => 2)) ?>
<?= $this->form->label(t('Color'), 'color_id') ?>
<?= $this->form->select('color_id', array('' => t('No color')) + $colors, $values, $errors, array(), 'color-picker') ?>
<?= $this->modal->submitButtons() ?>
</form>

View File

@ -4,7 +4,7 @@
<?= $this->text->e($task['column_name']) ?>
<?php if (! empty($task['category_id'])): ?>
<span class="table-list-category">
<span class="table-list-category <?= $task['category_color_id'] ? "color-{$task['category_color_id']}" : '' ?>">
<?php if ($this->user->hasProjectAccess('TaskModificationController', 'edit', $task['project_id'])): ?>
<?= $this->url->link(
$this->text->e($task['category_name']),