Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a4564bed3a | ||
|
|
4ef3e587cb | ||
|
|
d6259836e0 | ||
|
|
ef246cfef3 | ||
|
|
90dd0ddb94 | ||
|
|
bd2c54398b | ||
|
|
e65776f9f0 | ||
|
|
5cafdd9878 | ||
|
|
49882a05d1 | ||
|
|
8e36a2bc83 | ||
|
|
24e47195e5 | ||
|
|
4b37958140 | ||
|
|
3edff32bde | ||
|
|
78c5e0f7ef | ||
|
|
49229e1723 | ||
|
|
14e2bfd1bf | ||
|
|
3c49e2d0ed | ||
|
|
d5bc66c9a4 | ||
|
|
4f6977668b | ||
|
|
17826c28e5 | ||
|
|
a3d71dd694 | ||
|
|
a5c39342ba | ||
|
|
ad75c541cf | ||
|
|
cd46cbeb8f | ||
|
|
888e1ad5d3 | ||
|
|
abb7108321 | ||
|
|
da21a2a410 | ||
|
|
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 | ||
|
|
4bf0914f1e | ||
|
|
96519296e1 | ||
|
|
03d06685b0 | ||
|
|
7d57c56b17 | ||
|
|
4ce766853c | ||
|
|
dc7bbd848c | ||
|
|
81744e6523 | ||
|
|
b66f471e53 | ||
|
|
202b8a92af | ||
|
|
1e98f6b781 | ||
|
|
f53e8fbd21 | ||
|
|
8e95871534 | ||
|
|
595a2d2baa | ||
|
|
227772bc33 | ||
|
|
2ca98e477d | ||
|
|
677bfc3f6b | ||
|
|
c7721b048d | ||
|
|
1417f091fe | ||
|
|
d22964bcfd | ||
|
|
59314ab17d | ||
|
|
5c083d99e2 | ||
|
|
d3abb0756e | ||
|
|
4de9848e34 | ||
|
|
bdbbb12f96 | ||
|
|
c1ea3f49ca | ||
|
|
905c45f225 | ||
|
|
352e5c6cb0 | ||
|
|
8996df5c09 | ||
|
|
7b5f02b4c8 |
No files matched your search
@@ -90,3 +90,5 @@ wekan:wekan-ldap
|
||||
wekan:accounts-cas
|
||||
wekan-scrollbar
|
||||
mquandalle:perfect-scrollbar
|
||||
mdg:meteor-apm-agent
|
||||
meteorhacks:unblock
|
||||
+3
-1
@@ -84,6 +84,7 @@ localstorage@1.2.0
|
||||
logging@1.1.19
|
||||
matb33:collection-hooks@0.8.4
|
||||
matteodem:easy-search@1.6.4
|
||||
mdg:meteor-apm-agent@3.1.2
|
||||
mdg:validation-error@0.5.1
|
||||
meteor@1.8.2
|
||||
meteor-base@1.2.0
|
||||
@@ -93,6 +94,7 @@ meteorhacks:collection-utils@1.2.0
|
||||
meteorhacks:meteorx@1.4.1
|
||||
meteorhacks:picker@1.0.3
|
||||
meteorhacks:subs-manager@1.6.4
|
||||
meteorhacks:unblock@1.1.0
|
||||
meteorspark:util@0.2.0
|
||||
minifier-css@1.2.16
|
||||
minifier-js@2.2.2
|
||||
@@ -144,7 +146,7 @@ retry@1.0.9
|
||||
routepolicy@1.0.12
|
||||
rzymek:fullcalendar@3.8.0
|
||||
salleman:accounts-oidc@1.0.10
|
||||
salleman:oidc@1.0.11
|
||||
salleman:oidc@1.0.12
|
||||
service-configuration@1.0.11
|
||||
session@1.1.7
|
||||
sha@1.0.9
|
||||
|
||||
+167
@@ -1,3 +1,170 @@
|
||||
# v2.35 2019-03-01 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Add Filter fix back](https://github.com/wekan/wekan/issues/2213),
|
||||
because there was no bug in filter fix.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v2.34 2019-03-01 Wekan release
|
||||
|
||||
This release tried to fix following bugs, but did not fix anything:
|
||||
|
||||
- Revert [Filter fix](https://github.com/wekan/wekan/issues/2213) because of
|
||||
[mongodb data tampered](https://github.com/wekan/wekan-snap/issues/83).
|
||||
This was added back at Wekan v2.35.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v2.33 2019-02-28 Wekan release
|
||||
|
||||
This release adds the following upgrades:
|
||||
|
||||
- [Upgrade Node.js to v8.15.1](https://github.com/wekan/wekan/commit/5cafdd9878ab4b6123024ec33279ccdae75f554f).
|
||||
|
||||
Thanks to Node.js developers and GitHub user xet7 for contributions.
|
||||
|
||||
# v2.32 2019-02-28 Wekan release
|
||||
|
||||
This release adds the following [performance improvements](https://github.com/wekan/wekan/pull/2214), thanks to justinr1234:
|
||||
|
||||
- New indexes for queries that were missing an index;
|
||||
- Bulk querying documents to reduce the number of mongo queries when loading a board;
|
||||
- Ensure oplog is being used to query the database by providing a `sort` key when `limit` is used querying the `boards` collection.
|
||||
|
||||
and fixes the following bugs related to [Template features](https://github.com/wekan/wekan/issues/2209), thanks to andresmanelli:
|
||||
|
||||
- [Fix filtering in swimlane view](https://github.com/wekan/wekan/commit/49229e1723de14cdc66dc6480624bba426d35e36) that was [broken since v2.29](https://github.com/wekan/wekan/issues/2213).
|
||||
|
||||
Thanks to above GitHub users for their contributions.
|
||||
|
||||
# v2.31 2019-02-28 Wekan release
|
||||
|
||||
This release fixes the following bugs related to [Template features](https://github.com/wekan/wekan/issues/2209), thanks to GitHub user andresmanelli:
|
||||
|
||||
- [Fix copy card](https://github.com/wekan/wekan/issues/2210).
|
||||
|
||||
# v2.30 2019-02-28 Wekan release
|
||||
|
||||
This release adds the following new [Template features](https://github.com/wekan/wekan/issues/2209), thanks to GitHub user andresmanelli:
|
||||
|
||||
- [Fix popup title. Add element title modification](https://github.com/wekan/wekan/commit/888e1ad5d3e32be53283aa32198057f669f3d706);
|
||||
- [Copy template attachments](https://github.com/wekan/wekan/commit/abb71083215462d91b084c4de13af0b130638e4d);
|
||||
- [Standarize copy functions. Match labels by name](https://github.com/wekan/wekan/commit/da21a2a410c9b905de89d66236748e0c8f5357ea).
|
||||
|
||||
# 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:
|
||||
|
||||
- [Fix authentication dropdown](https://github.com/wekan/wekan/pull/2191).
|
||||
Thanks to Akuket.
|
||||
|
||||
Thanks to above GitHub users for their contributions, and translators for their translations.
|
||||
|
||||
# v2.22 2019-02-13 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Kadira integration](https://github.com/wekan/wekan/issues/2152). Thanks to GavinLilly.
|
||||
- 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.)
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix: Remove overlap of side bar button with card/list menu button on
|
||||
mobile browser](https://github.com/wekan/wekan/issues/2183). Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions, and translators for their translations.
|
||||
|
||||
# v2.21 2019-02-12 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Bump salleman-oidc to 1.0.12](https://github.com/wekan/wekan/commit/352e5c6cb07b1a09ef692af6f6c49c3b1f3e91c1). Thanks to danpatdav.
|
||||
- [Added parameters for OIDC claim mapping](https://github.com/wekan/wekan/commit/bdbbb12f967f7e4f605e6c3310290180f6c8c6d1).
|
||||
These mapping parameters take advantage of new code in salleman-oidc 1.0.12 to override the default claim names provided by the userinfo endpoint.
|
||||
Thanks to danpatdav.
|
||||
- [Add OIDC claim mapping parameters to docker-compose.yml/Snap/Source](https://github.com/wekan/wekan/commit/59314ab17d65e9579d2f29b32685b7777f2a06a1).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions.
|
||||
|
||||
# v2.20 2019-02-11 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
+19
-1
@@ -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
|
||||
@@ -26,6 +27,10 @@ ARG OAUTH2_SERVER_URL
|
||||
ARG OAUTH2_AUTH_ENDPOINT
|
||||
ARG OAUTH2_USERINFO_ENDPOINT
|
||||
ARG OAUTH2_TOKEN_ENDPOINT
|
||||
ARG OAUTH2_ID_MAP
|
||||
ARG OAUTH2_USERNAME_MAP
|
||||
ARG OAUTH2_FULLNAME_MAP
|
||||
ARG OAUTH2_EMAIL_MAP
|
||||
ARG LDAP_ENABLE
|
||||
ARG LDAP_PORT
|
||||
ARG LDAP_HOST
|
||||
@@ -61,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
|
||||
@@ -78,7 +87,7 @@ ARG DEFAULT_AUTHENTICATION_METHOD
|
||||
# ENV BUILD_DEPS="paxctl"
|
||||
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python python3 python3-distutils git ca-certificates gcc-7" \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v8.15.0 \
|
||||
NODE_VERSION=v8.15.1 \
|
||||
METEOR_RELEASE=1.6.0.1 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
@@ -87,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 \
|
||||
@@ -101,6 +111,10 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
|
||||
OAUTH2_AUTH_ENDPOINT="" \
|
||||
OAUTH2_USERINFO_ENDPOINT="" \
|
||||
OAUTH2_TOKEN_ENDPOINT="" \
|
||||
OAUTH2_ID_MAP="" \
|
||||
OAUTH2_USERNAME_MAP="" \
|
||||
OAUTH2_FULLNAME_MAP="" \
|
||||
OAUTH2_EMAIL_MAP="" \
|
||||
LDAP_ENABLE=false \
|
||||
LDAP_PORT=389 \
|
||||
LDAP_HOST="" \
|
||||
@@ -137,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.20.0"
|
||||
appVersion: "v2.35.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,32 +456,15 @@ 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;
|
||||
listId = lSelect.options[lSelect.selectedIndex].value;
|
||||
const slSelect = $('.js-select-swimlanes')[0];
|
||||
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
|
||||
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
|
||||
const bSelect = $('.js-select-boards')[0];
|
||||
card.boardId = bSelect.options[bSelect.selectedIndex].value;
|
||||
const boardId = bSelect.options[bSelect.selectedIndex].value;
|
||||
const textarea = $('#copy-card-title');
|
||||
const title = textarea.val().trim();
|
||||
// insert new card to the bottom of new list
|
||||
@@ -490,38 +473,13 @@ Template.copyCardPopup.events({
|
||||
if (title) {
|
||||
card.title = title;
|
||||
card.coverId = '';
|
||||
const _id = Cards.insert(card);
|
||||
const _id = card.copy(boardId, swimlaneId, listId);
|
||||
// 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();
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
padding-left: 10px
|
||||
color: #a6a6a6
|
||||
|
||||
|
||||
.list-header-menu
|
||||
position: absolute
|
||||
padding: 27px 19px
|
||||
@@ -155,6 +156,9 @@
|
||||
float: left
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
.list-header-menu
|
||||
margin-right: 30px
|
||||
|
||||
.mini-list
|
||||
flex: 0 0 60px
|
||||
height: 60px
|
||||
|
||||
@@ -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,41 @@ 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")
|
||||
form
|
||||
label
|
||||
| {{_ 'title'}}
|
||||
input.js-element-title(type="text" placeholder="{{_ 'title'}}" autofocus required)
|
||||
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,49 @@ 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 title = $('.js-element-title').val().trim();
|
||||
if (!title)
|
||||
return;
|
||||
const element = Blaze.getData(evt.currentTarget);
|
||||
element.title = title;
|
||||
let _id = '';
|
||||
if (!this.isTemplateSearch || this.isCardTemplateSearch) {
|
||||
// Card insertion
|
||||
// 1. Common
|
||||
element.sort = Lists.findOne(this.listId).cards().count();
|
||||
// 1.A From template
|
||||
if (this.isTemplateSearch) {
|
||||
element.type = 'cardType-card';
|
||||
element.linkedId = '';
|
||||
_id = element.copy(this.boardId, this.swimlaneId, this.listId);
|
||||
// 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.sort = Swimlanes.findOne(this.swimlaneId).lists().count();
|
||||
element.type = 'list';
|
||||
_id = element.copy(this.boardId, this.swimlaneId);
|
||||
} else if (this.isSwimlaneTemplateSearch) {
|
||||
element.sort = Boards.findOne(this.boardId).swimlanes().count();
|
||||
element.type = 'swimlalne';
|
||||
_id = element.copy(this.boardId);
|
||||
} else if (this.isBoardTemplateSearch) {
|
||||
board = Boards.findOne(element.linkedId);
|
||||
board.sort = Boards.find({archived: false}).count();
|
||||
board.type = 'board';
|
||||
board.title = element.title;
|
||||
delete board.slug;
|
||||
_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,17 +14,17 @@ 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
|
||||
+connectionMethod
|
||||
+connectionMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
|
||||
div.at-form-lang
|
||||
select.select-lang.js-userform-set-language
|
||||
each languages
|
||||
|
||||
@@ -2,5 +2,8 @@ template(name='connectionMethod')
|
||||
div.at-form-authentication
|
||||
label {{_ 'authentication-method'}}
|
||||
select.select-authentication
|
||||
each authentications
|
||||
option(value="{{value}}") {{_ value}}
|
||||
each authentications
|
||||
if isSelected value
|
||||
option(value="{{value}}" selected) {{_ value}}
|
||||
else
|
||||
option(value="{{value}}") {{_ value}}
|
||||
@@ -31,4 +31,7 @@ Template.connectionMethod.helpers({
|
||||
authentications() {
|
||||
return Template.instance().authenticationMethods.get();
|
||||
},
|
||||
isSelected(match) {
|
||||
return Template.instance().data.authenticationMethod === match;
|
||||
},
|
||||
});
|
||||
@@ -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'),
|
||||
|
||||
+91
-38
@@ -191,9 +191,12 @@ services:
|
||||
# - MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
|
||||
#---------------------------------------------------------------
|
||||
# ==== OPTIONAL: KADIRA PERFORMANCE MONITORING FOR METEOR ====
|
||||
# https://github.com/smeijer/kadira
|
||||
# https://github.com/edemaine/kadira-compose
|
||||
# https://github.com/meteor/meteor-apm-agent
|
||||
# https://blog.meteor.com/kadira-apm-is-now-open-source-490469ffc85f
|
||||
# - export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011
|
||||
#- APM_OPTIONS_ENDPOINT=http://<kadira-ip>:11011
|
||||
#- APM_APP_ID=
|
||||
#- APM_APP_SECRET=
|
||||
#---------------------------------------------------------------
|
||||
# ==== OPTIONAL: LOGS AND STATS ====
|
||||
# https://github.com/wekan/wekan/wiki/Logs
|
||||
@@ -217,25 +220,25 @@ 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. Example: *
|
||||
# CORS: Set Access-Control-Allow-Origin header.
|
||||
#- CORS=*
|
||||
#-----------------------------------------------------------------
|
||||
# ==== MATOMO INTEGRATION ====
|
||||
# Optional: Integration with Matomo https://matomo.org that is installed to your server
|
||||
# The address of the server where Matomo is hosted.
|
||||
# example: - MATOMO_ADDRESS=https://example.com/matomo
|
||||
#- MATOMO_ADDRESS=
|
||||
#- MATOMO_ADDRESS=https://example.com/matomo
|
||||
# The value of the site ID given in Matomo server for Wekan
|
||||
# example: - MATOMO_SITE_ID=12345
|
||||
#- MATOMO_SITE_ID=
|
||||
#- MATOMO_SITE_ID=1
|
||||
# The option do not track which enables users to not be tracked by matomo
|
||||
# example: - MATOMO_DO_NOT_TRACK=false
|
||||
#- MATOMO_DO_NOT_TRACK=
|
||||
#- MATOMO_DO_NOT_TRACK=true
|
||||
# The option that allows matomo to retrieve the username:
|
||||
# example: MATOMO_WITH_USERNAME=true
|
||||
#- MATOMO_WITH_USERNAME=false
|
||||
#- MATOMO_WITH_USERNAME=true
|
||||
#-----------------------------------------------------------------
|
||||
# ==== BROWSER POLICY AND TRUSTED IFRAME URL ====
|
||||
# Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside.
|
||||
@@ -243,41 +246,75 @@ services:
|
||||
# and allows all iframing etc. See wekan/server/policy.js
|
||||
- BROWSER_POLICY_ENABLED=true
|
||||
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
|
||||
#- TRUSTED_URL=
|
||||
#- TRUSTED_URL=https://intra.example.com
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OUTGOING WEBHOOKS ====
|
||||
# What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId .
|
||||
# example: WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
|
||||
#- WEBHOOKS_ATTRIBUTES=
|
||||
#- WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 ONLY WITH OIDC AND DOORKEEPER AS INDENTITY PROVIDER
|
||||
# ==== Debug OIDC OAuth2 etc ====
|
||||
#- DEBUG=true
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 AZURE ====
|
||||
# https://github.com/wekan/wekan/wiki/Azure
|
||||
# 1) Register the application with Azure. Make sure you capture
|
||||
# the application ID as well as generate a secret key.
|
||||
# 2) Configure the environment variables. This differs slightly
|
||||
# by installation type, but make sure you have the following:
|
||||
#- OAUTH2_ENABLED=true
|
||||
# Application GUID captured during app registration:
|
||||
#- OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
|
||||
# Secret key generated during app registration:
|
||||
#- OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
#- OAUTH2_SERVER_URL=https://login.microsoftonline.com/
|
||||
#- OAUTH2_AUTH_ENDPOINT=/oauth2/v2.0/authorize
|
||||
#- OAUTH2_USERINFO_ENDPOINT=https://graph.microsoft.com/oidc/userinfo
|
||||
#- OAUTH2_TOKEN_ENDPOINT=/oauth2/v2.0/token
|
||||
# The claim name you want to map to the unique ID field:
|
||||
#- OAUTH2_ID_MAP=email
|
||||
# The claim name you want to map to the username field:
|
||||
#- OAUTH2_USERNAME_MAP=email
|
||||
# The claim name you want to map to the full name field:
|
||||
#- OAUTH2_FULLNAME_MAP=name
|
||||
# Tthe claim name you want to map to the email field:
|
||||
#- OAUTH2_EMAIL_MAP=email
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 KEYCLOAK ====
|
||||
# https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
|
||||
#- OAUTH2_ENABLED=true
|
||||
#- OAUTH2_CLIENT_ID=<Keycloak create Client ID>
|
||||
#- OAUTH2_SERVER_URL=<Keycloak server name>/auth
|
||||
#- OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
|
||||
#- OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
|
||||
#- OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
|
||||
#- OAUTH2_SECRET=<keycloak client secret>
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 DOORKEEPER ====
|
||||
# https://github.com/wekan/wekan/issues/1874
|
||||
# https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# Enable the OAuth2 connection
|
||||
# example: OAUTH2_ENABLED=true
|
||||
#- OAUTH2_ENABLED=false
|
||||
#- OAUTH2_ENABLED=true
|
||||
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
|
||||
# example: OAUTH2_CLIENT_ID=abcde12345
|
||||
#- OAUTH2_CLIENT_ID=
|
||||
# OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
|
||||
# example: OAUTH2_SECRET=54321abcde
|
||||
#- OAUTH2_SECRET=
|
||||
# OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
|
||||
# example: OAUTH2_SERVER_URL=https://chat.example.com
|
||||
#- OAUTH2_SERVER_URL=
|
||||
# OAuth2 Authorization Endpoint. Example: /oauth/authorize
|
||||
# example: OAUTH2_AUTH_ENDPOINT=/oauth/authorize
|
||||
#- OAUTH2_AUTH_ENDPOINT=
|
||||
# OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
|
||||
# example: OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
|
||||
#- OAUTH2_USERINFO_ENDPOINT=
|
||||
# OAuth2 Token Endpoint. Example: /oauth/token
|
||||
# example: OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
#- OAUTH2_TOKEN_ENDPOINT=
|
||||
#-----------------------------------------------------------------
|
||||
# Debug OIDC OAuth2 etc
|
||||
#- DEBUG=true
|
||||
# OAuth2 Client ID.
|
||||
#- OAUTH2_CLIENT_ID=abcde12345
|
||||
# OAuth2 Secret.
|
||||
#- OAUTH2_SECRET=54321abcde
|
||||
# OAuth2 Server URL.
|
||||
#- OAUTH2_SERVER_URL=https://chat.example.com
|
||||
# OAuth2 Authorization Endpoint.
|
||||
#- OAUTH2_AUTH_ENDPOINT=/oauth/authorize
|
||||
# OAuth2 Userinfo Endpoint.
|
||||
#- OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
|
||||
# OAuth2 Token Endpoint.
|
||||
#- OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
# OAuth2 ID Mapping
|
||||
#- OAUTH2_ID_MAP=
|
||||
# OAuth2 Username Mapping
|
||||
#- OAUTH2_USERNAME_MAP=
|
||||
# OAuth2 Fullname Mapping
|
||||
#- OAUTH2_FULLNAME_MAP=
|
||||
# OAuth2 Email Mapping
|
||||
#- OAUTH2_EMAIL_MAP=
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP ====
|
||||
# https://github.com/wekan/wekan/wiki/LDAP
|
||||
@@ -432,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
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
|
||||
"linkCardPopup-title": "ربط البطاقة",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "بحث",
|
||||
"copyCardPopup-title": "نسخ البطاقة",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
|
||||
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
|
||||
"linkCardPopup-title": "Свържи картата",
|
||||
"searchCardPopup-title": "Търсене на карта",
|
||||
"searchElementPopup-title": "Търсене",
|
||||
"copyCardPopup-title": "Копирай картата",
|
||||
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Buscar Fitxa",
|
||||
"searchElementPopup-title": "Cerca",
|
||||
"copyCardPopup-title": "Copia la fitxa",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títols de fitxa i Descripcions de destí en aquest format JSON",
|
||||
@@ -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.",
|
||||
|
||||
+36
-30
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Opravdu chcete smazat tento checklist?",
|
||||
"copy-card-link-to-clipboard": "Kopírovat adresu karty do mezipaměti",
|
||||
"linkCardPopup-title": "Propojit kartu",
|
||||
"searchCardPopup-title": "Hledat Kartu",
|
||||
"searchElementPopup-title": "Hledat",
|
||||
"copyCardPopup-title": "Kopírovat kartu",
|
||||
"copyChecklistToManyCardsPopup-title": "Kopírovat checklist do více karet",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Názvy a popisy cílové karty v tomto formátu JSON",
|
||||
@@ -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í"
|
||||
}
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Wollen Sie die Checkliste wirklich löschen?",
|
||||
"copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage",
|
||||
"linkCardPopup-title": "Karte verknüpfen",
|
||||
"searchCardPopup-title": "Karte suchen",
|
||||
"searchElementPopup-title": "Suche",
|
||||
"copyCardPopup-title": "Karte kopieren",
|
||||
"copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Αναζήτηση",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Serĉi",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copiar enlace a tarjeta en el portapapeles",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Buscar",
|
||||
"copyCardPopup-title": "Copiar Tarjeta",
|
||||
"copyChecklistToManyCardsPopup-title": "Copiar Plantilla Checklist a Muchas Tarjetas",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títulos y Descripciones de la Tarjeta Destino en este formato JSON",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
|
||||
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
|
||||
"linkCardPopup-title": "Enlazar tarjeta",
|
||||
"searchCardPopup-title": "Buscar tarjeta",
|
||||
"searchElementPopup-title": "Buscar",
|
||||
"copyCardPopup-title": "Copiar la tarjeta",
|
||||
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Kopiatu txartela arbelera",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Bilatu",
|
||||
"copyCardPopup-title": "Kopiatu txartela",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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",
|
||||
|
||||
+49
-43
@@ -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": "فقط نظر",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "مطمئنا چک لیست پاک شود؟",
|
||||
"copy-card-link-to-clipboard": "درج پیوند کارت در حافظه",
|
||||
"linkCardPopup-title": "ارتباط دادن کارت",
|
||||
"searchCardPopup-title": "جستجوی کارت",
|
||||
"searchElementPopup-title": "جستجو",
|
||||
"copyCardPopup-title": "کپی کارت",
|
||||
"copyChecklistToManyCardsPopup-title": "کپی قالب کارت به کارتهای متعدد",
|
||||
"copyChecklistToManyCardsPopup-instructions": "عنوان و توضیحات کارت مقصد در این قالب JSON",
|
||||
@@ -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": "نوع اعتبارسنجی پیشفرض"
|
||||
}
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Oletko varma että haluat poistaa tarkistuslistan?",
|
||||
"copy-card-link-to-clipboard": "Kopioi kortin linkki leikepöydälle",
|
||||
"linkCardPopup-title": "Linkitä kortti",
|
||||
"searchCardPopup-title": "Etsi kortti",
|
||||
"searchElementPopup-title": "Etsi",
|
||||
"copyCardPopup-title": "Kopioi kortti",
|
||||
"copyChecklistToManyCardsPopup-title": "Kopioi tarkistuslistan malli monille korteille",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Kohde korttien otsikot ja kuvaukset JSON muodossa",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer la checklist ?",
|
||||
"copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
|
||||
"linkCardPopup-title": "Lier une Carte",
|
||||
"searchCardPopup-title": "Chercher une Carte",
|
||||
"searchElementPopup-title": "Chercher",
|
||||
"copyCardPopup-title": "Copier la carte",
|
||||
"copyChecklistToManyCardsPopup-title": "Copier le modèle de checklist vers plusieurs cartes",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Titres et descriptions des cartes de destination dans ce format JSON",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "למחוק את רשימת המשימות?",
|
||||
"copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים",
|
||||
"linkCardPopup-title": "קישור כרטיס",
|
||||
"searchCardPopup-title": "חיפוש כרטיס",
|
||||
"searchElementPopup-title": "חיפוש",
|
||||
"copyCardPopup-title": "העתק כרטיס",
|
||||
"copyChecklistToManyCardsPopup-title": "העתקת תבנית רשימת מטלות למגוון כרטיסים",
|
||||
"copyChecklistToManyCardsPopup-instructions": "כותרות ותיאורים של כרטיסי יעד בתצורת JSON זו",
|
||||
@@ -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": "מספר המשימות ברשימה זו גדולה ממגבלת הפריטים „בעבודה” שהגדרת.",
|
||||
|
||||
+7
-1
@@ -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": "सीएएस के साथ साइन इन करें",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "क्या आप वाकई जांचसूची हटाना चाहते हैं?",
|
||||
"copy-card-link-to-clipboard": "कॉपी कार्ड क्लिपबोर्ड करने के लिए लिंक",
|
||||
"linkCardPopup-title": "कार्ड कड़ी",
|
||||
"searchCardPopup-title": "कार्ड खोज",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "कार्ड प्रतिलिपि",
|
||||
"copyChecklistToManyCardsPopup-title": "कई कार्ड के लिए जांचसूची खाके की प्रतिलिपि बनाएँ",
|
||||
"copyChecklistToManyCardsPopup-instructions": "इस JSON प्रारूप में गंतव्य कार्ड शीर्षक और विवरण",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Keresés",
|
||||
"copyCardPopup-title": "Kártya másolása",
|
||||
"copyChecklistToManyCardsPopup-title": "Ellenőrzőlista sablon másolása több kártyára",
|
||||
"copyChecklistToManyCardsPopup-instructions": "A célkártyák címe és a leírások ebben a JSON formátumban",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Cari",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+155
-149
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Sei sicuro di voler eliminare la checklist?",
|
||||
"copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
|
||||
"linkCardPopup-title": "Collega scheda",
|
||||
"searchCardPopup-title": "Cerca scheda",
|
||||
"searchElementPopup-title": "Cerca",
|
||||
"copyCardPopup-title": "Copia Scheda",
|
||||
"copyChecklistToManyCardsPopup-title": "Copia template checklist su più schede",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Titolo e la descrizione della scheda di destinazione in questo formato JSON",
|
||||
@@ -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"
|
||||
}
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "カードへのリンクをクリップボードにコピー",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "検索",
|
||||
"copyCardPopup-title": "カードをコピー",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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-ით",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "დარწმუნებული ხართ, რომ გსურთ კატალოგის წაშლა ? ",
|
||||
"copy-card-link-to-clipboard": "დააკოპირეთ ბარათის ბმული clipboard-ზე",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "ძებნა",
|
||||
"copyCardPopup-title": "ბარათის ასლი",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "클립보드에 카드의 링크가 복사되었습니다.",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "검색",
|
||||
"copyCardPopup-title": "카드 복사",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
|
||||
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
|
||||
"linkCardPopup-title": "Свържи картата",
|
||||
"searchCardPopup-title": "Търсене на карта",
|
||||
"searchElementPopup-title": "Търсене",
|
||||
"copyCardPopup-title": "Копирай картата",
|
||||
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Kopieer kaart link naar klembord",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Zoek",
|
||||
"copyCardPopup-title": "Kopieer kaart",
|
||||
"copyChecklistToManyCardsPopup-title": "Checklist sjabloon kopiëren naar meerdere kaarten",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Doel kaart titels en omschrijvingen in dit JSON formaat",
|
||||
@@ -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 ",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Czy jesteś pewien, że chcesz usunąć listę zadań?",
|
||||
"copy-card-link-to-clipboard": "Skopiuj łącze karty do schowka",
|
||||
"linkCardPopup-title": "Podepnij kartę",
|
||||
"searchCardPopup-title": "Znajdź kartę",
|
||||
"searchElementPopup-title": "Wyszukaj",
|
||||
"copyCardPopup-title": "Skopiuj kartę",
|
||||
"copyChecklistToManyCardsPopup-title": "Kopiuj szablon listy zadań do wielu kart",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Docelowe tytuły i opisy kart są w formacie JSON",
|
||||
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Tem certeza que quer excluir a lista de verificação?",
|
||||
"copy-card-link-to-clipboard": "Copiar link do cartão para a área de transferência",
|
||||
"linkCardPopup-title": "Ligar Cartão",
|
||||
"searchCardPopup-title": "Procurar Cartão",
|
||||
"searchElementPopup-title": "Buscar",
|
||||
"copyCardPopup-title": "Copiar o cartão",
|
||||
"copyChecklistToManyCardsPopup-title": "Copiar modelo de lista de verificação para vários cartões",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títulos e descrições do cartão de destino neste formato JSON",
|
||||
@@ -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.",
|
||||
@@ -654,7 +660,7 @@
|
||||
"authentication-method": "Método de autenticação",
|
||||
"authentication-type": "Tipo de autenticação",
|
||||
"custom-product-name": "Nome Customizado do Produto",
|
||||
"layout": "Leiaute",
|
||||
"layout": "Layout",
|
||||
"hide-logo": "Esconder Logo",
|
||||
"add-custom-html-after-body-start": "Adicionar HTML Customizado depois do início do <body>",
|
||||
"add-custom-html-before-body-end": "Adicionar HTML Customizado antes do fim do </body>",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Caută",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Вы уверены, что хотите удалить контрольный список?",
|
||||
"copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
|
||||
"linkCardPopup-title": "Карточка-ссылка",
|
||||
"searchCardPopup-title": "Найти карточку",
|
||||
"searchElementPopup-title": "Поиск",
|
||||
"copyCardPopup-title": "Копировать карточку",
|
||||
"copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Названия и описания целевых карт в формате JSON",
|
||||
@@ -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": "Количество задач в этом списке превышает установленный вами лимит",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Pretraga",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+26
-20
@@ -78,7 +78,7 @@
|
||||
"and-n-other-card": "Och __count__ annat kort",
|
||||
"and-n-other-card_plural": "Och __count__ andra kort",
|
||||
"apply": "Tillämpa",
|
||||
"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.",
|
||||
"app-is-offline": "Läser in, vänligen vänta. Uppdatering av sidan kommer att orsaka förlust av data. Om inläsningen inte fungerar, kontrollera att servern inte har stoppats.",
|
||||
"archive": "Flytta till Arkiv",
|
||||
"archive-all": "Flytta alla till Arkiv",
|
||||
"archive-board": "Flytta Anslagstavla till Arkiv",
|
||||
@@ -86,12 +86,14 @@
|
||||
"archive-list": "Flytta Lista till Arkiv",
|
||||
"archive-swimlane": "Move Swimlane to Archive",
|
||||
"archive-selection": "Flytta markerade till Arkiv",
|
||||
"archiveBoardPopup-title": "Move Board to Archive?",
|
||||
"archiveBoardPopup-title": "Flytta Anslagstavla till Arkiv?",
|
||||
"archived-items": "Arkiv",
|
||||
"archived-boards": "Boards in Archive",
|
||||
"archived-boards": "Anslagstavlor i Arkiv",
|
||||
"restore-board": "Återställ anslagstavla",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"no-archived-boards": "Inga anslagstavlor i Arkiv.",
|
||||
"archives": "Arkiv",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "Tilldela medlem",
|
||||
"attached": "bifogad",
|
||||
"attachment": "Bilaga",
|
||||
@@ -123,7 +125,7 @@
|
||||
"card-comments-title": "Detta kort har %s kommentar.",
|
||||
"card-delete-notice": "Ta bort är permanent. Du kommer att förlora alla åtgärder i samband med detta kort.",
|
||||
"card-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsflöde och du kommer inte att kunna öppna kortet igen. Det går inte att ångra.",
|
||||
"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": "Du kan flytta ett kort för att Arkiv för att ta bort det från anslagstavlan och bevara aktiviteten.",
|
||||
"card-due": "Förfaller",
|
||||
"card-due-on": "Förfaller på",
|
||||
"card-spent": "Spenderad tid",
|
||||
@@ -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",
|
||||
@@ -166,7 +169,7 @@
|
||||
"clipboard": "Urklipp eller dra och släpp",
|
||||
"close": "Stäng",
|
||||
"close-board": "Stäng anslagstavla",
|
||||
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
|
||||
"close-board-pop": "Du kommer att kunna återställa anslagstavlan genom att klicka på knappen \"Arkiv\" från hemrubriken.",
|
||||
"color-black": "svart",
|
||||
"color-blue": "blå",
|
||||
"color-crimson": "crimson",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Är du säker på att du vill radera checklista?",
|
||||
"copy-card-link-to-clipboard": "Kopiera kortlänk till urklipp",
|
||||
"linkCardPopup-title": "Länka kort",
|
||||
"searchCardPopup-title": "Sök kort",
|
||||
"searchElementPopup-title": "Sök",
|
||||
"copyCardPopup-title": "Kopiera kort",
|
||||
"copyChecklistToManyCardsPopup-title": "Kopiera checklist-mallen till flera kort",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destinationskorttitlar och beskrivningar i detta JSON-format",
|
||||
@@ -299,17 +302,17 @@
|
||||
"import-board": "importera anslagstavla",
|
||||
"import-board-c": "Importera anslagstavla",
|
||||
"import-board-title-trello": "Importera anslagstavla från Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-wekan": "Importera anslagstavla från tidigare 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": "Importerad anslagstavla raderar all befintlig data på anslagstavla och ersätter den med importerat anslagstavla.",
|
||||
"from-trello": "Från Trello",
|
||||
"from-wekan": "Från tidigare export",
|
||||
"import-board-instruction-trello": "I din Trello-anslagstavla, gå till 'Meny', sedan 'Mera', 'Skriv ut och exportera', 'Exportera JSON' och kopiera den resulterande text.",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-wekan": "På din anslagstavla, gå till \"Meny\", sedan \"Exportera anslagstavla\" och kopiera texten i den hämtade filen.",
|
||||
"import-board-instruction-about-errors": "Om du får fel vid import av anslagstavla, ibland importerar fortfarande fungerar, och styrelsen är på alla sidor för anslagstavlor.",
|
||||
"import-json-placeholder": "Klistra in giltigt JSON data här",
|
||||
"import-map-members": "Kartlägg medlemmar",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-members-map": "Din importerade anslagstavla har några medlemmar. Vänligen kartlägg medlemmarna du vill importera till dina användare",
|
||||
"import-show-user-mapping": "Granska medlemskartläggning",
|
||||
"import-user-select": "Pick your existing user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Välj medlem",
|
||||
@@ -332,10 +335,10 @@
|
||||
"leaveBoardPopup-title": "Lämna anslagstavla ?",
|
||||
"link-card": "Länka till detta kort",
|
||||
"list-archive-cards": "Flytta alla kort i den här listan till Arkiv",
|
||||
"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": "Detta kommer att ta bort alla kort i denna lista från anslagstavlan. För att visa kort i Arkiv och få dem tillbaka till anslagstavlan, klicka på \"Meny\" > \"Arkiv\".",
|
||||
"list-move-cards": "Flytta alla kort i denna lista",
|
||||
"list-select-cards": "Välj alla kort i denna lista",
|
||||
"set-color-list": "Set Color",
|
||||
"set-color-list": "Ange färg",
|
||||
"listActionPopup-title": "Liståtgärder",
|
||||
"swimlaneActionPopup-title": "Simbana-åtgärder",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
@@ -343,7 +346,7 @@
|
||||
"listMorePopup-title": "Mera",
|
||||
"link-list": "Länk till den här listan",
|
||||
"list-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsmatningen och du kommer inte att kunna återställa listan. Det går inte att ångra.",
|
||||
"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": "Du kan flytta en lista till Arkiv för att ta bort den från anslagstavlan och bevara aktiviteten.",
|
||||
"lists": "Listor",
|
||||
"swimlanes": "Simbanor ",
|
||||
"log-out": "Logga ut",
|
||||
@@ -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.",
|
||||
@@ -568,7 +574,7 @@
|
||||
"r-removed-from": "Borttagen från",
|
||||
"r-the-board": "anslagstavlan",
|
||||
"r-list": "lista",
|
||||
"set-filter": "Set Filter",
|
||||
"set-filter": "Ställ in filter",
|
||||
"r-moved-to": "Flyttad till",
|
||||
"r-moved-from": "Flyttad från",
|
||||
"r-archived": "Flyttad till Arkiv",
|
||||
@@ -576,13 +582,13 @@
|
||||
"r-a-card": "ett kort",
|
||||
"r-when-a-label-is": "När en etikett är",
|
||||
"r-when-the-label-is": "När etiketten är",
|
||||
"r-list-name": "list name",
|
||||
"r-list-name": "listnamn",
|
||||
"r-when-a-member": "När en medlem är",
|
||||
"r-when-the-member": "När medlemmen",
|
||||
"r-name": "namn",
|
||||
"r-when-a-attach": "When an attachment",
|
||||
"r-when-a-checklist": "When a checklist is",
|
||||
"r-when-the-checklist": "When the checklist",
|
||||
"r-when-a-attach": "När en bilaga",
|
||||
"r-when-a-checklist": "När en checklista är",
|
||||
"r-when-the-checklist": "När checklistan",
|
||||
"r-completed": "Avslutad",
|
||||
"r-made-incomplete": "Made incomplete",
|
||||
"r-when-a-item": "When a checklist item is",
|
||||
@@ -660,6 +666,6 @@
|
||||
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
|
||||
"error-undefined": "Något gick fel",
|
||||
"error-ldap-login": "Ett fel uppstod när du försökte logga in",
|
||||
"display-authentication-method": "Display Authentication Method",
|
||||
"default-authentication-method": "Default Authentication Method"
|
||||
"display-authentication-method": "Visa autentiseringsmetod",
|
||||
"default-authentication-method": "Standard autentiseringsmetod"
|
||||
}
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+64
-58
@@ -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,46 +173,46 @@
|
||||
"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",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "தேடு ",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "ค้นหา",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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.",
|
||||
|
||||
+13
-7
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Kontrol listesini silmek istediğinden emin misin?",
|
||||
"copy-card-link-to-clipboard": "Kartın linkini kopyala",
|
||||
"linkCardPopup-title": "Bağlantı kartı",
|
||||
"searchCardPopup-title": "Kart Ara",
|
||||
"searchElementPopup-title": "Arama",
|
||||
"copyCardPopup-title": "Kartı Kopyala",
|
||||
"copyChecklistToManyCardsPopup-title": "Yapılacaklar Listesi şemasını birden çok karta kopyala",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Hedef Kart Başlıkları ve Açıklamaları bu JSON formatında",
|
||||
@@ -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.",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Скопіювати посилання на картку в буфер обміну",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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": "Кількість завдань у цьому списку перевищує встановлений вами ліміт",
|
||||
|
||||
+7
-1
@@ -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",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"linkCardPopup-title": "Link Card",
|
||||
"searchCardPopup-title": "Search Card",
|
||||
"searchElementPopup-title": "Search",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
@@ -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登录",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "确定要删除清单吗?",
|
||||
"copy-card-link-to-clipboard": "复制卡片链接到剪贴板",
|
||||
"linkCardPopup-title": "链接卡片",
|
||||
"searchCardPopup-title": "搜索卡片",
|
||||
"searchElementPopup-title": "搜索",
|
||||
"copyCardPopup-title": "复制卡片",
|
||||
"copyChecklistToManyCardsPopup-title": "复制清单模板至多个卡片",
|
||||
"copyChecklistToManyCardsPopup-instructions": "以JSON格式表示目标卡片的标题和描述",
|
||||
@@ -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 登入",
|
||||
@@ -204,7 +207,7 @@
|
||||
"confirm-checklist-delete-dialog": "你確定要刪除待辦清單嗎?",
|
||||
"copy-card-link-to-clipboard": "將卡片連結複製到剪貼簿",
|
||||
"linkCardPopup-title": "連結卡片",
|
||||
"searchCardPopup-title": "搜尋卡片",
|
||||
"searchElementPopup-title": "搜尋",
|
||||
"copyCardPopup-title": "複製卡片",
|
||||
"copyChecklistToManyCardsPopup-title": "複製待辦清單的樣板到多個卡片",
|
||||
"copyChecklistToManyCardsPopup-instructions": "使用此 JSON 格式來表示目標卡片的標題和描述",
|
||||
@@ -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.",
|
||||
|
||||
@@ -27,6 +27,10 @@ Attachments = new FS.Collection('attachments', {
|
||||
|
||||
|
||||
if (Meteor.isServer) {
|
||||
Meteor.startup(() => {
|
||||
Attachments.files._ensureIndex({ cardId: 1 });
|
||||
});
|
||||
|
||||
Attachments.allow({
|
||||
insert(userId, doc) {
|
||||
return allowIsBoardMember(userId, Boards.findOne(doc.boardId));
|
||||
|
||||
+106
-3
@@ -304,10 +304,31 @@ 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.copy(_id);
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Is supplied user authorized to view this board?
|
||||
*/
|
||||
@@ -456,6 +477,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 +553,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 +655,13 @@ Boards.helpers({
|
||||
});
|
||||
},
|
||||
|
||||
isTemplateBoard() {
|
||||
return this.type === 'template-board';
|
||||
},
|
||||
|
||||
isTemplatesBoard() {
|
||||
return this.type === 'template-container';
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -907,7 +1010,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 +1047,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 +1118,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);
|
||||
},
|
||||
|
||||
+61
-2
@@ -246,7 +246,7 @@ Cards.attachSchema(new SimpleSchema({
|
||||
* type of the card
|
||||
*/
|
||||
type: String,
|
||||
defaultValue: '',
|
||||
defaultValue: 'cardType-card',
|
||||
},
|
||||
linkedId: {
|
||||
/**
|
||||
@@ -272,6 +272,61 @@ Cards.allow({
|
||||
});
|
||||
|
||||
Cards.helpers({
|
||||
copy(boardId, swimlaneId, listId) {
|
||||
const oldBoard = Boards.findOne(this.boardId);
|
||||
const oldBoardLabels = oldBoard.labels;
|
||||
// Get old label names
|
||||
const oldCardLabels = _.pluck(_.filter(oldBoardLabels, (label) => {
|
||||
return _.contains(this.labelIds, label._id);
|
||||
}), 'name');
|
||||
|
||||
const newBoard = Boards.findOne(boardId);
|
||||
const newBoardLabels = newBoard.labels;
|
||||
const newCardLabels = _.pluck(_.filter(newBoardLabels, (label) => {
|
||||
return _.contains(oldCardLabels, label.name);
|
||||
}), '_id');
|
||||
|
||||
const oldId = this._id;
|
||||
const oldCard = Cards.findOne(oldId);
|
||||
|
||||
delete this._id;
|
||||
delete this.labelIds;
|
||||
this.labelIds= newCardLabels;
|
||||
this.boardId = boardId;
|
||||
this.swimlaneId = swimlaneId;
|
||||
this.listId = listId;
|
||||
const _id = Cards.insert(this);
|
||||
|
||||
// Copy attachments
|
||||
oldCard.attachments().forEach((att) => {
|
||||
att.cardId = _id;
|
||||
delete att._id;
|
||||
return Attachments.insert(att);
|
||||
});
|
||||
|
||||
// copy checklists
|
||||
Checklists.find({cardId: oldId}).forEach((ch) => {
|
||||
// REMOVE verify copy with arguments
|
||||
ch.copy(_id);
|
||||
});
|
||||
|
||||
// copy subtasks
|
||||
Cards.find({parentId: oldId}).forEach((subtask) => {
|
||||
subtask.parentId = _id;
|
||||
subtask._id = null;
|
||||
// REMOVE verify copy with arguments instead of insert?
|
||||
Cards.insert(subtask);
|
||||
});
|
||||
|
||||
// copy card comments
|
||||
CardComments.find({cardId: oldId}).forEach((cmt) => {
|
||||
// REMOVE verify copy with arguments
|
||||
cmt.copy(_id);
|
||||
});
|
||||
|
||||
return _id;
|
||||
},
|
||||
|
||||
list() {
|
||||
return Lists.findOne(this.listId);
|
||||
},
|
||||
@@ -930,6 +985,10 @@ Cards.helpers({
|
||||
return this.assignedBy;
|
||||
}
|
||||
},
|
||||
|
||||
isTemplateCard() {
|
||||
return this.type === 'template-card';
|
||||
},
|
||||
});
|
||||
|
||||
Cards.mutations({
|
||||
@@ -1230,7 +1289,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,
|
||||
|
||||
@@ -189,6 +189,7 @@ function publishChekListUncompleted(userId, doc){
|
||||
if (Meteor.isServer) {
|
||||
Meteor.startup(() => {
|
||||
ChecklistItems._collection._ensureIndex({ checklistId: 1 });
|
||||
ChecklistItems._collection._ensureIndex({ cardId: 1 });
|
||||
});
|
||||
|
||||
ChecklistItems.after.update((userId, doc, fieldNames) => {
|
||||
|
||||
@@ -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();
|
||||
},
|
||||
|
||||
@@ -98,9 +98,9 @@ function customFieldCreation(userId, doc){
|
||||
}
|
||||
|
||||
if (Meteor.isServer) {
|
||||
/*Meteor.startup(() => {
|
||||
CustomFields._collection._ensureIndex({ boardId: 1});
|
||||
});*/
|
||||
Meteor.startup(() => {
|
||||
CustomFields._collection._ensureIndex({ boardId: 1 });
|
||||
});
|
||||
|
||||
CustomFields.after.insert((userId, doc) => {
|
||||
customFieldCreation(userId, doc);
|
||||
|
||||
@@ -88,6 +88,10 @@ Integrations.allow({
|
||||
|
||||
//INTEGRATIONS REST API
|
||||
if (Meteor.isServer) {
|
||||
Meteor.startup(() => {
|
||||
Integrations._collection._ensureIndex({ boardId: 1 });
|
||||
});
|
||||
|
||||
/**
|
||||
* @operation get_all_integrations
|
||||
* @summary Get all integrations in board
|
||||
|
||||
@@ -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,36 @@ Lists.allow({
|
||||
});
|
||||
|
||||
Lists.helpers({
|
||||
copy(boardId, swimlaneId) {
|
||||
const oldId = this._id;
|
||||
const oldSwimlaneId = this.swimlaneId || null;
|
||||
this.boardId = boardId;
|
||||
this.swimlaneId = swimlaneId;
|
||||
|
||||
let _id = null;
|
||||
existingListWithSameName = Lists.findOne({
|
||||
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.copy(boardId, swimlaneId, _id);
|
||||
});
|
||||
},
|
||||
|
||||
cards(swimlaneId) {
|
||||
const selector = {
|
||||
listId: this._id,
|
||||
@@ -169,6 +213,10 @@ Lists.helpers({
|
||||
return this.color;
|
||||
return '';
|
||||
},
|
||||
|
||||
isTemplateList() {
|
||||
return this.type === 'template-list';
|
||||
},
|
||||
});
|
||||
|
||||
Lists.mutations({
|
||||
@@ -177,10 +225,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,30 @@ Swimlanes.allow({
|
||||
});
|
||||
|
||||
Swimlanes.helpers({
|
||||
copy(boardId) {
|
||||
const oldId = this._id;
|
||||
const oldBoardId = this.boardId;
|
||||
this.boardId = boardId;
|
||||
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 = boardId;
|
||||
list.copy(boardId, _id);
|
||||
});
|
||||
},
|
||||
|
||||
cards() {
|
||||
return Cards.find(Filter.mongoSelector({
|
||||
swimlaneId: this._id,
|
||||
@@ -101,6 +132,18 @@ Swimlanes.helpers({
|
||||
}), { sort: ['sort'] });
|
||||
},
|
||||
|
||||
lists() {
|
||||
return Lists.find({
|
||||
boardId: this.boardId,
|
||||
swimlaneId: {$in: [this._id, '']},
|
||||
archived: false,
|
||||
}, { sort: ['sort'] });
|
||||
},
|
||||
|
||||
myLists() {
|
||||
return Lists.find({ swimlaneId: this._id });
|
||||
},
|
||||
|
||||
allCards() {
|
||||
return Cards.find({ swimlaneId: this._id });
|
||||
},
|
||||
@@ -114,6 +157,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 +188,20 @@ Swimlanes.mutations({
|
||||
},
|
||||
|
||||
archive() {
|
||||
if (this.isTemplateSwimlane()) {
|
||||
this.myLists().forEach((list) => {
|
||||
return list.archive();
|
||||
});
|
||||
}
|
||||
return { $set: { archived: true } };
|
||||
},
|
||||
|
||||
restore() {
|
||||
if (this.isTemplateSwimlane()) {
|
||||
this.myLists().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.20.0",
|
||||
"version": "v2.35.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1,29 +1,33 @@
|
||||
# If you want to restart even on crash, uncomment while and done lines.
|
||||
|
||||
#while true; do
|
||||
cd ~/repos/wekan/.build/bundle
|
||||
export MONGO_URL='mongodb://127.0.0.1:27017/admin'
|
||||
cd ~/repos/wekan/.build/bundle
|
||||
#---------------------------------------------
|
||||
# Debug OIDC OAuth2 etc.
|
||||
#export export DEBUG=true
|
||||
#---------------------------------------------
|
||||
export MONGO_URL='mongodb://127.0.0.1:27017/admin'
|
||||
# ROOT_URL EXAMPLES FOR WEBSERVERS: https://github.com/wekan/wekan/wiki/Settings
|
||||
# Production: https://example.com/wekan
|
||||
# Local: http://localhost:3000
|
||||
#export ipaddress=$(ifdata -pa eth0)
|
||||
export ROOT_URL='http://localhost'
|
||||
# Production: https://example.com/wekan
|
||||
# Local: http://localhost:3000
|
||||
#export ipaddress=$(ifdata -pa eth0)
|
||||
export ROOT_URL='http://localhost'
|
||||
#---------------------------------------------
|
||||
# Working email IS NOT REQUIRED to use Wekan.
|
||||
# https://github.com/wekan/wekan/wiki/Adding-users
|
||||
# https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
# https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
|
||||
export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
|
||||
export MAIL_FROM='Wekan Support <support@example.com>'
|
||||
# This is local port where Wekan Node.js runs, same as below on Caddyfile settings.
|
||||
export PORT=80
|
||||
# https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
# https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
|
||||
export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
|
||||
export MAIL_FROM='Wekan Support <support@example.com>'
|
||||
# This is local port where Wekan Node.js runs, same as below on Caddyfile settings.
|
||||
export PORT=80
|
||||
#---------------------------------------------
|
||||
# Wekan Export Board works when WITH_API='true'.
|
||||
# Wekan Export Board works when WITH_API='true'.
|
||||
# If you disable Wekan API, Export Board does not work.
|
||||
export WITH_API='true'
|
||||
export WITH_API='true'
|
||||
#---------------------------------------------
|
||||
# CORS: Set Access-Control-Allow-Origin header. Example: *
|
||||
#- CORS=*
|
||||
#export CORS=*
|
||||
#---------------------------------------------
|
||||
## Optional: Integration with Matomo https://matomo.org that is installed to your server
|
||||
## The address of the server where Matomo is hosted:
|
||||
@@ -39,39 +43,77 @@
|
||||
# Example: export MATOMO_WITH_USERNAME=true
|
||||
#export MATOMO_WITH_USERNAME='false'
|
||||
# Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside.
|
||||
# Setting this to false is not recommended, it also disables all other browser policy protections
|
||||
# and allows all iframing etc. See wekan/server/policy.js
|
||||
# Default value: true
|
||||
export BROWSER_POLICY_ENABLED=true
|
||||
# Setting this to false is not recommended, it also disables all other browser policy protections
|
||||
# and allows all iframing etc. See wekan/server/policy.js
|
||||
# Default value: true
|
||||
export BROWSER_POLICY_ENABLED=true
|
||||
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
|
||||
# Example: export TRUSTED_URL=http://example.com
|
||||
# Example: export TRUSTED_URL=http://example.com
|
||||
export TRUSTED_URL=''
|
||||
# What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId .
|
||||
# Example: export WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
|
||||
export WEBHOOKS_ATTRIBUTES=''
|
||||
export WEBHOOKS_ATTRIBUTES=''
|
||||
#---------------------------------------------
|
||||
# ==== OAUTH2 AZURE ====
|
||||
# https://github.com/wekan/wekan/wiki/Azure
|
||||
# 1) Register the application with Azure. Make sure you capture
|
||||
# the application ID as well as generate a secret key.
|
||||
# 2) Configure the environment variables. This differs slightly
|
||||
# by installation type, but make sure you have the following:
|
||||
#export OAUTH2_ENABLED=true
|
||||
# Application GUID captured during app registration:
|
||||
#export OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
|
||||
# Secret key generated during app registration:
|
||||
#export OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
#export OAUTH2_SERVER_URL=https://login.microsoftonline.com/
|
||||
#export OAUTH2_AUTH_ENDPOINT=/oauth2/v2.0/authorize
|
||||
#export OAUTH2_USERINFO_ENDPOINT=https://graph.microsoft.com/oidc/userinfo
|
||||
#export OAUTH2_TOKEN_ENDPOINT=/oauth2/v2.0/token
|
||||
# The claim name you want to map to the unique ID field:
|
||||
#export OAUTH2_ID_MAP=email
|
||||
# The claim name you want to map to the username field:
|
||||
#export OAUTH2_USERNAME_MAP=email
|
||||
# The claim name you want to map to the full name field:
|
||||
#export OAUTH2_FULLNAME_MAP=name
|
||||
# Tthe claim name you want to map to the email field:
|
||||
#export OAUTH2_EMAIL_MAP=email
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 KEYCLOAK ====
|
||||
# https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
|
||||
#export OAUTH2_ENABLED=true
|
||||
#export OAUTH2_CLIENT_ID=<Keycloak create Client ID>
|
||||
#export OAUTH2_SERVER_URL=<Keycloak server name>/auth
|
||||
#export OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
|
||||
#export OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
|
||||
#export OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
|
||||
#export OAUTH2_SECRET=<keycloak client secret>
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 DOORKEEPER ====
|
||||
# https://github.com/wekan/wekan/issues/1874
|
||||
# https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# Enable the OAuth2 connection
|
||||
#export OAUTH2_ENABLED=true
|
||||
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345
|
||||
# example: export OAUTH2_CLIENT_ID=abcde12345
|
||||
#export OAUTH2_CLIENT_ID=''
|
||||
# OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde
|
||||
# example: export OAUTH2_SECRET=54321abcde
|
||||
#export OAUTH2_SECRET=''
|
||||
# OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com
|
||||
# example: export OAUTH2_SERVER_URL=https://chat.example.com
|
||||
#export OAUTH2_SERVER_URL=''
|
||||
# OAuth2 Authorization Endpoint. Example: /oauth/authorize
|
||||
# example: export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
|
||||
#export OAUTH2_AUTH_ENDPOINT=''
|
||||
# OAuth2 Userinfo Endpoint. Example: /oauth/userinfo
|
||||
# example: export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
|
||||
#export OAUTH2_USERINFO_ENDPOINT=''
|
||||
# OAuth2 Token Endpoint. Example: /oauth/token
|
||||
# example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
#export OAUTH2_TOKEN_ENDPOINT=''
|
||||
#---------------------------------------------
|
||||
# Debug OIDC OAuth2 etc.
|
||||
#export DEBUG=true
|
||||
# OAuth2 Client ID.
|
||||
#export OAUTH2_CLIENT_ID=abcde12345
|
||||
# OAuth2 Secret.
|
||||
#export OAUTH2_SECRET=54321abcde
|
||||
# OAuth2 Server URL.
|
||||
#export OAUTH2_SERVER_URL=https://chat.example.com
|
||||
# OAuth2 Authorization Endpoint.
|
||||
#export OAUTH2_AUTH_ENDPOINT=/oauth/authorize
|
||||
# OAuth2 Userinfo Endpoint.
|
||||
#export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
|
||||
# OAuth2 Token Endpoint.
|
||||
#export OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
# OAuth2 ID Mapping
|
||||
#export OAUTH2_ID_MAP=
|
||||
# OAuth2 Username Mapping
|
||||
#export OAUTH2_USERNAME_MAP=
|
||||
# OAuth2 Fullname Mapping
|
||||
#export OAUTH2_FULLNAME_MAP=
|
||||
# OAuth2 Email Mapping
|
||||
#export OAUTH2_EMAIL_MAP=
|
||||
#---------------------------------------------
|
||||
# LDAP_ENABLE : Enable or not the connection by the LDAP
|
||||
# example : export LDAP_ENABLE=true
|
||||
@@ -181,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
|
||||
@@ -195,15 +249,15 @@
|
||||
#export LDAP_DEFAULT_DOMAIN=
|
||||
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
|
||||
# example : LOGOUT_WITH_TIMER=true
|
||||
#- LOGOUT_WITH_TIMER=
|
||||
#export LOGOUT_WITH_TIMER=
|
||||
# LOGOUT_IN : The number of days
|
||||
# example : LOGOUT_IN=1
|
||||
#- LOGOUT_IN=
|
||||
#- LOGOUT_ON_HOURS=
|
||||
#export LOGOUT_IN=
|
||||
#export LOGOUT_ON_HOURS=
|
||||
# LOGOUT_ON_MINUTES : The number of minutes
|
||||
# example : LOGOUT_ON_MINUTES=55
|
||||
#- LOGOUT_ON_MINUTES=
|
||||
#export LOGOUT_ON_MINUTES=
|
||||
|
||||
node main.js & >> ~/repos/wekan.log
|
||||
cd ~/repos
|
||||
node main.js & >> ~/repos/wekan.log
|
||||
cd ~/repos
|
||||
#done
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 222,
|
||||
appVersion = 237,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "2.20.0~2019-02-11"),
|
||||
appMarketingVersion = (defaultText = "2.35.0~2019-03-01"),
|
||||
# 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
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -59,6 +60,7 @@ Meteor.publish('archivedBoards', function() {
|
||||
});
|
||||
|
||||
Meteor.publishRelations('board', function(boardId) {
|
||||
this.unblock();
|
||||
check(boardId, String);
|
||||
const thisUserId = this.userId;
|
||||
|
||||
@@ -71,7 +73,8 @@ Meteor.publishRelations('board', function(boardId) {
|
||||
{ permission: 'public' },
|
||||
{ members: { $elemMatch: { userId: this.userId, isActive: true }}},
|
||||
],
|
||||
}, { limit: 1 }), function(boardId, board) {
|
||||
// Sort required to ensure oplog usage
|
||||
}, { limit: 1, sort: { _id: 1 } }), function(boardId, board) {
|
||||
this.cursor(Lists.find({ boardId }));
|
||||
this.cursor(Swimlanes.find({ boardId }));
|
||||
this.cursor(Integrations.find({ boardId }));
|
||||
@@ -98,24 +101,47 @@ Meteor.publishRelations('board', function(boardId) {
|
||||
//
|
||||
// And in the meantime our code below works pretty well -- it's not even a
|
||||
// hack!
|
||||
|
||||
// Gather queries and send in bulk
|
||||
const cardComments = this.join(CardComments);
|
||||
cardComments.selector = (_ids) => ({ cardId: _ids });
|
||||
const attachments = this.join(Attachments);
|
||||
attachments.selector = (_ids) => ({ cardId: _ids });
|
||||
const checklists = this.join(Checklists);
|
||||
checklists.selector = (_ids) => ({ cardId: _ids });
|
||||
const checklistItems = this.join(ChecklistItems);
|
||||
checklistItems.selector = (_ids) => ({ cardId: _ids });
|
||||
const parentCards = this.join(Cards);
|
||||
parentCards.selector = (_ids) => ({ parentId: _ids });
|
||||
const boards = this.join(Boards);
|
||||
const subCards = this.join(Cards);
|
||||
|
||||
this.cursor(Cards.find({ boardId }), function(cardId, card) {
|
||||
if (card.type === 'cardType-linkedCard') {
|
||||
const impCardId = card.linkedId;
|
||||
this.cursor(Cards.find({ _id: impCardId }));
|
||||
this.cursor(CardComments.find({ cardId: impCardId }));
|
||||
this.cursor(Attachments.find({ cardId: impCardId }));
|
||||
this.cursor(Checklists.find({ cardId: impCardId }));
|
||||
this.cursor(ChecklistItems.find({ cardId: impCardId }));
|
||||
subCards.push(impCardId);
|
||||
cardComments.push(impCardId);
|
||||
attachments.push(impCardId);
|
||||
checklists.push(impCardId);
|
||||
checklistItems.push(impCardId);
|
||||
} else if (card.type === 'cardType-linkedBoard') {
|
||||
this.cursor(Boards.find({ _id: card.linkedId}));
|
||||
boards.push(card.linkedId);
|
||||
}
|
||||
this.cursor(CardComments.find({ cardId }));
|
||||
this.cursor(Attachments.find({ cardId }));
|
||||
this.cursor(Checklists.find({ cardId }));
|
||||
this.cursor(ChecklistItems.find({ cardId }));
|
||||
this.cursor(Cards.find({ parentId: cardId }));
|
||||
cardComments.push(cardId);
|
||||
attachments.push(cardId);
|
||||
checklists.push(cardId);
|
||||
checklistItems.push(cardId);
|
||||
parentCards.push(cardId);
|
||||
});
|
||||
|
||||
// Send bulk queries for all found ids
|
||||
subCards.send();
|
||||
cardComments.send();
|
||||
attachments.send();
|
||||
checklists.send();
|
||||
checklistItems.send();
|
||||
boards.send();
|
||||
|
||||
if (board.members) {
|
||||
// Board members. This publication also includes former board members that
|
||||
// aren't members anymore but may have some activities attached to them in
|
||||
|
||||
Loaded 100 of 106 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user