Add section for predefined contents

This commit is contained in:
Frederic Guillot 2017-10-30 16:46:39 -07:00
parent 0a3f2a6a32
commit 48b40ec7bf
35 changed files with 137 additions and 6 deletions

View File

@ -0,0 +1,61 @@
<?php
namespace Kanboard\Controller;
/**
* Project Predefined Content Controller
*
* @package Kanboard\Controller
* @author Frederic Guillot
*/
class ProjectPredefinedContentController extends BaseController
{
/**
* Edit project
*
* @access public
* @param array $values
* @param array $errors
*/
public function show(array $values = array(), array $errors = array())
{
$project = $this->getProject();
$this->response->html($this->helper->layout->project('project_predefined_content/show', array(
'values' => empty($values) ? $project : $values,
'errors' => $errors,
'project' => $project,
'title' => t('Predefined Contents')
)));
}
/**
* Validate and update a project
*
* @access public
*/
public function update()
{
$project = $this->getProject();
$values = $this->request->getValues();
$values = array(
'id' => $project['id'],
'name' => $project['name'],
'predefined_email_subjects' => isset($values['predefined_email_subjects']) ? $values['predefined_email_subjects'] : '',
);
list($valid, $errors) = $this->projectValidator->validateModification($values);
if ($valid) {
if ($this->projectModel->update($values)) {
$this->flash->success(t('Project updated successfully.'));
return $this->response->redirect($this->helper->url->to('ProjectPredefinedContentController', 'show', array('project_id' => $project['id'])), true);
} else {
$this->flash->failure(t('Unable to update this project.'));
}
}
return $this->show($values, $errors);
}
}

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
'Subtask added successfully.' => 'Sous-tâche ajoutée avec succès.',
'%d subtasks added successfully.' => '%d sous-tâches ajoutées avec succès.',
'Enter one subtask by line.' => 'Entrez une sous-tâche par ligne.',
'Predefined Contents' => 'Contenus prédéfini',
'Predefined contents' => 'Contenus prédéfini',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
'Subtask added successfully.' => 'サブタスクを追加しました',
'%d subtasks added successfully.' => '%d 件のサブタスクを追加しました',
'Enter one subtask by line.' => '1行に1件のサブタスクを入力',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
'Subtask added successfully.' => 'Подзадача успешно добавлена.',
'%d subtasks added successfully.' => '%d подзадач(а) успешно добавлено.',
'Enter one subtask by line.' => 'Записывайте по одной подзадаче на строку.',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1349,4 +1349,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -1343,4 +1343,6 @@ return array(
// 'Subtask added successfully.' => '',
// '%d subtasks added successfully.' => '',
// 'Enter one subtask by line.' => '',
// 'Predefined Contents' => '',
// 'Predefined contents' => '',
);

View File

@ -92,6 +92,7 @@ class AuthenticationProvider implements ServiceProviderInterface
$acl->add('ProjectViewController', array('share', 'updateSharing', 'integrations', 'updateIntegrations', 'notifications', 'updateNotifications', 'duplicate', 'doDuplication'), Role::PROJECT_MANAGER);
$acl->add('ProjectPermissionController', '*', Role::PROJECT_MANAGER);
$acl->add('ProjectEditController', '*', Role::PROJECT_MANAGER);
$acl->add('ProjectPredefinedContentController', '*', Role::PROJECT_MANAGER);
$acl->add('ProjectFileController', '*', Role::PROJECT_MEMBER);
$acl->add('ProjectUserOverviewController', '*', Role::PROJECT_MANAGER);
$acl->add('ProjectStatusController', '*', Role::PROJECT_MANAGER);

View File

@ -13,6 +13,9 @@
<li <?= $this->app->checkMenuSelection('ProjectEditController') ?>>
<?= $this->url->link(t('Edit project'), 'ProjectEditController', 'show', array('project_id' => $project['id'])) ?>
</li>
<li <?= $this->app->checkMenuSelection('ProjectPredefinedContentController') ?>>
<?= $this->url->link(t('Predefined contents'), 'ProjectPredefinedContentController', 'show', array('project_id' => $project['id'])) ?>
</li>
<li <?= $this->app->checkMenuSelection('ProjectViewController', 'share') ?>>
<?= $this->url->link(t('Public access'), 'ProjectViewController', 'share', array('project_id' => $project['id'])) ?>
</li>

View File

@ -62,11 +62,5 @@
<?= $this->form->number('priority_end', $values, $errors, array('tabindex="10"')) ?>
</fieldset>
<fieldset>
<legend><?= t('Predefined Email Subjects') ?></legend>
<?= $this->form->textarea('predefined_email_subjects', $values, $errors, array('tabindex="11"')) ?>
<p class="form-help"><?= t('Write one subject by line.') ?></p>
</fieldset>
<?= $this->modal->submitButtons(array('tabindex' => 11)) ?>
</form>

View File

@ -0,0 +1,14 @@
<div class="page-header">
<h2><?= t('Predefined Contents') ?></h2>
</div>
<form method="post" action="<?= $this->url->href('ProjectPredefinedContentController', 'update', array('project_id' => $project['id'], 'redirect' => 'edit')) ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<fieldset>
<legend><?= t('Predefined Email Subjects') ?></legend>
<?= $this->form->textarea('predefined_email_subjects', $values, $errors, array('tabindex="1"')) ?>
<p class="form-help"><?= t('Write one subject by line.') ?></p>
</fieldset>
<?= $this->modal->submitButtons(array('tabindex' => 2)) ?>
</form>

View File

@ -210,6 +210,7 @@ return array(
'Kanboard\\Controller\\ProjectListController' => $baseDir . '/app/Controller/ProjectListController.php',
'Kanboard\\Controller\\ProjectOverviewController' => $baseDir . '/app/Controller/ProjectOverviewController.php',
'Kanboard\\Controller\\ProjectPermissionController' => $baseDir . '/app/Controller/ProjectPermissionController.php',
'Kanboard\\Controller\\ProjectPredefinedContentController' => $baseDir . '/app/Controller/ProjectPredefinedContentController.php',
'Kanboard\\Controller\\ProjectRoleController' => $baseDir . '/app/Controller/ProjectRoleController.php',
'Kanboard\\Controller\\ProjectRoleRestrictionController' => $baseDir . '/app/Controller/ProjectRoleRestrictionController.php',
'Kanboard\\Controller\\ProjectStatusController' => $baseDir . '/app/Controller/ProjectStatusController.php',

View File

@ -346,6 +346,7 @@ class ComposerStaticInit6edea6294a88689e3f5c56484bb70c9b
'Kanboard\\Controller\\ProjectListController' => __DIR__ . '/../..' . '/app/Controller/ProjectListController.php',
'Kanboard\\Controller\\ProjectOverviewController' => __DIR__ . '/../..' . '/app/Controller/ProjectOverviewController.php',
'Kanboard\\Controller\\ProjectPermissionController' => __DIR__ . '/../..' . '/app/Controller/ProjectPermissionController.php',
'Kanboard\\Controller\\ProjectPredefinedContentController' => __DIR__ . '/../..' . '/app/Controller/ProjectPredefinedContentController.php',
'Kanboard\\Controller\\ProjectRoleController' => __DIR__ . '/../..' . '/app/Controller/ProjectRoleController.php',
'Kanboard\\Controller\\ProjectRoleRestrictionController' => __DIR__ . '/../..' . '/app/Controller/ProjectRoleRestrictionController.php',
'Kanboard\\Controller\\ProjectStatusController' => __DIR__ . '/../..' . '/app/Controller/ProjectStatusController.php',