summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2018-07-05 22:54:04 +0300
committerLauri Ojansivu <x@xet7.org>2018-07-05 22:54:04 +0300
commitca6cadbe6d257e72131d6be73c137dfcf8b1d435 (patch)
tree5533350dc323ae35ff22041252397933b3e2d68f
parent515c9be051272b91563c6de516424a246503853a (diff)
parentcc753cf4e45436ca2318b1e2cb67ee7bf804c50d (diff)
downloadwekan-ca6cadbe6d257e72131d6be73c137dfcf8b1d435.tar.gz
wekan-ca6cadbe6d257e72131d6be73c137dfcf8b1d435.tar.bz2
wekan-ca6cadbe6d257e72131d6be73c137dfcf8b1d435.zip
Merge branch 'TNick-nested-tasks' into devel
-rw-r--r--.eslintrc.json1
-rw-r--r--CHANGELOG.md8
-rw-r--r--client/components/boards/boardHeader.jade54
-rw-r--r--client/components/boards/boardHeader.js97
-rw-r--r--client/components/boards/boardHeader.styl19
-rw-r--r--client/components/cards/cardDetails.jade37
-rw-r--r--client/components/cards/cardDetails.js258
-rw-r--r--client/components/cards/checklists.jade5
-rw-r--r--client/components/cards/checklists.js4
-rw-r--r--client/components/cards/minicard.jade15
-rw-r--r--client/components/cards/minicard.styl7
-rw-r--r--client/components/cards/subtasks.jade97
-rw-r--r--client/components/cards/subtasks.js145
-rw-r--r--client/components/cards/subtasks.styl142
-rw-r--r--client/components/lists/listBody.js9
-rw-r--r--i18n/ar.i18n.json26
-rw-r--r--i18n/bg.i18n.json26
-rw-r--r--i18n/br.i18n.json26
-rw-r--r--i18n/ca.i18n.json26
-rw-r--r--i18n/cs.i18n.json26
-rw-r--r--i18n/de.i18n.json26
-rw-r--r--i18n/el.i18n.json26
-rw-r--r--i18n/en-GB.i18n.json26
-rw-r--r--i18n/en.i18n.json27
-rw-r--r--i18n/eo.i18n.json26
-rw-r--r--i18n/es-AR.i18n.json26
-rw-r--r--i18n/es.i18n.json26
-rw-r--r--i18n/eu.i18n.json26
-rw-r--r--i18n/fa.i18n.json26
-rw-r--r--i18n/fi.i18n.json26
-rw-r--r--i18n/fr.i18n.json26
-rw-r--r--i18n/gl.i18n.json26
-rw-r--r--i18n/he.i18n.json26
-rw-r--r--i18n/hu.i18n.json26
-rw-r--r--i18n/hy.i18n.json26
-rw-r--r--i18n/id.i18n.json26
-rw-r--r--i18n/ig.i18n.json26
-rw-r--r--i18n/it.i18n.json26
-rw-r--r--i18n/ja.i18n.json26
-rw-r--r--i18n/ka.i18n.json26
-rw-r--r--i18n/km.i18n.json26
-rw-r--r--i18n/ko.i18n.json26
-rw-r--r--i18n/lv.i18n.json26
-rw-r--r--i18n/mn.i18n.json26
-rw-r--r--i18n/nb.i18n.json26
-rw-r--r--i18n/nl.i18n.json26
-rw-r--r--i18n/pl.i18n.json26
-rw-r--r--i18n/pt-BR.i18n.json26
-rw-r--r--i18n/pt.i18n.json26
-rw-r--r--i18n/ro.i18n.json26
-rw-r--r--i18n/ru.i18n.json26
-rw-r--r--i18n/sr.i18n.json26
-rw-r--r--i18n/sv.i18n.json26
-rw-r--r--i18n/ta.i18n.json26
-rw-r--r--i18n/th.i18n.json26
-rw-r--r--i18n/tr.i18n.json26
-rw-r--r--i18n/uk.i18n.json26
-rw-r--r--i18n/vi.i18n.json26
-rw-r--r--i18n/zh-CN.i18n.json26
-rw-r--r--i18n/zh-TW.i18n.json26
-rw-r--r--models/activities.js3
-rw-r--r--models/boards.js102
-rw-r--r--models/cards.js131
-rw-r--r--models/export.js2
-rw-r--r--server/migrations.js90
-rw-r--r--server/publications/boards.js1
66 files changed, 2225 insertions, 173 deletions
diff --git a/.eslintrc.json b/.eslintrc.json
index 255e00ba..1adaa623 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -134,6 +134,7 @@
"Announcements": true,
"Swimlanes": true,
"ChecklistItems": true,
+ "Subtasks": true,
"Npm": true
}
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1c3a038c..a47636d8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
# Upcoming Wekan release
-This release fixes the following bugs:
+This release adds the following new features:
+
+- [Nested tasks](https://github.com/wekan/wekan/pull/1723).
+
+and fixes the following bugs:
- [Fix warning about missing space in jade file](https://github.com/wekan/wekan/commit/067aef9de948ef0cb6037d52602100b00d214706);
- Revert [Fix vertical align of user avatar initials](https://github.com/wekan/wekan/pull/1714), so that [initials are again
@@ -9,7 +13,7 @@ This release fixes the following bugs:
no-unused-vars](https://github.com/wekan/wekan/commit/dd324aa581bed7ea31f20968c6b596f373e7054f);
- Fix [Minimize board sidebar actually just moves it over](https://github.com/wekan/wekan/issues/1589).
-Thanks to GitHub users dagomar, pravdomil and xet7 for their contributions.
+Thanks to GitHub users dagomar, pravdomil, TNick and xet7 for their contributions.
# v1.11 2018-06-30 Wekan release
diff --git a/client/components/boards/boardHeader.jade b/client/components/boards/boardHeader.jade
index b4ccd3b3..a4abfac6 100644
--- a/client/components/boards/boardHeader.jade
+++ b/client/components/boards/boardHeader.jade
@@ -130,6 +130,10 @@ template(name="boardMenuPopup")
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
li: a.js-archive-board {{_ 'archive-board'}}
li: a.js-outgoing-webhooks {{_ 'outgoing-webhooks'}}
+ hr
+ ul.pop-over-list
+ li: a.js-subtask-settings {{_ 'subtask-settings'}}
+
if isSandstorm
hr
ul.pop-over-list
@@ -193,6 +197,56 @@ template(name="boardChangeColorPopup")
if isSelected
i.fa.fa-check
+template(name="boardSubtaskSettingsPopup")
+ form.board-subtask-settings
+ h3 {{_ 'show-parent-in-minicard'}}
+ a#prefix-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
+ span {{_ 'prefix-with-full-path'}}
+ a#prefix-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
+ span {{_ 'prefix-with-parent'}}
+ a#subtext-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
+ span {{_ 'subtext-with-full-path'}}
+ a#subtext-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
+ span {{_ 'subtext-with-parent'}}
+ a#no-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
+ span {{_ 'no-parent'}}
+ div
+ hr
+
+ div.check-div
+ a.flex.js-field-has-subtasks(class="{{#if allowsSubtasks}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsSubtasks}}is-checked{{/if}}")
+ span {{_ 'show-subtasks-field'}}
+
+ label
+ | {{_ 'deposit-subtasks-board'}}
+ select.js-field-deposit-board(disabled="{{#unless allowsSubtasks}}disabled{{/unless}}")
+ each boards
+ if isBoardSelected
+ option(value=_id selected="selected") {{title}}
+ else
+ option(value=_id) {{title}}
+ if isNullBoardSelected
+ option(value='null' selected="selected") {{_ 'custom-field-dropdown-none'}}
+ else
+ option(value='null') {{_ 'custom-field-dropdown-none'}}
+ div
+ hr
+
+ label
+ | {{_ 'deposit-subtasks-list'}}
+ select.js-field-deposit-list(disabled="{{#unless hasLists}}disabled{{/unless}}")
+ each lists
+ if isListSelected
+ option(value=_id selected="selected") {{title}}
+ else
+ option(value=_id) {{title}}
+
template(name="createBoard")
form
label
diff --git a/client/components/boards/boardHeader.js b/client/components/boards/boardHeader.js
index 222cc404..2dfd58c1 100644
--- a/client/components/boards/boardHeader.js
+++ b/client/components/boards/boardHeader.js
@@ -25,6 +25,7 @@ Template.boardMenuPopup.events({
}),
'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
'click .js-import-board': Popup.open('chooseBoardSource'),
+ 'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
});
Template.boardMenuPopup.helpers({
@@ -153,6 +154,102 @@ BlazeComponent.extendComponent({
},
}).register('boardChangeColorPopup');
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.currentBoard = Boards.findOne(Session.get('currentBoard'));
+ },
+
+ allowsSubtasks() {
+ return this.currentBoard.allowsSubtasks;
+ },
+
+ isBoardSelected() {
+ return this.currentBoard.subtasksDefaultBoardId === this.currentData()._id;
+ },
+
+ isNullBoardSelected() {
+ return (this.currentBoard.subtasksDefaultBoardId === null) || (this.currentBoard.subtasksDefaultBoardId === undefined);
+ },
+
+ boards() {
+ return Boards.find({
+ archived: false,
+ 'members.userId': Meteor.userId(),
+ }, {
+ sort: ['title'],
+ });
+ },
+
+ lists() {
+ return Lists.find({
+ boardId: this.currentBoard._id,
+ archived: false,
+ }, {
+ sort: ['title'],
+ });
+ },
+
+ hasLists() {
+ return this.lists().count() > 0;
+ },
+
+ isListSelected() {
+ return this.currentBoard.subtasksDefaultBoardId === this.currentData()._id;
+ },
+
+ presentParentTask() {
+ let result = this.currentBoard.presentParentTask;
+ if ((result === null) || (result === undefined)) {
+ result = 'no-parent';
+ }
+ return result;
+ },
+
+ events() {
+ return [{
+ 'click .js-field-has-subtasks'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsSubtasks = !this.currentBoard.allowsSubtasks;
+ this.currentBoard.setAllowsSubtasks(this.currentBoard.allowsSubtasks);
+ $('.js-field-has-subtasks .materialCheckBox').toggleClass('is-checked', this.currentBoard.allowsSubtasks);
+ $('.js-field-has-subtasks').toggleClass('is-checked', this.currentBoard.allowsSubtasks);
+ $('.js-field-deposit-board').prop('disabled', !this.currentBoard.allowsSubtasks);
+ },
+ 'change .js-field-deposit-board'(evt) {
+ let value = evt.target.value;
+ if (value === 'null') {
+ value = null;
+ }
+ this.currentBoard.setSubtasksDefaultBoardId(value);
+ evt.preventDefault();
+ },
+ 'change .js-field-deposit-list'(evt) {
+ this.currentBoard.setSubtasksDefaultListId(evt.target.value);
+ evt.preventDefault();
+ },
+ 'click .js-field-show-parent-in-minicard'(evt) {
+ const value = evt.target.id || $(evt.target).parent()[0].id || $(evt.target).parent()[0].parent()[0].id;
+ const options = [
+ 'prefix-with-full-path',
+ 'prefix-with-parent',
+ 'subtext-with-full-path',
+ 'subtext-with-parent',
+ 'no-parent'];
+ options.forEach(function(element) {
+ if (element !== value) {
+ $(`#${element} .materialCheckBox`).toggleClass('is-checked', false);
+ $(`#${element}`).toggleClass('is-checked', false);
+ }
+ });
+ $(`#${value} .materialCheckBox`).toggleClass('is-checked', true);
+ $(`#${value}`).toggleClass('is-checked', true);
+ this.currentBoard.setPresentParentTask(value);
+ evt.preventDefault();
+ },
+ }];
+ },
+}).register('boardSubtaskSettingsPopup');
+
const CreateBoard = BlazeComponent.extendComponent({
template() {
return 'createBoard';
diff --git a/client/components/boards/boardHeader.styl b/client/components/boards/boardHeader.styl
index 0abdb5bd..402b4f1e 100644
--- a/client/components/boards/boardHeader.styl
+++ b/client/components/boards/boardHeader.styl
@@ -1,3 +1,22 @@
.integration-form
padding: 5px
border-bottom: 1px solid #ccc
+
+.flex
+ display: -webkit-box
+ display: -moz-box
+ display: -webkit-flex
+ display: -moz-flex
+ display: -ms-flexbox
+ display: flex
+
+.option
+ @extends .flex
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ background: #fff;
+ text-decoration: none;
+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.2);
+ box-shadow: 0 1px 2px rgba(0,0,0,0.2);
+ margin-top: 5px;
+ padding: 5px;
diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade
index aa4829a9..aaad7c7c 100644
--- a/client/components/cards/cardDetails.jade
+++ b/client/components/cards/cardDetails.jade
@@ -13,6 +13,12 @@ template(name="cardDetails")
= title
if isWatching
i.fa.fa-eye.card-details-watch
+ .card-details-path
+ each parentList
+ | &nbsp; &gt; &nbsp;
+ a.js-parent-card(href=linkForCard) {{title}}
+ // else
+ {{_ 'top-level-card'}}
if archived
p.warning {{_ 'card-archived'}}
@@ -144,6 +150,10 @@ template(name="cardDetails")
hr
+checklists(cardId = _id)
+ if currentBoard.allowsSubtasks
+ hr
+ +subtasks(cardId = _id)
+
hr
h3
i.fa.fa-paperclip
@@ -273,10 +283,37 @@ template(name="cardMorePopup")
button.js-copy-card-link-to-clipboard(class="btn") {{_ 'copy-card-link-to-clipboard'}}
span.clearfix
br
+ h2 {{_ 'change-card-parent'}}
+ label {{_ 'source-board'}}:
+ select.js-field-parent-board
+ each boards
+ if isParentBoard
+ option(value="{{_id}}" selected) {{title}}
+ else
+ option(value="{{_id}}") {{title}}
+ if isTopLevel
+ option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
+ else
+ option(value="none") {{_ 'custom-field-dropdown-none'}}
+
+ label {{_ 'parent-card'}}:
+ select.js-field-parent-card
+ if isTopLevel
+ option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
+ else
+ each cards
+ if isParentCard
+ option(value="{{_id}}" selected) {{title}}
+ else
+ option(value="{{_id}}") {{title}}
+ option(value="none") {{_ 'custom-field-dropdown-none'}}
+ br
| {{_ 'added'}}
span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
a.js-delete(title="{{_ 'card-delete-notice'}}") {{_ 'delete'}}
+
+
template(name="cardDeletePopup")
p {{_ "card-delete-pop"}}
unless archived
diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js
index 72ed678b..5fee1680 100644
--- a/client/components/cards/cardDetails.js
+++ b/client/components/cards/cardDetails.js
@@ -20,10 +20,11 @@ BlazeComponent.extendComponent({
},
onCreated() {
+ this.currentBoard = Boards.findOne(Session.get('currentBoard'));
this.isLoaded = new ReactiveVar(false);
const boardBody = this.parentComponent().parentComponent();
//in Miniview parent is Board, not BoardBody.
- if (boardBody !== null){
+ if (boardBody !== null) {
boardBody.showOverlay.set(true);
boardBody.mouseHasEnterCardDetails = false;
}
@@ -70,6 +71,30 @@ BlazeComponent.extendComponent({
}
},
+ presentParentTask() {
+ let result = this.currentBoard.presentParentTask;
+ if ((result === null) || (result === undefined)) {
+ result = 'no-parent';
+ }
+ return result;
+ },
+
+ linkForCard() {
+ const card = this.currentData();
+ let result = '#';
+ if (card) {
+ const board = Boards.findOne(card.boardId);
+ if (board) {
+ result = FlowRouter.url('card', {
+ boardId: card.boardId,
+ slug: board.slug,
+ cardId: card._id,
+ });
+ }
+ }
+ return result;
+ },
+
onRendered() {
if (!Utils.isMiniScreen()) this.scrollParentContainer();
const $checklistsDom = this.$('.card-checklist-items');
@@ -107,6 +132,41 @@ BlazeComponent.extendComponent({
},
});
+ const $subtasksDom = this.$('.card-subtasks-items');
+
+ $subtasksDom.sortable({
+ tolerance: 'pointer',
+ helper: 'clone',
+ handle: '.subtask-title',
+ items: '.js-subtasks',
+ placeholder: 'subtasks placeholder',
+ distance: 7,
+ start(evt, ui) {
+ ui.placeholder.height(ui.helper.height());
+ EscapeActions.executeUpTo('popup-close');
+ },
+ stop(evt, ui) {
+ let prevChecklist = ui.item.prev('.js-subtasks').get(0);
+ if (prevChecklist) {
+ prevChecklist = Blaze.getData(prevChecklist).subtask;
+ }
+ let nextChecklist = ui.item.next('.js-subtasks').get(0);
+ if (nextChecklist) {
+ nextChecklist = Blaze.getData(nextChecklist).subtask;
+ }
+ const sortIndex = calculateIndexData(prevChecklist, nextChecklist, 1);
+
+ $subtasksDom.sortable('cancel');
+ const subtask = Blaze.getData(ui.item.get(0)).subtask;
+
+ Subtasks.update(subtask._id, {
+ $set: {
+ subtaskSort: sortIndex.base,
+ },
+ });
+ },
+ });
+
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember();
}
@@ -116,6 +176,9 @@ BlazeComponent.extendComponent({
if ($checklistsDom.data('sortable')) {
$checklistsDom.sortable('option', 'disabled', !userIsMember());
}
+ if ($subtasksDom.data('sortable')) {
+ $subtasksDom.sortable('option', 'disabled', !userIsMember());
+ }
});
},
@@ -327,7 +390,6 @@ Template.moveCardPopup.events({
Popup.close();
},
});
-
BlazeComponent.extendComponent({
onCreated() {
subManager.subscribe('board', Session.get('currentBoard'));
@@ -364,6 +426,21 @@ BlazeComponent.extendComponent({
},
}).register('boardsAndLists');
+
+function cloneCheckList(_id, checklist) {
+ 'use strict';
+ const checklistId = checklist._id;
+ checklist.cardId = _id;
+ checklist._id = null;
+ const newChecklistId = Checklists.insert(checklist);
+ ChecklistItems.find({checklistId}).forEach(function(item) {
+ item._id = null;
+ item.checklistId = newChecklistId;
+ item.cardId = _id;
+ ChecklistItems.insert(item);
+ });
+}
+
Template.copyCardPopup.events({
'click .js-done'() {
const card = Cards.findOne(Session.get('currentCard'));
@@ -393,18 +470,17 @@ Template.copyCardPopup.events({
// copy checklists
let cursor = Checklists.find({cardId: oldId});
cursor.forEach(function() {
+ cloneCheckList(_id, arguments[0]);
+ });
+
+ // copy subtasks
+ cursor = Cards.find({parentId: oldId});
+ cursor.forEach(function() {
'use strict';
- const checklist = arguments[0];
- const checklistId = checklist._id;
- checklist.cardId = _id;
- checklist._id = null;
- const newChecklistId = Checklists.insert(checklist);
- ChecklistItems.find({checklistId}).forEach(function(item) {
- item._id = null;
- item.checklistId = newChecklistId;
- item.cardId = _id;
- ChecklistItems.insert(item);
- });
+ const subtask = arguments[0];
+ subtask.parentId = _id;
+ subtask._id = null;
+ /* const newSubtaskId = */ Cards.insert(subtask);
});
// copy card comments
@@ -454,18 +530,17 @@ Template.copyChecklistToManyCardsPopup.events({
// copy checklists
let cursor = Checklists.find({cardId: oldId});
cursor.forEach(function() {
+ cloneCheckList(_id, arguments[0]);
+ });
+
+ // copy subtasks
+ cursor = Cards.find({parentId: oldId});
+ cursor.forEach(function() {
'use strict';
- const checklist = arguments[0];
- const checklistId = checklist._id;
- checklist.cardId = _id;
- checklist._id = null;
- const newChecklistId = Checklists.insert(checklist);
- ChecklistItems.find({checklistId}).forEach(function(item) {
- item._id = null;
- item.checklistId = newChecklistId;
- item.cardId = _id;
- ChecklistItems.insert(item);
- });
+ const subtask = arguments[0];
+ subtask.parentId = _id;
+ subtask._id = null;
+ /* const newSubtaskId = */ Cards.insert(subtask);
});
// copy card comments
@@ -483,36 +558,119 @@ Template.copyChecklistToManyCardsPopup.events({
},
});
+BlazeComponent.extendComponent({
+ onCreated() {
+ this.currentCard = this.currentData();
+ this.parentCard = this.currentCard.parentCard();
+ if (this.parentCard) {
+ this.parentBoard = this.parentCard.board();
+ } else {
+ this.parentBoard = null;
+ }
+ },
-Template.cardMorePopup.events({
- 'click .js-copy-card-link-to-clipboard' () {
- // Clipboard code from:
- // https://stackoverflow.com/questions/6300213/copy-selected-text-to-the-clipboard-without-using-flash-must-be-cross-browser
- const StringToCopyElement = document.getElementById('cardURL');
- StringToCopyElement.select();
- if (document.execCommand('copy')) {
- StringToCopyElement.blur();
+ boards() {
+ const boards = Boards.find({
+ archived: false,
+ 'members.userId': Meteor.userId(),
+ }, {
+ sort: ['title'],
+ });
+ return boards;
+ },
+
+ cards() {
+ if (this.parentBoard) {
+ return this.parentBoard.cards();
} else {
- document.getElementById('cardURL').selectionStart = 0;
- document.getElementById('cardURL').selectionEnd = 999;
- document.execCommand('copy');
- if (window.getSelection) {
- if (window.getSelection().empty) { // Chrome
- window.getSelection().empty();
- } else if (window.getSelection().removeAllRanges) { // Firefox
- window.getSelection().removeAllRanges();
- }
- } else if (document.selection) { // IE?
- document.selection.empty();
- }
+ return [];
}
},
- 'click .js-delete': Popup.afterConfirm('cardDelete', function () {
- Popup.close();
- Cards.remove(this._id);
- Utils.goBoardId(this.boardId);
- }),
-});
+
+ isParentBoard() {
+ const board = this.currentData();
+ if (this.parentBoard) {
+ return board._id === this.parentBoard;
+ }
+ return false;
+ },
+
+ isParentCard() {
+ const card = this.currentData();
+ if (this.parentCard) {
+ return card._id === this.parentCard;
+ }
+ return false;
+ },
+
+ setParentCardId(cardId) {
+ if (cardId === 'null') {
+ cardId = null;
+ this.parentCard = null;
+ } else {
+ this.parentCard = Cards.findOne(cardId);
+ }
+ this.currentCard.setParentId(cardId);
+ },
+
+ events() {
+ return [{
+ 'click .js-copy-card-link-to-clipboard' () {
+ // Clipboard code from:
+ // https://stackoverflow.com/questions/6300213/copy-selected-text-to-the-clipboard-without-using-flash-must-be-cross-browser
+ const StringToCopyElement = document.getElementById('cardURL');
+ StringToCopyElement.select();
+ if (document.execCommand('copy')) {
+ StringToCopyElement.blur();
+ } else {
+ document.getElementById('cardURL').selectionStart = 0;
+ document.getElementById('cardURL').selectionEnd = 999;
+ document.execCommand('copy');
+ if (window.getSelection) {
+ if (window.getSelection().empty) { // Chrome
+ window.getSelection().empty();
+ } else if (window.getSelection().removeAllRanges) { // Firefox
+ window.getSelection().removeAllRanges();
+ }
+ } else if (document.selection) { // IE?
+ document.selection.empty();
+ }
+ }
+ },
+ 'click .js-delete': Popup.afterConfirm('cardDelete', function () {
+ Popup.close();
+ Cards.remove(this._id);
+ Utils.goBoardId(this.boardId);
+ }),
+ 'change .js-field-parent-board'(evt) {
+ const selection = $(evt.currentTarget).val();
+ const list = $('.js-field-parent-card');
+ list.empty();
+ if (selection === 'none') {
+ this.parentBoard = null;
+ list.prop('disabled', true);
+ } else {
+ this.parentBoard = Boards.findOne(selection);
+ this.parentBoard.cards().forEach(function(card) {
+ list.append(
+ $('<option></option>').val(card._id).html(card.title)
+ );
+ });
+ list.prop('disabled', false);
+ }
+ list.append(
+ `<option value='none' selected='selected'>${TAPi18n.__('custom-field-dropdown-none')}</option>`
+ );
+ this.setParentCardId('null');
+ },
+ 'change .js-field-parent-card'(evt) {
+ const selection = $(evt.currentTarget).val();
+ this.setParentCardId(selection);
+ },
+ }];
+ },
+}).register('cardMorePopup');
+
// Close the card details pane by pressing escape
EscapeActions.register('detailsPane',
diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade
index ae680bd5..e45e7ad9 100644
--- a/client/components/cards/checklists.jade
+++ b/client/components/cards/checklists.jade
@@ -27,7 +27,6 @@ template(name="checklistDetail")
if canModifyCard
a.js-delete-checklist.toggle-delete-checklist-dialog {{_ "delete"}}...
- span.checklist-stat(class="{{#if checklist.isFinished}}is-finished{{/if}}") {{checklist.finishedCount}}/{{checklist.itemCount}}
if canModifyCard
h2.title.js-open-inlined-form.is-editable
+viewer
@@ -75,7 +74,7 @@ template(name="checklistItems")
+inlinedForm(classNames="js-edit-checklist-item" item = item checklist = checklist)
+editChecklistItemForm(type = 'item' item = item checklist = checklist)
else
- +itemDetail(item = item checklist = checklist)
+ +checklistItemDetail(item = item checklist = checklist)
if canModifyCard
+inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist)
+addChecklistItemForm
@@ -84,7 +83,7 @@ template(name="checklistItems")
i.fa.fa-plus
| {{_ 'add-checklist-item'}}...
-template(name='itemDetail')
+template(name='checklistItemDetail')
.js-checklist-item.checklist-item
if canModifyCard
.check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js
index 1f05aded..519af629 100644
--- a/client/components/cards/checklists.js
+++ b/client/components/cards/checklists.js
@@ -204,7 +204,7 @@ Template.checklistDeleteDialog.onDestroyed(() => {
$cardDetails.animate( { scrollTop: this.scrollState.position });
});
-Template.itemDetail.helpers({
+Template.checklistItemDetail.helpers({
canModifyCard() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
},
@@ -223,4 +223,4 @@ BlazeComponent.extendComponent({
'click .js-checklist-item .check-box': this.toggleItem,
}];
},
-}).register('itemDetail');
+}).register('checklistItemDetail');
diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade
index 2a8e95ab..57913669 100644
--- a/client/components/cards/minicard.jade
+++ b/client/components/cards/minicard.jade
@@ -7,8 +7,21 @@ template(name="minicard")
each labels
.minicard-label(class="card-label-{{color}}" title="{{name}}")
.minicard-title
+ if $eq 'prefix-with-full-path' currentBoard.presentParentTask
+ .parent-prefix
+ | {{ parentString ' > ' }}
+ if $eq 'prefix-with-parent' currentBoard.presentParentTask
+ .parent-prefix
+ | {{ parentCardName }}
+viewer
- = title
+ {{ title }}
+ if $eq 'subtext-with-full-path' currentBoard.presentParentTask
+ .parent-subtext
+ | {{ parentString ' > ' }}
+ if $eq 'subtext-with-parent' currentBoard.presentParentTask
+ .parent-subtext
+ | {{ parentCardName }}
+
.dates
if receivedAt
unless startAt
diff --git a/client/components/cards/minicard.styl b/client/components/cards/minicard.styl
index b89805be..5624787c 100644
--- a/client/components/cards/minicard.styl
+++ b/client/components/cards/minicard.styl
@@ -162,6 +162,13 @@
margin-bottom: 20px
overflow-y: auto
+.parent-prefix
+ color: darken(white, 30%)
+ font-size: 0.9em
+.parent-subtext
+ color: darken(white, 30%)
+ font-size: 0.9em
+
@media screen and (max-width: 800px)
.minicard
.is-selected &
diff --git a/client/components/cards/subtasks.jade b/client/components/cards/subtasks.jade
new file mode 100644
index 00000000..b0ef2f33
--- /dev/null
+++ b/client/components/cards/subtasks.jade
@@ -0,0 +1,97 @@
+template(name="subtasks")
+ h3 {{_ 'subtasks'}}
+ if toggleDeleteDialog.get
+ .board-overlay#card-details-overlay
+ +subtaskDeleteDialog(subtask = subtaskToDelete)
+
+
+ .card-subtasks-items
+ each subtask in currentCard.subtasks
+ +subtaskDetail(subtask = subtask)
+
+ if canModifyCard
+ +inlinedForm(autoclose=false classNames="js-add-subtask" cardId = cardId)
+ +addSubtaskItemForm
+ else
+ a.js-open-inlined-form
+ i.fa.fa-plus
+ | {{_ 'add-subtask'}}...
+
+template(name="subtaskDetail")
+ .js-subtasks.subtask
+ +inlinedForm(classNames="js-edit-subtask-title" subtask = subtask)
+ +editSubtaskItemForm(subtask = subtask)
+ else
+ .subtask-title
+ span
+ a.js-view-subtask(title="{{ subtask.title }}") {{_ "view-it"}}
+ if canModifyCard
+ a.js-delete-subtask.toggle-delete-subtask-dialog {{_ "delete"}}...
+
+ if canModifyCard
+ h2.title.js-open-inlined-form.is-editable
+ +viewer
+ = subtask.title
+ else
+ h2.title
+ +viewer
+ = subtask.title
+
+template(name="subtaskDeleteDialog")
+ .js-confirm-subtask-delete
+ p
+ i(class="fa fa-exclamation-triangle" aria-hidden="true")
+ p
+ | {{_ 'confirm-subtask-delete-dialog'}}
+ span {{subtask.title}}
+ | ?
+ .js-subtask-delete-buttons
+ button.confirm-subtask-delete(type="button") {{_ 'delete'}}
+ button.toggle-delete-subtask-dialog(type="button") {{_ 'cancel'}}
+
+template(name="addSubtaskItemForm")
+ textarea.js-add-subtask-item(rows='1' autofocus)
+ .edit-controls.clearfix
+ button.primary.confirm.js-submit-add-subtask-item-form(type="submit") {{_ 'save'}}
+ a.fa.fa-times-thin.js-close-inlined-form
+
+template(name="editSubtaskItemForm")
+ textarea.js-edit-subtask-item(rows='1' autofocus)
+ if $eq type 'item'
+ = item.title
+ else
+ = subtask.title
+ .edit-controls.clearfix
+ button.primary.confirm.js-submit-edit-subtask-item-form(type="submit") {{_ 'save'}}
+ a.fa.fa-times-thin.js-close-inlined-form
+ span(title=createdAt) {{ moment createdAt }}
+ if canModifyCard
+ a.js-delete-subtask-item {{_ "delete"}}...
+
+template(name="subtasksItems")
+ .subtasks-items.js-subtasks-items
+ each item in subtasks.items
+ +inlinedForm(classNames="js-edit-subtask-item" item = item subtasks = subtasks)
+ +editSubtaskItemForm(type = 'item' item = item subtasks = subtasks)
+ else
+ +subtaskItemDetail(item = item subtasks = subtasks)
+ if canModifyCard
+ +inlinedForm(autoclose=false classNames="js-add-subtask-item" subtasks = subtasks)
+ +addSubtaskItemForm
+ else
+ a.add-subtask-item.js-open-inlined-form
+ i.fa.fa-plus
+ | {{_ 'add-subtask-item'}}...
+
+template(name='subtaskItemDetail')
+ .js-subtasks-item.subtasks-item
+ if canModifyCard
+ .check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
+ .item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}")
+ +viewer
+ = item.title
+ else
+ .materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
+ .item-title(class="{{#if item.isFinished }}is-checked{{/if}}")
+ +viewer
+ = item.title
diff --git a/client/components/cards/subtasks.js b/client/components/cards/subtasks.js
new file mode 100644
index 00000000..9c6f265e
--- /dev/null
+++ b/client/components/cards/subtasks.js
@@ -0,0 +1,145 @@
+BlazeComponent.extendComponent({
+ canModifyCard() {
+ return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
+ },
+}).register('subtaskDetail');
+
+BlazeComponent.extendComponent({
+
+ addSubtask(event) {
+ event.preventDefault();
+ const textarea = this.find('textarea.js-add-subtask-item');
+ const title = textarea.value.trim();
+ const cardId = this.currentData().cardId;
+ const card = Cards.findOne(cardId);
+ const sortIndex = -1;
+ const crtBoard = Boards.findOne(card.boardId);
+ const targetBoard = crtBoard.getDefaultSubtasksBoard();
+ const listId = targetBoard.getDefaultSubtasksListId();
+ const swimlaneId = targetBoard.getDefaultSwimline()._id;
+
+ if (title) {
+ const _id = Cards.insert({
+ title,
+ parentId: cardId,
+ members: [],
+ labelIds: [],
+ customFields: [],
+ listId,
+ boardId: targetBoard._id,
+ sort: sortIndex,
+ swimlaneId,
+ });
+
+ // In case the filter is active we need to add the newly inserted card in
+ // the list of exceptions -- cards that are not filtered. Otherwise the
+ // card will disappear instantly.
+ // See https://github.com/wekan/wekan/issues/80
+ Filter.addException(_id);
+
+
+ setTimeout(() => {
+ this.$('.add-subtask-item').last().click();
+ }, 100);
+ }
+ textarea.value = '';
+ textarea.focus();
+ },
+
+ canModifyCard() {
+ return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
+ },
+
+ deleteSubtask() {
+ const subtask = this.currentData().subtask;
+ if (subtask && subtask._id) {
+ subtask.archive();
+ this.toggleDeleteDialog.set(false);
+ }
+ },
+
+ editSubtask(event) {
+ event.preventDefault();
+ const textarea = this.find('textarea.js-edit-subtask-item');
+ const title = textarea.value.trim();
+ const subtask = this.currentData().subtask;
+ subtask.setTitle(title);
+ },
+
+ onCreated() {
+ this.toggleDeleteDialog = new ReactiveVar(false);
+ this.subtaskToDelete = null; //Store data context to pass to subtaskDeleteDialog template
+ },
+
+ pressKey(event) {
+ //If user press enter key inside a form, submit it
+ //Unless the user is also holding down the 'shift' key
+ if (event.keyCode === 13 && !event.shiftKey) {
+ event.preventDefault();
+ const $form = $(event.currentTarget).closest('form');
+ $form.find('button[type=submit]').click();
+ }
+ },
+
+ events() {
+ const events = {
+ 'click .toggle-delete-subtask-dialog'(event) {
+ if($(event.target).hasClass('js-delete-subtask')){
+ this.subtaskToDelete = this.currentData().subtask; //Store data context
+ }
+ this.toggleDeleteDialog.set(!this.toggleDeleteDialog.get());
+ },
+ 'click .js-view-subtask'(event) {
+ if($(event.target).hasClass('js-view-subtask')){
+ const subtask = this.currentData().subtask;
+ const board = subtask.board();
+ FlowRouter.go('card', {
+ boardId: board._id,
+ slug: board.slug,
+ cardId: subtask._id,
+ });
+ }
+ },
+ };
+
+ return [{
+ ...events,
+ 'submit .js-add-subtask': this.addSubtask,
+ 'submit .js-edit-subtask-title': this.editSubtask,
+ 'click .confirm-subtask-delete': this.deleteSubtask,
+ keydown: this.pressKey,
+ }];
+ },
+}).register('subtasks');
+
+Template.subtaskDeleteDialog.onCreated(() => {
+ const $cardDetails = this.$('.card-details');
+ this.scrollState = { position: $cardDetails.scrollTop(), //save current scroll position
+ top: false, //required for smooth scroll animation
+ };
+ //Callback's purpose is to only prevent scrolling after animation is complete
+ $cardDetails.animate({ scrollTop: 0 }, 500, () => { this.scrollState.top = true; });
+
+ //Prevent scrolling while dialog is open
+ $cardDetails.on('scroll', () => {
+ if(this.scrollState.top) { //If it's already in position, keep it there. Otherwise let animation scroll
+ $cardDetails.scrollTop(0);
+ }
+ });
+});
+
+Template.subtaskDeleteDialog.onDestroyed(() => {
+ const $cardDetails = this.$('.card-details');
+ $cardDetails.off('scroll'); //Reactivate scrolling
+ $cardDetails.animate( { scrollTop: this.scrollState.position });
+});
+
+Template.subtaskItemDetail.helpers({
+ canModifyCard() {
+ return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
+ },
+});
+
+BlazeComponent.extendComponent({
+ // ...
+}).register('subtaskItemDetail');
diff --git a/client/components/cards/subtasks.styl b/client/components/cards/subtasks.styl
new file mode 100644
index 00000000..c2f09aa1
--- /dev/null
+++ b/client/components/cards/subtasks.styl
@@ -0,0 +1,142 @@
+.js-add-subtask
+ color: #8c8c8c
+
+textarea.js-add-subtask-item, textarea.js-edit-subtask-item
+ overflow: hidden
+ word-wrap: break-word
+ resize: none
+ height: 34px
+
+.delete-text
+ color: #8c8c8c
+ text-decoration: underline
+ word-wrap: break-word
+ float: right
+ padding-top: 6px
+ &:hover
+ color: inherit
+
+.subtask-title
+ .checkbox
+ float: left
+ width: 30px
+ height 30px
+ font-size: 18px
+ line-height: 30px
+
+ .title
+ font-size: 18px
+ line-height: 25px
+
+ .subtasks-stat
+ margin: 0 0.5em
+ float: right
+ padding-top: 6px
+ &.is-finished
+ color: #3cb500
+
+ .js-delete-subtask
+ @extends .delete-text
+ margin: 0 0.5em
+
+ .js-view-subtask
+ @extends .delete-text
+
+.js-confirm-subtask-delete
+ background-color: darken(white, 3%)
+ position: absolute
+ float: left;
+ width: 60%
+ margin-top: 0
+ margin-left: 13%
+ padding-bottom: 2%
+ padding-left: 3%
+ padding-right: 3%
+ z-index: 17
+ border-radius: 3px
+
+ p
+ position: relative
+ margin-top: 3%
+ width: 100%
+ text-align: center
+ span
+ font-weight: bold
+
+ i
+ font-size: 2em
+
+ .js-subtask-delete-buttons
+ position: relative
+ padding: left 2% right 2%
+ .confirm-subtask-delete
+ margin-left: 12%
+ float: left
+ .toggle-delete-subtask-dialog
+ margin-right: 12%
+ float: right
+
+#card-details-overlay
+ top: 0
+ bottom: -600px
+ right: 0
+
+.subtasks
+ background: darken(white, 3%)
+
+ &.placeholder
+ background: darken(white, 20%)
+ border-radius: 2px
+
+ &.ui-sortable-helper
+ box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
+ 0 0 1px rgba(0, 0, 0, .5)
+ transform: rotate(4deg)
+ cursor: grabbing
+
+
+.subtasks-item
+ margin: 0 0 0 0.1em
+ line-height: 18px
+ font-size: 1.1em
+ margin-top: 3px
+ display: flex
+ background: darken(white, 3%)
+
+ &.placeholder
+ background: darken(white, 20%)
+ border-radius: 2px
+
+ &.ui-sortable-helper
+ box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
+ 0 0 1px rgba(0, 0, 0, .5)
+ transform: rotate(4deg)
+ cursor: grabbing
+
+ &:hover
+ background-color: darken(white, 8%)
+
+ .check-box
+ margin: 0.1em 0 0 0;
+ &.is-checked
+ border-bottom: 2px solid #3cb500
+ border-right: 2px solid #3cb500
+
+ .item-title
+ flex: 1
+ padding-left: 10px;
+ &.is-checked
+ color: #8c8c8c
+ font-style: italic
+ & .viewer
+ p
+ margin-bottom: 2px
+
+.js-delete-subtask-item
+ margin: 0 0 0.5em 1.33em
+ @extends .delete-text
+ padding: 12px 0 0 0
+
+.add-subtask-item
+ margin: 0.2em 0 0.5em 1.33em
+ display: inline-block
diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js
index adb2fadb..0a10f7d5 100644
--- a/client/components/lists/listBody.js
+++ b/client/components/lists/listBody.js
@@ -36,17 +36,14 @@ BlazeComponent.extendComponent({
const members = formComponent.members.get();
const labelIds = formComponent.labels.get();
const customFields = formComponent.customFields.get();
- //console.log('members', members);
- //console.log('labelIds', labelIds);
- //console.log('customFields', customFields);
- const boardId = this.data().board()._id;
+ const boardId = this.data().board();
let swimlaneId = '';
const boardView = Meteor.user().profile.boardView;
if (boardView === 'board-view-swimlanes')
swimlaneId = this.parentComponent().parentComponent().data()._id;
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal'))
- swimlaneId = Swimlanes.findOne({boardId})._id;
+ swimlaneId = boardId.getDefaultSwimline()._id;
if (title) {
const _id = Cards.insert({
@@ -55,7 +52,7 @@ BlazeComponent.extendComponent({
labelIds,
customFields,
listId: this.data()._id,
- boardId: this.data().board()._id,
+ boardId: boardId._id,
sort: sortIndex,
swimlaneId,
});
diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json
index 47c120e8..5f423ddf 100644
--- a/i18n/ar.i18n.json
+++ b/i18n/ar.i18n.json
@@ -2,6 +2,7 @@
"accept": "اقبلboard",
"act-activity-notify": "[Wekan] اشعار عن نشاط",
"act-addAttachment": "ربط __attachment__ الى __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "علق على __comment__ : __card__",
@@ -41,6 +42,7 @@
"activity-removed": "حذف %s إلى %s",
"activity-sent": "إرسال %s إلى %s",
"activity-unjoined": "غادر %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "أضاف قائمة تحقق إلى %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "أضف",
@@ -48,6 +50,7 @@
"add-board": "إضافة لوحة",
"add-card": "إضافة بطاقة",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "إضافة قائمة تدقيق",
"add-checklist-item": "إضافة عنصر إلى قائمة التحقق",
"add-cover": "إضافة غلاف",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "تغيير كلمة المرور",
"changePermissionsPopup-title": "تعديل الصلاحيات",
"changeSettingsPopup-title": "تغيير الاعدادات",
+ "subtasks": "Subtasks",
"checklists": "قوائم التّدقيق",
"click-to-star": "اضغط لإضافة اللوحة للمفضلة.",
"click-to-unstar": "اضغط لحذف اللوحة من المفضلة.",
@@ -163,7 +167,8 @@
"comment-only": "التعليق فقط",
"comment-only-desc": "يمكن التعليق على بطاقات فقط.",
"computer": "حاسوب",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
"copyCardPopup-title": "نسخ البطاقة",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json
index c2874364..69fe5188 100644
--- a/i18n/bg.i18n.json
+++ b/i18n/bg.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accept",
"act-activity-notify": "[Wekan] Известия за дейности",
"act-addAttachment": "прикачи __attachment__ към __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "добави списък със задачи __checklist__ към __card__",
"act-addChecklistItem": "добави __checklistItem__ към списък със задачи __checklist__ в __card__",
"act-addComment": "Коментира в __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "премахна %s от %s",
"activity-sent": "изпрати %s до %s",
"activity-unjoined": "вече не е част от %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "добави списък със задачи към %s",
"activity-checklist-item-added": "добави точка към '%s' в/във %s",
"add": "Добави",
@@ -48,6 +50,7 @@
"add-board": "Добави Табло",
"add-card": "Добави карта",
"add-swimlane": "Добави коридор",
+ "add-subtask": "Add Subtask",
"add-checklist": "Добави списък със задачи",
"add-checklist-item": "Добави точка към списъка със задачи",
"add-cover": "Добави корица",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Промени паролата",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Промяна на настройките",
+ "subtasks": "Subtasks",
"checklists": "Списъци със задачи",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Натиснете, за да премахнете това табло от любими.",
@@ -163,7 +167,8 @@
"comment-only": "Само коментар",
"comment-only-desc": "Може да коментира само в карти.",
"computer": "Компютър",
- "confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
"copyCardPopup-title": "Копирай картата",
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json
index fa2c25e2..a1043e89 100644
--- a/i18n/br.i18n.json
+++ b/i18n/br.i18n.json
@@ -2,6 +2,7 @@
"accept": "Asantiñ",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Ouzhpenn",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Ouzphenn ur golo",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Kemmañ ger-tremen",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json
index 5badc85e..6cceb936 100644
--- a/i18n/ca.i18n.json
+++ b/i18n/ca.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accepta",
"act-activity-notify": "[Wekan] Notificació d'activitat",
"act-addAttachment": "adjuntat __attachment__ a __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "afegida la checklist _checklist__ a __card__",
"act-addChecklistItem": "afegit __checklistItem__ a la checklist __checklist__ on __card__",
"act-addComment": "comentat a __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "ha eliminat %s de %s",
"activity-sent": "ha enviat %s %s",
"activity-unjoined": "desassignat %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "Checklist afegida a %s",
"activity-checklist-item-added": "afegida entrada de checklist de '%s' a %s",
"add": "Afegeix",
@@ -48,6 +50,7 @@
"add-board": "Afegeix Tauler",
"add-card": "Afegeix fitxa",
"add-swimlane": "Afegix Carril de Natació",
+ "add-subtask": "Add Subtask",
"add-checklist": "Afegeix checklist",
"add-checklist-item": "Afegeix un ítem",
"add-cover": "Afegeix coberta",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Canvia la contrasenya",
"changePermissionsPopup-title": "Canvia permisos",
"changeSettingsPopup-title": "Canvia configuració",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Fes clic per destacar aquest tauler.",
"click-to-unstar": "Fes clic per deixar de destacar aquest tauler.",
@@ -163,7 +167,8 @@
"comment-only": "Només comentaris",
"comment-only-desc": "Només pots fer comentaris a les fitxes",
"computer": "Ordinador",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
"copyCardPopup-title": "Copia la fitxa",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json
index f067e9d3..61b5402c 100644
--- a/i18n/cs.i18n.json
+++ b/i18n/cs.i18n.json
@@ -2,6 +2,7 @@
"accept": "Přijmout",
"act-activity-notify": "[Wekan] Notifikace aktivit",
"act-addAttachment": "přiložen __attachment__ do __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "přidán checklist __checklist__ do __card__",
"act-addChecklistItem": "přidán __checklistItem__ do checklistu __checklist__ v __card__",
"act-addComment": "komentář k __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "odstraněn %s z %s",
"activity-sent": "%s posláno na %s",
"activity-unjoined": "odpojen %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "přidán checklist do %s",
"activity-checklist-item-added": "přidána položka checklist do '%s' v %s",
"add": "Přidat",
@@ -48,6 +50,7 @@
"add-board": "Přidat tablo",
"add-card": "Přidat kartu",
"add-swimlane": "Přidat Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Přidat zaškrtávací seznam",
"add-checklist-item": "Přidat položku do zaškrtávacího seznamu",
"add-cover": "Přidat obal",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Změnit heslo",
"changePermissionsPopup-title": "Změnit oprávnění",
"changeSettingsPopup-title": "Změnit nastavení",
+ "subtasks": "Subtasks",
"checklists": "Checklisty",
"click-to-star": "Kliknutím přidat hvězdičku tomuto tablu.",
"click-to-unstar": "Kliknutím odebrat hvězdičku tomuto tablu.",
@@ -163,7 +167,8 @@
"comment-only": "Pouze komentáře",
"comment-only-desc": "Může přidávat komentáře pouze do karet.",
"computer": "Počítač",
- "confirm-checklist-delete-dialog": "Opravdu chcete smazat tento checklist?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kopírovat adresu karty do mezipaměti",
"copyCardPopup-title": "Kopírovat kartu",
"copyChecklistToManyCardsPopup-title": "Kopírovat checklist do více karet",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Smazat tablo?",
- "delete-board": "Smazat tablo"
+ "delete-board": "Smazat tablo",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json
index 2ae21b93..ac7f544b 100644
--- a/i18n/de.i18n.json
+++ b/i18n/de.i18n.json
@@ -2,6 +2,7 @@
"accept": "Akzeptieren",
"act-activity-notify": "[Wekan] Aktivitätsbenachrichtigung",
"act-addAttachment": "hat __attachment__ an __card__ angehängt",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "hat die Checkliste __checklist__ zu __card__ hinzugefügt",
"act-addChecklistItem": "hat __checklistItem__ zur Checkliste __checklist__ in __card__ hinzugefügt",
"act-addComment": "hat __card__ kommentiert: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "hat %s von %s entfernt",
"activity-sent": "hat %s an %s gesendet",
"activity-unjoined": "hat %s verlassen",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
"activity-checklist-item-added": "hat eine Checklistenposition zu '%s' in %s hinzugefügt",
"add": "Hinzufügen",
@@ -48,6 +50,7 @@
"add-board": "neues Board",
"add-card": "Karte hinzufügen",
"add-swimlane": "Swimlane hinzufügen",
+ "add-subtask": "Add Subtask",
"add-checklist": "Checkliste hinzufügen",
"add-checklist-item": "Position zu einer Checkliste hinzufügen",
"add-cover": "Cover hinzufügen",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Passwort ändern",
"changePermissionsPopup-title": "Berechtigungen ändern",
"changeSettingsPopup-title": "Einstellungen ändern",
+ "subtasks": "Subtasks",
"checklists": "Checklisten",
"click-to-star": "Klicken Sie, um das Board mit einem Stern zu markieren.",
"click-to-unstar": "Klicken Sie, um den Stern vom Board zu entfernen.",
@@ -163,7 +167,8 @@
"comment-only": "Nur kommentierbar",
"comment-only-desc": "Kann Karten nur Kommentieren",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Sind Sie sicher, dass Sie die Checkliste löschen möchten?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage",
"copyCardPopup-title": "Karte kopieren",
"copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren",
@@ -475,5 +480,22 @@
"board-delete-notice": "Löschen kann nicht rückgängig gemacht werden. Sie werden alle Listen, Karten und Aktionen, die mit diesem Board verbunden sind, verlieren.",
"delete-board-confirm-popup": "Alle Listen, Karten, Labels und Akivitäten werden gelöscht und Sie können die Inhalte des Boards nicht wiederherstellen! Die Aktion kann nicht rückgängig gemacht werden.",
"boardDeletePopup-title": "Board löschen?",
- "delete-board": "Board löschen"
+ "delete-board": "Board löschen",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json
index cd00671a..0cfb4b25 100644
--- a/i18n/el.i18n.json
+++ b/i18n/el.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Προσθήκη",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Προσθήκη Κάρτας",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Αλλαγή Κωδικού",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Αλλαγή Ρυθμίσεων",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Υπολογιστής",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json
index 0fe7b237..f900def4 100644
--- a/i18n/en-GB.i18n.json
+++ b/i18n/en-GB.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached _ attachment _ to _ card _",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json
index 51a9b4cc..d5488ad0 100644
--- a/i18n/en.i18n.json
+++ b/i18n/en.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,23 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
+
}
diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json
index a0897302..3d8000c4 100644
--- a/i18n/eo.i18n.json
+++ b/i18n/eo.i18n.json
@@ -2,6 +2,7 @@
"accept": "Akcepti",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "Sendis %s al %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Aldoni",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Ŝangi pasvorton",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Ŝanĝi agordojn",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Komputilo",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json
index 97a740e2..95553e31 100644
--- a/i18n/es-AR.i18n.json
+++ b/i18n/es-AR.i18n.json
@@ -2,6 +2,7 @@
"accept": "Aceptar",
"act-activity-notify": "[Wekan] Notificación de Actividad",
"act-addAttachment": "adjunto __attachment__ a __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "lista de ítems __checklist__ agregada a __card__",
"act-addChecklistItem": " __checklistItem__ agregada a lista de ítems __checklist__ en __card__",
"act-addComment": "comentado en __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "eliminadas %s de %s",
"activity-sent": "enviadas %s a %s",
"activity-unjoined": "separadas %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "agregada lista de tareas a %s",
"activity-checklist-item-added": "agregado item de lista de tareas a '%s' en %s",
"add": "Agregar",
@@ -48,6 +50,7 @@
"add-board": "Agregar Tablero",
"add-card": "Agregar Tarjeta",
"add-swimlane": "Agregar Calle",
+ "add-subtask": "Add Subtask",
"add-checklist": "Agregar Lista de Tareas",
"add-checklist-item": "Agregar ítem a lista de tareas",
"add-cover": "Agregar Portadas",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Cambiar Contraseña",
"changePermissionsPopup-title": "Cambiar Permisos",
"changeSettingsPopup-title": "Cambiar Opciones",
+ "subtasks": "Subtasks",
"checklists": "Listas de ítems",
"click-to-star": "Clickeá para darle una estrella a este tablero.",
"click-to-unstar": "Clickeá para sacarle la estrella al tablero.",
@@ -163,7 +167,8 @@
"comment-only": "Comentar solamente",
"comment-only-desc": "Puede comentar en tarjetas solamente.",
"computer": "Computadora",
- "confirm-checklist-delete-dialog": "¿Estás segur@ que querés borrar la lista de ítems?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copiar enlace a tarjeta en el portapapeles",
"copyCardPopup-title": "Copiar Tarjeta",
"copyChecklistToManyCardsPopup-title": "Copiar Plantilla Checklist a Muchas Tarjetas",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json
index fa4f2f11..67f4d46e 100644
--- a/i18n/es.i18n.json
+++ b/i18n/es.i18n.json
@@ -2,6 +2,7 @@
"accept": "Aceptar",
"act-activity-notify": "[Wekan] Notificación de actividad",
"act-addAttachment": "ha adjuntado __attachment__ a __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "ha añadido la lista de verificación __checklist__ a __card__",
"act-addChecklistItem": "ha añadido __checklistItem__ a la lista de verificación __checklist__ en __card__",
"act-addComment": "ha comentado en __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "ha eliminado %s de %s",
"activity-sent": "ha enviado %s a %s",
"activity-unjoined": "se ha desvinculado de %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "ha añadido una lista de verificación a %s",
"activity-checklist-item-added": "ha añadido el elemento de la lista de verificación a '%s' en %s",
"add": "Añadir",
@@ -48,6 +50,7 @@
"add-board": "Añadir tablero",
"add-card": "Añadir una tarjeta",
"add-swimlane": "Añadir un carril de flujo",
+ "add-subtask": "Add Subtask",
"add-checklist": "Añadir una lista de verificación",
"add-checklist-item": "Añadir un elemento a la lista de verificación",
"add-cover": "Añadir portada",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Cambiar la contraseña",
"changePermissionsPopup-title": "Cambiar los permisos",
"changeSettingsPopup-title": "Cambiar las preferencias",
+ "subtasks": "Subtasks",
"checklists": "Lista de verificación",
"click-to-star": "Haz clic para destacar este tablero.",
"click-to-unstar": "Haz clic para dejar de destacar este tablero.",
@@ -163,7 +167,8 @@
"comment-only": "Sólo comentarios",
"comment-only-desc": "Solo puedes comentar en las tarjetas.",
"computer": "el ordenador",
- "confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de verificación?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
"copyCardPopup-title": "Copiar la tarjeta",
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
@@ -475,5 +480,22 @@
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
"delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
"boardDeletePopup-title": "¿Borrar el tablero?",
- "delete-board": "Borrar el tablero"
+ "delete-board": "Borrar el tablero",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json
index 9bd3510a..9ca140d8 100644
--- a/i18n/eu.i18n.json
+++ b/i18n/eu.i18n.json
@@ -2,6 +2,7 @@
"accept": "Onartu",
"act-activity-notify": "[Wekan] Jarduera-jakinarazpena",
"act-addAttachment": "__attachment__ __card__ txartelera erantsita",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "gehituta checklist __checklist__ __card__ -ri",
"act-addChecklistItem": "gehituta __checklistItem__ checklist __checklist__ on __card__ -ri",
"act-addComment": "__card__ txartelean iruzkina: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "%s %s(e)tik kenduta",
"activity-sent": "%s %s(e)ri bidalita",
"activity-unjoined": "%s utzita",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "egiaztaketa zerrenda %s(e)ra gehituta",
"activity-checklist-item-added": "egiaztaketa zerrendako elementuak '%s'(e)ra gehituta %s(e)n",
"add": "Gehitu",
@@ -48,6 +50,7 @@
"add-board": "Gehitu arbela",
"add-card": "Gehitu txartela",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Gehitu egiaztaketa zerrenda",
"add-checklist-item": "Gehitu elementu bat egiaztaketa zerrendara",
"add-cover": "Gehitu azala",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Aldatu pasahitza",
"changePermissionsPopup-title": "Aldatu baimenak",
"changeSettingsPopup-title": "Aldatu ezarpenak",
+ "subtasks": "Subtasks",
"checklists": "Egiaztaketa zerrenda",
"click-to-star": "Egin klik arbel honi izarra jartzeko",
"click-to-unstar": "Egin klik arbel honi izarra kentzeko",
@@ -163,7 +167,8 @@
"comment-only": "Iruzkinak besterik ez",
"comment-only-desc": "Iruzkinak txarteletan soilik egin ditzake",
"computer": "Ordenagailua",
- "confirm-checklist-delete-dialog": "Ziur zaude kontrol-zerrenda ezabatu nahi duzula",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kopiatu txartela arbelera",
"copyCardPopup-title": "Kopiatu txartela",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json
index caa87ded..481a56ac 100644
--- a/i18n/fa.i18n.json
+++ b/i18n/fa.i18n.json
@@ -2,6 +2,7 @@
"accept": "پذیرش",
"act-activity-notify": "[wekan] اطلاع فعالیت",
"act-addAttachment": "پیوست __attachment__ به __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "سیاهه __checklist__ به __card__ افزوده شد",
"act-addChecklistItem": "__checklistItem__ به سیاهه __checklist__ در __card__ افزوده شد",
"act-addComment": "درج نظر برای __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "%s از %s حذف شد",
"activity-sent": "ارسال %s به %s",
"activity-unjoined": "قطع اتصال %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "سیاهه به %s اضافه شد",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "افزودن",
@@ -48,6 +50,7 @@
"add-board": "افزودن برد",
"add-card": "افزودن کارت",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "افزودن چک لیست",
"add-checklist-item": "افزودن مورد به سیاهه",
"add-cover": "جلد کردن",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "تغییر کلمه عبور",
"changePermissionsPopup-title": "تغییر دسترسی‌ها",
"changeSettingsPopup-title": "تغییر تنظیمات",
+ "subtasks": "Subtasks",
"checklists": "سیاهه‌ها",
"click-to-star": "با کلیک کردن ستاره بدهید",
"click-to-unstar": "با کلیک کردن ستاره را کم کنید",
@@ -163,7 +167,8 @@
"comment-only": "فقط نظر",
"comment-only-desc": "فقط می‌تواند روی کارت‌ها نظر دهد.",
"computer": "رایانه",
- "confirm-checklist-delete-dialog": "مطمئنید که می‌خواهید سیاهه را حذف کنید؟",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "درج پیوند کارت در حافظه",
"copyCardPopup-title": "کپی کارت",
"copyChecklistToManyCardsPopup-title": "کپی قالب کارت به کارت‌های متعدد",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json
index 34e58d1b..3677dacb 100644
--- a/i18n/fi.i18n.json
+++ b/i18n/fi.i18n.json
@@ -2,6 +2,7 @@
"accept": "Hyväksy",
"act-activity-notify": "[Wekan] Toimintailmoitus",
"act-addAttachment": "liitetty __attachment__ kortille __card__",
+ "act-addSubtask": "lisätty alitehtävä __checklist__ kortille __card__",
"act-addChecklist": "lisätty tarkistuslista __checklist__ kortille __card__",
"act-addChecklistItem": "lisätty kohta __checklistItem__ tarkistuslistaan __checklist__ kortilla __card__",
"act-addComment": "kommentoitu __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "poistettu %s kohteesta %s",
"activity-sent": "lähetetty %s kohteeseen %s",
"activity-unjoined": "peruttu %s liittyminen",
+ "activity-subtask-added": "lisätty alitehtävä kohteeseen %s",
"activity-checklist-added": "lisätty tarkistuslista kortille %s",
"activity-checklist-item-added": "lisäsi kohdan tarkistuslistaan '%s' kortilla %s",
"add": "Lisää",
@@ -48,6 +50,7 @@
"add-board": "Lisää taulu",
"add-card": "Lisää kortti",
"add-swimlane": "Lisää Swimlane",
+ "add-subtask": "Lisää alitehtävä",
"add-checklist": "Lisää tarkistuslista",
"add-checklist-item": "Lisää kohta tarkistuslistaan",
"add-cover": "Lisää kansi",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Vaihda salasana",
"changePermissionsPopup-title": "Muokkaa oikeuksia",
"changeSettingsPopup-title": "Muokkaa asetuksia",
+ "subtasks": "Alitehtävät",
"checklists": "Tarkistuslistat",
"click-to-star": "Klikkaa merkataksesi tämä taulu tähdellä.",
"click-to-unstar": "Klikkaa poistaaksesi tähtimerkintä taululta.",
@@ -163,7 +167,8 @@
"comment-only": "Vain kommentointi",
"comment-only-desc": "Voi vain kommentoida kortteja",
"computer": "Tietokone",
- "confirm-checklist-delete-dialog": "Haluatko varmasti poistaa tarkistuslistan",
+ "confirm-subtask-delete-dialog": "Oletko varma että haluat poistaa alitehtävän?",
+ "confirm-checklist-delete-dialog": "Oletko varma että haluat poistaa tarkistuslistan?",
"copy-card-link-to-clipboard": "Kopioi kortin linkki leikepöydälle",
"copyCardPopup-title": "Kopioi kortti",
"copyChecklistToManyCardsPopup-title": "Kopioi tarkistuslistan malli monille korteille",
@@ -475,5 +480,22 @@
"board-delete-notice": "Poistaminen on lopullista. Menetät kaikki listat, kortit ja toimet tällä taululla.",
"delete-board-confirm-popup": "Kaikki listat, kortit, tunnisteet ja toimet poistetaan ja et pysty palauttamaan taulun sisältöä. Tätä ei voi peruuttaa.",
"boardDeletePopup-title": "Poista taulu?",
- "delete-board": "Poista taulu"
+ "delete-board": "Poista taulu",
+ "default-subtasks-board": "Alitehtävät __board__ taululle",
+ "default": "Oletus",
+ "queue": "Jono",
+ "subtask-settings": "Alitehtävä asetukset",
+ "boardSubtaskSettingsPopup-title": "Taulu alitehtävien asetukset",
+ "show-subtasks-field": "Korteilla voi olla alitehtäviä",
+ "deposit-subtasks-board": "Tallenta alitehtävät tälle taululle:",
+ "deposit-subtasks-list": "Laskeutumislista alatehtäville tallennettu tänne:",
+ "show-parent-in-minicard": "Näytä ylätehtävä minikortilla:",
+ "prefix-with-full-path": "Etuliite koko polulla",
+ "prefix-with-parent": "Etuliite ylätehtävällä",
+ "subtext-with-full-path": "Aliteksti koko polulla",
+ "subtext-with-parent": "Aliteksti ylätehtävällä",
+ "change-card-parent": "Muuta kortin ylätehtävää",
+ "parent-card": "Ylätehtävä kortti",
+ "source-board": "Lähdetaulu",
+ "no-parent": "Älä näytä ylätehtävää"
} \ No newline at end of file
diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json
index cae8c836..22a3e8cf 100644
--- a/i18n/fr.i18n.json
+++ b/i18n/fr.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accepter",
"act-activity-notify": "[Wekan] Notification d'activité",
"act-addAttachment": "a joint __attachment__ à __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "a ajouté la checklist __checklist__ à __card__",
"act-addChecklistItem": "a ajouté l'élément __checklistItem__ à la checklist __checklist__ de __card__",
"act-addComment": "a commenté __card__ : __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "a supprimé %s de %s",
"activity-sent": "a envoyé %s vers %s",
"activity-unjoined": "a quitté %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "a ajouté une checklist à %s",
"activity-checklist-item-added": "a ajouté un élément à la checklist '%s' dans %s",
"add": "Ajouter",
@@ -48,6 +50,7 @@
"add-board": "Ajouter un tableau",
"add-card": "Ajouter une carte",
"add-swimlane": "Ajouter un couloir",
+ "add-subtask": "Add Subtask",
"add-checklist": "Ajouter une checklist",
"add-checklist-item": "Ajouter un élément à la checklist",
"add-cover": "Ajouter la couverture",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Modifier le mot de passe",
"changePermissionsPopup-title": "Modifier les permissions",
"changeSettingsPopup-title": "Modifier les paramètres",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Cliquez pour ajouter ce tableau aux favoris.",
"click-to-unstar": "Cliquez pour retirer ce tableau des favoris.",
@@ -163,7 +167,8 @@
"comment-only": "Commentaire uniquement",
"comment-only-desc": "Ne peut que commenter des cartes.",
"computer": "Ordinateur",
- "confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer la checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
"copyCardPopup-title": "Copier la carte",
"copyChecklistToManyCardsPopup-title": "Copier le modèle de checklist vers plusieurs cartes",
@@ -475,5 +480,22 @@
"board-delete-notice": "La suppression est définitive. Vous perdrez toutes vos listes, cartes et actions associées à ce tableau.",
"delete-board-confirm-popup": "Toutes les listes, cartes, étiquettes et activités seront supprimées et vous ne pourrez pas retrouver le contenu du tableau. Il n'y a pas d'annulation possible.",
"boardDeletePopup-title": "Supprimer le tableau ?",
- "delete-board": "Supprimer le tableau"
+ "delete-board": "Supprimer le tableau",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json
index 25e3e662..5422314d 100644
--- a/i18n/gl.i18n.json
+++ b/i18n/gl.i18n.json
@@ -2,6 +2,7 @@
"accept": "Aceptar",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Engadir",
@@ -48,6 +50,7 @@
"add-board": "Engadir taboleiro",
"add-card": "Engadir tarxeta",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Cambiar o contrasinal",
"changePermissionsPopup-title": "Cambiar os permisos",
"changeSettingsPopup-title": "Cambiar a configuración",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computador",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json
index 6d5dd812..f15c7f9b 100644
--- a/i18n/he.i18n.json
+++ b/i18n/he.i18n.json
@@ -2,6 +2,7 @@
"accept": "אישור",
"act-activity-notify": "[Wekan] הודעת פעילות",
"act-addAttachment": " __attachment__ צורף לכרטיס __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "רשימת משימות __checklist__ נוספה ל __card__",
"act-addChecklistItem": " __checklistItem__ נוסף לרשימת משימות __checklist__ בכרטיס __card__",
"act-addComment": "התקבלה תגובה על הכרטיס __card__:‏ __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "%s הוסר מ%s",
"activity-sent": "%s נשלח ל%s",
"activity-unjoined": "בטל צירוף %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "נוספה רשימת משימות אל %s",
"activity-checklist-item-added": "נוסף פריט רשימת משימות אל ‚%s‘ תחת %s",
"add": "הוספה",
@@ -48,6 +50,7 @@
"add-board": "הוספת לוח",
"add-card": "הוספת כרטיס",
"add-swimlane": "הוספת מסלול",
+ "add-subtask": "Add Subtask",
"add-checklist": "הוספת רשימת מטלות",
"add-checklist-item": "הוספת פריט לרשימת משימות",
"add-cover": "הוספת כיסוי",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "החלפת ססמה",
"changePermissionsPopup-title": "שינוי הרשאות",
"changeSettingsPopup-title": "שינוי הגדרות",
+ "subtasks": "Subtasks",
"checklists": "רשימות",
"click-to-star": "יש ללחוץ להוספת הלוח למועדפים.",
"click-to-unstar": "יש ללחוץ להסרת הלוח מהמועדפים.",
@@ -163,7 +167,8 @@
"comment-only": "הערה בלבד",
"comment-only-desc": "ניתן להעיר על כרטיסים בלבד.",
"computer": "מחשב",
- "confirm-checklist-delete-dialog": "האם אתה בטוח שברצונך למחוק את רשימת המשימות",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים",
"copyCardPopup-title": "העתק כרטיס",
"copyChecklistToManyCardsPopup-title": "העתקת תבנית רשימת מטלות למגוון כרטיסים",
@@ -475,5 +480,22 @@
"board-delete-notice": "מחיקה היא לצמיתות. כל הרשימות, הכרטיבים והפעולות שקשורים בלוח הזה ילכו לאיבוד.",
"delete-board-confirm-popup": "כל הרשימות, הכרטיסים, התווית והפעולות יימחקו ולא תהיה לך דרך לשחזר את תכני הלוח. אין אפשרות לבטל.",
"boardDeletePopup-title": "למחוק את הלוח?",
- "delete-board": "מחיקת לוח"
+ "delete-board": "מחיקת לוח",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json
index e14e7995..07379611 100644
--- a/i18n/hu.i18n.json
+++ b/i18n/hu.i18n.json
@@ -2,6 +2,7 @@
"accept": "Elfogadás",
"act-activity-notify": "[Wekan] Tevékenység értesítés",
"act-addAttachment": "__attachment__ mellékletet csatolt a kártyához: __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "__checklist__ ellenőrzőlistát adott hozzá a kártyához: __card__",
"act-addChecklistItem": "__checklistItem__ elemet adott hozzá a(z) __checklist__ ellenőrzőlistához ezen a kártyán: __card__",
"act-addComment": "hozzászólt a(z) __card__ kártyán: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "%s eltávolítva innen: %s",
"activity-sent": "%s elküldve ide: %s",
"activity-unjoined": "%s kilépett a csoportból",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "ellenőrzőlista hozzáadva ehhez: %s",
"activity-checklist-item-added": "ellenőrzőlista elem hozzáadva ehhez: „%s”, ebben: %s",
"add": "Hozzáadás",
@@ -48,6 +50,7 @@
"add-board": "Tábla hozzáadása",
"add-card": "Kártya hozzáadása",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Ellenőrzőlista hozzáadása",
"add-checklist-item": "Elem hozzáadása az ellenőrzőlistához",
"add-cover": "Borító hozzáadása",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Jelszó megváltoztatása",
"changePermissionsPopup-title": "Jogosultságok megváltoztatása",
"changeSettingsPopup-title": "Beállítások megváltoztatása",
+ "subtasks": "Subtasks",
"checklists": "Ellenőrzőlisták",
"click-to-star": "Kattintson a tábla csillagozásához.",
"click-to-unstar": "Kattintson a tábla csillagának eltávolításához.",
@@ -163,7 +167,8 @@
"comment-only": "Csak megjegyzés",
"comment-only-desc": "Csak megjegyzést írhat a kártyákhoz.",
"computer": "Számítógép",
- "confirm-checklist-delete-dialog": "Biztosan törölni szeretné az ellenőrzőlistát?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
"copyCardPopup-title": "Kártya másolása",
"copyChecklistToManyCardsPopup-title": "Ellenőrzőlista sablon másolása több kártyára",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json
index 0911aed1..124bc7dd 100644
--- a/i18n/hy.i18n.json
+++ b/i18n/hy.i18n.json
@@ -2,6 +2,7 @@
"accept": "Ընդունել",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "ավելացրել է __checklistItem__ __checklist__ on __card__-ին",
"act-addComment": "մեկնաբանել է __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json
index 3954f67c..a80444a7 100644
--- a/i18n/id.i18n.json
+++ b/i18n/id.i18n.json
@@ -2,6 +2,7 @@
"accept": "Terima",
"act-activity-notify": "[Wekan] Pemberitahuan Kegiatan",
"act-addAttachment": "Lampirkan__attachment__ke__kartu__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "Dikomentari di__kartu__:__comment__",
@@ -41,6 +42,7 @@
"activity-removed": "dihapus %s dari %s",
"activity-sent": "terkirim %s ke %s",
"activity-unjoined": "tidak bergabung %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "daftar periksa ditambahkan ke %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Tambah",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Tambahkan hal ke daftar periksa",
"add-cover": "Tambahkan Sampul",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Ubah Kata Sandi",
"changePermissionsPopup-title": "Ubah Hak Akses",
"changeSettingsPopup-title": "Ubah Setelan",
+ "subtasks": "Subtasks",
"checklists": "Daftar Periksa",
"click-to-star": "Klik untuk tandai bintang panel ini",
"click-to-unstar": "Klik untuk tidak memberi bintang pada panel ini",
@@ -163,7 +167,8 @@
"comment-only": "Hanya komentar",
"comment-only-desc": "Bisa komen hanya di kartu",
"computer": "Komputer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json
index f522a92c..90ce0668 100644
--- a/i18n/ig.i18n.json
+++ b/i18n/ig.i18n.json
@@ -2,6 +2,7 @@
"accept": "Kwere",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Tinye",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json
index 99c84699..b067d567 100644
--- a/i18n/it.i18n.json
+++ b/i18n/it.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accetta",
"act-activity-notify": "[Wekan] Notifiche attività",
"act-addAttachment": "ha allegato __attachment__ a __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "aggiunta checklist __checklist__ a __card__",
"act-addChecklistItem": "aggiunto __checklistItem__ alla checklist __checklist__ di __card__",
"act-addComment": "ha commentato su __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "rimosso %s da %s",
"activity-sent": "inviato %s a %s",
"activity-unjoined": "ha abbandonato %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "aggiunta checklist a %s",
"activity-checklist-item-added": "Aggiunto l'elemento checklist a '%s' in %s",
"add": "Aggiungere",
@@ -48,6 +50,7 @@
"add-board": "Aggiungi Bacheca",
"add-card": "Aggiungi Scheda",
"add-swimlane": "Aggiungi Corsia",
+ "add-subtask": "Add Subtask",
"add-checklist": "Aggiungi Checklist",
"add-checklist-item": "Aggiungi un elemento alla checklist",
"add-cover": "Aggiungi copertina",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Cambia password",
"changePermissionsPopup-title": "Cambia permessi",
"changeSettingsPopup-title": "Cambia impostazioni",
+ "subtasks": "Subtasks",
"checklists": "Checklist",
"click-to-star": "Clicca per stellare questa bacheca",
"click-to-unstar": "Clicca per togliere la stella da questa bacheca",
@@ -163,7 +167,8 @@
"comment-only": "Solo commenti",
"comment-only-desc": "Puoi commentare solo le schede.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Sei sicuro di voler cancellare questa checklist?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
"copyCardPopup-title": "Copia Scheda",
"copyChecklistToManyCardsPopup-title": "Copia template checklist su più schede",
@@ -475,5 +480,22 @@
"board-delete-notice": "L'eliminazione è permanente. Tutte le azioni, liste e schede associate a questa bacheca andranno perse.",
"delete-board-confirm-popup": "Tutte le liste, schede, etichette e azioni saranno rimosse e non sarai più in grado di recuperare il contenuto della bacheca. L'azione non è annullabile.",
"boardDeletePopup-title": "Eliminare la bacheca?",
- "delete-board": "Elimina bacheca"
+ "delete-board": "Elimina bacheca",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json
index 4b8a6d8d..9910b002 100644
--- a/i18n/ja.i18n.json
+++ b/i18n/ja.i18n.json
@@ -2,6 +2,7 @@
"accept": "受け入れ",
"act-activity-notify": "[Wekan] アクティビティ通知",
"act-addAttachment": "__card__ に __attachment__ を添付しました",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "__card__ に __checklist__ を追加しました",
"act-addChecklistItem": "__checklist__ on __card__ に __checklistItem__ を追加しました",
"act-addComment": "__card__: __comment__ をコメントしました",
@@ -41,6 +42,7 @@
"activity-removed": "%s を %s から削除しました",
"activity-sent": "%s を %s に送りました",
"activity-unjoined": "%s への参加を止めました",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "%s にチェックリストを追加しました",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "追加",
@@ -48,6 +50,7 @@
"add-board": "ボードを追加",
"add-card": "カードを追加",
"add-swimlane": "スイムレーンを追加",
+ "add-subtask": "Add Subtask",
"add-checklist": "チェックリストを追加",
"add-checklist-item": "チェックリストに項目を追加",
"add-cover": "カバーの追加",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "パスワードの変更",
"changePermissionsPopup-title": "パーミッションの変更",
"changeSettingsPopup-title": "設定の変更",
+ "subtasks": "Subtasks",
"checklists": "チェックリスト",
"click-to-star": "ボードにスターをつける",
"click-to-unstar": "ボードからスターを外す",
@@ -163,7 +167,8 @@
"comment-only": "コメントのみ",
"comment-only-desc": "カードにのみコメント可能",
"computer": "コンピューター",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "カードへのリンクをクリップボードにコピー",
"copyCardPopup-title": "カードをコピー",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "すべてのリスト、カード、ラベル、アクティビティは削除され、ボードの内容を元に戻すことができません。",
"boardDeletePopup-title": "ボードを削除しますか?",
- "delete-board": "ボードを削除"
+ "delete-board": "ボードを削除",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json
index 53c2f91a..83751851 100644
--- a/i18n/ka.i18n.json
+++ b/i18n/ka.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json
index 9484c7cc..e1a26fcb 100644
--- a/i18n/km.i18n.json
+++ b/i18n/km.i18n.json
@@ -2,6 +2,7 @@
"accept": "យល់ព្រម",
"act-activity-notify": "[Wekan] សកម្មភាពជូនដំណឹង",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json
index 97963a8a..d9a980df 100644
--- a/i18n/ko.i18n.json
+++ b/i18n/ko.i18n.json
@@ -2,6 +2,7 @@
"accept": "확인",
"act-activity-notify": "[Wekan] 활동 알림",
"act-addAttachment": "__attachment__를 __card__에 첨부",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "__card__에 내용 추가 : __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "%s를 %s에서 삭제함",
"activity-sent": "%s를 %s로 보냄",
"activity-unjoined": "%s에서 멤버 해제",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "%s에 체크리스트를 추가함",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "추가",
@@ -48,6 +50,7 @@
"add-board": "보드 추가",
"add-card": "카드 추가",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "체크리스트 추가",
"add-checklist-item": "체크리스트에 항목 추가",
"add-cover": "커버 추가",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "암호 변경",
"changePermissionsPopup-title": "권한 변경",
"changeSettingsPopup-title": "설정 변경",
+ "subtasks": "Subtasks",
"checklists": "체크리스트",
"click-to-star": "보드에 별 추가.",
"click-to-unstar": "보드에 별 삭제.",
@@ -163,7 +167,8 @@
"comment-only": "댓글만 입력 가능",
"comment-only-desc": "카드에 댓글만 달수 있습니다.",
"computer": "내 컴퓨터",
- "confirm-checklist-delete-dialog": "정말 이 체크리스트를 삭제할까요?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "클립보드에 카드의 링크가 복사되었습니다.",
"copyCardPopup-title": "카드 복사",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json
index 46d958cc..b79c7043 100644
--- a/i18n/lv.i18n.json
+++ b/i18n/lv.i18n.json
@@ -2,6 +2,7 @@
"accept": "Piekrist",
"act-activity-notify": "[Wekan] Aktivitātes paziņojums",
"act-addAttachment": "pievienots __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "pievienots checklist __checklist__ to __card__",
"act-addChecklistItem": "pievienots __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "komentēja __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json
index b5b97822..7f0c2fc1 100644
--- a/i18n/mn.i18n.json
+++ b/i18n/mn.i18n.json
@@ -2,6 +2,7 @@
"accept": "Зөвшөөрөх",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "_attachment__ хавсралтыг __card__-д хавсаргав",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Нэмэх",
@@ -48,6 +50,7 @@
"add-board": "Самбар нэмэх",
"add-card": "Карт нэмэх",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Чеклист нэмэх",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Нууц үг солих",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Тохиргоо өөрчлөх",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json
index 1d09cb7c..1838aa0f 100644
--- a/i18n/nb.i18n.json
+++ b/i18n/nb.i18n.json
@@ -2,6 +2,7 @@
"accept": "Godta",
"act-activity-notify": "[Wekan] Aktivitetsvarsel",
"act-addAttachment": "la ved __attachment__ til __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "kommenterte til __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "fjernet %s fra %s",
"activity-sent": "sendte %s til %s",
"activity-unjoined": "forlot %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "la til sjekkliste til %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Legg til",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Nytt punkt på sjekklisten",
"add-cover": "Nytt omslag",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Endre passord",
"changePermissionsPopup-title": "Endre tillatelser",
"changeSettingsPopup-title": "Endre innstillinger",
+ "subtasks": "Subtasks",
"checklists": "Sjekklister",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json
index 5dd23d41..90832ea6 100644
--- a/i18n/nl.i18n.json
+++ b/i18n/nl.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accepteren",
"act-activity-notify": "[Wekan] Activiteit Notificatie",
"act-addAttachment": "__attachment__ als bijlage toegevoegd aan __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "__checklist__ toegevoegd aan __card__",
"act-addChecklistItem": "__checklistItem__ aan checklist toegevoegd aan __checklist__ op __card__",
"act-addComment": "gereageerd op __card__:__comment__",
@@ -41,6 +42,7 @@
"activity-removed": "%s verwijderd van %s",
"activity-sent": "%s gestuurd naar %s",
"activity-unjoined": "uit %s gegaan",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "checklist toegevoegd aan %s",
"activity-checklist-item-added": "checklist punt toegevoegd aan '%s' in '%s'",
"add": "Toevoegen",
@@ -48,6 +50,7 @@
"add-board": "Voeg Bord Toe",
"add-card": "Voeg Kaart Toe",
"add-swimlane": "Swimlane Toevoegen",
+ "add-subtask": "Add Subtask",
"add-checklist": "Voeg Checklist Toe",
"add-checklist-item": "Voeg item toe aan checklist",
"add-cover": "Voeg Cover Toe",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Wijzig wachtwoord",
"changePermissionsPopup-title": "Wijzig permissies",
"changeSettingsPopup-title": "Wijzig instellingen",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Klik om het bord als favoriet in te stellen",
"click-to-unstar": "Klik om het bord uit favorieten weg te halen",
@@ -163,7 +167,8 @@
"comment-only": "Alleen reageren",
"comment-only-desc": "Kan alleen op kaarten reageren.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Weet u zeker dat u de checklist wilt verwijderen",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kopieer kaart link naar klembord",
"copyCardPopup-title": "Kopieer kaart",
"copyChecklistToManyCardsPopup-title": "Checklist sjabloon kopiëren naar meerdere kaarten",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json
index 1d52d2ee..fcaa5bab 100644
--- a/i18n/pl.i18n.json
+++ b/i18n/pl.i18n.json
@@ -2,6 +2,7 @@
"accept": "Akceptuj",
"act-activity-notify": "[Wekan] Powiadomienia - aktywności",
"act-addAttachment": "załączono __attachement__ do __karty__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "dodano listę zadań __checklist__ to __card__",
"act-addChecklistItem": "dodano __checklistItem__ do listy zadań __checklist__ na karcie __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "usunięto %s z %s",
"activity-sent": "wysłano %s z %s",
"activity-unjoined": "odłączono %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Dodaj",
@@ -48,6 +50,7 @@
"add-board": "Dodaj tablicę",
"add-card": "Dodaj kartę",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Dodaj listę kontrolną",
"add-checklist-item": "Dodaj element do listy kontrolnej",
"add-cover": "Dodaj okładkę",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Zmień hasło",
"changePermissionsPopup-title": "Zmień uprawnienia",
"changeSettingsPopup-title": "Zmień ustawienia",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Kliknij by odznaczyć tę tablicę.",
"click-to-unstar": "Kliknij by usunąć odznaczenie tej tablicy.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Komputer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Skopiuj kartę",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json
index 15496c0d..f92f3d21 100644
--- a/i18n/pt-BR.i18n.json
+++ b/i18n/pt-BR.i18n.json
@@ -2,6 +2,7 @@
"accept": "Aceitar",
"act-activity-notify": "[Wekan] Notificação de Atividade",
"act-addAttachment": "anexo __attachment__ de __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ no __card__",
"act-addChecklistItem": "adicionado __checklistitem__ para a lista de checagem __checklist__ em __card__",
"act-addComment": "comentou em __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removeu %s de %s",
"activity-sent": "enviou %s de %s",
"activity-unjoined": "saiu de %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "Adicionado lista de verificação a %s",
"activity-checklist-item-added": "adicionado o item de checklist para '%s' em %s",
"add": "Novo",
@@ -48,6 +50,7 @@
"add-board": "Adicionar Quadro",
"add-card": "Adicionar Cartão",
"add-swimlane": "Adicionar Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Adicionar Checklist",
"add-checklist-item": "Adicionar um item à lista de verificação",
"add-cover": "Adicionar Capa",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Alterar Senha",
"changePermissionsPopup-title": "Alterar Permissões",
"changeSettingsPopup-title": "Altera configurações",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Marcar quadro como favorito.",
"click-to-unstar": "Remover quadro dos favoritos.",
@@ -163,7 +167,8 @@
"comment-only": "Somente comentários",
"comment-only-desc": "Pode comentar apenas em cartões.",
"computer": "Computador",
- "confirm-checklist-delete-dialog": "Tem a certeza de que pretende eliminar lista de verificação",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copiar link do cartão para a área de transferência",
"copyCardPopup-title": "Copiar o cartão",
"copyChecklistToManyCardsPopup-title": "Copiar modelo de checklist para vários cartões",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json
index 9f8b9b96..0c988d43 100644
--- a/i18n/pt.i18n.json
+++ b/i18n/pt.i18n.json
@@ -2,6 +2,7 @@
"accept": "Aceitar",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Adicionar",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computador",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json
index 0d854bbd..a70e3972 100644
--- a/i18n/ro.i18n.json
+++ b/i18n/ro.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json
index 1b85c355..1d55aedf 100644
--- a/i18n/ru.i18n.json
+++ b/i18n/ru.i18n.json
@@ -2,6 +2,7 @@
"accept": "Принять",
"act-activity-notify": "[Wekan] Уведомление о действиях участников",
"act-addAttachment": "вложено __attachment__ в __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "добавил контрольный список __checklist__ в __card__",
"act-addChecklistItem": "добавил __checklistItem__ в контрольный список __checklist__ в __card__",
"act-addComment": "прокомментировал __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "удалил %s из %s",
"activity-sent": "отправил %s в %s",
"activity-unjoined": "вышел из %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "добавил контрольный список в %s",
"activity-checklist-item-added": "добавил пункт контрольного списка в '%s' в карточке %s",
"add": "Создать",
@@ -48,6 +50,7 @@
"add-board": "Добавить доску",
"add-card": "Добавить карту",
"add-swimlane": "Добавить дорожку",
+ "add-subtask": "Add Subtask",
"add-checklist": "Добавить контрольный список",
"add-checklist-item": "Добавить пункт в контрольный список",
"add-cover": "Прикрепить",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Изменить пароль",
"changePermissionsPopup-title": "Изменить настройки доступа",
"changeSettingsPopup-title": "Изменить Настройки",
+ "subtasks": "Subtasks",
"checklists": "Контрольные списки",
"click-to-star": "Добавить в «Избранное»",
"click-to-unstar": "Удалить из «Избранного»",
@@ -163,7 +167,8 @@
"comment-only": "Только комментирование",
"comment-only-desc": "Может комментировать только карточки.",
"computer": "Загрузить с компьютера",
- "confirm-checklist-delete-dialog": "Вы уверены, что хотите удалить контрольный список?",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
"copyCardPopup-title": "Копировать карточку",
"copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
@@ -475,5 +480,22 @@
"board-delete-notice": "Удаление является постоянным. Вы потеряете все списки, карты и действия, связанные с этой доской.",
"delete-board-confirm-popup": "Все списки, карточки, ярлыки и действия будут удалены, и вы не сможете восстановить содержимое доски. Отменить нельзя.",
"boardDeletePopup-title": "Удалить доску?",
- "delete-board": "Удалить доску"
+ "delete-board": "Удалить доску",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json
index 853e867d..6f25bc3b 100644
--- a/i18n/sr.i18n.json
+++ b/i18n/sr.i18n.json
@@ -2,6 +2,7 @@
"accept": "Prihvati",
"act-activity-notify": "[Wekan] Obaveštenje o aktivnostima",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "uklonio %s iz %s",
"activity-sent": "poslao %s %s-u",
"activity-unjoined": "rastavio %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "lista je dodata u %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Dodaj",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Dodaj novu stavku u listu",
"add-cover": "Dodaj zaglavlje",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Izmeni podešavanja",
+ "subtasks": "Subtasks",
"checklists": "Liste",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json
index 164a5620..25bcf6f3 100644
--- a/i18n/sv.i18n.json
+++ b/i18n/sv.i18n.json
@@ -2,6 +2,7 @@
"accept": "Acceptera",
"act-activity-notify": "[Wekan] Aktivitetsavisering",
"act-addAttachment": "bifogade __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "lade till checklist __checklist__ till __card__",
"act-addChecklistItem": "lade till __checklistItem__ till checklistan __checklist__ on __card__",
"act-addComment": "kommenterade __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "tog bort %s från %s",
"activity-sent": "skickade %s till %s",
"activity-unjoined": "gick ur %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "lade kontrollista till %s",
"activity-checklist-item-added": "lade checklista objekt till '%s' i %s",
"add": "Lägg till",
@@ -48,6 +50,7 @@
"add-board": "Lägg till anslagstavla",
"add-card": "Lägg till kort",
"add-swimlane": "Lägg till simbana",
+ "add-subtask": "Add Subtask",
"add-checklist": "Lägg till checklista",
"add-checklist-item": "Lägg till ett objekt till kontrollista",
"add-cover": "Lägg till omslag",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Ändra lösenord",
"changePermissionsPopup-title": "Ändra behörigheter",
"changeSettingsPopup-title": "Ändra inställningar",
+ "subtasks": "Subtasks",
"checklists": "Kontrollistor",
"click-to-star": "Klicka för att stjärnmärka denna anslagstavla.",
"click-to-unstar": "Klicka för att ta bort stjärnmärkningen från denna anslagstavla.",
@@ -163,7 +167,8 @@
"comment-only": "Kommentera endast",
"comment-only-desc": "Kan endast kommentera kort.",
"computer": "Dator",
- "confirm-checklist-delete-dialog": "Är du säker på att du vill ta bort checklista",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kopiera kortlänk till urklipp",
"copyCardPopup-title": "Kopiera kort",
"copyChecklistToManyCardsPopup-title": "Kopiera checklist-mallen till flera kort",
@@ -475,5 +480,22 @@
"board-delete-notice": "Borttagningen är permanent. Du kommer förlora alla listor, kort och händelser kopplade till den här anslagstavlan.",
"delete-board-confirm-popup": "Alla listor, kort, etiketter och aktiviteter kommer tas bort och du kommer inte kunna återställa anslagstavlans innehåll. Det går inte att ångra.",
"boardDeletePopup-title": "Ta bort anslagstavla?",
- "delete-board": "Ta bort anslagstavla"
+ "delete-board": "Ta bort anslagstavla",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json
index 53c2f91a..83751851 100644
--- a/i18n/ta.i18n.json
+++ b/i18n/ta.i18n.json
@@ -2,6 +2,7 @@
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json
index e7048f6e..fcde0e71 100644
--- a/i18n/th.i18n.json
+++ b/i18n/th.i18n.json
@@ -2,6 +2,7 @@
"accept": "ยอมรับ",
"act-activity-notify": "[Wekan] แจ้งกิจกรรม",
"act-addAttachment": "แนบไฟล์ __attachment__ ไปยัง __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "ออกความเห็นที่ __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "ลบ %s จาด %s",
"activity-sent": "ส่ง %s ถึง %s",
"activity-unjoined": "ยกเลิกเข้าร่วม %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "รายการถูกเพิ่มไป %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "เพิ่ม",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "เพิ่มรายการตรวจสอบ",
"add-cover": "เพิ่มหน้าปก",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "เปลี่ยนรหัสผ่าน",
"changePermissionsPopup-title": "เปลี่ยนสิทธิ์",
"changeSettingsPopup-title": "เปลี่ยนการตั้งค่า",
+ "subtasks": "Subtasks",
"checklists": "รายการตรวจสอบ",
"click-to-star": "คลิกดาวบอร์ดนี้",
"click-to-unstar": "คลิกยกเลิกดาวบอร์ดนี้",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "คอมพิวเตอร์",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json
index 03798130..c0d2026a 100644
--- a/i18n/tr.i18n.json
+++ b/i18n/tr.i18n.json
@@ -2,6 +2,7 @@
"accept": "Kabul Et",
"act-activity-notify": "[Wekan] Etkinlik Bildirimi",
"act-addAttachment": "__card__ kartına __attachment__ dosyasını ekledi",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "__card__ kartında __checklist__ yapılacak listesini ekledi",
"act-addChecklistItem": "__checklistItem__ öğesini __card__ kartındaki __checklist__ yapılacak listesine ekledi",
"act-addComment": "__card__ kartına bir yorum bıraktı: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "%s i %s ten kaldırdı",
"activity-sent": "%s i %s e gönderdi",
"activity-unjoined": "%s içinden ayrıldı",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "%s içine yapılacak listesi ekledi",
"activity-checklist-item-added": "%s içinde %s yapılacak listesine öğe ekledi",
"add": "Ekle",
@@ -48,6 +50,7 @@
"add-board": "Pano Ekle",
"add-card": "Kart Ekle",
"add-swimlane": "Kulvar Ekle",
+ "add-subtask": "Add Subtask",
"add-checklist": "Yapılacak Listesi Ekle",
"add-checklist-item": "Yapılacak listesine yeni bir öğe ekle",
"add-cover": "Kapak resmi ekle",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Parola Değiştir",
"changePermissionsPopup-title": "Yetkileri Değiştirme",
"changeSettingsPopup-title": "Ayarları değiştir",
+ "subtasks": "Subtasks",
"checklists": "Yapılacak Listeleri",
"click-to-star": "Bu panoyu yıldızlamak için tıkla.",
"click-to-unstar": "Bu panunun yıldızını kaldırmak için tıkla.",
@@ -163,7 +167,8 @@
"comment-only": "Sadece yorum",
"comment-only-desc": "Sadece kartlara yorum yazabilir.",
"computer": "Bilgisayar",
- "confirm-checklist-delete-dialog": "Yapılacak listesini silmek istediğinize emin misiniz",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Kartın linkini kopyala",
"copyCardPopup-title": "Kartı Kopyala",
"copyChecklistToManyCardsPopup-title": "Yapılacaklar Listesi şemasını birden çok karta kopyala",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json
index ef76ed5f..459aad9e 100644
--- a/i18n/uk.i18n.json
+++ b/i18n/uk.i18n.json
@@ -2,6 +2,7 @@
"accept": "Прийняти",
"act-activity-notify": "[Wekan] Сповіщення Діяльності",
"act-addAttachment": "__attachment__ додане до __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "комментар в __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Додати",
@@ -48,6 +50,7 @@
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
"add-checklist-item": "Додати елемент в список",
"add-cover": "Додати обкладинку",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json
index 320942e1..e785f0d0 100644
--- a/i18n/vi.i18n.json
+++ b/i18n/vi.i18n.json
@@ -2,6 +2,7 @@
"accept": "Chấp nhận",
"act-activity-notify": "[Wekan] Thông Báo Hoạt Động",
"act-addAttachment": "đã đính kèm __attachment__ vào __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "đã bình luận trong __card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "đã xóa %s từ %s",
"activity-sent": "gửi %s đến %s",
"activity-unjoined": "đã rời khỏi %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "đã thêm checklist vào %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Thêm",
@@ -48,6 +50,7 @@
"add-board": "Thêm Bảng",
"add-card": "Thêm Thẻ",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "Thêm Danh Sách Kiểm Tra",
"add-checklist-item": "Thêm Một Mục Vào Danh Sách Kiểm Tra",
"add-cover": "Thêm Bìa",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
+ "subtasks": "Subtasks",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -163,7 +167,8 @@
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json
index 3205f107..6ea7ee27 100644
--- a/i18n/zh-CN.i18n.json
+++ b/i18n/zh-CN.i18n.json
@@ -2,6 +2,7 @@
"accept": "接受",
"act-activity-notify": "[Wekan] 活动通知",
"act-addAttachment": "添加附件 __attachment__ 至卡片 __card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "添加清单 __checklist__ 到 __card__",
"act-addChecklistItem": "向 __card__ 中的清单 __checklist__ 添加 __checklistItem__",
"act-addComment": "在 __card__ 发布评论: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "从 %s 中移除 %s",
"activity-sent": "发送 %s 至 %s",
"activity-unjoined": "已解除 %s 关联",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "已经将清单添加到 %s",
"activity-checklist-item-added": "添加清单项至'%s' 于 %s",
"add": "添加",
@@ -48,6 +50,7 @@
"add-board": "添加看板",
"add-card": "添加卡片",
"add-swimlane": "添加泳道图",
+ "add-subtask": "Add Subtask",
"add-checklist": "添加待办清单",
"add-checklist-item": "扩充清单",
"add-cover": "添加封面",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "更改密码",
"changePermissionsPopup-title": "更改权限",
"changeSettingsPopup-title": "更改设置",
+ "subtasks": "Subtasks",
"checklists": "清单",
"click-to-star": "点此来标记该看板",
"click-to-unstar": "点此来去除该看板的标记",
@@ -163,7 +167,8 @@
"comment-only": "仅能评论",
"comment-only-desc": "只能在卡片上评论。",
"computer": "从本机上传",
- "confirm-checklist-delete-dialog": "确认要删除清单吗",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "复制卡片链接到剪贴板",
"copyCardPopup-title": "复制卡片",
"copyChecklistToManyCardsPopup-title": "复制清单模板至多个卡片",
@@ -475,5 +480,22 @@
"board-delete-notice": "删除时永久操作,将会丢失此看板上的所有列表、卡片和动作。",
"delete-board-confirm-popup": "所有列表、卡片、标签和活动都回被删除,将无法恢复看板内容。不支持撤销。",
"boardDeletePopup-title": "删除看板?",
- "delete-board": "删除看板"
+ "delete-board": "删除看板",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json
index 88e9bc18..ced49edd 100644
--- a/i18n/zh-TW.i18n.json
+++ b/i18n/zh-TW.i18n.json
@@ -2,6 +2,7 @@
"accept": "接受",
"act-activity-notify": "[Wekan] 活動通知",
"act-addAttachment": "新增附件__attachment__至__card__",
+ "act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "評論__card__: __comment__",
@@ -41,6 +42,7 @@
"activity-removed": "移除 %s 從 %s 中",
"activity-sent": "寄送 %s 至 %s",
"activity-unjoined": "解除關聯 %s",
+ "activity-subtask-added": "added subtask to %s",
"activity-checklist-added": "新增待辦清單至 %s",
"activity-checklist-item-added": "新增待辦清單項目從 %s 到 %s",
"add": "新增",
@@ -48,6 +50,7 @@
"add-board": "新增看板",
"add-card": "新增卡片",
"add-swimlane": "Add Swimlane",
+ "add-subtask": "Add Subtask",
"add-checklist": "新增待辦清單",
"add-checklist-item": "新增項目",
"add-cover": "新增封面",
@@ -141,6 +144,7 @@
"changePasswordPopup-title": "更改密碼",
"changePermissionsPopup-title": "更改許可權",
"changeSettingsPopup-title": "更改設定",
+ "subtasks": "Subtasks",
"checklists": "待辦清單",
"click-to-star": "點此來標記該看板",
"click-to-unstar": "點此來去除該看板的標記",
@@ -163,7 +167,8 @@
"comment-only": "只可以發表評論",
"comment-only-desc": "只可以對卡片發表評論",
"computer": "從本機上傳",
- "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
+ "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
+ "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "將卡片連結複製到剪貼板",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -475,5 +480,22 @@
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
- "delete-board": "Delete Board"
+ "delete-board": "Delete Board",
+ "default-subtasks-board": "Subtasks for __board__ board",
+ "default": "Default",
+ "queue": "Queue",
+ "subtask-settings": "Subtasks Settings",
+ "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
+ "show-subtasks-field": "Cards can have subtasks",
+ "deposit-subtasks-board": "Deposit subtasks to this board:",
+ "deposit-subtasks-list": "Landing list for subtasks deposited here:",
+ "show-parent-in-minicard": "Show parent in minicard:",
+ "prefix-with-full-path": "Prefix with full path",
+ "prefix-with-parent": "Prefix with parent",
+ "subtext-with-full-path": "Subtext with full path",
+ "subtext-with-parent": "Subtext with parent",
+ "change-card-parent": "Change card's parent",
+ "parent-card": "Parent card",
+ "source-board": "Source board",
+ "no-parent": "Don't show parent"
} \ No newline at end of file
diff --git a/models/activities.js b/models/activities.js
index f64b53f8..5b54759c 100644
--- a/models/activities.js
+++ b/models/activities.js
@@ -44,6 +44,9 @@ Activities.helpers({
checklistItem() {
return ChecklistItems.findOne(this.checklistItemId);
},
+ subtasks() {
+ return Cards.findOne(this.subtaskId);
+ },
customField() {
return CustomFields.findOne(this.customFieldId);
},
diff --git a/models/boards.js b/models/boards.js
index 3b6c280b..76a8f704 100644
--- a/models/boards.js
+++ b/models/boards.js
@@ -151,6 +151,32 @@ Boards.attachSchema(new SimpleSchema({
type: String,
optional: true,
},
+ subtasksDefaultBoardId: {
+ type: String,
+ optional: true,
+ defaultValue: null,
+ },
+ subtasksDefaultListId: {
+ type: String,
+ optional: true,
+ defaultValue: null,
+ },
+ allowsSubtasks: {
+ type: Boolean,
+ defaultValue: true,
+ },
+ presentParentTask: {
+ type: String,
+ allowedValues: [
+ 'prefix-with-full-path',
+ 'prefix-with-parent',
+ 'subtext-with-full-path',
+ 'subtext-with-parent',
+ 'no-parent',
+ ],
+ optional: true,
+ defaultValue: 'no-parent',
+ },
}));
@@ -194,6 +220,10 @@ Boards.helpers({
return Swimlanes.find({ boardId: this._id, archived: false }, { sort: { sort: 1 } });
},
+ cards() {
+ return Cards.find({ boardId: this._id, archived: false }, { sort: { sort: 1 } });
+ },
+
hasOvertimeCards(){
const card = Cards.findOne({isOvertime: true, boardId: this._id, archived: false} );
return card !== undefined;
@@ -284,6 +314,61 @@ Boards.helpers({
return Cards.find(query, projection);
},
+ // A board alwasy has another board where it deposits subtasks of thasks
+ // that belong to itself.
+ getDefaultSubtasksBoardId() {
+ if ((this.subtasksDefaultBoardId === null) || (this.subtasksDefaultBoardId === undefined)) {
+ this.subtasksDefaultBoardId = Boards.insert({
+ title: `^${this.title}^`,
+ permission: this.permission,
+ members: this.members,
+ color: this.color,
+ description: TAPi18n.__('default-subtasks-board', {board: this.title}),
+ });
+
+ Swimlanes.insert({
+ title: TAPi18n.__('default'),
+ boardId: this.subtasksDefaultBoardId,
+ });
+ Boards.update(this._id, {$set: {
+ subtasksDefaultBoardId: this.subtasksDefaultBoardId,
+ }});
+ }
+ return this.subtasksDefaultBoardId;
+ },
+
+ getDefaultSubtasksBoard() {
+ return Boards.findOne(this.getDefaultSubtasksBoardId());
+ },
+
+ getDefaultSubtasksListId() {
+ if ((this.subtasksDefaultListId === null) || (this.subtasksDefaultListId === undefined)) {
+ this.subtasksDefaultListId = Lists.insert({
+ title: TAPi18n.__('queue'),
+ boardId: this._id,
+ });
+ Boards.update(this._id, {$set: {
+ subtasksDefaultListId: this.subtasksDefaultListId,
+ }});
+ }
+ return this.subtasksDefaultListId;
+ },
+
+ getDefaultSubtasksList() {
+ return Lists.findOne(this.getDefaultSubtasksListId());
+ },
+
+ getDefaultSwimline() {
+ let result = Swimlanes.findOne({boardId: this._id});
+ if (result === undefined) {
+ Swimlanes.insert({
+ title: TAPi18n.__('default'),
+ boardId: this._id,
+ });
+ result = Swimlanes.findOne({boardId: this._id});
+ }
+ return result;
+ },
cardsInInterval(start, end) {
return Cards.find({
@@ -313,6 +398,7 @@ Boards.helpers({
});
+
Boards.mutations({
archive() {
return { $set: { archived: true } };
@@ -434,6 +520,22 @@ Boards.mutations({
},
};
},
+
+ setAllowsSubtasks(allowsSubtasks) {
+ return { $set: { allowsSubtasks } };
+ },
+
+ setSubtasksDefaultBoardId(subtasksDefaultBoardId) {
+ return { $set: { subtasksDefaultBoardId } };
+ },
+
+ setSubtasksDefaultListId(subtasksDefaultListId) {
+ return { $set: { subtasksDefaultListId } };
+ },
+
+ setPresentParentTask(presentParentTask) {
+ return { $set: { presentParentTask } };
+ },
});
if (Meteor.isServer) {
diff --git a/models/cards.js b/models/cards.js
index 00ec14c2..b6a7b4c6 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -15,6 +15,11 @@ Cards.attachSchema(new SimpleSchema({
}
},
},
+ parentId: {
+ type: String,
+ optional: true,
+ defaultValue: '',
+ },
listId: {
type: String,
},
@@ -122,6 +127,12 @@ Cards.attachSchema(new SimpleSchema({
type: Number,
decimal: true,
},
+ subtaskSort: {
+ type: Number,
+ decimal: true,
+ defaultValue: -1,
+ optional: true,
+ },
}));
Cards.allow({
@@ -215,6 +226,42 @@ Cards.helpers({
return this.checklistItemCount() !== 0;
},
+ subtasks() {
+ return Cards.find({
+ parentId: this._id,
+ archived: false,
+ }, {sort: { sort: 1 } });
+ },
+
+ allSubtasks() {
+ return Cards.find({
+ parentId: this._id,
+ archived: false,
+ }, {sort: { sort: 1 } });
+ },
+
+ subtasksCount() {
+ return Cards.find({
+ parentId: this._id,
+ archived: false,
+ }).count();
+ },
+
+ subtasksFinishedCount() {
+ return Cards.find({
+ parentId: this._id,
+ archived: true}).count();
+ },
+
+ subtasksFinished() {
+ const finishCount = this.subtasksFinishedCount();
+ return finishCount > 0 && this.subtasksCount() === finishCount;
+ },
+
+ allowsSubtasks() {
+ return this.subtasksCount() !== 0;
+ },
+
customFieldIndex(customFieldId) {
return _.pluck(this.customFields, '_id').indexOf(customFieldId);
},
@@ -271,14 +318,90 @@ Cards.helpers({
}
return true;
},
+
+ parentCard() {
+ if (this.parentId === '') {
+ return null;
+ }
+ return Cards.findOne(this.parentId);
+ },
+
+ parentCardName() {
+ let result = '';
+ if (this.parentId !== '') {
+ const card = Cards.findOne(this.parentId);
+ if (card) {
+ result = card.title;
+ }
+ }
+ return result;
+ },
+
+ parentListId() {
+ const result = [];
+ let crtParentId = this.parentId;
+ while (crtParentId !== '') {
+ const crt = Cards.findOne(crtParentId);
+ if ((crt === null) || (crt === undefined)) {
+ // maybe it has been deleted
+ break;
+ }
+ if (crtParentId in result) {
+ // circular reference
+ break;
+ }
+ result.unshift(crtParentId);
+ crtParentId = crt.parentId;
+ }
+ return result;
+ },
+
+ parentList() {
+ const resultId = [];
+ const result = [];
+ let crtParentId = this.parentId;
+ while (crtParentId !== '') {
+ const crt = Cards.findOne(crtParentId);
+ if ((crt === null) || (crt === undefined)) {
+ // maybe it has been deleted
+ break;
+ }
+ if (crtParentId in resultId) {
+ // circular reference
+ break;
+ }
+ resultId.unshift(crtParentId);
+ result.unshift(crt);
+ crtParentId = crt.parentId;
+ }
+ return result;
+ },
+
+ parentString(sep) {
+ return this.parentList().map(function(elem){
+ return elem.title;
+ }).join(sep);
+ },
+
+ isTopLevel() {
+ return this.parentId === '';
+ },
});
Cards.mutations({
+ applyToChildren(funct) {
+ Cards.find({ parentId: this._id }).forEach((card) => {
+ funct(card);
+ });
+ },
+
archive() {
+ this.applyToChildren((card) => { return card.archive(); });
return {$set: {archived: true}};
},
restore() {
+ this.applyToChildren((card) => { return card.restore(); });
return {$set: {archived: false}};
},
@@ -422,6 +545,11 @@ Cards.mutations({
unsetSpentTime() {
return {$unset: {spentTime: '', isOvertime: false}};
},
+
+ setParentId(parentId) {
+ return {$set: {parentId}};
+ },
+
});
@@ -513,6 +641,9 @@ function cardRemover(userId, doc) {
Checklists.remove({
cardId: doc._id,
});
+ Subtasks.remove({
+ cardId: doc._id,
+ });
CardComments.remove({
cardId: doc._id,
});
diff --git a/models/export.js b/models/export.js
index aff66801..8c4c29d4 100644
--- a/models/export.js
+++ b/models/export.js
@@ -58,9 +58,11 @@ class Exporter {
result.activities = Activities.find(byBoard, noBoardId).fetch();
result.checklists = [];
result.checklistItems = [];
+ result.subtaskItems = [];
result.cards.forEach((card) => {
result.checklists.push(...Checklists.find({ cardId: card._id }).fetch());
result.checklistItems.push(...ChecklistItems.find({ cardId: card._id }).fetch());
+ result.subtaskItems.push(...Cards.find({ parentid: card._id }).fetch());
});
// [Old] for attachments we only export IDs and absolute url to original doc
diff --git a/server/migrations.js b/server/migrations.js
index a1a5c65a..10097d41 100644
--- a/server/migrations.js
+++ b/server/migrations.js
@@ -55,7 +55,7 @@ Migrations.add('lowercase-board-permission', () => {
// Security migration: see https://github.com/wekan/wekan/issues/99
Migrations.add('change-attachments-type-for-non-images', () => {
const newTypeForNonImage = 'application/octet-stream';
- Attachments.find().forEach((file) => {
+ Attachments.forEach((file) => {
if (!file.isImage()) {
Attachments.update(file._id, {
$set: {
@@ -68,7 +68,7 @@ Migrations.add('change-attachments-type-for-non-images', () => {
});
Migrations.add('card-covers', () => {
- Cards.find().forEach((card) => {
+ Cards.forEach((card) => {
const cover = Attachments.findOne({ cardId: card._id, cover: true });
if (cover) {
Cards.update(card._id, {$set: {coverId: cover._id}}, noValidate);
@@ -86,7 +86,7 @@ Migrations.add('use-css-class-for-boards-colors', () => {
'#2C3E50': 'midnight',
'#E67E22': 'pumpkin',
};
- Boards.find().forEach((board) => {
+ Boards.forEach((board) => {
const oldBoardColor = board.background.color;
const newBoardColor = associationTable[oldBoardColor];
Boards.update(board._id, {
@@ -97,7 +97,7 @@ Migrations.add('use-css-class-for-boards-colors', () => {
});
Migrations.add('denormalize-star-number-per-board', () => {
- Boards.find().forEach((board) => {
+ Boards.forEach((board) => {
const nStars = Users.find({'profile.starredBoards': board._id}).count();
Boards.update(board._id, {$set: {stars: nStars}}, noValidate);
});
@@ -132,7 +132,7 @@ Migrations.add('add-member-isactive-field', () => {
});
Migrations.add('add-sort-checklists', () => {
- Checklists.find().forEach((checklist, index) => {
+ Checklists.forEach((checklist, index) => {
if (!checklist.hasOwnProperty('sort')) {
Checklists.direct.update(
checklist._id,
@@ -153,17 +153,8 @@ Migrations.add('add-sort-checklists', () => {
});
Migrations.add('add-swimlanes', () => {
- Boards.find().forEach((board) => {
- const swimlane = Swimlanes.findOne({ boardId: board._id });
- let swimlaneId = '';
- if (swimlane)
- swimlaneId = swimlane._id;
- else
- swimlaneId = Swimlanes.direct.insert({
- boardId: board._id,
- title: 'Default',
- });
-
+ Boards.forEach((board) => {
+ const swimlaneId = board.getDefaultSwimline()._id;
Cards.find({ boardId: board._id }).forEach((card) => {
if (!card.hasOwnProperty('swimlaneId')) {
Cards.direct.update(
@@ -177,7 +168,7 @@ Migrations.add('add-swimlanes', () => {
});
Migrations.add('add-views', () => {
- Boards.find().forEach((board) => {
+ Boards.forEach((board) => {
if (!board.hasOwnProperty('view')) {
Boards.direct.update(
{ _id: board._id },
@@ -189,7 +180,7 @@ Migrations.add('add-views', () => {
});
Migrations.add('add-checklist-items', () => {
- Checklists.find().forEach((checklist) => {
+ Checklists.forEach((checklist) => {
// Create new items
_.sortBy(checklist.items, 'sort').forEach((item, index) => {
ChecklistItems.direct.insert({
@@ -210,7 +201,7 @@ Migrations.add('add-checklist-items', () => {
});
Migrations.add('add-profile-view', () => {
- Users.find().forEach((user) => {
+ Users.forEach((user) => {
if (!user.hasOwnProperty('profile.boardView')) {
// Set default view
Users.direct.update(
@@ -258,3 +249,64 @@ Migrations.add('add-assigner-field', () => {
}, noValidateMulti);
});
+Migrations.add('add-parent-field-to-cards', () => {
+ Cards.update({
+ parentId: {
+ $exists: false,
+ },
+ }, {
+ $set: {
+ parentId:'',
+ },
+ }, noValidateMulti);
+});
+
+Migrations.add('add-subtasks-boards', () => {
+ Boards.update({
+ subtasksDefaultBoardId: {
+ $exists: false,
+ },
+ }, {
+ $set: {
+ subtasksDefaultBoardId: null,
+ subtasksDefaultListId: null,
+ },
+ }, noValidateMulti);
+});
+
+Migrations.add('add-subtasks-sort', () => {
+ Boards.update({
+ subtaskSort: {
+ $exists: false,
+ },
+ }, {
+ $set: {
+ subtaskSort: -1,
+ },
+ }, noValidateMulti);
+});
+
+Migrations.add('add-subtasks-allowed', () => {
+ Boards.update({
+ allowsSubtasks: {
+ $exists: false,
+ },
+ }, {
+ $set: {
+ allowsSubtasks: true,
+ },
+ }, noValidateMulti);
+});
+
+Migrations.add('add-subtasks-allowed', () => {
+ Boards.update({
+ presentParentTask: {
+ $exists: false,
+ },
+ }, {
+ $set: {
+ presentParentTask: 'no-parent',
+ },
+ }, noValidateMulti);
+});
+
diff --git a/server/publications/boards.js b/server/publications/boards.js
index b52ac49f..5d095c17 100644
--- a/server/publications/boards.js
+++ b/server/publications/boards.js
@@ -103,6 +103,7 @@ Meteor.publishRelations('board', function(boardId) {
this.cursor(Attachments.find({ cardId }));
this.cursor(Checklists.find({ cardId }));
this.cursor(ChecklistItems.find({ cardId }));
+ this.cursor(Cards.find({ parentId: cardId }));
});
if (board.members) {