summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2018-06-06 11:07:12 -0700
committerFrédéric Guillot <fred@kanboard.net>2018-06-06 11:07:12 -0700
commit2a299d33d1e8e6b1fe31cafbf4b9c0a12d89f99a (patch)
tree27ba1f56a5deed05ea005498167ae6cf50261500 /app
parent653128cdb45a43d8f44c5dc5d53ab0caf53dea84 (diff)
Add bulk task modification in list view
Diffstat (limited to 'app')
-rw-r--r--app/Controller/TaskBulkChangePropertyController.php83
-rw-r--r--app/Locale/bs_BA/translations.php2
-rw-r--r--app/Locale/ca_ES/translations.php2
-rw-r--r--app/Locale/cs_CZ/translations.php2
-rw-r--r--app/Locale/da_DK/translations.php2
-rw-r--r--app/Locale/de_DE/translations.php2
-rw-r--r--app/Locale/el_GR/translations.php2
-rw-r--r--app/Locale/es_ES/translations.php2
-rw-r--r--app/Locale/fi_FI/translations.php2
-rw-r--r--app/Locale/fr_FR/translations.php2
-rw-r--r--app/Locale/hr_HR/translations.php2
-rw-r--r--app/Locale/hu_HU/translations.php2
-rw-r--r--app/Locale/id_ID/translations.php2
-rw-r--r--app/Locale/it_IT/translations.php2
-rw-r--r--app/Locale/ja_JP/translations.php2
-rw-r--r--app/Locale/ko_KR/translations.php2
-rw-r--r--app/Locale/my_MY/translations.php2
-rw-r--r--app/Locale/nb_NO/translations.php2
-rw-r--r--app/Locale/nl_NL/translations.php2
-rw-r--r--app/Locale/pl_PL/translations.php2
-rw-r--r--app/Locale/pt_BR/translations.php2
-rw-r--r--app/Locale/pt_PT/translations.php2
-rw-r--r--app/Locale/ro_RO/translations.php2
-rw-r--r--app/Locale/ru_RU/translations.php2
-rw-r--r--app/Locale/sr_Latn_RS/translations.php2
-rw-r--r--app/Locale/sv_SE/translations.php2
-rw-r--r--app/Locale/th_TH/translations.php2
-rw-r--r--app/Locale/tr_TR/translations.php2
-rw-r--r--app/Locale/uk_UA/translations.php2
-rw-r--r--app/Locale/vi_VN/translations.php2
-rw-r--r--app/Locale/zh_CN/translations.php2
-rw-r--r--app/Locale/zh_TW/translations.php2
-rw-r--r--app/ServiceProvider/AuthenticationProvider.php1
-rw-r--r--app/Template/task_bulk_change_property/show.php102
-rw-r--r--app/Template/task_list/header.php3
35 files changed, 251 insertions, 0 deletions
diff --git a/app/Controller/TaskBulkChangePropertyController.php b/app/Controller/TaskBulkChangePropertyController.php
new file mode 100644
index 00000000..215131df
--- /dev/null
+++ b/app/Controller/TaskBulkChangePropertyController.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace Kanboard\Controller;
+
+use Kanboard\Core\Controller\AccessForbiddenException;
+
+class TaskBulkChangePropertyController extends BaseController
+{
+ public function show(array $values = [], array $errors = [])
+ {
+ $project = $this->getProject();
+
+ if (empty($values)) {
+ $values['task_ids'] = $this->request->getStringParam('task_ids');
+ }
+
+ $this->response->html($this->template->render('task_bulk_change_property/show', [
+ 'project' => $project,
+ 'values' => $values,
+ 'errors' => $errors,
+ 'users_list' => $this->projectUserRoleModel->getAssignableUsersList($project['id']),
+ 'categories_list' => $this->categoryModel->getList($project['id']),
+ ]));
+ }
+
+ public function save()
+ {
+ $project = $this->getProject();
+ $values = $this->request->getValues();
+ $taskIDs = explode(',', $values['task_ids']);
+
+ foreach ($taskIDs as $taskID) {
+ $changes = [];
+
+ if (isset($values['change_color']) && $values['change_color'] == 1) {
+ $changes['color_id'] = $values['color_id'];
+ }
+
+ if (isset($values['change_assignee']) && $values['change_assignee'] == 1) {
+ $changes['owner_id'] = $values['owner_id'];
+ }
+
+ if (isset($values['change_priority']) && $values['change_priority'] == 1) {
+ $changes['priority'] = $values['priority'];
+ }
+
+ if (isset($values['change_category']) && $values['change_category'] == 1) {
+ $changes['category_id'] = $values['category_id'];
+ }
+
+ if (isset($values['change_tags']) && $values['change_tags'] == 1) {
+ $changes['tags'] = $values['tags'];
+ }
+
+ if (isset($values['change_due_date']) && $values['change_due_date'] == 1) {
+ $changes['date_due'] = $values['date_due'];
+ }
+
+ if (isset($values['change_start_date']) && $values['change_start_date'] == 1) {
+ $changes['date_started'] = $values['date_started'];
+ }
+
+ if (isset($values['change_estimated_time']) && $values['change_estimated_time'] == 1) {
+ $changes['time_estimated'] = $values['time_estimated'];
+ }
+
+ if (isset($values['change_spent_time']) && $values['change_spent_time'] == 1) {
+ $changes['time_spent'] = $values['time_spent'];
+ }
+
+ if (isset($values['change_score']) && $values['change_score'] == 1) {
+ $changes['score'] = $values['score'];
+ }
+
+ if (! empty($changes)) {
+ $changes['id'] = $taskID;
+ $this->taskModificationModel->update($changes);
+ }
+ }
+
+ $this->response->redirect($this->helper->url->to('TaskListController', 'show', ['project_id' => $project['id']]), true);
+ }
+}
diff --git a/app/Locale/bs_BA/translations.php b/app/Locale/bs_BA/translations.php
index cf83f3d4..3020fbb9 100644
--- a/app/Locale/bs_BA/translations.php
+++ b/app/Locale/bs_BA/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/ca_ES/translations.php b/app/Locale/ca_ES/translations.php
index 30ab654e..a8535de0 100644
--- a/app/Locale/ca_ES/translations.php
+++ b/app/Locale/ca_ES/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/cs_CZ/translations.php b/app/Locale/cs_CZ/translations.php
index 76a661bd..ec81a30d 100644
--- a/app/Locale/cs_CZ/translations.php
+++ b/app/Locale/cs_CZ/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/da_DK/translations.php b/app/Locale/da_DK/translations.php
index 7da576d7..2f17089e 100644
--- a/app/Locale/da_DK/translations.php
+++ b/app/Locale/da_DK/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/de_DE/translations.php b/app/Locale/de_DE/translations.php
index ee976dfe..d76c4f5c 100644
--- a/app/Locale/de_DE/translations.php
+++ b/app/Locale/de_DE/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/el_GR/translations.php b/app/Locale/el_GR/translations.php
index fa634fb1..9cb56e7c 100644
--- a/app/Locale/el_GR/translations.php
+++ b/app/Locale/el_GR/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/es_ES/translations.php b/app/Locale/es_ES/translations.php
index 5f6daedf..88cdd806 100644
--- a/app/Locale/es_ES/translations.php
+++ b/app/Locale/es_ES/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/fi_FI/translations.php b/app/Locale/fi_FI/translations.php
index ea6cb5cf..882e54e3 100644
--- a/app/Locale/fi_FI/translations.php
+++ b/app/Locale/fi_FI/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/fr_FR/translations.php b/app/Locale/fr_FR/translations.php
index c7bc5a36..050d1a36 100644
--- a/app/Locale/fr_FR/translations.php
+++ b/app/Locale/fr_FR/translations.php
@@ -1381,4 +1381,6 @@ return array(
'Unselect All' => 'Tout désélectionner',
'Apply action' => 'Appliquer une action',
'Move selected tasks to another column' => 'Déplaçer les tâches sélectionnées vers une autre colonne',
+ 'Edit tasks in bulk' => 'Modifier les tâches en masse',
+ 'Choose the properties that you would to change for the selected tasks.' => 'Choisissez les propriétés que vous souhaitez changer pour les tâches sélectionnées.',
);
diff --git a/app/Locale/hr_HR/translations.php b/app/Locale/hr_HR/translations.php
index 8e76618c..007e72bb 100644
--- a/app/Locale/hr_HR/translations.php
+++ b/app/Locale/hr_HR/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/hu_HU/translations.php b/app/Locale/hu_HU/translations.php
index af9599b7..c96d69d2 100644
--- a/app/Locale/hu_HU/translations.php
+++ b/app/Locale/hu_HU/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/id_ID/translations.php b/app/Locale/id_ID/translations.php
index 551610d5..71353b05 100644
--- a/app/Locale/id_ID/translations.php
+++ b/app/Locale/id_ID/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/it_IT/translations.php b/app/Locale/it_IT/translations.php
index 13781256..00c58d2a 100644
--- a/app/Locale/it_IT/translations.php
+++ b/app/Locale/it_IT/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/ja_JP/translations.php b/app/Locale/ja_JP/translations.php
index d8aa5cfe..af9fbe0d 100644
--- a/app/Locale/ja_JP/translations.php
+++ b/app/Locale/ja_JP/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/ko_KR/translations.php b/app/Locale/ko_KR/translations.php
index 4b2b531c..8da54d79 100644
--- a/app/Locale/ko_KR/translations.php
+++ b/app/Locale/ko_KR/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/my_MY/translations.php b/app/Locale/my_MY/translations.php
index 16f42b16..568e4c86 100644
--- a/app/Locale/my_MY/translations.php
+++ b/app/Locale/my_MY/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/nb_NO/translations.php b/app/Locale/nb_NO/translations.php
index 06d8a3c6..d863b513 100644
--- a/app/Locale/nb_NO/translations.php
+++ b/app/Locale/nb_NO/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/nl_NL/translations.php b/app/Locale/nl_NL/translations.php
index f75452cb..bb853575 100644
--- a/app/Locale/nl_NL/translations.php
+++ b/app/Locale/nl_NL/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/pl_PL/translations.php b/app/Locale/pl_PL/translations.php
index 9de30cb5..f9c00e23 100644
--- a/app/Locale/pl_PL/translations.php
+++ b/app/Locale/pl_PL/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/pt_BR/translations.php b/app/Locale/pt_BR/translations.php
index c3695bba..fdcc7ce8 100644
--- a/app/Locale/pt_BR/translations.php
+++ b/app/Locale/pt_BR/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/pt_PT/translations.php b/app/Locale/pt_PT/translations.php
index 0fdfab4a..0c60a625 100644
--- a/app/Locale/pt_PT/translations.php
+++ b/app/Locale/pt_PT/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/ro_RO/translations.php b/app/Locale/ro_RO/translations.php
index 4f5bd279..25423431 100644
--- a/app/Locale/ro_RO/translations.php
+++ b/app/Locale/ro_RO/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/ru_RU/translations.php b/app/Locale/ru_RU/translations.php
index e8dc6188..0915c8a7 100644
--- a/app/Locale/ru_RU/translations.php
+++ b/app/Locale/ru_RU/translations.php
@@ -1381,4 +1381,6 @@ return array(
'Unselect All' => 'Снять выделение со всех',
'Apply action' => 'Применить действие',
'Move selected tasks to another column' => 'Переместить выбранные задачи в другую колонку',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/sr_Latn_RS/translations.php b/app/Locale/sr_Latn_RS/translations.php
index 8053773c..bee1d5e9 100644
--- a/app/Locale/sr_Latn_RS/translations.php
+++ b/app/Locale/sr_Latn_RS/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/sv_SE/translations.php b/app/Locale/sv_SE/translations.php
index 715d6b13..fd0a4996 100644
--- a/app/Locale/sv_SE/translations.php
+++ b/app/Locale/sv_SE/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/th_TH/translations.php b/app/Locale/th_TH/translations.php
index 4cfdb1a5..9dadd221 100644
--- a/app/Locale/th_TH/translations.php
+++ b/app/Locale/th_TH/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/tr_TR/translations.php b/app/Locale/tr_TR/translations.php
index 00fe2ce2..1cb1111c 100644
--- a/app/Locale/tr_TR/translations.php
+++ b/app/Locale/tr_TR/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/uk_UA/translations.php b/app/Locale/uk_UA/translations.php
index 630cad53..c9399ac8 100644
--- a/app/Locale/uk_UA/translations.php
+++ b/app/Locale/uk_UA/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/vi_VN/translations.php b/app/Locale/vi_VN/translations.php
index 16d5c8a0..515b5c39 100644
--- a/app/Locale/vi_VN/translations.php
+++ b/app/Locale/vi_VN/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/zh_CN/translations.php b/app/Locale/zh_CN/translations.php
index ea08984e..ee6357c2 100644
--- a/app/Locale/zh_CN/translations.php
+++ b/app/Locale/zh_CN/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/Locale/zh_TW/translations.php b/app/Locale/zh_TW/translations.php
index 7cfc9a11..ee30f0a7 100644
--- a/app/Locale/zh_TW/translations.php
+++ b/app/Locale/zh_TW/translations.php
@@ -1381,4 +1381,6 @@ return array(
// 'Unselect All' => '',
// 'Apply action' => '',
// 'Move selected tasks to another column' => '',
+ // 'Edit tasks in bulk' => '',
+ // 'Choose the properties that you would to change for the selected tasks.' => '',
);
diff --git a/app/ServiceProvider/AuthenticationProvider.php b/app/ServiceProvider/AuthenticationProvider.php
index 40a62971..668d6d6b 100644
--- a/app/ServiceProvider/AuthenticationProvider.php
+++ b/app/ServiceProvider/AuthenticationProvider.php
@@ -107,6 +107,7 @@ class AuthenticationProvider implements ServiceProviderInterface
$acl->add('TaskCreationController', '*', Role::PROJECT_MEMBER);
$acl->add('TaskBulkController', '*', Role::PROJECT_MEMBER);
$acl->add('TaskBulkMoveColumnController', '*', Role::PROJECT_MEMBER);
+ $acl->add('TaskBulkChangePropertyController', '*', Role::PROJECT_MEMBER);
$acl->add('TaskDuplicationController', '*', Role::PROJECT_MEMBER);
$acl->add('TaskRecurrenceController', '*', Role::PROJECT_MEMBER);
$acl->add('TaskImportController', '*', Role::PROJECT_MANAGER);
diff --git a/app/Template/task_bulk_change_property/show.php b/app/Template/task_bulk_change_property/show.php
new file mode 100644
index 00000000..a152bc39
--- /dev/null
+++ b/app/Template/task_bulk_change_property/show.php
@@ -0,0 +1,102 @@
+<div class="page-header">
+ <h2><?= t('Edit tasks in bulk') ?></h2>
+</div>
+
+<form action="<?= $this->url->href('TaskBulkChangePropertyController', 'save', ['project_id' => $project['id']]) ?>" method="post">
+ <?= $this->form->csrf() ?>
+ <?= $this->form->hidden('task_ids', $values) ?>
+
+ <p class="form-help"><?= t('Choose the properties that you would to change for the selected tasks.') ?></p>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_color" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderColorField($values) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_assignee" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderAssigneeField($users_list, $values, $errors) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_priority" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderPriorityField($project, $values) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_category" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderCategoryField($categories_list, $values, $errors, [], true) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_tags" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderTagField($project) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_due_date" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderDueDateField($values, $errors) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_start_date" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderStartDateField($values, $errors) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_estimated_time" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderTimeEstimatedField($values, $errors) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_spent_time" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderTimeSpentField($values, $errors) ?>
+ </div>
+ </fieldset>
+
+ <fieldset class="bulk-change-block">
+ <div class="bulk-change-checkbox">
+ <input type="checkbox" name="change_score" value="1">
+ </div>
+ <div class="bulk-change-inputs">
+ <?= $this->task->renderScoreField($values, $errors) ?>
+ </div>
+ </fieldset>
+
+ <?= $this->modal->submitButtons() ?>
+</form>
diff --git a/app/Template/task_list/header.php b/app/Template/task_list/header.php
index 599286aa..d91c6c6e 100644
--- a/app/Template/task_list/header.php
+++ b/app/Template/task_list/header.php
@@ -19,6 +19,9 @@
<li>
<a href="<?= $this->url->href('TaskBulkMoveColumnController', 'show', ['project_id' => $project['id']]) ?>" data-list-item-action="modal"><?= t('Move selected tasks to another column') ?></a>
</li>
+ <li>
+ <a href="<?= $this->url->href('TaskBulkChangePropertyController', 'show', ['project_id' => $project['id']]) ?>" data-list-item-action="modal"><?= t('Edit tasks in bulk') ?></a>
+ </li>
</ul>
</div>
</div>