Hide tasks within specific columns in dashboard (#2424)

This commit is contained in:
Busfreak 2016-07-05 17:09:13 +02:00 committed by Frédéric Guillot
parent b215296f97
commit 6ccd8c11fa
36 changed files with 66 additions and 9 deletions

View File

@ -66,7 +66,7 @@ class ColumnController extends BaseController
list($valid, $errors) = $this->columnValidator->validateCreation($values);
if ($valid) {
if ($this->columnModel->create($project['id'], $values['title'], $values['task_limit'], $values['description']) !== false) {
if ($this->columnModel->create($project['id'], $values['title'], $values['task_limit'], $values['description'], $values['hide_in_dashboard']) !== false) {
$this->flash->success(t('Column created successfully.'));
return $this->response->redirect($this->helper->url->to('ColumnController', 'index', array('project_id' => $project['id'])), true);
} else {
@ -111,7 +111,7 @@ class ColumnController extends BaseController
list($valid, $errors) = $this->columnValidator->validateModification($values);
if ($valid) {
if ($this->columnModel->update($values['id'], $values['title'], $values['task_limit'], $values['description'])) {
if ($this->columnModel->update($values['id'], $values['title'], $values['task_limit'], $values['description'], $values['hide_in_dashboard']) !== false) {
$this->flash->success(t('Board updated successfully.'));
return $this->response->redirect($this->helper->url->to('ColumnController', 'index', array('project_id' => $project['id'])));
} else {

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
'Global tags' => 'Globale Schlagwörter',
'There is no global tag at the moment.' => 'Es gibt zur Zeit kein globales Schlagwort',
'This field cannot be empty' => 'Dieses Feld kann nicht leer sein',
'Hide tasks in this column in the Dashboard' => 'Aufgaben in dieser Spalte im Dashboard ausblenden',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1217,4 +1217,5 @@ return array(
'Global tags' => 'Libellés globaux',
'There is no global tag at the moment.' => 'Il n\'y a aucun libellé global pour le moment.',
'This field cannot be empty' => 'Ce champ ne peut être vide',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
'Global tags' => 'Tag globali',
'There is no global tag at the moment.' => 'Non sono definiti tag globali al momento.',
'This field cannot be empty' => 'Questo campo non può essere vuoto',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
//' Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
'Global tags' => 'Etiquetas globais',
'There is no global tag at the moment.' => 'De momento não existe nenhuma etiqueta global.',
// 'This field cannot be empty' => '',
//'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
'Global tags' => 'Глобальные метка',
'There is no global tag at the moment.' => 'Нет глобальных меток.',
'This field cannot be empty' => 'Это поле не может быть пустым',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -1216,4 +1216,5 @@ return array(
// 'Global tags' => '',
// 'There is no global tag at the moment.' => '',
// 'This field cannot be empty' => '',
// 'Hide tasks in this column in the Dashboard' => '',
);

View File

@ -144,13 +144,14 @@ class ColumnModel extends Base
* @param string $description Column description
* @return boolean|integer
*/
public function create($project_id, $title, $task_limit = 0, $description = '')
public function create($project_id, $title, $task_limit = 0, $description = '', $hide_in_dashboard = 0)
{
$values = array(
'project_id' => $project_id,
'title' => $title,
'task_limit' => intval($task_limit),
'position' => $this->getLastColumnPosition($project_id) + 1,
'hide_in_dashboard' => $hide_in_dashboard,
'description' => $description,
);
@ -167,11 +168,12 @@ class ColumnModel extends Base
* @param string $description Optional description
* @return boolean
*/
public function update($column_id, $title, $task_limit = 0, $description = '')
public function update($column_id, $title, $task_limit = 0, $description = '', $hide_in_dashboard = 0)
{
return $this->db->table(self::TABLE)->eq('id', $column_id)->update(array(
'title' => $title,
'task_limit' => intval($task_limit),
'hide_in_dashboard' => $hide_in_dashboard,
'description' => $description,
));
}

View File

@ -81,7 +81,8 @@ class TaskFinderModel extends Base
->join(ColumnModel::TABLE, 'id', 'column_id')
->eq(TaskModel::TABLE.'.owner_id', $user_id)
->eq(TaskModel::TABLE.'.is_active', TaskModel::STATUS_OPEN)
->eq(ProjectModel::TABLE.'.is_active', ProjectModel::ACTIVE);
->eq(ProjectModel::TABLE.'.is_active', ProjectModel::ACTIVE)
->eq(ColumnModel::TABLE.'.hide_in_dashboard', 0);
}
/**

View File

@ -6,7 +6,12 @@ use PDO;
use Kanboard\Core\Security\Token;
use Kanboard\Core\Security\Role;
const VERSION = 111;
const VERSION = 112;
function version_112(PDO $pdo)
{
$pdo->exec('ALTER TABLE columns ADD COLUMN hide_in_dashboard INT DEFAULT 0 NOT NULL');
}
function version_111(PDO $pdo)
{

View File

@ -6,7 +6,12 @@ use PDO;
use Kanboard\Core\Security\Token;
use Kanboard\Core\Security\Role;
const VERSION = 90;
const VERSION = 91;
function version_91(PDO $pdo)
{
$pdo->exec("ALTER TABLE columns ADD COLUMN hide_in_dashboard BOOLEAN DEFAULT '0'");
}
function version_90(PDO $pdo)
{

View File

@ -44,6 +44,7 @@ CREATE TABLE `columns` (
`position` int(11) NOT NULL,
`project_id` int(11) NOT NULL,
`task_limit` int(11) DEFAULT '0',
`hide_in_dashboard` int(11) DEFAULT '0',
`description` text,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_title_project` (`title`,`project_id`),

View File

@ -98,6 +98,7 @@ CREATE TABLE "columns" (
"position" integer,
"project_id" integer NOT NULL,
"task_limit" integer DEFAULT 0,
"hide_in_dashboard" integer DEFAULT 0,
"description" "text"
);

View File

@ -6,7 +6,12 @@ use Kanboard\Core\Security\Token;
use Kanboard\Core\Security\Role;
use PDO;
const VERSION = 102;
const VERSION = 103;
function version_103(PDO $pdo)
{
$pdo->exec("ALTER TABLE columns ADD COLUMN hide_in_dashboard INTEGER DEFAULT 0 NOT NULL");
}
function version_102(PDO $pdo)
{

View File

@ -13,6 +13,8 @@
<?= $this->form->label(t('Task limit'), 'task_limit') ?>
<?= $this->form->number('task_limit', $values, $errors) ?>
<?= $this->form->checkbox('hide_in_dashboard', t('Hide tasks in this column in the Dashboard'), 1) ?>
<?= $this->form->label(t('Description'), 'description') ?>
<?= $this->form->textarea('description', $values, $errors, array(), 'markdown-editor') ?>

View File

@ -15,6 +15,8 @@
<?= $this->form->label(t('Task limit'), 'task_limit') ?>
<?= $this->form->number('task_limit', $values, $errors) ?>
<?= $this->form->checkbox('hide_in_dashboard', t('Hide tasks in this column in the Dashboard'), 1, $values['hide_in_dashboard'] == 1) ?>
<?= $this->form->label(t('Description'), 'description') ?>
<?= $this->form->textarea('description', $values, $errors, array(), 'markdown-editor') ?>

View File

@ -54,9 +54,10 @@
</div>
<table class="table-stripped">
<tr>
<th class="column-60"><?= t('Column') ?></th>
<th class="column-40"><?= t('Column') ?></th>
<th class="column-20"><?= t('Task limit') ?></th>
<th class="column-20"><?= t('Active tasks') ?></th>
<th class="column-20"><?= t('Hide tasks in this column in the Dashboard') ?></th>
</tr>
<?php foreach ($stats['columns'] as $column): ?>
<tr>
@ -70,6 +71,13 @@
</td>
<td><?= $column['task_limit'] ?: '∞' ?></td>
<td><?= $column['nb_active_tasks'] ?></td>
<td>
<?php if ($column['hide_in_dashboard'] == 1): ?>
<?= t('Yes') ?>
<?php else: ?>
<?= t('No') ?>
<?php endif ?>
</td>
</tr>
<?php endforeach ?>
</table>