Add settings field to control project columns (pull-request #244)

This commit is contained in:
Frédéric Guillot
2014-09-12 17:35:48 +02:00
parent c3a0cf4343
commit 2e6a8d435f
22 changed files with 144 additions and 19 deletions

View File

@@ -25,6 +25,7 @@ class Config extends Base
'menu' => 'config',
'title' => t('Settings'),
'timezones' => $this->config->getTimezones(),
'default_columns' => implode(', ', $this->board->getDefaultColumns()),
)));
}
@@ -58,6 +59,7 @@ class Config extends Base
'menu' => 'config',
'title' => t('Settings'),
'timezones' => $this->config->getTimezones(),
'default_columns' => implode(', ', $this->board->getDefaultColumns()),
)));
}

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
'%s moved the task #%d to the column "%s"' => '%s a déplacé la tâche n°%d dans la colonne « %s »',
'%s moved the task #%d to the position %d in the column "%s"' => '%s a déplacé la tâche n°%d à la position n°%d dans la colonne « %s »',
'Activity' => 'Activité',
'Default values are "%s"' => 'Les valeurs par défaut sont « %s »',
'Default columns for new projects (Comma-separated)' => 'Colonnes par défaut pour les nouveaux projets (séparé par des virgules)',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -494,4 +494,6 @@ return array(
// '%s moved the task #%d to the column "%s"' => '',
// '%s moved the task #%d to the position %d in the column "%s"' => '',
// 'Activity' => '',
// 'Default values are "%s"' => '',
// 'Default columns for new projects (Comma-separated)' => '',
);

View File

@@ -20,6 +20,17 @@ class Board extends Base
*/
const TABLE = 'columns';
/**
* Get Kanboard default columns
*
* @access public
* @return array
*/
public function getDefaultColumns()
{
return array(t('Backlog'), t('Ready'), t('Work in progress'), t('Done'));
}
/**
* Create a board with default columns, must be executed inside a transaction
*

View File

@@ -72,7 +72,7 @@ class Config extends Base
$_SESSION['config'] = $this->getAll();
}
if (isset($_SESSION['config'][$name])) {
if (! empty($_SESSION['config'][$name])) {
return $_SESSION['config'][$name];
}

View File

@@ -496,14 +496,19 @@ class Project extends Base
}
$project_id = $this->db->getConnection()->getLastId();
$column_names = explode(',', $this->config->get('default_columns', implode(',', $this->board->getDefaultColumns())));
$columns = array();
$this->board->create($project_id, array(
array('title' => t('Backlog'), 'task_limit' => 0),
array('title' => t('Ready'), 'task_limit' => 0),
array('title' => t('Work in progress'), 'task_limit' => 0),
array('title' => t('Done'), 'task_limit' => 0),
));
foreach ($column_names as $column_name) {
$column_name = trim($column_name);
if (! empty($column_name)) {
$columns[] = array('title' => $column_name, 'task_limit' => 0);
}
}
$this->board->create($project_id, $columns);
$this->db->closeTransaction();
return (int) $project_id;

View File

@@ -4,7 +4,12 @@ namespace Schema;
use Core\Security;
const VERSION = 25;
const VERSION = 26;
function version_26($pdo)
{
$pdo->exec("ALTER TABLE config ADD COLUMN default_columns VARCHAR(255) DEFAULT ''");
}
function version_25($pdo)
{
@@ -100,7 +105,8 @@ function version_20($pdo)
function version_19($pdo)
{
$pdo->exec("ALTER TABLE config ADD COLUMN api_token VARCHAR(255) DEFAULT '".Security::generateToken()."'");
$pdo->exec("ALTER TABLE config ADD COLUMN api_token VARCHAR(255) DEFAULT ''");
$pdo->exec("UPDATE config SET api_token='".Security::generateToken()."'");
}
function version_18($pdo)
@@ -205,7 +211,7 @@ function version_1($pdo)
$pdo->exec("
CREATE TABLE config (
language CHAR(5) DEFAULT 'en_US',
webhooks_token VARCHAR(255),
webhooks_token VARCHAR(255) DEFAULT '',
timezone VARCHAR(50) DEFAULT 'UTC'
) ENGINE=InnoDB CHARSET=utf8
");

View File

@@ -4,7 +4,12 @@ namespace Schema;
use Core\Security;
const VERSION = 6;
const VERSION = 7;
function version_7($pdo)
{
$pdo->exec("ALTER TABLE config ADD COLUMN default_columns VARCHAR(255) DEFAULT ''");
}
function version_6($pdo)
{
@@ -95,9 +100,9 @@ function version_1($pdo)
$pdo->exec("
CREATE TABLE config (
language CHAR(5) DEFAULT 'en_US',
webhooks_token VARCHAR(255),
webhooks_token VARCHAR(255) DEFAULT '',
timezone VARCHAR(50) DEFAULT 'UTC',
api_token VARCHAR(255)
api_token VARCHAR(255) DEFAULT ''
);
CREATE TABLE users (

View File

@@ -4,7 +4,12 @@ namespace Schema;
use Core\Security;
const VERSION = 25;
const VERSION = 26;
function version_26($pdo)
{
$pdo->exec("ALTER TABLE config ADD COLUMN default_columns TEXT DEFAULT ''");
}
function version_25($pdo)
{
@@ -97,7 +102,8 @@ function version_20($pdo)
function version_19($pdo)
{
$pdo->exec("ALTER TABLE config ADD COLUMN api_token TEXT DEFAULT '".Security::generateToken()."'");
$pdo->exec("ALTER TABLE config ADD COLUMN api_token TEXT DEFAULT ''");
$pdo->exec("UPDATE config SET api_token='".Security::generateToken()."'");
}
function version_18($pdo)
@@ -307,8 +313,8 @@ function version_1($pdo)
{
$pdo->exec("
CREATE TABLE config (
language TEXT,
webhooks_token TEXT
language TEXT DEFAULT 'en_US',
webhooks_token TEXT DEFAULT ''
)
");
@@ -366,7 +372,7 @@ function version_1($pdo)
$pdo->exec("
INSERT INTO config
(language, webhooks_token)
VALUES ('en_US', '".Security::generateToken()."')
(webhooks_token)
VALUES ('".Security::generateToken()."')
");
}

View File

@@ -20,6 +20,10 @@
<?= Helper\form_label(t('Webhook URL for task modification'), 'webhooks_url_task_modification') ?>
<?= Helper\form_text('webhooks_url_task_modification', $values, $errors) ?><br/>
<?= Helper\form_label(t('Default columns for new projects (Comma-separated)'), 'default_columns') ?>
<?= Helper\form_text('default_columns', $values, $errors) ?><br/>
<p class="form-help"><?= t('Default values are "%s"', $default_columns) ?></p>
<div class="form-actions">
<input type="submit" value="<?= t('Save') ?>" class="btn btn-blue"/>
</div>