Compare commits

...
131 Commits
Author SHA1 Message Date
Lauri Ojansivu 2b24ebf539 v4.45 2020-10-30 13:16:18 +02:00
Lauri Ojansivu 13d5015fc3 Update translations. 2020-10-30 13:02:55 +02:00
Lauri Ojansivu 13cf1a687e Update ChangeLog. 2020-10-30 13:00:35 +02:00
Lauri Ojansivu d2f434879c Fix can not upload and download files, by changing back to Node.js 12.19.0 and adding fast-render.
Current file storing to MongoDB code was not yet compatible with newer Node.js.

Thanks to eskogito and xet7 !

Fixes #3320
2020-10-30 12:53:41 +02:00
Lauri Ojansivu c3ffaa7ce2 v4.44 2020-10-28 18:53:31 +02:00
Lauri Ojansivu 2955c167c2 Update ChangeLog. 2020-10-28 18:49:35 +02:00
Lauri Ojansivu 81d1bf6d27 Merge branch 'jtbairdsr-master' 2020-10-28 18:46:08 +02:00
Lauri Ojansivu 46ce345203 Merge branch 'master' of https://github.com/jtbairdsr/wekan into jtbairdsr-master 2020-10-28 18:02:14 +02:00
Jonathan Baird 363e69f01c fix: expose moving cards on mobile to workers
this fix also hides the move to another board functionality in the
submenu (only from the worker) so that the worker is still constrained
to a single board.
2020-10-28 09:38:41 -06:00
Lauri Ojansivu 9b0875169b Update ChangeLog. 2020-10-28 16:34:58 +02:00
Lauri Ojansivu e616247254 For development, add Meteor 2.0 Hot Module Replacement
https://forums.meteor.com/t/meteor-2-0-beta-with-hot-module-replacement-hmr/54313/8

Thanks to zodern!
2020-10-28 16:31:59 +02:00
Lauri Ojansivu cc5f22df79 Update ChangeLog. 2020-10-28 16:18:48 +02:00
Lauri Ojansivu 3448467953 Merge pull request #3312 from helioguardabaxo/master
Fix Modern theme board canvas background
2020-10-28 16:16:19 +02:00
Lauri Ojansivu 74dbb96d85 Update translations. 2020-10-28 16:15:16 +02:00
Lauri Ojansivu d2cfe76a28 Update ChangeLog. 2020-10-28 16:06:27 +02:00
Lauri Ojansivu 045e9db7b8 Upgrade to Node.js 14.15.0
Thanks to Node.js and Meteor.js developers!
2020-10-28 15:57:38 +02:00
Lauri Ojansivu 460b1d3a66 Changed public board changing Swimlanes/Lists/Calendar view
and changing Hide minicard label text
from using cookies to using browser localStorage.

Thanks to xet7 !
2020-10-28 15:45:37 +02:00
Lauri Ojansivu a463f2a855 Upgrade to Meteor 2.0-beta.3. Removed fast-render and ostrio:cookies.
Thanks to xet7 !
2020-10-28 15:44:47 +02:00
helioguardabaxo 8b3399b8f6 Fix Moder theme board canvas background 2020-10-26 19:58:51 -03:00
Lauri Ojansivu ef59d6dcb9 Update ChangeLog. 2020-10-21 19:30:38 +03:00
Lauri Ojansivu 1b429b3f99 Fixed: With ORACLE_OIM_ENABLED, allow setting OAUTH2_REQUEST_PERMISSIONS with environment variable.
Thanks to xet7 !
2020-10-21 19:20:48 +03:00
Lauri Ojansivu 5098f7dee1 v4.43 2020-10-20 19:11:48 +03:00
Lauri Ojansivu c509aaf246 Update translations. 2020-10-20 19:04:18 +03:00
Lauri Ojansivu d7333dec84 Fixed CSV/TSV export. Please test.
Thanks to xet7 !

Related #3173
2020-10-20 18:59:41 +03:00
Lauri Ojansivu 9d97494cfc Update ChangeLog. 2020-10-16 23:58:54 +03:00
Lauri Ojansivu acf9e7caea Allow more than one assignee.
Thanks to xet7 !

