Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
904b5bf0f5 | ||
|
|
d21aa97219 | ||
|
|
6ee75fbdba | ||
|
|
c3b2a0c955 | ||
|
|
0ac42c145e | ||
|
|
4a77bc930f | ||
|
|
29c3080eb6 | ||
|
|
57516177a0 | ||
|
|
34d8235551 | ||
|
|
8d51245161 | ||
|
|
55ad98ecc4 | ||
|
|
ed04181bb9 | ||
|
|
868fba55cd | ||
|
|
05351c0ac1 | ||
|
|
a707129146 | ||
|
|
2f3138207c | ||
|
|
dc7286a0ef | ||
|
|
5e66119bf0 | ||
|
|
b751fd11e4 | ||
|
|
5e238bfbfe | ||
|
|
7e20a3cac6 | ||
|
|
7c1d6e4d2e | ||
|
|
13c2157e36 | ||
|
|
7033315cd3 | ||
|
|
775476f97c | ||
|
|
eb62c9ce6a | ||
|
|
60be4df76e | ||
|
|
f888cfd565 | ||
|
|
044126188d | ||
|
|
0fec711545 | ||
|
|
7a6afb8aea | ||
|
|
1e72177991 | ||
|
|
cdf070189e | ||
|
|
64bf455b29 | ||
|
|
0a53ee87b9 | ||
|
|
ef85b71ee4 | ||
|
|
ac0133e8fa | ||
|
|
25ba6df007 | ||
|
|
6d750897a8 | ||
|
|
a7747c537b | ||
|
|
65b6a21938 | ||
|
|
4e6e78ccd2 | ||
|
|
fd5d6546b2 | ||
|
|
402d484182 |
No files matched your search
+75
-2
@@ -1,3 +1,76 @@
|
||||
# v2.29 2019-02-27 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- Swimlane/List/Board/Card templates. In Progress, please test and [add comment if you find not listed bugs](https://github.com/wekan/wekan/issues/2165).
|
||||
Thanks to GitHub user andresmanelli.
|
||||
|
||||
# v2.28 2019-02-27 Wekan release
|
||||
|
||||
This release adds the following new Sandstorm features and fixes:
|
||||
|
||||
- All Boards page [so it's possible to go back from subtask board](https://github.com/wekan/wekan/issues/2082).
|
||||
- Board favorites.
|
||||
- New Sandstorm board first user is Admin and [has IFTTT Rules](https://github.com/wekan/wekan/issues/2125) and Standalone Wekan Admin Panel.
|
||||
Probably some Admin Panel features do not work yet. Please keep backup of your grains before testing Admin Panel.
|
||||
- Linked Cards and Linked Boards.
|
||||
- Some not needed options like Logout etc have been hidden from top bar right menu.
|
||||
- [Import board now works. "Board not found" is not problem anymore](https://github.com/wekan/wekan/issues/1430), because you can go to All Boards page to change to imported board.
|
||||
|
||||
and removes the following features:
|
||||
|
||||
- Remove Welcome Board from Standalone Wekan, [to fix Welcome board not translated](https://github.com/wekan/wekan/issues/1601).
|
||||
Sandstorm Wekan does not have Welcome Board.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v2.27 2019-02-27 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix OIDC error "a.join is not a function"](https://github.com/wekan/wekan/issues/2206)
|
||||
by reverting configurable OAUTH2_ID_TOKEN_WHITELIST_FIELDS and
|
||||
OAUTH2_REQUEST_PERMISSIONS from Wekan v2.22-2.26.
|
||||
Thanks to GitHub user xet7.
|
||||
|
||||
# v2.26 2019-02-25 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- Add setting [EMAIL_NOTIFICATION_TIMEOUT](https://github.com/wekan/wekan/issues/2203).
|
||||
Defaut 30000 ms (30s). Thanks to GitHub users ngru and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- REVERTED in v2.27 ([Fix OAuth2 requestPermissions](https://github.com/wekan/wekan/commit/5e238bfbfea16940ae29647ae347bbdc0d78efb0).
|
||||
This makes [Auth0 login possible](https://github.com/wekan/wekan/issues/1722)
|
||||
with [OIDC](https://github.com/wekan/wekan/wiki/OAuth2#auth0). Needs testing.
|
||||
Thanks to GitHub user xet7.)
|
||||
|
||||
# v2.25 2019-02-23 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- Revert file permission changes from v2.24 LDAP changes that
|
||||
caused snap version to not build.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v2.24 2019-02-23 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Add LDAP email] matching support](https://github.com/wekan/wekan-ldap/pull/39) and
|
||||
[related env variables](https://github.com/wekan/wekan/pull/2198).
|
||||
Thanks to GitHub user stevenpwaters.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- REVERTED in v2.27 ([Add missing text .env to wekan/server/authentication.js](https://github.com/wekan/wekan/commit/4e6e78ccd216045e6ad41bcdab4e524f715a7eb5).
|
||||
Thanks to Vanila Chat user .gitignore.)
|
||||
|
||||
Thanks to above contributors, and translators for their translation.
|
||||
|
||||
# v2.23 2019-02-17 Wekan relase
|
||||
|
||||
This release fixes the following bugs:
|
||||
@@ -12,10 +85,10 @@ Thanks to above GitHub users for their contributions, and translators for their
|
||||
This release adds the following new features:
|
||||
|
||||
- [Kadira integration](https://github.com/wekan/wekan/issues/2152). Thanks to GavinLilly.
|
||||
- Add [configurable](https://github.com/wekan/wekan/issues/1874#issuecomment-462759627)
|
||||
- REVERTED in v2.27 (Add [configurable](https://github.com/wekan/wekan/issues/1874#issuecomment-462759627)
|
||||
settings [OAUTH2_ID_TOKEN_WHITELIST_FIELDS and
|
||||
OAUTH2_REQUEST_PERMISSIONS](https://github.com/wekan/wekan/commit/b66f471e530d41a3f12e4bfc29548313e9a73c35).
|
||||
Thanks to xet7.
|
||||
Thanks to xet7.)
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
|
||||
+10
-4
@@ -12,6 +12,7 @@ ARG FIBERS_VERSION
|
||||
ARG ARCHITECTURE
|
||||
ARG SRC_PATH
|
||||
ARG WITH_API
|
||||
ARG EMAIL_NOTIFICATION_TIMEOUT
|
||||
ARG MATOMO_ADDRESS
|
||||
ARG MATOMO_SITE_ID
|
||||
ARG MATOMO_DO_NOT_TRACK
|
||||
@@ -30,8 +31,6 @@ ARG OAUTH2_ID_MAP
|
||||
ARG OAUTH2_USERNAME_MAP
|
||||
ARG OAUTH2_FULLNAME_MAP
|
||||
ARG OAUTH2_EMAIL_MAP
|
||||
ARG OAUTH2_ID_TOKEN_WHITELIST_FIELDS
|
||||
ARG OAUTH2_REQUEST_PERMISSIONS
|
||||
ARG LDAP_ENABLE
|
||||
ARG LDAP_PORT
|
||||
ARG LDAP_HOST
|
||||
@@ -67,6 +66,10 @@ ARG LDAP_UNIQUE_IDENTIFIER_FIELD
|
||||
ARG LDAP_UTF8_NAMES_SLUGIFY
|
||||
ARG LDAP_USERNAME_FIELD
|
||||
ARG LDAP_FULLNAME_FIELD
|
||||
ARG LDAP_EMAIL_FIELD
|
||||
ARG LDAP_EMAIL_MATCH_ENABLE
|
||||
ARG LDAP_EMAIL_MATCH_REQUIRE
|
||||
ARG LDAP_EMAIL_MATCH_VERIFIED
|
||||
ARG LDAP_MERGE_EXISTING_USERS
|
||||
ARG LDAP_SYNC_USER_DATA
|
||||
ARG LDAP_SYNC_USER_DATA_FIELDMAP
|
||||
@@ -93,6 +96,7 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
|
||||
ARCHITECTURE=linux-x64 \
|
||||
SRC_PATH=./ \
|
||||
WITH_API=true \
|
||||
EMAIL_NOTIFICATION_TIMEOUT=30000 \
|
||||
MATOMO_ADDRESS="" \
|
||||
MATOMO_SITE_ID="" \
|
||||
MATOMO_DO_NOT_TRACK=true \
|
||||
@@ -111,8 +115,6 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
|
||||
OAUTH2_USERNAME_MAP="" \
|
||||
OAUTH2_FULLNAME_MAP="" \
|
||||
OAUTH2_EMAIL_MAP="" \
|
||||
OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[] \
|
||||
OAUTH2_REQUEST_PERMISSIONS=[openid] \
|
||||
LDAP_ENABLE=false \
|
||||
LDAP_PORT=389 \
|
||||
LDAP_HOST="" \
|
||||
@@ -149,6 +151,10 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
|
||||
LDAP_USERNAME_FIELD="" \
|
||||
LDAP_FULLNAME_FIELD="" \
|
||||
LDAP_MERGE_EXISTING_USERS=false \
|
||||
LDAP_EMAIL_FIELD="" \
|
||||
LDAP_EMAIL_MATCH_ENABLE=false \
|
||||
LDAP_EMAIL_MATCH_REQUIRE=false \
|
||||
LDAP_EMAIL_MATCH_VERIFIED=false \
|
||||
LDAP_SYNC_USER_DATA=false \
|
||||
LDAP_SYNC_USER_DATA_FIELDMAP="" \
|
||||
LDAP_SYNC_GROUP_ROLES="" \
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v2.23.0"
|
||||
appVersion: "v2.29.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
Template.boardListHeaderBar.events({
|
||||
'click .js-open-archived-board'() {
|
||||
Modal.open('archivedBoards');
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.subscribe('archivedBoards');
|
||||
|
||||
@@ -20,12 +20,15 @@ template(name="boardBody")
|
||||
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
|
||||
if showOverlay.get
|
||||
.board-overlay
|
||||
if isViewSwimlanes
|
||||
if currentBoard.isTemplatesBoard
|
||||
each currentBoard.swimlanes
|
||||
+swimlane(this)
|
||||
if isViewLists
|
||||
+listsGroup
|
||||
if isViewCalendar
|
||||
else if isViewSwimlanes
|
||||
each currentBoard.swimlanes
|
||||
+swimlane(this)
|
||||
else if isViewLists
|
||||
+listsGroup(currentBoard)
|
||||
else if isViewCalendar
|
||||
+calendarView
|
||||
|
||||
template(name="calendarView")
|
||||
|
||||
@@ -7,71 +7,69 @@ template(name="boardHeaderBar")
|
||||
|
||||
.board-header-btns.left
|
||||
unless isMiniScreen
|
||||
unless isSandstorm
|
||||
if currentBoard
|
||||
if currentUser
|
||||
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
|
||||
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
|
||||
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
|
||||
if showStarCounter
|
||||
span
|
||||
= currentBoard.stars
|
||||
if currentBoard
|
||||
if currentUser
|
||||
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
|
||||
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
|
||||
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
|
||||
if showStarCounter
|
||||
span
|
||||
= currentBoard.stars
|
||||
|
||||
a.board-header-btn(
|
||||
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
|
||||
title="{{_ currentBoard.permission}}")
|
||||
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
|
||||
span {{_ currentBoard.permission}}
|
||||
a.board-header-btn(
|
||||
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
|
||||
title="{{_ currentBoard.permission}}")
|
||||
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
|
||||
span {{_ currentBoard.permission}}
|
||||
|
||||
a.board-header-btn.js-watch-board(
|
||||
title="{{_ watchLevel }}")
|
||||
if $eq watchLevel "watching"
|
||||
i.fa.fa-eye
|
||||
if $eq watchLevel "tracking"
|
||||
i.fa.fa-bell
|
||||
if $eq watchLevel "muted"
|
||||
i.fa.fa-bell-slash
|
||||
span {{_ watchLevel}}
|
||||
a.board-header-btn.js-watch-board(
|
||||
title="{{_ watchLevel }}")
|
||||
if $eq watchLevel "watching"
|
||||
i.fa.fa-eye
|
||||
if $eq watchLevel "tracking"
|
||||
i.fa.fa-bell
|
||||
if $eq watchLevel "muted"
|
||||
i.fa.fa-bell-slash
|
||||
span {{_ watchLevel}}
|
||||
|
||||
else
|
||||
a.board-header-btn.js-log-in(
|
||||
title="{{_ 'log-in'}}")
|
||||
i.fa.fa-sign-in
|
||||
span {{_ 'log-in'}}
|
||||
else
|
||||
a.board-header-btn.js-log-in(
|
||||
title="{{_ 'log-in'}}")
|
||||
i.fa.fa-sign-in
|
||||
span {{_ 'log-in'}}
|
||||
|
||||
.board-header-btns.right
|
||||
if currentBoard
|
||||
if isMiniScreen
|
||||
unless isSandstorm
|
||||
if currentUser
|
||||
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
|
||||
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
|
||||
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
|
||||
if showStarCounter
|
||||
span
|
||||
= currentBoard.stars
|
||||
if currentUser
|
||||
a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
|
||||
title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
|
||||
i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
|
||||
if showStarCounter
|
||||
span
|
||||
= currentBoard.stars
|
||||
|
||||
a.board-header-btn(
|
||||
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
|
||||
title="{{_ currentBoard.permission}}")
|
||||
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
|
||||
span {{_ currentBoard.permission}}
|
||||
a.board-header-btn(
|
||||
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
|
||||
title="{{_ currentBoard.permission}}")
|
||||
i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
|
||||
span {{_ currentBoard.permission}}
|
||||
|
||||
a.board-header-btn.js-watch-board(
|
||||
title="{{_ watchLevel }}")
|
||||
if $eq watchLevel "watching"
|
||||
i.fa.fa-eye
|
||||
if $eq watchLevel "tracking"
|
||||
i.fa.fa-bell
|
||||
if $eq watchLevel "muted"
|
||||
i.fa.fa-bell-slash
|
||||
span {{_ watchLevel}}
|
||||
a.board-header-btn.js-watch-board(
|
||||
title="{{_ watchLevel }}")
|
||||
if $eq watchLevel "watching"
|
||||
i.fa.fa-eye
|
||||
if $eq watchLevel "tracking"
|
||||
i.fa.fa-bell
|
||||
if $eq watchLevel "muted"
|
||||
i.fa.fa-bell-slash
|
||||
span {{_ watchLevel}}
|
||||
|
||||
else
|
||||
a.board-header-btn.js-log-in(
|
||||
title="{{_ 'log-in'}}")
|
||||
i.fa.fa-sign-in
|
||||
span {{_ 'log-in'}}
|
||||
else
|
||||
a.board-header-btn.js-log-in(
|
||||
title="{{_ 'log-in'}}")
|
||||
i.fa.fa-sign-in
|
||||
span {{_ 'log-in'}}
|
||||
|
||||
if isSandstorm
|
||||
if currentUser
|
||||
@@ -96,10 +94,11 @@ template(name="boardHeaderBar")
|
||||
i.fa.fa-search
|
||||
span {{_ 'search'}}
|
||||
|
||||
a.board-header-btn.js-toggle-board-view(
|
||||
title="{{_ 'board-view'}}")
|
||||
i.fa.fa-th-large
|
||||
span {{_ currentUser.profile.boardView}}
|
||||
unless currentBoard.isTemplatesBoard
|
||||
a.board-header-btn.js-toggle-board-view(
|
||||
title="{{_ 'board-view'}}")
|
||||
i.fa.fa-th-large
|
||||
span {{_ currentUser.profile.boardView}}
|
||||
|
||||
if canModifyBoard
|
||||
a.board-header-btn.js-multiselection-activate(
|
||||
@@ -132,7 +131,8 @@ template(name="boardMenuPopup")
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
|
||||
li: a.js-archive-board {{_ 'archive-board'}}
|
||||
unless currentBoard.isTemplatesBoard
|
||||
li: a.js-archive-board {{_ 'archive-board'}}
|
||||
li: a.js-outgoing-webhooks {{_ 'outgoing-webhooks'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
@@ -143,6 +143,8 @@ template(name="boardMenuPopup")
|
||||
ul.pop-over-list
|
||||
li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
|
||||
li: a.js-import-board {{_ 'import-board-c'}}
|
||||
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'}}
|
||||
@@ -275,7 +277,10 @@ template(name="createBoard")
|
||||
input.primary.wide(type="submit" value="{{_ 'create'}}")
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-import-board {{_ 'import-board'}}
|
||||
a.js-import-board {{_ 'import'}}
|
||||
span.quiet
|
||||
| /
|
||||
a.js-board-template {{_ 'template'}}
|
||||
|
||||
template(name="chooseBoardSource")
|
||||
ul.pop-over-list
|
||||
|
||||
@@ -304,6 +304,7 @@ const CreateBoard = BlazeComponent.extendComponent({
|
||||
'click .js-import': Popup.open('boardImportBoard'),
|
||||
submit: this.onSubmit,
|
||||
'click .js-import-board': Popup.open('chooseBoardSource'),
|
||||
'click .js-board-template': Popup.open('searchElement'),
|
||||
}];
|
||||
},
|
||||
}).register('createBoardPopup');
|
||||
|
||||
@@ -36,3 +36,6 @@ template(name="boardListHeaderBar")
|
||||
a.board-header-btn.js-open-archived-board
|
||||
i.fa.fa-archive
|
||||
span {{_ 'archives'}}
|
||||
a.board-header-btn(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
|
||||
i.fa.fa-clone
|
||||
span {{_ 'templates'}}
|
||||
@@ -1,5 +1,20 @@
|
||||
const subManager = new SubsManager();
|
||||
|
||||
Template.boardListHeaderBar.events({
|
||||
'click .js-open-archived-board'() {
|
||||
Modal.open('archivedBoards');
|
||||
},
|
||||
});
|
||||
|
||||
Template.boardListHeaderBar.helpers({
|
||||
templatesBoardId() {
|
||||
return Meteor.user().getTemplatesBoardId();
|
||||
},
|
||||
templatesBoardSlug() {
|
||||
return Meteor.user().getTemplatesBoardSlug();
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
Meteor.subscribe('setting');
|
||||
@@ -9,6 +24,7 @@ BlazeComponent.extendComponent({
|
||||
return Boards.find({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
type: 'board',
|
||||
}, {
|
||||
sort: ['title'],
|
||||
});
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
template(name="miniboard")
|
||||
.minicard(
|
||||
class="minicard-{{colorClass}}")
|
||||
.minicard-title
|
||||
.handle
|
||||
.fa.fa-arrows
|
||||
+viewer
|
||||
= title
|
||||
@@ -19,16 +19,14 @@ template(name="cardDetails")
|
||||
a.js-parent-card(href=linkForCard) {{title}}
|
||||
// else
|
||||
{{_ 'top-level-card'}}
|
||||
unless isSandstorm
|
||||
if isLinkedCard
|
||||
h3.linked-card-location
|
||||
+viewer
|
||||
| {{getBoardTitle}} > {{getTitle}}
|
||||
if isLinkedCard
|
||||
h3.linked-card-location
|
||||
+viewer
|
||||
| {{getBoardTitle}} > {{getTitle}}
|
||||
|
||||
if getArchived
|
||||
if isLinkedBoard
|
||||
unless isSandstorm
|
||||
p.warning {{_ 'board-archived'}}
|
||||
p.warning {{_ 'board-archived'}}
|
||||
else
|
||||
p.warning {{_ 'card-archived'}}
|
||||
|
||||
@@ -192,11 +190,9 @@ template(name="cardDetails")
|
||||
unless currentUser.isNoComments
|
||||
if isLoaded.get
|
||||
if isLinkedCard
|
||||
unless isSandstorm
|
||||
+activities(card=this mode="linkedcard")
|
||||
+activities(card=this mode="linkedcard")
|
||||
else if isLinkedBoard
|
||||
unless isSandstorm
|
||||
+activities(card=this mode="linkedboard")
|
||||
+activities(card=this mode="linkedboard")
|
||||
else
|
||||
+activities(card=this mode="card")
|
||||
|
||||
|
||||
@@ -456,26 +456,9 @@ 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'));
|
||||
const oldId = card._id;
|
||||
card._id = null;
|
||||
const lSelect = $('.js-select-lists')[0];
|
||||
card.listId = lSelect.options[lSelect.selectedIndex].value;
|
||||
const slSelect = $('.js-select-swimlanes')[0];
|
||||
@@ -490,38 +473,13 @@ Template.copyCardPopup.events({
|
||||
if (title) {
|
||||
card.title = title;
|
||||
card.coverId = '';
|
||||
const _id = Cards.insert(card);
|
||||
const _id = card.copy();
|
||||
// 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);
|
||||
|
||||
// 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 subtask = arguments[0];
|
||||
subtask.parentId = _id;
|
||||
subtask._id = null;
|
||||
/* const newSubtaskId = */ Cards.insert(subtask);
|
||||
});
|
||||
|
||||
// copy card comments
|
||||
cursor = CardComments.find({cardId: oldId});
|
||||
cursor.forEach(function () {
|
||||
'use strict';
|
||||
const comment = arguments[0];
|
||||
comment.cardId = _id;
|
||||
comment._id = null;
|
||||
CardComments.insert(comment);
|
||||
});
|
||||
Popup.close();
|
||||
}
|
||||
},
|
||||
@@ -558,9 +516,8 @@ Template.copyChecklistToManyCardsPopup.events({
|
||||
Filter.addException(_id);
|
||||
|
||||
// copy checklists
|
||||
let cursor = Checklists.find({cardId: oldId});
|
||||
cursor.forEach(function() {
|
||||
cloneCheckList(_id, arguments[0]);
|
||||
Checklists.find({cardId: oldId}).forEach((ch) => {
|
||||
ch.copy(_id);
|
||||
});
|
||||
|
||||
// copy subtasks
|
||||
@@ -574,13 +531,8 @@ Template.copyChecklistToManyCardsPopup.events({
|
||||
});
|
||||
|
||||
// copy card comments
|
||||
cursor = CardComments.find({cardId: oldId});
|
||||
cursor.forEach(function () {
|
||||
'use strict';
|
||||
const comment = arguments[0];
|
||||
comment.cardId = _id;
|
||||
comment._id = null;
|
||||
CardComments.insert(comment);
|
||||
CardComments.find({cardId: oldId}).forEach((cmt) => {
|
||||
cmt.copy(_id);
|
||||
});
|
||||
}
|
||||
Popup.close();
|
||||
|
||||
@@ -44,14 +44,19 @@ template(name="addCardForm")
|
||||
|
||||
.add-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'add'}}
|
||||
unless isSandstorm
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-link {{_ 'link'}}
|
||||
span.quiet
|
||||
|
|
||||
| /
|
||||
a.js-search {{_ 'search'}}
|
||||
unless currentBoard.isTemplatesBoard
|
||||
unless currentBoard.isTemplateBoard
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-link {{_ 'link'}}
|
||||
span.quiet
|
||||
|
|
||||
| /
|
||||
a.js-search {{_ 'search'}}
|
||||
span.quiet
|
||||
|
|
||||
| /
|
||||
a.js-card-template {{_ 'template'}}
|
||||
|
||||
template(name="autocompleteLabelLine")
|
||||
.minicard-label(class="card-label-{{colorName}}" title=labelName)
|
||||
@@ -61,11 +66,9 @@ template(name="linkCardPopup")
|
||||
label {{_ 'boards'}}:
|
||||
.link-board-wrapper
|
||||
select.js-select-boards
|
||||
option(value="")
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
option(value="{{_id}}" selected) {{_ 'current'}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
option(value="{{_id}}") {{title}}
|
||||
input.primary.confirm.js-link-board(type="button" value="{{_ 'link'}}")
|
||||
|
||||
label {{_ 'swimlanes'}}:
|
||||
@@ -84,22 +87,37 @@ template(name="linkCardPopup")
|
||||
option(value="{{getId}}") {{getTitle}}
|
||||
|
||||
.edit-controls.clearfix
|
||||
unless isSandstorm
|
||||
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
|
||||
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
|
||||
|
||||
template(name="searchCardPopup")
|
||||
label {{_ 'boards'}}:
|
||||
.link-board-wrapper
|
||||
select.js-select-boards
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
option(value="{{_id}}" selected) {{_ 'current'}}
|
||||
else
|
||||
template(name="searchElementPopup")
|
||||
unless isTemplateSearch
|
||||
label {{_ 'boards'}}:
|
||||
.link-board-wrapper
|
||||
select.js-select-boards
|
||||
option(value="")
|
||||
each boards
|
||||
option(value="{{_id}}") {{title}}
|
||||
form.js-search-term-form
|
||||
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus)
|
||||
.list-body.js-perfect-scrollbar.search-card-results
|
||||
.minicards.clearfix.js-minicards
|
||||
each results
|
||||
a.minicard-wrapper.js-minicard
|
||||
+minicard(this)
|
||||
if isBoardTemplateSearch
|
||||
each results
|
||||
a.minicard-wrapper.js-minicard
|
||||
+miniboard(this)
|
||||
if isListTemplateSearch
|
||||
each results
|
||||
a.minicard-wrapper.js-minicard
|
||||
+minilist(this)
|
||||
if isSwimlaneTemplateSearch
|
||||
each results
|
||||
a.minicard-wrapper.js-minicard
|
||||
+miniswimlane(this)
|
||||
if isCardTemplateSearch
|
||||
each results
|
||||
a.minicard-wrapper.js-minicard
|
||||
+minicard(this)
|
||||
unless isTemplateSearch
|
||||
each results
|
||||
a.minicard-wrapper.js-minicard
|
||||
+minicard(this)
|
||||
@@ -67,25 +67,47 @@ BlazeComponent.extendComponent({
|
||||
const labelIds = formComponent.labels.get();
|
||||
const customFields = formComponent.customFields.get();
|
||||
|
||||
const boardId = this.data().board();
|
||||
const board = this.data().board();
|
||||
let linkedId = '';
|
||||
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 = boardId.getDefaultSwimline()._id;
|
||||
|
||||
let cardType = 'cardType-card';
|
||||
if (title) {
|
||||
if (board.isTemplatesBoard()) {
|
||||
swimlaneId = this.parentComponent().parentComponent().data()._id; // Always swimlanes view
|
||||
const swimlane = Swimlanes.findOne(swimlaneId);
|
||||
// If this is the card templates swimlane, insert a card template
|
||||
if (swimlane.isCardTemplatesSwimlane())
|
||||
cardType = 'template-card';
|
||||
// If this is the board templates swimlane, insert a board template and a linked card
|
||||
else if (swimlane.isBoardTemplatesSwimlane()) {
|
||||
linkedId = Boards.insert({
|
||||
title,
|
||||
permission: 'private',
|
||||
type: 'template-board',
|
||||
});
|
||||
Swimlanes.insert({
|
||||
title: TAPi18n.__('default'),
|
||||
boardId: linkedId,
|
||||
});
|
||||
cardType = 'cardType-linkedBoard';
|
||||
}
|
||||
} else if (boardView === 'board-view-swimlanes')
|
||||
swimlaneId = this.parentComponent().parentComponent().data()._id;
|
||||
else if ((boardView === 'board-view-lists') || (boardView === 'board-view-cal'))
|
||||
swimlaneId = board.getDefaultSwimline()._id;
|
||||
|
||||
const _id = Cards.insert({
|
||||
title,
|
||||
members,
|
||||
labelIds,
|
||||
customFields,
|
||||
listId: this.data()._id,
|
||||
boardId: boardId._id,
|
||||
boardId: board._id,
|
||||
sort: sortIndex,
|
||||
swimlaneId,
|
||||
type: 'cardType-card',
|
||||
type: cardType,
|
||||
linkedId,
|
||||
});
|
||||
|
||||
// if the displayed card count is less than the total cards in the list,
|
||||
@@ -127,9 +149,9 @@ BlazeComponent.extendComponent({
|
||||
const methodName = evt.shiftKey ? 'toggleRange' : 'toggle';
|
||||
MultiSelection[methodName](this.currentData()._id);
|
||||
|
||||
// If the card is already selected, we want to de-select it.
|
||||
// XXX We should probably modify the minicard href attribute instead of
|
||||
// overwriting the event in case the card is already selected.
|
||||
// If the card is already selected, we want to de-select it.
|
||||
// XXX We should probably modify the minicard href attribute instead of
|
||||
// overwriting the event in case the card is already selected.
|
||||
} else if (Session.equals('currentCard', this.currentData()._id)) {
|
||||
evt.stopImmediatePropagation();
|
||||
evt.preventDefault();
|
||||
@@ -149,7 +171,8 @@ BlazeComponent.extendComponent({
|
||||
|
||||
idOrNull(swimlaneId) {
|
||||
const currentUser = Meteor.user();
|
||||
if (currentUser.profile.boardView === 'board-view-swimlanes')
|
||||
if (currentUser.profile.boardView === 'board-view-swimlanes' ||
|
||||
this.data().board().isTemplatesBoard())
|
||||
return swimlaneId;
|
||||
return undefined;
|
||||
},
|
||||
@@ -269,8 +292,8 @@ BlazeComponent.extendComponent({
|
||||
// work.
|
||||
$form.find('button[type=submit]').click();
|
||||
|
||||
// Pressing Tab should open the form of the next column, and Maj+Tab go
|
||||
// in the reverse order
|
||||
// Pressing Tab should open the form of the next column, and Maj+Tab go
|
||||
// in the reverse order
|
||||
} else if (evt.keyCode === 9) {
|
||||
evt.preventDefault();
|
||||
const isReverse = evt.shiftKey;
|
||||
@@ -292,7 +315,8 @@ BlazeComponent.extendComponent({
|
||||
return [{
|
||||
keydown: this.pressKey,
|
||||
'click .js-link': Popup.open('linkCard'),
|
||||
'click .js-search': Popup.open('searchCard'),
|
||||
'click .js-search': Popup.open('searchElement'),
|
||||
'click .js-card-template': Popup.open('searchElement'),
|
||||
}];
|
||||
},
|
||||
|
||||
@@ -330,7 +354,7 @@ BlazeComponent.extendComponent({
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
callback($.map(currentBoard.labels, (label) => {
|
||||
if (label.name.indexOf(term) > -1 ||
|
||||
label.color.indexOf(term) > -1) {
|
||||
label.color.indexOf(term) > -1) {
|
||||
return label;
|
||||
}
|
||||
return null;
|
||||
@@ -367,17 +391,7 @@ BlazeComponent.extendComponent({
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
// Prefetch first non-current board id
|
||||
const boardId = Boards.findOne({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: {$ne: Session.get('currentBoard')},
|
||||
}, {
|
||||
sort: ['title'],
|
||||
})._id;
|
||||
// Subscribe to this board
|
||||
subManager.subscribe('board', boardId);
|
||||
this.selectedBoardId = new ReactiveVar(boardId);
|
||||
this.selectedBoardId = new ReactiveVar('');
|
||||
this.selectedSwimlaneId = new ReactiveVar('');
|
||||
this.selectedListId = new ReactiveVar('');
|
||||
|
||||
@@ -403,6 +417,7 @@ BlazeComponent.extendComponent({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: {$ne: Session.get('currentBoard')},
|
||||
type: 'board',
|
||||
}, {
|
||||
sort: ['title'],
|
||||
});
|
||||
@@ -410,7 +425,7 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
swimlanes() {
|
||||
if (!this.selectedBoardId) {
|
||||
if (!this.selectedBoardId.get()) {
|
||||
return [];
|
||||
}
|
||||
const swimlanes = Swimlanes.find({boardId: this.selectedBoardId.get()});
|
||||
@@ -420,7 +435,7 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
lists() {
|
||||
if (!this.selectedBoardId) {
|
||||
if (!this.selectedBoardId.get()) {
|
||||
return [];
|
||||
}
|
||||
const lists = Lists.find({boardId: this.selectedBoardId.get()});
|
||||
@@ -441,6 +456,7 @@ BlazeComponent.extendComponent({
|
||||
archived: false,
|
||||
linkedId: {$nin: ownCardsIds},
|
||||
_id: {$nin: ownCardsIds},
|
||||
type: {$nin: ['template-card']},
|
||||
});
|
||||
},
|
||||
|
||||
@@ -508,12 +524,25 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
onCreated() {
|
||||
// Prefetch first non-current board id
|
||||
let board = Boards.findOne({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: {$ne: Session.get('currentBoard')},
|
||||
});
|
||||
this.isCardTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-card-template');
|
||||
this.isListTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-list-template');
|
||||
this.isSwimlaneTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-open-add-swimlane-menu');
|
||||
this.isBoardTemplateSearch = $(Popup._getTopStack().openerElement).hasClass('js-add-board');
|
||||
this.isTemplateSearch = this.isCardTemplateSearch ||
|
||||
this.isListTemplateSearch ||
|
||||
this.isSwimlaneTemplateSearch ||
|
||||
this.isBoardTemplateSearch;
|
||||
let board = {};
|
||||
if (this.isTemplateSearch) {
|
||||
board = Boards.findOne(Meteor.user().profile.templatesBoardId);
|
||||
} else {
|
||||
// Prefetch first non-current board id
|
||||
board = Boards.findOne({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: {$nin: [Session.get('currentBoard'), Meteor.user().profile.templatesBoardId]},
|
||||
});
|
||||
}
|
||||
if (!board) {
|
||||
Popup.close();
|
||||
return;
|
||||
@@ -523,20 +552,21 @@ BlazeComponent.extendComponent({
|
||||
subManager.subscribe('board', boardId);
|
||||
this.selectedBoardId = new ReactiveVar(boardId);
|
||||
|
||||
this.boardId = Session.get('currentBoard');
|
||||
// In order to get current board info
|
||||
subManager.subscribe('board', this.boardId);
|
||||
board = Boards.findOne(this.boardId);
|
||||
// List where to insert card
|
||||
const list = $(Popup._getTopStack().openerElement).closest('.js-list');
|
||||
this.listId = Blaze.getData(list[0])._id;
|
||||
// Swimlane where to insert card
|
||||
const swimlane = $(Popup._getTopStack().openerElement).closest('.js-swimlane');
|
||||
this.swimlaneId = '';
|
||||
if (board.view === 'board-view-swimlanes')
|
||||
this.swimlaneId = Blaze.getData(swimlane[0])._id;
|
||||
else
|
||||
this.swimlaneId = Swimlanes.findOne({boardId: this.boardId})._id;
|
||||
if (!this.isBoardTemplateSearch) {
|
||||
this.boardId = Session.get('currentBoard');
|
||||
// In order to get current board info
|
||||
subManager.subscribe('board', this.boardId);
|
||||
this.swimlaneId = '';
|
||||
// Swimlane where to insert card
|
||||
const swimlane = $(Popup._getTopStack().openerElement).parents('.js-swimlane');
|
||||
if (Meteor.user().profile.boardView === 'board-view-swimlanes')
|
||||
this.swimlaneId = Blaze.getData(swimlane[0])._id;
|
||||
else
|
||||
this.swimlaneId = Swimlanes.findOne({boardId: this.boardId})._id;
|
||||
// List where to insert card
|
||||
const list = $(Popup._getTopStack().openerElement).closest('.js-list');
|
||||
this.listId = Blaze.getData(list[0])._id;
|
||||
}
|
||||
this.term = new ReactiveVar('');
|
||||
},
|
||||
|
||||
@@ -545,6 +575,7 @@ BlazeComponent.extendComponent({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: {$ne: Session.get('currentBoard')},
|
||||
type: 'board',
|
||||
}, {
|
||||
sort: ['title'],
|
||||
});
|
||||
@@ -556,7 +587,21 @@ BlazeComponent.extendComponent({
|
||||
return [];
|
||||
}
|
||||
const board = Boards.findOne(this.selectedBoardId.get());
|
||||
return board.searchCards(this.term.get(), false);
|
||||
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
|
||||
return board.searchCards(this.term.get(), false);
|
||||
} else if (this.isListTemplateSearch) {
|
||||
return board.searchLists(this.term.get());
|
||||
} else if (this.isSwimlaneTemplateSearch) {
|
||||
return board.searchSwimlanes(this.term.get());
|
||||
} else if (this.isBoardTemplateSearch) {
|
||||
const boards = board.searchBoards(this.term.get());
|
||||
boards.forEach((board) => {
|
||||
subManager.subscribe('board', board.linkedId);
|
||||
});
|
||||
return boards;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
|
||||
events() {
|
||||
@@ -570,20 +615,50 @@ BlazeComponent.extendComponent({
|
||||
this.term.set(evt.target.searchTerm.value);
|
||||
},
|
||||
'click .js-minicard'(evt) {
|
||||
// LINK CARD
|
||||
const card = Blaze.getData(evt.currentTarget);
|
||||
const _id = Cards.insert({
|
||||
title: card.title, //dummy
|
||||
listId: this.listId,
|
||||
swimlaneId: this.swimlaneId,
|
||||
boardId: this.boardId,
|
||||
sort: Lists.findOne(this.listId).cards().count(),
|
||||
type: 'cardType-linkedCard',
|
||||
linkedId: card.linkedId || card._id,
|
||||
});
|
||||
Filter.addException(_id);
|
||||
// 0. Common
|
||||
const element = Blaze.getData(evt.currentTarget);
|
||||
let _id = '';
|
||||
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
|
||||
// Card insertion
|
||||
// 1. Common
|
||||
element.boardId = this.boardId;
|
||||
element.listId = this.listId;
|
||||
element.swimlaneId = this.swimlaneId;
|
||||
element.sort = Lists.findOne(this.listId).cards().count();
|
||||
// 1.A From template
|
||||
if (this.isTemplateSearch) {
|
||||
element.type = 'cardType-card';
|
||||
element.linkedId = '';
|
||||
_id = element.copy();
|
||||
// 1.B Linked card
|
||||
} else {
|
||||
delete element._id;
|
||||
element.type = 'cardType-linkedCard';
|
||||
element.linkedId = element.linkedId || element._id;
|
||||
_id = Cards.insert(element);
|
||||
}
|
||||
Filter.addException(_id);
|
||||
// List insertion
|
||||
} else if (this.isListTemplateSearch) {
|
||||
element.boardId = this.boardId;
|
||||
element.sort = Swimlanes.findOne(this.swimlaneId).lists().count();
|
||||
element.type = 'list';
|
||||
_id = element.copy(this.swimlaneId);
|
||||
} else if (this.isSwimlaneTemplateSearch) {
|
||||
element.boardId = this.boardId;
|
||||
element.sort = Boards.findOne(this.boardId).swimlanes().count();
|
||||
element.type = 'swimlalne';
|
||||
_id = element.copy();
|
||||
} else if (this.isBoardTemplateSearch) {
|
||||
board = Boards.findOne(element.linkedId);
|
||||
board.sort = Boards.find({archived: false}).count();
|
||||
board.type = 'board';
|
||||
delete board.slug;
|
||||
delete board.members;
|
||||
_id = board.copy();
|
||||
}
|
||||
Popup.close();
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('searchCardPopup');
|
||||
}).register('searchElementPopup');
|
||||
@@ -0,0 +1,8 @@
|
||||
template(name="minilist")
|
||||
.minicard(
|
||||
class="minicard-{{colorClass}}")
|
||||
.minicard-title
|
||||
.handle
|
||||
.fa.fa-arrows
|
||||
+viewer
|
||||
= title
|
||||
@@ -36,7 +36,10 @@ import sanitizeXss from 'xss';
|
||||
const at = HTML.CharRef({html: '@', str: '@'});
|
||||
Blaze.Template.registerHelper('mentions', new Template('mentions', function() {
|
||||
const view = this;
|
||||
let content = Blaze.toHTML(view.templateContentBlock);
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
if (!currentBoard)
|
||||
return HTML.Raw(sanitizeXss(content));
|
||||
const knowedUsers = currentBoard.members.map((member) => {
|
||||
const u = Users.findOne(member.userId);
|
||||
if(u){
|
||||
@@ -45,7 +48,6 @@ Blaze.Template.registerHelper('mentions', new Template('mentions', function() {
|
||||
return member;
|
||||
});
|
||||
const mentionRegex = /\B@([\w.]*)/gi;
|
||||
let content = Blaze.toHTML(view.templateContentBlock);
|
||||
|
||||
let currentMention;
|
||||
while ((currentMention = mentionRegex.exec(content)) !== null) {
|
||||
|
||||
@@ -4,39 +4,38 @@ template(name="header")
|
||||
list all starred boards with a link to go there. This is inspired by the
|
||||
Reddit "subreddit" bar.
|
||||
The first link goes to the boards page.
|
||||
unless isSandstorm
|
||||
if currentUser
|
||||
#header-quick-access(class=currentBoard.colorClass)
|
||||
if isMiniScreen
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
span.fa.fa-home
|
||||
if currentUser
|
||||
#header-quick-access(class=currentBoard.colorClass)
|
||||
if isMiniScreen
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
span.fa.fa-home
|
||||
|
||||
if currentList
|
||||
each currentBoard.lists
|
||||
li(class="{{#if $.Session.equals 'currentList' _id}}current{{/if}}")
|
||||
a.js-select-list
|
||||
= title
|
||||
#header-new-board-icon
|
||||
else
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
span.fa.fa-home
|
||||
| {{_ 'all-boards'}}
|
||||
each currentUser.starredBoards
|
||||
li.separator -
|
||||
li(class="{{#if $.Session.equals 'currentBoard' _id}}current{{/if}}")
|
||||
a(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
if currentList
|
||||
each currentBoard.lists
|
||||
li(class="{{#if $.Session.equals 'currentList' _id}}current{{/if}}")
|
||||
a.js-select-list
|
||||
= title
|
||||
else
|
||||
li.current {{_ 'quick-access-description'}}
|
||||
#header-new-board-icon
|
||||
else
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
span.fa.fa-home
|
||||
| {{_ 'all-boards'}}
|
||||
each currentUser.starredBoards
|
||||
li.separator -
|
||||
li(class="{{#if $.Session.equals 'currentBoard' _id}}current{{/if}}")
|
||||
a(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
= title
|
||||
else
|
||||
li.current {{_ 'quick-access-description'}}
|
||||
|
||||
a#header-new-board-icon.js-create-board
|
||||
i.fa.fa-plus(title="Create a new board")
|
||||
a#header-new-board-icon.js-create-board
|
||||
i.fa.fa-plus(title="Create a new board")
|
||||
|
||||
+headerUserBar
|
||||
+headerUserBar
|
||||
|
||||
#header(class=currentBoard.colorClass)
|
||||
//-
|
||||
@@ -52,13 +51,9 @@ template(name="header")
|
||||
On sandstorm, the logo shouldn't be clickable, because we only have one
|
||||
page/document on it, and we don't want to see the home page containing
|
||||
the list of all boards.
|
||||
if isSandstorm
|
||||
.wekan-logo
|
||||
unless currentSetting.hideLogo
|
||||
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
|
||||
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
|
||||
else
|
||||
unless currentSetting.hideLogo
|
||||
a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
|
||||
img(src="{{pathFor '/wekan-logo-header.png'}}" alt="Wekan")
|
||||
|
||||
if appIsOffline
|
||||
+offlineWarning
|
||||
|
||||
@@ -14,13 +14,13 @@ head
|
||||
|
||||
template(name="userFormsLayout")
|
||||
section.auth-layout
|
||||
unless currentSetting.hideLogo
|
||||
h1.at-form-landing-logo
|
||||
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
|
||||
if currentSetting.hideLogo
|
||||
h1
|
||||
br
|
||||
br
|
||||
else
|
||||
h1.at-form-landing-logo
|
||||
img(src="{{pathFor '/wekan-logo.png'}}" alt="Wekan")
|
||||
section.auth-dialog
|
||||
+Template.dynamic(template=content)
|
||||
if currentSetting.displayAuthenticationMethod
|
||||
|
||||
@@ -4,22 +4,21 @@ template(name="settingHeaderBar")
|
||||
|
||||
.setting-header-btns.left
|
||||
unless isMiniScreen
|
||||
unless isSandstorm
|
||||
if currentUser
|
||||
a.setting-header-btn.settings(href="{{pathFor 'setting'}}")
|
||||
i.fa(class="fa-cog")
|
||||
span {{_ 'settings'}}
|
||||
if currentUser
|
||||
a.setting-header-btn.settings(href="{{pathFor 'setting'}}")
|
||||
i.fa(class="fa-cog")
|
||||
span {{_ 'settings'}}
|
||||
|
||||
a.setting-header-btn.people(href="{{pathFor 'people'}}")
|
||||
i.fa(class="fa-users")
|
||||
span {{_ 'people'}}
|
||||
a.setting-header-btn.people(href="{{pathFor 'people'}}")
|
||||
i.fa(class="fa-users")
|
||||
span {{_ 'people'}}
|
||||
|
||||
a.setting-header-btn.informations(href="{{pathFor 'information'}}")
|
||||
i.fa(class="fa-info-circle")
|
||||
span {{_ 'info'}}
|
||||
a.setting-header-btn.informations(href="{{pathFor 'information'}}")
|
||||
i.fa(class="fa-info-circle")
|
||||
span {{_ 'info'}}
|
||||
|
||||
else
|
||||
a.setting-header-btn.js-log-in(
|
||||
title="{{_ 'log-in'}}")
|
||||
i.fa.fa-sign-in
|
||||
span {{_ 'log-in'}}
|
||||
else
|
||||
a.setting-header-btn.js-log-in(
|
||||
title="{{_ 'log-in'}}")
|
||||
i.fa.fa-sign-in
|
||||
span {{_ 'log-in'}}
|
||||
@@ -83,17 +83,16 @@ template(name="memberPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-filter-member {{_ 'filter-cards'}}
|
||||
unless isSandstorm
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-change-role
|
||||
| {{_ 'change-permissions'}}
|
||||
span.quiet (#{memberType})
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
if $eq currentUser._id userId
|
||||
a.js-leave-member {{_ 'leave-board'}}
|
||||
else if currentUser.isBoardAdmin
|
||||
a.js-remove-member {{_ 'remove-from-board'}}
|
||||
a.js-change-role
|
||||
| {{_ 'change-permissions'}}
|
||||
span.quiet (#{memberType})
|
||||
li
|
||||
if $eq currentUser._id userId
|
||||
a.js-leave-member {{_ 'leave-board'}}
|
||||
else if currentUser.isBoardAdmin
|
||||
a.js-remove-member {{_ 'remove-from-board'}}
|
||||
|
||||
|
||||
template(name="removeMemberPopup")
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
template(name="miniswimlane")
|
||||
.minicard(
|
||||
class="minicard-{{colorClass}}")
|
||||
.minicard-title
|
||||
.handle
|
||||
.fa.fa-arrows
|
||||
+viewer
|
||||
= title
|
||||
@@ -1,15 +1,21 @@
|
||||
template(name="swimlaneHeader")
|
||||
.swimlane-header-wrap.js-swimlane-header(class='{{#if colorClass}}swimlane-{{colorClass}}{{/if}}')
|
||||
+inlinedForm
|
||||
+editSwimlaneTitleForm
|
||||
if this.isTemplateContainer
|
||||
+swimlaneFixedHeader(this)
|
||||
else
|
||||
.swimlane-header(
|
||||
class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
|
||||
= title
|
||||
.swimlane-header-menu
|
||||
unless currentUser.isCommentOnly
|
||||
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon
|
||||
a.fa.fa-navicon.js-open-swimlane-menu
|
||||
+inlinedForm
|
||||
+editSwimlaneTitleForm
|
||||
else
|
||||
+swimlaneFixedHeader(this)
|
||||
|
||||
template(name="swimlaneFixedHeader")
|
||||
.swimlane-header(
|
||||
class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
|
||||
= title
|
||||
.swimlane-header-menu
|
||||
unless currentUser.isCommentOnly
|
||||
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon
|
||||
a.fa.fa-navicon.js-open-swimlane-menu
|
||||
|
||||
template(name="editSwimlaneTitleForm")
|
||||
.list-composer
|
||||
@@ -22,9 +28,10 @@ template(name="swimlaneActionPopup")
|
||||
unless currentUser.isCommentOnly
|
||||
ul.pop-over-list
|
||||
li: a.js-set-swimlane-color {{_ 'select-color'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li: a.js-close-swimlane {{_ 'archive-swimlane'}}
|
||||
unless this.isTemplateContainer
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li: a.js-close-swimlane {{_ 'archive-swimlane'}}
|
||||
|
||||
template(name="swimlaneAddPopup")
|
||||
unless currentUser.isCommentOnly
|
||||
@@ -33,6 +40,11 @@ template(name="swimlaneAddPopup")
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'add'}}
|
||||
unless currentBoard.isTemplatesBoard
|
||||
unless currentBoard.isTemplateBoard
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-swimlane-template {{_ 'template'}}
|
||||
|
||||
template(name="setSwimlaneColorPopup")
|
||||
form.edit-label
|
||||
|
||||
@@ -47,12 +47,14 @@ BlazeComponent.extendComponent({
|
||||
const titleInput = this.find('.swimlane-name-input');
|
||||
const title = titleInput.value.trim();
|
||||
const sortValue = calculateIndexData(this.currentSwimlane, nextSwimlane, 1);
|
||||
const swimlaneType = (currentBoard.isTemplatesBoard())?'template-swimlane':'swimlane';
|
||||
|
||||
if (title) {
|
||||
Swimlanes.insert({
|
||||
title,
|
||||
boardId: Session.get('currentBoard'),
|
||||
sort: sortValue.base,
|
||||
type: swimlaneType,
|
||||
});
|
||||
|
||||
titleInput.value = '';
|
||||
@@ -63,6 +65,7 @@ BlazeComponent.extendComponent({
|
||||
// with a minimum of interactions
|
||||
Popup.close();
|
||||
},
|
||||
'click .js-swimlane-template': Popup.open('searchElement'),
|
||||
}];
|
||||
},
|
||||
}).register('swimlaneAddPopup');
|
||||
|
||||
@@ -3,15 +3,15 @@ template(name="swimlane")
|
||||
+swimlaneHeader
|
||||
.swimlane.js-lists.js-swimlane
|
||||
if isMiniScreen
|
||||
if currentList
|
||||
if currentListIsInThisSwimlane _id
|
||||
+list(currentList)
|
||||
else
|
||||
each currentBoard.lists
|
||||
unless currentList
|
||||
each lists
|
||||
+miniList(this)
|
||||
if currentUser.isBoardMember
|
||||
+addListForm
|
||||
else
|
||||
each currentBoard.lists
|
||||
each lists
|
||||
+list(this)
|
||||
if currentCardIsInThisList _id ../_id
|
||||
+cardDetails(currentCard)
|
||||
@@ -24,12 +24,12 @@ template(name="listsGroup")
|
||||
if currentList
|
||||
+list(currentList)
|
||||
else
|
||||
each currentBoard.lists
|
||||
each lists
|
||||
+miniList(this)
|
||||
if currentUser.isBoardMember
|
||||
+addListForm
|
||||
else
|
||||
each currentBoard.lists
|
||||
each lists
|
||||
+list(this)
|
||||
if currentCardIsInThisList _id null
|
||||
+cardDetails(currentCard)
|
||||
@@ -44,7 +44,11 @@ template(name="addListForm")
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
unless currentBoard.isTemplatesBoard
|
||||
unless currentBoard.isTemplateBoard
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-list-template {{_ 'template'}}
|
||||
else
|
||||
a.open-list-composer.js-open-inlined-form
|
||||
i.fa.fa-plus
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
const { calculateIndex, enableClickOnTouch } = Utils;
|
||||
|
||||
function currentListIsInThisSwimlane(swimlaneId) {
|
||||
const currentList = Lists.findOne(Session.get('currentList'));
|
||||
return currentList && (currentList.swimlaneId === swimlaneId || currentList.swimlaneId === '');
|
||||
}
|
||||
|
||||
function currentCardIsInThisList(listId, swimlaneId) {
|
||||
const currentCard = Cards.findOne(Session.get('currentCard'));
|
||||
const currentUser = Meteor.user();
|
||||
@@ -114,6 +119,10 @@ BlazeComponent.extendComponent({
|
||||
return currentCardIsInThisList(listId, swimlaneId);
|
||||
},
|
||||
|
||||
currentListIsInThisSwimlane(swimlaneId) {
|
||||
return currentListIsInThisSwimlane(swimlaneId);
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
// Click-and-drag action
|
||||
@@ -153,6 +162,12 @@ BlazeComponent.extendComponent({
|
||||
}).register('swimlane');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
this.isListTemplatesSwimlane = this.currentBoard.isTemplatesBoard() && this.currentData().isListTemplatesSwimlane();
|
||||
this.currentSwimlane = this.currentData();
|
||||
},
|
||||
|
||||
// Proxy
|
||||
open() {
|
||||
this.childComponents('inlinedForm')[0].open();
|
||||
@@ -169,12 +184,15 @@ BlazeComponent.extendComponent({
|
||||
title,
|
||||
boardId: Session.get('currentBoard'),
|
||||
sort: $('.list').length,
|
||||
type: (this.isListTemplatesSwimlane)?'template-list':'list',
|
||||
swimlaneId: (this.currentBoard.isTemplatesBoard())?this.currentSwimlane._id:'',
|
||||
});
|
||||
|
||||
titleInput.value = '';
|
||||
titleInput.focus();
|
||||
}
|
||||
},
|
||||
'click .js-list-template': Popup.open('searchElement'),
|
||||
}];
|
||||
},
|
||||
}).register('addListForm');
|
||||
|
||||
@@ -4,10 +4,11 @@ template(name="headerUserBar")
|
||||
.header-user-bar-avatar
|
||||
+userAvatar(userId=currentUser._id)
|
||||
unless isMiniScreen
|
||||
if currentUser.profile.fullname
|
||||
= currentUser.profile.fullname
|
||||
else
|
||||
= currentUser.username
|
||||
unless isSandstorm
|
||||
if currentUser.profile.fullname
|
||||
= currentUser.profile.fullname
|
||||
else
|
||||
= currentUser.username
|
||||
|
||||
template(name="memberMenuPopup")
|
||||
ul.pop-over-list
|
||||
@@ -15,13 +16,18 @@ template(name="memberMenuPopup")
|
||||
li: a.js-edit-profile {{_ 'edit-profile'}}
|
||||
li: a.js-change-settings {{_ 'change-settings'}}
|
||||
li: a.js-change-avatar {{_ 'edit-avatar'}}
|
||||
li: a.js-change-password {{_ 'changePasswordPopup-title'}}
|
||||
li: a.js-change-language {{_ 'changeLanguagePopup-title'}}
|
||||
unless isSandstorm
|
||||
li: a.js-change-password {{_ 'changePasswordPopup-title'}}
|
||||
li: a.js-change-language {{_ 'changeLanguagePopup-title'}}
|
||||
if currentUser.isAdmin
|
||||
li: a.js-go-setting(href="{{pathFor 'setting'}}") {{_ 'admin-panel'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li: a.js-logout {{_ 'log-out'}}
|
||||
li: a(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}") {{_ 'templates'}}
|
||||
unless isSandstorm
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li: a.js-logout {{_ 'log-out'}}
|
||||
|
||||
template(name="editProfilePopup")
|
||||
form
|
||||
|
||||
@@ -3,6 +3,15 @@ Template.headerUserBar.events({
|
||||
'click .js-change-avatar': Popup.open('changeAvatar'),
|
||||
});
|
||||
|
||||
Template.memberMenuPopup.helpers({
|
||||
templatesBoardId() {
|
||||
return Meteor.user().getTemplatesBoardId();
|
||||
},
|
||||
templatesBoardSlug() {
|
||||
return Meteor.user().getTemplatesBoardSlug();
|
||||
},
|
||||
});
|
||||
|
||||
Template.memberMenuPopup.events({
|
||||
'click .js-edit-profile': Popup.open('editProfile'),
|
||||
'click .js-change-settings': Popup.open('changeSettings'),
|
||||
|
||||
+20
-4
@@ -220,6 +220,10 @@ services:
|
||||
# https://github.com/wekan/wekan-gogs
|
||||
# If you disable Wekan API with false, Export Board does not work.
|
||||
- WITH_API=true
|
||||
#---------------------------------------------------------------
|
||||
# ==== EMAIL NOTIFICATION TIMEOUT, ms =====
|
||||
# Defaut: 30000 ms = 30s
|
||||
#- EMAIL_NOTIFICATION_TIMEOUT=30000
|
||||
#-----------------------------------------------------------------
|
||||
# ==== CORS =====
|
||||
# CORS: Set Access-Control-Allow-Origin header.
|
||||
@@ -311,10 +315,6 @@ services:
|
||||
#- OAUTH2_FULLNAME_MAP=
|
||||
# OAuth2 Email Mapping
|
||||
#- OAUTH2_EMAIL_MAP=
|
||||
# OAUTH2 ID Token Whitelist Fields.
|
||||
#- OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
|
||||
# OAUTH2 Request Permissions.
|
||||
#- OAUTH2_REQUEST_PERMISSIONS=[openid email profile]
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP ====
|
||||
# https://github.com/wekan/wekan/wiki/LDAP
|
||||
@@ -469,6 +469,22 @@ services:
|
||||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : LDAP_MERGE_EXISTING_USERS=true
|
||||
#- LDAP_MERGE_EXISTING_USERS=false
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_ENABLE : allow existing account matching by e-mail address when username does not match
|
||||
# example: LDAP_EMAIL_MATCH_ENABLE=true
|
||||
#- LDAP_EMAIL_MATCH_ENABLE=false
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
|
||||
# example: LDAP_EMAIL_MATCH_REQUIRE=true
|
||||
#- LDAP_EMAIL_MATCH_REQUIRE=false
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
|
||||
# example: LDAP_EMAIL_MATCH_VERIFIED=true
|
||||
#- LDAP_EMAIL_MATCH_VERIFIED=false
|
||||
#
|
||||
# LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
|
||||
# example: LDAP_EMAIL_FIELD=mail
|
||||
#- LDAP_EMAIL_FIELD=
|
||||
#-----------------------------------------------------------------
|
||||
# LDAP_SYNC_USER_DATA :
|
||||
# example : LDAP_SYNC_USER_DATA=true
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "استعادة اللوحة",
|
||||
"no-archived-boards": "لا توجد لوحات في الأرشيف.",
|
||||
"archives": "أرشيف",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "تعيين عضو",
|
||||
"attached": "أُرفق)",
|
||||
"attachment": "مرفق",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "علامات",
|
||||
"cardMembersPopup-title": "أعضاء",
|
||||
"cardMorePopup-title": "المزيد",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "بطاقات",
|
||||
"cards-count": "بطاقات",
|
||||
"casSignIn": "تسجيل الدخول مع CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "المبادئ",
|
||||
"welcome-list2": "متقدم",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "ماذا تريد أن تنجز?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Възстанови Таблото",
|
||||
"no-archived-boards": "Няма Табла в Архива.",
|
||||
"archives": "Архив",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Възложи на член от екипа",
|
||||
"attached": "прикачен",
|
||||
"attachment": "Прикаченн файл",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Етикети",
|
||||
"cardMembersPopup-title": "Членове",
|
||||
"cardMorePopup-title": "Още",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Карти",
|
||||
"cards-count": "Карти",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Невалиден WIP лимит",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Izili",
|
||||
"cardMorePopup-title": "Muioc’h",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Kartennoù",
|
||||
"cards-count": "Kartennoù",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restaura Tauler",
|
||||
"no-archived-boards": "No hi han Taulers al Arxiu.",
|
||||
"archives": "Desa",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assignar membre",
|
||||
"attached": "adjuntat",
|
||||
"attachment": "Adjunt",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiquetes",
|
||||
"cardMembersPopup-title": "Membres",
|
||||
"cardMorePopup-title": "Més",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Fitxes",
|
||||
"cards-count": "Fitxes",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Objectiu 1",
|
||||
"welcome-list1": "Bàsics",
|
||||
"welcome-list2": "Avançades",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Què vols fer?",
|
||||
"wipLimitErrorPopup-title": "Límit de Treball en Progrès invàlid",
|
||||
"wipLimitErrorPopup-dialog-pt1": "El nombre de tasques en esta llista és superior al límit de Treball en Progrès que heu definit.",
|
||||
|
||||
+35
-29
@@ -43,19 +43,19 @@
|
||||
"activity-sent": "%s posláno na %s",
|
||||
"activity-unjoined": "odpojen %s",
|
||||
"activity-subtask-added": "podúkol přidán do %s",
|
||||
"activity-checked-item": "checked %s in checklist %s of %s",
|
||||
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
|
||||
"activity-checked-item": "dokončen %s v seznamu %s z %s",
|
||||
"activity-unchecked-item": "nedokončen %s v seznamu %s z %s",
|
||||
"activity-checklist-added": "přidán checklist do %s",
|
||||
"activity-checklist-removed": "odstraněn checklist z %s",
|
||||
"activity-checklist-completed": "dokončen checklist %s z %s",
|
||||
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
|
||||
"activity-checklist-uncompleted": "nedokončen seznam %s z %s",
|
||||
"activity-checklist-item-added": "přidána položka checklist do '%s' v %s",
|
||||
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
|
||||
"activity-checklist-item-removed": "odstraněna položka seznamu do '%s' v %s",
|
||||
"add": "Přidat",
|
||||
"activity-checked-item-card": "checked %s in checklist %s",
|
||||
"activity-unchecked-item-card": "unchecked %s in checklist %s",
|
||||
"activity-checked-item-card": "dokončen %s v seznamu %s",
|
||||
"activity-unchecked-item-card": "nedokončen %s v seznamu %s",
|
||||
"activity-checklist-completed-card": "dokončen checklist %s",
|
||||
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
|
||||
"activity-checklist-uncompleted-card": "nedokončený seznam %s",
|
||||
"add-attachment": "Přidat přílohu",
|
||||
"add-board": "Přidat tablo",
|
||||
"add-card": "Přidat kartu",
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Obnovit tablo",
|
||||
"no-archived-boards": "V archivu nejsou žádná tabla.",
|
||||
"archives": "Archiv",
|
||||
"template": "Šablona",
|
||||
"templates": "Šablony",
|
||||
"assign-member": "Přiřadit člena",
|
||||
"attached": "přiloženo",
|
||||
"attachment": "Příloha",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Štítky",
|
||||
"cardMembersPopup-title": "Členové",
|
||||
"cardMorePopup-title": "Více",
|
||||
"cardTemplatePopup-title": "Vytvořit šablonu",
|
||||
"cards": "Karty",
|
||||
"cards-count": "Karty",
|
||||
"casSignIn": "Přihlásit pomocí CAS",
|
||||
@@ -166,19 +169,19 @@
|
||||
"clipboard": "Schránka nebo potáhnout a pustit",
|
||||
"close": "Zavřít",
|
||||
"close-board": "Zavřít tablo",
|
||||
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
|
||||
"close-board-pop": "Budete moci obnovit tablo kliknutím na tlačítko \"Archiv\" v hlavním menu.",
|
||||
"color-black": "černá",
|
||||
"color-blue": "modrá",
|
||||
"color-crimson": "crimson",
|
||||
"color-darkgreen": "darkgreen",
|
||||
"color-gold": "gold",
|
||||
"color-gray": "gray",
|
||||
"color-gold": "zlatá",
|
||||
"color-gray": "šedá",
|
||||
"color-green": "zelená",
|
||||
"color-indigo": "indigo",
|
||||
"color-lime": "světlezelená",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "mistyrose",
|
||||
"color-navy": "navy",
|
||||
"color-navy": "tmavě modrá",
|
||||
"color-orange": "oranžová",
|
||||
"color-paleturquoise": "paleturquoise",
|
||||
"color-peachpuff": "peachpuff",
|
||||
@@ -187,12 +190,12 @@
|
||||
"color-purple": "fialová",
|
||||
"color-red": "červená",
|
||||
"color-saddlebrown": "saddlebrown",
|
||||
"color-silver": "silver",
|
||||
"color-silver": "stříbrná",
|
||||
"color-sky": "nebeská",
|
||||
"color-slateblue": "slateblue",
|
||||
"color-white": "white",
|
||||
"color-white": "bílá",
|
||||
"color-yellow": "žlutá",
|
||||
"unset-color": "Unset",
|
||||
"unset-color": "Nenastaveno",
|
||||
"comment": "Komentář",
|
||||
"comment-placeholder": "Text komentáře",
|
||||
"comment-only": "Pouze komentáře",
|
||||
@@ -332,10 +335,10 @@
|
||||
"leaveBoardPopup-title": "Opustit tablo?",
|
||||
"link-card": "Odkázat na tuto kartu",
|
||||
"list-archive-cards": "Přesunout všechny karty v tomto seznamu do archivu.",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
|
||||
"list-archive-cards-pop": "Toto odstraní z tabla všechny karty z tohoto seznamu. Pro zobrazení karet v Archivu a jejich opětovné obnovení, klikni v \"Menu\" > \"Archiv\".",
|
||||
"list-move-cards": "Přesunout všechny karty v tomto sloupci",
|
||||
"list-select-cards": "Vybrat všechny karty v tomto sloupci",
|
||||
"set-color-list": "Set Color",
|
||||
"set-color-list": "Nastavit barvu",
|
||||
"listActionPopup-title": "Vypsat akce",
|
||||
"swimlaneActionPopup-title": "Akce swimlane",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milník 1",
|
||||
"welcome-list1": "Základní",
|
||||
"welcome-list2": "Pokročilé",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Co chcete dělat?",
|
||||
"wipLimitErrorPopup-title": "Neplatný WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Počet úkolů v tomto sloupci je vyšší než definovaný WIP limit.",
|
||||
@@ -498,7 +504,7 @@
|
||||
"OS_Totalmem": "OS Celková paměť",
|
||||
"OS_Type": "Typ OS",
|
||||
"OS_Uptime": "OS Doba běhu systému",
|
||||
"days": "days",
|
||||
"days": "dní",
|
||||
"hours": "hodin",
|
||||
"minutes": "minut",
|
||||
"seconds": "sekund",
|
||||
@@ -519,10 +525,10 @@
|
||||
"card-end-on": "Končí v",
|
||||
"editCardReceivedDatePopup-title": "Změnit datum přijetí",
|
||||
"editCardEndDatePopup-title": "Změnit datum konce",
|
||||
"setCardColorPopup-title": "Set color",
|
||||
"setCardActionsColorPopup-title": "Choose a color",
|
||||
"setSwimlaneColorPopup-title": "Choose a color",
|
||||
"setListColorPopup-title": "Choose a color",
|
||||
"setCardColorPopup-title": "Nastav barvu",
|
||||
"setCardActionsColorPopup-title": "Vyber barvu",
|
||||
"setSwimlaneColorPopup-title": "Vyber barvu",
|
||||
"setListColorPopup-title": "Vyber barvu",
|
||||
"assigned-by": "Přidělil(a)",
|
||||
"requested-by": "Vyžádal(a)",
|
||||
"board-delete-notice": "Smazání je trvalé. Přijdete o všechny sloupce, karty a akce spojené s tímto tablem.",
|
||||
@@ -590,8 +596,8 @@
|
||||
"r-checked": "Zaškrtnuto",
|
||||
"r-unchecked": "Odškrtnuto",
|
||||
"r-move-card-to": "Přesunout kartu do",
|
||||
"r-top-of": "Top of",
|
||||
"r-bottom-of": "Bottom of",
|
||||
"r-top-of": "Začátek",
|
||||
"r-bottom-of": "Spodek",
|
||||
"r-its-list": "toho sloupce",
|
||||
"r-archive": "Přesunout do archivu",
|
||||
"r-unarchive": "Obnovit z archivu",
|
||||
@@ -601,7 +607,7 @@
|
||||
"r-label": "štítek",
|
||||
"r-member": "člen",
|
||||
"r-remove-all": "Odstranit všechny členy z této karty",
|
||||
"r-set-color": "Set color to",
|
||||
"r-set-color": "Nastav barvu na",
|
||||
"r-checklist": "zaškrtávací seznam",
|
||||
"r-check-all": "Zaškrtnout vše",
|
||||
"r-uncheck-all": "Odškrtnout vše",
|
||||
@@ -654,12 +660,12 @@
|
||||
"authentication-method": "Metoda autentizace",
|
||||
"authentication-type": "Typ autentizace",
|
||||
"custom-product-name": "Vlastní název produktu",
|
||||
"layout": "uspořádání",
|
||||
"layout": "Uspořádání",
|
||||
"hide-logo": "Skrýt logo",
|
||||
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
|
||||
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
|
||||
"add-custom-html-after-body-start": "Přidej vlastní HTML za <body>",
|
||||
"add-custom-html-before-body-end": "Přidej vlastní HTML před </body>",
|
||||
"error-undefined": "Něco se pokazilo",
|
||||
"error-ldap-login": "Během přihlašování nastala chyba",
|
||||
"display-authentication-method": "Display Authentication Method",
|
||||
"default-authentication-method": "Default Authentication Method"
|
||||
"display-authentication-method": "Zobraz způsob ověřování",
|
||||
"default-authentication-method": "Zobraz způsob ověřování"
|
||||
}
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Board wiederherstellen",
|
||||
"no-archived-boards": "Keine Boards im Archiv.",
|
||||
"archives": "Archiv",
|
||||
"template": "Vorlage",
|
||||
"templates": "Vorlagen",
|
||||
"assign-member": "Mitglied zuweisen",
|
||||
"attached": "angehängt",
|
||||
"attachment": "Anhang",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Mitglieder",
|
||||
"cardMorePopup-title": "Mehr",
|
||||
"cardTemplatePopup-title": "Vorlage erstellen",
|
||||
"cards": "Karten",
|
||||
"cards-count": "Karten",
|
||||
"casSignIn": "Mit CAS anmelden",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Meilenstein 1",
|
||||
"welcome-list1": "Grundlagen",
|
||||
"welcome-list2": "Fortgeschritten",
|
||||
"card-templates-swimlane": "Kartenvorlagen",
|
||||
"list-templates-swimlane": "Listenvorlagen",
|
||||
"board-templates-swimlane": "Boardvorlagen",
|
||||
"what-to-do": "Was wollen Sie tun?",
|
||||
"wipLimitErrorPopup-title": "Ungültiges WIP-Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Die Anzahl von Aufgaben in dieser Liste ist größer als das von Ihnen definierte WIP-Limit.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Ετικέτες",
|
||||
"cardMembersPopup-title": "Μέλοι",
|
||||
"cardMorePopup-title": "Περισσότερα",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Κάρτες",
|
||||
"cards-count": "Κάρτες",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn" : "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Arkivi",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etikedoj",
|
||||
"cardMembersPopup-title": "Membroj",
|
||||
"cardMorePopup-title": "Pli",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Kartoj",
|
||||
"cards-count": "Kartoj",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Kion vi volas fari?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restaurar Tablero",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archivar",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Asignar miembro",
|
||||
"attached": "adjunto(s)",
|
||||
"attachment": "Adjunto",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Miembros",
|
||||
"cardMorePopup-title": "Mas",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Tarjetas",
|
||||
"cards-count": "Tarjetas",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Hito 1",
|
||||
"welcome-list1": "Básicos",
|
||||
"welcome-list2": "Avanzado",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "¿Qué querés hacer?",
|
||||
"wipLimitErrorPopup-title": "Límite TEP Inválido",
|
||||
"wipLimitErrorPopup-dialog-pt1": " El número de tareas en esta lista es mayor que el límite TEP que definiste.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restaurar el tablero",
|
||||
"no-archived-boards": "No hay Tableros en el Archivo",
|
||||
"archives": "Archivar",
|
||||
"template": "Plantilla",
|
||||
"templates": "Plantillas",
|
||||
"assign-member": "Asignar miembros",
|
||||
"attached": "adjuntado",
|
||||
"attachment": "Adjunto",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Miembros",
|
||||
"cardMorePopup-title": "Más",
|
||||
"cardTemplatePopup-title": "Crear plantilla",
|
||||
"cards": "Tarjetas",
|
||||
"cards-count": "Tarjetas",
|
||||
"casSignIn": "Iniciar sesión con CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Hito 1",
|
||||
"welcome-list1": "Básicos",
|
||||
"welcome-list2": "Avanzados",
|
||||
"card-templates-swimlane": "Plantilla de tarjeta",
|
||||
"list-templates-swimlane": "Listar plantillas",
|
||||
"board-templates-swimlane": "Plantilla de tablero",
|
||||
"what-to-do": "¿Qué deseas hacer?",
|
||||
"wipLimitErrorPopup-title": "El límite del trabajo en proceso no es válido.",
|
||||
"wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del trabajo en proceso que has definido.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Berreskuratu arbela",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Artxibatu",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Esleitu kidea",
|
||||
"attached": "erantsita",
|
||||
"attachment": "Eranskina",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiketak",
|
||||
"cardMembersPopup-title": "Kideak",
|
||||
"cardMorePopup-title": "Gehiago",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Txartelak",
|
||||
"cards-count": "Txartelak",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Oinarrizkoa",
|
||||
"welcome-list2": "Aurreratua",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Zer egin nahi duzu?",
|
||||
"wipLimitErrorPopup-title": "Baliogabeko WIP muga",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Zerrenda honetako atazen muga, WIP-en ezarritakoa baina handiagoa da",
|
||||
|
||||
+48
-42
@@ -92,6 +92,8 @@
|
||||
"restore-board": "بازیابی تخته",
|
||||
"no-archived-boards": "هیچ بردی داخل آرشیو نیست",
|
||||
"archives": "بایگانی",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "تعیین عضو",
|
||||
"attached": "ضمیمه شده",
|
||||
"attachment": "ضمیمه",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "برچسب ها",
|
||||
"cardMembersPopup-title": "اعضا",
|
||||
"cardMorePopup-title": "بیشتر",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "کارتها",
|
||||
"cards-count": "کارتها",
|
||||
"casSignIn": "ورود با استفاده از CAS",
|
||||
@@ -169,30 +172,30 @@
|
||||
"close-board-pop": "شما می توانید با کلیک کردن بر روی دکمه «بایگانی» از صفحه هدر، صفحه را بازگردانید.",
|
||||
"color-black": "مشکی",
|
||||
"color-blue": "آبی",
|
||||
"color-crimson": "crimson",
|
||||
"color-darkgreen": "darkgreen",
|
||||
"color-gold": "gold",
|
||||
"color-gray": "gray",
|
||||
"color-crimson": "قرمز",
|
||||
"color-darkgreen": "سبز تیره",
|
||||
"color-gold": "طلایی",
|
||||
"color-gray": "خاکستری",
|
||||
"color-green": "سبز",
|
||||
"color-indigo": "indigo",
|
||||
"color-indigo": "نیلی",
|
||||
"color-lime": "لیمویی",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "mistyrose",
|
||||
"color-navy": "navy",
|
||||
"color-magenta": "ارغوانی",
|
||||
"color-mistyrose": "صورتی روشن",
|
||||
"color-navy": "لاجوردی",
|
||||
"color-orange": "نارنجی",
|
||||
"color-paleturquoise": "paleturquoise",
|
||||
"color-peachpuff": "peachpuff",
|
||||
"color-paleturquoise": "فیروزهای کدر",
|
||||
"color-peachpuff": "هلویی",
|
||||
"color-pink": "صورتی",
|
||||
"color-plum": "plum",
|
||||
"color-plum": "بنفش کدر",
|
||||
"color-purple": "بنفش",
|
||||
"color-red": "قرمز",
|
||||
"color-saddlebrown": "saddlebrown",
|
||||
"color-silver": "silver",
|
||||
"color-saddlebrown": "کاکائویی",
|
||||
"color-silver": "نقرهای",
|
||||
"color-sky": "آبی آسمانی",
|
||||
"color-slateblue": "slateblue",
|
||||
"color-white": "white",
|
||||
"color-slateblue": "آبی فولادی",
|
||||
"color-white": "سفید",
|
||||
"color-yellow": "زرد",
|
||||
"unset-color": "Unset",
|
||||
"unset-color": "بازنشانی",
|
||||
"comment": "نظر",
|
||||
"comment-placeholder": "درج نظر",
|
||||
"comment-only": "فقط نظر",
|
||||
@@ -335,10 +338,10 @@
|
||||
"list-archive-cards-pop": "این کارتباعث حذف تمامی کارت های این لیست از برد می شود . برای مشاهده کارت ها در آرشیو و برگرداندن آنها به برد بر بروی \"Menu\">\"Archive\" کلیک نمایید",
|
||||
"list-move-cards": "انتقال تمام کارت های این لیست",
|
||||
"list-select-cards": "انتخاب تمام کارت های این لیست",
|
||||
"set-color-list": "Set Color",
|
||||
"set-color-list": "انتخاب رنگ",
|
||||
"listActionPopup-title": "لیست اقدامات",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"swimlaneAddPopup-title": "اضافه کردن مسیر شناور",
|
||||
"listImportCardPopup-title": "وارد کردن کارت Trello",
|
||||
"listMorePopup-title": "بیشتر",
|
||||
"link-list": "پیوند به این فهرست",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "پایه ای ها",
|
||||
"welcome-list2": "پیشرفته",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "چه کاری می خواهید انجام دهید؟",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
@@ -485,7 +491,7 @@
|
||||
"error-notAuthorized": "شما مجاز به دیدن این صفحه نیستید.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"boardCardTitlePopup-title": "Card Title Filter",
|
||||
"boardCardTitlePopup-title": "فیلتر موضوع کارت",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(ناشناخته)",
|
||||
"Node_version": "نسخه Node ",
|
||||
@@ -498,7 +504,7 @@
|
||||
"OS_Totalmem": "OS Total Memory",
|
||||
"OS_Type": "OS Type",
|
||||
"OS_Uptime": "OS Uptime",
|
||||
"days": "days",
|
||||
"days": "روزهها",
|
||||
"hours": "ساعت",
|
||||
"minutes": "دقیقه",
|
||||
"seconds": "ثانیه",
|
||||
@@ -519,10 +525,10 @@
|
||||
"card-end-on": "پایان در",
|
||||
"editCardReceivedDatePopup-title": "تغییر تاریخ رسید",
|
||||
"editCardEndDatePopup-title": "تغییر تاریخ پایان",
|
||||
"setCardColorPopup-title": "Set color",
|
||||
"setCardActionsColorPopup-title": "Choose a color",
|
||||
"setSwimlaneColorPopup-title": "Choose a color",
|
||||
"setListColorPopup-title": "Choose a color",
|
||||
"setCardColorPopup-title": "انتخاب رنگ",
|
||||
"setCardActionsColorPopup-title": "انتخاب کردن رنگ",
|
||||
"setSwimlaneColorPopup-title": "انتخاب کردن رنگ",
|
||||
"setListColorPopup-title": "انتخاب کردن رنگ",
|
||||
"assigned-by": "محول شده توسط",
|
||||
"requested-by": "تقاضا شده توسط",
|
||||
"board-delete-notice": "حذف دائمی است شما تمام لیست ها، کارت ها و اقدامات مرتبط با این برد را از دست خواهید داد.",
|
||||
@@ -561,14 +567,14 @@
|
||||
"r-delete-rule": "حذف قانون",
|
||||
"r-new-rule-name": "تیتر قانون جدید",
|
||||
"r-no-rules": "بدون قانون",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
"r-is": "هست",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-is-moved": "جابهجا شده",
|
||||
"r-added-to": "اضافه شد به",
|
||||
"r-removed-from": "حذف از",
|
||||
"r-the-board": "برد",
|
||||
"r-list": "لیست",
|
||||
"set-filter": "Set Filter",
|
||||
"set-filter": "اضافه کردن فیلتر",
|
||||
"r-moved-to": "انتقال به",
|
||||
"r-moved-from": "انتقال از",
|
||||
"r-archived": "انتقال به آرشیو",
|
||||
@@ -576,7 +582,7 @@
|
||||
"r-a-card": "کارت",
|
||||
"r-when-a-label-is": "زمانی که لیبل هست",
|
||||
"r-when-the-label-is": "زمانی که لیبل هست",
|
||||
"r-list-name": "list name",
|
||||
"r-list-name": "نام لیست",
|
||||
"r-when-a-member": "زمانی که کاربر هست",
|
||||
"r-when-the-member": "زمانی که کاربر",
|
||||
"r-name": "نام",
|
||||
@@ -601,7 +607,7 @@
|
||||
"r-label": "برچسب",
|
||||
"r-member": "عضو",
|
||||
"r-remove-all": "حذف همه کاربران از کارت",
|
||||
"r-set-color": "Set color to",
|
||||
"r-set-color": "انتخاب رنگ به",
|
||||
"r-checklist": "چک لیست",
|
||||
"r-check-all": "انتخاب همه",
|
||||
"r-uncheck-all": "لغو انتخاب همه",
|
||||
@@ -626,9 +632,9 @@
|
||||
"r-d-unarchive": "بازگردانی کارت از آرشیو",
|
||||
"r-d-add-label": "افزودن برچسب",
|
||||
"r-d-remove-label": "حذف برچسب",
|
||||
"r-create-card": "Create new card",
|
||||
"r-in-list": "in list",
|
||||
"r-in-swimlane": "in swimlane",
|
||||
"r-create-card": "ساخت کارت جدید",
|
||||
"r-in-list": "در لیست",
|
||||
"r-in-swimlane": "در مسیرِ شناور",
|
||||
"r-d-add-member": "افزودن عضو",
|
||||
"r-d-remove-member": "حذف عضو",
|
||||
"r-d-remove-all-member": "حذف تمامی کاربران",
|
||||
@@ -639,14 +645,14 @@
|
||||
"r-d-check-of-list": "از چک لیست",
|
||||
"r-d-add-checklist": "افزودن چک لیست",
|
||||
"r-d-remove-checklist": "حذف چک لیست",
|
||||
"r-by": "by",
|
||||
"r-by": "توسط",
|
||||
"r-add-checklist": "افزودن چک لیست",
|
||||
"r-with-items": "with items",
|
||||
"r-items-list": "item1,item2,item3",
|
||||
"r-add-swimlane": "Add swimlane",
|
||||
"r-swimlane-name": "swimlane name",
|
||||
"r-board-note": "Note: leave a field empty to match every possible value.",
|
||||
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
||||
"r-with-items": "با موارد",
|
||||
"r-items-list": "مورد۱،مورد۲،مورد۳",
|
||||
"r-add-swimlane": "اضافه کردن مسیر شناور",
|
||||
"r-swimlane-name": "نام مسیر شناور",
|
||||
"r-board-note": "نکته: برای نمایش موارد ممکن کادر را خالی بگذارید.",
|
||||
"r-checklist-note": "نکته: چکلیستها باید توسط کاما از یکدیگر جدا شوند.",
|
||||
"r-when-a-card-is-moved": "دمانی که یک کارت به لیست دیگری منتقل شد",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
@@ -660,6 +666,6 @@
|
||||
"add-custom-html-before-body-end": "افزودن کد های HTML قبل از </body> پایان",
|
||||
"error-undefined": "یک اشتباه رخ داده شده است",
|
||||
"error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد",
|
||||
"display-authentication-method": "Display Authentication Method",
|
||||
"default-authentication-method": "Default Authentication Method"
|
||||
"display-authentication-method": "نمایش نوع اعتبارسنجی",
|
||||
"default-authentication-method": "نوع اعتبارسنجی پیشفرض"
|
||||
}
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Palauta taulu",
|
||||
"no-archived-boards": "Ei tauluja Arkistossa",
|
||||
"archives": "Arkisto",
|
||||
"template": "Malli",
|
||||
"templates": "Mallit",
|
||||
"assign-member": "Valitse jäsen",
|
||||
"attached": "liitetty",
|
||||
"attachment": "Liitetiedosto",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Tunnisteet",
|
||||
"cardMembersPopup-title": "Jäsenet",
|
||||
"cardMorePopup-title": "Lisää",
|
||||
"cardTemplatePopup-title": "Luo malli",
|
||||
"cards": "Kortit",
|
||||
"cards-count": "korttia",
|
||||
"casSignIn": "CAS kirjautuminen",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Merkkipaalu 1",
|
||||
"welcome-list1": "Perusasiat",
|
||||
"welcome-list2": "Edistynyt",
|
||||
"card-templates-swimlane": "Kortti mallit",
|
||||
"list-templates-swimlane": "Lista mallit",
|
||||
"board-templates-swimlane": "Taulu mallit",
|
||||
"what-to-do": "Mitä haluat tehdä?",
|
||||
"wipLimitErrorPopup-title": "Virheellinen WIP-raja",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Tässä listassa olevien tehtävien määrä on korkeampi kuin asettamasi WIP-raja.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restaurer le tableau",
|
||||
"no-archived-boards": "Aucun tableau archivé.",
|
||||
"archives": "Archiver",
|
||||
"template": "Modèle",
|
||||
"templates": "Modèles",
|
||||
"assign-member": "Affecter un membre",
|
||||
"attached": "joint",
|
||||
"attachment": "Pièce jointe",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Étiquettes",
|
||||
"cardMembersPopup-title": "Membres",
|
||||
"cardMorePopup-title": "Plus",
|
||||
"cardTemplatePopup-title": "Créer un modèle",
|
||||
"cards": "Cartes",
|
||||
"cards-count": "Cartes",
|
||||
"casSignIn": "Se connecter avec CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Jalon 1",
|
||||
"welcome-list1": "Basiques",
|
||||
"welcome-list2": "Avancés",
|
||||
"card-templates-swimlane": "Modèles de cartes",
|
||||
"list-templates-swimlane": "Modèles de listes",
|
||||
"board-templates-swimlane": "Modèles de tableaux",
|
||||
"what-to-do": "Que voulez-vous faire ?",
|
||||
"wipLimitErrorPopup-title": "Limite WIP invalide",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Le nombre de cartes de cette liste est supérieur à la limite WIP que vous avez définie.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restaurar taboleiro",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Arquivar",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Anexo",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Membros",
|
||||
"cardMorePopup-title": "Máis",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Tarxetas",
|
||||
"cards-count": "Tarxetas",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Fundamentos",
|
||||
"welcome-list2": "Avanzado",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Que desexa facer?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "שחזור לוח",
|
||||
"no-archived-boards": "לא נשמרו לוחות בארכיון.",
|
||||
"archives": "להעביר לארכיון",
|
||||
"template": "תבנית",
|
||||
"templates": "תבניות",
|
||||
"assign-member": "הקצאת חבר",
|
||||
"attached": "מצורף",
|
||||
"attachment": "קובץ מצורף",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "תוויות",
|
||||
"cardMembersPopup-title": "חברים",
|
||||
"cardMorePopup-title": "עוד",
|
||||
"cardTemplatePopup-title": "יצירת תבנית",
|
||||
"cards": "כרטיסים",
|
||||
"cards-count": "כרטיסים",
|
||||
"casSignIn": "כניסה עם CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "ציון דרך 1",
|
||||
"welcome-list1": "יסודות",
|
||||
"welcome-list2": "מתקדם",
|
||||
"card-templates-swimlane": "תבניות כרטיסים",
|
||||
"list-templates-swimlane": "תבניות רשימות",
|
||||
"board-templates-swimlane": "תבניות לוחות",
|
||||
"what-to-do": "מה ברצונך לעשות?",
|
||||
"wipLimitErrorPopup-title": "מגבלת „בעבודה” שגויה",
|
||||
"wipLimitErrorPopup-dialog-pt1": "מספר המשימות ברשימה זו גדולה ממגבלת הפריטים „בעבודה” שהגדרת.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore बोर्ड",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "पुरालेख",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "आवंटित सदस्य",
|
||||
"attached": "संलग्न",
|
||||
"attachment": "संलग्नक",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "नामपत्र",
|
||||
"cardMembersPopup-title": "सदस्य",
|
||||
"cardMorePopup-title": "अतिरिक्त",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "कार्ड्स",
|
||||
"cards-count": "कार्ड्स",
|
||||
"casSignIn": "सीएएस के साथ साइन इन करें",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want तक do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks अंदर में यह सूची is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Tábla visszaállítása",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archiválás",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Tag hozzárendelése",
|
||||
"attached": "csatolva",
|
||||
"attachment": "Melléklet",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Címkék",
|
||||
"cardMembersPopup-title": "Tagok",
|
||||
"cardMorePopup-title": "Több",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Kártyák",
|
||||
"cards-count": "Kártyák",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "1. mérföldkő",
|
||||
"welcome-list1": "Alapok",
|
||||
"welcome-list2": "Speciális",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Mit szeretne tenni?",
|
||||
"wipLimitErrorPopup-title": "Érvénytelen WIP korlát",
|
||||
"wipLimitErrorPopup-dialog-pt1": "A listán lévő feladatok száma magasabb a meghatározott WIP korlátnál.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Arsip",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Tugaskan anggota",
|
||||
"attached": "terlampir",
|
||||
"attachment": "Lampiran",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Daftar Label",
|
||||
"cardMembersPopup-title": "Daftar Anggota",
|
||||
"cardMorePopup-title": "Lainnya",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Daftar Kartu",
|
||||
"cards-count": "Daftar Kartu",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Tingkat dasar",
|
||||
"welcome-list2": "Tingkat lanjut",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Apa yang mau Anda lakukan?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Aha",
|
||||
"cardMembersPopup-title": "Ndị otu",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
+154
-148
@@ -32,7 +32,7 @@
|
||||
"activity-archived": "%s spostato nell'archivio",
|
||||
"activity-attached": "allegato %s a %s",
|
||||
"activity-created": "creato %s",
|
||||
"activity-customfield-created": "Campo personalizzato creato",
|
||||
"activity-customfield-created": "%s creato come campo personalizzato",
|
||||
"activity-excluded": "escluso %s da %s",
|
||||
"activity-imported": "importato %s in %s da %s",
|
||||
"activity-imported-board": "importato %s da %s",
|
||||
@@ -47,19 +47,19 @@
|
||||
"activity-unchecked-item": "disattivato %s nella checklist %s di %s",
|
||||
"activity-checklist-added": "aggiunta checklist a %s",
|
||||
"activity-checklist-removed": "È stata rimossa una checklist da%s",
|
||||
"activity-checklist-completed": "completed the checklist %s of %s",
|
||||
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
|
||||
"activity-checklist-completed": "Completata la checklist %s di %s",
|
||||
"activity-checklist-uncompleted": "La checklist non è stata completata",
|
||||
"activity-checklist-item-added": "Aggiunto l'elemento checklist a '%s' in %s",
|
||||
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
|
||||
"activity-checklist-item-removed": "è stato rimosso un elemento della checklist da '%s' in %s",
|
||||
"add": "Aggiungere",
|
||||
"activity-checked-item-card": "checked %s in checklist %s",
|
||||
"activity-unchecked-item-card": "unchecked %s in checklist %s",
|
||||
"activity-checklist-completed-card": "completed the checklist %s",
|
||||
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
|
||||
"activity-checked-item-card": "%s è stato selezionato nella checklist %s",
|
||||
"activity-unchecked-item-card": "%s è stato deselezionato nella checklist %s",
|
||||
"activity-checklist-completed-card": "completata la checklist %s",
|
||||
"activity-checklist-uncompleted-card": "La checklist %s non è completa",
|
||||
"add-attachment": "Aggiungi Allegato",
|
||||
"add-board": "Aggiungi Bacheca",
|
||||
"add-card": "Aggiungi Scheda",
|
||||
"add-swimlane": "Aggiungi Corsia",
|
||||
"add-swimlane": "Aggiungi Diagramma Swimlane",
|
||||
"add-subtask": "Aggiungi sotto-compito",
|
||||
"add-checklist": "Aggiungi Checklist",
|
||||
"add-checklist-item": "Aggiungi un elemento alla checklist",
|
||||
@@ -78,20 +78,22 @@
|
||||
"and-n-other-card": "E __count__ altra scheda",
|
||||
"and-n-other-card_plural": "E __count__ altre schede",
|
||||
"apply": "Applica",
|
||||
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
|
||||
"archive": "Move to Archive",
|
||||
"archive-all": "Move All to Archive",
|
||||
"archive-board": "Move Board to Archive",
|
||||
"archive-card": "Move Card to Archive",
|
||||
"archive-list": "Move List to Archive",
|
||||
"archive-swimlane": "Move Swimlane to Archive",
|
||||
"archive-selection": "Move selection to Archive",
|
||||
"archiveBoardPopup-title": "Move Board to Archive?",
|
||||
"app-is-offline": "Caricamento, attendere prego. Aggiornare la pagina porterà ad una perdita dei dati. Se il caricamento non dovesse funzionare, per favore controlla che il server non sia stato fermato.",
|
||||
"archive": "Sposta nell'Archivio",
|
||||
"archive-all": "Sposta tutto nell'Archivio",
|
||||
"archive-board": "Sposta la bacheca nell'Archivio",
|
||||
"archive-card": "Sposta la scheda nell'Archivio",
|
||||
"archive-list": "Sposta elenco nell'Archivio",
|
||||
"archive-swimlane": "Sposta diagramma nell'Archivio",
|
||||
"archive-selection": "Sposta la selezione nell'archivio",
|
||||
"archiveBoardPopup-title": "Spostare al bacheca nell'archivio?",
|
||||
"archived-items": "Archivia",
|
||||
"archived-boards": "Boards in Archive",
|
||||
"archived-boards": "Bacheche nell'archivio",
|
||||
"restore-board": "Ripristina Bacheca",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"no-archived-boards": "Nessuna bacheca presente nell'archivio",
|
||||
"archives": "Archivia",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Aggiungi membro",
|
||||
"attached": "allegato",
|
||||
"attachment": "Allegato",
|
||||
@@ -114,16 +116,16 @@
|
||||
"boards": "Bacheche",
|
||||
"board-view": "Visualizza bacheca",
|
||||
"board-view-cal": "Calendario",
|
||||
"board-view-swimlanes": "Corsie",
|
||||
"board-view-swimlanes": "Diagramma Swimlane",
|
||||
"board-view-lists": "Liste",
|
||||
"bucket-example": "Per esempio come \"una lista di cose da fare\"",
|
||||
"cancel": "Cancella",
|
||||
"card-archived": "This card is moved to Archive.",
|
||||
"board-archived": "This board is moved to Archive.",
|
||||
"card-archived": "Questa scheda è stata spostata nell'archivio",
|
||||
"board-archived": "Questa bacheca è stata spostata nell'archivio",
|
||||
"card-comments-title": "Questa scheda ha %s commenti.",
|
||||
"card-delete-notice": "L'eliminazione è permanente. Tutte le azioni associate a questa scheda andranno perse.",
|
||||
"card-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di riaprire la scheda. Non potrai tornare indietro.",
|
||||
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
|
||||
"card-delete-suggest-archive": "Puoi spostare una scheda nell'archivio per rimuoverla dalla bacheca e mantenere la sua attività",
|
||||
"card-due": "Scadenza",
|
||||
"card-due-on": "Scade",
|
||||
"card-spent": "Tempo trascorso",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etichette",
|
||||
"cardMembersPopup-title": "Membri",
|
||||
"cardMorePopup-title": "Altro",
|
||||
"cardTemplatePopup-title": "Crea un template",
|
||||
"cards": "Schede",
|
||||
"cards-count": "Schede",
|
||||
"casSignIn": "Entra con CAS",
|
||||
@@ -166,33 +169,33 @@
|
||||
"clipboard": "Clipboard o drag & drop",
|
||||
"close": "Chiudi",
|
||||
"close-board": "Chiudi bacheca",
|
||||
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
|
||||
"close-board-pop": "Potrai ripristinare la bacheca cliccando sul tasto \"Archivio\" presente nell'intestazione della home.",
|
||||
"color-black": "nero",
|
||||
"color-blue": "blu",
|
||||
"color-crimson": "crimson",
|
||||
"color-darkgreen": "darkgreen",
|
||||
"color-gold": "gold",
|
||||
"color-gray": "gray",
|
||||
"color-crimson": "Rosso cremisi",
|
||||
"color-darkgreen": "Verde scuro",
|
||||
"color-gold": "Dorato",
|
||||
"color-gray": "Grigio",
|
||||
"color-green": "verde",
|
||||
"color-indigo": "indigo",
|
||||
"color-indigo": "Indaco",
|
||||
"color-lime": "lime",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "mistyrose",
|
||||
"color-navy": "navy",
|
||||
"color-magenta": "Magenta",
|
||||
"color-mistyrose": "Mistyrose",
|
||||
"color-navy": "Navy",
|
||||
"color-orange": "arancione",
|
||||
"color-paleturquoise": "paleturquoise",
|
||||
"color-peachpuff": "peachpuff",
|
||||
"color-paleturquoise": "Turchese chiaro",
|
||||
"color-peachpuff": "Pesca",
|
||||
"color-pink": "rosa",
|
||||
"color-plum": "plum",
|
||||
"color-plum": "Prugna",
|
||||
"color-purple": "viola",
|
||||
"color-red": "rosso",
|
||||
"color-saddlebrown": "saddlebrown",
|
||||
"color-silver": "silver",
|
||||
"color-saddlebrown": "Saddlebrown",
|
||||
"color-silver": "Argento",
|
||||
"color-sky": "azzurro",
|
||||
"color-slateblue": "slateblue",
|
||||
"color-white": "white",
|
||||
"color-slateblue": "Ardesia",
|
||||
"color-white": "Bianco",
|
||||
"color-yellow": "giallo",
|
||||
"unset-color": "Unset",
|
||||
"unset-color": "Non impostato",
|
||||
"comment": "Commento",
|
||||
"comment-placeholder": "Scrivi Commento",
|
||||
"comment-only": "Solo commenti",
|
||||
@@ -220,7 +223,7 @@
|
||||
"custom-field-checkbox": "Casella di scelta",
|
||||
"custom-field-date": "Data",
|
||||
"custom-field-dropdown": "Lista a discesa",
|
||||
"custom-field-dropdown-none": "(nessun)",
|
||||
"custom-field-dropdown-none": "(niente)",
|
||||
"custom-field-dropdown-options": "Lista opzioni",
|
||||
"custom-field-dropdown-options-placeholder": "Premi invio per aggiungere altre opzioni",
|
||||
"custom-field-dropdown-unknown": "(sconosciuto)",
|
||||
@@ -299,20 +302,20 @@
|
||||
"import-board": "Importa bacheca",
|
||||
"import-board-c": "Importa bacheca",
|
||||
"import-board-title-trello": "Importa una bacheca da Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
|
||||
"import-board-title-wekan": "Importa bacheca dall'esportazione precedente",
|
||||
"import-sandstorm-backup-warning": "Non cancellare i dati che importi dalla bacheca esportata in origine o da Trello prima che il controllo finisca e si riapra ancora, altrimenti otterrai un messaggio di errore Bacheca non trovata, che significa che i dati sono perduti.",
|
||||
"import-sandstorm-warning": "La bacheca importata cancellerà tutti i dati esistenti su questa bacheca e li rimpiazzerà con quelli della bacheca importata.",
|
||||
"from-trello": "Da Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-wekan": "Dall'esportazione precedente",
|
||||
"import-board-instruction-trello": "Nella tua bacheca Trello vai a 'Menu', poi 'Altro', 'Stampa ed esporta', 'Esporta JSON', e copia il testo che compare.",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-board-instruction-wekan": "Nella tua bacheca vai su \"Menu\", poi \"Esporta la bacheca\", e copia il testo nel file scaricato",
|
||||
"import-board-instruction-about-errors": "Se hai degli errori quando importi una bacheca, qualche volta l'importazione funziona comunque, e la bacheca si trova nella pagina \"Tutte le bacheche\"",
|
||||
"import-json-placeholder": "Incolla un JSON valido qui",
|
||||
"import-map-members": "Mappatura dei membri",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-members-map": "La bacheca che hai importato contiene alcuni membri. Per favore scegli i membri che vuoi importare tra i tuoi utenti",
|
||||
"import-show-user-mapping": "Rivedi la mappatura dei membri",
|
||||
"import-user-select": "Pick your existing user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Select member",
|
||||
"import-user-select": "Scegli l'utente che vuoi venga utilizzato come questo membro",
|
||||
"importMapMembersAddPopup-title": "Scegli membro",
|
||||
"info": "Versione",
|
||||
"initials": "Iniziali",
|
||||
"invalid-date": "Data non valida",
|
||||
@@ -331,21 +334,21 @@
|
||||
"leave-board-pop": "Sei sicuro di voler abbandonare __boardTitle__? Sarai rimosso da tutte le schede in questa bacheca.",
|
||||
"leaveBoardPopup-title": "Abbandona Bacheca?",
|
||||
"link-card": "Link a questa scheda",
|
||||
"list-archive-cards": "Move all cards in this list to Archive",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
|
||||
"list-archive-cards": "Sposta tutte le schede in questo elenco nell'Archivio",
|
||||
"list-archive-cards-pop": "Questo rimuoverà tutte le schede nell'elenco dalla bacheca. Per vedere le schede nell'archivio e portarle dov'erano nella bacheca, clicca su \"Menu\" > \"Archivio\". ",
|
||||
"list-move-cards": "Sposta tutte le schede in questa lista",
|
||||
"list-select-cards": "Selezione tutte le schede in questa lista",
|
||||
"set-color-list": "Set Color",
|
||||
"set-color-list": "Imposta un colore",
|
||||
"listActionPopup-title": "Azioni disponibili",
|
||||
"swimlaneActionPopup-title": "Azioni corsia",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"swimlaneActionPopup-title": "Azioni diagramma Swimlane",
|
||||
"swimlaneAddPopup-title": "Aggiungi un diagramma Swimlane di seguito",
|
||||
"listImportCardPopup-title": "Importa una scheda di Trello",
|
||||
"listMorePopup-title": "Altro",
|
||||
"link-list": "Link a questa lista",
|
||||
"list-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di recuperare la lista. Non potrai tornare indietro.",
|
||||
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
|
||||
"list-delete-suggest-archive": "Puoi spostare un elenco nell'archivio per rimuoverlo dalla bacheca e mantentere la sua attività.",
|
||||
"lists": "Liste",
|
||||
"swimlanes": "Corsie",
|
||||
"swimlanes": "Diagramma Swimlane",
|
||||
"log-out": "Log Out",
|
||||
"log-in": "Log In",
|
||||
"loginPopup-title": "Log In",
|
||||
@@ -363,9 +366,9 @@
|
||||
"muted-info": "Non sarai mai notificato delle modifiche in questa bacheca",
|
||||
"my-boards": "Le mie bacheche",
|
||||
"name": "Nome",
|
||||
"no-archived-cards": "No cards in Archive.",
|
||||
"no-archived-lists": "No lists in Archive.",
|
||||
"no-archived-swimlanes": "No swimlanes in Archive.",
|
||||
"no-archived-cards": "Non ci sono schede nell'archivio.",
|
||||
"no-archived-lists": "Non ci sono elenchi nell'archivio.",
|
||||
"no-archived-swimlanes": "Non ci sono diagrammi Swimlane nell'archivio.",
|
||||
"no-results": "Nessun risultato",
|
||||
"normal": "Normale",
|
||||
"normal-desc": "Può visionare e modificare le schede. Non può cambiare le impostazioni.",
|
||||
@@ -401,7 +404,7 @@
|
||||
"restore": "Ripristina",
|
||||
"save": "Salva",
|
||||
"search": "Cerca",
|
||||
"rules": "Rules",
|
||||
"rules": "Regole",
|
||||
"search-cards": "Ricerca per titolo e descrizione scheda su questa bacheca",
|
||||
"search-example": "Testo da ricercare?",
|
||||
"select-color": "Seleziona Colore",
|
||||
@@ -445,7 +448,7 @@
|
||||
"uploaded-avatar": "Avatar caricato",
|
||||
"username": "Username",
|
||||
"view-it": "Vedi",
|
||||
"warn-list-archived": "warning: this card is in an list at Archive",
|
||||
"warn-list-archived": "Attenzione:questa scheda si trova in un elenco dell'archivio",
|
||||
"watch": "Segui",
|
||||
"watching": "Stai seguendo",
|
||||
"watching-info": "Sarai notificato per tutte le modifiche in questa bacheca",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Pietra miliare 1",
|
||||
"welcome-list1": "Basi",
|
||||
"welcome-list2": "Avanzate",
|
||||
"card-templates-swimlane": "Template scheda",
|
||||
"list-templates-swimlane": "Elenca i template",
|
||||
"board-templates-swimlane": "Bacheca dei template",
|
||||
"what-to-do": "Cosa vuoi fare?",
|
||||
"wipLimitErrorPopup-title": "Limite work in progress non valido. ",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Il numero di compiti in questa lista è maggiore del limite di work in progress che hai definito in precedenza. ",
|
||||
@@ -464,7 +470,7 @@
|
||||
"disable-self-registration": "Disabilita Auto-registrazione",
|
||||
"invite": "Invita",
|
||||
"invite-people": "Invita persone",
|
||||
"to-boards": "Alla(e) bacheche(a)",
|
||||
"to-boards": "Alla(e) bacheca",
|
||||
"email-addresses": "Indirizzi email",
|
||||
"smtp-host-description": "L'indirizzo del server SMTP che gestisce le tue email.",
|
||||
"smtp-port-description": "La porta che il tuo server SMTP utilizza per le email in uscita.",
|
||||
@@ -478,14 +484,14 @@
|
||||
"send-smtp-test": "Invia un'email di test a te stesso",
|
||||
"invitation-code": "Codice d'invito",
|
||||
"email-invite-register-subject": "__inviter__ ti ha inviato un invito",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email",
|
||||
"email-invite-register-text": "Gentile __user__,\n\n__inviter__ ti ha invitato a partecipare a questa bacheca kanban per collaborare.\n\nPer favore segui il collegamento qui sotto:\n__url__\n\nIl tuo codice di invito è: __icode__\n\nGrazie.",
|
||||
"email-smtp-test-subject": "E-Mail di prova SMTP",
|
||||
"email-smtp-test-text": "Hai inviato un'email con successo",
|
||||
"error-invitation-code-not-exist": "Il codice d'invito non esiste",
|
||||
"error-notAuthorized": "Non sei autorizzato ad accedere a questa pagina.",
|
||||
"outgoing-webhooks": "Server esterni",
|
||||
"outgoingWebhooksPopup-title": "Server esterni",
|
||||
"boardCardTitlePopup-title": "Card Title Filter",
|
||||
"boardCardTitlePopup-title": "Filtro per Titolo Scheda",
|
||||
"new-outgoing-webhook": "Nuovo webhook in uscita",
|
||||
"no-name": "(Sconosciuto)",
|
||||
"Node_version": "Versione di Node",
|
||||
@@ -498,13 +504,13 @@
|
||||
"OS_Totalmem": "Memoria totale del sistema operativo ",
|
||||
"OS_Type": "Tipo di sistema operativo ",
|
||||
"OS_Uptime": "Tempo di attività del sistema operativo. ",
|
||||
"days": "days",
|
||||
"days": "giorni",
|
||||
"hours": "ore",
|
||||
"minutes": "minuti",
|
||||
"seconds": "secondi",
|
||||
"show-field-on-card": "Visualizza questo campo sulla scheda",
|
||||
"automatically-field-on-card": "Auto create field to all cards",
|
||||
"showLabel-field-on-card": "Show field label on minicard",
|
||||
"automatically-field-on-card": "Crea automaticamente i campi per tutte le schede",
|
||||
"showLabel-field-on-card": "Mostra l'etichetta di campo su minischeda",
|
||||
"yes": "Sì",
|
||||
"no": "No",
|
||||
"accounts": "Profili",
|
||||
@@ -519,10 +525,10 @@
|
||||
"card-end-on": "Termina il",
|
||||
"editCardReceivedDatePopup-title": "Cambia data ricezione",
|
||||
"editCardEndDatePopup-title": "Cambia data finale",
|
||||
"setCardColorPopup-title": "Set color",
|
||||
"setCardActionsColorPopup-title": "Choose a color",
|
||||
"setSwimlaneColorPopup-title": "Choose a color",
|
||||
"setListColorPopup-title": "Choose a color",
|
||||
"setCardColorPopup-title": "Imposta il colore",
|
||||
"setCardActionsColorPopup-title": "Scegli un colore",
|
||||
"setSwimlaneColorPopup-title": "Scegli un colore",
|
||||
"setListColorPopup-title": "Scegli un colore",
|
||||
"assigned-by": "Assegnato da",
|
||||
"requested-by": "Richiesto da",
|
||||
"board-delete-notice": "L'eliminazione è permanente. Tutte le azioni, liste e schede associate a questa bacheca andranno perse.",
|
||||
@@ -546,89 +552,89 @@
|
||||
"parent-card": "Scheda genitore",
|
||||
"source-board": "Bacheca d'origine",
|
||||
"no-parent": "Non mostrare i genitori",
|
||||
"activity-added-label": "added label '%s' to %s",
|
||||
"activity-removed-label": "removed label '%s' from %s",
|
||||
"activity-delete-attach": "deleted an attachment from %s",
|
||||
"activity-added-label": "L' etichetta '%s' è stata aggiunta a %s",
|
||||
"activity-removed-label": "L'etichetta '%s' è stata rimossa da %s",
|
||||
"activity-delete-attach": "Rimosso un allegato da %s",
|
||||
"activity-added-label-card": "aggiunta etichetta '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-removed-label-card": "L' etichetta '%s' è stata rimossa.",
|
||||
"activity-delete-attach-card": "Cancella un allegato",
|
||||
"r-rule": "Ruolo",
|
||||
"r-add-trigger": "Aggiungi trigger",
|
||||
"r-add-action": "Aggiungi azione",
|
||||
"r-board-rules": "Regole del cruscotto",
|
||||
"r-board-rules": "Regole della bacheca",
|
||||
"r-add-rule": "Aggiungi regola",
|
||||
"r-view-rule": "Visualizza regola",
|
||||
"r-delete-rule": "Cancella regola",
|
||||
"r-new-rule-name": "Titolo nuova regola",
|
||||
"r-no-rules": "Nessuna regola",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-when-a-card": "Quando una scheda",
|
||||
"r-is": "è",
|
||||
"r-is-moved": "viene spostata",
|
||||
"r-added-to": "Aggiunto/a a ",
|
||||
"r-removed-from": "Rimosso da",
|
||||
"r-the-board": "Il cruscotto",
|
||||
"r-the-board": "La bacheca",
|
||||
"r-list": "lista",
|
||||
"set-filter": "Set Filter",
|
||||
"r-moved-to": "Moved to",
|
||||
"r-moved-from": "Moved from",
|
||||
"r-archived": "Moved to Archive",
|
||||
"r-unarchived": "Restored from Archive",
|
||||
"r-a-card": "a card",
|
||||
"r-when-a-label-is": "When a label is",
|
||||
"r-when-the-label-is": "When the label is",
|
||||
"r-list-name": "list name",
|
||||
"r-when-a-member": "When a member is",
|
||||
"r-when-the-member": "When the member",
|
||||
"r-name": "name",
|
||||
"r-when-a-attach": "When an attachment",
|
||||
"r-when-a-checklist": "When a checklist is",
|
||||
"r-when-the-checklist": "When the checklist",
|
||||
"r-completed": "Completed",
|
||||
"r-made-incomplete": "Made incomplete",
|
||||
"r-when-a-item": "When a checklist item is",
|
||||
"r-when-the-item": "When the checklist item",
|
||||
"r-checked": "Checked",
|
||||
"r-unchecked": "Unchecked",
|
||||
"r-move-card-to": "Move card to",
|
||||
"r-top-of": "Top of",
|
||||
"r-bottom-of": "Bottom of",
|
||||
"r-its-list": "its list",
|
||||
"r-archive": "Move to Archive",
|
||||
"r-unarchive": "Restore from Archive",
|
||||
"r-card": "card",
|
||||
"set-filter": "Imposta un filtro",
|
||||
"r-moved-to": "Spostato/a a ",
|
||||
"r-moved-from": "Spostato/a da",
|
||||
"r-archived": "Spostato/a nell'archivio",
|
||||
"r-unarchived": "Ripristinato/a dall'archivio",
|
||||
"r-a-card": "una scheda",
|
||||
"r-when-a-label-is": "Quando un'etichetta viene",
|
||||
"r-when-the-label-is": "Quando l'etichetta viene",
|
||||
"r-list-name": "Nome dell'elenco",
|
||||
"r-when-a-member": "Quando un membro viene",
|
||||
"r-when-the-member": "Quando un membro viene",
|
||||
"r-name": "nome",
|
||||
"r-when-a-attach": "Quando un allegato",
|
||||
"r-when-a-checklist": "Quando una checklist è",
|
||||
"r-when-the-checklist": "Quando la checklist",
|
||||
"r-completed": "Completato/a",
|
||||
"r-made-incomplete": "Rendi incompleto",
|
||||
"r-when-a-item": "Quando un elemento della checklist è",
|
||||
"r-when-the-item": "Quando un elemento della checklist",
|
||||
"r-checked": "Selezionato",
|
||||
"r-unchecked": "Deselezionato",
|
||||
"r-move-card-to": "Sposta scheda a",
|
||||
"r-top-of": "Al di sopra di",
|
||||
"r-bottom-of": "Al di sotto di",
|
||||
"r-its-list": "il suo elenco",
|
||||
"r-archive": "Sposta nell'Archivio",
|
||||
"r-unarchive": "Ripristina dall'archivio",
|
||||
"r-card": "scheda",
|
||||
"r-add": "Aggiungere",
|
||||
"r-remove": "Remove",
|
||||
"r-label": "label",
|
||||
"r-member": "member",
|
||||
"r-remove-all": "Remove all members from the card",
|
||||
"r-set-color": "Set color to",
|
||||
"r-remove": "Rimuovi",
|
||||
"r-label": "etichetta",
|
||||
"r-member": "membro",
|
||||
"r-remove-all": "Rimuovi tutti i membri dalla scheda",
|
||||
"r-set-color": "Imposta il colore a",
|
||||
"r-checklist": "checklist",
|
||||
"r-check-all": "Check all",
|
||||
"r-uncheck-all": "Uncheck all",
|
||||
"r-items-check": "items of checklist",
|
||||
"r-check": "Check",
|
||||
"r-uncheck": "Uncheck",
|
||||
"r-item": "item",
|
||||
"r-check-all": "Spunta tutti",
|
||||
"r-uncheck-all": "Togli la spunta a tutti",
|
||||
"r-items-check": "Elementi della checklist",
|
||||
"r-check": "Spunta",
|
||||
"r-uncheck": "Togli la spunta",
|
||||
"r-item": "elemento",
|
||||
"r-of-checklist": "della lista di cose da fare",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-send-email": "Invia un e-mail",
|
||||
"r-to": "a",
|
||||
"r-subject": "soggetto",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
"r-d-move-to-top-spec": "Move card to top of list",
|
||||
"r-rule-details": "Dettagli della regola",
|
||||
"r-d-move-to-top-gen": "Sposta la scheda al di sopra del suo elenco",
|
||||
"r-d-move-to-top-spec": "Sposta la scheda la di sopra dell'elenco",
|
||||
"r-d-move-to-bottom-gen": "Sposta la scheda in fondo alla sua lista",
|
||||
"r-d-move-to-bottom-spec": "Muovi la scheda in fondo alla lista",
|
||||
"r-d-send-email": "Spedisci email",
|
||||
"r-d-send-email-to": "to",
|
||||
"r-d-send-email-to": "a",
|
||||
"r-d-send-email-subject": "soggetto",
|
||||
"r-d-send-email-message": "Messaggio",
|
||||
"r-d-archive": "Move card to Archive",
|
||||
"r-d-unarchive": "Restore card from Archive",
|
||||
"r-d-archive": "Sposta la scheda nell'archivio",
|
||||
"r-d-unarchive": "Ripristina la scheda dall'archivio",
|
||||
"r-d-add-label": "Aggiungi etichetta",
|
||||
"r-d-remove-label": "Rimuovi Etichetta",
|
||||
"r-create-card": "Create new card",
|
||||
"r-in-list": "in list",
|
||||
"r-in-swimlane": "in swimlane",
|
||||
"r-create-card": "Crea una nuova scheda",
|
||||
"r-in-list": "in elenco",
|
||||
"r-in-swimlane": "nel diagramma swimlane",
|
||||
"r-d-add-member": "Aggiungi membro",
|
||||
"r-d-remove-member": "Rimuovi membro",
|
||||
"r-d-remove-all-member": "Rimouvi tutti i membri",
|
||||
@@ -639,27 +645,27 @@
|
||||
"r-d-check-of-list": "della lista di cose da fare",
|
||||
"r-d-add-checklist": "Aggiungi lista di cose da fare",
|
||||
"r-d-remove-checklist": "Rimuovi check list",
|
||||
"r-by": "by",
|
||||
"r-by": "da",
|
||||
"r-add-checklist": "Aggiungi lista di cose da fare",
|
||||
"r-with-items": "with items",
|
||||
"r-items-list": "item1,item2,item3",
|
||||
"r-add-swimlane": "Add swimlane",
|
||||
"r-swimlane-name": "swimlane name",
|
||||
"r-board-note": "Note: leave a field empty to match every possible value.",
|
||||
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
||||
"r-with-items": "con elementi",
|
||||
"r-items-list": "elemento1,elemento2,elemento3",
|
||||
"r-add-swimlane": "Aggiungi un diagramma swimlane",
|
||||
"r-swimlane-name": "Nome diagramma swimlane",
|
||||
"r-board-note": "Nota: Lascia un campo vuoto per abbinare ogni possibile valore",
|
||||
"r-checklist-note": "Nota: Gli elementi della checklist devono essere scritti come valori separati dalla virgola",
|
||||
"r-when-a-card-is-moved": "Quando una scheda viene spostata su un'altra lista",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "Oauth2",
|
||||
"cas": "CAS",
|
||||
"authentication-method": "Metodo di Autenticazione",
|
||||
"authentication-type": "Tipo Autenticazione",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"custom-product-name": "Personalizza il nome del prodotto",
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Hide Logo",
|
||||
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
|
||||
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
|
||||
"error-undefined": "Something went wrong",
|
||||
"error-ldap-login": "An error occurred while trying to login",
|
||||
"display-authentication-method": "Display Authentication Method",
|
||||
"default-authentication-method": "Default Authentication Method"
|
||||
"hide-logo": "Nascondi il logo",
|
||||
"add-custom-html-after-body-start": "Aggiungi codice HTML personalizzato dopo <body> inzio",
|
||||
"add-custom-html-before-body-end": "Aggiunti il codice HTML prima di </body> fine",
|
||||
"error-undefined": "Qualcosa è andato storto",
|
||||
"error-ldap-login": "C'è stato un errore mentre provavi ad effettuare il login",
|
||||
"display-authentication-method": "Mostra il metodo di autenticazione",
|
||||
"default-authentication-method": "Metodo di autenticazione predefinito"
|
||||
}
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "ボードをリストア",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "アーカイブ",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "メンバーの割当",
|
||||
"attached": "添付されました",
|
||||
"attachment": "添付ファイル",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "ラベル",
|
||||
"cardMembersPopup-title": "メンバー",
|
||||
"cardMorePopup-title": "さらに見る",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "カード",
|
||||
"cards-count": "カード",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "基本",
|
||||
"welcome-list2": "高度",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "何をしたいですか?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "ბარათის აღდგენა",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "უფლებამოსილი წევრი",
|
||||
"attached": "მიბმული",
|
||||
"attachment": "მიბმული ფიალი",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "ნიშნები",
|
||||
"cardMembersPopup-title": "წევრები",
|
||||
"cardMorePopup-title": "მეტი",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "ბარათები",
|
||||
"cards-count": "ბარათები",
|
||||
"casSignIn": "შესვლა CAS-ით",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "ეტაპი 1 ",
|
||||
"welcome-list1": "ბაზისური ",
|
||||
"welcome-list2": "დაწინაურებული",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "რისი გაკეთება გსურთ? ",
|
||||
"wipLimitErrorPopup-title": "არასწორი WIP ლიმიტი",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "보드 복구",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "보관",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "멤버 지정",
|
||||
"attached": "첨부됨",
|
||||
"attachment": "첨부 파일",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "라벨",
|
||||
"cardMembersPopup-title": "멤버",
|
||||
"cardMorePopup-title": "더보기",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "카드",
|
||||
"cards-count": "카드",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "신규",
|
||||
"welcome-list2": "진행",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "무엇을 하고 싶으신가요?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Възстанови Таблото",
|
||||
"no-archived-boards": "Няма Табла в Архива.",
|
||||
"archives": "Архив",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Възложи на член от екипа",
|
||||
"attached": "прикачен",
|
||||
"attachment": "Прикаченн файл",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Етикети",
|
||||
"cardMembersPopup-title": "Членове",
|
||||
"cardMorePopup-title": "Още",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Карти",
|
||||
"cards-count": "Карти",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Невалиден WIP лимит",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Гишүүд",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Arkiv",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Tildel medlem",
|
||||
"attached": "la ved",
|
||||
"attachment": "Vedlegg",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiketter",
|
||||
"cardMembersPopup-title": "Medlemmer",
|
||||
"cardMorePopup-title": "Mer",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Kort",
|
||||
"cards-count": "Kort",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Herstel Bord",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archiveren",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Wijs lid aan",
|
||||
"attached": "bijgevoegd",
|
||||
"attachment": "Bijlage",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Leden",
|
||||
"cardMorePopup-title": "Meer",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Kaarten",
|
||||
"cards-count": "Kaarten",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Mijlpaal 1",
|
||||
"welcome-list1": "Basis",
|
||||
"welcome-list2": "Geadvanceerd",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Wat wil je doen?",
|
||||
"wipLimitErrorPopup-title": "Ongeldige WIP limiet",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Het aantal taken in deze lijst is groter dan de gedefinieerde WIP limiet ",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Przywróć tablicę",
|
||||
"no-archived-boards": "Brak tablic w Archiwum.",
|
||||
"archives": "Zarchiwizuj",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Dodaj członka",
|
||||
"attached": "załączono",
|
||||
"attachment": "Załącznik",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etykiety",
|
||||
"cardMembersPopup-title": "Członkowie",
|
||||
"cardMorePopup-title": "Więcej",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Karty",
|
||||
"cards-count": "Karty",
|
||||
"casSignIn": "Zaloguj się poprzez CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Kamień milowy 1",
|
||||
"welcome-list1": "Podstawy",
|
||||
"welcome-list2": "Zaawansowane",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Co chcesz zrobić?",
|
||||
"wipLimitErrorPopup-title": "Nieprawidłowy limit kart na liście",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Aktualna ilość kart na tej liście jest większa niż aktualny zdefiniowany limit kart.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restaurar Quadro",
|
||||
"no-archived-boards": "Sem Quadros no Arquivo-morto.",
|
||||
"archives": "Arquivos-morto",
|
||||
"template": "Modelo",
|
||||
"templates": "Modelos",
|
||||
"assign-member": "Atribuir Membro",
|
||||
"attached": "anexado",
|
||||
"attachment": "Anexo",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Membros",
|
||||
"cardMorePopup-title": "Mais",
|
||||
"cardTemplatePopup-title": "Criar Modelo",
|
||||
"cards": "Cartões",
|
||||
"cards-count": "Cartões",
|
||||
"casSignIn": "Entrar com CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Marco 1",
|
||||
"welcome-list1": "Básico",
|
||||
"welcome-list2": "Avançado",
|
||||
"card-templates-swimlane": "Modelos de cartão",
|
||||
"list-templates-swimlane": "Modelos de lista",
|
||||
"board-templates-swimlane": "Modelos de quadro",
|
||||
"what-to-do": "O que você gostaria de fazer?",
|
||||
"wipLimitErrorPopup-title": "Limite WIP Inválido",
|
||||
"wipLimitErrorPopup-dialog-pt1": "O número de tarefas nesta lista excede o limite WIP definido.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Membros",
|
||||
"cardMorePopup-title": "Mais",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cartões",
|
||||
"cards-count": "Cartões",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Ataşament",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Ce ai vrea sa faci?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Востановить доску",
|
||||
"no-archived-boards": "Нет досок в архиве.",
|
||||
"archives": "Архив",
|
||||
"template": "Шаблон",
|
||||
"templates": "Шаблоны",
|
||||
"assign-member": "Назначить участника",
|
||||
"attached": "прикреплено",
|
||||
"attachment": "Вложение",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Метки",
|
||||
"cardMembersPopup-title": "Участники",
|
||||
"cardMorePopup-title": "Поделиться",
|
||||
"cardTemplatePopup-title": "Создать шаблон",
|
||||
"cards": "Карточки",
|
||||
"cards-count": "Карточки",
|
||||
"casSignIn": "Войти через CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Этап 1",
|
||||
"welcome-list1": "Основы",
|
||||
"welcome-list2": "Расширенно",
|
||||
"card-templates-swimlane": "Шаблоны карточек",
|
||||
"list-templates-swimlane": "Шаблоны списков",
|
||||
"board-templates-swimlane": "Шаблоны досок",
|
||||
"what-to-do": "Что вы хотите сделать?",
|
||||
"wipLimitErrorPopup-title": "Некорректный лимит на кол-во задач",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Количество задач в этом списке превышает установленный вами лимит",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Arhiviraj",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Dodeli člana",
|
||||
"attached": "Prikačeno",
|
||||
"attachment": "Prikačeni dokument",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Članovi",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Osnove",
|
||||
"welcome-list2": "Napredno",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Šta želiš da uradiš ?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Återställ anslagstavla",
|
||||
"no-archived-boards": "Inga anslagstavlor i Arkiv.",
|
||||
"archives": "Arkiv",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Tilldela medlem",
|
||||
"attached": "bifogad",
|
||||
"attachment": "Bilaga",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiketter",
|
||||
"cardMembersPopup-title": "Medlemmar",
|
||||
"cardMorePopup-title": "Mera",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Kort",
|
||||
"cards-count": "Kort",
|
||||
"casSignIn": "Logga in med CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milstolpe 1",
|
||||
"welcome-list1": "Grunderna",
|
||||
"welcome-list2": "Avancerad",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Vad vill du göra?",
|
||||
"wipLimitErrorPopup-title": "Ogiltig WIP-gräns",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Antalet uppgifter i den här listan är högre än WIP-gränsen du har definierat.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
+63
-57
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"accept": "ஏற்றுக்கொள்",
|
||||
"act-activity-notify": "Activity Notification",
|
||||
"act-addAttachment": "attached __attachment__ to __card__",
|
||||
"act-addSubtask": "added subtask __checklist__ to __card__",
|
||||
@@ -31,17 +31,17 @@
|
||||
"activity-added": "added %s to %s",
|
||||
"activity-archived": "%s moved to Archive",
|
||||
"activity-attached": "attached %s to %s",
|
||||
"activity-created": "created %s",
|
||||
"activity-created": "உருவாக்கப்பட்டது ",
|
||||
"activity-customfield-created": "created custom field %s",
|
||||
"activity-excluded": "excluded %s from %s",
|
||||
"activity-imported": "imported %s into %s from %s",
|
||||
"activity-imported-board": "imported %s from %s",
|
||||
"activity-joined": "joined %s",
|
||||
"activity-joined": "சேர்ந்தது ",
|
||||
"activity-moved": "moved %s from %s to %s",
|
||||
"activity-on": "on %s",
|
||||
"activity-removed": "removed %s from %s",
|
||||
"activity-sent": "sent %s to %s",
|
||||
"activity-unjoined": "unjoined %s",
|
||||
"activity-unjoined": "பிரிக்கப்பட்டது ",
|
||||
"activity-subtask-added": "added subtask to %s",
|
||||
"activity-checked-item": "checked %s in checklist %s of %s",
|
||||
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
|
||||
@@ -51,7 +51,7 @@
|
||||
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
|
||||
"activity-checklist-item-added": "added checklist item to '%s' in %s",
|
||||
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
|
||||
"add": "Add",
|
||||
"add": "சேர் ",
|
||||
"activity-checked-item-card": "checked %s in checklist %s",
|
||||
"activity-unchecked-item-card": "unchecked %s in checklist %s",
|
||||
"activity-checklist-completed-card": "completed the checklist %s",
|
||||
@@ -92,16 +92,18 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Archive",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
"attachment": "இணைப்பு ",
|
||||
"attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
|
||||
"attachmentDeletePopup-title": "Delete Attachment?",
|
||||
"attachments": "Attachments",
|
||||
"attachments": "இணைப்புகள் ",
|
||||
"auto-watch": "Automatically watch boards when they are created",
|
||||
"avatar-too-big": "The avatar is too large (70KB max)",
|
||||
"back": "Back",
|
||||
"board-change-color": "Change color",
|
||||
"back": "பின்செல் ",
|
||||
"board-change-color": "நிறம் மாற்று ",
|
||||
"board-nb-stars": "%s stars",
|
||||
"board-not-found": "Board not found",
|
||||
"board-private-info": "This board will be <strong>private</strong>.",
|
||||
@@ -113,7 +115,7 @@
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-cal": "நாள்கட்டி ",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
@@ -142,7 +144,8 @@
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardMorePopup-title": "மேலும் ",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -151,12 +154,12 @@
|
||||
"cardType-linkedBoard": "Linked Board",
|
||||
"change": "Change",
|
||||
"change-avatar": "Change Avatar",
|
||||
"change-password": "Change Password",
|
||||
"change-password": "கடவுச்சொல்லை மாற்று ",
|
||||
"change-permissions": "Change permissions",
|
||||
"change-settings": "Change Settings",
|
||||
"changeAvatarPopup-title": "Change Avatar",
|
||||
"changeLanguagePopup-title": "Change Language",
|
||||
"changePasswordPopup-title": "Change Password",
|
||||
"changePasswordPopup-title": "கடவுச்சொல்லை மாற்றுக ",
|
||||
"changePermissionsPopup-title": "Change Permissions",
|
||||
"changeSettingsPopup-title": "Change Settings",
|
||||
"subtasks": "Subtasks",
|
||||
@@ -170,36 +173,36 @@
|
||||
"color-black": "black",
|
||||
"color-blue": "blue",
|
||||
"color-crimson": "crimson",
|
||||
"color-darkgreen": "darkgreen",
|
||||
"color-gold": "gold",
|
||||
"color-darkgreen": "அடர் பச்சை ",
|
||||
"color-gold": "தங்கம் ",
|
||||
"color-gray": "gray",
|
||||
"color-green": "green",
|
||||
"color-green": "பச்சை ",
|
||||
"color-indigo": "indigo",
|
||||
"color-lime": "lime",
|
||||
"color-lime": "வெளிர் பச்சை ",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "mistyrose",
|
||||
"color-navy": "navy",
|
||||
"color-orange": "orange",
|
||||
"color-orange": "ஆரஞ்சு ",
|
||||
"color-paleturquoise": "paleturquoise",
|
||||
"color-peachpuff": "peachpuff",
|
||||
"color-pink": "pink",
|
||||
"color-plum": "plum",
|
||||
"color-purple": "purple",
|
||||
"color-red": "red",
|
||||
"color-red": "சிகப்பு ",
|
||||
"color-saddlebrown": "saddlebrown",
|
||||
"color-silver": "silver",
|
||||
"color-sky": "sky",
|
||||
"color-silver": "வெள்ளி ",
|
||||
"color-sky": "வாணம் ",
|
||||
"color-slateblue": "slateblue",
|
||||
"color-white": "white",
|
||||
"color-yellow": "yellow",
|
||||
"color-white": "வெள்ளை ",
|
||||
"color-yellow": "மஞ்சள் ",
|
||||
"unset-color": "Unset",
|
||||
"comment": "Comment",
|
||||
"comment": "கருத்து ",
|
||||
"comment-placeholder": "Write Comment",
|
||||
"comment-only": "Comment only",
|
||||
"comment-only": "கருத்து மட்டும் ",
|
||||
"comment-only-desc": "Can comment on cards only.",
|
||||
"no-comments": "No comments",
|
||||
"no-comments": "கருத்து இல்லை ",
|
||||
"no-comments-desc": "Can not see comments and activities.",
|
||||
"computer": "Computer",
|
||||
"computer": "கணினி ",
|
||||
"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",
|
||||
@@ -209,7 +212,7 @@
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"create": "உருவாக்கு ",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
@@ -218,16 +221,16 @@
|
||||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-date": "Date",
|
||||
"custom-field-date": "நாள் ",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
"custom-field-dropdown-options": "List Options",
|
||||
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
|
||||
"custom-field-dropdown-unknown": "(unknown)",
|
||||
"custom-field-number": "Number",
|
||||
"custom-field-number": "எண் ",
|
||||
"custom-field-text": "Text",
|
||||
"custom-fields": "Custom Fields",
|
||||
"date": "Date",
|
||||
"date": "நாள் ",
|
||||
"decline": "Decline",
|
||||
"default-avatar": "Default avatar",
|
||||
"delete": "Delete",
|
||||
@@ -238,8 +241,8 @@
|
||||
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
|
||||
"discard": "Discard",
|
||||
"done": "Done",
|
||||
"download": "Download",
|
||||
"edit": "Edit",
|
||||
"download": "பதிவிறக்கம் ",
|
||||
"edit": "திருத்து ",
|
||||
"edit-avatar": "Change Avatar",
|
||||
"edit-profile": "Edit Profile",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
@@ -251,7 +254,7 @@
|
||||
"editLabelPopup-title": "Change Label",
|
||||
"editNotificationPopup-title": "Edit Notification",
|
||||
"editProfilePopup-title": "Edit Profile",
|
||||
"email": "Email",
|
||||
"email": "மின் அஞ்சல் ",
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Sending email failed",
|
||||
@@ -289,20 +292,20 @@
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Full Name",
|
||||
"fullname": "முழு பெயர் ",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"hide-system-messages": "Hide system messages",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"link": "Link",
|
||||
"home": "தொடக்கம் ",
|
||||
"import": "பதிவேற்றம் ",
|
||||
"link": "இணை ",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
|
||||
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
|
||||
"from-trello": "From Trello",
|
||||
"from-trello": "Trello ல் இருந்து ",
|
||||
"from-wekan": "From previous export",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
@@ -325,7 +328,7 @@
|
||||
"label-default": "%s label (default)",
|
||||
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
|
||||
"labels": "Labels",
|
||||
"language": "Language",
|
||||
"language": "மொழி ",
|
||||
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
|
||||
"leave-board": "Leave Board",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
@@ -335,12 +338,12 @@
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
|
||||
"list-move-cards": "Move all cards in this list",
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"set-color-list": "Set Color",
|
||||
"set-color-list": "நிறத்தை மாற்று ",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"listMorePopup-title": "More",
|
||||
"listMorePopup-title": "மேலும் ",
|
||||
"link-list": "Link to this list",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
|
||||
@@ -362,7 +365,7 @@
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
"my-boards": "My Boards",
|
||||
"name": "Name",
|
||||
"name": "பெயர் ",
|
||||
"no-archived-cards": "No cards in Archive.",
|
||||
"no-archived-lists": "No lists in Archive.",
|
||||
"no-archived-swimlanes": "No swimlanes in Archive.",
|
||||
@@ -376,16 +379,16 @@
|
||||
"or": "or",
|
||||
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
|
||||
"page-not-found": "Page not found.",
|
||||
"password": "Password",
|
||||
"password": "கடவுச்சொல் ",
|
||||
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
|
||||
"participating": "Participating",
|
||||
"preview": "Preview",
|
||||
"previewAttachedImagePopup-title": "Preview",
|
||||
"previewClipboardImagePopup-title": "Preview",
|
||||
"private": "Private",
|
||||
"private": "தனியார் ",
|
||||
"private-desc": "This board is private. Only people added to the board can view and edit it.",
|
||||
"profile": "Profile",
|
||||
"public": "Public",
|
||||
"public": "பொது ",
|
||||
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
|
||||
"quick-access-description": "Star a board to add a shortcut in this bar.",
|
||||
"remove-cover": "Remove Cover",
|
||||
@@ -396,11 +399,11 @@
|
||||
"remove-member-from-card": "Remove from Card",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
"rename": "Rename",
|
||||
"rename": "பெயர்மாற்றம் ",
|
||||
"rename-board": "Rename Board",
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"save": "சேமி ",
|
||||
"search": "தேடு ",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
@@ -423,8 +426,8 @@
|
||||
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
|
||||
"starred-boards": "Starred Boards",
|
||||
"starred-boards-description": "Starred boards show up at the top of your boards list.",
|
||||
"subscribe": "Subscribe",
|
||||
"team": "Team",
|
||||
"subscribe": "சந்தா ",
|
||||
"team": "குழு ",
|
||||
"this-board": "this board",
|
||||
"this-card": "this card",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
@@ -462,7 +468,7 @@
|
||||
"people": "People",
|
||||
"registration": "Registration",
|
||||
"disable-self-registration": "Disable Self-Registration",
|
||||
"invite": "Invite",
|
||||
"invite": "அழைப்பு ",
|
||||
"invite-people": "Invite People",
|
||||
"to-boards": "To board(s)",
|
||||
"email-addresses": "Email Addresses",
|
||||
@@ -472,10 +478,10 @@
|
||||
"smtp-host": "SMTP Host",
|
||||
"smtp-port": "SMTP Port",
|
||||
"smtp-username": "Username",
|
||||
"smtp-password": "Password",
|
||||
"smtp-password": "கடவுச்சொல் ",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "From",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"send-from": "அனுப்புனர் ",
|
||||
"send-smtp-test": "சோதனை மின்னஞ்சல் அணுப்புக ",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
@@ -515,7 +521,7 @@
|
||||
"active": "Active",
|
||||
"card-received": "Received",
|
||||
"card-received-on": "Received on",
|
||||
"card-end": "End",
|
||||
"card-end": "முடிவு ",
|
||||
"card-end-on": "Ends on",
|
||||
"editCardReceivedDatePopup-title": "Change received date",
|
||||
"editCardEndDatePopup-title": "Change end date",
|
||||
@@ -596,7 +602,7 @@
|
||||
"r-archive": "Move to Archive",
|
||||
"r-unarchive": "Restore from Archive",
|
||||
"r-card": "card",
|
||||
"r-add": "Add",
|
||||
"r-add": "சேர் ",
|
||||
"r-remove": "Remove",
|
||||
"r-label": "label",
|
||||
"r-member": "member",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "เอกสารที่เก็บไว้",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "กำหนดสมาชิก",
|
||||
"attached": "แนบมาด้วย",
|
||||
"attachment": "สิ่งที่แนบมา",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "ป้ายกำกับ",
|
||||
"cardMembersPopup-title": "สมาชิก",
|
||||
"cardMorePopup-title": "เพิ่มเติม",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "การ์ด",
|
||||
"cards-count": "การ์ด",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "พื้นฐาน",
|
||||
"welcome-list2": "ก้าวหน้า",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "ต้องการทำอะไร",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
+12
-6
@@ -42,7 +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": "Alt-görev 1%s'e eklendi",
|
||||
"activity-subtask-added": "Alt-görev %s'e eklendi",
|
||||
"activity-checked-item": "checked %s in checklist %s of %s",
|
||||
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
|
||||
"activity-checklist-added": "%s içine yapılacak listesi ekledi",
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Panoyu Geri Getir",
|
||||
"no-archived-boards": "Arşivde Pano Yok.",
|
||||
"archives": "Arşivle",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Üye ata",
|
||||
"attached": "dosya(sı) eklendi",
|
||||
"attachment": "Ek Dosya",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Etiketler",
|
||||
"cardMembersPopup-title": "Üyeler",
|
||||
"cardMorePopup-title": "Daha",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Kartlar",
|
||||
"cards-count": "Kartlar",
|
||||
"casSignIn": "CAS ile giriş yapın",
|
||||
@@ -402,7 +405,7 @@
|
||||
"save": "Kaydet",
|
||||
"search": "Arama",
|
||||
"rules": "Kurallar",
|
||||
"search-cards": "Bu tahta da ki kart başlıkları ve açıklamalarında arama yap",
|
||||
"search-cards": "Bu panoda kart başlıkları ve açıklamalarında arama yap",
|
||||
"search-example": "Aranılacak metin?",
|
||||
"select-color": "Renk Seç",
|
||||
"set-wip-limit-value": "Bu listedeki en fazla öğe sayısı için bir sınır belirleyin",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Kilometre taşı",
|
||||
"welcome-list1": "Temel",
|
||||
"welcome-list2": "Gelişmiş",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "Ne yapmak istiyorsunuz?",
|
||||
"wipLimitErrorPopup-title": "Geçersiz Devam Eden İş Sınırı",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Bu listedeki iş sayısı belirlediğiniz sınırdan daha fazla.",
|
||||
@@ -519,10 +525,10 @@
|
||||
"card-end-on": "Bitiş zamanı",
|
||||
"editCardReceivedDatePopup-title": "Giriş tarihini değiştir",
|
||||
"editCardEndDatePopup-title": "Bitiş tarihini değiştir",
|
||||
"setCardColorPopup-title": "renk ayarla",
|
||||
"setCardActionsColorPopup-title": "Choose a color",
|
||||
"setSwimlaneColorPopup-title": "Choose a color",
|
||||
"setListColorPopup-title": "Choose a color",
|
||||
"setCardColorPopup-title": "Renk ayarla",
|
||||
"setCardActionsColorPopup-title": "Renk seçimi yap",
|
||||
"setSwimlaneColorPopup-title": "Renk seçimi yap",
|
||||
"setListColorPopup-title": "Renk seçimi yap",
|
||||
"assigned-by": "Atamayı yapan",
|
||||
"requested-by": "Talep Eden",
|
||||
"board-delete-notice": "Silme kalıcıdır. Bu kartla ilişkili tüm listeleri, kartları ve işlemleri kaybedeceksiniz.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Відновити дошку",
|
||||
"no-archived-boards": "Немає дошок в архіві",
|
||||
"archives": "Архів",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "доданно",
|
||||
"attachment": "Додаток",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Користувачі",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Картки",
|
||||
"cards-count": "Картки",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Кількість завдань у цьому списку перевищує встановлений вами ліміт",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "Khôi Phục Bảng",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"archives": "Lưu Trữ",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Chỉ định thành viên",
|
||||
"attached": "đã đính kèm",
|
||||
"attachment": "Phần đính kèm",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Thành Viên",
|
||||
"cardMorePopup-title": "More",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "Cards",
|
||||
"cards-count": "Cards",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "还原看板",
|
||||
"no-archived-boards": "没有归档的看板。",
|
||||
"archives": "归档",
|
||||
"template": "模板",
|
||||
"templates": "模板",
|
||||
"assign-member": "分配成员",
|
||||
"attached": "附加",
|
||||
"attachment": "附件",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "标签",
|
||||
"cardMembersPopup-title": "成员",
|
||||
"cardMorePopup-title": "更多",
|
||||
"cardTemplatePopup-title": "新建模板",
|
||||
"cards": "卡片",
|
||||
"cards-count": "卡片",
|
||||
"casSignIn": "用CAS登录",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "里程碑 1",
|
||||
"welcome-list1": "基本",
|
||||
"welcome-list2": "高阶",
|
||||
"card-templates-swimlane": "卡片模板",
|
||||
"list-templates-swimlane": "列表模板",
|
||||
"board-templates-swimlane": "看板模板",
|
||||
"what-to-do": "要做什么?",
|
||||
"wipLimitErrorPopup-title": "无效的最大任务数",
|
||||
"wipLimitErrorPopup-dialog-pt1": "此列表中的任务数量已经超过了设置的最大任务数。",
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
"restore-board": "還原看板",
|
||||
"no-archived-boards": "封存中沒有看板。",
|
||||
"archives": "封存",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "分配成員",
|
||||
"attached": "附加",
|
||||
"attachment": "附件",
|
||||
@@ -143,6 +145,7 @@
|
||||
"cardLabelsPopup-title": "標籤",
|
||||
"cardMembersPopup-title": "成員",
|
||||
"cardMorePopup-title": "更多",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cards": "卡片",
|
||||
"cards-count": "卡片",
|
||||
"casSignIn": "以 CAS 登入",
|
||||
@@ -453,6 +456,9 @@
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "基本",
|
||||
"welcome-list2": "進階",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "要做什麼?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
|
||||
+107
-3
@@ -304,10 +304,32 @@ Boards.attachSchema(new SimpleSchema({
|
||||
defaultValue: false,
|
||||
optional: true,
|
||||
},
|
||||
type: {
|
||||
/**
|
||||
* The type of board
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: 'board',
|
||||
},
|
||||
}));
|
||||
|
||||
|
||||
Boards.helpers({
|
||||
copy() {
|
||||
const oldId = this._id;
|
||||
delete this._id;
|
||||
const _id = Boards.insert(this);
|
||||
|
||||
// Copy all swimlanes in board
|
||||
Swimlanes.find({
|
||||
boardId: oldId,
|
||||
archived: false,
|
||||
}).forEach((swimlane) => {
|
||||
swimlane.type = 'swimlane';
|
||||
swimlane.boardId = _id;
|
||||
swimlane.copy(oldId);
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Is supplied user authorized to view this board?
|
||||
*/
|
||||
@@ -456,6 +478,75 @@ Boards.helpers({
|
||||
return _id;
|
||||
},
|
||||
|
||||
searchBoards(term) {
|
||||
check(term, Match.OneOf(String, null, undefined));
|
||||
|
||||
const query = { boardId: this._id };
|
||||
query.type = 'cardType-linkedBoard';
|
||||
query.archived = false;
|
||||
|
||||
const projection = { limit: 10, sort: { createdAt: -1 } };
|
||||
|
||||
if (term) {
|
||||
const regex = new RegExp(term, 'i');
|
||||
|
||||
query.$or = [
|
||||
{ title: regex },
|
||||
{ description: regex },
|
||||
];
|
||||
}
|
||||
|
||||
return Cards.find(query, projection);
|
||||
},
|
||||
|
||||
searchSwimlanes(term) {
|
||||
check(term, Match.OneOf(String, null, undefined));
|
||||
|
||||
const query = { boardId: this._id };
|
||||
if (this.isTemplatesBoard()) {
|
||||
query.type = 'template-swimlane';
|
||||
query.archived = false;
|
||||
} else {
|
||||
query.type = {$nin: ['template-swimlane']};
|
||||
}
|
||||
const projection = { limit: 10, sort: { createdAt: -1 } };
|
||||
|
||||
if (term) {
|
||||
const regex = new RegExp(term, 'i');
|
||||
|
||||
query.$or = [
|
||||
{ title: regex },
|
||||
{ description: regex },
|
||||
];
|
||||
}
|
||||
|
||||
return Swimlanes.find(query, projection);
|
||||
},
|
||||
|
||||
searchLists(term) {
|
||||
check(term, Match.OneOf(String, null, undefined));
|
||||
|
||||
const query = { boardId: this._id };
|
||||
if (this.isTemplatesBoard()) {
|
||||
query.type = 'template-list';
|
||||
query.archived = false;
|
||||
} else {
|
||||
query.type = {$nin: ['template-list']};
|
||||
}
|
||||
const projection = { limit: 10, sort: { createdAt: -1 } };
|
||||
|
||||
if (term) {
|
||||
const regex = new RegExp(term, 'i');
|
||||
|
||||
query.$or = [
|
||||
{ title: regex },
|
||||
{ description: regex },
|
||||
];
|
||||
}
|
||||
|
||||
return Lists.find(query, projection);
|
||||
},
|
||||
|
||||
searchCards(term, excludeLinked) {
|
||||
check(term, Match.OneOf(String, null, undefined));
|
||||
|
||||
@@ -463,6 +554,12 @@ Boards.helpers({
|
||||
if (excludeLinked) {
|
||||
query.linkedId = null;
|
||||
}
|
||||
if (this.isTemplatesBoard()) {
|
||||
query.type = 'template-card';
|
||||
query.archived = false;
|
||||
} else {
|
||||
query.type = {$nin: ['template-card']};
|
||||
}
|
||||
const projection = { limit: 10, sort: { createdAt: -1 } };
|
||||
|
||||
if (term) {
|
||||
@@ -559,6 +656,13 @@ Boards.helpers({
|
||||
});
|
||||
},
|
||||
|
||||
isTemplateBoard() {
|
||||
return this.type === 'template-board';
|
||||
},
|
||||
|
||||
isTemplatesBoard() {
|
||||
return this.type === 'template-container';
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -907,7 +1011,7 @@ if (Meteor.isServer) {
|
||||
* @param {string} userId the ID of the user to retrieve the data
|
||||
* @return_type [{_id: string,
|
||||
title: string}]
|
||||
*/
|
||||
*/
|
||||
JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res) {
|
||||
try {
|
||||
Authentication.checkLoggedIn(req.userId);
|
||||
@@ -944,7 +1048,7 @@ if (Meteor.isServer) {
|
||||
*
|
||||
* @return_type [{_id: string,
|
||||
title: string}]
|
||||
*/
|
||||
*/
|
||||
JsonRoutes.add('GET', '/api/boards', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
@@ -1015,7 +1119,7 @@ if (Meteor.isServer) {
|
||||
*
|
||||
* @return_type {_id: string,
|
||||
defaultSwimlaneId: string}
|
||||
*/
|
||||
*/
|
||||
JsonRoutes.add('POST', '/api/boards', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
|
||||
@@ -67,6 +67,12 @@ CardComments.allow({
|
||||
});
|
||||
|
||||
CardComments.helpers({
|
||||
copy(newCardId) {
|
||||
this.cardId = newCardId;
|
||||
delete this._id;
|
||||
CardComments.insert(this);
|
||||
},
|
||||
|
||||
user() {
|
||||
return Users.findOne(this.userId);
|
||||
},
|
||||
|
||||
+31
-2
@@ -246,7 +246,7 @@ Cards.attachSchema(new SimpleSchema({
|
||||
* type of the card
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: '',
|
||||
defaultValue: 'cardType-card',
|
||||
},
|
||||
linkedId: {
|
||||
/**
|
||||
@@ -272,6 +272,31 @@ Cards.allow({
|
||||
});
|
||||
|
||||
Cards.helpers({
|
||||
copy() {
|
||||
const oldId = this._id;
|
||||
delete this._id;
|
||||
const _id = Cards.insert(this);
|
||||
|
||||
// copy checklists
|
||||
Checklists.find({cardId: oldId}).forEach((ch) => {
|
||||
ch.copy(_id);
|
||||
});
|
||||
|
||||
// copy subtasks
|
||||
Cards.find({parentId: oldId}).forEach((subtask) => {
|
||||
subtask.parentId = _id;
|
||||
subtask._id = null;
|
||||
Cards.insert(subtask);
|
||||
});
|
||||
|
||||
// copy card comments
|
||||
CardComments.find({cardId: oldId}).forEach((cmt) => {
|
||||
cmt.copy(_id);
|
||||
});
|
||||
|
||||
return _id;
|
||||
},
|
||||
|
||||
list() {
|
||||
return Lists.findOne(this.listId);
|
||||
},
|
||||
@@ -930,6 +955,10 @@ Cards.helpers({
|
||||
return this.assignedBy;
|
||||
}
|
||||
},
|
||||
|
||||
isTemplateCard() {
|
||||
return this.type === 'template-card';
|
||||
},
|
||||
});
|
||||
|
||||
Cards.mutations({
|
||||
@@ -1230,7 +1259,7 @@ Cards.mutations({
|
||||
|
||||
function cardMove(userId, doc, fieldNames, oldListId, oldSwimlaneId) {
|
||||
if ((_.contains(fieldNames, 'listId') && doc.listId !== oldListId) ||
|
||||
(_.contains(fieldNames, 'swimlaneId') && doc.swimlaneId !== oldSwimlaneId)){
|
||||
(_.contains(fieldNames, 'swimlaneId') && doc.swimlaneId !== oldSwimlaneId)){
|
||||
Activities.insert({
|
||||
userId,
|
||||
oldListId,
|
||||
|
||||
@@ -48,6 +48,19 @@ Checklists.attachSchema(new SimpleSchema({
|
||||
}));
|
||||
|
||||
Checklists.helpers({
|
||||
copy(newCardId) {
|
||||
const oldChecklistId = this._id;
|
||||
this._id = null;
|
||||
this.cardId = newCardId;
|
||||
const newChecklistId = Checklists.insert(this);
|
||||
ChecklistItems.find({checklistId: oldChecklistId}).forEach((item) => {
|
||||
item._id = null;
|
||||
item.checklistId = newChecklistId;
|
||||
item.cardId = newCardId;
|
||||
ChecklistItems.insert(item);
|
||||
});
|
||||
},
|
||||
|
||||
itemCount() {
|
||||
return ChecklistItems.find({ checklistId: this._id }).count();
|
||||
},
|
||||
|
||||
@@ -27,6 +27,13 @@ Lists.attachSchema(new SimpleSchema({
|
||||
*/
|
||||
type: String,
|
||||
},
|
||||
swimlaneId: {
|
||||
/**
|
||||
* the swimlane associated to this list. Used for templates
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: '',
|
||||
},
|
||||
createdAt: {
|
||||
/**
|
||||
* creation date
|
||||
@@ -107,6 +114,13 @@ Lists.attachSchema(new SimpleSchema({
|
||||
'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo',
|
||||
],
|
||||
},
|
||||
type: {
|
||||
/**
|
||||
* The type of list
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: 'list',
|
||||
},
|
||||
}));
|
||||
|
||||
Lists.allow({
|
||||
@@ -123,6 +137,37 @@ Lists.allow({
|
||||
});
|
||||
|
||||
Lists.helpers({
|
||||
copy(swimlaneId) {
|
||||
const oldId = this._id;
|
||||
const oldSwimlaneId = this.swimlaneId || null;
|
||||
let _id = null;
|
||||
existingListWithSameName = Lists.findOne({
|
||||
boardId: this.boardId,
|
||||
title: this.title,
|
||||
archived: false,
|
||||
});
|
||||
if (existingListWithSameName) {
|
||||
_id = existingListWithSameName._id;
|
||||
} else {
|
||||
delete this._id;
|
||||
delete this.swimlaneId;
|
||||
_id = Lists.insert(this);
|
||||
}
|
||||
|
||||
// Copy all cards in list
|
||||
Cards.find({
|
||||
swimlaneId: oldSwimlaneId,
|
||||
listId: oldId,
|
||||
archived: false,
|
||||
}).forEach((card) => {
|
||||
card.type = 'cardType-card';
|
||||
card.listId = _id;
|
||||
card.boardId = this.boardId;
|
||||
card.swimlaneId = swimlaneId;
|
||||
card.copy();
|
||||
});
|
||||
},
|
||||
|
||||
cards(swimlaneId) {
|
||||
const selector = {
|
||||
listId: this._id,
|
||||
@@ -169,6 +214,10 @@ Lists.helpers({
|
||||
return this.color;
|
||||
return '';
|
||||
},
|
||||
|
||||
isTemplateList() {
|
||||
return this.type === 'template-list';
|
||||
},
|
||||
});
|
||||
|
||||
Lists.mutations({
|
||||
@@ -177,10 +226,20 @@ Lists.mutations({
|
||||
},
|
||||
|
||||
archive() {
|
||||
if (this.isTemplateList()) {
|
||||
this.cards().forEach((card) => {
|
||||
return card.archive();
|
||||
});
|
||||
}
|
||||
return { $set: { archived: true } };
|
||||
},
|
||||
|
||||
restore() {
|
||||
if (this.isTemplateList()) {
|
||||
this.allCards().forEach((card) => {
|
||||
return card.restore();
|
||||
});
|
||||
}
|
||||
return { $set: { archived: false } };
|
||||
},
|
||||
|
||||
|
||||
@@ -78,6 +78,13 @@ Swimlanes.attachSchema(new SimpleSchema({
|
||||
}
|
||||
},
|
||||
},
|
||||
type: {
|
||||
/**
|
||||
* The type of swimlane
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: 'swimlane',
|
||||
},
|
||||
}));
|
||||
|
||||
Swimlanes.allow({
|
||||
@@ -94,6 +101,28 @@ Swimlanes.allow({
|
||||
});
|
||||
|
||||
Swimlanes.helpers({
|
||||
copy(oldBoardId) {
|
||||
const oldId = this._id;
|
||||
delete this._id;
|
||||
const _id = Swimlanes.insert(this);
|
||||
|
||||
const query = {
|
||||
swimlaneId: {$in: [oldId, '']},
|
||||
archived: false,
|
||||
};
|
||||
if (oldBoardId) {
|
||||
query.boardId = oldBoardId;
|
||||
}
|
||||
|
||||
// Copy all lists in swimlane
|
||||
Lists.find(query).forEach((list) => {
|
||||
list.type = 'list';
|
||||
list.swimlaneId = oldId;
|
||||
list.boardId = this.boardId;
|
||||
list.copy(_id);
|
||||
});
|
||||
},
|
||||
|
||||
cards() {
|
||||
return Cards.find(Filter.mongoSelector({
|
||||
swimlaneId: this._id,
|
||||
@@ -101,6 +130,18 @@ Swimlanes.helpers({
|
||||
}), { sort: ['sort'] });
|
||||
},
|
||||
|
||||
lists() {
|
||||
return Lists.find(Filter.mongoSelector({
|
||||
boardId: this.boardId,
|
||||
swimlaneId: {$in: [this._id, '']},
|
||||
archived: false,
|
||||
}), { sort: ['sort'] });
|
||||
},
|
||||
|
||||
allLists() {
|
||||
return Lists.find({ swimlaneId: this._id });
|
||||
},
|
||||
|
||||
allCards() {
|
||||
return Cards.find({ swimlaneId: this._id });
|
||||
},
|
||||
@@ -114,6 +155,29 @@ Swimlanes.helpers({
|
||||
return this.color;
|
||||
return '';
|
||||
},
|
||||
|
||||
isTemplateSwimlane() {
|
||||
return this.type === 'template-swimlane';
|
||||
},
|
||||
|
||||
isTemplateContainer() {
|
||||
return this.type === 'template-container';
|
||||
},
|
||||
|
||||
isListTemplatesSwimlane() {
|
||||
const user = Users.findOne(Meteor.userId());
|
||||
return user.profile.listTemplatesSwimlaneId === this._id;
|
||||
},
|
||||
|
||||
isCardTemplatesSwimlane() {
|
||||
const user = Users.findOne(Meteor.userId());
|
||||
return user.profile.cardTemplatesSwimlaneId === this._id;
|
||||
},
|
||||
|
||||
isBoardTemplatesSwimlane() {
|
||||
const user = Users.findOne(Meteor.userId());
|
||||
return user.profile.boardTemplatesSwimlaneId === this._id;
|
||||
},
|
||||
});
|
||||
|
||||
Swimlanes.mutations({
|
||||
@@ -122,10 +186,20 @@ Swimlanes.mutations({
|
||||
},
|
||||
|
||||
archive() {
|
||||
if (this.isTemplateSwimlane()) {
|
||||
this.lists().forEach((list) => {
|
||||
return list.archive();
|
||||
});
|
||||
}
|
||||
return { $set: { archived: true } };
|
||||
},
|
||||
|
||||
restore() {
|
||||
if (this.isTemplateSwimlane()) {
|
||||
this.allLists().forEach((list) => {
|
||||
return list.restore();
|
||||
});
|
||||
}
|
||||
return { $set: { archived: false } };
|
||||
},
|
||||
|
||||
|
||||
+85
-2
@@ -159,6 +159,34 @@ Users.attachSchema(new SimpleSchema({
|
||||
'board-view-cal',
|
||||
],
|
||||
},
|
||||
'profile.templatesBoardId': {
|
||||
/**
|
||||
* Reference to the templates board
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: '',
|
||||
},
|
||||
'profile.cardTemplatesSwimlaneId': {
|
||||
/**
|
||||
* Reference to the card templates swimlane Id
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: '',
|
||||
},
|
||||
'profile.listTemplatesSwimlaneId': {
|
||||
/**
|
||||
* Reference to the list templates swimlane Id
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: '',
|
||||
},
|
||||
'profile.boardTemplatesSwimlaneId': {
|
||||
/**
|
||||
* Reference to the board templates swimlane Id
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: '',
|
||||
},
|
||||
services: {
|
||||
/**
|
||||
* services field of the user
|
||||
@@ -328,6 +356,14 @@ Users.helpers({
|
||||
const profile = this.profile || {};
|
||||
return profile.language || 'en';
|
||||
},
|
||||
|
||||
getTemplatesBoardId() {
|
||||
return this.profile.templatesBoardId;
|
||||
},
|
||||
|
||||
getTemplatesBoardSlug() {
|
||||
return Boards.findOne(this.profile.templatesBoardId).slug;
|
||||
},
|
||||
});
|
||||
|
||||
Users.mutations({
|
||||
@@ -559,7 +595,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
Accounts.onCreateUser((options, user) => {
|
||||
const userCount = Users.find().count();
|
||||
if (!isSandstorm && userCount === 0) {
|
||||
if (userCount === 0) {
|
||||
user.isAdmin = true;
|
||||
return user;
|
||||
}
|
||||
@@ -675,7 +711,6 @@ if (Meteor.isServer) {
|
||||
CollectionHooks.getUserId = () => {
|
||||
return fakeUserId.get() || getUserId();
|
||||
};
|
||||
|
||||
if (!isSandstorm) {
|
||||
Users.after.insert((userId, doc) => {
|
||||
const fakeUser = {
|
||||
@@ -685,6 +720,7 @@ if (Meteor.isServer) {
|
||||
};
|
||||
|
||||
fakeUserId.withValue(doc._id, () => {
|
||||
/*
|
||||
// Insert the Welcome Board
|
||||
Boards.insert({
|
||||
title: TAPi18n.__('welcome-board'),
|
||||
@@ -701,6 +737,53 @@ if (Meteor.isServer) {
|
||||
Lists.insert({title: TAPi18n.__(title), boardId, sort: titleIndex}, fakeUser);
|
||||
});
|
||||
});
|
||||
*/
|
||||
|
||||
Boards.insert({
|
||||
title: TAPi18n.__('templates'),
|
||||
permission: 'private',
|
||||
type: 'template-container',
|
||||
}, fakeUser, (err, boardId) => {
|
||||
|
||||
// Insert the reference to our templates board
|
||||
Users.update(fakeUserId.get(), {$set: {'profile.templatesBoardId': boardId}});
|
||||
|
||||
// Insert the card templates swimlane
|
||||
Swimlanes.insert({
|
||||
title: TAPi18n.__('card-templates-swimlane'),
|
||||
boardId,
|
||||
sort: 1,
|
||||
type: 'template-container',
|
||||
}, fakeUser, (err, swimlaneId) => {
|
||||
|
||||
// Insert the reference to out card templates swimlane
|
||||
Users.update(fakeUserId.get(), {$set: {'profile.cardTemplatesSwimlaneId': swimlaneId}});
|
||||
});
|
||||
|
||||
// Insert the list templates swimlane
|
||||
Swimlanes.insert({
|
||||
title: TAPi18n.__('list-templates-swimlane'),
|
||||
boardId,
|
||||
sort: 2,
|
||||
type: 'template-container',
|
||||
}, fakeUser, (err, swimlaneId) => {
|
||||
|
||||
// Insert the reference to out list templates swimlane
|
||||
Users.update(fakeUserId.get(), {$set: {'profile.listTemplatesSwimlaneId': swimlaneId}});
|
||||
});
|
||||
|
||||
// Insert the board templates swimlane
|
||||
Swimlanes.insert({
|
||||
title: TAPi18n.__('board-templates-swimlane'),
|
||||
boardId,
|
||||
sort: 3,
|
||||
type: 'template-container',
|
||||
}, fakeUser, (err, swimlaneId) => {
|
||||
|
||||
// Insert the reference to out board templates swimlane
|
||||
Users.update(fakeUserId.get(), {$set: {'profile.boardTemplatesSwimlaneId': swimlaneId}});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v2.23.0",
|
||||
"version": "v2.29.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -114,10 +114,6 @@
|
||||
#export OAUTH2_FULLNAME_MAP=
|
||||
# OAuth2 Email Mapping
|
||||
#export OAUTH2_EMAIL_MAP=
|
||||
# OAUTH2 ID Token Whitelist Fields.
|
||||
#export OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
|
||||
# OAUTH2 Request Permissions.
|
||||
#export OAUTH2_REQUEST_PERMISSIONS=[openid profile email]
|
||||
#---------------------------------------------
|
||||
# LDAP_ENABLE : Enable or not the connection by the LDAP
|
||||
# example : export LDAP_ENABLE=true
|
||||
@@ -227,6 +223,18 @@
|
||||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : export LDAP_MERGE_EXISTING_USERS=true
|
||||
#export LDAP_MERGE_EXISTING_USERS=false
|
||||
# LDAP_EMAIL_MATCH_ENABLE : allow existing account matching by e-mail address when username does not match
|
||||
# example: LDAP_EMAIL_MATCH_ENABLE=true
|
||||
#export LDAP_EMAIL_MATCH_ENABLE=false
|
||||
# LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
|
||||
# example: LDAP_EMAIL_MATCH_REQUIRE=true
|
||||
#export LDAP_EMAIL_MATCH_REQUIRE=false
|
||||
# LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
|
||||
# example: LDAP_EMAIL_MATCH_VERIFIED=true
|
||||
#export LDAP_EMAIL_MATCH_VERIFIED=false
|
||||
# LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
|
||||
# example: LDAP_EMAIL_FIELD=mail
|
||||
#export LDAP_EMAIL_FIELD=
|
||||
# LDAP_SYNC_USER_DATA :
|
||||
# example : export LDAP_SYNC_USER_DATA=true
|
||||
#export LDAP_SYNC_USER_DATA=false
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 225,
|
||||
appVersion = 231,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "2.23.0~2019-02-17"),
|
||||
appMarketingVersion = (defaultText = "2.29.0~2019-02-27"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
+9
-9
@@ -435,12 +435,12 @@ if (isSandstorm && Meteor.isClient) {
|
||||
//
|
||||
// XXX Hack. The home route is already defined at this point so we need to
|
||||
// add the redirection trigger to the internal route object.
|
||||
FlowRouter._routesMap.home._triggersEnter.push((context, redirect) => {
|
||||
redirect(FlowRouter.path('board', {
|
||||
id: sandstormBoard._id,
|
||||
slug: sandstormBoard.slug,
|
||||
}));
|
||||
});
|
||||
//FlowRouter._routesMap.home._triggersEnter.push((context, redirect) => {
|
||||
// redirect(FlowRouter.path('board', {
|
||||
// id: sandstormBoard._id,
|
||||
// slug: sandstormBoard.slug,
|
||||
// }));
|
||||
//});
|
||||
|
||||
// XXX Hack. `Meteor.absoluteUrl` doesn't work in Sandstorm, since every
|
||||
// session has a different URL whereas Meteor computes absoluteUrl based on
|
||||
@@ -457,9 +457,9 @@ if (isSandstorm && Meteor.isClient) {
|
||||
// XXX Hack to fix https://github.com/wefork/wekan/issues/27
|
||||
// Sandstorm Wekan instances only ever have a single board, so there is no need
|
||||
// to cache per-board subscriptions.
|
||||
SubsManager.prototype.subscribe = function(...params) {
|
||||
return Meteor.subscribe(...params);
|
||||
};
|
||||
//SubsManager.prototype.subscribe = function(...params) {
|
||||
// return Meteor.subscribe(...params);
|
||||
//};
|
||||
}
|
||||
|
||||
// We use this blaze helper in the UI to hide some templates that does not make
|
||||
|
||||
@@ -76,8 +76,8 @@ Meteor.startup(() => {
|
||||
authorizationEndpoint: process.env.OAUTH2_AUTH_ENDPOINT,
|
||||
userinfoEndpoint: process.env.OAUTH2_USERINFO_ENDPOINT,
|
||||
tokenEndpoint: process.env.OAUTH2_TOKEN_ENDPOINT,
|
||||
idTokenWhitelistFields: process.env.OAUTH2_ID_TOKEN_WHITELIST_FIELDS || [],
|
||||
requestPermissions: process.OAUTH2_REQUEST_PERMISSIONS || ['openid'],
|
||||
idTokenWhitelistFields: [],
|
||||
requestPermissions: ['openid'],
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
@@ -422,3 +422,98 @@ Migrations.add('add-defaultAuthenticationMethod', () => {
|
||||
},
|
||||
}, noValidateMulti);
|
||||
});
|
||||
|
||||
Migrations.add('add-templates', () => {
|
||||
Boards.update({
|
||||
type: {
|
||||
$exists: false,
|
||||
},
|
||||
}, {
|
||||
$set: {
|
||||
type: 'board',
|
||||
},
|
||||
}, noValidateMulti);
|
||||
Swimlanes.update({
|
||||
type: {
|
||||
$exists: false,
|
||||
},
|
||||
}, {
|
||||
$set: {
|
||||
type: 'swimlane',
|
||||
},
|
||||
}, noValidateMulti);
|
||||
Lists.update({
|
||||
type: {
|
||||
$exists: false,
|
||||
},
|
||||
swimlaneId: {
|
||||
$exists: false,
|
||||
},
|
||||
}, {
|
||||
$set: {
|
||||
type: 'list',
|
||||
swimlaneId: '',
|
||||
},
|
||||
}, noValidateMulti);
|
||||
Users.find({
|
||||
'profile.templatesBoardId': {
|
||||
$exists: false,
|
||||
},
|
||||
}).forEach((user) => {
|
||||
// Create board and swimlanes
|
||||
Boards.insert({
|
||||
title: TAPi18n.__('templates'),
|
||||
permission: 'private',
|
||||
type: 'template-container',
|
||||
members: [
|
||||
{
|
||||
userId: user._id,
|
||||
isAdmin: true,
|
||||
isActive: true,
|
||||
isNoComments: false,
|
||||
isCommentOnly: false,
|
||||
},
|
||||
],
|
||||
}, (err, boardId) => {
|
||||
|
||||
// Insert the reference to our templates board
|
||||
Users.update(user._id, {$set: {'profile.templatesBoardId': boardId}});
|
||||
|
||||
// Insert the card templates swimlane
|
||||
Swimlanes.insert({
|
||||
title: TAPi18n.__('card-templates-swimlane'),
|
||||
boardId,
|
||||
sort: 1,
|
||||
type: 'template-container',
|
||||
}, (err, swimlaneId) => {
|
||||
|
||||
// Insert the reference to out card templates swimlane
|
||||
Users.update(user._id, {$set: {'profile.cardTemplatesSwimlaneId': swimlaneId}});
|
||||
});
|
||||
|
||||
// Insert the list templates swimlane
|
||||
Swimlanes.insert({
|
||||
title: TAPi18n.__('list-templates-swimlane'),
|
||||
boardId,
|
||||
sort: 2,
|
||||
type: 'template-container',
|
||||
}, (err, swimlaneId) => {
|
||||
|
||||
// Insert the reference to out list templates swimlane
|
||||
Users.update(user._id, {$set: {'profile.listTemplatesSwimlaneId': swimlaneId}});
|
||||
});
|
||||
|
||||
// Insert the board templates swimlane
|
||||
Swimlanes.insert({
|
||||
title: TAPi18n.__('board-templates-swimlane'),
|
||||
boardId,
|
||||
sort: 3,
|
||||
type: 'template-container',
|
||||
}, (err, swimlaneId) => {
|
||||
|
||||
// Insert the reference to out board templates swimlane
|
||||
Users.update(user._id, {$set: {'profile.boardTemplatesSwimlaneId': swimlaneId}});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -36,7 +36,7 @@ Meteor.startup(() => {
|
||||
} catch (e) {
|
||||
return;
|
||||
}
|
||||
}, 30000);
|
||||
}, process.env.EMAIL_NOTIFICATION_TIMEOUT || 30000);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ Meteor.publish('boards', function() {
|
||||
color: 1,
|
||||
members: 1,
|
||||
permission: 1,
|
||||
type: 1,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
+21
-9
@@ -3,7 +3,7 @@
|
||||
# All supported keys are defined here together with descriptions and default values
|
||||
|
||||
# list of supported keys
|
||||
keys="DEBUG MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_EMAIL_MAP OAUTH2_ID_TOKEN_WHITELIST_FIELDS OAUTH2_REQUEST_PERMISSIONS LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD"
|
||||
keys="DEBUG MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API EMAIL_NOTIFICATION_TIMEOUT CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_EMAIL_MAP LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD"
|
||||
|
||||
# default values
|
||||
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
|
||||
@@ -56,6 +56,10 @@ DESCRIPTION_WITH_API="Enable/disable the api of wekan"
|
||||
DEFAULT_WITH_API="true"
|
||||
KEY_WITH_API="with-api"
|
||||
|
||||
DESCRIPTION_EMAIL_NOTIFICATION_TIMEOUT="Email notification timeout, ms. Default: 30000 (=30s)."
|
||||
DEFAULT_EMAIL_NOTIFICATION_TIMEOUT="30000"
|
||||
KEY_EMAIL_NOTIFICATION_TIMEOUT="email-notification-timeout"
|
||||
|
||||
DESCRIPTION_CORS="Enable/disable CORS: Set Access-Control-Allow-Origin header. Example: *"
|
||||
DEFAULT_CORS=""
|
||||
KEY_CORS="cors"
|
||||
@@ -138,14 +142,6 @@ DESCRIPTION_OAUTH2_EMAIL_MAP="OAuth2 Email Mapping. Example: email"
|
||||
DEFAULT_OAUTH2_EMAIL_MAP=""
|
||||
KEY_OAUTH2_EMAIL_MAP="oauth2-email-map"
|
||||
|
||||
DESCRIPTION_OAUTH2_ID_TOKEN_WHITELIST_FIELDS="OAuth2 ID Token Whitelist Fields. Example: []"
|
||||
DEFAULT_OAUTH2_ID_TOKEN_WHITELIST_FIELDS=""
|
||||
KEY_OAUTH2_ID_TOKEN_WHITELIST_FIELDS="oauth2-id-token-whitelist-fields"
|
||||
|
||||
DESCRIPTION_OAUTH2_REQUEST_PERMISSIONS="OAuth2 Request Permissions. Example: [openid profile email]"
|
||||
DEFAULT_OAUTH2_REQUEST_PERMISSIONS=""
|
||||
KEY_OAUTH2_REQUEST_PERMISSIONS="oauth2-request-permissions"
|
||||
|
||||
DESCRIPTION_LDAP_ENABLE="Enable or not the connection by the LDAP"
|
||||
DEFAULT_LDAP_ENABLE="false"
|
||||
KEY_LDAP_ENABLE="ldap-enable"
|
||||
@@ -290,6 +286,22 @@ DESCRIPTION_LDAP_MERGE_EXISTING_USERS="ldap-merge-existing-users . Default: fals
|
||||
DEFAULT_LDAP_MERGE_EXISTING_USERS="false"
|
||||
KEY_LDAP_MERGE_EXISTING_USERS="ldap-merge-existing-users"
|
||||
|
||||
DESCRIPTION_LDAP_EMAIL_MATCH_ENABLE="ldap-email-match-enable . Default: false"
|
||||
DEFAULT_LDAP_EMAIL_MATCH_ENABLE="false"
|
||||
KEY_LDAP_EMAIL_MATCH_ENABLE="ldap-email-match-enable"
|
||||
|
||||
DESCRIPTION_LDAP_EMAIL_MATCH_REQUIRE="ldap-email-match-require . Default: false"
|
||||
DEFAULT_LDAP_EMAIL_MATCH_REQUIRE="false"
|
||||
KEY_LDAP_EMAIL_MATCH_REQUIRE="ldap-email-match-require"
|
||||
|
||||
DESCRIPTION_LDAP_EMAIL_MATCH_VERIFIED="ldap-email-match-verified . Default: false"
|
||||
DEFAULT_LDAP_EMAIL_MATCH_VERIFIED="false"
|
||||
KEY_LDAP_EMAIL_MATCH_VERIFIED="ldap-email-match-verified"
|
||||
|
||||
DESCRIPTION_LDAP_EMAIL_FIELD="Which field contains the ldap e-mail address"
|
||||
DEFAULT_LDAP_EMAIL_FIELD=""
|
||||
KEY_LDAP_EMAIL_FIELD="ldap-email-field"
|
||||
|
||||
DESCRIPTION_LDAP_SYNC_USER_DATA="ldap-sync-user-data . Default: false"
|
||||
DEFAULT_LDAP_SYNC_USER_DATA="false"
|
||||
KEY_LDAP_SYNC_USER_DATA="ldap-sync-user-data"
|
||||
|
||||
+18
-12
@@ -40,6 +40,11 @@ echo -e "\t$ snap set $SNAP_NAME with-api='true'"
|
||||
echo -e "\t-Disable the API:"
|
||||
echo -e "\t$ snap set $SNAP_NAME with-api='false'"
|
||||
echo -e "\n"
|
||||
echo -e "To enable the Email Notification Timeout of wekan in ms, default 30000 (=30s):"
|
||||
echo -e "\t$ snap set $SNAP_NAME email-notification-timeout='10000'"
|
||||
echo -e "\t-Disable the Email Notification Timeout of Wekan:"
|
||||
echo -e "\t$ snap set $SNAP_NAME email-notification-timeout='30000'"
|
||||
echo -e "\n"
|
||||
echo -e "To enable the CORS of wekan, to set Access-Control-Allow-Origin header:"
|
||||
echo -e "\t$ snap set $SNAP_NAME cors='*'"
|
||||
echo -e "\t-Disable the CORS:"
|
||||
@@ -125,18 +130,6 @@ echo -e "\t$ snap set $SNAP_NAME oauth2-email-map='email'"
|
||||
echo -e "\t-Disable the OAuth2 Email Mapping of Wekan:"
|
||||
echo -e "\t$ snap set $SNAP_NAME oauth2-email-map=''"
|
||||
echo -e "\n"
|
||||
echo -e "OAuth2 ID Token Whitelist Fields."
|
||||
echo -e "To enable the OAuth2 ID Token Whitelist Fields of Wekan:"
|
||||
echo -e "\t$ snap set $SNAP_NAME oauth2-id-token-whitelist-fields='[]'"
|
||||
echo -e "\t-Disable the OAuth2 ID Token Whitelist Fields of Wekan:"
|
||||
echo -e "\t$ snap set $SNAP_NAME oauth2-id-token-whitelist-fields=''"
|
||||
echo -e "\n"
|
||||
echo -e "OAuth2 Request Permissions."
|
||||
echo -e "To enable the OAuth2 Request Permissions of Wekan:"
|
||||
echo -e "\t$ snap set $SNAP_NAME oauth2-request-permissions='[openid profile email]'"
|
||||
echo -e "\t-Disable the OAuth2 Request Permissions of Wekan:"
|
||||
echo -e "\t$ snap set $SNAP_NAME oauth2-request-permissions=''"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Enable."
|
||||
echo -e "To enable the ldap of Wekan:"
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-enable='true'"
|
||||
@@ -276,6 +269,19 @@ echo -e "\n"
|
||||
echo -e "Ldap Merge Existing Users."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-merge-existing-users='true'"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Email Match Enable."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-email-match-enable='true'"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Email Match Require."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-email-match-require='true'"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Email Match Verified."
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-email-match-verfied='false'"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Fullname Field."
|
||||
echo -e "Which field contains the ldap email address:"
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-fullname-field='fullname'"
|
||||
echo -e "\n"
|
||||
echo -e "Ldap Sync User Data."
|
||||
echo -e "Enable synchronization of user data:"
|
||||
echo -e "\t$ snap set $SNAP_NAME ldap-sync-user-data='true'"
|
||||
|
||||
Regular → Executable
+16
-5
@@ -74,11 +74,6 @@ REM # OAuth2 Token Endpoint. Example: /oauth/token
|
||||
REM # example: OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
REM SET OAUTH2_TOKEN_ENDPOINT=
|
||||
|
||||
REM # OAUTH2 ID Token Whitelist Fields.
|
||||
REM SET OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
|
||||
REM # OAUTH2 Request Permissions.
|
||||
REM SET OAUTH2_REQUEST_PERMISSIONS=[openid email profile]
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
|
||||
REM # LDAP_ENABLE : Enable or not the connection by the LDAP
|
||||
@@ -221,6 +216,22 @@ REM # LDAP_MERGE_EXISTING_USERS :
|
||||
REM # example : LDAP_MERGE_EXISTING_USERS=true
|
||||
REM SET LDAP_MERGE_EXISTING_USERS=false
|
||||
|
||||
REM # LDAP_EMAIL_MATCH_ENABLE : allow existing account matching by e-mail address when username does not match
|
||||
REM # example: LDAP_EMAIL_MATCH_ENABLE=true
|
||||
REM SET LDAP_EMAIL_MATCH_ENABLE=false
|
||||
|
||||
REM # LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
|
||||
REM # example: LDAP_EMAIL_MATCH_REQUIRE=true
|
||||
REM SET LDAP_EMAIL_MATCH_REQUIRE=false
|
||||
|
||||
REM # LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
|
||||
REM # example: LDAP_EMAIL_MATCH_VERIFIED=true
|
||||
REM SET LDAP_EMAIL_MATCH_VERIFIED=false
|
||||
|
||||
REM # LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
|
||||
REM # example: LDAP_EMAIL_FIELD=mail
|
||||
REM SET LDAP_EMAIL_FIELD=
|
||||
|
||||
REM # LDAP_SYNC_USER_DATA :
|
||||
REM # example : LDAP_SYNC_USER_DATA=true
|
||||
REM SET LDAP_SYNC_USER_DATA=false
|
||||
|
||||
+12
-4
@@ -95,10 +95,6 @@ function wekan_repo_check(){
|
||||
#export OAUTH2_FULLNAME_MAP=name
|
||||
# The claim name you want to map to the email field:
|
||||
#export OAUTH2_EMAIL_MAP=email
|
||||
# OAUTH2 ID Token Whitelist Fields.
|
||||
#export OAUTH2_ID_TOKEN_WHITELIST_FIELDS=[]
|
||||
# OAUTH2 Request Permissions.
|
||||
#export OAUTH2_REQUEST_PERMISSIONS=[openid profile email]
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 KEYCLOAK ====
|
||||
# https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
|
||||
@@ -245,6 +241,18 @@ function wekan_repo_check(){
|
||||
# LDAP_MERGE_EXISTING_USERS :
|
||||
# example : export LDAP_MERGE_EXISTING_USERS=true
|
||||
#export LDAP_MERGE_EXISTING_USERS=false
|
||||
# LDAP_EMAIL_MATCH_ENABLE : allow existing account matching by e-mail address when username does not match
|
||||
# example: LDAP_EMAIL_MATCH_ENABLE=true
|
||||
#export LDAP_EMAIL_MATCH_ENABLE=false
|
||||
# LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
|
||||
# example: LDAP_EMAIL_MATCH_REQUIRE=true
|
||||
#export LDAP_EMAIL_MATCH_REQUIRE=false
|
||||
# LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
|
||||
# example: LDAP_EMAIL_MATCH_VERIFIED=true
|
||||
#export LDAP_EMAIL_MATCH_VERIFIED=false
|
||||
# LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
|
||||
# example: LDAP_EMAIL_FIELD=mail
|
||||
#export LDAP_EMAIL_FIELD=
|
||||
# LDAP_SYNC_USER_DATA :
|
||||
# example : export LDAP_SYNC_USER_DATA=true
|
||||
#export LDAP_SYNC_USER_DATA=false
|
||||
|
||||
Reference in new issue
Block a user