Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e60a23845 | ||
|
|
6cca39af1b | ||
|
|
7ffbe2ab5e | ||
|
|
28850e5510 | ||
|
|
d62bed1536 | ||
|
|
b19cf01a3a | ||
|
|
39dece1e25 | ||
|
|
61ae62a83a | ||
|
|
775f0d9fe6 | ||
|
|
53a925cf7f | ||
|
|
6bf33a5578 | ||
|
|
7f3c4acf62 | ||
|
|
8481c791d7 | ||
|
|
9dd0fb88d6 | ||
|
|
9b004d75c7 | ||
|
|
86c7fbd717 | ||
|
|
6bd7f40511 | ||
|
|
a82257f0b1 | ||
|
|
ee26f32a20 | ||
|
|
7df3d52635 | ||
|
|
f9ba17177e | ||
|
|
ab4941390b | ||
|
|
11d044ede9 | ||
|
|
3c406d955e | ||
|
|
ea37dd5e1d | ||
|
|
fd7225d861 | ||
|
|
e0bd22e674 | ||
|
|
89332cefc5 | ||
|
|
5172f64b72 | ||
|
|
6cb4b9fe4a | ||
|
|
c978f55c56 | ||
|
|
4a205fcfcb | ||
|
|
2e1e703e35 | ||
|
|
a75c162483 | ||
|
|
f6c0700633 | ||
|
|
dece7ddf13 | ||
|
|
d06bcd9dcc | ||
|
|
ee7d82c006 | ||
|
|
b777f7f2af | ||
|
|
fe87b9928c | ||
|
|
fb36709047 | ||
|
|
73aaccb6dd | ||
|
|
1fe0059402 | ||
|
|
0c12c45080 | ||
|
|
a6c48329ef | ||
|
|
a3cd1b89ff | ||
|
|
7a08f42edb | ||
|
|
e8722b56e3 | ||
|
|
052948f6eb | ||
|
|
cd03395e05 | ||
|
|
61caf18fd4 | ||
|
|
015f4d671d | ||
|
|
c13e828c79 | ||
|
|
7a6abaac44 | ||
|
|
58dffd0a33 | ||
|
|
fe0232a4e8 | ||
|
|
8dff6c2e2a | ||
|
|
3a6e2813a6 | ||
|
|
8005640b77 | ||
|
|
bc929fb7e0 | ||
|
|
019874b6af | ||
|
|
a7977a8fc7 | ||
|
|
62f6cc7198 | ||
|
|
ad331ee122 | ||
|
|
387f0600ce | ||
|
|
0801e33f97 | ||
|
|
f576d2f356 | ||
|
|
051f7b2769 | ||
|
|
1f207c493d | ||
|
|
03f565bf95 | ||
|
|
36e29a405e | ||
|
|
2ec53b27d1 | ||
|
|
152a0b50f2 | ||
|
|
c09758fb91 | ||
|
|
2b2884d996 | ||
|
|
4537971300 | ||
|
|
0b43e8b42a | ||
|
|
bf94161f30 | ||
|
|
573426899a | ||
|
|
3816227837 | ||
|
|
fe5e311673 | ||
|
|
bec0b7ec56 | ||
|
|
9d2a9ee70b | ||
|
|
baf652a569 | ||
|
|
9f340bcecd | ||
|
|
cc0a866166 | ||
|
|
d39b62503f | ||
|
|
e9b9af4616 | ||
|
|
7d88ef7ab2 | ||
|
|
5a49bd6f8c | ||
|
|
a255fc8524 | ||
|
|
d1b5c42d42 | ||
|
|
d957768a39 | ||
|
|
999630aed5 | ||
|
|
cf7efccde5 | ||
|
|
7b82a80fb4 | ||
|
|
cfe500794c | ||
|
|
a2d298f493 | ||
|
|
4687a866f5 | ||
|
|
ff08aff131 | ||
|
|
5510c2a37d | ||
|
|
608a084b94 | ||
|
|
9e47abdaa3 | ||
|
|
4d7bd455c9 | ||
|
|
05a72f7c62 | ||
|
|
4e23429cb8 | ||
|
|
b67d3e91af | ||
|
|
636487502d | ||
|
|
3207f457d4 | ||
|
|
af0cb1d6e7 | ||
|
|
06c16b79e3 | ||
|
|
09617e17d9 | ||
|
|
94f50dd6b6 | ||
|
|
d667554686 | ||
|
|
cbf3bcfe1c | ||
|
|
3d82323eaa | ||
|
|
83cd5e7494 | ||
|
|
e1e5554b88 | ||
|
|
6193a0b64e |
No files matched your search
@@ -1,12 +1,16 @@
|
||||
FROM ubuntu:rolling
|
||||
FROM quay.io/wekan/ubuntu:groovy-20201125.2
|
||||
LABEL maintainer="sgr"
|
||||
|
||||
# 2020-12-03:
|
||||
# - Above Ubuntu base image copied from Docker Hub ubuntu:groovy-20201125.2
|
||||
# to Quay to avoid Docker Hub rate limits.
|
||||
|
||||
ENV BUILD_DEPS="gnupg gosu bsdtar wget curl bzip2 g++ build-essential python git ca-certificates iproute2"
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v12.19.1 \
|
||||
NODE_VERSION=v12.20.0 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
|
||||
@@ -81,7 +81,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.19.1
|
||||
node-engine: 12.20.0
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
@@ -83,7 +83,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.19.1
|
||||
node-engine: 12.20.0
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
+5
-5
@@ -6,8 +6,8 @@
|
||||
meteor-base@1.4.0
|
||||
|
||||
# Build system
|
||||
ecmascript@0.15.0-beta200.4
|
||||
standard-minifier-css@1.7.0-beta200.4
|
||||
ecmascript@0.14.4
|
||||
standard-minifier-css@1.7.1
|
||||
standard-minifier-js@2.6.0
|
||||
mquandalle:jade
|
||||
coffeescript@2.4.1!
|
||||
@@ -23,7 +23,7 @@ dburles:collection-helpers
|
||||
idmontie:migrations
|
||||
matb33:collection-hooks
|
||||
matteodem:easy-search
|
||||
mongo@1.10.0
|
||||
mongo@1.10.1
|
||||
mquandalle:collection-mutations
|
||||
|
||||
# Account system
|
||||
@@ -72,9 +72,9 @@ simple:rest-accounts-password
|
||||
useraccounts:core
|
||||
email@2.0.0
|
||||
horka:swipebox
|
||||
dynamic-import@0.6.0-beta200.4
|
||||
dynamic-import@0.5.4
|
||||
|
||||
accounts-password@1.6.2
|
||||
accounts-password@1.6.3
|
||||
cfs:gridfs
|
||||
rzymek:fullcalendar
|
||||
momentjs:moment@2.22.2
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@2.0-beta.4
|
||||
METEOR@1.12
|
||||
+15
-15
@@ -1,7 +1,7 @@
|
||||
3stack:presence@1.1.2
|
||||
accounts-base@1.7.0
|
||||
accounts-base@1.7.1
|
||||
accounts-oauth@1.2.0
|
||||
accounts-password@1.6.2
|
||||
accounts-password@1.6.3
|
||||
aldeed:collection2@2.10.0
|
||||
aldeed:collection2-core@1.2.0
|
||||
aldeed:schema-deny@1.1.0
|
||||
@@ -10,8 +10,8 @@ aldeed:simple-schema@1.5.4
|
||||
allow-deny@1.1.0
|
||||
arillo:flow-router-helpers@0.5.2
|
||||
audit-argument-checks@1.0.7
|
||||
autoupdate@1.7.0-beta200.4
|
||||
babel-compiler@7.6.0-beta200.4
|
||||
autoupdate@1.6.0
|
||||
babel-compiler@7.5.4
|
||||
babel-runtime@1.5.0
|
||||
base64@1.0.12
|
||||
binary-heap@1.0.11
|
||||
@@ -49,15 +49,15 @@ coffeescript-compiler@2.4.1
|
||||
cottz:publish-relations@2.0.8
|
||||
dburles:collection-helpers@1.1.0
|
||||
ddp@1.4.0
|
||||
ddp-client@2.4.0-beta200.4
|
||||
ddp-client@2.3.3
|
||||
ddp-common@1.4.0
|
||||
ddp-rate-limiter@1.0.9
|
||||
ddp-server@2.3.2
|
||||
deps@1.0.12
|
||||
diff-sequence@1.1.1
|
||||
dynamic-import@0.6.0-beta200.4
|
||||
dynamic-import@0.5.4
|
||||
easylogic:summernote@0.8.8
|
||||
ecmascript@0.15.0-beta200.4
|
||||
ecmascript@0.14.4
|
||||
ecmascript-runtime@0.7.0
|
||||
ecmascript-runtime-client@0.11.0
|
||||
ecmascript-runtime-server@0.10.0
|
||||
@@ -103,14 +103,14 @@ meteorspark:util@0.2.0
|
||||
minifier-css@1.5.3
|
||||
minifier-js@2.6.0
|
||||
minifiers@1.1.8-faster-rebuild.0
|
||||
minimongo@1.6.0
|
||||
minimongo@1.6.1
|
||||
mobile-status-bar@1.1.0
|
||||
modern-browsers@0.1.5
|
||||
modules@0.16.0-beta200.4
|
||||
modules@0.15.0
|
||||
modules-runtime@0.12.0
|
||||
momentjs:moment@2.29.1
|
||||
mongo@1.10.0
|
||||
mongo-decimal@0.1.1
|
||||
mongo@1.10.1
|
||||
mongo-decimal@0.1.2
|
||||
mongo-dev-server@1.1.0
|
||||
mongo-id@1.0.7
|
||||
mongo-livedata@1.0.12
|
||||
@@ -193,7 +193,7 @@ random@1.2.0
|
||||
rate-limit@1.0.9
|
||||
reactive-dict@1.3.0
|
||||
reactive-var@1.0.11
|
||||
reload@1.3.0
|
||||
reload@1.3.1
|
||||
retry@1.1.0
|
||||
routepolicy@1.1.0
|
||||
rzymek:fullcalendar@3.8.0
|
||||
@@ -212,7 +212,7 @@ softwarerero:accounts-t9n@1.3.11
|
||||
spacebars@1.0.15
|
||||
spacebars-compiler@1.1.3
|
||||
srp@1.1.0
|
||||
standard-minifier-css@1.7.0-beta200.4
|
||||
standard-minifier-css@1.7.1
|
||||
standard-minifier-js@2.6.0
|
||||
staringatlights:fast-render@3.3.0
|
||||
staringatlights:inject-data@2.3.0
|
||||
@@ -233,8 +233,8 @@ useraccounts:core@1.14.2
|
||||
useraccounts:flow-routing@1.14.2
|
||||
useraccounts:unstyled@1.14.2
|
||||
verron:autosize@3.0.8
|
||||
webapp@1.10.0-beta200.4
|
||||
webapp-hashing@1.1.0-beta200.4
|
||||
webapp@1.9.1
|
||||
webapp-hashing@1.0.9
|
||||
wekan-accounts-cas@0.1.0
|
||||
wekan-accounts-oidc@1.0.10
|
||||
wekan-ldap@0.0.2
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ sudo: required
|
||||
|
||||
env:
|
||||
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
|
||||
TRAVIS_NODE_VERSION: 12.19.1
|
||||
TRAVIS_NODE_VERSION: 12.20.0
|
||||
TRAVIS_NPM_VERSION: latest
|
||||
|
||||
before_install:
|
||||
|
||||
+168
@@ -1,3 +1,171 @@
|
||||
# v4.63 2020-12-21 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fixed Remove Cover button gives JS error](https://github.com/wekan/wekan/commit/28850e5510f2aaefcae404efac1973c12f1cca65).
|
||||
Thanks to tsukasa1989 and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.62 2020-12-18 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Treat unknown attachment types as binary on board
|
||||
import/clone](https://github.com/wekan/wekan/pull/3395).
|
||||
Thanks to daniel-eder.
|
||||
- [Fix Move card from a board to another does not work anymore](https://github.com/wekan/wekan/commit/9dd0fb88d6cb3378a8fc96aaf60214020efeaed1).
|
||||
Thanks to lezioul and xet7.
|
||||
- [Add some permission code, to see does it fix something](https://github.com/wekan/wekan/commit/7f3c4acf62deefa2f7b36b986e06336fd3b2754f).
|
||||
Thanks to xet7.
|
||||
- [Fix delete board button not visible](https://github.com/wekan/wekan/commit/53a925cf7ff95167cbf2f65f7c7e169e18b14b44).
|
||||
Thanks to airtraxx and xet7.
|
||||
- [Board: When removing member from board, remove also from assignees.
|
||||
Admin Panel/People: 1) Allow edit user that does not have email address.
|
||||
2) When creating new user, require username and email address, and save also fullname.
|
||||
3) Some in progress code for deleting user, that does not work correctly yet, so deleting user is not enabled
|
||||
yet](https://github.com/wekan/wekan/commit/61ae62a83aaddb2c6f679ce9d05b675c845ba8bf).
|
||||
Thanks to airtraxx and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.61 2020-12-16 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Removed cookie code that is not in use](https://github.com/wekan/wekan/commit/3c406d955ec602d4b86c164acb9e94e715086f8e).
|
||||
Thanks to xet7.
|
||||
- [Allow normal user to delete checklist item](https://github.com/wekan/wekan/commit/f9ba17177e8f1146be1e571f47d26c13a9337034).
|
||||
Thanks to Samunosuke and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.60 2020-12-15 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- Update dependencies.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/2e1e703e3591258462b3167f72e2b2319bf57bec),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/a75c162483795775db1631686f8e7017b42c87ca).
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- Prevent normal user deleting or modifying too much. Allow normal user to export board.
|
||||
[Part1](https://github.com/wekan/wekan/commit/4a205fcfcb40438faead3bf8973b10b8e42974f0),
|
||||
[Part2](https://github.com/wekan/wekan/commit/6cb4b9fe4a086202d642de54464088e0a1122ec0).
|
||||
Thanks to Samunosuke, pgh2357 and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.59 2020-12-10 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix not all checklist items being imported/cloned](https://github.com/wekan/wekan/pull/3389).
|
||||
Thanks to daniel-eder.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.58 2020-12-09 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix issues when duplicating board](https://github.com/wekan/wekan/pull/3387).
|
||||
Thanks to daniel-eder.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.57 2020-12-08 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Helm: Introduce secretEnv for secret value provisioning](https://github.com/wekan/wekan/pull/3382).
|
||||
Thanks to ThoreKr.
|
||||
- REST API: List attachments of a board, with download URLs of attachments. In Progress.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/bf94161f30adf9dec6aa41af6946ba54c1573a44),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/2ec53b27d14049bc9622861492cac301512a1e33),
|
||||
[Part 3](https://github.com/wekan/wekan/commit/36e29a405ee943d15e6e1bd9ac02ecefb7a7a06f).
|
||||
For using this, Python code example:
|
||||
https://github.com/wekan/wekan/wiki/New-card-with-Python3-and-REST-API .
|
||||
Thanks to xet7.
|
||||
- REST API: Added Wekan REST API Python CLI, for adding card, etc. In Progress,
|
||||
downloading attachments does not work yet.
|
||||
[Part1](https://github.com/wekan/wekan/commit/051f7b2769c51404063e7f0ddf85fbd0f9508a88),
|
||||
[Part2](https://github.com/wekan/wekan/commit/387f0600ce1389aab955cc125d331dcd5eeeafdd).
|
||||
Thanks to xet7.
|
||||
- [Drag handles at checklist items on mobile view](https://github.com/wekan/wekan/pull/3342).
|
||||
Thanks to mfilser.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgrade to Meteor 1.12](https://github.com/wekan/wekan/commit/7a6abaac44b1235021dc7cc25e3224515c64a068).
|
||||
Thanks to Meteor developers.
|
||||
- [Upgrade to Node 12.20.0](https://github.com/wekan/wekan/commit/015f4d671d136a4a344fe82e2a6bcbe0c2be6cfd).
|
||||
Thanks to Node developers.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fixed Quay Docker builds that failed](https://github.com/wekan/wekan/issues/3380)
|
||||
because of Docker Hub rate limits by copying base images from Docker Hub to Quay.
|
||||
[Part1](https://github.com/wekan/wekan/commit/4537971300c6ffcc85b7dd930867eb942bd22f86),
|
||||
[Part2](https://github.com/wekan/wekan/commit/2b2884d996b8fc6101eff50db058639631eb5945),
|
||||
[Part3](https://github.com/wekan/wekan/commit/c09758fb913d73e9229f43d17663b3c4715a62b9).
|
||||
Thanks to xet7.
|
||||
- [Hide duplicate create board button, because it did not show board templates
|
||||
correctly](https://github.com/wekan/wekan/commit/a7977a8fc7f171d046a228f81fb0cd481b0ccc41).
|
||||
Thanks to xet7.
|
||||
- [Minicard, reduce space after assignees label](https://github.com/wekan/wekan/pull/3385).
|
||||
Thanks to mfilser.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.56 2020-11-30 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Added date notification icons](https://github.com/wekan/wekan/pull/3366).
|
||||
This partially resolves [#3363](https://github.com/wekan/wekan/issues/3363).
|
||||
Thanks to helioguardabaxo.
|
||||
- Attempt to implement date activities notification [Part1](https://github.com/wekan/wekan/pull/3372)
|
||||
and [Part2](https://github.com/wekan/wekan/pull/3373).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Sticky swimlane](https://github.com/wekan/wekan/pull/3370).
|
||||
Thanks to progressify and xet7.
|
||||
- [1) New default: sudo snap set wekan mongo-log-destination='devnull'.
|
||||
Other options: syslog/snapcommon.
|
||||
This should lower amount of disk usage and logs.
|
||||
2) Tried to fix command:
|
||||
`sudo snap set wekan mongo-url='...'`](https://github.com/wekan/wekan/commit/5510c2a37dc6bcfa0ec588eceb8dc9f32cec9851).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following improvements:
|
||||
|
||||
- [Improvements in activities design](https://github.com/wekan/wekan/pull/3374).
|
||||
Thanks to helioguardabaxo.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix typo on MONGO_URL on Snap](https://github.com/wekan/wekan/commit/05a72f7c627e05ac4ce38cb9588f2aac45273ce8).
|
||||
Thanks to xet7.
|
||||
- [Fix: Update helm mongodb dependency](https://github.com/wekan/wekan/pull/3369).
|
||||
Thanks to jiangytcn.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.55 2020-11-21 Wekan release
|
||||
|
||||
This release adds the following improvements:
|
||||
|
||||
- [Set minimum height to icons at All Boards page](https://github.com/wekan/wekan/commit/6193a0b64e85df2f2353192e7efb16680b436622).
|
||||
Thanks to xet7.
|
||||
- [Increase avatar size](https://github.com/wekan/wekan/pull/3360).
|
||||
Thanks to centralhardware.
|
||||
- [Modern Dark theme: card details as lightbox](https://github.com/wekan/wekan/pull/3359).
|
||||
Thanks to jghaanstra.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.54 2020-11-17 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
+6
-2
@@ -1,6 +1,10 @@
|
||||
FROM ubuntu:rolling
|
||||
FROM quay.io/wekan/ubuntu:groovy-20201125.2
|
||||
LABEL maintainer="wekan"
|
||||
|
||||
# 2020-12-03:
|
||||
# - Above Ubuntu base image copied from Docker Hub ubuntu:groovy-20201125.2
|
||||
# to Quay to avoid Docker Hub rate limits.
|
||||
|
||||
# Set the environment variables (defaults where required)
|
||||
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
|
||||
# ENV BUILD_DEPS="paxctl"
|
||||
@@ -8,7 +12,7 @@ ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v12.19.1 \
|
||||
NODE_VERSION=v12.20.0 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ FROM amd64/alpine:3.7 AS builder
|
||||
ENV QEMU_VERSION=v4.2.0-6 \
|
||||
QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v12.19.1 \
|
||||
NODE_VERSION=v12.20.0 \
|
||||
WEKAN_VERSION=3.96 \
|
||||
WEKAN_ARCHITECTURE=arm64
|
||||
|
||||
@@ -40,7 +40,7 @@ LABEL maintainer="wekan"
|
||||
# Set the environment variables (defaults where required)
|
||||
ENV QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v12.19.1 \
|
||||
NODE_VERSION=v12.20.0 \
|
||||
NODE_ENV=production \
|
||||
NPM_VERSION=latest \
|
||||
WITH_API=true \
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v4.54.0"
|
||||
appVersion: "v4.63.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
#! /usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# vi:ts=4:et
|
||||
|
||||
# Wekan API Python CLI, originally from here, where is more details:
|
||||
# https://github.com/wekan/wekan/wiki/New-card-with-Python3-and-REST-API
|
||||
|
||||
try:
|
||||
# python 3
|
||||
from urllib.parse import urlencode
|
||||
except ImportError:
|
||||
# python 2
|
||||
from urllib import urlencode
|
||||
|
||||
import json
|
||||
import requests
|
||||
import sys
|
||||
|
||||
arguments = len(sys.argv) - 1
|
||||
|
||||
if arguments == 0:
|
||||
print("=== Wekan API Python CLI: Shows IDs for addcard ===")
|
||||
print("AUTHORID is USERID that writes card.")
|
||||
print("If *nix: chmod +x api.py => ./api.py users")
|
||||
print("Syntax:")
|
||||
print(" python3 api.py users # All users")
|
||||
print(" python3 api.py boards USERID # Boards of USERID")
|
||||
print(" python3 api.py board BOARDID # Info of BOARDID")
|
||||
print(" python3 api.py swimlanes BOARDID # Swimlanes of BOARDID")
|
||||
print(" python3 api.py lists BOARDID # Lists of BOARDID")
|
||||
print(" python3 api.py createlist BOARDID LISTTITLE # Create list")
|
||||
print(" python3 api.py addcard AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION")
|
||||
print(" python3 api.py listattachments BOARDID # List attachments")
|
||||
# TODO:
|
||||
# print(" python3 api.py attachmentdownload BOARDID ATTACHMENTID # One attachment as file")
|
||||
# print(" python3 api.py attachmentsdownload BOARDID # All attachments as files")
|
||||
exit
|
||||
|
||||
# ------- SETTINGS START -------------
|
||||
|
||||
# Username is your Wekan username or email address.
|
||||
# OIDC/OAuth2 etc uses email address as username.
|
||||
|
||||
username = 'testtest'
|
||||
|
||||
password = 'testtest'
|
||||
|
||||
wekanurl = 'http://localhost:4000/'
|
||||
|
||||
# ------- SETTINGS END -------------
|
||||
|
||||
"""
|
||||
EXAMPLE:
|
||||
|
||||
python3 api.py
|
||||
|
||||
OR:
|
||||
chmod +x api.py
|
||||
./api.py
|
||||
|
||||
=== Wekan API Python CLI: Shows IDs for addcard ===
|
||||
AUTHORID is USERID that writes card.
|
||||
Syntax:
|
||||
python3 api.py users # All users
|
||||
python3 api.py boards USERID # Boards of USERID
|
||||
python3 api.py board BOARDID # Info of BOARDID
|
||||
python3 api.py swimlanes BOARDID # Swimlanes of BOARDID
|
||||
python3 api.py lists BOARDID # Lists of BOARDID
|
||||
python3 api.py createlist BOARDID LISTTITLE # Create list
|
||||
python3 api.py addcard AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION
|
||||
python3 api.py listattachments BOARDID # List attachments
|
||||
python3 api.py attachmentjson BOARDID ATTACHMENTID # One attachment as JSON base64
|
||||
python3 api.py attachmentbinary BOARDID ATTACHMENTID # One attachment as binary file
|
||||
|
||||
=== USERS ===
|
||||
|
||||
python3 api.py users
|
||||
|
||||
=> abcd1234
|
||||
|
||||
=== BOARDS ===
|
||||
|
||||
python3 api.py boards abcd1234
|
||||
|
||||
|
||||
=== SWIMLANES ===
|
||||
|
||||
python3 api.py swimlanes dYZ
|
||||
|
||||
[{"_id":"Jiv","title":"Default"}
|
||||
]
|
||||
|
||||
=== LISTS ===
|
||||
|
||||
python3 api.py lists dYZ
|
||||
|
||||
[]
|
||||
|
||||
There is no lists, so create a list:
|
||||
|
||||
=== CREATE LIST ===
|
||||
|
||||
python3 api.py createlist dYZ 'Test'
|
||||
|
||||
{"_id":"7Kp"}
|
||||
|
||||
# python3 api.py addcard AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION
|
||||
|
||||
python3 api.py addcard ppg dYZ Jiv 7Kp 'Test card' 'Test description'
|
||||
|
||||
=== LIST ATTACHMENTS WITH DOWNLOAD URLs ====
|
||||
|
||||
python3 api.py listattachments BOARDID
|
||||
|
||||
"""
|
||||
|
||||
# ------- API URL GENERATION START -----------
|
||||
|
||||
loginurl = 'users/login'
|
||||
wekanloginurl = wekanurl + loginurl
|
||||
apiboards = 'api/boards/'
|
||||
apiattachments = 'api/attachments/'
|
||||
apiusers = 'api/users'
|
||||
e = 'export'
|
||||
s = '/'
|
||||
l = 'lists'
|
||||
sw = 'swimlane'
|
||||
sws = 'swimlanes'
|
||||
cs = 'cards'
|
||||
bs = 'boards'
|
||||
atl = 'attachmentslist'
|
||||
at = 'attachment'
|
||||
ats = 'attachments'
|
||||
users = wekanurl + apiusers
|
||||
|
||||
# ------- API URL GENERATION END -----------
|
||||
|
||||
# ------- LOGIN TOKEN START -----------
|
||||
|
||||
data = {"username": username, "password": password}
|
||||
body = requests.post(wekanloginurl, data=data)
|
||||
d = body.json()
|
||||
apikey = d['token']
|
||||
|
||||
# ------- LOGIN TOKEN END -----------
|
||||
|
||||
if arguments == 7:
|
||||
|
||||
if sys.argv[1] == 'addcard':
|
||||
# ------- WRITE TO CARD START -----------
|
||||
authorid = sys.argv[2]
|
||||
boardid = sys.argv[3]
|
||||
swimlaneid = sys.argv[4]
|
||||
listid = sys.argv[5]
|
||||
cardtitle = sys.argv[6]
|
||||
carddescription = sys.argv[7]
|
||||
cardtolist = wekanurl + apiboards + boardid + s + l + s + listid + s + cs
|
||||
# Write to card
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
post_data = {'authorId': '{}'.format(authorid), 'title': '{}'.format(cardtitle), 'description': '{}'.format(carddescription), 'swimlaneId': '{}'.format(swimlaneid)}
|
||||
body = requests.post(cardtolist, data=post_data, headers=headers)
|
||||
print(body.text)
|
||||
# ------- WRITE TO CARD END -----------
|
||||
|
||||
if arguments == 3:
|
||||
|
||||
if sys.argv[1] == 'createlist':
|
||||
|
||||
# ------- CREATE LIST START -----------
|
||||
boardid = sys.argv[2]
|
||||
listtitle = sys.argv[3]
|
||||
list = wekanurl + apiboards + boardid + s + l
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
post_data = {'title': '{}'.format(listtitle)}
|
||||
body = requests.post(list, data=post_data, headers=headers)
|
||||
print("=== CREATE LIST ===\n")
|
||||
print(body.text)
|
||||
# ------- CREATE LIST END -----------
|
||||
|
||||
if arguments == 2:
|
||||
|
||||
# ------- BOARDS LIST START -----------
|
||||
userid = sys.argv[2]
|
||||
boards = users + s + userid + s + bs
|
||||
if sys.argv[1] == 'boards':
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
#post_data = {'userId': '{}'.format(userid)}
|
||||
body = requests.get(boards, headers=headers)
|
||||
print("=== BOARDS ===\n")
|
||||
data2 = body.text.replace('}',"}\n")
|
||||
print(data2)
|
||||
# ------- BOARDS LIST END -----------
|
||||
if sys.argv[1] == 'board':
|
||||
|
||||
# ------- BOARD INFO START -----------
|
||||
boardid = sys.argv[2]
|
||||
board = wekanurl + apiboards + boardid
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
body = requests.get(board, headers=headers)
|
||||
print("=== BOARD ===\n")
|
||||
data2 = body.text.replace('}',"}\n")
|
||||
print(data2)
|
||||
# ------- BOARD INFO END -----------
|
||||
|
||||
if sys.argv[1] == 'swimlanes':
|
||||
boardid = sys.argv[2]
|
||||
swimlanes = wekanurl + apiboards + boardid + s + sws
|
||||
# ------- SWIMLANES OF BOARD START -----------
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
print("=== SWIMLANES ===\n")
|
||||
body = requests.get(swimlanes, headers=headers)
|
||||
data2 = body.text.replace('}',"}\n")
|
||||
print(data2)
|
||||
# ------- SWIMLANES OF BOARD END -----------
|
||||
|
||||
if sys.argv[1] == 'lists':
|
||||
|
||||
# ------- LISTS OF BOARD START -----------
|
||||
boardid = sys.argv[2]
|
||||
attachments = wekanurl + apiboards + boardid
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
print("=== LISTS ===\n")
|
||||
body = requests.get(lists, headers=headers)
|
||||
data2 = body.text.replace('}',"}\n")
|
||||
print(data2)
|
||||
# ------- LISTS OF BOARD END -----------
|
||||
|
||||
if sys.argv[1] == 'listattachments':
|
||||
|
||||
# ------- LISTS OF ATTACHMENTS START -----------
|
||||
boardid = sys.argv[2]
|
||||
listattachments = wekanurl + apiboards + boardid + s + ats
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
print("=== LIST OF ATTACHMENTS ===\n")
|
||||
body = requests.get(listattachments, headers=headers)
|
||||
data2 = body.text.replace('}',"}\n")
|
||||
print(data2)
|
||||
# ------- LISTS OF ATTACHMENTS END -----------
|
||||
|
||||
if arguments == 1:
|
||||
|
||||
if sys.argv[1] == 'users':
|
||||
|
||||
# ------- LIST OF USERS START -----------
|
||||
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
|
||||
print(users)
|
||||
print("=== USERS ===\n")
|
||||
body = requests.get(users, headers=headers)
|
||||
data2 = body.text.replace('}',"}\n")
|
||||
print(data2)
|
||||
# ------- LIST OF USERS END -----------
|
||||
@@ -25,7 +25,8 @@ template(name="activity")
|
||||
.activity
|
||||
+userAvatar(userId=activity.user._id)
|
||||
p.activity-desc
|
||||
+memberName(user=activity.user)
|
||||
span.activity-member
|
||||
+memberName(user=activity.user)
|
||||
|
||||
//- attachment activity -------------------------------------------------
|
||||
if($eq activity.activityType 'deleteAttachment')
|
||||
@@ -142,6 +143,33 @@ template(name="activity")
|
||||
+viewer
|
||||
= activity.comment.text
|
||||
|
||||
//- date activity ------------------------------------------------
|
||||
if($eq mode 'card')
|
||||
if($eq activity.activityType 'a-receivedAt')
|
||||
| {{{_ 'activity-receivedDate' (sanitize receivedDate) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'a-startAt')
|
||||
| {{{_ 'activity-startDate' (sanitize startDate) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'a-dueAt')
|
||||
| {{{_ 'activity-dueDate' (sanitize dueDate) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'a-endAt')
|
||||
| {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
|
||||
|
||||
if($eq mode 'board')
|
||||
if($eq activity.activityType 'a-receivedAt')
|
||||
| {{{_ 'activity-receivedDate' (sanitize receivedDate) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'a-startAt')
|
||||
| {{{_ 'activity-startDate' (sanitize startDate) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'a-dueAt')
|
||||
| {{{_ 'activity-dueDate' (sanitize dueDate) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'a-endAt')
|
||||
| {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
|
||||
|
||||
//- customField activity ------------------------------------------------
|
||||
if($eq mode 'board')
|
||||
if($eq activity.activityType 'createCustomField')
|
||||
|
||||
@@ -81,6 +81,30 @@ BlazeComponent.extendComponent({
|
||||
return createCardLink(this.currentData().activity.card());
|
||||
},
|
||||
|
||||
receivedDate() {
|
||||
const receivedDate = this.currentData().activity.card();
|
||||
if (!receivedDate) return null;
|
||||
return receivedDate.receivedAt;
|
||||
},
|
||||
|
||||
startDate() {
|
||||
const startDate = this.currentData().activity.card();
|
||||
if (!startDate) return null;
|
||||
return startDate.startAt;
|
||||
},
|
||||
|
||||
dueDate() {
|
||||
const dueDate = this.currentData().activity.card();
|
||||
if (!dueDate) return null;
|
||||
return dueDate.dueAt;
|
||||
},
|
||||
|
||||
endDate() {
|
||||
const endDate = this.currentData().activity.card();
|
||||
if (!endDate) return null;
|
||||
return endDate.endAt;
|
||||
},
|
||||
|
||||
lastLabel() {
|
||||
const lastLabelId = this.currentData().activity.labelId;
|
||||
if (!lastLabelId) return null;
|
||||
|
||||
@@ -10,12 +10,16 @@
|
||||
|
||||
.activity
|
||||
margin: 0.5px 0
|
||||
padding: 6px 0;
|
||||
display: flex
|
||||
|
||||
.member
|
||||
width: 24px
|
||||
width: 32px
|
||||
height: @width
|
||||
|
||||
.activity-member
|
||||
font-weight: 700
|
||||
|
||||
.activity-desc
|
||||
word-wrap: break-word
|
||||
overflow: hidden
|
||||
|
||||
@@ -3,6 +3,10 @@ BlazeComponent.extendComponent({
|
||||
this.subscribe('archivedBoards');
|
||||
},
|
||||
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
|
||||
archivedBoards() {
|
||||
return Boards.find(
|
||||
{ archived: true },
|
||||
|
||||
@@ -211,7 +211,12 @@ BlazeComponent.extendComponent({
|
||||
}
|
||||
|
||||
// Disable drag-dropping if the current user is not a board member
|
||||
$swimlanesDom.sortable('option', 'disabled', !userIsMember());
|
||||
//$swimlanesDom.sortable('option', 'disabled', !userIsMember());
|
||||
$swimlanesDom.sortable(
|
||||
'option',
|
||||
'disabled',
|
||||
!Meteor.user().isBoardAdmin(),
|
||||
);
|
||||
});
|
||||
|
||||
function userIsMember() {
|
||||
|
||||
@@ -753,6 +753,9 @@ setBoardClear(color1,color2)
|
||||
body
|
||||
background: #2a2a2a
|
||||
|
||||
.board-wrapper .board-canvas .board-overlay
|
||||
opacity: .6
|
||||
|
||||
/* Forms */
|
||||
button[type=submit].primary, .board-color-modern input[type=submit].primary
|
||||
background-color: #819C5D
|
||||
@@ -920,10 +923,16 @@ setBoardClear(color1,color2)
|
||||
|
||||
/* Card Details */
|
||||
.card-details
|
||||
position: absolute
|
||||
top: 30px
|
||||
left: calc(50% - 384px)
|
||||
width: 768px
|
||||
max-height: calc(100% - 60px)
|
||||
background-color: #454545
|
||||
color: #cccccc
|
||||
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
|
||||
border: 1px solid #111111
|
||||
z-index: 100 !important
|
||||
|
||||
.card-details
|
||||
scrollbar-width: thin
|
||||
|
||||
@@ -33,13 +33,12 @@ $spaceBetweenTiles = 16px
|
||||
overflow: hidden;
|
||||
background-color: #999
|
||||
color: #f6f6f6
|
||||
height: auto
|
||||
min-height: 100px
|
||||
font-size: 16px
|
||||
line-height: 22px
|
||||
border-radius: 3px
|
||||
display: block
|
||||
font-weight: 700
|
||||
min-height: 18px
|
||||
padding: 8px
|
||||
margin: ($spaceBetweenTiles/2)
|
||||
position: relative
|
||||
|
||||
@@ -46,9 +46,10 @@ template(name="attachmentsGalery")
|
||||
| {{_ 'remove-cover'}}
|
||||
else
|
||||
| {{_ 'add-cover'}}
|
||||
a.js-confirm-delete
|
||||
i.fa.fa-close
|
||||
| {{_ 'delete'}}
|
||||
if currentUser.isBoardAdmin
|
||||
a.js-confirm-delete
|
||||
i.fa.fa-close
|
||||
| {{_ 'delete'}}
|
||||
|
||||
if currentUser.isBoardMember
|
||||
unless currentUser.isCommentOnly
|
||||
|
||||
@@ -45,6 +45,12 @@ Template.attachmentsGalery.events({
|
||||
},
|
||||
});
|
||||
|
||||
Template.attachmentsGalery.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
});
|
||||
|
||||
Template.previewAttachedImagePopup.events({
|
||||
'click .js-large-image-clicked'() {
|
||||
Popup.close();
|
||||
|
||||
@@ -354,10 +354,11 @@ template(name="cardDetailsActionsPopup")
|
||||
a.js-start-voting
|
||||
i.fa.fa-thumbs-up
|
||||
| {{_ 'card-edit-voting'}}
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'card-edit-custom-fields'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'card-edit-custom-fields'}}
|
||||
//li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
|
||||
//li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
|
||||
//li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
|
||||
@@ -382,10 +383,11 @@ template(name="cardDetailsActionsPopup")
|
||||
| {{_ 'moveCardToBottom-title'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-move-card
|
||||
i.fa.fa-arrow-right
|
||||
| {{_ 'moveCardPopup-title'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-move-card
|
||||
i.fa.fa-arrow-right
|
||||
| {{_ 'moveCardPopup-title'}}
|
||||
unless currentUser.isWorker
|
||||
li
|
||||
a.js-copy-card
|
||||
@@ -562,7 +564,8 @@ template(name="cardMorePopup")
|
||||
br
|
||||
| {{_ 'added'}}
|
||||
span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
|
||||
a.js-delete(title="{{_ 'card-delete-notice'}}") {{_ 'delete'}}
|
||||
if currentUser.isBoardAdmin
|
||||
a.js-delete(title="{{_ 'card-delete-notice'}}") {{_ 'delete'}}
|
||||
|
||||
template(name="setCardColorPopup")
|
||||
form.edit-label
|
||||
@@ -609,7 +612,8 @@ template(name="cardStartVotingPopup")
|
||||
|
||||
button.primary.js-submit {{_ 'save'}}
|
||||
if getVoteQuestion
|
||||
button.js-remove-vote.negate.wide.right {{_ 'delete'}}
|
||||
if currentUser.isBoardAdmin
|
||||
button.js-remove-vote.negate.wide.right {{_ 'delete'}}
|
||||
|
||||
template(name="positiveVoteMembersPopup")
|
||||
ul.pop-over-list.js-card-member-list
|
||||
|
||||
@@ -257,7 +257,7 @@ BlazeComponent.extendComponent({
|
||||
) {
|
||||
$checklistsDom.sortable('option', 'disabled', disabled);
|
||||
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
|
||||
$checklistsDom.sortable({ handle: '.checklist-handle'});
|
||||
$checklistsDom.sortable({ handle: '.checklist-handle' });
|
||||
}
|
||||
}
|
||||
if ($subtasksDom.data('uiSortable') || $subtasksDom.data('sortable')) {
|
||||
@@ -567,6 +567,10 @@ Template.cardDetailsActionsPopup.helpers({
|
||||
return this.findWatcher(Meteor.userId());
|
||||
},
|
||||
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
|
||||
canModifyCard() {
|
||||
return (
|
||||
Meteor.user() &&
|
||||
|
||||
@@ -103,6 +103,8 @@ template(name='checklistItemDetail')
|
||||
.check-box-container
|
||||
.check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
.item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
if isMiniScreenOrShowDesktopDragHandles
|
||||
span.fa.checklistitem-handle(class="fa-arrows" title="{{_ 'dragChecklistItem'}}")
|
||||
+viewer
|
||||
= item.title
|
||||
else
|
||||
|
||||
@@ -55,11 +55,13 @@ BlazeComponent.extendComponent({
|
||||
self.autorun(() => {
|
||||
const $itemsDom = $(self.itemsDom);
|
||||
if ($itemsDom.data('uiSortable') || $itemsDom.data('sortable')) {
|
||||
$(self.itemsDom).sortable(
|
||||
'option',
|
||||
'disabled',
|
||||
!userIsMember() || Utils.isMiniScreen(),
|
||||
);
|
||||
$(self.itemsDom).sortable('option', 'disabled', !userIsMember());
|
||||
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
|
||||
$(self.itemsDom).sortable({
|
||||
handle: 'span.fa.checklistitem-handle',
|
||||
appendTo: 'parent',
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@@ -156,6 +156,9 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
|
||||
word-wrap: break-word
|
||||
max-width: 420px
|
||||
|
||||
span.fa.checklistitem-handle
|
||||
float: right
|
||||
|
||||
.js-delete-checklist-item
|
||||
margin: 0 0 0.5em 1.33em
|
||||
@extends .delete-text
|
||||
|
||||
@@ -85,7 +85,6 @@ template(name="minicard")
|
||||
.minicard-assignees.js-minicard-assignees
|
||||
each getAssignees
|
||||
+userAvatar(userId=this)
|
||||
hr
|
||||
|
||||
if getMembers
|
||||
.minicard-members.js-minicard-members
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
.minicard-members,
|
||||
.minicard-assignees
|
||||
float: right
|
||||
margin: 2px -8px 12px 0
|
||||
margin: 2px -8px 2px 0
|
||||
|
||||
.member
|
||||
float: right
|
||||
|
||||
@@ -2,10 +2,10 @@ template(name="subtasks")
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-sitemap
|
||||
| {{_ 'subtasks'}}
|
||||
if toggleDeleteDialog.get
|
||||
.board-overlay#card-details-overlay
|
||||
+subtaskDeleteDialog(subtask = subtaskToDelete)
|
||||
|
||||
if currentUser.isBoardAdmin
|
||||
if toggleDeleteDialog.get
|
||||
.board-overlay#card-details-overlay
|
||||
+subtaskDeleteDialog(subtask = subtaskToDelete)
|
||||
|
||||
.card-subtasks-items
|
||||
each subtask in currentCard.subtasks
|
||||
@@ -28,7 +28,8 @@ template(name="subtaskDetail")
|
||||
span
|
||||
a.js-view-subtask(title="{{ subtask.title }}") {{_ "view-it"}}
|
||||
if canModifyCard
|
||||
a.js-delete-subtask.toggle-delete-subtask-dialog {{_ "delete"}}...
|
||||
if currentUser.isBoardAdmin
|
||||
a.js-delete-subtask.toggle-delete-subtask-dialog {{_ "delete"}}...
|
||||
|
||||
if canModifyCard
|
||||
h2.title.js-open-inlined-form.is-editable
|
||||
@@ -68,7 +69,8 @@ template(name="editSubtaskItemForm")
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
span(title=createdAt) {{ moment createdAt }}
|
||||
if canModifyCard
|
||||
a.js-delete-subtask-item {{_ "delete"}}...
|
||||
if currentUser.isBoardAdmin
|
||||
a.js-delete-subtask-item {{_ "delete"}}...
|
||||
|
||||
template(name="subtasksItems")
|
||||
.subtasks-items.js-subtasks-items
|
||||
|
||||
@@ -43,8 +43,9 @@ template(name="listHeader")
|
||||
if canSeeAddCard
|
||||
a.js-add-card.fa.fa-plus.list-header-plus-icon
|
||||
a.fa.fa-navicon.js-open-list-menu
|
||||
if showDesktopDragHandles
|
||||
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
|
||||
if currentUser.isBoardAdmin
|
||||
if showDesktopDragHandles
|
||||
a.list-header-handle.handle.fa.fa-arrows.js-list-handle
|
||||
|
||||
template(name="editListTitleForm")
|
||||
.list-composer
|
||||
@@ -115,8 +116,9 @@ template(name="listMorePopup")
|
||||
input.inline-input(type="text" readonly value="{{ rootUrl }}")
|
||||
| {{_ 'added'}}
|
||||
span.date(title=list.createdAt) {{ moment createdAt 'LLL' }}
|
||||
unless currentUser.isWorker
|
||||
a.js-delete {{_ 'delete'}}
|
||||
//unless currentUser.isWorker
|
||||
// if currentUser.isBoardAdmin
|
||||
// a.js-delete {{_ 'delete'}}
|
||||
|
||||
template(name="listDeletePopup")
|
||||
p {{_ "list-delete-pop"}}
|
||||
|
||||
@@ -104,6 +104,10 @@ BlazeComponent.extendComponent({
|
||||
}).register('listHeader');
|
||||
|
||||
Template.listHeader.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
|
||||
showDesktopDragHandles() {
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
@@ -117,6 +121,10 @@ Template.listHeader.helpers({
|
||||
});
|
||||
|
||||
Template.listActionPopup.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
|
||||
isWipLimitEnabled() {
|
||||
return Template.currentData().getWipLimit('enabled');
|
||||
},
|
||||
@@ -254,6 +262,12 @@ Template.listMorePopup.events({
|
||||
}),
|
||||
});
|
||||
|
||||
Template.listHeader.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.currentList = this.currentData();
|
||||
|
||||
@@ -272,10 +272,13 @@ function mySafeAttrValue(tag, name, value, cssFilter) {
|
||||
// then use your custom function
|
||||
if (tag === 'a' && name === 'href') {
|
||||
// only filter the value if starts with 'cbthunderlink:' or 'aodroplink'
|
||||
if (/^thunderlink:/ig.test(value) || /^cbthunderlink:/ig.test(value) || /^aodroplink:/ig.test(value)) {
|
||||
if (
|
||||
/^thunderlink:/gi.test(value) ||
|
||||
/^cbthunderlink:/gi.test(value) ||
|
||||
/^aodroplink:/gi.test(value)
|
||||
) {
|
||||
return value;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// use the default safeAttrValue function to process all non cbthunderlinks
|
||||
return sanitizeXss.safeAttrValue(tag, name, value, cssFilter);
|
||||
}
|
||||
@@ -283,7 +286,7 @@ function mySafeAttrValue(tag, name, value, cssFilter) {
|
||||
// use the default safeAttrValue function to process it
|
||||
return sanitizeXss.safeAttrValue(tag, name, value, cssFilter);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// XXX I believe we should compute a HTML rendered field on the server that
|
||||
// would handle markdown and user mentions. We can simply have two
|
||||
@@ -298,7 +301,8 @@ Blaze.Template.registerHelper(
|
||||
const view = this;
|
||||
let content = Blaze.toHTML(view.templateContentBlock);
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
if (!currentBoard) return HTML.Raw(sanitizeXss(content, { safeAttrValue: mySafeAttrValue }));
|
||||
if (!currentBoard)
|
||||
return HTML.Raw(sanitizeXss(content, { safeAttrValue: mySafeAttrValue }));
|
||||
const knowedUsers = currentBoard.members.map(member => {
|
||||
const u = Users.findOne(member.userId);
|
||||
if (u) {
|
||||
|
||||
@@ -50,8 +50,13 @@ template(name="header")
|
||||
else
|
||||
li.current {{_ 'quick-access-description'}}
|
||||
|
||||
a#header-new-board-icon.js-create-board
|
||||
i.fa.fa-plus(title="Create a new board")
|
||||
// Next line is used only for spacing at header,
|
||||
// there is no visible clickable icon.
|
||||
#header-new-board-icon
|
||||
// Hide duplicate create board button,
|
||||
// because it did not show board templates correctly.
|
||||
//a#header-new-board-icon.js-create-board
|
||||
// i.fa.fa-plus(title="Create a new board")
|
||||
|
||||
+notifications
|
||||
|
||||
|
||||
@@ -26,6 +26,10 @@ template(name='notificationIcon')
|
||||
i.fa.fa-code.activity-type(title="custom field")
|
||||
else if($in activityType 'addedLabel' 'removedLabel')
|
||||
i.fa.fa-tag.activity-type(title="label")
|
||||
else if($in activityType 'a-startAt' 'a-receivedAt')
|
||||
i.fa.fa-clock-o.activity-type(title="date")
|
||||
else if($in activityType 'a-dueAt' 'a-endAt')
|
||||
i.fa.fa-clock-o.activity-type(title="date")
|
||||
|
||||
else if($in activityType 'createList' 'removeList' 'archivedList')
|
||||
+listNotificationIcon
|
||||
|
||||
@@ -112,7 +112,7 @@ template(name="editUserPopup")
|
||||
label.hide.userId(type="text" value=user._id)
|
||||
label
|
||||
| {{_ 'fullname'}}
|
||||
input.js-profile-fullname(type="text" value=user.profile.fullname)
|
||||
input.js-profile-fullname(type="text" value=user.profile.fullname required)
|
||||
label
|
||||
| {{_ 'username'}}
|
||||
span.error.hide.username-taken
|
||||
@@ -120,7 +120,7 @@ template(name="editUserPopup")
|
||||
if isLdap
|
||||
input.js-profile-username(type="text" value=user.username readonly)
|
||||
else
|
||||
input.js-profile-username(type="text" value=user.username)
|
||||
input.js-profile-username(type="text" value=user.username required)
|
||||
label
|
||||
| {{_ 'email'}}
|
||||
span.error.hide.email-taken
|
||||
@@ -128,7 +128,7 @@ template(name="editUserPopup")
|
||||
if isLdap
|
||||
input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
|
||||
else
|
||||
input.js-profile-email(type="email" value="{{user.emails.[0].address}}")
|
||||
input.js-profile-email(type="email" value="{{user.emails.[0].address}}" required)
|
||||
label
|
||||
| {{_ 'admin'}}
|
||||
select.select-role.js-profile-isadmin
|
||||
@@ -153,15 +153,13 @@ template(name="editUserPopup")
|
||||
input.js-profile-password(type="password")
|
||||
div.buttonsContainer
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
// div
|
||||
// input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
|
||||
|
||||
template(name="newUserPopup")
|
||||
form
|
||||
//label.hide.userId(type="text" value=user._id)
|
||||
label
|
||||
| {{_ 'fullname'}}
|
||||
input.js-profile-fullname(type="text" value="")
|
||||
input.js-profile-fullname(type="text" value="" required)
|
||||
label
|
||||
| {{_ 'username'}}
|
||||
span.error.hide.username-taken
|
||||
@@ -169,7 +167,7 @@ template(name="newUserPopup")
|
||||
//if isLdap
|
||||
// input.js-profile-username(type="text" value=user.username readonly)
|
||||
//else
|
||||
input.js-profile-username(type="text" value="")
|
||||
input.js-profile-username(type="text" value="" required)
|
||||
label
|
||||
| {{_ 'email'}}
|
||||
span.error.hide.email-taken
|
||||
@@ -177,7 +175,7 @@ template(name="newUserPopup")
|
||||
//if isLdap
|
||||
// input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
|
||||
//else
|
||||
input.js-profile-email(type="email" value="")
|
||||
input.js-profile-email(type="email" value="" required)
|
||||
label
|
||||
| {{_ 'admin'}}
|
||||
select.select-role.js-profile-isadmin
|
||||
@@ -199,7 +197,7 @@ template(name="newUserPopup")
|
||||
hr
|
||||
label
|
||||
| {{_ 'password'}}
|
||||
input.js-profile-password(type="password")
|
||||
input.js-profile-password(type="password" required)
|
||||
div.buttonsContainer
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
|
||||
@@ -209,3 +207,21 @@ template(name="settingsUserPopup")
|
||||
a.impersonate-user
|
||||
i.fa.fa-user
|
||||
| {{_ 'impersonate-user'}}
|
||||
// Delete is not enabled yet, because it does leave empty user avatars
|
||||
// to boards: boards members, card members and assignees have
|
||||
// empty users. See:
|
||||
// - wekan/client/components/settings/peopleBody.jade deleteButton
|
||||
// - wekan/client/components/settings/peopleBody.js deleteButton
|
||||
// - wekan/client/components/sidebar/sidebar.js Popup.afterConfirm('removeMember'
|
||||
// that does now remove member from board, card members and assignees correctly,
|
||||
// but that should be used to remove user from all boards similarly
|
||||
// - wekan/models/users.js Delete is not enabled
|
||||
//li
|
||||
// br
|
||||
// br
|
||||
// hr
|
||||
//li
|
||||
// form
|
||||
// label.hide.userId(type="text" value=user._id)
|
||||
// div.buttonsContainer
|
||||
// input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
|
||||
@@ -226,8 +226,14 @@ Template.editUserPopup.events({
|
||||
|
||||
const isChangePassword = password.length > 0;
|
||||
const isChangeUserName = username !== user.username;
|
||||
|
||||
// If previously email address has not been set, it is undefined,
|
||||
// check for undefined, and allow adding email address.
|
||||
const isChangeEmail =
|
||||
email.toLowerCase() !== user.emails[0].address.toLowerCase();
|
||||
email.toLowerCase() !==
|
||||
(typeof user.emails !== 'undefined'
|
||||
? user.emails[0].address.toLowerCase()
|
||||
: false);
|
||||
|
||||
Users.update(this.userId, {
|
||||
$set: {
|
||||
@@ -297,11 +303,6 @@ Template.editUserPopup.events({
|
||||
});
|
||||
} else Popup.close();
|
||||
},
|
||||
|
||||
'click #deleteButton': Popup.afterConfirm('userDelete', function() {
|
||||
Users.remove(this.userId);
|
||||
Popup.close();
|
||||
}),
|
||||
});
|
||||
|
||||
Template.newUserPopup.events({
|
||||
@@ -356,4 +357,58 @@ Template.settingsUserPopup.events({
|
||||
}
|
||||
});
|
||||
},
|
||||
'click #deleteButton'(event) {
|
||||
event.preventDefault();
|
||||
/*
|
||||
// Delete is not enabled yet, because it does leave empty user avatars
|
||||
// to boards: boards members, card members and assignees have
|
||||
// empty users. See:
|
||||
// - wekan/client/components/settings/peopleBody.jade deleteButton
|
||||
// - wekan/client/components/settings/peopleBody.js deleteButton
|
||||
// - wekan/client/components/sidebar/sidebar.js Popup.afterConfirm('removeMember'
|
||||
// that does now remove member from board, card members and assignees correctly,
|
||||
// but that should be used to remove user from all boards similarly
|
||||
// - wekan/models/users.js Delete is not enabled
|
||||
//
|
||||
//console.log('user id: ' + this.userId);
|
||||
//Popup.afterConfirm('userDelete', function(event) {
|
||||
//Boards.find({ members: this.userId }).forEach(board => {
|
||||
// console.log('board id: ' + board._id);
|
||||
//Cards.find({ boardId: board._id, members: this.userId }).forEach(card => {
|
||||
// card.unassignMember(this.userId);
|
||||
//});
|
||||
//Cards.find({ boardId: board._id, members: this.userId }).forEach(card => {
|
||||
// card.unassignMember(this.userId);
|
||||
//});
|
||||
//Cards.find({ boardId: board._id, assignees: this.userId }).forEach(card => {
|
||||
// card.unassignAssignee(this.userId);
|
||||
//});
|
||||
//Boards.findOne({ boardId: board._id }).removeMember(this.userId);
|
||||
//});
|
||||
//Users.remove(this.userId);
|
||||
*/
|
||||
Popup.close();
|
||||
},
|
||||
});
|
||||
|
||||
Template.settingsUserPopup.helpers({
|
||||
user() {
|
||||
return Users.findOne(this.userId);
|
||||
},
|
||||
authentications() {
|
||||
return Template.instance().authenticationMethods.get();
|
||||
},
|
||||
isSelected(match) {
|
||||
const userId = Template.instance().data.userId;
|
||||
const selected = Users.findOne(userId).authenticationMethod;
|
||||
return selected === match;
|
||||
},
|
||||
isLdap() {
|
||||
const userId = Template.instance().data.userId;
|
||||
const selected = Users.findOne(userId).authenticationMethod;
|
||||
return selected === 'ldap';
|
||||
},
|
||||
errorMessage() {
|
||||
return Template.instance().errorMessage.get();
|
||||
},
|
||||
});
|
||||
@@ -269,14 +269,16 @@ template(name="outgoingWebhooksPopup")
|
||||
|
||||
template(name="boardMenuPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-open-rules-view(title="{{_ 'rules'}}")
|
||||
i.fa.fa-magic
|
||||
| {{_ 'rules'}}
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'custom-fields'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-open-rules-view(title="{{_ 'rules'}}")
|
||||
i.fa.fa-magic
|
||||
| {{_ 'rules'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'custom-fields'}}
|
||||
li
|
||||
a.js-open-archives
|
||||
i.fa.fa-archive
|
||||
@@ -297,14 +299,14 @@ template(name="boardMenuPopup")
|
||||
i.fa.fa-flag
|
||||
| {{_ 'language'}}
|
||||
unless isSandstorm
|
||||
if currentUser.isBoardAdmin
|
||||
hr
|
||||
ul.pop-over-list
|
||||
if withApi
|
||||
li
|
||||
a.js-export-board
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
if withApi
|
||||
li
|
||||
a.js-export-board
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-outgoing-webhooks
|
||||
i.fa.fa-globe
|
||||
@@ -317,7 +319,8 @@ template(name="boardMenuPopup")
|
||||
a.js-subtask-settings
|
||||
i.fa.fa-sitemap
|
||||
| {{_ 'subtask-settings'}}
|
||||
unless currentBoard.isTemplatesBoard
|
||||
unless currentBoard.isTemplatesBoard
|
||||
if currentUser.isBoardAdmin
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
@@ -329,20 +332,22 @@ template(name="boardMenuPopup")
|
||||
if isSandstorm
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-export-board
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board'}}
|
||||
li
|
||||
a.js-import-board
|
||||
i.fa.fa-share-alt
|
||||
i.fa.fa-sign-in
|
||||
| {{_ 'import-board-c'}}
|
||||
li
|
||||
a.js-archive-board
|
||||
i.fa.fa-arrow-right
|
||||
i.fa.fa-archive
|
||||
| {{_ 'archive-board'}}
|
||||
if currentUser.isMember
|
||||
li
|
||||
a.js-export-board
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board'}}
|
||||
li
|
||||
a.js-import-board
|
||||
i.fa.fa-share-alt
|
||||
i.fa.fa-sign-in
|
||||
| {{_ 'import-board-c'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-archive-board
|
||||
i.fa.fa-arrow-right
|
||||
i.fa.fa-archive
|
||||
| {{_ 'archive-board'}}
|
||||
li
|
||||
a.js-outgoing-webhooks
|
||||
i.fa.fa-globe
|
||||
|
||||
@@ -155,6 +155,9 @@ Template.memberPopup.helpers({
|
||||
user() {
|
||||
return Users.findOne(this.userId);
|
||||
},
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
memberType() {
|
||||
const type = Users.findOne(this.userId).isBoardAdmin() ? 'admin' : 'normal';
|
||||
if (type === 'normal') {
|
||||
@@ -224,6 +227,9 @@ Template.boardMenuPopup.onCreated(function() {
|
||||
});
|
||||
|
||||
Template.boardMenuPopup.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
withApi() {
|
||||
return Template.instance().apiEnabled.get();
|
||||
},
|
||||
@@ -249,11 +255,15 @@ Template.memberPopup.events({
|
||||
},
|
||||
'click .js-change-role': Popup.open('changePermissions'),
|
||||
'click .js-remove-member': Popup.afterConfirm('removeMember', function() {
|
||||
// This works from removing member from board, card members and assignees.
|
||||
const boardId = Session.get('currentBoard');
|
||||
const memberId = this.userId;
|
||||
Cards.find({ boardId, members: memberId }).forEach(card => {
|
||||
card.unassignMember(memberId);
|
||||
});
|
||||
Cards.find({ boardId, assignees: memberId }).forEach(card => {
|
||||
card.unassignAssignee(memberId);
|
||||
});
|
||||
Boards.findOne(boardId).removeMember(memberId);
|
||||
Popup.close();
|
||||
}),
|
||||
@@ -294,6 +304,9 @@ Template.membersWidget.helpers({
|
||||
return false;
|
||||
}
|
||||
},
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
});
|
||||
|
||||
Template.membersWidget.events({
|
||||
@@ -475,6 +488,12 @@ Template.labelsWidget.events({
|
||||
'click .js-add-label': Popup.open('createLabel'),
|
||||
});
|
||||
|
||||
Template.labelsWidget.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
});
|
||||
|
||||
// Board members can assign people or labels by drag-dropping elements from the
|
||||
// sidebar to the cards on the board. In order to re-initialize the jquery-ui
|
||||
// plugin any time a draggable member or label is modified or removed we use a
|
||||
|
||||
@@ -5,8 +5,9 @@ template(name="archivesSidebar")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-all-cards {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-cards {{_ 'delete-all'}}
|
||||
if currentUser.isBoardAdmin
|
||||
| -
|
||||
a.js-delete-all-cards {{_ 'delete-all'}}
|
||||
each archivedCards
|
||||
.minicard-wrapper.js-minicard
|
||||
+minicard(this)
|
||||
@@ -14,8 +15,9 @@ template(name="archivesSidebar")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-card {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-card {{_ 'delete'}}
|
||||
if currentUser.isBoardAdmin
|
||||
| -
|
||||
a.js-delete-card {{_ 'delete'}}
|
||||
if cardIsInArchivedList
|
||||
p.quiet.small ({{_ 'warn-list-archived'}})
|
||||
else
|
||||
@@ -25,8 +27,9 @@ template(name="archivesSidebar")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-all-lists {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-lists {{_ 'delete-all'}}
|
||||
if currentUser.isBoardAdmin
|
||||
| -
|
||||
a.js-delete-all-lists {{_ 'delete-all'}}
|
||||
ul.archived-lists
|
||||
each archivedLists
|
||||
li.archived-lists-item
|
||||
@@ -35,8 +38,9 @@ template(name="archivesSidebar")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-list {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-list {{_ 'delete'}}
|
||||
if currentUser.isBoardAdmin
|
||||
| -
|
||||
a.js-delete-list {{_ 'delete'}}
|
||||
else
|
||||
li.no-items-message {{_ 'no-archived-lists'}}
|
||||
|
||||
@@ -44,8 +48,9 @@ template(name="archivesSidebar")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-all-swimlanes {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-swimlanes {{_ 'delete-all'}}
|
||||
if currentUser.isBoardAdmin
|
||||
| -
|
||||
a.js-delete-all-swimlanes {{_ 'delete-all'}}
|
||||
ul.archived-lists
|
||||
each archivedSwimlanes
|
||||
li.archived-lists-item
|
||||
@@ -54,8 +59,9 @@ template(name="archivesSidebar")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-swimlane {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-swimlane {{_ 'delete'}}
|
||||
if currentUser.isBoardAdmin
|
||||
| -
|
||||
a.js-delete-swimlane {{_ 'delete'}}
|
||||
else
|
||||
li.no-items-message {{_ 'no-archived-swimlanes'}}
|
||||
else
|
||||
|
||||
@@ -141,6 +141,9 @@ BlazeComponent.extendComponent({
|
||||
}).register('archivesSidebar');
|
||||
|
||||
Template.archivesSidebar.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
isWorker() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
return (
|
||||
|
||||
@@ -155,7 +155,7 @@ template(name="multiselectionSidebar")
|
||||
i.fa.fa-check
|
||||
else if someSelectedElementHave 'member' _id
|
||||
i.fa.fa-ellipsis-h
|
||||
unless currentUser.isWorker
|
||||
if currentUser.isBoardAdmin
|
||||
hr
|
||||
a.sidebar-btn.js-move-selection
|
||||
i.fa.fa-share
|
||||
|
||||
@@ -134,6 +134,15 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('multiselectionSidebar');
|
||||
|
||||
Template.multiselectionSidebar.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
isCommentOnly() {
|
||||
return Meteor.user().isCommentOnly();
|
||||
},
|
||||
});
|
||||
|
||||
Template.disambiguateMultiLabelPopup.events({
|
||||
'click .js-remove-label'() {
|
||||
mutateSelectedCards('removeLabel', this._id);
|
||||
|
||||
@@ -15,8 +15,9 @@ template(name="swimlaneFixedHeader")
|
||||
= 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
|
||||
if currentUser.isBoardAdmin
|
||||
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon
|
||||
a.fa.fa-navicon.js-open-swimlane-menu
|
||||
unless isMiniScreen
|
||||
if showDesktopDragHandles
|
||||
a.swimlane-header-handle.handle.fa.fa-arrows.js-swimlane-header-handle
|
||||
|
||||
@@ -41,6 +41,12 @@ Template.swimlaneHeader.helpers({
|
||||
},
|
||||
});
|
||||
|
||||
Template.swimlaneFixedHeader.helpers({
|
||||
isBoardAdmin() {
|
||||
return Meteor.user().isBoardAdmin();
|
||||
},
|
||||
});
|
||||
|
||||
Template.swimlaneActionPopup.events({
|
||||
'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
|
||||
'click .js-close-swimlane'(event) {
|
||||
@@ -50,6 +56,12 @@ Template.swimlaneActionPopup.events({
|
||||
},
|
||||
});
|
||||
|
||||
Template.swimlaneActionPopup.helpers({
|
||||
isCommentOnly() {
|
||||
return Meteor.user().isCommentOnly();
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.currentSwimlane = this.currentData();
|
||||
|
||||
@@ -45,18 +45,19 @@ template(name="listsGroup")
|
||||
template(name="addListForm")
|
||||
unless currentUser.isWorker
|
||||
.list.list-composer.js-list-composer(class="{{#if isMiniScreen}}mini-list{{/if}}")
|
||||
.list-header-add
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
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
|
||||
| {{_ 'add-list'}}
|
||||
if currentUser.isBoardAdmin
|
||||
.list-header-add
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
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
|
||||
| {{_ 'add-list'}}
|
||||
@@ -122,7 +122,8 @@ function initSortable(boardComponent, $listsDom) {
|
||||
'option',
|
||||
'disabled',
|
||||
// Disable drag-dropping when user is not member/is worker
|
||||
!userIsMember() || Meteor.user().isWorker(),
|
||||
//!userIsMember() || Meteor.user().isWorker(),
|
||||
!Meteor.user().isBoardAdmin(),
|
||||
// Not disable drag-dropping while in multi-selection mode
|
||||
// MultiSelection.isActive() || !userIsMember(),
|
||||
);
|
||||
@@ -274,12 +275,13 @@ Template.swimlane.helpers({
|
||||
}
|
||||
},
|
||||
canSeeAddList() {
|
||||
return (
|
||||
return Meteor.user().isBoardAdmin();
|
||||
/*
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
);
|
||||
*/
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -36,6 +36,10 @@
|
||||
// Minimize swimlanes end https://www.w3schools.com/howto/howto_js_accordion.asp
|
||||
*/
|
||||
|
||||
[class=swimlane]
|
||||
position: sticky
|
||||
left: 0
|
||||
|
||||
.swimlane
|
||||
// Even if this background color is the same as the body we can't leave it
|
||||
// transparent, because that won't work during a swimlane drag.
|
||||
|
||||
@@ -31,6 +31,10 @@ Blaze.registerHelper('concat', (...args) => args.slice(0, -1).join(''));
|
||||
|
||||
Blaze.registerHelper('isMiniScreen', () => Utils.isMiniScreen());
|
||||
|
||||
Blaze.registerHelper('isShowDesktopDragHandles', () => Utils.isShowDesktopDragHandles());
|
||||
Blaze.registerHelper('isShowDesktopDragHandles', () =>
|
||||
Utils.isShowDesktopDragHandles(),
|
||||
);
|
||||
|
||||
Blaze.registerHelper('isMiniScreenOrShowDesktopDragHandles', () => Utils.isMiniScreenOrShowDesktopDragHandles());
|
||||
Blaze.registerHelper('isMiniScreenOrShowDesktopDragHandles', () =>
|
||||
Utils.isMiniScreenOrShowDesktopDragHandles(),
|
||||
);
|
||||
+2
-4
@@ -192,11 +192,9 @@ Utils = {
|
||||
|
||||
// returns if desktop drag handles are enabled
|
||||
isShowDesktopDragHandles() {
|
||||
let currentUser = Meteor.user();
|
||||
const currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -204,7 +202,7 @@ Utils = {
|
||||
|
||||
// returns if mini screen or desktop drag handles
|
||||
isMiniScreenOrShowDesktopDragHandles() {
|
||||
return this.isMiniScreen() || this.isShowDesktopDragHandles()
|
||||
return this.isMiniScreen() || this.isShowDesktopDragHandles();
|
||||
},
|
||||
|
||||
calculateIndexData(prevData, nextData, nItems = 1) {
|
||||
|
||||
+8
-2
@@ -92,11 +92,17 @@ services:
|
||||
#-------------------------------------------------------------------------------------
|
||||
# ==== MONGODB AND METEOR VERSION ====
|
||||
# a) mongodb latest, like 3.2 - 4.4 or newer https://hub.docker.com/_/mongo?tab=description
|
||||
image: mongo:latest
|
||||
# 2020-12-03:
|
||||
# - Mongo image copied from Docker Hub mongo:4.4.2-bionic to Quay
|
||||
# to avoid Docker Hub rate limits.
|
||||
image: quay.io/wekan/mongo:4.4.2-bionic
|
||||
#-------------------------------------------------------------------------------------
|
||||
container_name: wekan-db
|
||||
restart: always
|
||||
command: mongod --oplogSize 128
|
||||
# command: mongod --oplogSize 128
|
||||
# Syslog: mongod --syslog --oplogSize 128 --quiet
|
||||
# Disable MongoDB logs:
|
||||
command: mongod --logpath /dev/null --oplogSize 128 --quiet
|
||||
networks:
|
||||
- wekan-tier
|
||||
expose:
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
name: wekan
|
||||
version: 1.0.0
|
||||
appVersion: 2.x.x
|
||||
kubeVersion: "^1.8.0-0"
|
||||
version: 1.0.2
|
||||
apiVersion: v1
|
||||
description: Open Source kanban
|
||||
home: https://wekan.github.io/
|
||||
icon: https://wekan.github.io/wekan-logo.svg
|
||||
@@ -10,4 +9,6 @@ sources:
|
||||
maintainers:
|
||||
- name: technotaff
|
||||
email: github@randall.cc
|
||||
- name: jiangytcn
|
||||
email: jiangyt.cn@gmail.com
|
||||
engine: gotpl
|
||||
@@ -1,5 +1,5 @@
|
||||
dependencies:
|
||||
- name: mongodb-replicaset
|
||||
version: 3.11.x
|
||||
repository: "https://kubernetes-charts.storage.googleapis.com/"
|
||||
condition: mongodb-replicaset.enabled
|
||||
- name: mongodb
|
||||
version: 10.0.x
|
||||
repository: "https://charts.bitnami.com/bitnami"
|
||||
condition: mongodb.enabled
|
||||
@@ -62,21 +62,27 @@ Create the name of the service account to use for the api component
|
||||
Create a default fully qualified mongodb-replicaset name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "wekan.mongodb-replicaset.fullname" -}}
|
||||
{{- $name := default "mongodb-replicaset" (index .Values "mongodb-replicaset" "nameOverride") -}}
|
||||
{{- define "wekan.mongodb.svcname" -}}
|
||||
{{- $name := default "mongodb" (index .Values "mongodb" "nameOverride") -}}
|
||||
{{- if eq .Values.mongodb.architecture "replicaset" }}
|
||||
{{- printf "%s-%s-headless" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the MongoDB URL. If MongoDB is installed as part of this chart, use k8s service discovery,
|
||||
else use user-provided URL.
|
||||
*/}}
|
||||
{{- define "mongodb-replicaset.url" -}}
|
||||
{{- if (index .Values "mongodb-replicaset" "enabled") -}}
|
||||
{{- $count := (int (index .Values "mongodb-replicaset" "replicas")) -}}
|
||||
{{- define "mongodb.url" -}}
|
||||
{{- if (index .Values "mongodb" "enabled") -}}
|
||||
{{- $count := (int (index .Values "mongodb" "replicaCount")) -}}
|
||||
{{- $release := .Release.Name -}}
|
||||
mongodb://{{ $release }}-mongodb-replicaset:27017/admin?replicaSet={{ index .Values "mongodb-replicaset" "replicaSetName" }}
|
||||
{{- $replicaSetName := (index .Values "mongodb" "replicaSetName") -}}
|
||||
{{- $mongodbSvcName := include "wekan.mongodb.svcname" . -}}
|
||||
mongodb://{{- range $v := until $count }}{{ $release }}-mongodb-{{ $v }}.{{ $mongodbSvcName }}:27017{{ if ne $v (sub $count 1) }},{{- end -}}{{- end -}}?replicaSet={{ $replicaSetName }}
|
||||
{{- else -}}
|
||||
{{- index .Values "mongodb-replicaset" "url" -}}
|
||||
{{- index .Values "mongodb" "url" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -36,13 +36,19 @@ spec:
|
||||
- name: ROOT_URL
|
||||
value: {{ .Values.root_url | default "https://wekan.local" | quote }}
|
||||
- name: MONGO_URL
|
||||
value: "{{ template "mongodb-replicaset.url" . }}"
|
||||
value: "{{ template "mongodb.url" . }}"
|
||||
{{- range $key := .Values.env }}
|
||||
{{- if .value }}
|
||||
- name: {{ .name }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range $key := .Values.secretEnv }}
|
||||
{{- if .value }}
|
||||
- name: {{ .name }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{{- $fullName := include "wekan.fullname" . -}}
|
||||
{{- $servicePort := .Values.service.port -}}
|
||||
{{- $ingressPath := .Values.ingress.path -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
@@ -27,6 +27,9 @@ spec:
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: 8080
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . }}
|
||||
@@ -35,6 +38,6 @@ spec:
|
||||
- path: {{ $ingressPath }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: 80
|
||||
servicePort: 8080
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,14 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "wekan.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "wekan.name" . }}
|
||||
chart: {{ template "wekan.chart" . }}
|
||||
component: wekan
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
type: Opaque
|
||||
data:
|
||||
accessKey: {{ .Values.credentials.accessKey | b64enc }}
|
||||
secretKey: {{ .Values.credentials.secretKey | b64enc }}
|
||||
@@ -1,27 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ template "wekan.fullname" . }}-test
|
||||
annotations:
|
||||
"helm.sh/hook": test-success
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ template "wekan.fullname" . }}-test
|
||||
imagePullPolicy: IfNotPresent
|
||||
image: "docker.io/mesosphere/aws-cli:1.14.5"
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- aws s3 --endpoint-url=http://{{ include "wekan.fullname" . }} --region=us-east-1 ls
|
||||
env:
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "wekan.fullname" . }}
|
||||
key: accessKey
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "wekan.fullname" . }}
|
||||
key: secretKey
|
||||
restartPolicy: Never
|
||||
+14
-15
@@ -22,21 +22,23 @@ image:
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
## Specify wekan credentials
|
||||
##
|
||||
credentials:
|
||||
accessKey: access-key
|
||||
secretKey: secret-key
|
||||
|
||||
## Specify additional environmental variables for the Deployment
|
||||
##
|
||||
env:
|
||||
- name: ""
|
||||
value: ""
|
||||
|
||||
## Specify additional secret environmental variables for the
|
||||
## Deployment. These can e.g. be provided by a Secret and allow
|
||||
## to store passwords separately
|
||||
##
|
||||
secretEnv:
|
||||
- name: ""
|
||||
value: ""
|
||||
|
||||
service:
|
||||
type: NodePort
|
||||
port: 80
|
||||
port: 8080
|
||||
annotations: {}
|
||||
# prometheus.io/scrape: "true"
|
||||
# prometheus.io/port: "8000"
|
||||
@@ -104,13 +106,10 @@ autoscaling:
|
||||
# MongoDB:
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
mongodb-replicaset:
|
||||
mongodb:
|
||||
enabled: true
|
||||
replicas: 3
|
||||
architecture: replicaset
|
||||
replicaCount: 3
|
||||
replicaSetName: rs0
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
fsGroup: 1000
|
||||
runAsNonRoot: true
|
||||
#image:
|
||||
# tag: 3.2.21
|
||||
auth:
|
||||
enabled: false
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+6
-2
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "nedokončený seznam %s",
|
||||
"activity-editComment": "upravit komentář %s",
|
||||
"activity-deleteComment": "smazat komentář %s",
|
||||
"activity-receivedDate": "editoval(a) datum přijetí na %s z %s",
|
||||
"activity-startDate": "editoval(a) datum zahájení na %s z %s",
|
||||
"activity-dueDate": "editoval(a) termín dokončení na %s z %s",
|
||||
"activity-endDate": "editoval(a) datum ukončení na %s z %s",
|
||||
"add-attachment": "Přidat přílohu",
|
||||
"add-board": "Přidat tablo",
|
||||
"add-card": "Přidat kartu",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "Smazat přílohu?",
|
||||
"attachments": "Přílohy",
|
||||
"auto-watch": "Automaticky sleduj tabla když jsou vytvořena",
|
||||
"avatar-too-big": "Avatar obrázek je příliš velký (70KB max)",
|
||||
"avatar-too-big": "Avatar je příliš velký (520KB max)",
|
||||
"back": "Zpět",
|
||||
"board-change-color": "Změnit barvu",
|
||||
"board-nb-stars": "%s hvězdiček",
|
||||
@@ -488,7 +492,7 @@
|
||||
"shortcut-filter-my-cards": "Filtrovat mé karty",
|
||||
"shortcut-show-shortcuts": "Otevřít tento seznam odkazů",
|
||||
"shortcut-toggle-filterbar": "Přepnout lištu filtrování",
|
||||
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
|
||||
"shortcut-toggle-searchbar": "Přepnout lištu vyhledávání",
|
||||
"shortcut-toggle-sidebar": "Přepnout lištu tabla",
|
||||
"show-cards-minimum-count": "Zobrazit počet karet pokud sloupec obsahuje více než",
|
||||
"sidebar-open": "Otevřít boční panel",
|
||||
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+5
-1
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Add Card",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "Delete Attachment?",
|
||||
"attachments": "Attachments",
|
||||
"auto-watch": "Automatically watch boards when they are created",
|
||||
"avatar-too-big": "The avatar is too large (70KB max)",
|
||||
"avatar-too-big": "The avatar is too large (520KB max)",
|
||||
"back": "Back",
|
||||
"board-change-color": "Change color",
|
||||
"board-nb-stars": "%s stars",
|
||||
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+15
-11
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "no completó la lista de comprobación %s",
|
||||
"activity-editComment": "comentario editado",
|
||||
"activity-deleteComment": "comentario eliminado",
|
||||
"activity-receivedDate": "editada la fecha de recepción a %s de %s",
|
||||
"activity-startDate": "editada la fecha de inicio a %s de %s",
|
||||
"activity-dueDate": "editada la fecha de vencimiento a %s de %s",
|
||||
"activity-endDate": "editada la fecha de finalización a %s de %s",
|
||||
"add-attachment": "Agregar adjunto",
|
||||
"add-board": "Agregar tablero",
|
||||
"add-card": "Agregar una tarjeta",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "¿Eliminar el adjunto?",
|
||||
"attachments": "Adjuntos",
|
||||
"auto-watch": "Suscribirse automáticamente a los tableros cuando son creados",
|
||||
"avatar-too-big": "El avatar es muy grande (70 KB máx.)",
|
||||
"avatar-too-big": "El avatar es muy grande (520 KB máx.)",
|
||||
"back": "Atrás",
|
||||
"board-change-color": "Cambiar el color",
|
||||
"board-nb-stars": "%s destacados",
|
||||
@@ -162,11 +166,11 @@
|
||||
"cardAttachmentsPopup-title": "Adjuntar desde",
|
||||
"cardCustomField-datePopup-title": "Cambiar la fecha",
|
||||
"cardCustomFieldsPopup-title": "Editar los campos personalizados",
|
||||
"cardStartVotingPopup-title": "Comience a votar",
|
||||
"cardStartVotingPopup-title": "Iniciar una votación",
|
||||
"positiveVoteMembersPopup-title": "Favorables",
|
||||
"negativeVoteMembersPopup-title": "Contrarios",
|
||||
"card-edit-voting": "Editar votación",
|
||||
"editVoteEndDatePopup-title": "Cambie fecha de termino del voto",
|
||||
"editVoteEndDatePopup-title": "Cambiar la fecha de finalización de la votación",
|
||||
"allowNonBoardMembers": "Permitir todos los usuarios autentificados",
|
||||
"vote-question": "Pregunta de votación",
|
||||
"vote-public": "Mostrar quien voto que",
|
||||
@@ -285,7 +289,7 @@
|
||||
"edit-profile": "Editar el perfil",
|
||||
"edit-wip-limit": "Cambiar el límite del trabajo en proceso",
|
||||
"soft-wip-limit": "Límite del trabajo en proceso flexible",
|
||||
"editCardStartDatePopup-title": "Cambiar la fecha de comienzo",
|
||||
"editCardStartDatePopup-title": "Cambiar la fecha de inicio",
|
||||
"editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
|
||||
"editCustomFieldPopup-title": "Editar el campo",
|
||||
"editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
|
||||
@@ -488,7 +492,7 @@
|
||||
"shortcut-filter-my-cards": "Filtrar mis tarjetas",
|
||||
"shortcut-show-shortcuts": "Mostrar esta lista de atajos",
|
||||
"shortcut-toggle-filterbar": "Alternar la barra lateral del filtro",
|
||||
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
|
||||
"shortcut-toggle-searchbar": "Alternar la barra lateral de búsqueda",
|
||||
"shortcut-toggle-sidebar": "Alternar la barra lateral del tablero",
|
||||
"show-cards-minimum-count": "Mostrar recuento de tarjetas si la lista contiene más de",
|
||||
"sidebar-open": "Abrir la barra lateral",
|
||||
@@ -558,11 +562,11 @@
|
||||
"smtp-password": "Contraseña",
|
||||
"smtp-tls": "Soporte TLS",
|
||||
"send-from": "Desde",
|
||||
"send-smtp-test": "Enviarte un correo de prueba a ti mismo",
|
||||
"send-smtp-test": "Enviar un correo de prueba a usted mismo",
|
||||
"invitation-code": "Código de Invitación",
|
||||
"email-invite-register-subject": "__inviter__ le envió una invitación",
|
||||
"email-invite-register-text": "Estimado __user__,\n\n__inviter__ le invita a participar en un tablero Kanban para colaborar.\n\nPor favor, siga el siguiente enlace:\n__url__\n\nY su código de invitación es: __icode__\n\nGracias.",
|
||||
"email-smtp-test-subject": "Prueba de email SMTP",
|
||||
"email-smtp-test-subject": "Correo de prueba SMTP",
|
||||
"email-smtp-test-text": "El correo se ha enviado correctamente",
|
||||
"error-invitation-code-not-exist": "El código de invitación no existe",
|
||||
"error-notAuthorized": "No está autorizado a ver esta página.",
|
||||
@@ -707,7 +711,7 @@
|
||||
"r-uncheck": "Desmarcar",
|
||||
"r-item": "elemento",
|
||||
"r-of-checklist": "de la lista de comprobación",
|
||||
"r-send-email": "Enviar un email",
|
||||
"r-send-email": "Enviar un correo electrónico",
|
||||
"r-to": "a",
|
||||
"r-of": "de",
|
||||
"r-subject": "asunto",
|
||||
@@ -716,7 +720,7 @@
|
||||
"r-d-move-to-top-spec": "Mover la tarjeta al inicio de la lista",
|
||||
"r-d-move-to-bottom-gen": "Mover la tarjeta al final de su lista",
|
||||
"r-d-move-to-bottom-spec": "Mover la tarjeta al final de la lista",
|
||||
"r-d-send-email": "Enviar email",
|
||||
"r-d-send-email": "Enviar correo electrónico",
|
||||
"r-d-send-email-to": "a",
|
||||
"r-d-send-email-subject": "asunto",
|
||||
"r-d-send-email-message": "mensaje",
|
||||
@@ -779,11 +783,11 @@
|
||||
"previous_as": "el último tiempo fue",
|
||||
"act-a-dueAt": "cambiada la hora de vencimiento a \nCuándo: __timeValue__\nDónde: __card__\n el vencimiento anterior fue __timeOldValue__",
|
||||
"act-a-endAt": "cambiada la hora de finalización a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"act-a-startAt": "cambiada la hora de comienzo a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"act-a-startAt": "cambiada la hora de inicio a __timeValue__ de (__timeOldValue__)",
|
||||
"act-a-receivedAt": "cambiada la fecha de recepción a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"a-dueAt": "cambiada la hora de vencimiento a",
|
||||
"a-endAt": "cambiada la hora de finalización a",
|
||||
"a-startAt": "cambiada la hora de comienzo a",
|
||||
"a-startAt": "cambiada la hora de inicio a",
|
||||
"a-receivedAt": "cambiada la hora de recepción a",
|
||||
"almostdue": "está próxima la hora de vencimiento actual %s",
|
||||
"pastdue": "se sobrepasó la hora de vencimiento actual %s",
|
||||
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+6
-2
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "a rendu incomplète la checklist %s",
|
||||
"activity-editComment": "commentaire modifié %s",
|
||||
"activity-deleteComment": "commentaire supprimé %s",
|
||||
"activity-receivedDate": "date de réception éditée de %s à %s",
|
||||
"activity-startDate": "date de début éditée de %s à %s",
|
||||
"activity-dueDate": "date d'échéance éditée de %s à %s",
|
||||
"activity-endDate": "date de fin éditée de %s à %s",
|
||||
"add-attachment": "Ajouter une pièce jointe",
|
||||
"add-board": "Ajouter un tableau",
|
||||
"add-card": "Ajouter une carte",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "Supprimer la pièce jointe ?",
|
||||
"attachments": "Pièces jointes",
|
||||
"auto-watch": "Surveiller automatiquement les tableaux quand ils sont créés",
|
||||
"avatar-too-big": "La taille du fichier de l'avatar est trop importante (70 ko au maximum)",
|
||||
"avatar-too-big": "La taille du fichier de l'avatar est trop importante (520 ko au maximum)",
|
||||
"back": "Retour",
|
||||
"board-change-color": "Changer la couleur",
|
||||
"board-nb-stars": "%s étoiles",
|
||||
@@ -488,7 +492,7 @@
|
||||
"shortcut-filter-my-cards": "Filtrer mes cartes",
|
||||
"shortcut-show-shortcuts": "Afficher cette liste de raccourcis",
|
||||
"shortcut-toggle-filterbar": "Afficher/Masquer la barre latérale des filtres",
|
||||
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
|
||||
"shortcut-toggle-searchbar": "Afficher/Masquer la barre latérale de recherche",
|
||||
"shortcut-toggle-sidebar": "Afficher/Masquer la barre latérale du tableau",
|
||||
"show-cards-minimum-count": "Afficher le nombre de cartes si la liste en contient plus de",
|
||||
"sidebar-open": "Ouvrir le panneau",
|
||||
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+5
-1
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "רשימת המשימות %s סומנה כבלתי מושלמת",
|
||||
"activity-editComment": "התגובה %s נערכה",
|
||||
"activity-deleteComment": "התגובה %s נמחקה",
|
||||
"activity-receivedDate": "תאריך הקבלה השתנה מ־%s ל־%s",
|
||||
"activity-startDate": "תאריך ההתחלה השתנה מ־%s ל־%s",
|
||||
"activity-dueDate": "תאריך היעד השתנה מ־%s ל־%s",
|
||||
"activity-endDate": "תאריך הסיום השתנה מ־%s ל־%s",
|
||||
"add-attachment": "הוספת קובץ מצורף",
|
||||
"add-board": "הוספת לוח",
|
||||
"add-card": "הוספת כרטיס",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "למחוק קובץ מצורף?",
|
||||
"attachments": "קבצים מצורפים",
|
||||
"auto-watch": "הוספת לוחות למעקב כשהם נוצרים",
|
||||
"avatar-too-big": "תמונת המשתמש גדולה מדי (70 ק״ב לכל היותר)",
|
||||
"avatar-too-big": "תמונת המשתמש גדולה מדי (520 ק״ב לכל היותר)",
|
||||
"back": "חזרה",
|
||||
"board-change-color": "שינוי צבע",
|
||||
"board-nb-stars": "%s כוכבים",
|
||||
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+6
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"accept": "យល់ព្រម",
|
||||
"act-activity-notify": "Activity Notification",
|
||||
"act-activity-notify": "ដំណឹងនៃសកម្មភាព",
|
||||
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Add Card",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "Delete Attachment?",
|
||||
"attachments": "Attachments",
|
||||
"auto-watch": "Automatically watch boards when they are created",
|
||||
"avatar-too-big": "The avatar is too large (70KB max)",
|
||||
"avatar-too-big": "The avatar is too large (520KB max)",
|
||||
"back": "Back",
|
||||
"board-change-color": "Change color",
|
||||
"board-nb-stars": "%s stars",
|
||||
|
||||
+113
-109
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
|
||||
"activity-editComment": "수정된 댓글",
|
||||
"activity-deleteComment": "삭제된 댓글",
|
||||
"activity-receivedDate": "edited received date to %s of %s",
|
||||
"activity-startDate": "edited start date to %s of %s",
|
||||
"activity-dueDate": "edited due date to %s of %s",
|
||||
"activity-endDate": "edited end date to %s of %s",
|
||||
"add-attachment": "첨부파일 추가",
|
||||
"add-board": "보드 추가",
|
||||
"add-card": "카드 추가",
|
||||
@@ -98,7 +102,7 @@
|
||||
"and-n-other-card_plural": "__count__ 개의 다른 카드들",
|
||||
"apply": "적용",
|
||||
"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": "보관으로 이동",
|
||||
"archive-all": "Move All to Archive",
|
||||
"archive-board": "Move Board to Archive",
|
||||
"archive-card": "Move Card to Archive",
|
||||
@@ -107,11 +111,11 @@
|
||||
"archive-selection": "Move selection to Archive",
|
||||
"archiveBoardPopup-title": "Move Board to Archive?",
|
||||
"archived-items": "보관",
|
||||
"archived-boards": "Boards in Archive",
|
||||
"archived-boards": "보관 중인 보드",
|
||||
"restore-board": "보드 복구",
|
||||
"no-archived-boards": "No Boards in Archive.",
|
||||
"no-archived-boards": "보관 중인 보드 없음.",
|
||||
"archives": "보관",
|
||||
"template": "Template",
|
||||
"template": "템플릿",
|
||||
"templates": "Templates",
|
||||
"assign-member": "멤버 지정",
|
||||
"attached": "첨부됨",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "첨부 파일을 삭제합니까?",
|
||||
"attachments": "첨부 파일",
|
||||
"auto-watch": "생성한 보드를 자동으로 감시합니다.",
|
||||
"avatar-too-big": "아바타 파일이 너무 큽니다. (최대 70KB)",
|
||||
"avatar-too-big": "The avatar is too large (520KB max)",
|
||||
"back": "뒤로",
|
||||
"board-change-color": "보드 색 변경",
|
||||
"board-nb-stars": "%s개의 별",
|
||||
@@ -131,11 +135,11 @@
|
||||
"boardChangeTitlePopup-title": "보드 이름 바꾸기",
|
||||
"boardChangeVisibilityPopup-title": "표시 여부 변경",
|
||||
"boardChangeWatchPopup-title": "감시상태 변경",
|
||||
"boardMenuPopup-title": "Board Settings",
|
||||
"boardMenuPopup-title": "보드 메뉴",
|
||||
"boardChangeViewPopup-title": "Board View",
|
||||
"boards": "보드",
|
||||
"board-view": "Board View",
|
||||
"board-view-cal": "Calendar",
|
||||
"board-view-cal": "달력",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-collapse": "Collapse",
|
||||
"board-view-gantt": "Gantt",
|
||||
@@ -160,30 +164,30 @@
|
||||
"card-start": "시작일",
|
||||
"card-start-on": "시작일",
|
||||
"cardAttachmentsPopup-title": "첨부 파일",
|
||||
"cardCustomField-datePopup-title": "Change date",
|
||||
"cardCustomField-datePopup-title": "날짜 변경",
|
||||
"cardCustomFieldsPopup-title": "Edit custom fields",
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"cardStartVotingPopup-title": "투표 시작",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"card-edit-voting": "투표 수정",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-question": "투표 질문",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"deleteVotePopup-title": "투표를 삭제합니까?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "카드를 삭제합니까?",
|
||||
"cardDetailsActionsPopup-title": "카드 액션",
|
||||
"cardLabelsPopup-title": "라벨",
|
||||
"cardMembersPopup-title": "멤버",
|
||||
"cardMorePopup-title": "더보기",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cardTemplatePopup-title": "템플릿 생성",
|
||||
"cards": "카드",
|
||||
"cards-count": "카드",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
"cardType-card": "Card",
|
||||
"cardType-card": "카드",
|
||||
"cardType-linkedCard": "Linked Card",
|
||||
"cardType-linkedBoard": "Linked Board",
|
||||
"change": "변경",
|
||||
@@ -206,28 +210,28 @@
|
||||
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
|
||||
"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",
|
||||
"comment": "댓글",
|
||||
@@ -252,11 +256,11 @@
|
||||
"createBoardPopup-title": "보드 생성",
|
||||
"chooseBoardSourcePopup-title": "보드 가져오기",
|
||||
"createLabelPopup-title": "라벨 생성",
|
||||
"createCustomField": "Create Field",
|
||||
"createCustomFieldPopup-title": "Create Field",
|
||||
"createCustomField": "필드 생성",
|
||||
"createCustomFieldPopup-title": "필드 생성",
|
||||
"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-checkbox": "체크 박스",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "날짜",
|
||||
@@ -265,8 +269,8 @@
|
||||
"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-text": "Text",
|
||||
"custom-field-number": "숫자",
|
||||
"custom-field-text": "텍스트",
|
||||
"custom-fields": "Custom Fields",
|
||||
"date": "날짜",
|
||||
"decline": "쇠퇴",
|
||||
@@ -287,7 +291,7 @@
|
||||
"soft-wip-limit": "원만한 WIP 제한",
|
||||
"editCardStartDatePopup-title": "시작일 변경",
|
||||
"editCardDueDatePopup-title": "종료일 변경",
|
||||
"editCustomFieldPopup-title": "Edit Field",
|
||||
"editCustomFieldPopup-title": "필드 수정",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "라벨 변경",
|
||||
"editNotificationPopup-title": "알림 수정",
|
||||
@@ -325,11 +329,11 @@
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "보드 내보내기",
|
||||
"sort": "Sort",
|
||||
"sort": "분류",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
"list-label-modifiedAt": "Last Access Time",
|
||||
"list-label-title": "Name of the List",
|
||||
"list-label-title": "리스트 이름",
|
||||
"list-label-sort": "Your Manual Order",
|
||||
"list-label-short-modifiedAt": "(L)",
|
||||
"list-label-short-title": "(N)",
|
||||
@@ -379,8 +383,8 @@
|
||||
"import-map-members": "보드 멤버들",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "멤버 매핑 미리보기",
|
||||
"import-user-select": "Pick your existing user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Select member",
|
||||
"import-user-select": "이 멤버로 사용할 기존 사용자를 선택하십시오.",
|
||||
"importMapMembersAddPopup-title": "멤버 선택",
|
||||
"info": "Version",
|
||||
"initials": "이니셜",
|
||||
"invalid-date": "적절하지 않은 날짜",
|
||||
@@ -403,9 +407,9 @@
|
||||
"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": "목록에 있는 모든 카드를 이동",
|
||||
"list-select-cards": "목록에 있는 모든 카드를 선택",
|
||||
"set-color-list": "Set Color",
|
||||
"set-color-list": "색 설정",
|
||||
"listActionPopup-title": "동작 목록",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"settingsUserPopup-title": "사용자 설정",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Trello 카드 가져 오기",
|
||||
@@ -435,8 +439,8 @@
|
||||
"muted-info": "보드의 변경된 사항들의 알림을 받지 않습니다.",
|
||||
"my-boards": "내 보드",
|
||||
"name": "이름",
|
||||
"no-archived-cards": "No cards in Archive.",
|
||||
"no-archived-lists": "No lists in Archive.",
|
||||
"no-archived-cards": "보관 중인 카드 없음.",
|
||||
"no-archived-lists": "보관중인 목록 없음.",
|
||||
"no-archived-swimlanes": "No swimlanes in Archive.",
|
||||
"no-results": "결과 값 없음",
|
||||
"normal": "표준",
|
||||
@@ -473,11 +477,11 @@
|
||||
"restore": "복구",
|
||||
"save": "저장",
|
||||
"search": "검색",
|
||||
"rules": "Rules",
|
||||
"rules": "규칙",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "색 선택",
|
||||
"select-board": "Select Board",
|
||||
"select-board": "보드 선택",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "현재 카드에 자신을 지정하세요.",
|
||||
@@ -510,7 +514,7 @@
|
||||
"title": "제목",
|
||||
"tracking": "추적",
|
||||
"tracking-info": "보드 생성자 또는 멤버로 참여하는 모든 카드에 대한 변경사항 알림 받음",
|
||||
"type": "Type",
|
||||
"type": "타입",
|
||||
"unassign-member": "멤버 할당 해제",
|
||||
"unsaved-description": "저장되지 않은 설명이 있습니다.",
|
||||
"unwatch": "감시 해제",
|
||||
@@ -619,10 +623,10 @@
|
||||
"requested-by": "Requested By",
|
||||
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
|
||||
"delete-board-confirm-popup": "모든 목록, 카드, 레이블 및 활동이 삭제되고 보드 내용을 복구할 수 없습니다. 실행 취소는 불가능합니다.",
|
||||
"boardDeletePopup-title": "Delete Board?",
|
||||
"boardDeletePopup-title": "보드 삭제?",
|
||||
"delete-board": "보드 삭제",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"default": "기본",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "카드 설정",
|
||||
@@ -647,98 +651,98 @@
|
||||
"activity-delete-attach-card": "첨부 파일 제거",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-rule": "규칙",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
"r-add-action": "동작 추가",
|
||||
"r-board-rules": "Board rules",
|
||||
"r-add-rule": "Add rule",
|
||||
"r-view-rule": "View rule",
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-add-rule": "규칙 추가",
|
||||
"r-view-rule": "규칙 보기",
|
||||
"r-delete-rule": "규칙 삭제",
|
||||
"r-new-rule-name": "새로운 규칙 제목",
|
||||
"r-no-rules": "규칙 없음",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-action": "동작",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
"r-list": "목록",
|
||||
"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-a-card": "카드",
|
||||
"r-when-a-label-is": "When a label is",
|
||||
"r-when-the-label": "When the label",
|
||||
"r-list-name": "list name",
|
||||
"r-list-name": "목록 이름",
|
||||
"r-when-a-member": "When a member is",
|
||||
"r-when-the-member": "When the member",
|
||||
"r-name": "name",
|
||||
"r-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-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-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-archive": "보관으로 이동",
|
||||
"r-unarchive": "Restore from Archive",
|
||||
"r-card": "card",
|
||||
"r-card": "카드",
|
||||
"r-add": "추가",
|
||||
"r-remove": "Remove",
|
||||
"r-label": "label",
|
||||
"r-member": "member",
|
||||
"r-remove": "제거",
|
||||
"r-label": "라벨",
|
||||
"r-member": "멤버",
|
||||
"r-remove-all": "Remove all members from the card",
|
||||
"r-set-color": "Set color to",
|
||||
"r-checklist": "checklist",
|
||||
"r-check-all": "Check all",
|
||||
"r-check-all": "전체 선택",
|
||||
"r-uncheck-all": "Uncheck all",
|
||||
"r-items-check": "items of checklist",
|
||||
"r-check": "Check",
|
||||
"r-uncheck": "Uncheck",
|
||||
"r-item": "item",
|
||||
"r-check": "선택",
|
||||
"r-uncheck": "선택되지 않은 항목",
|
||||
"r-item": "항목",
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-send-email": "이메일 전송",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"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-d-move-to-top-spec": "카드를 목록의 맨 위로 이동",
|
||||
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
|
||||
"r-d-move-to-bottom-spec": "Move card to bottom of list",
|
||||
"r-d-send-email": "Send email",
|
||||
"r-d-move-to-bottom-spec": "카드를 목록의 맨 아래로 이동",
|
||||
"r-d-send-email": "이메일 전송",
|
||||
"r-d-send-email-to": "to",
|
||||
"r-d-send-email-subject": "subject",
|
||||
"r-d-send-email-message": "message",
|
||||
"r-d-send-email-message": "메시지",
|
||||
"r-d-archive": "Move card to Archive",
|
||||
"r-d-unarchive": "Restore card from Archive",
|
||||
"r-d-add-label": "Add label",
|
||||
"r-d-remove-label": "Remove label",
|
||||
"r-create-card": "Create new card",
|
||||
"r-d-add-label": "라벨 추가",
|
||||
"r-d-remove-label": "라벨 삭제",
|
||||
"r-create-card": "새 카드 생성",
|
||||
"r-in-list": "목록에",
|
||||
"r-in-swimlane": "in swimlane",
|
||||
"r-d-add-member": "Add member",
|
||||
"r-d-remove-member": "Remove member",
|
||||
"r-d-remove-all-member": "Remove all member",
|
||||
"r-d-add-member": "멤버 추가",
|
||||
"r-d-remove-member": "멤버 제거",
|
||||
"r-d-remove-all-member": "모든 멤버 제거",
|
||||
"r-d-check-all": "Check all items of a list",
|
||||
"r-d-uncheck-all": "Uncheck all items of a list",
|
||||
"r-d-check-one": "Check item",
|
||||
"r-d-check-one": "항목 선택",
|
||||
"r-d-uncheck-one": "Uncheck item",
|
||||
"r-d-check-of-list": "of checklist",
|
||||
"r-d-add-checklist": "Add checklist",
|
||||
"r-d-remove-checklist": "Remove checklist",
|
||||
"r-d-add-checklist": "체크리스트 추가",
|
||||
"r-d-remove-checklist": "체크리스트 삭제",
|
||||
"r-by": "by",
|
||||
"r-add-checklist": "Add checklist",
|
||||
"r-add-checklist": "체크리스트 추가",
|
||||
"r-with-items": "with items",
|
||||
"r-items-list": "item1,item2,item3",
|
||||
"r-add-swimlane": "Add swimlane",
|
||||
@@ -747,21 +751,21 @@
|
||||
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
||||
"r-when-a-card-is-moved": "When a card is moved to another list",
|
||||
"r-set": "Set",
|
||||
"r-update": "Update",
|
||||
"r-update": "업데이트",
|
||||
"r-datefield": "date field",
|
||||
"r-df-start-at": "start",
|
||||
"r-df-start-at": "시작",
|
||||
"r-df-due-at": "due",
|
||||
"r-df-end-at": "end",
|
||||
"r-df-end-at": "종료",
|
||||
"r-df-received-at": "received",
|
||||
"r-to-current-datetime": "to current date/time",
|
||||
"r-remove-value-from": "Remove value from",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"authentication-method": "인증 방법",
|
||||
"authentication-type": "인증 유형",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "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",
|
||||
@@ -769,13 +773,13 @@
|
||||
"error-ldap-login": "An error occurred while trying to login",
|
||||
"display-authentication-method": "Display Authentication Method",
|
||||
"default-authentication-method": "Default Authentication Method",
|
||||
"duplicate-board": "Duplicate Board",
|
||||
"duplicate-board": "보드 복사",
|
||||
"people-number": "The number of people is:",
|
||||
"swimlaneDeletePopup-title": "Delete Swimlane ?",
|
||||
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
|
||||
"restore-all": "모든항목 복구",
|
||||
"delete-all": "모두 삭제",
|
||||
"loading": "Loading, please wait.",
|
||||
"loading": "로딩중, 기다려주십시오.",
|
||||
"previous_as": "last time was",
|
||||
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
|
||||
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
|
||||
@@ -800,7 +804,7 @@
|
||||
"show-desktop-drag-handles": "Show desktop drag handles",
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"addmore-detail": "자세한 설명 추가",
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
@@ -813,24 +817,24 @@
|
||||
"allow-rename": "Allow Rename",
|
||||
"allowRenamePopup-title": "Allow Rename",
|
||||
"start-day-of-week": "Set day of the week start",
|
||||
"monday": "Monday",
|
||||
"tuesday": "Tuesday",
|
||||
"wednesday": "Wednesday",
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday",
|
||||
"monday": "월요일",
|
||||
"tuesday": "화요일",
|
||||
"wednesday": "수요일",
|
||||
"thursday": "목요일",
|
||||
"friday": "금요일",
|
||||
"saturday": "토요일",
|
||||
"sunday": "일요일",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"last-activity": "마지막 활동",
|
||||
"voting": "투표",
|
||||
"archived": "보관된",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items",
|
||||
"task": "Task",
|
||||
"create-task": "Create Task",
|
||||
"ok": "OK"
|
||||
"hide-checked-items": "선택된 항목 숨기기",
|
||||
"task": "과제",
|
||||
"create-task": "과제 생성",
|
||||
"ok": "확인"
|
||||
}
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+8
-4
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "checklist %s onafgewerkt",
|
||||
"activity-editComment": "aantekening gewijzigd %s",
|
||||
"activity-deleteComment": "aantekening verwijderd %s",
|
||||
"activity-receivedDate": "ontvangst datum bijgewerkt naar %s van %s",
|
||||
"activity-startDate": "start datum bijgewerkt naar %s van %s",
|
||||
"activity-dueDate": "geplande datum bijgewerkt naar %s van %s",
|
||||
"activity-endDate": "eind datum bijgewerkt naar %s van %s ",
|
||||
"add-attachment": "Bijlage Toevoegen",
|
||||
"add-board": "Bord Toevoegen",
|
||||
"add-card": "Kaart Toevoegen",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "Bijlage verwijderen?",
|
||||
"attachments": "Bijlagen",
|
||||
"auto-watch": "Automatisch borden bekijken wanneer deze aangemaakt worden",
|
||||
"avatar-too-big": "De bestandsgrootte van je avatar is te groot (70KB max)",
|
||||
"avatar-too-big": "De avatar is te groot (520KB max)",
|
||||
"back": "Terug",
|
||||
"board-change-color": "Wijzig kleur",
|
||||
"board-nb-stars": "%s sterren",
|
||||
@@ -487,9 +491,9 @@
|
||||
"shortcut-close-dialog": "Sluit dialoog",
|
||||
"shortcut-filter-my-cards": "Filter mijn kaarten",
|
||||
"shortcut-show-shortcuts": "Haal lijst met snelkoppelingen tevoorschijn",
|
||||
"shortcut-toggle-filterbar": "Schakel Filter Zijbalk",
|
||||
"shortcut-toggle-searchbar": "Schakel Zoek Zijbalk",
|
||||
"shortcut-toggle-sidebar": "Schakel Bord Zijbalk",
|
||||
"shortcut-toggle-filterbar": "Wissel Filter Zijbalk",
|
||||
"shortcut-toggle-searchbar": "Wissel Zoek Zijbalk",
|
||||
"shortcut-toggle-sidebar": "Wissel Bord Zijbalk",
|
||||
"show-cards-minimum-count": "Laat het aantal kaarten zien wanneer de lijst meer kaarten heeft dan",
|
||||
"sidebar-open": "Open Zijbalk",
|
||||
"sidebar-close": "Sluit Zijbalk",
|
||||
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+111
-107
@@ -42,7 +42,7 @@
|
||||
"act-unjoinMember": "usunął użytkownika __member__ z karty __card__ na liście __list__ na ścieżce __swimlane__ na tablicy __board__",
|
||||
"act-withBoardTitle": "__board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Akcje",
|
||||
"actions": "Reakcje",
|
||||
"activities": "Ostatnia aktywność",
|
||||
"activity": "Aktywność",
|
||||
"activity-added": "dodał %s do %s",
|
||||
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "wycofano ukończenie czeklisty %s",
|
||||
"activity-editComment": "edytował(a) komentarz %s",
|
||||
"activity-deleteComment": "usunął komentarz %s",
|
||||
"activity-receivedDate": "zmienił datę otrzymania na %s z %s",
|
||||
"activity-startDate": "zmienił datę rozpoczęcia na %s z %s",
|
||||
"activity-dueDate": "zmienił datę wykonania na %s z %s",
|
||||
"activity-endDate": "zmienił datę zakończenia na %s z %s",
|
||||
"add-attachment": "Dodaj załącznik",
|
||||
"add-board": "Dodaj tablicę",
|
||||
"add-card": "Dodaj kartę",
|
||||
@@ -120,9 +124,9 @@
|
||||
"attachmentDeletePopup-title": "Usunąć załącznik?",
|
||||
"attachments": "Załączniki",
|
||||
"auto-watch": "Automatycznie obserwuj tablice gdy zostaną stworzone",
|
||||
"avatar-too-big": "Awatar jest za duży (maksymalnie 70KB)",
|
||||
"avatar-too-big": "Awatar jest za duży (maksymalnie 520KB)",
|
||||
"back": "Wstecz",
|
||||
"board-change-color": "Zmień kolor",
|
||||
"board-change-color": "Zmień barwę",
|
||||
"board-nb-stars": "%s odznaczeń",
|
||||
"board-not-found": "Nie znaleziono tablicy",
|
||||
"board-private-info": "Ta tablica będzie <strong>prywatna</strong>.",
|
||||
@@ -145,11 +149,11 @@
|
||||
"card-archived": "Ta karta została przeniesiona do Archiwum.",
|
||||
"board-archived": "Ta tablica została przeniesiona do Archiwum.",
|
||||
"card-comments-title": "Ta karta ma %s komentarzy.",
|
||||
"card-delete-notice": "Usunięcie jest trwałe. Stracisz wszystkie akcje powiązane z tą kartą.",
|
||||
"card-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie ponownie otworzyć karty. Usunięcie jest nieodwracalne.",
|
||||
"card-delete-notice": "Usunięcie jest nieodwracalne. Stracisz wszystkie zdarzenia powiązane z tą kartą.",
|
||||
"card-delete-pop": "Wszystkie zdarzenia zostaną usunięte z historii aktywności i nie można będzie ponownie otworzyć karty. Usunięcie jest nieodwracalne.",
|
||||
"card-delete-suggest-archive": "Możesz przenieść kartę do Archiwum, a następnie usunąć ją z tablicy i zachować ją w Aktywności.",
|
||||
"card-due": "Termin",
|
||||
"card-due-on": "Termin ukończenia",
|
||||
"card-due": "Data wykonania",
|
||||
"card-due-on": "Data wykonania",
|
||||
"card-spent": "Czas pracy",
|
||||
"card-edit-attachments": "Edytuj załączniki",
|
||||
"card-edit-custom-fields": "Edytuj niestandardowe pola",
|
||||
@@ -173,9 +177,9 @@
|
||||
"vote-for-it": "za",
|
||||
"vote-against": "przeciwko",
|
||||
"deleteVotePopup-title": "Usunąć głos?",
|
||||
"vote-delete-pop": "Usuwanie jest nieodwracalne. Stracisz wszystkie czynności związane z tym głosem.",
|
||||
"vote-delete-pop": "Usunięcie jest nieodwracalne. Stracisz wszystkie zdarzenia związane z tym głosowaniem.",
|
||||
"cardDeletePopup-title": "Usunąć kartę?",
|
||||
"cardDetailsActionsPopup-title": "Czynności kart",
|
||||
"cardDetailsActionsPopup-title": "Działania na karcie",
|
||||
"cardLabelsPopup-title": "Etykiety",
|
||||
"cardMembersPopup-title": "Użytkownicy",
|
||||
"cardMorePopup-title": "Więcej",
|
||||
@@ -183,7 +187,7 @@
|
||||
"cards": "Karty",
|
||||
"cards-count": "kart",
|
||||
"casSignIn": "Zaloguj się poprzez CAS",
|
||||
"cardType-card": "Karta",
|
||||
"cardType-card": "karty",
|
||||
"cardType-linkedCard": "Podpięta karta",
|
||||
"cardType-linkedBoard": "Podpięta tablica",
|
||||
"change": "Zmień",
|
||||
@@ -204,31 +208,31 @@
|
||||
"close": "Zamknij",
|
||||
"close-board": "Zamknij tablicę",
|
||||
"close-board-pop": "Będziesz w stanie przywrócić tablicę poprzez kliknięcie przycisku \"Archiwizuj\" w nagłówku strony domowej.",
|
||||
"color-black": "czarny",
|
||||
"color-blue": "niebieski",
|
||||
"color-crimson": "karmazynowy",
|
||||
"color-darkgreen": "ciemnozielony",
|
||||
"color-gold": "złoty",
|
||||
"color-gray": "szary",
|
||||
"color-green": "zielony",
|
||||
"color-black": "czarna",
|
||||
"color-blue": "niebieska",
|
||||
"color-crimson": "karmazynowa",
|
||||
"color-darkgreen": "ciemnozielona",
|
||||
"color-gold": "złota",
|
||||
"color-gray": "szara",
|
||||
"color-green": "zielona",
|
||||
"color-indigo": "indygo",
|
||||
"color-lime": "limonkowy",
|
||||
"color-magenta": "fuksjowy",
|
||||
"color-mistyrose": "różowy",
|
||||
"color-navy": "granatowy",
|
||||
"color-orange": "pomarańczowy",
|
||||
"color-lime": "limonkowa",
|
||||
"color-magenta": "fuksjowa",
|
||||
"color-mistyrose": "jasnoróżowa",
|
||||
"color-navy": "granatowa",
|
||||
"color-orange": "pomarańczowa",
|
||||
"color-paleturquoise": "turkusowy",
|
||||
"color-peachpuff": "brzoskwiniowy",
|
||||
"color-pink": "różowy",
|
||||
"color-plum": "śliwkowy",
|
||||
"color-purple": "fioletowy",
|
||||
"color-red": "czerwony",
|
||||
"color-saddlebrown": "jasnobrązowy",
|
||||
"color-silver": "srebrny",
|
||||
"color-sky": "błękitny",
|
||||
"color-slateblue": "szaroniebieski",
|
||||
"color-white": "miały",
|
||||
"color-yellow": "żółty",
|
||||
"color-peachpuff": "brzoskwiniowa",
|
||||
"color-pink": "różowa",
|
||||
"color-plum": "śliwkowa",
|
||||
"color-purple": "fioletowa",
|
||||
"color-red": "czerwona",
|
||||
"color-saddlebrown": "jasnobrązowa",
|
||||
"color-silver": "srebrna",
|
||||
"color-sky": "błękitna",
|
||||
"color-slateblue": "szaroniebieska",
|
||||
"color-white": "biała",
|
||||
"color-yellow": "żółta",
|
||||
"unset-color": "Nieustawiony",
|
||||
"comment": "Komentarz",
|
||||
"comment-placeholder": "Dodaj komentarz",
|
||||
@@ -254,8 +258,8 @@
|
||||
"createLabelPopup-title": "Utwórz etykietę",
|
||||
"createCustomField": "Utwórz pole",
|
||||
"createCustomFieldPopup-title": "Utwórz pole",
|
||||
"current": "obecny",
|
||||
"custom-field-delete-pop": "Nie ma możliwości wycofania tej operacji. To usunie te niestandardowe pole ze wszystkich kart oraz usunie ich całą historię.",
|
||||
"current": "obecnie otwarta",
|
||||
"custom-field-delete-pop": "Nie ma możliwości cofnięcia tej operacji. Usuniesz to niestandardowe pole ze wszystkich kart oraz całą jego historię.",
|
||||
"custom-field-checkbox": "Pole wyboru",
|
||||
"custom-field-currency": "Waluta",
|
||||
"custom-field-currency-option": "Kod waluty",
|
||||
@@ -275,8 +279,8 @@
|
||||
"deleteCustomFieldPopup-title": "Usunąć niestandardowe pole?",
|
||||
"deleteLabelPopup-title": "Usunąć etykietę?",
|
||||
"description": "Opis",
|
||||
"disambiguateMultiLabelPopup-title": "Ujednolić etykiety czynności",
|
||||
"disambiguateMultiMemberPopup-title": "Doprecyzuj czynności użytkowników",
|
||||
"disambiguateMultiLabelPopup-title": "Doprecyzuj działanie dotyczące etykiety",
|
||||
"disambiguateMultiMemberPopup-title": "Doprecyzuj działanie dotyczące użytkownika",
|
||||
"discard": "Odrzuć",
|
||||
"done": "Zakończone",
|
||||
"download": "Pobierz",
|
||||
@@ -286,7 +290,7 @@
|
||||
"edit-wip-limit": "Zmień limit kart na liście",
|
||||
"soft-wip-limit": "Pozwól na nadmiarowe karty na liście",
|
||||
"editCardStartDatePopup-title": "Zmień datę rozpoczęcia",
|
||||
"editCardDueDatePopup-title": "Zmień termin ukończenia",
|
||||
"editCardDueDatePopup-title": "Zmień datę wykonania",
|
||||
"editCustomFieldPopup-title": "Edytuj pole",
|
||||
"editCardSpentTimePopup-title": "Zmień ilość przepracowanego czasu",
|
||||
"editLabelPopup-title": "Zmień etykietę",
|
||||
@@ -344,7 +348,7 @@
|
||||
"filter-no-member": "Brak użytkowników",
|
||||
"filter-assignee-label": "Filtruj wg osoby przypisanej",
|
||||
"filter-no-assignee": "Nieprzypisane ",
|
||||
"filter-custom-fields-label": "Filtruj wg pól niestandardowych",
|
||||
"filter-custom-fields-label": "Filtruj wg niestandardowych pól",
|
||||
"filter-no-custom-fields": "Brak niestandardowych pól",
|
||||
"filter-show-archive": "Pokaż zarchiwizowane listy",
|
||||
"filter-hide-empty": "Ukryj puste listy",
|
||||
@@ -353,7 +357,7 @@
|
||||
"filter-to-selection": "Odfiltruj zaznaczenie",
|
||||
"other-filters-label": "Inne filtry",
|
||||
"advanced-filter-label": "Zaawansowane filtry",
|
||||
"advanced-filter-description": "Zaawansowane filtry pozwalają na wykorzystanie ciągu znaków wraz z następującymi operatorami: == != <= >= && || (). Spacja jest używana jako separator pomiędzy operatorami. Możesz przefiltrowywać wszystkie niestandardowe pola wpisując ich nazwy lub wartości, na przykład: Pole1 == Wartość1.\nUwaga: Jeśli pola lub wartości zawierają spację, musisz je zawrzeć w pojedyncze cudzysłowie, na przykład: 'Pole 1' == 'Wartość 1'. Dla pojedynczych znaków, które powinny być pominięte należy użyć \\, na przykład Pole1 == I\\'m. Możesz także wykorzystywać mieszane warunki, na przykład P1 == W1 || P1 == W2. Standardowo wszystkie operatory są interpretowane od lewej do prawej. Możesz także zmienić kolejność interpretacji wykorzystując nawiasy, na przykład P1 == W1 && (P2 == W2 || P2 == W3). Możesz także wyszukiwać tekstowo wykorzystując wyrażenia regularne, na przykład: P1 == /Tes.*/i",
|
||||
"advanced-filter-description": "Zaawansowane filtry pozwalają na wykorzystanie ciągu znaków wraz z następującymi operatorami: == != <= >= && || (). Spacja jest używana jako separator pomiędzy operatorami. Możesz przefiltrowywać wszystkie niestandardowe pola wpisując ich nazwy lub wartości, na przykład: Pole1 == Wartość1.\nUwaga: Jeśli pola lub wartości zawierają spację, musisz je zawrzeć w pojedynczym cudzysłowie, na przykład: 'Pole 1' == 'Wartość 1'. Dla pojedynczych znaków, które powinny być pominięte, należy użyć \\, na przykład Pole1 == I\\'m. Możesz także wykorzystywać mieszane warunki, na przykład P1 == W1 || P1 == W2. Standardowo wszystkie operatory są interpretowane od lewej do prawej. Możesz także zmienić kolejność interpretacji wykorzystując nawiasy, na przykład P1 == W1 && (P2 == W2 || P2 == W3). Możesz także wyszukiwać tekstowo wykorzystując wyrażenia regularne, na przykład: P1 == /Tes.*/i",
|
||||
"fullname": "Pełna nazwa",
|
||||
"header-logo-title": "Wróć do swojej strony z tablicami.",
|
||||
"hide-system-messages": "Ukryj wiadomości systemowe",
|
||||
@@ -403,16 +407,16 @@
|
||||
"list-archive-cards-pop": "To usunie wszystkie karty z tej listy z tej tablicy. Aby przejrzeć karty w Archiwum i przywrócić na tablicę, kliknij \"Menu\" > \"Archiwizuj\".",
|
||||
"list-move-cards": "Przenieś wszystkie karty z tej listy",
|
||||
"list-select-cards": "Zaznacz wszystkie karty z tej listy",
|
||||
"set-color-list": "Ustaw kolor",
|
||||
"listActionPopup-title": "Lista akcji",
|
||||
"set-color-list": "Ustaw barwę",
|
||||
"listActionPopup-title": "Działania na liście",
|
||||
"settingsUserPopup-title": "Ustawienia konta użytkownika",
|
||||
"swimlaneActionPopup-title": "Opcje ścieżki",
|
||||
"swimlaneActionPopup-title": "Działania na ścieżce",
|
||||
"swimlaneAddPopup-title": "Dodaj ścieżkę poniżej",
|
||||
"listImportCardPopup-title": "Zaimportuj kartę z Trello",
|
||||
"listImportCardsTsvPopup-title": "Importuj CSV/TSV z Excela",
|
||||
"listMorePopup-title": "Więcej",
|
||||
"link-list": "Podepnij do tej listy",
|
||||
"list-delete-pop": "Wszystkie czynności zostaną usunięte z Aktywności i nie będziesz w stanie przywrócić listy. Nie ma możliwości cofnięcia tej operacji.",
|
||||
"list-delete-pop": "Wszystkie zdarzenia zostaną usunięte z historii aktywności i nie będziesz w stanie przywrócić tej listy. Nie ma możliwości cofnięcia tej operacji.",
|
||||
"list-delete-suggest-archive": "Możesz przenieść listę do Archiwum, a następnie usunąć ją z tablicy i zachować ją w Aktywności.",
|
||||
"lists": "Listy",
|
||||
"swimlanes": "Ścieżki",
|
||||
@@ -424,8 +428,8 @@
|
||||
"menu": "Menu",
|
||||
"move-selection": "Przenieś zaznaczone",
|
||||
"moveCardPopup-title": "Przenieś kartę",
|
||||
"moveCardToBottom-title": "Przenieś na dół",
|
||||
"moveCardToTop-title": "Przenieś na górę",
|
||||
"moveCardToBottom-title": "Przenieś na koniec",
|
||||
"moveCardToTop-title": "Przenieś na początek",
|
||||
"moveSelectionPopup-title": "Przenieś zaznaczone",
|
||||
"multi-selection": "Wielokrotne zaznaczenie",
|
||||
"multi-selection-label": "Dodaj etykietę do zaznaczenia",
|
||||
@@ -476,7 +480,7 @@
|
||||
"rules": "Reguły",
|
||||
"search-cards": "Szukaj w tytułach kart/list oraz opisach i niestandardowych polach na tej tablicy",
|
||||
"search-example": "Wpisz tekst do wyszukania i wciśnij Enter",
|
||||
"select-color": "Wybierz kolor",
|
||||
"select-color": "Wybierz barwę",
|
||||
"select-board": "Wybierz tablicę",
|
||||
"set-wip-limit-value": "Ustaw maksymalny limit kart na tej liście",
|
||||
"setWipLimitPopup-title": "Ustaw limit kart na liście",
|
||||
@@ -488,7 +492,7 @@
|
||||
"shortcut-filter-my-cards": "Filtruj moje karty",
|
||||
"shortcut-show-shortcuts": "Przypnij do listy skrótów",
|
||||
"shortcut-toggle-filterbar": "Przełącz boczny pasek filtru",
|
||||
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
|
||||
"shortcut-toggle-searchbar": "Pokaż/Ukryj panel wyszukiwania",
|
||||
"shortcut-toggle-sidebar": "Przełącz boczny pasek tablicy",
|
||||
"show-cards-minimum-count": "Pokaż licznik kart, jeśli lista zawiera więcej niż",
|
||||
"sidebar-open": "Otwórz pasek boczny",
|
||||
@@ -610,14 +614,14 @@
|
||||
"card-end": "Koniec",
|
||||
"card-end-on": "Kończy się",
|
||||
"editCardReceivedDatePopup-title": "Zmień datę przyjęcia",
|
||||
"editCardEndDatePopup-title": "Zmień datę ukończenia",
|
||||
"setCardColorPopup-title": "Ustaw kolor",
|
||||
"setCardActionsColorPopup-title": "Wybierz kolor",
|
||||
"setSwimlaneColorPopup-title": "Wybierz kolor",
|
||||
"setListColorPopup-title": "Wybierz kolor",
|
||||
"editCardEndDatePopup-title": "Zmień datę zakończenia",
|
||||
"setCardColorPopup-title": "Ustaw barwę",
|
||||
"setCardActionsColorPopup-title": "Wybierz barwę",
|
||||
"setSwimlaneColorPopup-title": "Wybierz barwę",
|
||||
"setListColorPopup-title": "Wybierz barwę",
|
||||
"assigned-by": "Przypisane przez",
|
||||
"requested-by": "Zlecone przez",
|
||||
"board-delete-notice": "Usuwanie jest permanentne. Stracisz wszystkie listy, kart oraz czynności przypisane do tej tablicy.",
|
||||
"board-delete-notice": "Usunięcie jest nieodwracalne. Stracisz wszystkie listy, karty oraz reguły przypisane do tej tablicy.",
|
||||
"delete-board-confirm-popup": "Wszystkie listy, etykiety oraz aktywności zostaną usunięte i nie będziesz w stanie przywrócić zawartości tablicy. Tego nie da się cofnąć.",
|
||||
"boardDeletePopup-title": "Usunąć tablicę?",
|
||||
"delete-board": "Usuń tablicę",
|
||||
@@ -648,58 +652,58 @@
|
||||
"activity-set-customfield": "ustawił niestandardowe pole '%s' na '%s' w '%s'",
|
||||
"activity-unset-customfield": "wyczyścił niestandardowe pole '%s' w '%s'",
|
||||
"r-rule": "Reguła",
|
||||
"r-add-trigger": "Dodaj przełącznik",
|
||||
"r-add-action": "Dodaj czynność",
|
||||
"r-add-trigger": "Dodaj aktywator",
|
||||
"r-add-action": "Dodaj reakcję",
|
||||
"r-board-rules": "Reguły tablicy",
|
||||
"r-add-rule": "Dodaj regułę",
|
||||
"r-view-rule": "Zobacz regułę",
|
||||
"r-delete-rule": "Usuń regułę",
|
||||
"r-new-rule-name": "Nowa nazwa reguły",
|
||||
"r-no-rules": "Brak regułę",
|
||||
"r-trigger": "Zdarzenie",
|
||||
"r-trigger": "Aktywator",
|
||||
"r-action": "Reakcja",
|
||||
"r-when-a-card": "Gdy karta",
|
||||
"r-is": "jest",
|
||||
"r-is-moved": "jest przenoszona",
|
||||
"r-added-to": "Dodany do",
|
||||
"r-removed-from": "usunął z",
|
||||
"r-the-board": "tablicy",
|
||||
"r-list": "lista",
|
||||
"r-added-to": "dodana do",
|
||||
"r-removed-from": "usunięta z",
|
||||
"r-the-board": "na tablicy",
|
||||
"r-list": "listy",
|
||||
"set-filter": "Ustaw filtr",
|
||||
"r-moved-to": "Przeniesione do",
|
||||
"r-moved-from": "Przeniesione z",
|
||||
"r-archived": "Przeniesione z Archiwum",
|
||||
"r-unarchived": "Przywrócone z Archiwum",
|
||||
"r-moved-to": "przenoszona do",
|
||||
"r-moved-from": "przenoszona z",
|
||||
"r-archived": "zarchiwizowana",
|
||||
"r-unarchived": "przywrócona z archiwum",
|
||||
"r-a-card": "karta",
|
||||
"r-when-a-label-is": "Gdy etykieta jest",
|
||||
"r-when-the-label": "Gdy etykieta jest",
|
||||
"r-when-the-label": "Gdy etykieta",
|
||||
"r-list-name": "nazwa listy",
|
||||
"r-when-a-member": "Gdy jakikolwiek użytkownik jest",
|
||||
"r-when-the-member": "Gdy użytkownik",
|
||||
"r-when-a-member": "Gdy osoba (użytkownik) jest",
|
||||
"r-when-the-member": "Gdy osoba",
|
||||
"r-name": "nazwa",
|
||||
"r-when-a-attach": "Gdy załącznik",
|
||||
"r-when-a-checklist": "Gdy jakaś czeklista jest",
|
||||
"r-when-a-checklist": "Gdy czeklista jest",
|
||||
"r-when-the-checklist": "Gdy czeklista",
|
||||
"r-completed": "Ukończone",
|
||||
"r-made-incomplete": "Niedokończone",
|
||||
"r-when-a-item": "Gdy jakiś element czeklisty jest",
|
||||
"r-completed": "ukończona",
|
||||
"r-made-incomplete": "ponownie nieukończona",
|
||||
"r-when-a-item": "Gdy element czeklisty jest",
|
||||
"r-when-the-item": "Gdy element",
|
||||
"r-checked": "Zaznaczony",
|
||||
"r-unchecked": "Odznaczony",
|
||||
"r-move-card-to": "Przenieś kartę do",
|
||||
"r-top-of": "Góra od",
|
||||
"r-bottom-of": "Dół od",
|
||||
"r-checked": "zaznaczony",
|
||||
"r-unchecked": "ponownie niezaznaczony",
|
||||
"r-move-card-to": "Przenieś kartę na",
|
||||
"r-top-of": "początek",
|
||||
"r-bottom-of": "koniec",
|
||||
"r-its-list": "tej listy",
|
||||
"r-archive": "Przenieś do Archiwum",
|
||||
"r-archive": "Zarchiwizuj",
|
||||
"r-unarchive": "Przywróć z Archiwum",
|
||||
"r-card": "karta",
|
||||
"r-card": "kartę",
|
||||
"r-add": "Dodaj",
|
||||
"r-remove": "Usuń",
|
||||
"r-label": "etykieta",
|
||||
"r-member": "użytkownik",
|
||||
"r-label": "etykietę",
|
||||
"r-member": "użytkownika",
|
||||
"r-remove-all": "Usuń wszystkich użytkowników tej karty",
|
||||
"r-set-color": "Ustaw kolor na",
|
||||
"r-checklist": "Tytuł czeklisty",
|
||||
"r-set-color": "Ustaw barwę na",
|
||||
"r-checklist": "czeklistę",
|
||||
"r-check-all": "Zaznacz wszystkie",
|
||||
"r-uncheck-all": "Odznacz wszystkie",
|
||||
"r-items-check": "elementy czeklisty",
|
||||
@@ -712,15 +716,15 @@
|
||||
"r-of": "z",
|
||||
"r-subject": "temat",
|
||||
"r-rule-details": "Szczegóły reguł",
|
||||
"r-d-move-to-top-gen": "Przenieś kartę na górę tej listy",
|
||||
"r-d-move-to-top-spec": "Przenieś kartę na górę listy",
|
||||
"r-d-move-to-bottom-gen": "Przenieś kartę na dół tej listy",
|
||||
"r-d-move-to-bottom-spec": "Przenieś kartę na dół listy",
|
||||
"r-d-move-to-top-gen": "Przenieś kartę na początek listy",
|
||||
"r-d-move-to-top-spec": "Przenieś kartę na początek listy",
|
||||
"r-d-move-to-bottom-gen": "Przenieś kartę na koniec listy",
|
||||
"r-d-move-to-bottom-spec": "Przenieś kartę na koniec listy",
|
||||
"r-d-send-email": "Wyślij wiadomość email",
|
||||
"r-d-send-email-to": "do",
|
||||
"r-d-send-email-subject": "temat",
|
||||
"r-d-send-email-message": "wiadomość",
|
||||
"r-d-archive": "Przenieś kartę z Archiwum",
|
||||
"r-d-archive": "Zarchiwizuj kartę",
|
||||
"r-d-unarchive": "Przywróć kartę z Archiwum",
|
||||
"r-d-add-label": "Dodaj etykietę",
|
||||
"r-d-remove-label": "Usuń etykietę",
|
||||
@@ -745,16 +749,16 @@
|
||||
"r-swimlane-name": "Nazwa ścieżki",
|
||||
"r-board-note": "Uwaga: pozostaw pole puste, aby każda wartość była brana pod uwagę.",
|
||||
"r-checklist-note": "Uwaga: elementy czeklisty muszą być oddzielone przecinkami.",
|
||||
"r-when-a-card-is-moved": "Gdy karta jest przeniesiona do innej listy",
|
||||
"r-when-a-card-is-moved": "Gdy karta jest przenoszona do innej listy",
|
||||
"r-set": "Ustaw",
|
||||
"r-update": "Aktualizuj",
|
||||
"r-datefield": "pole daty",
|
||||
"r-df-start-at": "start",
|
||||
"r-df-due-at": "termin ukończenia jest",
|
||||
"r-df-end-at": "zakończenie",
|
||||
"r-df-received-at": "przyjęte",
|
||||
"r-to-current-datetime": "o aktualnej dacie/godzinie",
|
||||
"r-remove-value-from": "usunął wartość z",
|
||||
"r-datefield": "datę",
|
||||
"r-df-start-at": "rozpoczęcia",
|
||||
"r-df-due-at": "wykonania",
|
||||
"r-df-end-at": "zakończenia",
|
||||
"r-df-received-at": "przyjęcia",
|
||||
"r-to-current-datetime": "na aktualną datę i godzinę",
|
||||
"r-remove-value-from": "Wyczyść",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
@@ -772,27 +776,27 @@
|
||||
"duplicate-board": "Duplikuj tablicę",
|
||||
"people-number": "Liczba użytkowników to:",
|
||||
"swimlaneDeletePopup-title": "Usunąć ścieżkę?",
|
||||
"swimlane-delete-pop": "Wszystkie czynności wykonane na tej ścieżce zostaną usunięte z historii aktywności. Tej operacji nie można cofnąć. Usunięcie jest nieodwracalne.",
|
||||
"swimlane-delete-pop": "Wszystkie zdarzenia dotyczące tej ścieżki zostaną usunięte z historii aktywności. Tej operacji nie można cofnąć. Usunięcie jest nieodwracalne.",
|
||||
"restore-all": "Przywróć wszystkie",
|
||||
"delete-all": "Usuń wszystkie",
|
||||
"loading": "Ładowanie, proszę czekać.",
|
||||
"previous_as": "ostatni raz był",
|
||||
"act-a-dueAt": "zmienił(a) termin ukończenia na: __timeValue__ w karcie __card__, poprzedni termin: __timeOldValue__",
|
||||
"act-a-dueAt": "zmienił(a) datę wykonania na: __timeValue__ w karcie __card__, poprzednia data wykonania: __timeOldValue__",
|
||||
"act-a-endAt": "zmienił czas zakończenia na __timeValue__ z __timeOldValue__",
|
||||
"act-a-startAt": "zmienił czas rozpoczęcia na __timeValue__ z __timeOldValue__",
|
||||
"act-a-receivedAt": "zmienił czas przyjęcia zadania na __timeValue__ z __timeOldValue__",
|
||||
"a-dueAt": "zmienił termin ukończenia na",
|
||||
"a-dueAt": "zmienił datę wykonania na",
|
||||
"a-endAt": "zmienił czas zakończenia na",
|
||||
"a-startAt": "zmienił czas rozpoczęcia na",
|
||||
"a-receivedAt": "zmienił czas przyjęcia zadania na",
|
||||
"almostdue": "termin ukończenia %s jest bliski",
|
||||
"pastdue": "termin ukończenia %s minął",
|
||||
"duenow": "termin ukończenia %s przypada dzisiaj",
|
||||
"act-newDue": "__list__/__card__ pierwszy raz przypomina o terminie ukończenia [__board__]",
|
||||
"act-withDue": "__list__/__card__ ma przypomnienia o terminie ukończenia [__board__]",
|
||||
"act-almostdue": "przypominał o zbliżającym się terminie ukończenia (__timeValue__) karty __card__",
|
||||
"act-pastdue": "przypominał o upłynięciu terminu ukończenia (__timeValue__) karty __card__",
|
||||
"act-duenow": "przypominał o przypadającym właśnie terminie ukończenia (__timeValue__) karty __card__",
|
||||
"almostdue": "data wykonania %s jest bliska",
|
||||
"pastdue": "data wykonania %s minęła",
|
||||
"duenow": "data wykonania %s przypada dzisiaj",
|
||||
"act-newDue": "__list__/__card__ pierwszy raz przypomina o dacie wykonania [__board__]",
|
||||
"act-withDue": "__list__/__card__ ma przypomnienia o dacie wykonania [__board__]",
|
||||
"act-almostdue": "przypominał o zbliżającej się dacie wykonania (__timeValue__) karty __card__",
|
||||
"act-pastdue": "przypominał o upłynięciu daty wykonania (__timeValue__) karty __card__",
|
||||
"act-duenow": "przypominał o mijającej właśnie dacie wykonania (__timeValue__) karty __card__",
|
||||
"act-atUserComment": "Zostałeś wspomniany w [__board] __list__/__card__",
|
||||
"delete-user-confirm-popup": "Czy jesteś pewien, że chcesz usunąć te konto? Nie można tego wycofać.",
|
||||
"accounts-allowUserDelete": "Pozwól użytkownikom na usuwanie własnych kont",
|
||||
|
||||
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "não-completada a lista de verificação %s",
|
||||
"activity-editComment": "comentário editado %s",
|
||||
"activity-deleteComment": "comentário excluído %s",
|
||||
"activity-receivedDate": "editou recebido para %s de %s",
|
||||
"activity-startDate": "editou data início para %s de %s",
|
||||
"activity-dueDate": "editou prazo final para %s de %s",
|
||||
"activity-endDate": "editou concluído para %s de %s",
|
||||
"add-attachment": "Adicionar Anexos",
|
||||
"add-board": "Adicionar Quadro",
|
||||
"add-card": "Adicionar Cartão",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "Excluir Anexo?",
|
||||
"attachments": "Anexos",
|
||||
"auto-watch": "Veja automaticamente os boards que são criados",
|
||||
"avatar-too-big": "O avatar é muito grande (70KB max)",
|
||||
"avatar-too-big": "O avatar é muito grande (máximo: 520KB)",
|
||||
"back": "Voltar",
|
||||
"board-change-color": "Alterar cor",
|
||||
"board-nb-stars": "%s estrelas",
|
||||
|
||||
+839
-835
File diff suppressed because it is too large.
Load diff
+839
-835
File diff suppressed because it is too large.
Load diff
+7
-3
@@ -75,6 +75,10 @@
|
||||
"activity-checklist-uncompleted-card": "вновь открыл контрольный список %s",
|
||||
"activity-editComment": "отредактировал комментарий %s",
|
||||
"activity-deleteComment": "удалил комментарий %s",
|
||||
"activity-receivedDate": "отредактировал дату получения на %sс %s",
|
||||
"activity-startDate": "отредактировал дату начала на %sс %s",
|
||||
"activity-dueDate": "отредактировал срок исполнения на %s с %s",
|
||||
"activity-endDate": "отредактировал дату завершения на %s с %s",
|
||||
"add-attachment": "Добавить вложение",
|
||||
"add-board": "Добавить доску",
|
||||
"add-card": "Добавить карточку",
|
||||
@@ -120,7 +124,7 @@
|
||||
"attachmentDeletePopup-title": "Удалить вложение?",
|
||||
"attachments": "Вложения",
|
||||
"auto-watch": "Автоматически следить за созданными досками",
|
||||
"avatar-too-big": "Аватар слишком большой (максимум 70КБ)",
|
||||
"avatar-too-big": "Аватар слишком большой (максимум 520КБ)",
|
||||
"back": "Назад",
|
||||
"board-change-color": "Изменить цвет",
|
||||
"board-nb-stars": "%s избранное",
|
||||
@@ -360,7 +364,7 @@
|
||||
"headerBarCreateBoardPopup-title": "Создать доску",
|
||||
"home": "Главная",
|
||||
"import": "Импорт",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"impersonate-user": "Деперсонифицировать пользователя",
|
||||
"link": "Ссылка",
|
||||
"import-board": "импортировать доску",
|
||||
"import-board-c": "Импортировать доску",
|
||||
@@ -488,7 +492,7 @@
|
||||
"shortcut-filter-my-cards": "Показать мои карточки",
|
||||
"shortcut-show-shortcuts": "Поднять список ярлыков",
|
||||
"shortcut-toggle-filterbar": "Переместить фильтр на бововую панель",
|
||||
"shortcut-toggle-searchbar": "Toggle Search Sidebar",
|
||||
"shortcut-toggle-searchbar": "Включить/выключить боковую панель поиска",
|
||||
"shortcut-toggle-sidebar": "Переместить доску на боковую панель",
|
||||
"show-cards-minimum-count": "Показывать количество карточек если их больше",
|
||||
"sidebar-open": "Открыть Панель",
|
||||
|
||||
Loaded 100 of 131 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user