Fixes #3302
2020-10-16 23:56:20 +03:00
Lauri Ojansivu f6d000b26a Update translations. 2020-10-16 23:42:12 +03:00
Lauri Ojansivu ba5b35d0cc v4.42 2020-10-14 21:51:51 +03:00
Lauri Ojansivu 1eae8222c4 Update translations. 2020-10-14 21:40:32 +03:00
Lauri Ojansivu 9b5a519bc7 Update ChangeLog. 2020-10-12 16:42:26 +03:00
Lauri Ojansivu b8a209249e Updagrade to Node.js 12.19.0.
Thanks to Node.js developers !
2020-10-12 16:39:47 +03:00
Lauri Ojansivu ecc1b69f5c Update translations. 2020-10-12 16:19:25 +03:00
Lauri Ojansivu 6253bc6c14 Merge branch 'master' of github.com:wekan/wekan 2020-10-11 01:50:44 +03:00
Lauri Ojansivu 7768a4c1ba Reverted systemd changes that caused Snap to fail building.
Thanks to xet7 !
2020-10-11 01:50:24 +03:00
Lauri Ojansivu cd1bc7a695 Reverted systemd changed that caused Snap to fail building. 2020-10-11 01:49:55 +03:00
Lauri Ojansivu 42f45f9a83 Update translations. 2020-10-10 20:13:45 +03:00
Lauri Ojansivu d081eb0a2e Update dependencies. 2020-10-10 20:10:08 +03:00
Lauri Ojansivu 504533991b Update translations. 2020-10-04 23:25:23 +03:00
Lauri Ojansivu 44a5976b85 Update ChangeLog. 2020-10-03 23:51:54 +03:00
Lauri Ojansivu ac65b93b43 Added restart on failure delay of 10 seconds to Snap.
Thanks to xet7 !

Related #3293
2020-10-03 23:48:11 +03:00
Lauri Ojansivu e9d27c521e Update translations. 2020-10-03 23:23:26 +03:00
Lauri Ojansivu dc86ae21de v4.41 2020-10-03 00:34:30 +03:00
Lauri Ojansivu befb0f18b6 Update ChangeLog. 2020-10-03 00:28:41 +03:00
Lauri Ojansivu b796a6cbf4 Update dependencies. 2020-10-03 00:27:22 +03:00
Lauri Ojansivu 9336a55a50 Update ChangeLog. 2020-10-03 00:24:39 +03:00
Lauri Ojansivu 26749442fd Update translations. 2020-10-03 00:23:03 +03:00
Lauri Ojansivu 7223d6e750 At Admin Panel / Layout: Text below custom login logo. Can have markdown formatting.
Thanks to xet7 !
2020-10-03 00:21:19 +03:00
Lauri Ojansivu 41a8e79e0e Update ChangeLog. 2020-10-02 23:35:16 +03:00
Lauri Ojansivu ec8a78537f Login with OIDC OAuth2 Oracle on premise identity manager OIM, with setting ORACLE_OIM_ENABLED=true.
Thanks to xet7 !
2020-10-02 23:15:39 +03:00
Lauri Ojansivu 4eb7597aa9 Update translations. 2020-10-02 21:14:45 +03:00
Lauri Ojansivu 3d13fa3a26 Update translations. 2020-09-20 15:05:21 +03:00
Lauri Ojansivu 655fe8afd3 v4.40 2020-09-18 19:50:40 +03:00
Lauri Ojansivu 855c66976e Update ChangeLog. 2020-09-18 19:46:27 +03:00
Lauri Ojansivu 185cf163b2 Upgrade to Meteor v1.11.1 .
Thanks to Meteor developers !
2020-09-18 19:42:34 +03:00
Lauri Ojansivu 45b7365025 Update translations. 2020-09-18 19:34:56 +03:00
Lauri Ojansivu ed5f64ccd6 Update ChangeLog. 2020-09-18 19:23:16 +03:00
Lauri Ojansivu 3fc80e1145 Better translation: Target URL to Link URL. 2020-09-18 19:20:16 +03:00
Lauri Ojansivu 05e3fc31b4 Remove extra translation that is not used. 2020-09-18 19:06:02 +03:00
Lauri Ojansivu d5e1c4bfa5 Update ChangeLog. 2020-09-18 18:58:22 +03:00
Lauri Ojansivu a7c3317ed6 Custom Logo for Login and Top Left Corner. Optional link when clicking logo. Settings at Admin Panel / Layout.
Thanks to xet7 !

