Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c3ffaa7ce2 | ||
|
|
2955c167c2 | ||
|
|
81d1bf6d27 | ||
|
|
46ce345203 | ||
|
|
363e69f01c | ||
|
|
9b0875169b | ||
|
|
e616247254 | ||
|
|
cc5f22df79 | ||
|
|
3448467953 | ||
|
|
74dbb96d85 | ||
|
|
d2cfe76a28 | ||
|
|
045e9db7b8 | ||
|
|
460b1d3a66 | ||
|
|
a463f2a855 | ||
|
|
8b3399b8f6 | ||
|
|
ef59d6dcb9 | ||
|
|
1b429b3f99 | ||
|
|
5098f7dee1 | ||
|
|
c509aaf246 | ||
|
|
d7333dec84 | ||
|
|
9d97494cfc | ||
|
|
acf9e7caea | ||
|
|
f6d000b26a | ||
|
|
ba5b35d0cc | ||
|
|
1eae8222c4 | ||
|
|
9b5a519bc7 | ||
|
|
b8a209249e | ||
|
|
ecc1b69f5c | ||
|
|
6253bc6c14 | ||
|
|
7768a4c1ba | ||
|
|
cd1bc7a695 | ||
|
|
42f45f9a83 | ||
|
|
d081eb0a2e | ||
|
|
504533991b | ||
|
|
44a5976b85 | ||
|
|
ac65b93b43 | ||
|
|
e9d27c521e | ||
|
|
dc86ae21de | ||
|
|
befb0f18b6 | ||
|
|
b796a6cbf4 | ||
|
|
9336a55a50 | ||
|
|
26749442fd | ||
|
|
7223d6e750 | ||
|
|
41a8e79e0e | ||
|
|
ec8a78537f | ||
|
|
4eb7597aa9 | ||
|
|
3d13fa3a26 | ||
|
|
655fe8afd3 | ||
|
|
855c66976e | ||
|
|
185cf163b2 | ||
|
|
45b7365025 | ||
|
|
ed5f64ccd6 | ||
|
|
3fc80e1145 | ||
|
|
05e3fc31b4 | ||
|
|
d5e1c4bfa5 | ||
|
|
a7c3317ed6 | ||
|
|
7db08082bc | ||
|
|
32836d42c9 | ||
|
|
789c4b480a | ||
|
|
abe291837a | ||
|
|
81ac0fdba9 | ||
|
|
d19cc972e0 | ||
|
|
8f6c3550e3 | ||
|
|
40681ccda4 | ||
|
|
4f76e1e1eb | ||
|
|
5cd9f89b21 | ||
|
|
b24685e38d | ||
|
|
5d7aa373fd | ||
|
|
e79b7fad0a | ||
|
|
e05541da88 | ||
|
|
0ccbfcfc9e | ||
|
|
8e6a570d47 | ||
|
|
129a884a4e | ||
|
|
2d278f303a | ||
|
|
dd67bd4b5e | ||
|
|
17239fe052 | ||
|
|
389908be7c | ||
|
|
33cf589c05 | ||
|
|
d961355016 | ||
|
|
9a72cf7ac2 | ||
|
|
53027559cd | ||
|
|
2e5545491b | ||
|
|
f9b0da65f1 | ||
|
|
4c734ee70f | ||
|
|
7173e293ef | ||
|
|
19ff17b3a5 | ||
|
|
d2b84c7773 | ||
|
|
623d6c09c4 | ||
|
|
8ae80138a0 | ||
|
|
cca041e21a | ||
|
|
b333061de7 | ||
|
|
abf4322b6c | ||
|
|
4e1a73fa27 | ||
|
|
214c86cc22 | ||
|
|
e0192f570e | ||
|
|
f5b5ab6331 | ||
|
|
d1c83b28f3 | ||
|
|
aa12b3f162 | ||
|
|
754087b5cf | ||
|
|
e656e36a92 | ||
|
|
0bf138281e | ||
|
|
fe62e12ab4 | ||
|
|
3c64c504c8 | ||
|
|
479472c1d8 | ||
|
|
c10c10c4a9 | ||
|
|
d8c515c858 | ||
|
|
168a308f5f | ||
|
|
fe40c5fd37 | ||
|
|
c430e36357 | ||
|
|
007bf743a6 | ||
|
|
774f57f3f6 | ||
|
|
044a64b964 | ||
|
|
f6bdb4d694 | ||
|
|
6a6b76e084 | ||
|
|
9357ce8a26 | ||
|
|
0aab2b3085 | ||
|
|
3edafd6c67 | ||
|
|
850ded2e17 | ||
|
|
67a58daaf3 | ||
|
|
9fdafd2008 | ||
|
|
66c37ccd3e | ||
|
|
fd3139201a | ||
|
|
abfedf573b | ||
|
|
a1f9536657 | ||
|
|
dec0563e3c | ||
|
|
9a4136399f | ||
|
|
20b0177105 |
No files matched your search
@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v12.18.3 \
|
||||
NODE_VERSION=v14.15.0 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
@@ -39,6 +39,7 @@ ENV \
|
||||
TRUSTED_URL="" \
|
||||
WEBHOOKS_ATTRIBUTES="" \
|
||||
OAUTH2_ENABLED=false \
|
||||
OAUTH2_ADFS_ENABLED=false \
|
||||
OAUTH2_LOGIN_STYLE=redirect \
|
||||
OAUTH2_CLIENT_ID="" \
|
||||
OAUTH2_SECRET="" \
|
||||
@@ -112,10 +113,22 @@ ENV \
|
||||
CORS_ALLOW_HEADERS="" \
|
||||
CORS_EXPOSE_HEADERS="" \
|
||||
DEFAULT_AUTHENTICATION_METHOD="" \
|
||||
SCROLLINERTIA="0" \
|
||||
SCROLLAMOUNT="auto" \
|
||||
SCROLLDELTAFACTOR="auto" \
|
||||
PASSWORD_LOGIN_ENABLED=true
|
||||
PASSWORD_LOGIN_ENABLED=true \
|
||||
CAS_ENABLED=false \
|
||||
CAS_BASE_URL="" \
|
||||
CAS_LOGIN_URL="" \
|
||||
CAS_VALIDATE_URL="" \
|
||||
SAML_ENABLED=false \
|
||||
SAML_PROVIDER="" \
|
||||
SAML_ENTRYPOINT="" \
|
||||
SAML_ISSUER="" \
|
||||
SAML_CERT="" \
|
||||
SAML_IDPSLO_REDIRECTURL="" \
|
||||
SAML_PRIVATE_KEYFILE="" \
|
||||
SAML_PUBLIC_CERTFILE="" \
|
||||
SAML_IDENTIFIER_FORMAT="" \
|
||||
SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \
|
||||
SAML_ATTRIBUTES=""
|
||||
|
||||
# Install OS
|
||||
RUN set -o xtrace \
|
||||
|
||||
@@ -81,7 +81,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.18.3
|
||||
node-engine: 14.15.0
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
@@ -83,7 +83,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.18.3
|
||||
node-engine: 14.15.0
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
tmp/
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
.gitmodules
|
||||
.vscode/
|
||||
.idea/
|
||||
.build/*
|
||||
|
||||
+53
-5
@@ -6,8 +6,8 @@
|
||||
meteor-base@1.4.0
|
||||
|
||||
# Build system
|
||||
ecmascript@0.14.3
|
||||
standard-minifier-css@1.6.0
|
||||
ecmascript@0.15.0-beta200.3
|
||||
standard-minifier-css@1.7.0-beta200.3
|
||||
standard-minifier-js@2.6.0
|
||||
mquandalle:jade
|
||||
coffeescript@2.4.1!
|
||||
@@ -72,8 +72,7 @@ simple:rest-accounts-password
|
||||
useraccounts:core
|
||||
email@2.0.0
|
||||
horka:swipebox
|
||||
dynamic-import@0.5.2
|
||||
staringatlights:fast-render
|
||||
dynamic-import@0.6.0-beta200.3
|
||||
|
||||
accounts-password@1.6.2
|
||||
cfs:gridfs
|
||||
@@ -95,5 +94,54 @@ konecty:mongo-counter
|
||||
percolate:synced-cron
|
||||
easylogic:summernote
|
||||
cfs:filesystem
|
||||
ostrio:cookies
|
||||
tmeasday:check-npm-versions
|
||||
steffo:meteor-accounts-saml
|
||||
rajit:bootstrap3-datepicker-fi
|
||||
rajit:bootstrap3-datepicker-ar
|
||||
rajit:bootstrap3-datepicker-bg
|
||||
rajit:bootstrap3-datepicker-br
|
||||
rajit:bootstrap3-datepicker-ca
|
||||
rajit:bootstrap3-datepicker-cs
|
||||
rajit:bootstrap3-datepicker-da
|
||||
rajit:bootstrap3-datepicker-de
|
||||
rajit:bootstrap3-datepicker-el
|
||||
rajit:bootstrap3-datepicker-en-gb
|
||||
rajit:bootstrap3-datepicker-eo
|
||||
rajit:bootstrap3-datepicker-es
|
||||
rajit:bootstrap3-datepicker-eu
|
||||
rajit:bootstrap3-datepicker-fa
|
||||
rajit:bootstrap3-datepicker-fr
|
||||
rajit:bootstrap3-datepicker-gl
|
||||
rajit:bootstrap3-datepicker-he
|
||||
rajit:bootstrap3-datepicker-hi
|
||||
rajit:bootstrap3-datepicker-hu
|
||||
rajit:bootstrap3-datepicker-hy
|
||||
rajit:bootstrap3-datepicker-id
|
||||
rajit:bootstrap3-datepicker-it
|
||||
rajit:bootstrap3-datepicker-ja
|
||||
rajit:bootstrap3-datepicker-ka
|
||||
rajit:bootstrap3-datepicker-km
|
||||
rajit:bootstrap3-datepicker-ko
|
||||
rajit:bootstrap3-datepicker-lv
|
||||
rajit:bootstrap3-datepicker-mk
|
||||
rajit:bootstrap3-datepicker-mn
|
||||
rajit:bootstrap3-datepicker-nb
|
||||
rajit:bootstrap3-datepicker-nl
|
||||
rajit:bootstrap3-datepicker-oc
|
||||
rajit:bootstrap3-datepicker-pl
|
||||
rajit:bootstrap3-datepicker-pt-br
|
||||
rajit:bootstrap3-datepicker-pt
|
||||
rajit:bootstrap3-datepicker-ro
|
||||
rajit:bootstrap3-datepicker-ru
|
||||
rajit:bootstrap3-datepicker-sl
|
||||
rajit:bootstrap3-datepicker-sr
|
||||
rajit:bootstrap3-datepicker-sv
|
||||
rajit:bootstrap3-datepicker-sw
|
||||
rajit:bootstrap3-datepicker-ta
|
||||
rajit:bootstrap3-datepicker-th
|
||||
rajit:bootstrap3-datepicker-tr
|
||||
rajit:bootstrap3-datepicker-uk
|
||||
rajit:bootstrap3-datepicker-vi
|
||||
rajit:bootstrap3-datepicker-zh-cn
|
||||
rajit:bootstrap3-datepicker-zh-tw
|
||||
hot-module-replacement
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@1.11
|
||||
METEOR@2.0-beta.3
|
||||
+62
-16
@@ -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.6.0
|
||||
babel-compiler@7.5.3
|
||||
autoupdate@1.7.0-beta200.3
|
||||
babel-compiler@7.6.0-beta200.3
|
||||
babel-runtime@1.5.0
|
||||
base64@1.0.12
|
||||
binary-heap@1.0.11
|
||||
@@ -42,7 +42,6 @@ cfs:tempstore@0.1.6
|
||||
cfs:upload-http@0.0.20
|
||||
cfs:worker@0.1.5
|
||||
check@1.3.1
|
||||
chuangbo:cookie@1.1.0
|
||||
coagmano:stylus@1.1.0
|
||||
coffeescript@2.4.1
|
||||
coffeescript-compiler@2.4.1
|
||||
@@ -55,9 +54,9 @@ ddp-rate-limiter@1.0.9
|
||||
ddp-server@2.3.2
|
||||
deps@1.0.12
|
||||
diff-sequence@1.1.1
|
||||
dynamic-import@0.5.2
|
||||
dynamic-import@0.6.0-beta200.3
|
||||
easylogic:summernote@0.8.8
|
||||
ecmascript@0.14.3
|
||||
ecmascript@0.15.0-beta200.3
|
||||
ecmascript-runtime@0.7.0
|
||||
ecmascript-runtime-client@0.11.0
|
||||
ecmascript-runtime-server@0.10.0
|
||||
@@ -70,6 +69,7 @@ fortawesome:fontawesome@4.7.0
|
||||
geojson-utils@1.0.10
|
||||
horka:swipebox@1.0.2
|
||||
hot-code-push@1.0.4
|
||||
hot-module-replacement@0.2.0-beta200.3
|
||||
html-tools@1.0.11
|
||||
htmljs@1.0.11
|
||||
http@1.4.2
|
||||
@@ -107,9 +107,10 @@ minifiers@1.1.8-faster-rebuild.0
|
||||
minimongo@1.6.0
|
||||
mobile-status-bar@1.1.0
|
||||
modern-browsers@0.1.5
|
||||
modules@0.15.0
|
||||
modules@0.16.0-beta200.3
|
||||
modules-runtime@0.12.0
|
||||
momentjs:moment@2.27.0
|
||||
modules-runtime-hot@0.13.0-beta200.3
|
||||
momentjs:moment@2.29.1
|
||||
mongo@1.10.0
|
||||
mongo-decimal@0.1.1
|
||||
mongo-dev-server@1.1.0
|
||||
@@ -126,13 +127,12 @@ mquandalle:moment@1.0.1
|
||||
mquandalle:mousetrap-bindglobal@0.0.1
|
||||
msavin:usercache@1.8.0
|
||||
npm-bcrypt@0.9.3
|
||||
npm-mongo@3.8.0
|
||||
oauth@1.3.0
|
||||
npm-mongo@3.8.1
|
||||
oauth@1.3.2
|
||||
oauth2@1.3.0
|
||||
observe-sequence@1.0.16
|
||||
ongoworks:speakingurl@1.1.0
|
||||
ordered-dict@1.1.0
|
||||
ostrio:cookies@2.6.0
|
||||
peerlibrary:assert@0.3.0
|
||||
peerlibrary:base-component@0.16.0
|
||||
peerlibrary:blaze-components@0.15.1
|
||||
@@ -143,6 +143,54 @@ promise@0.11.2
|
||||
raix:eventemitter@0.1.3
|
||||
raix:handlebar-helpers@0.2.5
|
||||
rajit:bootstrap3-datepicker@1.7.1_1
|
||||
rajit:bootstrap3-datepicker-ar@1.7.1
|
||||
rajit:bootstrap3-datepicker-bg@1.7.1
|
||||
rajit:bootstrap3-datepicker-br@1.7.1
|
||||
rajit:bootstrap3-datepicker-ca@1.7.1
|
||||
rajit:bootstrap3-datepicker-cs@1.7.1
|
||||
rajit:bootstrap3-datepicker-da@1.7.1
|
||||
rajit:bootstrap3-datepicker-de@1.7.1
|
||||
rajit:bootstrap3-datepicker-el@1.7.1
|
||||
rajit:bootstrap3-datepicker-en-gb@1.7.1
|
||||
rajit:bootstrap3-datepicker-eo@1.7.1
|
||||
rajit:bootstrap3-datepicker-es@1.7.1
|
||||
rajit:bootstrap3-datepicker-eu@1.7.1
|
||||
rajit:bootstrap3-datepicker-fa@1.7.1
|
||||
rajit:bootstrap3-datepicker-fi@1.7.1
|
||||
rajit:bootstrap3-datepicker-fr@1.7.1
|
||||
rajit:bootstrap3-datepicker-gl@1.7.1
|
||||
rajit:bootstrap3-datepicker-he@1.7.1
|
||||
rajit:bootstrap3-datepicker-hi@1.7.1
|
||||
rajit:bootstrap3-datepicker-hu@1.7.1
|
||||
rajit:bootstrap3-datepicker-hy@1.7.1
|
||||
rajit:bootstrap3-datepicker-id@1.7.1
|
||||
rajit:bootstrap3-datepicker-it@1.7.1
|
||||
rajit:bootstrap3-datepicker-ja@1.7.1
|
||||
rajit:bootstrap3-datepicker-ka@1.7.1
|
||||
rajit:bootstrap3-datepicker-km@1.7.1
|
||||
rajit:bootstrap3-datepicker-ko@1.7.1
|
||||
rajit:bootstrap3-datepicker-lv@1.7.1
|
||||
rajit:bootstrap3-datepicker-mk@1.7.1
|
||||
rajit:bootstrap3-datepicker-mn@1.7.1
|
||||
rajit:bootstrap3-datepicker-nb@1.7.1
|
||||
rajit:bootstrap3-datepicker-nl@1.7.1
|
||||
rajit:bootstrap3-datepicker-oc@1.7.1
|
||||
rajit:bootstrap3-datepicker-pl@1.7.1
|
||||
rajit:bootstrap3-datepicker-pt@1.7.1
|
||||
rajit:bootstrap3-datepicker-pt-br@1.7.1
|
||||
rajit:bootstrap3-datepicker-ro@1.7.1
|
||||
rajit:bootstrap3-datepicker-ru@1.7.1
|
||||
rajit:bootstrap3-datepicker-sl@1.7.1
|
||||
rajit:bootstrap3-datepicker-sr@1.7.1
|
||||
rajit:bootstrap3-datepicker-sv@1.7.1
|
||||
rajit:bootstrap3-datepicker-sw@1.7.1
|
||||
rajit:bootstrap3-datepicker-ta@1.7.1
|
||||
rajit:bootstrap3-datepicker-th@1.7.1
|
||||
rajit:bootstrap3-datepicker-tr@1.7.1
|
||||
rajit:bootstrap3-datepicker-uk@1.7.1
|
||||
rajit:bootstrap3-datepicker-vi@1.7.1
|
||||
rajit:bootstrap3-datepicker-zh-cn@1.7.1
|
||||
rajit:bootstrap3-datepicker-zh-tw@1.7.1
|
||||
random@1.2.0
|
||||
rate-limit@1.0.9
|
||||
reactive-dict@1.3.0
|
||||
@@ -151,7 +199,6 @@ reload@1.3.0
|
||||
retry@1.1.0
|
||||
routepolicy@1.1.0
|
||||
rzymek:fullcalendar@3.8.0
|
||||
server-render@0.3.1
|
||||
service-configuration@1.0.11
|
||||
session@1.2.0
|
||||
sha@1.0.9
|
||||
@@ -166,10 +213,9 @@ softwarerero:accounts-t9n@1.3.11
|
||||
spacebars@1.0.15
|
||||
spacebars-compiler@1.1.3
|
||||
srp@1.1.0
|
||||
standard-minifier-css@1.6.0
|
||||
standard-minifier-css@1.7.0-beta200.3
|
||||
standard-minifier-js@2.6.0
|
||||
staringatlights:fast-render@3.3.0
|
||||
staringatlights:inject-data@2.3.0
|
||||
steffo:meteor-accounts-saml@0.0.18
|
||||
tap:i18n@1.8.2
|
||||
templates:tabs@2.3.0
|
||||
templating@1.3.2
|
||||
@@ -186,8 +232,8 @@ useraccounts:core@1.14.2
|
||||
useraccounts:flow-routing@1.14.2
|
||||
useraccounts:unstyled@1.14.2
|
||||
verron:autosize@3.0.8
|
||||
webapp@1.9.1
|
||||
webapp-hashing@1.0.9
|
||||
webapp@1.10.0-beta200.3
|
||||
webapp-hashing@1.1.0-beta200.3
|
||||
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.18.3
|
||||
TRAVIS_NODE_VERSION: 14.15.0
|
||||
TRAVIS_NPM_VERSION: latest
|
||||
|
||||
before_install:
|
||||
|
||||
+225
@@ -1,3 +1,228 @@
|
||||
# v4.44 2020-10-28 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- For development, [add Meteor 2.0 Hot Module Replacement](https://github.com/wekan/wekan/commit/e6162472548d9dff497dd76e82d23044f779f757).
|
||||
More info at https://forums.meteor.com/t/meteor-2-0-beta-with-hot-module-replacement-hmr/54313/8 .
|
||||
Thanks to zodern.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgrade to Node.js 14.15.0](https://github.com/wekan/wekan/commit/045e9db7b8f0de852ef4486cb1ad200d6ca7296d).
|
||||
Thanks to Node.js and Meteor.js developers.
|
||||
- [Upgrade to Meteor 2.0-beta.3. Removed fast-render and ostrio:cookies](https://github.com/wekan/wekan/commit/a463f2a855498935db5b66e5fad446ce465adab1).
|
||||
Thanks to Meteor.js developers and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fixed: With ORACLE_OIM_ENABLED, allow setting OAUTH2_REQUEST_PERMISSIONS with environment variable](https://github.com/wekan/wekan/commit/1b429b3f99c32840ebb0ff9a29015aa8c28ec644).
|
||||
Thanks to xet7.
|
||||
- [Changed public board changing Swimlanes/Lists/Calendar view and changing Hide minicard label text
|
||||
from using cookies to using browser localStorage](https://github.com/wekan/wekan/commit/460b1d3a664b648bc03c40422b9d175401e229c1),
|
||||
to remove some errors from browser inspect console.
|
||||
Thanks to xet7.
|
||||
- [Fix Modern theme board canvas background](https://github.com/wekan/wekan/pull/3312).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Fix: 1) Expose moving cards on mobile to workers. 2) Hide the move to another board functionality
|
||||
in the submenu (only from the worker) so that the worker is still constrained to a single
|
||||
board](https://github.com/wekan/wekan/pull/3315).
|
||||
Thanks to jtbairdsr.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.43 2020-10-20 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Allow more than one assignee](https://github.com/wekan/wekan/commit/acf9e7caeaf59e1030ae1014c0cb2fb7dae27147).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fixed CSV/TSV export](https://github.com/wekan/wekan/commit/d7333dec84328ca191f430d96aaf9e550840631a).
|
||||
Please test and report any problems [at issue #3173](https://github.com/wekan/wekan/issues/3173).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.42 2020-10-14 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Upgrade to Node.js 12.19.0](https://github.com/wekan/wekan/commit/b8a209249e968b90917af319adf24fedf2157396).
|
||||
Thanks to Node.js developers.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.41 2020-10-03 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Login with OIDC OAuth2 Oracle on premise identity manager OIM, with setting ORACLE_OIM_ENABLED=true](https://github.com/wekan/wekan/commit/ec8a78537f1dc40e967de36a02ea09cf7398318a).
|
||||
More info [at wiki](https://github.com/wekan/wekan/wiki/Oracle-OIM).
|
||||
Thanks to xet7.
|
||||
- [At Admin Panel / Layout: Text below Custom Login Logo. Can have markdown formatting](https://github.com/wekan/wekan/commit/7223d6e75057d1412862a97b8a43c34ec23b16e9).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update dependencies](https://github.com/wekan/wekan/commit/b796a6cbf4911c14ff036a51db0252e08d3a5ef8).
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.40 2020-09-18 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- Custom Logo for Login and Top Left Corner. Optional link when clicking logo.
|
||||
Settings at Admin Panel / Layout.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/a7c3317ed696fad8e211b22afbb3012f3a4f2ddb),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/05e3fc31b4633978a6b002a0325aad8e74d57ec4),
|
||||
[Part 3](https://github.com/wekan/wekan/commit/3fc80e1145b23f8e6c7492ef4e3313b02f3d8772).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgrade to Meteor v1.11.1](https://github.com/wekan/wekan/commit/185cf163b23280af5a7910381209984e2362a452).
|
||||
Thanks to Meteor developers.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.39 2020-09-17 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Impersonate one user](https://github.com/wekan/wekan/pull/3280) and
|
||||
[related translatable strings](https://github.com/wekan/wekan/commit/81ac0fdba9b52477dbbe7b6ed01b6d299288bcca).
|
||||
Thanks to Akuket and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.38 2020-09-16 Wekan release
|
||||
|
||||
This release fixes the following CRITICAL VULNERABILITIES:
|
||||
|
||||
- [Upgrade to Node.js v12.18.4](https://github.com/wekan/wekan/commit/5cd9f89b21e6f800c2b78da49a1c0cf7f6fba955).
|
||||
Thanks to Node.js developers.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.37 2020-09-15 Wekan release
|
||||
|
||||
This release adds the following UI improvements:
|
||||
|
||||
- [UI improvements in filter, multi-selection and rules](https://github.com/wekan/wekan/pull/3279).
|
||||
Thanks to helioguardabaxo and xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update release scripts](https://github.com/wekan/wekan/commit/e79b7fad0a35f29020c48a4a4eedb435573c9bf1).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix parse error in docker-compose.yml](https://github.com/wekan/wekan/pull/3278).
|
||||
Thanks to devilmengcry.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.36 2020-09-15 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Added translations for date selection popups](https://github.com/wekan/wekan/commit/f9b0da65f1de48a2af11aa7afbd767559ba95b79).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.35 2020-09-14 Wekan release
|
||||
|
||||
This release tries to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/7173e293ef6b0d3c1fe82b5320340589c72c9326).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.34 2020-09-14 Wekan release
|
||||
|
||||
This release tries to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/d2b84c7773f20b34bca8be23078469a8809005a6).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.33 2020-09-14 Wekan release
|
||||
|
||||
This release adds the following login settings:
|
||||
|
||||
- [Added some CAS and SAML settings](https://github.com/wekan/wekan/commit/214c86cc22f4c721a79ec0a4a4f3bbd90d673f93).
|
||||
Not tested. Please test and send pull requests if it does not work.
|
||||
See https://github.com/wekan/wekan/wiki/SAML and https://github.com/wekan/wekan/wiki/CAS .
|
||||
Thanks to xet7.
|
||||
|
||||
and updates some dependencies:
|
||||
|
||||
- [Update dependencies](https://github.com/wekan/wekan/commit/cca041e21a66087ca4008a22cb0f5b4176801101).
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.32 2020-09-13 Wekan release
|
||||
|
||||
This release tried to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.31 2020-09-13 Wekan release
|
||||
|
||||
This release tried to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/fe62e12ab46c41ea30ba79795b0dc39b3451d4a2).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.30 2020-09-13 Wekan release
|
||||
|
||||
This release adds the following new features and improvements:
|
||||
|
||||
- [Add setting for OAUTH2_ADFS_ENABLED=true](https://github.com/wekan/wekan/pull/3269)
|
||||
for [SSO Integration with ADFS 4.0 using OAuth 2 and OpenID](https://github.com/wekan/wekan/issues/3184).
|
||||
Thanks to phaseshift3r.
|
||||
- [Add setting OAUTH2_ADFS_ENABLED=false for most platforms. Remove mouse scroll settings of already removed custom scrollbar.
|
||||
Add testing for both string and boolean version of true](https://github.com/wekan/wekan/commit/f6bdb4d694453d73f4bfa6a75814833594cf5000).
|
||||
Thanks to xet7.
|
||||
- [Design improvements in templates, card details and custom fields](https://github.com/wekan/wekan/pull/3271)
|
||||
and [related change to translation](https://github.com/wekan/wekan/commit/fe40c5fd37a7c54240c080caf98b6130229f5d31).
|
||||
Thanks to helioguardabaxo and xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Use forked & updated version of gridfs-stream](https://github.com/wekan/wekan/pull/3270).
|
||||
Thanks to blaggacao.
|
||||
- [Update dependencies](https://github.com/wekan/wekan/pull/3268).
|
||||
Thanks to blaggacao.
|
||||
- [Update npm-mongo dependency](https://github.com/wekan/wekan/commit/9fdafd20081b20302af3d1a6397fb840348f1209).
|
||||
Thanks to filipenevola.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.29 2020-09-11 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Changed markdown from marked to markdown-it](https://github.com/wekan/wekan/commit/20b01771055ca4d8871d13abb559ab92ecee10f4) and
|
||||
added emoji support https://github.com/wekan/wekan/wiki/Emoji .
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.28 2020-09-11 Wekan release
|
||||
|
||||
This release updates some dependencies:
|
||||
|
||||
+19
-5
@@ -8,7 +8,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.18.3 \
|
||||
NODE_VERSION=v14.15.0 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
@@ -41,6 +41,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
||||
TRUSTED_URL="" \
|
||||
WEBHOOKS_ATTRIBUTES="" \
|
||||
OAUTH2_ENABLED=false \
|
||||
OAUTH2_ADFS_ENABLED=false \
|
||||
OAUTH2_LOGIN_STYLE=redirect \
|
||||
OAUTH2_CLIENT_ID="" \
|
||||
OAUTH2_SECRET="" \
|
||||
@@ -114,10 +115,23 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
||||
CORS_ALLOW_HEADERS="" \
|
||||
CORS_EXPOSE_HEADERS="" \
|
||||
DEFAULT_AUTHENTICATION_METHOD="" \
|
||||
SCROLLINERTIA="0" \
|
||||
SCROLLAMOUNT="auto" \
|
||||
SCROLLDELTAFACTOR="auto" \
|
||||
PASSWORD_LOGIN_ENABLED=true
|
||||
PASSWORD_LOGIN_ENABLED=true \
|
||||
CAS_ENABLED=false \
|
||||
CAS_BASE_URL="" \
|
||||
CAS_LOGIN_URL="" \
|
||||
CAS_VALIDATE_URL="" \
|
||||
SAML_ENABLED=false \
|
||||
SAML_PROVIDER="" \
|
||||
SAML_ENTRYPOINT="" \
|
||||
SAML_ISSUER="" \
|
||||
SAML_CERT="" \
|
||||
SAML_IDPSLO_REDIRECTURL="" \
|
||||
SAML_PRIVATE_KEYFILE="" \
|
||||
SAML_PUBLIC_CERTFILE="" \
|
||||
SAML_IDENTIFIER_FORMAT="" \
|
||||
SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE="" \
|
||||
SAML_ATTRIBUTES="" \
|
||||
ORACLE_OIM_ENABLED=false
|
||||
|
||||
# Copy the app to the image
|
||||
COPY ${SRC_PATH} /home/wekan/app
|
||||
|
||||
+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.18.3 \
|
||||
NODE_VERSION=v14.15.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.18.3 \
|
||||
NODE_VERSION=v14.15.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.28.0"
|
||||
appVersion: "v4.44.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
const subManager = new SubsManager();
|
||||
const { calculateIndex } = Utils;
|
||||
const swimlaneWhileSortingHeight = 150;
|
||||
@@ -197,7 +195,7 @@ BlazeComponent.extendComponent({
|
||||
if (currentUser) {
|
||||
showDesktopDragHandles = (currentUser.profile || {})
|
||||
.showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
showDesktopDragHandles = true;
|
||||
} else {
|
||||
showDesktopDragHandles = false;
|
||||
@@ -237,7 +235,9 @@ BlazeComponent.extendComponent({
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).boardView === 'board-view-swimlanes';
|
||||
} else {
|
||||
return cookies.get('boardView') === 'board-view-swimlanes';
|
||||
return (
|
||||
window.localStorage.getItem('boardView') === 'board-view-swimlanes'
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -246,7 +246,7 @@ BlazeComponent.extendComponent({
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).boardView === 'board-view-lists';
|
||||
} else {
|
||||
return cookies.get('boardView') === 'board-view-lists';
|
||||
return window.localStorage.getItem('boardView') === 'board-view-lists';
|
||||
}
|
||||
},
|
||||
|
||||
@@ -255,7 +255,7 @@ BlazeComponent.extendComponent({
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).boardView === 'board-view-cal';
|
||||
} else {
|
||||
return cookies.get('boardView') === 'board-view-cal';
|
||||
return window.localStorage.getItem('boardView') === 'board-view-cal';
|
||||
}
|
||||
},
|
||||
|
||||
@@ -417,7 +417,7 @@ BlazeComponent.extendComponent({
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).boardView === 'board-view-cal';
|
||||
} else {
|
||||
return cookies.get('boardView') === 'board-view-cal';
|
||||
return window.localStorage.getItem('boardView') === 'board-view-cal';
|
||||
}
|
||||
},
|
||||
}).register('calendarView');
|
||||
@@ -602,9 +602,12 @@ setBoardClear(color1,color2)
|
||||
height: 21px
|
||||
background: #f7f7f7
|
||||
|
||||
.board-canvas
|
||||
background: #f5f5f5
|
||||
|
||||
/* Swimlane */
|
||||
.swimlane
|
||||
background: #f5f5f5
|
||||
background: none
|
||||
|
||||
.swimlane .swimlane-header-wrap .swimlane-header
|
||||
font-family: Poppins
|
||||
|
||||
@@ -4,8 +4,7 @@ template(name="cardCustomFieldsPopup")
|
||||
li.item(class="")
|
||||
a.name.js-select-field(href="#")
|
||||
span.full-name
|
||||
+viewer
|
||||
= name
|
||||
= name
|
||||
if hasCustomField
|
||||
i.fa.fa-check
|
||||
hr
|
||||
|
||||
@@ -42,12 +42,28 @@ template(name="cardDetails")
|
||||
else
|
||||
p.warning {{_ 'card-archived'}}
|
||||
|
||||
.card-details-items
|
||||
.card-details-items
|
||||
if currentBoard.allowsLabels
|
||||
.card-details-item.card-details-item-labels
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-tags
|
||||
| {{_ 'labels'}}
|
||||
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
|
||||
each labels
|
||||
span.card-label(class="card-label-{{color}}" title=name)
|
||||
+viewer
|
||||
= name
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
if currentBoard.allowsReceivedDate
|
||||
hr
|
||||
.card-details-item.card-details-item-received
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-sign-out
|
||||
card-details-item-title {{_ 'card-received'}}
|
||||
| {{_ 'card-received'}}
|
||||
if getReceived
|
||||
+cardReceivedDate
|
||||
else
|
||||
@@ -58,9 +74,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsStartDate
|
||||
.card-details-item.card-details-item-start
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-hourglass-start
|
||||
card-details-item-title {{_ 'card-start'}}
|
||||
| {{_ 'card-start'}}
|
||||
if getStart
|
||||
+cardStartDate
|
||||
else
|
||||
@@ -71,9 +87,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsDueDate
|
||||
.card-details-item.card-details-item-due
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-sign-in
|
||||
card-details-item-title {{_ 'card-due'}}
|
||||
| {{_ 'card-due'}}
|
||||
if getDue
|
||||
+cardDueDate
|
||||
else
|
||||
@@ -84,9 +100,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsEndDate
|
||||
.card-details-item.card-details-item-end
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-hourglass-end
|
||||
card-details-item-title {{_ 'card-end'}}
|
||||
| {{_ 'card-end'}}
|
||||
if getEnd
|
||||
+cardEndDate
|
||||
else
|
||||
@@ -97,10 +113,11 @@ template(name="cardDetails")
|
||||
|
||||
//.card-details-items
|
||||
if currentBoard.allowsMembers
|
||||
hr
|
||||
.card-details-item.card-details-item-members
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-users
|
||||
card-details-item-title {{_ 'members'}}
|
||||
| {{_ 'members'}}
|
||||
each getMembers
|
||||
+userAvatar(userId=this cardId=../_id)
|
||||
| {{! XXX Hack to hide syntaxic coloration /// }}
|
||||
@@ -112,9 +129,9 @@ template(name="cardDetails")
|
||||
//if assigneeSelected
|
||||
if currentBoard.allowsAssignee
|
||||
.card-details-item.card-details-item-assignees
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-user
|
||||
card-details-item-title {{_ 'assignee'}}
|
||||
| {{_ 'assignee'}}
|
||||
each getAssignees
|
||||
+userAvatarAssignee(userId=this cardId=../_id)
|
||||
| {{! XXX Hack to hide syntaxic coloration /// }}
|
||||
@@ -126,44 +143,23 @@ template(name="cardDetails")
|
||||
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
if currentBoard.allowsLabels
|
||||
.card-details-item.card-details-item-labels
|
||||
h3
|
||||
i.fa.fa-tags
|
||||
card-details-item-title {{_ 'labels'}}
|
||||
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
|
||||
each labels
|
||||
span.card-label(class="card-label-{{color}}" title=name)
|
||||
+viewer
|
||||
= name
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
//.card-details-items
|
||||
each customFieldsWD
|
||||
.card-details-item.card-details-item-customfield
|
||||
h3.card-details-item-title
|
||||
+viewer
|
||||
= definition.name
|
||||
+cardCustomField
|
||||
|
||||
//.card-details-items
|
||||
if getSpentTime
|
||||
.card-details-item.card-details-item-spent
|
||||
if getIsOvertime
|
||||
h3.card-details-item-title {{_ 'overtime-hours'}}
|
||||
h3.card-details-item-title
|
||||
| {{_ 'overtime-hours'}}
|
||||
else
|
||||
h3.card-details-item-title {{_ 'spent-time-hours'}}
|
||||
h3.card-details-item-title
|
||||
| {{_ 'spent-time-hours'}}
|
||||
+cardSpentTime
|
||||
|
||||
//.card-details-items
|
||||
if currentBoard.allowsRequestedBy
|
||||
.card-details-item.card-details-item-name
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-shopping-cart
|
||||
card-details-item-title {{_ 'requested-by'}}
|
||||
| {{_ 'requested-by'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
+inlinedForm(classNames="js-card-details-requester")
|
||||
@@ -181,9 +177,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsAssignedBy
|
||||
.card-details-item.card-details-item-name
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-user-plus
|
||||
card-details-item-title {{_ 'assigned-by'}}
|
||||
| {{_ 'assigned-by'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
+inlinedForm(classNames="js-card-details-assigner")
|
||||
@@ -199,6 +195,16 @@ template(name="cardDetails")
|
||||
+viewer
|
||||
= getAssignedBy
|
||||
|
||||
//.card-details-items
|
||||
if customFieldsWD
|
||||
hr
|
||||
each customFieldsWD
|
||||
.card-details-item.card-details-item-customfield
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-list-alt
|
||||
= definition.name
|
||||
+cardCustomField
|
||||
|
||||
if getVoteQuestion
|
||||
hr
|
||||
.vote-title
|
||||
@@ -234,9 +240,9 @@ template(name="cardDetails")
|
||||
unless currentUser.isWorker
|
||||
if currentBoard.allowsDescriptionTitle
|
||||
hr
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-align-left
|
||||
card-details-item-title {{_ 'description'}}
|
||||
| {{_ 'description'}}
|
||||
if currentBoard.allowsDescriptionText
|
||||
+inlinedCardDescription(classNames="card-description js-card-description")
|
||||
+editor(autofocus=true)
|
||||
@@ -276,7 +282,7 @@ template(name="cardDetails")
|
||||
+subtasks(cardId = _id)
|
||||
if currentBoard.allowsAttachments
|
||||
hr
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'attachments'}}
|
||||
.card-checklist-attachmentGalery.card-attachmentGalery
|
||||
@@ -285,7 +291,7 @@ template(name="cardDetails")
|
||||
hr
|
||||
unless currentUser.isNoComments
|
||||
.activity-title
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-history
|
||||
| {{ _ 'activity'}}
|
||||
if currentUser.isBoardMember
|
||||
@@ -375,17 +381,18 @@ template(name="cardDetailsActionsPopup")
|
||||
a.js-move-card-to-bottom
|
||||
i.fa.fa-arrow-down
|
||||
| {{_ 'moveCardToBottom-title'}}
|
||||
unless currentUser.isWorker
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-move-card
|
||||
i.fa.fa-arrow-right
|
||||
| {{_ 'moveCardPopup-title'}}
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-move-card
|
||||
i.fa.fa-arrow-right
|
||||
| {{_ 'moveCardPopup-title'}}
|
||||
unless currentUser.isWorker
|
||||
li
|
||||
a.js-copy-card
|
||||
i.fa.fa-copy
|
||||
| {{_ 'copyCardPopup-title'}}
|
||||
unless currentUser.isWorker
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
@@ -424,13 +431,14 @@ template(name="copyChecklistToManyCardsPopup")
|
||||
+boardsAndLists
|
||||
|
||||
template(name="boardsAndLists")
|
||||
label {{_ 'boards'}}:
|
||||
select.js-select-boards(autofocus)
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
option(value="{{_id}}" selected) {{_ 'current'}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
unless currentUser.isWorker
|
||||
label {{_ 'boards'}}:
|
||||
select.js-select-boards(autofocus)
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
option(value="{{_id}}" selected) {{_ 'current'}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'swimlanes'}}:
|
||||
select.js-select-swimlanes
|
||||
|
||||
@@ -57,7 +57,7 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
scrollParentContainer() {
|
||||
const cardPanelWidth = 510;
|
||||
const cardPanelWidth = 600;
|
||||
const parentComponent = this.parentComponent();
|
||||
// TODO sometimes parentComponent is not available, maybe because it's not
|
||||
// yet created?!
|
||||
|
||||
@@ -89,7 +89,7 @@ avatar-radius = 50%
|
||||
.card-details
|
||||
padding: 0
|
||||
flex-shrink: 0
|
||||
flex-basis: 510px
|
||||
flex-basis: 600px
|
||||
will-change: flex-basis
|
||||
overflow-y: scroll
|
||||
overflow-x: hidden
|
||||
@@ -198,23 +198,32 @@ avatar-radius = 50%
|
||||
margin-right: 0.5em
|
||||
&:last-child
|
||||
margin-right: 0
|
||||
&.card-details-item-labels,
|
||||
&.card-details-item-labels
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 95%
|
||||
flex-grow: 1
|
||||
&.card-details-item-members,
|
||||
&.card-details-item-assignees,
|
||||
&.card-details-item-received,
|
||||
&.card-details-item-start,
|
||||
&.card-details-item-due,
|
||||
&.card-details-item-end,
|
||||
&.card-details-item-customfield,
|
||||
&.card-details-item-name
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 48%
|
||||
max-width: 36%
|
||||
flex-grow: 1
|
||||
&.card-details-item-received,
|
||||
&.card-details-item-start,
|
||||
&.card-details-item-due,
|
||||
&.card-details-item-end
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 28%
|
||||
flex-grow: 1
|
||||
|
||||
.card-details-item-title
|
||||
font-size: 16px
|
||||
color: #000
|
||||
font-weight: bold
|
||||
color: #4d4d4d
|
||||
|
||||
.card-label
|
||||
padding-top: 5px
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
template(name="checklists")
|
||||
.checklists-title
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-check
|
||||
| {{_ 'checklists'}}
|
||||
if currentUser.isBoardMember
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
// Template.cards.events({
|
||||
// 'click .member': Popup.open('cardMember')
|
||||
// });
|
||||
@@ -34,10 +32,10 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
{
|
||||
'click .js-toggle-minicard-label-text'() {
|
||||
if (cookies.has('hiddenMinicardLabelText')) {
|
||||
cookies.remove('hiddenMinicardLabelText'); //true
|
||||
if (window.localStorage.getItem('hiddenMinicardLabelText')) {
|
||||
window.localStorage.removeItem('hiddenMinicardLabelText'); //true
|
||||
} else {
|
||||
cookies.set('hiddenMinicardLabelText', 'true'); //true
|
||||
window.localStorage.setItem('hiddenMinicardLabelText', 'true'); //true
|
||||
}
|
||||
},
|
||||
},
|
||||
@@ -50,7 +48,7 @@ Template.minicard.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@@ -60,7 +58,7 @@ Template.minicard.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).hiddenMinicardLabelText;
|
||||
} else if (cookies.has('hiddenMinicardLabelText')) {
|
||||
} else if (window.localStorage.getItem('hiddenMinicardLabelText')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
template(name="subtasks")
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-sitemap
|
||||
| {{_ 'subtasks'}}
|
||||
if toggleDeleteDialog.get
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
const { calculateIndex } = Utils;
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
@@ -124,7 +122,7 @@ BlazeComponent.extendComponent({
|
||||
if (currentUser) {
|
||||
showDesktopDragHandles = (currentUser.profile || {})
|
||||
.showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
showDesktopDragHandles = true;
|
||||
} else {
|
||||
showDesktopDragHandles = false;
|
||||
@@ -185,7 +183,7 @@ Template.list.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -105,6 +105,8 @@ template(name="searchElementPopup")
|
||||
each boards
|
||||
option(value="{{_id}}") {{title}}
|
||||
form.js-search-term-form
|
||||
label
|
||||
| {{_ 'template'}}
|
||||
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
|
||||
.list-body.search-card-results
|
||||
.minicards.clearfix.js-minicards
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
let listsColors;
|
||||
Meteor.startup(() => {
|
||||
listsColors = Lists.simpleSchema()._schema.color.allowedValues;
|
||||
@@ -110,7 +108,7 @@ Template.listHeader.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -19,6 +19,19 @@ template(name="header")
|
||||
= title
|
||||
#header-new-board-icon
|
||||
else
|
||||
//-
|
||||
On sandstorm, the logo shouldn't be clickable, because we only have one
|
||||
page/document on it, and we don't want to see the home page containing
|
||||
the list of all boards.
|
||||
unless currentSetting.hideLogo
|
||||
if currentSetting.customTopLeftCornerLogoImageUrl
|
||||
if currentSetting.customTopLeftCornerLogoLinkUrl
|
||||
a(href="{{currentSetting.customTopLeftCornerLogoLinkUrl}}")
|
||||
img(src="{{currentSetting.customTopLeftCornerLogoImageUrl}}" height="27" width="auto" margin="0" padding="0")
|
||||
unless currentSetting.customTopLeftCornerLogoLinkUrl
|
||||
img(src="{{currentSetting.customTopLeftCornerLogoImageUrl}}" height="27" width="auto" margin="0" padding="0")
|
||||
unless currentSetting.customTopLeftCornerLogoImageUrl
|
||||
img(src="{{pathFor '/logo-header.png'}}" alt="")
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
@@ -52,17 +65,6 @@ template(name="header")
|
||||
#header-main-bar(class="{{#if wrappedHeader}}wrapper{{/if}}")
|
||||
+Template.dynamic(template=headerBar)
|
||||
|
||||
//unless hideLogo
|
||||
|
||||
//-
|
||||
On sandstorm, the logo shouldn't be clickable, because we only have one
|
||||
page/document on it, and we don't want to see the home page containing
|
||||
the list of all boards.
|
||||
|
||||
// unless currentSetting.hideLogo
|
||||
// a.wekan-logo(href="{{pathFor 'home'}}" title="{{_ 'header-logo-title'}}")
|
||||
// img(src="{{pathFor '/logo-header.png'}}" alt="")
|
||||
|
||||
if appIsOffline
|
||||
+offlineWarning
|
||||
|
||||
|
||||
@@ -19,6 +19,27 @@ head
|
||||
|
||||
template(name="userFormsLayout")
|
||||
section.auth-layout
|
||||
if currentSetting.hideLogo
|
||||
h1.at-form-landing-logo
|
||||
br
|
||||
br
|
||||
unless currentSetting.hideLogo
|
||||
h1.at-form-landing-logo
|
||||
if currentSetting.customLoginLogoImageUrl
|
||||
if currentSetting.customLoginLogoLinkUrl
|
||||
a(href="{{currentSetting.customLoginLogoLinkUrl}}")
|
||||
img(src="{{currentSetting.customLoginLogoImageUrl}}" width="300" height="auto")
|
||||
br
|
||||
unless currentSetting.customLoginLogoLinkUrl
|
||||
img(src="{{currentSetting.customLoginLogoImageUrl}}" width="300" height="auto")
|
||||
br
|
||||
unless currentSetting.customLoginLogoImageUrl
|
||||
img(src="{{pathFor '/wekan-logo.svg'}}" alt="" width="300" height="auto")
|
||||
br
|
||||
if currentSetting.textBelowCustomLoginLogo
|
||||
+viewer
|
||||
| {{currentSetting.textBelowCustomLoginLogo}}
|
||||
br
|
||||
section.auth-dialog
|
||||
if isLoading
|
||||
+loader
|
||||
|
||||
@@ -169,6 +169,19 @@ async function authentication(event, templateInstance) {
|
||||
});
|
||||
});
|
||||
|
||||
case 'saml':
|
||||
return new Promise(resolve => {
|
||||
const provider = Meteor.settings.public.SAML_PROVIDER;
|
||||
Meteor.loginWithSaml(
|
||||
{
|
||||
provider,
|
||||
},
|
||||
function() {
|
||||
resolve(FlowRouter.go('/'));
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
case 'cas':
|
||||
return new Promise(resolve => {
|
||||
Meteor.loginWithCas(match, password, function() {
|
||||
|
||||
@@ -447,7 +447,6 @@ a
|
||||
flex-direction: column
|
||||
align-items: center
|
||||
justify-content: center
|
||||
height: 100%
|
||||
|
||||
.auth-dialog
|
||||
margin: 0 !important
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
overflow:hidden
|
||||
overflow-y:scroll
|
||||
max-height: 400px
|
||||
padding-right: 5px
|
||||
.rules-lists-item
|
||||
display: block
|
||||
position: relative
|
||||
overflow: auto
|
||||
border-bottom: 1px solid #bfbfbf
|
||||
p
|
||||
display: inline-block
|
||||
float: left
|
||||
|
||||
@@ -104,6 +104,8 @@ template(name="peopleRow")
|
||||
a.edit-user
|
||||
i.fa.fa-edit
|
||||
| {{_ 'edit'}}
|
||||
a.more-settings-user
|
||||
i.fa.fa-ellipsis-h
|
||||
|
||||
template(name="editUserPopup")
|
||||
form
|
||||
@@ -200,3 +202,10 @@ template(name="newUserPopup")
|
||||
input.js-profile-password(type="password")
|
||||
div.buttonsContainer
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
|
||||
template(name="settingsUserPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.impersonate-user
|
||||
i.fa.fa-user
|
||||
| {{_ 'impersonate-user'}}
|
||||
@@ -194,6 +194,7 @@ BlazeComponent.extendComponent({
|
||||
return [
|
||||
{
|
||||
'click a.edit-user': Popup.open('editUser'),
|
||||
'click a.more-settings-user': Popup.open('settingsUser'),
|
||||
},
|
||||
];
|
||||
},
|
||||
@@ -343,3 +344,16 @@ Template.newUserPopup.events({
|
||||
Popup.close();
|
||||
},
|
||||
});
|
||||
|
||||
Template.settingsUserPopup.events({
|
||||
'click .impersonate-user'(event) {
|
||||
event.preventDefault();
|
||||
|
||||
Meteor.call('impersonate', this.userId, err => {
|
||||
if (!err) {
|
||||
FlowRouter.go('/');
|
||||
Meteor.connection.setUserId(this.userId);
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -46,3 +46,6 @@ table
|
||||
|
||||
div
|
||||
margin: auto
|
||||
|
||||
.more-settings-user
|
||||
margin-left: 10px;
|
||||
@@ -163,13 +163,6 @@ template(name='announcementSettings')
|
||||
|
||||
template(name='layoutSettings')
|
||||
ul#layout-setting.setting-detail
|
||||
//li.layout-form
|
||||
.title {{_ 'hide-logo'}}
|
||||
.form-group.flex
|
||||
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
|
||||
span {{_ 'yes'}}
|
||||
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
|
||||
span {{_ 'no'}}
|
||||
li.layout-form
|
||||
.title {{_ 'display-authentication-method'}}
|
||||
.form-group.flex
|
||||
@@ -184,10 +177,36 @@ template(name='layoutSettings')
|
||||
.title {{_ 'custom-product-name'}}
|
||||
.form-group
|
||||
input.wekan-form-control#product-name(type="text", placeholder="" value="{{currentSetting.productName}}")
|
||||
li.layout-form
|
||||
.title {{_ 'hide-logo'}}
|
||||
.form-group.flex
|
||||
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
|
||||
span {{_ 'yes'}}
|
||||
input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
|
||||
span {{_ 'no'}}
|
||||
li.layout-form
|
||||
.title {{_ 'custom-login-logo-image-url'}}
|
||||
.form-group
|
||||
input.wekan-form-control#custom-login-logo-image-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoImageUrl}}")
|
||||
li.layout-form
|
||||
.title {{_ 'custom-login-logo-link-url'}}
|
||||
.form-group
|
||||
input.wekan-form-control#custom-login-logo-link-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoLinkUrl}}")
|
||||
li.layout-form
|
||||
.title {{_ 'text-below-custom-login-logo'}}
|
||||
.form-group
|
||||
textarea#text-below-custom-login-logo.wekan-form-control= currentSetting.textBelowCustomLoginLogo
|
||||
li.layout-form
|
||||
.title {{_ 'custom-top-left-corner-logo-image-url'}}
|
||||
.form-group
|
||||
input.wekan-form-control#custom-top-left-corner-logo-image-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoImageUrl}}")
|
||||
li.layout-form
|
||||
.title {{_ 'custom-top-left-corner-logo-link-url'}}
|
||||
.form-group
|
||||
input.wekan-form-control#custom-top-left-corner-logo-link-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoLinkUrl}}")
|
||||
li
|
||||
button.js-save-layout.primary {{_ 'save'}}
|
||||
|
||||
|
||||
template(name='selectAuthenticationMethod')
|
||||
select#defaultAuthenticationMethod
|
||||
each authentications
|
||||
|
||||
@@ -167,6 +167,25 @@ BlazeComponent.extendComponent({
|
||||
const productName = $('#product-name')
|
||||
.val()
|
||||
.trim();
|
||||
const customLoginLogoImageUrl = $('#custom-login-logo-image-url')
|
||||
.val()
|
||||
.trim();
|
||||
const customLoginLogoLinkUrl = $('#custom-login-logo-link-url')
|
||||
.val()
|
||||
.trim();
|
||||
const textBelowCustomLoginLogo = $('#text-below-custom-login-logo')
|
||||
.val()
|
||||
.trim();
|
||||
const customTopLeftCornerLogoImageUrl = $(
|
||||
'#custom-top-left-corner-logo-image-url',
|
||||
)
|
||||
.val()
|
||||
.trim();
|
||||
const customTopLeftCornerLogoLinkUrl = $(
|
||||
'#custom-top-left-corner-logo-link-url',
|
||||
)
|
||||
.val()
|
||||
.trim();
|
||||
const hideLogoChange = $('input[name=hideLogo]:checked').val() === 'true';
|
||||
const displayAuthenticationMethod =
|
||||
$('input[name=displayAuthenticationMethod]:checked').val() === 'true';
|
||||
@@ -177,6 +196,11 @@ BlazeComponent.extendComponent({
|
||||
$set: {
|
||||
productName,
|
||||
hideLogo: hideLogoChange,
|
||||
customLoginLogoImageUrl,
|
||||
customLoginLogoLinkUrl,
|
||||
textBelowCustomLoginLogo,
|
||||
customTopLeftCornerLogoImageUrl,
|
||||
customTopLeftCornerLogoLinkUrl,
|
||||
displayAuthenticationMethod,
|
||||
defaultAuthenticationMethod,
|
||||
},
|
||||
|
||||
@@ -366,14 +366,14 @@ template(name="exportBoard")
|
||||
a.download-json-link(href="{{exportUrl}}", download="{{exportJsonFilename}}")
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board-json'}}
|
||||
//li
|
||||
// a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}")
|
||||
// i.fa.fa-share-alt
|
||||
// | {{_ 'export-board-csv'}}
|
||||
//li
|
||||
// a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}")
|
||||
// i.fa.fa-share-alt
|
||||
// | {{_ 'export-board-tsv'}}
|
||||
li
|
||||
a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}")
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board-csv'}}
|
||||
li
|
||||
a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}")
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board-tsv'}}
|
||||
li
|
||||
a.html-export-board
|
||||
i.fa.fa-archive
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
Sidebar = null;
|
||||
|
||||
const defaultView = 'home';
|
||||
@@ -112,10 +110,12 @@ BlazeComponent.extendComponent({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
Meteor.call('toggleMinicardLabelText');
|
||||
} else if (cookies.has('hiddenMinicardLabelText')) {
|
||||
cookies.remove('hiddenMinicardLabelText');
|
||||
} else if (window.localStorage.getItem('hiddenMinicardLabelText')) {
|
||||
window.localStorage.removeItem('hiddenMinicardLabelText');
|
||||
location.reload();
|
||||
} else {
|
||||
cookies.set('hiddenMinicardLabelText', 'true');
|
||||
window.localStorage.setItem('hiddenMinicardLabelText', 'true');
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
'click .js-shortcuts'() {
|
||||
@@ -133,7 +133,7 @@ Template.homeSidebar.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).hiddenMinicardLabelText;
|
||||
} else if (cookies.has('hiddenMinicardLabelText')) {
|
||||
} else if (window.localStorage.getItem('hiddenMinicardLabelText')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
color: darken(white, 50%)
|
||||
font-size: 1em
|
||||
margin-bottom: 10px
|
||||
font-weight: bold
|
||||
|
||||
i.fa
|
||||
margin-right: 3px
|
||||
@@ -167,8 +168,8 @@
|
||||
button
|
||||
float: right
|
||||
margin: 0
|
||||
margin-bottom: 5px
|
||||
padding: 0 2px 0 10px
|
||||
margin: 0 0 5px 5px
|
||||
padding: 0 10px 0 10px
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
.board-sidebar
|
||||
|
||||
@@ -4,10 +4,14 @@
|
||||
and #each x in y constructors to fix this.
|
||||
|
||||
template(name="filterSidebar")
|
||||
h3 {{_ 'list-filter-label'}}
|
||||
ul.sidebar-list
|
||||
span {{_ 'list-filter-label'}}
|
||||
form.js-list-filter
|
||||
input(type="text")
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-tags
|
||||
| {{_ 'filter-labels-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-label-filter
|
||||
@@ -27,6 +31,9 @@ template(name="filterSidebar")
|
||||
if Filter.labelIds.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-users
|
||||
| {{_ 'filter-member-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.members.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-member-filter
|
||||
@@ -45,6 +52,9 @@ template(name="filterSidebar")
|
||||
if Filter.members.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-user
|
||||
| {{_ 'filter-assignee-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.assignees.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-assignee-filter
|
||||
@@ -63,6 +73,9 @@ template(name="filterSidebar")
|
||||
if Filter.assignees.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'filter-custom-fields-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.customFields.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-custom-fields-filter
|
||||
@@ -78,6 +91,8 @@ template(name="filterSidebar")
|
||||
if Filter.customFields.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
| {{_ 'other-filters-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.archive.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-archive-filter
|
||||
@@ -85,7 +100,6 @@ template(name="filterSidebar")
|
||||
| {{_ 'filter-show-archive'}}
|
||||
if Filter.archive.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.hideEmpty.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-hideEmpty-filter
|
||||
@@ -94,7 +108,7 @@ template(name="filterSidebar")
|
||||
if Filter.hideEmpty.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
span {{_ 'advanced-filter-label'}}
|
||||
h3 {{_ 'advanced-filter-label'}}
|
||||
input.js-field-advanced-filter(type="text")
|
||||
span {{_ 'advanced-filter-description'}}
|
||||
if Filter.isActive
|
||||
@@ -107,6 +121,9 @@ template(name="filterSidebar")
|
||||
span {{_ 'filter-to-selection'}}
|
||||
|
||||
template(name="multiselectionSidebar")
|
||||
h3
|
||||
i.fa.fa-tags
|
||||
| {{_ 'multi-selection-label'}}
|
||||
ul.sidebar-list
|
||||
each currentBoard.labels
|
||||
li
|
||||
@@ -122,6 +139,9 @@ template(name="multiselectionSidebar")
|
||||
else if someSelectedElementHave 'label' _id
|
||||
i.fa.fa-ellipsis-h
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-users
|
||||
| {{_ 'multi-selection-member'}}
|
||||
ul.sidebar-list
|
||||
each currentBoard.activeMembers
|
||||
with getUser userId
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
const { calculateIndexData } = Utils;
|
||||
|
||||
let swimlaneColors;
|
||||
@@ -35,7 +33,7 @@ Template.swimlaneHeader.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
const { calculateIndex } = Utils;
|
||||
|
||||
function currentListIsInThisSwimlane(swimlaneId) {
|
||||
@@ -102,7 +100,7 @@ function initSortable(boardComponent, $listsDom) {
|
||||
if (currentUser) {
|
||||
showDesktopDragHandles = (currentUser.profile || {})
|
||||
.showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
showDesktopDragHandles = true;
|
||||
} else {
|
||||
showDesktopDragHandles = false;
|
||||
@@ -178,7 +176,7 @@ BlazeComponent.extendComponent({
|
||||
if (currentUser) {
|
||||
showDesktopDragHandles = (currentUser.profile || {})
|
||||
.showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
showDesktopDragHandles = true;
|
||||
} else {
|
||||
showDesktopDragHandles = false;
|
||||
@@ -269,7 +267,7 @@ Template.swimlane.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
|
||||
Template.headerUserBar.events({
|
||||
'click .js-open-header-member-menu': Popup.open('memberMenu'),
|
||||
'click .js-change-avatar': Popup.open('changeAvatar'),
|
||||
@@ -200,7 +197,7 @@ Template.changeSettingsPopup.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).showDesktopDragHandles;
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@@ -210,7 +207,7 @@ Template.changeSettingsPopup.helpers({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).hasHiddenSystemMessages;
|
||||
} else if (cookies.has('hasHiddenSystemMessages')) {
|
||||
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@@ -221,7 +218,7 @@ Template.changeSettingsPopup.helpers({
|
||||
if (currentUser) {
|
||||
return Meteor.user().getLimitToShowCardsCount();
|
||||
} else {
|
||||
return cookies.get('limitToShowCardsCount');
|
||||
return window.localStorage.getItem('limitToShowCardsCount');
|
||||
}
|
||||
},
|
||||
weekDays(startDay) {
|
||||
@@ -242,7 +239,7 @@ Template.changeSettingsPopup.helpers({
|
||||
if (currentUser) {
|
||||
return currentUser.getStartDayOfWeek();
|
||||
} else {
|
||||
return cookies.get('startDayOfWeek');
|
||||
return window.localStorage.getItem('startDayOfWeek');
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -252,20 +249,20 @@ Template.changeSettingsPopup.events({
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
Meteor.call('toggleDesktopDragHandles');
|
||||
} else if (cookies.has('showDesktopDragHandles')) {
|
||||
cookies.remove('showDesktopDragHandles');
|
||||
} else if (window.localStorage.getItem('showDesktopDragHandles')) {
|
||||
window.localStorage.removeItem('showDesktopDragHandles');
|
||||
} else {
|
||||
cookies.set('showDesktopDragHandles', 'true');
|
||||
window.localStorage.setItem('showDesktopDragHandles', 'true');
|
||||
}
|
||||
},
|
||||
'click .js-toggle-system-messages'() {
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
Meteor.call('toggleSystemMessages');
|
||||
} else if (cookies.has('hasHiddenSystemMessages')) {
|
||||
cookies.remove('hasHiddenSystemMessages');
|
||||
} else if (window.localStorage.getItem('hasHiddenSystemMessages')) {
|
||||
window.localStorage.removeItem('hasHiddenSystemMessages');
|
||||
} else {
|
||||
cookies.set('hasHiddenSystemMessages', 'true');
|
||||
window.localStorage.setItem('hasHiddenSystemMessages', 'true');
|
||||
}
|
||||
},
|
||||
'click .js-apply-user-settings'(event, templateInstance) {
|
||||
@@ -283,14 +280,14 @@ Template.changeSettingsPopup.events({
|
||||
if (currentUser) {
|
||||
Meteor.call('changeLimitToShowCardsCount', minLimit);
|
||||
} else {
|
||||
cookies.set('limitToShowCardsCount', minLimit);
|
||||
window.localStorage.setItem('limitToShowCardsCount', minLimit);
|
||||
}
|
||||
}
|
||||
if (!isNaN(startDay)) {
|
||||
if (currentUser) {
|
||||
Meteor.call('changeStartDayOfWeek', startDay);
|
||||
} else {
|
||||
cookies.set('startDayOfWeek', startDay);
|
||||
window.localStorage.setItem('startDayOfWeek', startDay);
|
||||
}
|
||||
}
|
||||
Popup.back();
|
||||
|
||||
+14
-13
@@ -1,43 +1,44 @@
|
||||
import { Cookies } from 'meteor/ostrio:cookies';
|
||||
const cookies = new Cookies();
|
||||
|
||||
Utils = {
|
||||
setBoardView(view) {
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
Meteor.user().setBoardView(view);
|
||||
} else if (view === 'board-view-swimlanes') {
|
||||
cookies.set('boardView', 'board-view-swimlanes'); //true
|
||||
window.localStorage.setItem('boardView', 'board-view-swimlanes'); //true
|
||||
location.reload();
|
||||
} else if (view === 'board-view-lists') {
|
||||
cookies.set('boardView', 'board-view-lists'); //true
|
||||
window.localStorage.setItem('boardView', 'board-view-lists'); //true
|
||||
location.reload();
|
||||
} else if (view === 'board-view-cal') {
|
||||
cookies.set('boardView', 'board-view-cal'); //true
|
||||
window.localStorage.setItem('boardView', 'board-view-cal'); //true
|
||||
location.reload();
|
||||
} else {
|
||||
cookies.set('boardView', 'board-view-swimlanes'); //true
|
||||
window.localStorage.setItem('boardView', 'board-view-swimlanes'); //true
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
|
||||
unsetBoardView() {
|
||||
cookies.remove('boardView');
|
||||
cookies.remove('collapseSwimlane');
|
||||
window.localStorage.removeItem('boardView');
|
||||
window.localStorage.removeItem('collapseSwimlane');
|
||||
},
|
||||
|
||||
boardView() {
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).boardView;
|
||||
} else if (cookies.get('boardView') === 'board-view-swimlanes') {
|
||||
} else if (
|
||||
window.localStorage.getItem('boardView') === 'board-view-swimlanes'
|
||||
) {
|
||||
return 'board-view-swimlanes';
|
||||
} else if (cookies.get('boardView') === 'board-view-lists') {
|
||||
} else if (
|
||||
window.localStorage.getItem('boardView') === 'board-view-lists'
|
||||
) {
|
||||
return 'board-view-lists';
|
||||
} else if (cookies.get('boardView') === 'board-view-cal') {
|
||||
} else if (window.localStorage.getItem('boardView') === 'board-view-cal') {
|
||||
return 'board-view-cal';
|
||||
} else {
|
||||
cookies.set('boardView', 'board-view-swimlanes'); //true
|
||||
window.localStorage.setItem('boardView', 'board-view-swimlanes'); //true
|
||||
location.reload();
|
||||
return 'board-view-swimlanes';
|
||||
}
|
||||
|
||||
+22
-6
@@ -242,12 +242,6 @@ services:
|
||||
# https://github.com/wekan/wekan/pull/2560
|
||||
- RICHER_CARD_COMMENT_EDITOR=false
|
||||
#---------------------------------------------------------------
|
||||
# ==== MOUSE SCROLL ====
|
||||
# https://github.com/wekan/wekan/issues/2949
|
||||
- SCROLLINERTIA=0
|
||||
- SCROLLAMOUNT=auto
|
||||
- SCROLLDELTAFACTOR=auto
|
||||
#---------------------------------------------------------------
|
||||
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
|
||||
# https://github.com/wekan/wekan/issues/2518
|
||||
- CARD_OPENED_WEBHOOK_ENABLED=false
|
||||
@@ -329,6 +323,9 @@ services:
|
||||
# ==== Debug OIDC OAuth2 etc ====
|
||||
#- DEBUG=true
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 ORACLE on premise identity manager OIM ====
|
||||
#- ORACLE_OIM_ENABLED=true
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 AZURE ====
|
||||
# https://github.com/wekan/wekan/wiki/Azure
|
||||
# 1) Register the application with Azure. Make sure you capture
|
||||
@@ -336,6 +333,8 @@ services:
|
||||
# 2) Configure the environment variables. This differs slightly
|
||||
# by installation type, but make sure you have the following:
|
||||
#- OAUTH2_ENABLED=true
|
||||
# Use OAuth2 ADFS additional changes. Also needs OAUTH2_ENABLED=true setting.
|
||||
#- OAUTH2_ADFS_ENABLED=false
|
||||
# OAuth2 login style: popup or redirect.
|
||||
#- OAUTH2_LOGIN_STYLE=redirect
|
||||
# Application GUID captured during app registration:
|
||||
@@ -605,6 +604,23 @@ services:
|
||||
# Hide password login form
|
||||
# - PASSWORD_LOGIN_ENABLED=true
|
||||
#-------------------------------------------------------------------
|
||||
#- CAS_ENABLED=true
|
||||
#- CAS_BASE_URL=https://cas.example.com/cas
|
||||
#- CAS_LOGIN_URL=https://cas.example.com/login
|
||||
#- CAS_VALIDATE_URL=https://cas.example.com/cas/p3/serviceValidate
|
||||
#---------------------------------------------------------------------
|
||||
#- SAML_ENABLED=true
|
||||
#- SAML_PROVIDER=
|
||||
#- SAML_ENTRYPOINT=
|
||||
#- SAML_ISSUER=
|
||||
#- SAML_CERT=
|
||||
#- SAML_IDPSLO_REDIRECTURL=
|
||||
#- SAML_PRIVATE_KEYFILE=
|
||||
#- SAML_PUBLIC_CERTFILE=
|
||||
#- SAML_IDENTIFIER_FORMAT=
|
||||
#- SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE=
|
||||
#- SAML_ATTRIBUTES=
|
||||
#---------------------------------------------------------------------
|
||||
depends_on:
|
||||
- wekandb
|
||||
|
||||
|
||||
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+15
-1
@@ -337,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "No label",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "No member",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Full Name",
|
||||
@@ -354,6 +359,7 @@
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
@@ -398,6 +404,7 @@
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
@@ -420,6 +427,8 @@
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -465,7 +474,7 @@
|
||||
"search": "Search",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -505,6 +514,11 @@
|
||||
"upload": "Upload",
|
||||
"upload-avatar": "Upload an avatar",
|
||||
"uploaded-avatar": "Uploaded an avatar",
|
||||
"custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL",
|
||||
"custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL",
|
||||
"custom-login-logo-image-url": "Custom Login Logo Image URL",
|
||||
"custom-login-logo-link-url": "Custom Login Logo Link URL",
|
||||
"text-below-custom-login-logo": "Text below Custom Login Logo",
|
||||
"username": "Username",
|
||||
"view-it": "View it",
|
||||
"warn-list-archived": "warning: this card is in an list at Archive",
|
||||
|
||||
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+220
-206
@@ -1,45 +1,45 @@
|
||||
{
|
||||
"accept": "تایید",
|
||||
"act-activity-notify": "اعلان فعالیت",
|
||||
"act-addAttachment": "ضمیمه __attachment__ را به کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-deleteAttachment": "ضمیمه __attachment__ را از کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ حذف کرد",
|
||||
"act-addSubtask": "زیر وظیفه __subtask__ را به کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-addLabel": "برچسب __label__ را به کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-addedLabel": "برچسب __label__ را به کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-removeLabel": "برچسب __label__ را از کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ حذف کرد",
|
||||
"act-removedLabel": "برچسب __label__ را از کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ حذف کرد",
|
||||
"act-addChecklist": "سیاهه __checklist__ را به کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-addChecklistItem": "چک لیست __checklistItem__ را به سیاهه __checklist__ در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-removeChecklist": "سیاهه __checklist__ را از کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ حذف کرد",
|
||||
"act-removeChecklistItem": "چک لیست __checklistItem__ را از سیاهه __checkList__ در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ حذف کرد",
|
||||
"act-checkedItem": "چک لیست __checklistItem__ را از سیاهه __checklist__ در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ تیک زد",
|
||||
"act-uncheckedItem": "چک لیست __checklistItem__ را از سیاهه __checklist__ در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ بدونِ تیک کرد",
|
||||
"act-completeChecklist": "سیاهه __checklist__ را در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ کامل کرد",
|
||||
"act-uncompleteChecklist": "سیاهه __checklist__ را در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ ناقص کرد",
|
||||
"act-addComment": "روی کارت __card__ نظر داد: __comment__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__",
|
||||
"act-editComment": "نظر روی کارت __card__ را ویرایش کرد: __comment__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__",
|
||||
"act-deleteComment": "نظر روی کارت __card__ را حذف کرد: __comment__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__",
|
||||
"act-createBoard": "برد __board__ را ایجاد کرد",
|
||||
"act-createSwimlane": "مسیر شناور __swimlane__ را در برد __board__ ایجاد کرد",
|
||||
"act-createCard": "کارت __card__ را در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ ایجاد کرد",
|
||||
"act-createCustomField": "فیلد شخصی __customField__ را در برد __board__ ایجاد کرد",
|
||||
"act-deleteCustomField": "فیلد شخصی __customField__ را در برد __board__ حذف کرد",
|
||||
"act-setCustomField": "فیلد شخصی __customField__ را ویرایش کرد: __customFieldValue__ در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__",
|
||||
"act-createList": "لیست __list__ را به برد __board__ اضافه کرد",
|
||||
"act-addBoardMember": "عضو __member__ را به برد __board__ اضافه کرد",
|
||||
"act-archivedBoard": "برد __board__ را بایگانی کرد",
|
||||
"act-archivedCard": "کارت __card__ را در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ بایگانی کرد",
|
||||
"act-archivedList": "لیست __list__ را در مسیر شناور __swimlane__ در برد __board__ بایگانی کرد",
|
||||
"act-archivedSwimlane": "مسیر شناور __swimlane__ را در برد __board__ بایگانی کرد",
|
||||
"act-importBoard": "برد __board__ را وارد کرد",
|
||||
"act-importCard": "کارت __card__ را به لیست __list__ در مسیر شناور __swimlane__ در برد __board__ وارد کرد",
|
||||
"act-importList": "لیست __list__ را به مسیر شناور __swimlane__ در برد __board__ وارد کرد",
|
||||
"act-joinMember": "عضو __member__ را به کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-moveCard": "کارت __card__ را در برد __board__ از لیست __oldList__ در مسیر شناور __oldSwimlane__ به لیست __list__ در مسیر شناور __swimlane__ منتقل کرد",
|
||||
"act-moveCardToOtherBoard": "کارت __card__ را از لیست __oldList__ در مسیر شناور __oldSwimlane__ در برد __oldBoard__ به لیست __list__ در مسیر شناور __swimlane__ در برد __board__ منتقل کرد",
|
||||
"act-addAttachment": "ضمیمه __attachment__ به کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه شده",
|
||||
"act-deleteAttachment": "ضمیمه __attachment__ از کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ حذف شده",
|
||||
"act-addSubtask": "زیروظیفه __subtask__ به کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه شده",
|
||||
"act-addLabel": "لیبل __label__ به کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه شده",
|
||||
"act-addedLabel": "لیبل __label__ به کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه شده",
|
||||
"act-removeLabel": "لیبل __label__ از کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ حذف شده",
|
||||
"act-removedLabel": "لیبل __label__ از کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ حذف شده",
|
||||
"act-addChecklist": "چکلیست __checklist__ به کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه شده",
|
||||
"act-addChecklistItem": "آیتم چکلیست __checklistItem__ به چکلیست __checklist__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه شده",
|
||||
"act-removeChecklist": "چکلیست __checklist__ از کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ حذف شده",
|
||||
"act-removeChecklistItem": "آیتم چکلیست __checklistItem__ از چکلیست __checkList__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ حذف شده",
|
||||
"act-checkedItem": "آیتم چکلیست __checklistItem__ از چکلیست __checklist__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ انتخابشده",
|
||||
"act-uncheckedItem": "آیتم چکلیست __checklistItem__ از چکلیست __checklist__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ از حالت انتخاب خارج شده",
|
||||
"act-completeChecklist": "چکلیست __checklist__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ کامل شده",
|
||||
"act-uncompleteChecklist": "چکلیست __checklist__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ ناتمامشده",
|
||||
"act-addComment": "روی کارت __card__ نظر داد: __comment__ در لیست __list__ در مسیر __swimlane__ در برد __board__",
|
||||
"act-editComment": "نظر روی کارت __card__ ویرایش شده: __comment__ در لیست __list__ در مسیر __swimlane__ در برد __board__",
|
||||
"act-deleteComment": "نظر روی کارت __card__ حذفشده: __comment__ در لیست __list__ در مسیر __swimlane__ در برد __board__",
|
||||
"act-createBoard": "برد __board__ ایجاد شده",
|
||||
"act-createSwimlane": "مسیر __swimlane__ در برد __board__ ایجاد شده",
|
||||
"act-createCard": "کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ ایجاد شده",
|
||||
"act-createCustomField": "فیلد سفارشی __customField__ در برد __board__ ایجاد شده",
|
||||
"act-deleteCustomField": "فیلد سفارشی __customField__ در برد __board__ حذف شده",
|
||||
"act-setCustomField": "فیلد سفارشی __customField__ ویرایش شده: __customFieldValue__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__",
|
||||
"act-createList": "لیست __list__ به برد __board__ اضافه شده",
|
||||
"act-addBoardMember": "عضو __member__ به برد __board__ اضافه شده",
|
||||
"act-archivedBoard": "برد __board__ به آرشیو منتقل شد",
|
||||
"act-archivedCard": "کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ آرشیو شده",
|
||||
"act-archivedList": "لیست __list__ در مسیر __swimlane__ در برد __board__ آرشیو شده",
|
||||
"act-archivedSwimlane": "مسیر __swimlane__ \\در برد __board__ آرشیو شده",
|
||||
"act-importBoard": "برد __board__ وارد شده",
|
||||
"act-importCard": "کارت __card__ را به لیست __list__ در مسیر __swimlane__ در برد __board__ وارد کرد",
|
||||
"act-importList": "لیست __list__ را به مسیر __swimlane__ در برد __board__ وارد کرد",
|
||||
"act-joinMember": "عضو __member__ را به کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه کرد",
|
||||
"act-moveCard": "کارت __card__ را در برد __board__ از لیست __oldList__ در مسیر __oldSwimlane__ به لیست __list__ در مسیر __swimlane__ منتقل کرد",
|
||||
"act-moveCardToOtherBoard": "کارت __card__ را از لیست __oldList__ در مسیر __oldSwimlane__ در برد __oldBoard__ به لیست __list__ در مسیر __swimlane__ در برد __board__ منتقل کرد",
|
||||
"act-removeBoardMember": "عضو __member__ را از برد __board__ حذف کرد",
|
||||
"act-restoredCard": "کارت __card__ را به لیست __list__ در مسیر شناور __swimlane__ در برد __board__ بازگرداند",
|
||||
"act-unjoinMember": "عضو __member__ را از کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ حذف کرد",
|
||||
"act-restoredCard": "کارت __card__ را به لیست __list__ در مسیر __swimlane__ در برد __board__ بازگرداند",
|
||||
"act-unjoinMember": "عضو __member__ را از کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ حذف کرد",
|
||||
"act-withBoardTitle": "__board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "اعمال",
|
||||
@@ -49,7 +49,7 @@
|
||||
"activity-archived": "%s به آرشیو انتقال یافت",
|
||||
"activity-attached": "%s به %s پیوست شد",
|
||||
"activity-created": "%s ایجاد شد",
|
||||
"activity-customfield-created": "%s فیلدشخصی ایجاد شد",
|
||||
"activity-customfield-created": " فیلد سفارشی %s ایجاد شد",
|
||||
"activity-excluded": "%s از %s مستثنی گردید",
|
||||
"activity-imported": "%s از %s وارد %s شد",
|
||||
"activity-imported-board": "%s از %s وارد شد",
|
||||
@@ -60,38 +60,38 @@
|
||||
"activity-sent": "ارسال %s به %s",
|
||||
"activity-unjoined": "قطع اتصال %s",
|
||||
"activity-subtask-added": "زیروظیفه به %s اضافه شد",
|
||||
"activity-checked-item": "چک شده %s در چک لیست %s از %s",
|
||||
"activity-unchecked-item": "چک نشده %s در چک لیست %s از %s",
|
||||
"activity-checklist-added": "سیاهه به %s اضافه شد",
|
||||
"activity-checklist-removed": "از چک لیست حذف گردید",
|
||||
"activity-checklist-completed": "چکلیست انجام شده %s از %s",
|
||||
"activity-checklist-uncompleted": "تمام نشده ها در چک لیست %s از %s",
|
||||
"activity-checklist-item-added": "added checklist item to '%s' in %s",
|
||||
"activity-checklist-item-removed": "حذف شده از چک لیست '%s' در %s",
|
||||
"activity-checked-item": " %s مورد در چکلیست %s از %s انتخابشده",
|
||||
"activity-unchecked-item": " %s مورد در چکلیست %s از %s انتخابنشده",
|
||||
"activity-checklist-added": "چکلیست به %s اضافه شد",
|
||||
"activity-checklist-removed": "یک چکلیست از %s حذف گردید",
|
||||
"activity-checklist-completed": "چکلیست %s از %s کامل شدهاست",
|
||||
"activity-checklist-uncompleted": "چکلیست %s از %s کامل نشدهاست",
|
||||
"activity-checklist-item-added": "آیتم چکلیست به '%s' در %s اضافه شده",
|
||||
"activity-checklist-item-removed": "یک آیتم چکلیست از '%s' در %s حذف شده.",
|
||||
"add": "افزودن",
|
||||
"activity-checked-item-card": "چک شده %s در چک لیست %s",
|
||||
"activity-unchecked-item-card": "چک نشده %s در چک لیست %s",
|
||||
"activity-checklist-completed-card": "سیاهه __checklist__ را در کارت __card__ در لیست __list__ در مسیر شناور __swimlane__ در برد __board__ کامل کرد",
|
||||
"activity-checklist-uncompleted-card": "چک لیست تمام نشده %s",
|
||||
"activity-editComment": "نظر ویرایش شد %s",
|
||||
"activity-deleteComment": "نظر حذف شد %s",
|
||||
"activity-checked-item-card": " %s در چکلیست %s انتخابشده",
|
||||
"activity-unchecked-item-card": "%s در چکلیست %s از حالت انتخاب خارج شده",
|
||||
"activity-checklist-completed-card": "چکلیست __checklist__ در کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ کامل شده",
|
||||
"activity-checklist-uncompleted-card": "چکلیست %s تمام نشده ",
|
||||
"activity-editComment": "%s نظر ویرایش شد ",
|
||||
"activity-deleteComment": "%s نظر حذف شد ",
|
||||
"add-attachment": "افزودن ضمیمه",
|
||||
"add-board": "افزودن برد",
|
||||
"add-card": "افزودن کارت",
|
||||
"add-swimlane": "اضافه کردن مسیر شناور",
|
||||
"add-swimlane": "افزودن مسیر شنا",
|
||||
"add-subtask": "افزودن زیر وظیفه",
|
||||
"add-checklist": "افزودن چک لیست",
|
||||
"add-checklist-item": "افزودن مورد به سیاهه",
|
||||
"add-cover": "جلد کردن",
|
||||
"add-checklist": "افزودن چکلیست",
|
||||
"add-checklist-item": "افزودن مورد به چکلیست",
|
||||
"add-cover": "افزودن کاور",
|
||||
"add-label": "افزودن لیبل",
|
||||
"add-list": "افزودن لیست",
|
||||
"add-members": "افزودن اعضا",
|
||||
"added": "اضافه گردید",
|
||||
"addMemberPopup-title": "اعضا",
|
||||
"admin": "مدیر",
|
||||
"admin-desc": "امکان دیدن و ویرایش کارتها، پاک کردن کاربران و تغییر تنظیمات برای برد.",
|
||||
"admin-desc": "امکان دیدن و ویرایش کارتها، حذف اعضا و تغییرِ تنظیماتِ برد.",
|
||||
"admin-announcement": "اعلان",
|
||||
"admin-announcement-active": "اعلان سراسری فعال",
|
||||
"admin-announcement-active": "فعال کردن اعلانهای سمت سیستم",
|
||||
"admin-announcement-title": "اعلان از سوی مدیر",
|
||||
"all-boards": "تمام بردها",
|
||||
"and-n-other-card": "و __count__ کارت دیگر",
|
||||
@@ -105,22 +105,22 @@
|
||||
"archive-list": "انتقال لیست به آرشیو",
|
||||
"archive-swimlane": "انتقال مسیر به آرشیو",
|
||||
"archive-selection": "انتقال انتخاب شده ها به آرشیو",
|
||||
"archiveBoardPopup-title": "انتقال برد به آرشیو؟",
|
||||
"archived-items": "بایگانی",
|
||||
"archived-boards": "برد های داخل آرشیو",
|
||||
"archiveBoardPopup-title": "آیا برد به آرشیو منتقل شود؟",
|
||||
"archived-items": "آرشیو",
|
||||
"archived-boards": "بردهای داخل آرشیو",
|
||||
"restore-board": "بازیابی برد",
|
||||
"no-archived-boards": "هیچ بردی داخل آرشیو نیست",
|
||||
"archives": "بایگانی",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"assign-member": "تعیین عضو",
|
||||
"no-archived-boards": "هیچ بردی داخل آرشیو نیست.",
|
||||
"archives": "آرشیو",
|
||||
"template": "قالب",
|
||||
"templates": "قالبها",
|
||||
"assign-member": "انتصاب عضو",
|
||||
"attached": "ضمیمه شده",
|
||||
"attachment": "ضمیمه",
|
||||
"attachment-delete-pop": "حذف پیوست دایمی و بی بازگشت خواهد بود.",
|
||||
"attachmentDeletePopup-title": "آیا می خواهید ضمیمه را حذف کنید؟",
|
||||
"attachments": "ضمائم",
|
||||
"auto-watch": "اضافه شدن خودکار دیدهبانی بردها زمانی که ایجاد میشوند",
|
||||
"avatar-too-big": "تصویر کاربر بسیار بزرگ است ـ حداکثر۷۰ کیلوبایت ـ",
|
||||
"avatar-too-big": "آواتار بسیار بزرگ است (حداکثر 70 کیلوبایت)",
|
||||
"back": "بازگشت",
|
||||
"board-change-color": "تغییر رنگ",
|
||||
"board-nb-stars": "%s ستاره",
|
||||
@@ -130,73 +130,73 @@
|
||||
"boardChangeColorPopup-title": "تغییر پس زمینه برد",
|
||||
"boardChangeTitlePopup-title": "تغییر نام برد",
|
||||
"boardChangeVisibilityPopup-title": "تغییر وضعیت نمایش",
|
||||
"boardChangeWatchPopup-title": "تغییر دیده بانی",
|
||||
"boardMenuPopup-title": "Board Settings",
|
||||
"boardChangeWatchPopup-title": "تغییر دیدهبانی",
|
||||
"boardMenuPopup-title": "تنظیمات برد",
|
||||
"boardChangeViewPopup-title": "نمایش برد",
|
||||
"boards": "بردها",
|
||||
"board-view": "نمایش برد",
|
||||
"board-view-cal": "تقویم",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-collapse": "بستن",
|
||||
"board-view-lists": "فهرستها",
|
||||
"bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
|
||||
"board-view-swimlanes": "مسیرها",
|
||||
"board-view-collapse": "جمع کردن",
|
||||
"board-view-lists": "لیستها",
|
||||
"bucket-example": "برای مثال چیزی شبیه \"لیست سطل\"",
|
||||
"cancel": "انصراف",
|
||||
"card-archived": "این کارت به آرشیو انتقال داده شد",
|
||||
"board-archived": "این برد به آرشیو انتقال یافت",
|
||||
"card-archived": "این کارت به آرشیو انتقال دادهشدهاست.",
|
||||
"board-archived": "این برد به آرشیو انتقال دادهشدهاست.",
|
||||
"card-comments-title": "این کارت دارای %s نظر است.",
|
||||
"card-delete-notice": "حذف دائمی. تمامی موارد مرتبط با این کارت از بین خواهند رفت.",
|
||||
"card-delete-pop": "همه اقدامات از این پردازه حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
|
||||
"card-delete-suggest-archive": "شما می توانید کارت را به بایگانی منتقل کنید تا آن را از هیئت مدیره حذف کنید و فعالیت را حفظ کنید.",
|
||||
"card-due": "تا",
|
||||
"card-due-on": "تا",
|
||||
"card-due": "موعد",
|
||||
"card-due-on": "موعد تا",
|
||||
"card-spent": "زمان صرف شده",
|
||||
"card-edit-attachments": "ویرایش ضمائم",
|
||||
"card-edit-custom-fields": "ویرایش فیلدهای شخصی",
|
||||
"card-edit-labels": "ویرایش برچسب",
|
||||
"card-edit-custom-fields": "ویرایش فیلدهای سفارشی",
|
||||
"card-edit-labels": "ویرایش لیبلها",
|
||||
"card-edit-members": "ویرایش اعضا",
|
||||
"card-labels-title": "تغییر برچسب کارت",
|
||||
"card-members-title": "افزودن یا حذف اعضا از کارت.",
|
||||
"card-labels-title": "لیبلهای کارت را تغییر بده.",
|
||||
"card-members-title": "اعضا ی برد را از/به کارت حذف/اضافه کنید.",
|
||||
"card-start": "شروع",
|
||||
"card-start-on": "شروع از",
|
||||
"cardAttachmentsPopup-title": "ضمیمه از",
|
||||
"cardCustomField-datePopup-title": "تغییر تاریخ",
|
||||
"cardCustomFieldsPopup-title": "ویرایش فیلدهای شخصی",
|
||||
"cardStartVotingPopup-title": "شروع به رای",
|
||||
"cardCustomFieldsPopup-title": "ویرایش فیلدهای سفارشی",
|
||||
"cardStartVotingPopup-title": "شروع یک رایگیری",
|
||||
"positiveVoteMembersPopup-title": "طرفداران",
|
||||
"negativeVoteMembersPopup-title": "مخالفان",
|
||||
"card-edit-voting": "ویرایش رای",
|
||||
"editVoteEndDatePopup-title": "تغییر تاریخ پایان رای گیری",
|
||||
"card-edit-voting": "ویرایش رایگیری",
|
||||
"editVoteEndDatePopup-title": "تغییر تاریخ پایان رایگیری",
|
||||
"allowNonBoardMembers": "اجازه دادن به همه کاربران وارد شده",
|
||||
"vote-question": "سوال رای گیری",
|
||||
"vote-public": "نمایش چه کسی به چه رای داده است",
|
||||
"vote-for-it": "برای این",
|
||||
"vote-against": "بر خلاف",
|
||||
"deleteVotePopup-title": "رای حذف شود ؟",
|
||||
"vote-delete-pop": "حذف کردن به صورت دائمی هست و قابل برگشت نیست.",
|
||||
"deleteVotePopup-title": "رایگیری حذف شود؟",
|
||||
"vote-delete-pop": "حذف کردن به صورت دائمی هست و قابل برگشت نیست. تمام اطلاعات مرتبط با این رایگیری حذف خواهدشد.",
|
||||
"cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
|
||||
"cardDetailsActionsPopup-title": "اعمال کارت",
|
||||
"cardLabelsPopup-title": "برچسب ها",
|
||||
"cardLabelsPopup-title": "لیبل ها",
|
||||
"cardMembersPopup-title": "اعضا",
|
||||
"cardMorePopup-title": "بیشتر",
|
||||
"cardTemplatePopup-title": "Create template",
|
||||
"cardTemplatePopup-title": "ایجاد قالب",
|
||||
"cards": "کارتها",
|
||||
"cards-count": "کارتها",
|
||||
"casSignIn": "ورود با استفاده از CAS",
|
||||
"cardType-card": "کارت",
|
||||
"cardType-linkedCard": "کارتهای مرتبط",
|
||||
"cardType-linkedBoard": "برد مرتبط",
|
||||
"cardType-linkedCard": "کارتهای لینکشده",
|
||||
"cardType-linkedBoard": "برد لینکشده",
|
||||
"change": "تغییر",
|
||||
"change-avatar": "تغییر تصویر",
|
||||
"change-avatar": "تغییر آواتار",
|
||||
"change-password": "تغییر کلمه عبور",
|
||||
"change-permissions": "تغییر دسترسیها",
|
||||
"change-settings": "تغییر تنظیمات",
|
||||
"changeAvatarPopup-title": "تغییر تصویر",
|
||||
"changeAvatarPopup-title": "تغییر آواتار",
|
||||
"changeLanguagePopup-title": "تغییر زبان",
|
||||
"changePasswordPopup-title": "تغییر کلمه عبور",
|
||||
"changePermissionsPopup-title": "تغییر دسترسیها",
|
||||
"changeSettingsPopup-title": "تغییر تنظیمات",
|
||||
"subtasks": "زیر وظیفه",
|
||||
"checklists": "سیاههها",
|
||||
"checklists": "چکلیستها",
|
||||
"click-to-star": "با کلیک کردن ستاره بدهید",
|
||||
"click-to-unstar": "با کلیک کردن ستاره را کم کنید",
|
||||
"clipboard": "ذخیره در حافظه ویا بردار-رهاکن",
|
||||
@@ -236,25 +236,25 @@
|
||||
"no-comments": "هیچ کامنتی موجود نیست",
|
||||
"no-comments-desc": "نظرات و فعالیت ها را نمی توان دید.",
|
||||
"worker": "کارگر",
|
||||
"worker-desc": "تنها میتوانید کارت ها را جابجا کنید، این را به یک کارت اضافه کنید.",
|
||||
"worker-desc": "تنها میتوانید کارتها را جابجا کنید، آنها را به خود محول کنید و نظر دهید.",
|
||||
"computer": "رایانه",
|
||||
"confirm-subtask-delete-dialog": "از حذف این زیر وظیفه اطمینان دارید؟",
|
||||
"confirm-checklist-delete-dialog": "مطمئنا چک لیست پاک شود؟",
|
||||
"confirm-checklist-delete-dialog": "آیا مطمئنید میخواهید چکلیست را حذف کنید؟",
|
||||
"copy-card-link-to-clipboard": "درج پیوند کارت در حافظه",
|
||||
"linkCardPopup-title": "ارتباط دادن کارت",
|
||||
"searchElementPopup-title": "جستجو",
|
||||
"copyCardPopup-title": "کپی کارت",
|
||||
"copyChecklistToManyCardsPopup-title": "کپی قالب کارت به کارتهای متعدد",
|
||||
"copyChecklistToManyCardsPopup-title": "کپی قالب چکلیست به کارتهای متعدد",
|
||||
"copyChecklistToManyCardsPopup-instructions": "عنوان و توضیحات کارت مقصد در این قالب JSON",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "ایجاد",
|
||||
"createBoardPopup-title": "ایجاد برد",
|
||||
"chooseBoardSourcePopup-title": "بارگذاری برد",
|
||||
"createLabelPopup-title": "ایجاد برچسب",
|
||||
"createLabelPopup-title": "ایجاد لیبل",
|
||||
"createCustomField": "ایجاد فیلد",
|
||||
"createCustomFieldPopup-title": "ایجاد فیلد",
|
||||
"current": "جاری",
|
||||
"custom-field-delete-pop": "این اقدام فیلدشخصی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-delete-pop": "این اقدام فیلد سفارشی را بهمراه تمامی تاریخچه آن از کارت ها پاک می کند و برگشت پذیر نمی باشد",
|
||||
"custom-field-checkbox": "جعبه انتخابی",
|
||||
"custom-field-currency": "واحد پولی",
|
||||
"custom-field-currency-option": "کد واحد پولی",
|
||||
@@ -269,18 +269,18 @@
|
||||
"custom-fields": "فیلدهای شخصی",
|
||||
"date": "تاریخ",
|
||||
"decline": "رد",
|
||||
"default-avatar": "تصویر پیش فرض",
|
||||
"default-avatar": "آواتار پیشفرض",
|
||||
"delete": "حذف",
|
||||
"deleteCustomFieldPopup-title": "آیا فیلدشخصی پاک شود؟",
|
||||
"deleteLabelPopup-title": "آیا می خواهید برچسب را حذف کنید؟",
|
||||
"deleteCustomFieldPopup-title": "آیا فیلد سفارشی پاک شود؟",
|
||||
"deleteLabelPopup-title": "آیا می خواهید لیبل را حذف کنید؟",
|
||||
"description": "توضیحات",
|
||||
"disambiguateMultiLabelPopup-title": "عمل ابهام زدایی از برچسب",
|
||||
"disambiguateMultiLabelPopup-title": "عمل ابهام زدایی از لیبل",
|
||||
"disambiguateMultiMemberPopup-title": "عمل ابهام زدایی از کاربر",
|
||||
"discard": "لغو",
|
||||
"done": "انجام شده",
|
||||
"download": "دریافت",
|
||||
"edit": "ویرایش",
|
||||
"edit-avatar": "تغییر تصویر",
|
||||
"edit-avatar": "تغییر آواتار",
|
||||
"edit-profile": "ویرایش پروفایل",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
@@ -288,7 +288,7 @@
|
||||
"editCardDueDatePopup-title": "تغییر تاریخ پایان",
|
||||
"editCustomFieldPopup-title": "ویرایش فیلد",
|
||||
"editCardSpentTimePopup-title": "تغییر زمان صرف شده",
|
||||
"editLabelPopup-title": "تغیر برچسب",
|
||||
"editLabelPopup-title": "تغیر لیبل",
|
||||
"editNotificationPopup-title": "اصلاح اعلان",
|
||||
"editProfilePopup-title": "ویرایش پروفایل",
|
||||
"email": "پست الکترونیک",
|
||||
@@ -333,20 +333,25 @@
|
||||
"list-label-short-modifiedAt": "(L)",
|
||||
"list-label-short-title": "(N)",
|
||||
"list-label-short-sort": "(M)",
|
||||
"filter": "صافی ـ فیلتر ـ",
|
||||
"filter": "فیلتر",
|
||||
"filter-cards": "فیلتر کارتها یا لیستها",
|
||||
"list-filter-label": "فیلتر لیست بر اساس عنوان",
|
||||
"filter-clear": "حذف صافی ـ فیلتر ـ",
|
||||
"filter-no-label": "بدون برچسب",
|
||||
"filter-clear": "حذف فیلتر",
|
||||
"filter-labels-label": "فیلتر کردن با لیبل",
|
||||
"filter-no-label": "بدون لیبل",
|
||||
"filter-member-label": "فیلتر کردن با عضو",
|
||||
"filter-no-member": "بدون عضو",
|
||||
"filter-no-assignee": "الحاق نشده",
|
||||
"filter-no-custom-fields": "هیچ فیلدشخصی ای وجود ندارد",
|
||||
"filter-assignee-label": "فیلتر کردن با مسئول",
|
||||
"filter-no-assignee": "منتصبنشده",
|
||||
"filter-custom-fields-label": "فیلتر کردن با فیلدهای سفارشی",
|
||||
"filter-no-custom-fields": "هیچ فیلد سفارشی ای وجود ندارد",
|
||||
"filter-show-archive": "نمایش لیستهای آرشیو شده",
|
||||
"filter-hide-empty": "مخفی کردن لیستهای خالی",
|
||||
"filter-on": "صافی ـ فیلتر ـ فعال است",
|
||||
"filter-on-desc": "شما درحال صافی ـ فیلتر ـ کارتهای این برد هستید. برای ویرایش فیلتر کلیک نمایید.",
|
||||
"filter-to-selection": "صافی ـ فیلتر ـ برای موارد انتخابی",
|
||||
"advanced-filter-label": "صافی ـ فیلتر ـ پیشرفته",
|
||||
"filter-on": "فیلتر فعال است",
|
||||
"filter-on-desc": "شما درحال فیلتر کارتهای این برد هستید. برای ویرایش فیلتر کلیک نمایید.",
|
||||
"filter-to-selection": "فیلتر برای موارد انتخابی",
|
||||
"other-filters-label": "فیلترهای دیگر",
|
||||
"advanced-filter-label": "فیلتر پیشرفته",
|
||||
"advanced-filter-description": "فیلتر پیشرفته اجازه می دهد تا برای نوشتن رشته حاوی اپراتورهای زیر: ==! = <=> = && || () یک فضای به عنوان یک جداساز بین اپراتورها استفاده می شود. با تایپ کردن نام ها و مقادیر آنها می توانید برای تمام زمینه های سفارشی فیلتر کنید. به عنوان مثال: Field1 == Value1. نکته: اگر فیلدها یا مقادیر حاوی فضاها باشند، شما باید آنها را به یک نقل قول کپسول کنید. برای مثال: 'فیلد 1' == 'مقدار 1'. برای تک تک کاراکترهای کنترل (\\\\) که می توانید از آنها استفاده کنید، می توانید از \\ استفاده کنید. به عنوان مثال: Field1 == I \\ 'm. همچنین شما می توانید شرایط مختلف را ترکیب کنید. برای مثال: F1 == V1 || F1 == V2. به طور معمول همه اپراتورها از چپ به راست تفسیر می شوند. شما می توانید سفارش را با قرار دادن براکت تغییر دهید. برای مثال: F1 == V1 && (F2 == V2 || F2 == V3). همچنین می توانید فیلدهای متنی را با استفاده از regex جستجو کنید: F1 == /Tes.*/i",
|
||||
"fullname": "نام و نام خانوادگی",
|
||||
"header-logo-title": "بازگشت به صفحه بردها.",
|
||||
@@ -354,6 +359,7 @@
|
||||
"headerBarCreateBoardPopup-title": "ایجاد برد",
|
||||
"home": "خانه",
|
||||
"import": "وارد کردن",
|
||||
"impersonate-user": "جعل هویت کاربر",
|
||||
"link": "ارتباط",
|
||||
"import-board": "وارد کردن برد",
|
||||
"import-board-c": "وارد کردن برد",
|
||||
@@ -378,14 +384,14 @@
|
||||
"initials": "تخصیصات اولیه",
|
||||
"invalid-date": "تاریخ نامعتبر",
|
||||
"invalid-time": "زمان نامعتبر",
|
||||
"invalid-user": "کاربر نامعتیر",
|
||||
"invalid-user": "کاربر نامعتبر",
|
||||
"joined": "متصل",
|
||||
"just-invited": "هم اکنون، شما به این برد دعوت شدهاید.",
|
||||
"keyboard-shortcuts": "میانبر کلیدها",
|
||||
"label-create": "ایجاد برچسب",
|
||||
"label-default": "%s برچسب(پیش فرض)",
|
||||
"label-delete-pop": "این اقدام، برچسب را از همه کارتها پاک خواهد کرد و تاریخچه آن را نیز از بین میبرد.",
|
||||
"labels": "برچسب ها",
|
||||
"label-create": "ایجاد لیبل",
|
||||
"label-default": "%s لیبل(پیش فرض)",
|
||||
"label-delete-pop": "این اقدام، لیبل را از همه کارتها پاک خواهد کرد و تاریخچه آن را نیز از بین میبرد.",
|
||||
"labels": "لیبل ها",
|
||||
"language": "زبان",
|
||||
"last-admin-desc": "شما نمی توانید نقش ـroleـ را تغییر دهید چراکه باید حداقل یک مدیری وجود داشته باشد.",
|
||||
"leave-board": "خروج از برد",
|
||||
@@ -398,8 +404,9 @@
|
||||
"list-select-cards": "انتخاب تمام کارت های این لیست",
|
||||
"set-color-list": "انتخاب رنگ",
|
||||
"listActionPopup-title": "لیست اقدامات",
|
||||
"settingsUserPopup-title": "تنظیمات کاربر",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "اضافه کردن مسیر شناور",
|
||||
"swimlaneAddPopup-title": "اضافه کردن مسیر",
|
||||
"listImportCardPopup-title": "وارد کردن کارت Trello",
|
||||
"listImportCardsTsvPopup-title": "وارد کردن CSV/TSV اکسل",
|
||||
"listMorePopup-title": "بیشتر",
|
||||
@@ -420,6 +427,8 @@
|
||||
"moveCardToTop-title": "انتقال به بالا",
|
||||
"moveSelectionPopup-title": "حرکت مورد انتخابی",
|
||||
"multi-selection": "امکان چند انتخابی",
|
||||
"multi-selection-label": "تغییر لیبل انتخابشدهها",
|
||||
"multi-selection-member": "تغییر عضو برای انتخابشدهها",
|
||||
"multi-selection-on": "حالت چند انتخابی روشن است",
|
||||
"muted": "بی صدا",
|
||||
"muted-info": "شما هیچگاه از تغییرات این برد مطلع نخواهید شد",
|
||||
@@ -452,7 +461,7 @@
|
||||
"quick-access-description": "جهت افزودن یک برد به اینجا، آن را ستاره دار نمایید.",
|
||||
"remove-cover": "حذف کاور",
|
||||
"remove-from-board": "حذف از برد",
|
||||
"remove-label": "حذف برچسب",
|
||||
"remove-label": "حذف لیبل",
|
||||
"listDeletePopup-title": "حذف فهرست؟",
|
||||
"remove-member": "حذف عضو",
|
||||
"remove-member-from-card": "حذف از کارت",
|
||||
@@ -463,20 +472,20 @@
|
||||
"restore": "بازیابی",
|
||||
"save": "ذخیره",
|
||||
"search": "جستجو",
|
||||
"rules": "قوانین",
|
||||
"rules": "قواعد",
|
||||
"search-cards": "جستجو در عناوین، توضیحات و فیلدهای سفارشیِ کارتها/لیستها در این برد",
|
||||
"search-example": "متن مورد جستجو؟",
|
||||
"search-example": "کلمه مورد جستجو را وارد و اینتر را بزنید",
|
||||
"select-color": "انتخاب رنگ",
|
||||
"set-wip-limit-value": "تعیین بیشینه تعداد وظایف در این فهرست",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "اختصاص خود به کارت فعلی",
|
||||
"shortcut-assign-self": "انتصاب خود به کارت فعلی",
|
||||
"shortcut-autocomplete-emoji": "تکمیل خودکار شکلکها",
|
||||
"shortcut-autocomplete-members": "تکمیل خودکار کاربرها",
|
||||
"shortcut-clear-filters": "حذف تمامی صافیها ـ فیلترها ـ",
|
||||
"shortcut-close-dialog": "بستن محاوره",
|
||||
"shortcut-filter-my-cards": "کارت های من",
|
||||
"shortcut-show-shortcuts": "بالا آوردن میانبر این لیست",
|
||||
"shortcut-toggle-filterbar": "ضامن نوار جداکننده صافی ـ فیلتر ـ",
|
||||
"shortcut-toggle-filterbar": "ضامن نوار جداکننده فیلتر",
|
||||
"shortcut-toggle-sidebar": "ضامن نوار جداکننده برد",
|
||||
"show-cards-minimum-count": "نمایش تعداد کارتها اگر لیست شامل بیشتراز",
|
||||
"sidebar-open": "بازکردن جداکننده",
|
||||
@@ -501,25 +510,30 @@
|
||||
"type": "نوع",
|
||||
"unassign-member": "عدم انتصاب کاربر",
|
||||
"unsaved-description": "شما توضیحات ذخیره نشده دارید.",
|
||||
"unwatch": "عدم دیده بانی",
|
||||
"upload": "ارسال",
|
||||
"upload-avatar": "ارسال تصویر",
|
||||
"uploaded-avatar": "تصویر ارسال شد",
|
||||
"unwatch": "عدم دیدهبانی",
|
||||
"upload": "آپلود",
|
||||
"upload-avatar": "ارسال آواتار",
|
||||
"uploaded-avatar": "آواتار آپلود شد",
|
||||
"custom-top-left-corner-logo-image-url": "آدرس تصویر لوگوی سفارشی در گوشه چپ و بالا",
|
||||
"custom-top-left-corner-logo-link-url": "آدرس لینک لوگوی سفارشی در گوشه چپ و بالا",
|
||||
"custom-login-logo-image-url": "آدرس تصویر لوگوی سفارشی در لاگین",
|
||||
"custom-login-logo-link-url": "آدرس لینک لوگوی سفارشی در لاگین",
|
||||
"text-below-custom-login-logo": "متن پایین لوگوی سفارشی در فرم لاگین",
|
||||
"username": "نام کاربری",
|
||||
"view-it": "مشاهده",
|
||||
"warn-list-archived": "اخطار:این کارت در یک لیست در آرشیو موجود می باشد",
|
||||
"watch": "دیده بانی",
|
||||
"watching": "درحال دیده بانی",
|
||||
"warn-list-archived": "اخطار: این کارت در یک لیست در آرشیو موجود میباشد",
|
||||
"watch": "دیدهبانی",
|
||||
"watching": "درحال دیدهبانی",
|
||||
"watching-info": "شما از هر تغییری در این برد آگاه خواهید شد",
|
||||
"welcome-board": "به این برد خوش آمدید",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-board": "برد خوشآمدگویی",
|
||||
"welcome-swimlane": "نقطع عطف 1",
|
||||
"welcome-list1": "پایه ای ها",
|
||||
"welcome-list2": "پیشرفته",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"card-templates-swimlane": "قالبهای کارت",
|
||||
"list-templates-swimlane": "لیست قالبها",
|
||||
"board-templates-swimlane": "قالبهای برد",
|
||||
"what-to-do": "چه کاری می خواهید انجام دهید؟",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-title": "محدودی نامعتبر WIP",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "پیشخوان مدیریتی",
|
||||
@@ -538,7 +552,7 @@
|
||||
"smtp-port": "شماره درگاه ـPortـ سرور SMTP",
|
||||
"smtp-username": "نام کاربری",
|
||||
"smtp-password": "کلمه عبور",
|
||||
"smtp-tls": "پشتیبانی از SMTP",
|
||||
"smtp-tls": "پشتیبانی از TLS",
|
||||
"send-from": "از",
|
||||
"send-smtp-test": "فرستادن رایانامه آزمایشی به خود",
|
||||
"invitation-code": "کد دعوت نامه",
|
||||
@@ -549,11 +563,11 @@
|
||||
"error-invitation-code-not-exist": "چنین کد دعوتی یافت نشد",
|
||||
"error-notAuthorized": "شما مجاز به دیدن این صفحه نیستید.",
|
||||
"webhook-title": "نام وبهوک",
|
||||
"webhook-token": "توکن",
|
||||
"webhook-token": "توکن (انتخابی برای اعتبارسنجی)",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"bidirectional-webhooks": "وبهوک two-way",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"boardCardTitlePopup-title": "فیلتر موضوع کارت",
|
||||
"boardCardTitlePopup-title": "فیلتر عنوان کارت",
|
||||
"disable-webhook": "حذف این وبهوک",
|
||||
"global-webhook": "وبهوکهای سراسری",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
@@ -562,27 +576,27 @@
|
||||
"Meteor_version": "نسخه متئور",
|
||||
"MongoDB_version": "ورژن MongoDB",
|
||||
"MongoDB_storage_engine": "موتور ذخیره سازی MongoDB",
|
||||
"MongoDB_Oplog_enabled": "MongoDB Oplog فعال",
|
||||
"OS_Arch": "OS Arch",
|
||||
"OS_Cpus": "OS CPU Count",
|
||||
"OS_Freemem": "OS Free Memory",
|
||||
"OS_Loadavg": "OS Load Average",
|
||||
"OS_Platform": "OS Platform",
|
||||
"OS_Release": "OS Release",
|
||||
"OS_Totalmem": "OS Total Memory",
|
||||
"OS_Type": "OS Type",
|
||||
"OS_Uptime": "OS Uptime",
|
||||
"days": "روزهها",
|
||||
"MongoDB_Oplog_enabled": "MongoDB Oplog فعال است",
|
||||
"OS_Arch": "معماری سیستمعامل",
|
||||
"OS_Cpus": "تعدا سیپییو سیستمعامل",
|
||||
"OS_Freemem": "حافظه سیستمعامل",
|
||||
"OS_Loadavg": "میانگین لود سیستمعامل",
|
||||
"OS_Platform": "پلتفرم سیستمعامل",
|
||||
"OS_Release": "انتشار سیستمعامل",
|
||||
"OS_Totalmem": "حافظه کل سیستمعامل",
|
||||
"OS_Type": "نوع سیستمعامل",
|
||||
"OS_Uptime": "آپتایم سیستمعامل",
|
||||
"days": "روزها",
|
||||
"hours": "ساعت",
|
||||
"minutes": "دقیقه",
|
||||
"seconds": "ثانیه",
|
||||
"show-field-on-card": "این رشته را در کارت نمایش بده",
|
||||
"automatically-field-on-card": "اتوماتیک این رشته را در همه ی کارت ها اضافه کن",
|
||||
"showLabel-field-on-card": "نمایش نام رشته در کارت های کوچک",
|
||||
"show-field-on-card": "این فیلد را در کارت نمایش بده",
|
||||
"automatically-field-on-card": "این فیلد را اتوماتیک در همهٔ کارتها اضافه کن",
|
||||
"showLabel-field-on-card": "نمایش لیبل فیلد در کارتهای کوچک",
|
||||
"yes": "بله",
|
||||
"no": "خیر",
|
||||
"accounts": "حسابها",
|
||||
"accounts-allowEmailChange": "اجازه تغییر رایانامه",
|
||||
"accounts-allowEmailChange": "اجازه تغییر ایمیل",
|
||||
"accounts-allowUserNameChange": "اجازه تغییر نام کاربری",
|
||||
"createdAt": "ساخته شده در",
|
||||
"verified": "معتبر",
|
||||
@@ -600,15 +614,15 @@
|
||||
"assigned-by": "محول شده توسط",
|
||||
"requested-by": "تقاضا شده توسط",
|
||||
"board-delete-notice": "حذف دائمی است شما تمام لیست ها، کارت ها و اقدامات مرتبط با این برد را از دست خواهید داد.",
|
||||
"delete-board-confirm-popup": "تمام لیست ها، کارت ها، برچسب ها و فعالیت ها حذف خواهند شد و شما نمی توانید محتوای برد را بازیابی کنید. هیچ واکنشی وجود ندارد",
|
||||
"delete-board-confirm-popup": "تمام لیست ها، کارت ها، لیبل ها و فعالیت ها حذف خواهند شد و شما نمی توانید محتوای برد را بازیابی کنید. هیچ واکنشی وجود ندارد",
|
||||
"boardDeletePopup-title": "حذف برد؟",
|
||||
"delete-board": "حذف برد",
|
||||
"default-subtasks-board": "ریزکار برای __board__ برد",
|
||||
"default-subtasks-board": "زیروظایفِ برد __board__",
|
||||
"default": "پیشفرض",
|
||||
"queue": "صف",
|
||||
"subtask-settings": "تنظیمات ریزکارها",
|
||||
"subtask-settings": "تنظیمات زیروظایف",
|
||||
"card-settings": "تنظیمات کارت",
|
||||
"boardSubtaskSettingsPopup-title": "تنظیمات ریزکار های برد",
|
||||
"boardSubtaskSettingsPopup-title": "تنظیمات زیروظایف برد",
|
||||
"boardCardSettingsPopup-title": "تنظیمات کارت",
|
||||
"deposit-subtasks-board": "افزودن ریزکار به برد:",
|
||||
"deposit-subtasks-list": "لیست برای ریزکار های افزوده شده",
|
||||
@@ -618,26 +632,26 @@
|
||||
"subtext-with-full-path": "زیرنویس با مسیر کامل",
|
||||
"subtext-with-parent": "زیرنویس با خانواده",
|
||||
"change-card-parent": "تغییرخانواده کارت",
|
||||
"parent-card": "کارت خانواده",
|
||||
"source-board": "کارت مرجع",
|
||||
"no-parent": "خانواده نمایش داده نشود",
|
||||
"parent-card": "کارت پدر",
|
||||
"source-board": "برد مرجع",
|
||||
"no-parent": "پدر را نمایش نده",
|
||||
"activity-added-label": "افزودن لیبل '%s' به %s",
|
||||
"activity-removed-label": "حذف لیبل '%s' از %s",
|
||||
"activity-delete-attach": "حذف ضمیمه از %s",
|
||||
"activity-added-label-card": "افزودن لیبل '%s'",
|
||||
"activity-removed-label-card": "حذف لیبل '%s'",
|
||||
"activity-added-label-card": "لیبل افزودهشده '%s'",
|
||||
"activity-removed-label-card": "لیبل حذفشده '%s'",
|
||||
"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": "نقش",
|
||||
"r-rule": "قاعده",
|
||||
"r-add-trigger": "افزودن گیره",
|
||||
"r-add-action": "افزودن عملیات",
|
||||
"r-board-rules": "قوانین برد",
|
||||
"r-add-rule": "افزودن نقش",
|
||||
"r-view-rule": "نمایش قانون",
|
||||
"r-delete-rule": "حذف قانون",
|
||||
"r-new-rule-name": "تیتر قانون جدید",
|
||||
"r-no-rules": "بدون قانون",
|
||||
"r-board-rules": "قواعد برد",
|
||||
"r-add-rule": "افزودن قاعده",
|
||||
"r-view-rule": "نمایش قاعده",
|
||||
"r-delete-rule": "حذف قاعده",
|
||||
"r-new-rule-name": "تیتر قاعده جدید",
|
||||
"r-no-rules": "بدون قواعد",
|
||||
"r-trigger": "تریگر",
|
||||
"r-action": "عملیات",
|
||||
"r-when-a-card": "زمانی که کارت",
|
||||
@@ -660,12 +674,12 @@
|
||||
"r-when-the-member": "زمانی که کاربر",
|
||||
"r-name": "نام",
|
||||
"r-when-a-attach": "زمانی که ضمیمه",
|
||||
"r-when-a-checklist": "زمانی که چک لیست هست",
|
||||
"r-when-the-checklist": "زمانی که چک لیست",
|
||||
"r-when-a-checklist": "زمانی که چکلیست هست",
|
||||
"r-when-the-checklist": "زمانی که چکلیست",
|
||||
"r-completed": "تمام شده",
|
||||
"r-made-incomplete": "تمام نشده",
|
||||
"r-when-a-item": "زمانی که چک لیست ایتم هست",
|
||||
"r-when-the-item": "زمانی که چک لیست ایتم",
|
||||
"r-when-a-item": "زمانی که آیتم چکلیست هست",
|
||||
"r-when-the-item": "زمانی که آیتم چکلیست",
|
||||
"r-checked": "انتخاب شده",
|
||||
"r-unchecked": "لغو انتخاب",
|
||||
"r-move-card-to": "انتقال کارت به",
|
||||
@@ -677,23 +691,23 @@
|
||||
"r-card": "کارت",
|
||||
"r-add": "افزودن",
|
||||
"r-remove": "حذف",
|
||||
"r-label": "برچسب",
|
||||
"r-label": "لیبل",
|
||||
"r-member": "عضو",
|
||||
"r-remove-all": "حذف همه کاربران از کارت",
|
||||
"r-set-color": "انتخاب رنگ به",
|
||||
"r-checklist": "چک لیست",
|
||||
"r-checklist": "چکلیست",
|
||||
"r-check-all": "انتخاب همه",
|
||||
"r-uncheck-all": "لغو انتخاب همه",
|
||||
"r-items-check": "آیتم از چک لیست",
|
||||
"r-items-check": "آیتمهای چکلیست",
|
||||
"r-check": "انتخاب",
|
||||
"r-uncheck": "لغو انتخاب",
|
||||
"r-item": "آیتم",
|
||||
"r-of-checklist": "از چک لیست",
|
||||
"r-of-checklist": "از چکلیست",
|
||||
"r-send-email": "ارسال ایمیل",
|
||||
"r-to": "به",
|
||||
"r-of": "از",
|
||||
"r-subject": "عنوان",
|
||||
"r-rule-details": "جزئیات قوانین",
|
||||
"r-rule-details": "جزئیات قاعده",
|
||||
"r-d-move-to-top-gen": "انتقال کارت به ابتدای لیست خود",
|
||||
"r-d-move-to-top-spec": "انتقال کارت به ابتدای لیست",
|
||||
"r-d-move-to-bottom-gen": "انتقال کارت به انتهای لیست خود",
|
||||
@@ -704,11 +718,11 @@
|
||||
"r-d-send-email-message": "پیام",
|
||||
"r-d-archive": "انتقال کارت به آرشیو",
|
||||
"r-d-unarchive": "بازگردانی کارت از آرشیو",
|
||||
"r-d-add-label": "افزودن برچسب",
|
||||
"r-d-remove-label": "حذف برچسب",
|
||||
"r-d-add-label": "افزودن لیبل",
|
||||
"r-d-remove-label": "حذف لیبل",
|
||||
"r-create-card": "ساخت کارت جدید",
|
||||
"r-in-list": "در لیست",
|
||||
"r-in-swimlane": "در مسیرِ شناور",
|
||||
"r-in-swimlane": "در مسیرِ",
|
||||
"r-d-add-member": "افزودن عضو",
|
||||
"r-d-remove-member": "حذف عضو",
|
||||
"r-d-remove-all-member": "حذف تمامی کاربران",
|
||||
@@ -716,15 +730,15 @@
|
||||
"r-d-uncheck-all": "لغوانتخاب تمام آیتم های لیست",
|
||||
"r-d-check-one": "انتخاب آیتم",
|
||||
"r-d-uncheck-one": "لغو انتخاب آیتم",
|
||||
"r-d-check-of-list": "از چک لیست",
|
||||
"r-d-add-checklist": "افزودن چک لیست",
|
||||
"r-d-remove-checklist": "حذف چک لیست",
|
||||
"r-d-check-of-list": "از چکلیست",
|
||||
"r-d-add-checklist": "افزودن چکلیست",
|
||||
"r-d-remove-checklist": "حذف چکلیست",
|
||||
"r-by": "توسط",
|
||||
"r-add-checklist": "افزودن چک لیست",
|
||||
"r-with-items": "با موارد",
|
||||
"r-items-list": "مورد۱،مورد۲،مورد۳",
|
||||
"r-add-swimlane": "اضافه کردن مسیر شناور",
|
||||
"r-swimlane-name": "نام مسیر شناور",
|
||||
"r-add-checklist": "افزودن چکلیست",
|
||||
"r-with-items": "با آیتمهای",
|
||||
"r-items-list": "آیتم1،آیتم2،آیتم3",
|
||||
"r-add-swimlane": "افزودن مسیر",
|
||||
"r-swimlane-name": "نام مسیر",
|
||||
"r-board-note": "نکته: برای نمایش موارد ممکن کادر را خالی بگذارید.",
|
||||
"r-checklist-note": "نکته: چکلیستها باید توسط کاما از یکدیگر جدا شوند.",
|
||||
"r-when-a-card-is-moved": "زمانی که یک کارت به لیست دیگری منتقل شد",
|
||||
@@ -751,13 +765,13 @@
|
||||
"error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد",
|
||||
"display-authentication-method": "نمایش نوع اعتبارسنجی",
|
||||
"default-authentication-method": "نوع اعتبارسنجی پیشفرض",
|
||||
"duplicate-board": "Duplicate Board",
|
||||
"people-number": "The number of people is:",
|
||||
"swimlaneDeletePopup-title": "Delete Swimlane ?",
|
||||
"duplicate-board": "برد تکراری",
|
||||
"people-number": "تعدا افراد:",
|
||||
"swimlaneDeletePopup-title": "مسیر حذف شود؟",
|
||||
"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": "Restore all",
|
||||
"delete-all": "Delete all",
|
||||
"loading": "Loading, please wait.",
|
||||
"restore-all": "بازگردانی همه",
|
||||
"delete-all": "حذف همه",
|
||||
"loading": "در حال بارگزاری، لطفاً منتظر بمانید.",
|
||||
"previous_as": "آخرین زمان بوده",
|
||||
"act-a-dueAt": "اصلاح زمان انجام به \nکِی: __timeValue__\nکجا: __card__\n زمان قبلی انجام __timeOldValue__ بوده",
|
||||
"act-a-endAt": "زمان پایان ویرایششده به __timeValue__ از (__timeOldValue__)",
|
||||
@@ -778,10 +792,10 @@
|
||||
"act-atUserComment": "به شما در [__board__] __list__/__card__ اشارهشدهاست.",
|
||||
"delete-user-confirm-popup": "از حذف این اکانت مطمئن هستید؟ این عملیات برگشتناپذیر است.",
|
||||
"accounts-allowUserDelete": "به کاربران اجازه دهید خودشان اکانتشان را حذف کنند",
|
||||
"hide-minicard-label-text": "مخفی کردن اسم برچسب مینی کارت",
|
||||
"hide-minicard-label-text": "مخفی کردن اسم لیبل مینی کارت",
|
||||
"show-desktop-drag-handles": "نمایش دستگیرههای درگکردن دسکتاپ",
|
||||
"assignee": "الحاق شده",
|
||||
"cardAssigneesPopup-title": "الحاق شده",
|
||||
"assignee": "محول شده",
|
||||
"cardAssigneesPopup-title": "محولشده",
|
||||
"addmore-detail": "افزودن توضیحات کامل تر",
|
||||
"show-on-card": "نمایش در کارت",
|
||||
"new": "جدید",
|
||||
@@ -803,13 +817,13 @@
|
||||
"saturday": "شنبه",
|
||||
"sunday": "یکشنبه",
|
||||
"status": "وضعیت",
|
||||
"swimlane": "مسیر شنا",
|
||||
"swimlane": "مسیر",
|
||||
"owner": "صاحب",
|
||||
"last-modified-at": "آخرین ویرایش در ",
|
||||
"last-activity": "آخرین فعالیتها",
|
||||
"voting": "رای دهی",
|
||||
"last-activity": "آخرین فعالیت",
|
||||
"voting": "رأی دهی",
|
||||
"archived": "بایگانی شده",
|
||||
"delete-linked-card-before-this-card": "پیش از اینکه کارتهای لینک شده به این کارت را حدف نکنید، نمیتوانید این کارت را حذف کنید.",
|
||||
"delete-linked-card-before-this-card": "پیش از اینکه کارتهای لینک شده به این کارت را حذف نکنید، نمیتوانید این کارت را حذف کنید.",
|
||||
"delete-linked-cards-before-this-list": "پیش از حذف کارتهایی که به کارتهای این لیست لینک شدهاند نمیتوانید این لیست را حذف کنید.",
|
||||
"hide-checked-items": "مخفی کردن انتخابشدهها"
|
||||
}
|
||||
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+15
-1
@@ -337,15 +337,20 @@
|
||||
"filter-cards": "カードまたはリストをフィルタ",
|
||||
"list-filter-label": "タイトルでリストをフィルタ",
|
||||
"filter-clear": "フィルターの解除",
|
||||
"filter-labels-label": "ラベルによるフィルタ",
|
||||
"filter-no-label": "ラベルなし",
|
||||
"filter-member-label": "メンバーによるフィルタ",
|
||||
"filter-no-member": "メンバーなし",
|
||||
"filter-assignee-label": "担当書によるフィルタ",
|
||||
"filter-no-assignee": "担当者なし",
|
||||
"filter-custom-fields-label": "カスタムフィールドによるフィルタ",
|
||||
"filter-no-custom-fields": "カスタムフィールドなし",
|
||||
"filter-show-archive": "アーカイブされたリストを表示",
|
||||
"filter-hide-empty": "空のリストを隠す",
|
||||
"filter-on": "フィルター有効",
|
||||
"filter-on-desc": "このボードのカードをフィルターしています。フィルターを編集するにはこちらをクリックしてください。",
|
||||
"filter-to-selection": "フィルターした項目を全選択",
|
||||
"other-filters-label": "その他のフィルタ",
|
||||
"advanced-filter-label": "高度なフィルター",
|
||||
"advanced-filter-description": "高度なフィルタでは次のような演算子を使用できます:== != <= >= && || ( )\n半角スペースは演算子の区切り文字として使用します。\n\nフィールド名や値を使用したフィルタが可能です。\n例:Field1 == Value1\n\n注意:フィールド名や値にスペースが含まれる場合、それらをシングルクォーテーションで囲む必要があります。\n例:'Field 1' == 'Value 1'\n\n単体の制御文字 (' \\/) は無視されますので、\\を使用することができます。\n例:Field1 == I\\'m\n\n複数の条件を組み合わせることもできます。\n例:F1 == V1 || F1 == V2\n\n基本的にすべての演算子は左から右に評価されます。\n丸カッコを使用することで順序を変更できます。\n例:F1 == V1 && ( F2 == V2 || F2 == V3 )\n\nテキストフィールドでは正規表現を使用した検索もできます。\n例:F1 == /Tes.*/i",
|
||||
"fullname": "フルネーム",
|
||||
@@ -354,6 +359,7 @@
|
||||
"headerBarCreateBoardPopup-title": "ボードの作成",
|
||||
"home": "ホーム",
|
||||
"import": "インポート",
|
||||
"impersonate-user": "このユーザーとして成り代わる",
|
||||
"link": "リンク",
|
||||
"import-board": "ボードをインポート",
|
||||
"import-board-c": "ボードをインポート",
|
||||
@@ -398,6 +404,7 @@
|
||||
"list-select-cards": "リストの全カードを選択",
|
||||
"set-color-list": "色を選択",
|
||||
"listActionPopup-title": "操作一覧",
|
||||
"settingsUserPopup-title": "ユーザー設定",
|
||||
"swimlaneActionPopup-title": "スイムレーン操作",
|
||||
"swimlaneAddPopup-title": "直下にスイムレーンを追加",
|
||||
"listImportCardPopup-title": "Trelloのカードをインポート",
|
||||
@@ -420,6 +427,8 @@
|
||||
"moveCardToTop-title": "先頭に移動",
|
||||
"moveSelectionPopup-title": "選択箇所に移動",
|
||||
"multi-selection": "複数選択",
|
||||
"multi-selection-label": "選択したものにラベルを設定",
|
||||
"multi-selection-member": "選択したものにメンバーを設定",
|
||||
"multi-selection-on": "複数選択有効",
|
||||
"muted": "ミュート",
|
||||
"muted-info": "このボードの変更は通知されません",
|
||||
@@ -465,7 +474,7 @@
|
||||
"search": "検索",
|
||||
"rules": "ルール",
|
||||
"search-cards": "このボード上のカード/リストタイトル、詳細、カスタムフィールドから検索",
|
||||
"search-example": "検索文字",
|
||||
"search-example": "検索文字列を入力してエンターを押してください",
|
||||
"select-color": "色を選択",
|
||||
"set-wip-limit-value": "このリスト中のタスクの最大数を設定",
|
||||
"setWipLimitPopup-title": "仕掛中制限設定",
|
||||
@@ -505,6 +514,11 @@
|
||||
"upload": "アップロード",
|
||||
"upload-avatar": "アバターのアップロード",
|
||||
"uploaded-avatar": "アップロードされたアバター",
|
||||
"custom-top-left-corner-logo-image-url": "カスタムの左上ロゴイメージのURL",
|
||||
"custom-top-left-corner-logo-link-url": "カスタムの左上ロゴイメージのリンクURL",
|
||||
"custom-login-logo-image-url": "カスタムのログインロゴイメージのURL",
|
||||
"custom-login-logo-link-url": "カスタムのログインロゴイメージのリンクURL",
|
||||
"text-below-custom-login-logo": "Text below Custom Login Logo",
|
||||
"username": "ユーザー名",
|
||||
"view-it": "見る",
|
||||
"warn-list-archived": "警告:このカードはアーカイブされたリスト内にあります",
|
||||
|
||||
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+15
-1
@@ -337,15 +337,20 @@
|
||||
"filter-cards": "Filtrēt kartiņas vai sarakstus",
|
||||
"list-filter-label": "Filtrēt sarakstus pēc virsraksta",
|
||||
"filter-clear": "Notīrīt filtru",
|
||||
"filter-labels-label": "Filtrēt pēc birkas",
|
||||
"filter-no-label": "Nav birkas",
|
||||
"filter-member-label": "Filtrēt pēc dalībniekiem",
|
||||
"filter-no-member": "Nav dalībnieku",
|
||||
"filter-assignee-label": "Filtrēt pēc īpašnieka",
|
||||
"filter-no-assignee": "Nav atbildīgā",
|
||||
"filter-custom-fields-label": "Filtrēt pēc papildlaukiem",
|
||||
"filter-no-custom-fields": "Nav papildu lauku",
|
||||
"filter-show-archive": "Rādīt arhivētos sarakstus",
|
||||
"filter-hide-empty": "Slēpt tukšus sarakstus",
|
||||
"filter-on": "Filtrs ir ieslēgts",
|
||||
"filter-on-desc": "Kartiņas šajā dēlī ir filtrētas. Spiediet šeit, lai labotu filtru.",
|
||||
"filter-to-selection": "Filtrs uz iezīmēto",
|
||||
"other-filters-label": "Citi filtri",
|
||||
"advanced-filter-label": "Papildu filtri",
|
||||
"advanced-filter-description": "Papildu filtri ļauj meklēt ar šādiem operatoriem: == != <= >= && || ( ) Starp operatoriem jāatstāj atstarpe. Lai filtrētu papildlaukus, norādiet tā nosaukumu un vērtību. Piemērs: Lauks1 == Vērtība1. Piezīme: ja lauki vai vērtības satur atstarpes, ievietojiet tekstu pēdiņās. Piemērs: 'Lauks 1' == 'Vērtība 1'. Lai ievadītu kontrolsimbolus (pēdiņās un slīpsvītras), pirms tiem ievadiet \\. Piemērs: Lauks1 == 'Rībēj\\' Rīga'. Papildus var kombinēt vairākus nosacījumus. Piemērs: L1 == V1 || L1 == V2. Parasti operatori tiek interpretēti no kreisās uz labo pusi. Secību var mainīt ar iekavām. Piemērs: L1 == V1 && ( L2 == V2 || L2 == V3 ). Papildus teksta laukus var filtrēt ar RegEx: L1 == /Tes.*/i",
|
||||
"fullname": "Pilnais vārds un uzvārds",
|
||||
@@ -354,6 +359,7 @@
|
||||
"headerBarCreateBoardPopup-title": "Izveidot dēli",
|
||||
"home": "Sākums",
|
||||
"import": "Importēt",
|
||||
"impersonate-user": "Uzdoties par lietotāju",
|
||||
"link": "Saite",
|
||||
"import-board": "Importēt dēli",
|
||||
"import-board-c": "Importēt dēli",
|
||||
@@ -398,6 +404,7 @@
|
||||
"list-select-cards": "Atzīmēt visas kartiņas šajā sarakstā",
|
||||
"set-color-list": "Mainīt krāsu",
|
||||
"listActionPopup-title": "Saraksta darbības",
|
||||
"settingsUserPopup-title": "Lietotāja iestatījumi",
|
||||
"swimlaneActionPopup-title": "Joslas darbības",
|
||||
"swimlaneAddPopup-title": "Pievienot joslu zem šīs",
|
||||
"listImportCardPopup-title": "Importēt Trello kartiņu",
|
||||
@@ -420,6 +427,8 @@
|
||||
"moveCardToTop-title": "Pārvietot uz augšu",
|
||||
"moveSelectionPopup-title": "Pārvietot atzīmēto",
|
||||
"multi-selection": "Atzīmēt",
|
||||
"multi-selection-label": "Pielikt birku atzīmētajam",
|
||||
"multi-selection-member": "Pielikt dalībnieku atzīmētajam",
|
||||
"multi-selection-on": "Atzīmēšana ieslēgta",
|
||||
"muted": "Apklusināts",
|
||||
"muted-info": "Nekad nesaņemsiet ziņojumus par izmaiņām šajā dēlī",
|
||||
@@ -465,7 +474,7 @@
|
||||
"search": "Meklēt",
|
||||
"rules": "Nosacījumi",
|
||||
"search-cards": "Meklēt pa kartiņu/sarakstu virsrakstiem, aprakstiem un laukiem šajā dēlī",
|
||||
"search-example": "Teksts kuru meklēt",
|
||||
"search-example": "Ievadiet meklējamo tekstu un spiediet Enter",
|
||||
"select-color": "Mainīt krāsu",
|
||||
"set-wip-limit-value": "Iestatīt maksimālo skaitu ar kartiņām šajā sarakstā",
|
||||
"setWipLimitPopup-title": "Uzlikt WIP ierobežojumu",
|
||||
@@ -505,6 +514,11 @@
|
||||
"upload": "Augšuplādēt",
|
||||
"upload-avatar": "Augšuplādēt attēlu",
|
||||
"uploaded-avatar": "Attēls augšuplādēts",
|
||||
"custom-top-left-corner-logo-image-url": "Logo attēls augšējā kreisā stūrī - URL",
|
||||
"custom-top-left-corner-logo-link-url": "Logo saite augšējā kreisajā stūrī - URL",
|
||||
"custom-login-logo-image-url": "Logo pierakstīšanās ekrānā - URL",
|
||||
"custom-login-logo-link-url": "Logo saite pierakstīšanās ekrānā - URL",
|
||||
"text-below-custom-login-logo": "Teksts zem logo pierakstīšanās lapā",
|
||||
"username": "Lietotājvārds",
|
||||
"view-it": "Skatīt",
|
||||
"warn-list-archived": "brīdinājums: šī kartiņa ir sarakstā arhīvā",
|
||||
|
||||
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+15
-1
@@ -337,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "No label",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "No member",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Full Name",
|
||||
@@ -354,6 +359,7 @@
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
@@ -398,6 +404,7 @@
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
@@ -420,6 +427,8 @@
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -465,7 +474,7 @@
|
||||
"search": "Search",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -505,6 +514,11 @@
|
||||
"upload": "Upload",
|
||||
"upload-avatar": "Upload an avatar",
|
||||
"uploaded-avatar": "Uploaded an avatar",
|
||||
"custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL",
|
||||
"custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL",
|
||||
"custom-login-logo-image-url": "Custom Login Logo Image URL",
|
||||
"custom-login-logo-link-url": "Custom Login Logo Link URL",
|
||||
"text-below-custom-login-logo": "Text below Custom Login Logo",
|
||||
"username": "Username",
|
||||
"view-it": "View it",
|
||||
"warn-list-archived": "warning: this card is in an list at Archive",
|
||||
|
||||
+15
-1
@@ -337,15 +337,20 @@
|
||||
"filter-cards": "过滤卡片或列表",
|
||||
"list-filter-label": "以标题过滤列表",
|
||||
"filter-clear": "清空过滤器",
|
||||
"filter-labels-label": "根据标签过滤",
|
||||
"filter-no-label": "无标签",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "无成员",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "没有代理人",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "无自定义字段",
|
||||
"filter-show-archive": "显示归档的列表",
|
||||
"filter-hide-empty": "隐藏空列表",
|
||||
"filter-on": "过滤器启用",
|
||||
"filter-on-desc": "你正在过滤该看板上的卡片,点此编辑过滤。",
|
||||
"filter-to-selection": "要选择的过滤器",
|
||||
"other-filters-label": "其他过滤",
|
||||
"advanced-filter-label": "高级过滤器",
|
||||
"advanced-filter-description": "高级过滤器可以使用包含如下操作符的字符串进行过滤:== != <= >= && || ( ) 。操作符之间用空格隔开。输入字段名和数值就可以过滤所有自定义字段。例如:Field1 == Value1。注意如果字段名或数值包含空格,需要用单引号。例如: 'Field 1' == 'Value 1'。要跳过单个控制字符(' \\/),请使用 \\ 转义字符。例如: Field1 = I\\'m。支持组合使用多个条件,例如: F1 == V1 || F1 == V2。通常以从左到右的顺序进行判断。可以通过括号修改顺序,例如:F1 == V1 && ( F2 == V2 || F2 == V3 )。也支持使用正则表达式搜索文本字段。",
|
||||
"fullname": "全称",
|
||||
@@ -354,6 +359,7 @@
|
||||
"headerBarCreateBoardPopup-title": "创建看板",
|
||||
"home": "首页",
|
||||
"import": "导入",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "链接",
|
||||
"import-board": "导入看板",
|
||||
"import-board-c": "导入看板",
|
||||
@@ -398,6 +404,7 @@
|
||||
"list-select-cards": "选择列表中的所有卡片",
|
||||
"set-color-list": "设置颜色",
|
||||
"listActionPopup-title": "列表操作",
|
||||
"settingsUserPopup-title": "用户设置",
|
||||
"swimlaneActionPopup-title": "泳道图操作",
|
||||
"swimlaneAddPopup-title": "在下面添加一个泳道",
|
||||
"listImportCardPopup-title": "导入 Trello 卡片",
|
||||
@@ -420,6 +427,8 @@
|
||||
"moveCardToTop-title": "移动至顶端",
|
||||
"moveSelectionPopup-title": "移动选择",
|
||||
"multi-selection": "多选",
|
||||
"multi-selection-label": "设置标签",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "多选启用",
|
||||
"muted": "静默",
|
||||
"muted-info": "你将不会收到此看板的任何变更通知",
|
||||
@@ -465,7 +474,7 @@
|
||||
"search": "搜索",
|
||||
"rules": "规则",
|
||||
"search-cards": "搜寻看板內的卡片/列表标题、描述、自定义字段",
|
||||
"search-example": "搜索",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "选择颜色",
|
||||
"set-wip-limit-value": "设置此列表中的最大任务数",
|
||||
"setWipLimitPopup-title": "设置最大任务数",
|
||||
@@ -505,6 +514,11 @@
|
||||
"upload": "上传",
|
||||
"upload-avatar": "上传头像",
|
||||
"uploaded-avatar": "头像已经上传",
|
||||
"custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL",
|
||||
"custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL",
|
||||
"custom-login-logo-image-url": "Custom Login Logo Image URL",
|
||||
"custom-login-logo-link-url": "通过连接上传logo",
|
||||
"text-below-custom-login-logo": "Text below Custom Login Logo",
|
||||
"username": "用户名",
|
||||
"view-it": "查看",
|
||||
"warn-list-archived": "警告:此卡片在列表归档中",
|
||||
|
||||
+828
-814
File diff suppressed because it is too large.
Load diff
+828
-814
File diff suppressed because it is too large.
Load diff
+12
-3
@@ -1412,15 +1412,24 @@ Cards.mutations({
|
||||
|
||||
assignAssignee(assigneeId) {
|
||||
// If there is not any assignee, allow one assignee, not more.
|
||||
/*
|
||||
if (this.getAssignees().length === 0) {
|
||||
return {
|
||||
$addToSet: {
|
||||
assignees: assigneeId,
|
||||
},
|
||||
};
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
// Allow more that one assignee:
|
||||
// https://github.com/wekan/wekan/issues/3302
|
||||
return {
|
||||
$addToSet: {
|
||||
assignees: assigneeId,
|
||||
},
|
||||
};
|
||||
//} else {
|
||||
// return false,
|
||||
//}
|
||||
},
|
||||
|
||||
unassignMember(memberId) {
|
||||
|
||||
+39
-22
@@ -1,4 +1,4 @@
|
||||
//const stringify = require('csv-stringify');
|
||||
const Papa = require('papaparse');
|
||||
|
||||
// exporter maybe is broken since Gridfs introduced, add fs and path
|
||||
export class Exporter {
|
||||
@@ -192,6 +192,40 @@ export class Exporter {
|
||||
const result = this.build();
|
||||
const columnHeaders = [];
|
||||
const cardRows = [];
|
||||
|
||||
const papaconfig = {
|
||||
delimiter, // get parameter (was: auto-detect)
|
||||
worker: true,
|
||||
};
|
||||
|
||||
/*
|
||||
newline: "", // auto-detect
|
||||
quoteChar: '"',
|
||||
escapeChar: '"',
|
||||
header: true,
|
||||
transformHeader: undefined,
|
||||
dynamicTyping: false,
|
||||
preview: 0,
|
||||
encoding: "",
|
||||
comments: false,
|
||||
step: undefined,
|
||||
complete: undefined,
|
||||
error: undefined,
|
||||
download: false,
|
||||
downloadRequestHeaders: undefined,
|
||||
downloadRequestBody: undefined,
|
||||
skipEmptyLines: false,
|
||||
chunk: undefined,
|
||||
chunkSize: undefined,
|
||||
fastMode: undefined,
|
||||
beforeFirstChunk: undefined,
|
||||
withCredentials: undefined,
|
||||
transform: undefined
|
||||
};
|
||||
*/
|
||||
|
||||
//delimitersToGuess: [',', '\t', '|', ';', Papa.RECORD_SEP, Papa.UNIT_SEP]
|
||||
|
||||
columnHeaders.push(
|
||||
'Title',
|
||||
'Description',
|
||||
@@ -240,6 +274,7 @@ export class Exporter {
|
||||
}
|
||||
i++;
|
||||
});
|
||||
cardRows.push([[columnHeaders]]);
|
||||
/* TODO: Try to get translations working.
|
||||
These currently only bring English translations.
|
||||
TAPi18n.__('title'),
|
||||
@@ -264,24 +299,6 @@ export class Exporter {
|
||||
TAPi18n.__('archived'),
|
||||
*/
|
||||
|
||||
const stringifier = stringify({
|
||||
header: true,
|
||||
delimiter,
|
||||
columns: columnHeaders,
|
||||
});
|
||||
|
||||
stringifier.on('readable', function() {
|
||||
let row;
|
||||
while ((row = stringifier.read())) {
|
||||
cardRows.push(row);
|
||||
}
|
||||
});
|
||||
|
||||
stringifier.on('error', function(err) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(err.message);
|
||||
});
|
||||
|
||||
result.cards.forEach(card => {
|
||||
const currentRow = [];
|
||||
currentRow.push(card.title);
|
||||
@@ -385,10 +402,10 @@ export class Exporter {
|
||||
currentRow.push(customFieldValuesToPush[valueIndex]);
|
||||
}
|
||||
}
|
||||
stringifier.write(currentRow);
|
||||
cardRows.push([[currentRow]]);
|
||||
});
|
||||
stringifier.end();
|
||||
return cardRows[0];
|
||||
|
||||
return Papa.unparse(cardRows, papaconfig);
|
||||
}
|
||||
|
||||
canExport(user) {
|
||||
|
||||
+31
-4
@@ -45,6 +45,26 @@ Settings.attachSchema(
|
||||
type: Boolean,
|
||||
optional: true,
|
||||
},
|
||||
customLoginLogoImageUrl: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
customLoginLogoLinkUrl: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
textBelowCustomLoginLogo: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
customTopLeftCornerLogoImageUrl: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
customTopLeftCornerLogoLinkUrl: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: Date,
|
||||
denyUpdate: true,
|
||||
@@ -187,19 +207,26 @@ if (Meteor.isServer) {
|
||||
}
|
||||
|
||||
function isLdapEnabled() {
|
||||
return process.env.LDAP_ENABLE === 'true';
|
||||
return (
|
||||
process.env.LDAP_ENABLE === 'true' || process.env.LDAP_ENABLE === true
|
||||
);
|
||||
}
|
||||
|
||||
function isOauth2Enabled() {
|
||||
return process.env.OAUTH2_ENABLED === 'true';
|
||||
return (
|
||||
process.env.OAUTH2_ENABLED === 'true' ||
|
||||
process.env.OAUTH2_ENABLED === true
|
||||
);
|
||||
}
|
||||
|
||||
function isCasEnabled() {
|
||||
return process.env.CAS_ENABLED === 'true';
|
||||
return (
|
||||
process.env.CAS_ENABLED === 'true' || process.env.CAS_ENABLED === true
|
||||
);
|
||||
}
|
||||
|
||||
function isApiEnabled() {
|
||||
return process.env.WITH_API === 'true';
|
||||
return process.env.WITH_API === 'true' || process.env.WITH_API === true;
|
||||
}
|
||||
|
||||
Meteor.methods({
|
||||
|
||||
Loaded 100 of 140 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user