Fixes #1493,
fixes #2721,
fixes #2681,
fixes #1583,
fixes #1196,
fixes #336,
fixes wekan/wekan-snap#130
2020-09-18 18:45:48 +03:00
Lauri Ojansivu 7db08082bc v4.39 2020-09-17 00:19:45 +03:00
Lauri Ojansivu 32836d42c9 Update ChangeLog. 2020-09-16 23:26:38 +03:00
Lauri Ojansivu 789c4b480a Update translations. 2020-09-16 23:23:22 +03:00
Lauri Ojansivu abe291837a Merge branch 'Akuket-feature/impersonate-user' 2020-09-16 23:12:25 +03:00
Lauri Ojansivu 81ac0fdba9 Add translations strings for impersonate user feature.
Thanks to xet7 !
2020-09-16 23:11:43 +03:00
Guillaume d19cc972e0 Add admin ability : Impersonate one user. 2020-09-16 18:11:19 +00:00
Lauri Ojansivu 8f6c3550e3 v4.38 2020-09-16 05:52:19 +03:00
Lauri Ojansivu 40681ccda4 Update translations. 2020-09-16 05:43:58 +03:00
Lauri Ojansivu 4f76e1e1eb Update ChangeLog. 2020-09-16 05:42:15 +03:00
Lauri Ojansivu 5cd9f89b21 Upgrade to Node.js v12.18.4.
Thanks to Node developers !
2020-09-16 05:35:21 +03:00
Lauri Ojansivu b24685e38d v4.37 2020-09-15 23:19:51 +03:00
Lauri Ojansivu 5d7aa373fd Update translations. 2020-09-15 23:17:44 +03:00
Lauri Ojansivu e79b7fad0a Update release scripts. 2020-09-15 23:14:05 +03:00
Lauri Ojansivu e05541da88 Update translations. 2020-09-15 22:51:51 +03:00
Lauri Ojansivu 0ccbfcfc9e Merge branch 'master' of github.com:wekan/wekan 2020-09-15 22:39:29 +03:00
Lauri Ojansivu 8e6a570d47 Update ChangeLog. 2020-09-15 22:39:13 +03:00
Lauri Ojansivu 129a884a4e Merge branch 'helioguardabaxo-master' 2020-09-15 22:34:49 +03:00
Lauri Ojansivu 2d278f303a Fix linting.
Thanks to xet7 !
2020-09-15 22:34:19 +03:00
Lauri Ojansivu dd67bd4b5e Merge branch 'master' of https://github.com/helioguardabaxo/wekan into helioguardabaxo-master 2020-09-15 22:29:00 +03:00
Lauri Ojansivu 17239fe052 Merge pull request #3278 from devilmengcry/patch-1
Update docker-compose.yml
2020-09-15 22:26:01 +03:00
helioguardabaxo 389908be7c Adjut cardPanelWidth for card details 2020-09-15 16:00:23 -03:00
helioguardabaxo 33cf589c05 UI improvements in filter, multi-selection and rules 2020-09-15 12:47:07 -03:00
李李李 d961355016 Update docker-compose.yml
yaml.parser.ParserError
2020-09-15 20:16:42 +08:00
Lauri Ojansivu 9a72cf7ac2 v4.36 2020-09-15 04:32:12 +03:00
Lauri Ojansivu 53027559cd Update translations. 2020-09-15 04:27:59 +03:00
Lauri Ojansivu 2e5545491b Update ChangeLog. 2020-09-15 04:26:36 +03:00
Lauri Ojansivu f9b0da65f1 Added translations for date selection popups.
Thanks to xet7 !

Fixes #1670
2020-09-15 04:21:23 +03:00
Lauri Ojansivu 4c734ee70f v4.35 2020-09-14 21:29:59 +03:00
Lauri Ojansivu 7173e293ef Try to fix Snap. 2020-09-14 21:26:35 +03:00
Lauri Ojansivu 19ff17b3a5 v4.34 2020-09-14 21:04:01 +03:00
Lauri Ojansivu d2b84c7773 Try to fix Snap. 2020-09-14 20:55:04 +03:00
Lauri Ojansivu 623d6c09c4 v4.33 2020-09-14 20:31:24 +03:00
Lauri Ojansivu 8ae80138a0 Update ChangeLog. 2020-09-14 20:28:17 +03:00
Lauri Ojansivu cca041e21a Update dependencies.
Thanks to developers of dependencies !
2020-09-14 20:26:32 +03:00
Lauri Ojansivu b333061de7 Update translations. 2020-09-14 20:20:45 +03:00
Lauri Ojansivu abf4322b6c Add dot. 2020-09-14 20:17:36 +03:00
Lauri Ojansivu 4e1a73fa27 Update ChangeLog. 2020-09-14 20:17:02 +03:00
Lauri Ojansivu 214c86cc22 Added some CAS and SAML settings. 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 !

Related #3204,
related #708
2020-09-14 19:57:50 +03:00
Lauri Ojansivu e0192f570e Update translations. 2020-09-13 17:10:03 +03:00
Lauri Ojansivu f5b5ab6331 Update translations. 2020-09-13 12:57:34 +03:00
Lauri Ojansivu d1c83b28f3 Update translations. 2020-09-13 12:46:58 +03:00
Lauri Ojansivu aa12b3f162 v4.32 2020-09-13 12:31:56 +03:00
Lauri Ojansivu 754087b5cf v4.31 2020-09-13 11:58:54 +03:00
Lauri Ojansivu e656e36a92 Update translations. 2020-09-13 11:55:56 +03:00
Lauri Ojansivu 0bf138281e Update ChangeLog. 2020-09-13 11:53:58 +03:00
Lauri Ojansivu fe62e12ab4 Try to fix Snap.
Thanks to xet7 !
2020-09-13 11:51:56 +03:00
Lauri Ojansivu 3c64c504c8 Add missing text. 2020-09-13 11:17:03 +03:00
Lauri Ojansivu 479472c1d8 v4.30 2020-09-13 11:15:00 +03:00
Lauri Ojansivu c10c10c4a9 Update ChangeLog. 2020-09-13 11:07:48 +03:00
Lauri Ojansivu d8c515c858 Update translations. 2020-09-13 11:01:01 +03:00
Lauri Ojansivu 168a308f5f Merge branch 'helioguardabaxo-master' 2020-09-13 10:56:15 +03:00
Lauri Ojansivu fe40c5fd37 Update English text 2020-09-13 10:53:13 +03:00
Lauri Ojansivu c430e36357 Merge branch 'master' of https://github.com/helioguardabaxo/wekan into helioguardabaxo-master 2020-09-13 10:51:08 +03:00
Lauri Ojansivu 007bf743a6 Merge branch 'xoe-labs-da-use-grifs-stream-updated-fork' 2020-09-13 10:49:28 +03:00
Lauri Ojansivu 774f57f3f6 Merge branch 'da-use-grifs-stream-updated-fork' of https://github.com/xoe-labs/wekan into xoe-labs-da-use-grifs-stream-updated-fork 2020-09-13 09:57:37 +03:00
Lauri Ojansivu 044a64b964 Update ChangeLog. 2020-09-13 09:49:01 +03:00
Lauri Ojansivu f6bdb4d694 - Remove mouse scroll settings of already removed custom scrollbar.
- Add setting OAUTH2_ADFS_ENABLED=false
- Add testing for both string and boolean version of true

Thanks to xet7 !

Fixes #2949
2020-09-13 09:41:53 +03:00
helioguardabaxo 6a6b76e084 Bold minicard item title 2020-09-13 01:11:19 -03:00
helioguardabaxo 9357ce8a26 Card details layout improvements 2020-09-13 00:23:12 -03:00
helioguardabaxo 0aab2b3085 Put card custom field check in the same line 2020-09-12 16:11:54 -03:00
helioguardabaxo 3edafd6c67 This PR add 'Template' label and modify placeholder in template search 2020-09-12 13:33:29 -03:00
David Arnold 850ded2e17 Use forked & updated version of gridfs-stream 2020-09-11 12:43:01 -05:00
Lauri Ojansivu 67a58daaf3 Update ChangeLog. 2020-09-11 19:18:50 +03:00
Lauri Ojansivu 9fdafd2008 Update npm-mongo dependency.
Thanks to filipenevola.
2020-09-11 19:16:01 +03:00
Lauri Ojansivu 66c37ccd3e Update dependencies. 2020-09-11 14:35:50 +03:00
Lauri Ojansivu fd3139201a Merge pull request #3268 from blaggacao/patch-1
bump: mongodb -> 3.6.2
2020-09-11 14:16:49 +03:00
Lauri Ojansivu abfedf573b Merge pull request #3269 from phaseshift3r/patch-1
Update oidc_server.js
2020-09-11 14:10:14 +03:00
phaseshift3r a1f9536657 Update oidc_server.js
added hack for getting the claims in the accessToken instead of the /adfs/oauth2/userinfo endpoint 

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/overview/ad-fs-faq#i-am-trying-to-get-additional-claims-on-the-user-info-endpoint-but-its-only-returning-subject-how-can-i-get-additional-claims

Environment variable needed set
OAUTH2_ADFS=true
2020-09-11 11:16:28 +02:00
David Arnold dec0563e3c bump: mongodb -> 3.6.2
https://github.com/mongodb/node-mongodb-native/releases
2020-09-10 20:44:22 -05:00
Lauri Ojansivu 9a4136399f v4.29 2020-09-11 02:18:40 +03:00
Lauri Ojansivu 20b0177105 Changed markdown from marked to markdown-it. Added emoji support https://github.com/wekan/wekan/wiki/Emoji
Thanks to xet7 !

Fixes #2696,
fixes #1537
2020-09-11 02:04:17 +03:00
139 changed files with 41845 additions and 49089 deletions

No files matched your search

+18 -5
View File
@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=v12.18.3 \
NODE_VERSION=v12.19.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 \
+1 -1
View File
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.18.3
node-engine: 12.19.0
node-packages:
- node-gyp
- node-pre-gyp
+1 -1
View File
@@ -83,7 +83,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.18.3
node-engine: 12.19.0
node-packages:
- node-gyp
- node-pre-gyp
+1
View File
@@ -5,6 +5,7 @@
tmp/
node_modules/
npm-debug.log
.gitmodules
.vscode/
.idea/
.build/*
+54 -5
View File
@@ -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,55 @@ 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
staringatlights:fast-render
+1 -1
View File
@@ -1 +1 @@
METEOR@1.11
METEOR@2.0-beta.3
+62 -12
View File
@@ -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
@@ -55,9 +55,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 +70,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 +108,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 +128,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 +144,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
@@ -166,10 +215,11 @@ 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 +236,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
View File
@@ -3,7 +3,7 @@ sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 12.18.3
TRAVIS_NODE_VERSION: 12.19.0
TRAVIS_NPM_VERSION: latest
before_install:
+236
View File
@@ -1,3 +1,239 @@
# v4.45 2020-10-30 Wekan release
This release fixes the following bugs:
- [Fix can not upload and download files, by changing back to Node.js 12.19.0 and adding
fast-render](https://github.com/wekan/wekan/commit/d2f434879caa20d69651f23fa2124074f55c9893).
Current file storing to MongoDB code was not yet compatible with newer Node.js.
Thanks to eskogito and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# 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
View File
@@ -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=v12.19.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
View File
@@ -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=v12.19.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=v12.19.0 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v4.28.0"
appVersion: "v4.45.0"
files:
userUploads:
- README.md
+7 -7
View File
@@ -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');
+4 -1
View File
@@ -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
+67 -59
View File
@@ -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
+1 -1
View File
@@ -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?!
+17 -8
View File
@@ -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 -1
View File
@@ -1,6 +1,6 @@
template(name="checklists")
.checklists-title
h3
h3.card-details-item-title
i.fa.fa-check
| {{_ 'checklists'}}
if currentUser.isBoardMember
+5 -7
View File
@@ -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 -1
View File
@@ -1,5 +1,5 @@
template(name="subtasks")
h3
h3.card-details-item-title
i.fa.fa-sitemap
| {{_ 'subtasks'}}
if toggleDeleteDialog.get
+2 -4
View File
@@ -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;
+2
View File
@@ -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 -3
View File
@@ -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;
+13 -11
View File
@@ -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
+21
View File
@@ -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
+13
View File
@@ -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() {
-1
View File
@@ -447,7 +447,6 @@ a
flex-direction: column
align-items: center
justify-content: center
height: 100%
.auth-dialog
margin: 0 !important
+2
View File
@@ -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'}}
+14
View File
@@ -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;
+27 -8
View File
@@ -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
+24
View File
@@ -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,
},
+8 -8
View File
@@ -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
+6 -6
View File
@@ -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;
+3 -2
View File
@@ -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
+23 -3
View File
@@ -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;
+3 -5
View File
@@ -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;
+12 -15
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+15 -1
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+220 -206
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+15 -1
View File
@@ -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": "カスタムログインロゴイメージの下のテキスト",
"username": "ユーザー名",
"view-it": "見る",
"warn-list-archived": "警告:このカードはアーカイブされたリスト内にあります",
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+15 -1
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+15 -1
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+828 -814
View File
File diff suppressed because it is too large. Load diff
+12 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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 139 files, more files were not shown because too many files have changed in this diff. Show more