Compare commits

...
83 Commits
Author SHA1 Message Date
Lauri Ojansivu 843ff8eaaa v5.26 2021-04-28 12:38:15 +03:00
Lauri Ojansivu c5143e2c54 Updated translations. 2021-04-28 12:34:30 +03:00
Lauri Ojansivu 0596f5e864 Updated ChangeLog. 2021-04-28 12:28:09 +03:00
Lauri Ojansivu 8ca1b25daf Bring back Almost-Due for Start Date.
Thanks to darren-teo !

Fixes #3766
2021-04-28 12:26:31 +03:00
Lauri Ojansivu 1f76159bfe Updated ChangeLog. 2021-04-28 12:19:43 +03:00
Lauri Ojansivu 39ece35f52 Merge pull request #3765 from HappyMushroom-TechTeam/feature/miniCard_subtaskCount
Feature/mini card subtask count
2021-04-28 12:18:03 +03:00
ryanMushy 63c1bb9e17 count subtasks just like checklists 2021-04-27 18:28:23 -07:00
Lauri Ojansivu 354622c5ad v5.25 2021-04-27 23:11:23 +03:00
Lauri Ojansivu df7fd8c900 v5.25 2021-04-27 23:02:49 +03:00
Lauri Ojansivu 7957690fca Updated translations. 2021-04-27 22:57:25 +03:00
Lauri Ojansivu 63d19447a0 Updated ChangeLog. 2021-04-27 22:50:53 +03:00
Lauri Ojansivu 018a84ec59 Merge pull request #3764 from HappyMushroom-TechTeam/feature/excel_swimlanExport
cherry pick the excel export feature to add swimlanes to the output
2021-04-27 22:47:41 +03:00
ryanMushy e5c0e623a0 cherry pick the excel export feature to add swimlanes to the output 2021-04-27 12:38:38 -07:00
ryan neal 9a2d3e15e8 Merge pull request #2 from wekan/master
newest version
2021-04-27 12:36:57 -07:00
Lauri Ojansivu c07e262e68 Updated translations. 2021-04-27 20:29:01 +03:00
Lauri Ojansivu cacb2b91ee Updated ChangeLog. 2021-04-27 20:18:37 +03:00
Lauri Ojansivu 6f269d598f Merge pull request #3762 from bentiss/nested-openapi
openapi: better handle nested schemas
2021-04-27 20:16:59 +03:00
Lauri Ojansivu 57ea254bff Updated ChangeLog. 2021-04-27 19:51:09 +03:00
Lauri Ojansivu 7e183c838f Merge pull request #3761 from HappyMushroom-TechTeam/bugfix/summernoteOnPaste
Bugfix/summernote on paste
2021-04-27 19:48:46 +03:00
Lauri Ojansivu 3ffdfd9736 Updated ChangeLog. 2021-04-27 19:47:40 +03:00
Lauri Ojansivu 621c701bef Fixed language name of Deutsch (Schweiz).
Thanks to urmel1960 !

Fixes #3763
2021-04-27 19:45:18 +03:00
Lauri Ojansivu 3c24c9966c Updated ChangeLog. 2021-04-27 19:38:20 +03:00
Lauri Ojansivu 995de525d9 Added missing postgres password to ToroDB.
Thanks to xet7 !
2021-04-27 19:36:34 +03:00
Benjamin Tissoires ae30b1220a openapi: better handle nested schemas
there is a 2 levels schemas in profile.notifications.

The code previously assumed we could only have one level, and so was not
producing the correct UsersProfileNotifications.

Fix that by being more generic in the way we retrieve the nested
subschemas.
2021-04-27 10:44:27 +02:00
ryanMushy e380ad26c2 Images are uploaded twice
- make sure only pastes which contain text are processed
- remove execCommand() as it results in errors
- enable drag & drop
- fix resize buttons to be the proper summernote commands
- remove un-needed comma
2021-04-26 23:31:07 -07:00
ryan neal 9bb31d2380 Merge pull request #1 from wekan/master
newest wekan
2021-04-26 12:10:21 -07:00
Lauri Ojansivu 8ec1e4f3fa Updated ChangeLog. 2021-04-24 20:18:04 +03:00
Lauri Ojansivu 9f0f6841b0 Updated release scripts. 2021-04-24 20:16:27 +03:00
Lauri Ojansivu 5d18f98b44 v5.24 2021-04-24 19:47:12 +03:00
Lauri Ojansivu e738177e08 Updated dependencies.
Thanks to developers of dependencies !
2021-04-24 19:40:50 +03:00
Lauri Ojansivu bb201935b9 Updated translations. 2021-04-24 19:35:48 +03:00
Lauri Ojansivu bcfe6bd616 Updated translations.
Thanks to translators and xet7 !

Fixes #3756
2021-04-24 19:08:08 +03:00
Lauri Ojansivu 9c6352a7bc Updated translations. 2021-04-23 12:53:15 +03:00
Lauri Ojansivu 9110e41f20 Updated ChangeLog. 2021-04-23 00:19:39 +03:00
Lauri Ojansivu 7ae871d3a6 Merge pull request #3753 from jrsupplee/copy-swimlane
Add copy swimlane functionality
2021-04-22 22:50:27 +03:00
Lauri Ojansivu 0ddf027d43 Updated ChangeLog. 2021-04-22 16:54:37 +03:00
Lauri Ojansivu 45124a39f3 Fix Snap: Delete extra symlink that prevented building Snap.
Thanks to xet7 !
2021-04-22 16:52:51 +03:00
John R. Supplee 4940af0573 Add copy swimlane functionality 2021-04-22 14:16:35 +02:00
Lauri Ojansivu 924b5d1733 v5.23 2021-04-22 15:16:22 +03:00
Lauri Ojansivu 2119a3a51e Updated translations. 2021-04-22 14:58:24 +03:00
Lauri Ojansivu dcda99ddf3 Updated ChangeLog. 2021-04-22 14:48:39 +03:00
Lauri Ojansivu 0e35dcd5ad Merge pull request #3749 from listenerri/patch-1
Fix: The bg color of start at button is almost-due
2021-04-22 14:44:34 +03:00
listenerri 991d42ca0b Fix: The bg color of start at button is almost-due
One minute earlier than the current time is almost-due? This should be a faulty logic.
2021-04-22 18:24:18 +08:00
Lauri Ojansivu ac242c96b7 Updated translations. 2021-04-20 21:13:04 +03:00
Lauri Ojansivu 79d45c8e33 Updated ChangeLog. 2021-04-20 21:09:43 +03:00
Lauri Ojansivu 8e9f7102f9 Merge pull request #3741 from jrsupplee/master
Bug fix for Due Cards
2021-04-20 21:07:05 +03:00
John R. Supplee 1952dc309b Bug fix for Due Cards 2021-04-20 16:23:56 +02:00
Lauri Ojansivu 5e7767247f Updated ChangeLog. 2021-04-20 10:09:49 +03:00
Lauri Ojansivu 676bf686c7 Updated dependencies.
Thanks to developers of dependencies !
2021-04-20 10:08:32 +03:00
Lauri Ojansivu 5cd6985368 Updated translations. 2021-04-20 10:02:37 +03:00
Lauri Ojansivu 807e72dcce Updated ChangeLog. 2021-04-20 09:59:30 +03:00
Lauri Ojansivu 71702b5821 Merge pull request #3733 from jrsupplee/issue-1569
Fix: Trello data without labels definition
2021-04-20 09:58:18 +03:00
Lauri Ojansivu 40c56248f1 Merge branch 'mcrute-master' 2021-04-20 08:37:40 +03:00
John R. Supplee 74ac7d8d3f Fix for issue #1569 Trello data without labels definition 2021-04-19 22:37:26 +02:00
Mike Crute e7186b47b0 Support filtering by due date 2021-04-19 07:44:09 -07:00
Lauri Ojansivu 12aa7ea2cb Updated ChangeLog. 2021-04-16 22:33:34 +03:00
Lauri Ojansivu ef584e2826 v5.22 2021-04-16 21:57:36 +03:00
Lauri Ojansivu f902be10b6 Updated translations. 2021-04-16 21:54:04 +03:00
Lauri Ojansivu 29b835de59 Updated ChangeLog. 2021-04-16 21:50:25 +03:00
Lauri Ojansivu 6ff9c5b58d Added German (Switzerland) (de_CH) Part 3.
Fixed lint.

Thanks to translators and xet7 !
2021-04-16 21:47:39 +03:00
Lauri Ojansivu 1b86aeb4f5 Updated ChangeLog. 2021-04-16 21:25:40 +03:00
Lauri Ojansivu dce99c00be Updated number of translated languages.
Thanks to translators and xet7 !
2021-04-16 21:24:00 +03:00
Lauri Ojansivu e47c700c36 Updated ChangeLog. 2021-04-16 21:23:14 +03:00
Lauri Ojansivu 09506c78f3 Updated translations. Added German (Switzerland) (de_CH).
Thanks to translators !
2021-04-16 21:20:45 +03:00
Lauri Ojansivu 9ec1fc0902 Updated ChangeLog. 2021-04-16 20:58:18 +03:00
Lauri Ojansivu 0b3ec2c19e Merge pull request #3724 from jrsupplee/master
Remove allowedValues from Cards.type schema
2021-04-16 20:55:50 +03:00
John R. Supplee a94bec921c Remove allowedValues from Cards.type schema 2021-04-16 19:52:09 +02:00
Lauri Ojansivu 3884da3c06 v5.21 2021-04-16 20:28:51 +03:00
Lauri Ojansivu d3fa177c7f Updated translations. 2021-04-16 20:24:19 +03:00
Lauri Ojansivu d2176e2c08 Updated ChangeLog. 2021-04-16 20:05:20 +03:00
Lauri Ojansivu 8d9c59486d Merge branch 'master' of github.com:wekan/wekan 2021-04-16 19:59:34 +03:00
Lauri Ojansivu 0e7c2b4b94 Upgraded to Meteor 2.2.
Thanks to Meteor developers!
2021-04-16 19:58:51 +03:00
Lauri Ojansivu 5c9bc1c745 Merge pull request #3723 from mfilser/bugfix-date_format_not_changed_to_local_format
Bugfix, date format not changed to local format
2021-04-16 19:57:24 +03:00
Martin Filser 5e7efa0098 Bugfix, date format not changed to local format
- Fixes #3718
- intoduced by commit 4aee129cdc
2021-04-16 17:04:36 +02:00
Lauri Ojansivu 424862e313 Updated ChangeLog. 2021-04-15 17:50:03 +03:00
Lauri Ojansivu 9b80ad5a3c Merge branch 'HappyMushroom-TechTeam-summernoteFeatureSet' 2021-04-15 17:44:26 +03:00
ryanMushy 96c6fa0276 - Add new button to insert a URL link
- Add new popover allowing you to edit URL links
- enable spell check and grammerly extension
2021-04-14 18:31:32 -07:00
Lauri Ojansivu 69305e1833 v5.20 2021-04-14 13:14:21 +03:00
Lauri Ojansivu 8aa74ab65e Updated translations. 2021-04-14 13:10:48 +03:00
Lauri Ojansivu aee12c2494 Updated ChangeLog. 2021-04-14 12:40:07 +03:00
Lauri Ojansivu 83976b3229 Merge pull request #3715 from bentiss/fix-docs
openapi: rework the allowedValues to allow for imported variables
2021-04-14 12:37:52 +03:00
Benjamin Tissoires 39f8a138d7 openapi: rework the allowedValues to allow for imported variables
Previously I was assuming all variables were declared in the same file.
Turns out that imports exists too, and we need to recurse one more time
in those imports./

Also "clean" up a bit the function to do the parsing in 2 steps:
- first find out the actual matching node in js
- then convert it based on its type
rinse wash repeat.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2021-04-14 11:32:03 +02:00
Lauri Ojansivu 120e4af7b2 Updated translations. 2021-04-14 12:26:58 +03:00
103 changed files with 57646 additions and 62992 deletions

No files matched your search

+2 -2
View File
@@ -6,7 +6,7 @@
meteor-base@1.4.0
# Build system
ecmascript@0.15.0
ecmascript@0.15.1
standard-minifier-css@1.7.2
standard-minifier-js@2.6.0
mquandalle:jade
@@ -23,7 +23,7 @@ dburles:collection-helpers
idmontie:migrations
matb33:collection-hooks
matteodem:easy-search
mongo@1.10.1
mongo@1.11.0
mquandalle:collection-mutations
# Account system
+1 -1
View File
@@ -1 +1 @@
METEOR@2.1.1
METEOR@2.2
+19 -19
View File
@@ -1,5 +1,5 @@
3stack:presence@1.1.2
accounts-base@1.8.0
accounts-base@1.9.0
accounts-oauth@1.2.0
accounts-password@1.7.0
aldeed:collection2@2.10.0
@@ -11,17 +11,17 @@ allow-deny@1.1.0
arillo:flow-router-helpers@0.5.2
audit-argument-checks@1.0.7
autoupdate@1.7.0
babel-compiler@7.6.0
babel-compiler@7.6.1
babel-runtime@1.5.0
base64@1.0.12
binary-heap@1.0.11
blaze@2.4.0
blaze-tools@1.0.10
blaze-tools@1.1.1
boilerplate-generator@1.7.1
browser-policy-common@1.0.11
browser-policy-framing@1.1.0
caching-compiler@1.2.2
caching-html-compiler@1.1.3
caching-html-compiler@1.2.0
callback-hook@1.3.0
cfs:access-point@0.1.49
cfs:base-package@0.0.30
@@ -52,12 +52,12 @@ ddp@1.4.0
ddp-client@2.4.0
ddp-common@1.4.0
ddp-rate-limiter@1.0.9
ddp-server@2.3.2
ddp-server@2.3.3
deps@1.0.12
diff-sequence@1.1.1
dynamic-import@0.6.0
easylogic:summernote@0.8.8
ecmascript@0.15.0
ecmascript@0.15.1
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.11.0
ecmascript-runtime-server@0.10.0
@@ -70,7 +70,7 @@ fortawesome:fontawesome@4.7.0
geojson-utils@1.0.10
horka:swipebox@1.0.2
hot-code-push@1.0.4
html-tools@1.0.11
html-tools@1.1.1
htmljs@1.1.0
http@1.4.3
id-map@1.1.0
@@ -84,7 +84,7 @@ kenton:accounts-sandstorm@0.7.0
konecty:mongo-counter@0.0.5_3
lamhieu:meteorx@2.1.1
lamhieu:unblock@1.0.0
launch-screen@1.2.0
launch-screen@1.2.1
livedata@1.0.18
localstorage@1.2.0
logging@1.2.0
@@ -100,16 +100,16 @@ meteorhacks:collection-utils@1.2.0
meteorhacks:picker@1.0.3
meteorhacks:subs-manager@1.6.4
meteorspark:util@0.2.0
minifier-css@1.5.3
minifier-css@1.5.4
minifier-js@2.6.0
minifiers@1.1.8-faster-rebuild.0
minimongo@1.6.1
minimongo@1.6.2
mobile-status-bar@1.1.0
modern-browsers@0.1.5
modules@0.16.0
modules-runtime@0.12.0
momentjs:moment@2.29.1
mongo@1.10.1
mongo@1.11.0
mongo-decimal@0.1.2
mongo-dev-server@1.1.0
mongo-id@1.0.7
@@ -125,7 +125,7 @@ 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.1
npm-mongo@3.9.0
oauth@1.3.2
oauth2@1.3.0
observe-sequence@1.0.16
@@ -208,10 +208,10 @@ simple:json-routes@2.1.0
simple:rest-accounts-password@1.1.2
simple:rest-bearer-token-parser@1.0.1
simple:rest-json-error-handler@1.0.1
socket-stream-client@0.3.1
socket-stream-client@0.3.2
softwarerero:accounts-t9n@1.3.11
spacebars@1.1.0
spacebars-compiler@1.1.3
spacebars-compiler@1.2.1
srp@1.1.0
standard-minifier-css@1.7.2
standard-minifier-js@2.6.0
@@ -220,10 +220,10 @@ 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
templating-compiler@1.3.3
templating-runtime@1.3.2
templating-tools@1.1.2
templating@1.4.0
templating-compiler@1.4.0
templating-runtime@1.4.0
templating-tools@1.2.0
tmeasday:check-npm-versions@0.3.2
tracker@1.2.0
twbs:bootstrap@3.3.6
@@ -234,7 +234,7 @@ useraccounts:core@1.14.2
useraccounts:flow-routing@1.14.2
useraccounts:unstyled@1.14.2
verron:autosize@3.0.8
webapp@1.10.0
webapp@1.10.1
webapp-hashing@1.1.0
wekan-accounts-cas@0.1.0
wekan-accounts-oidc@1.0.10
+1 -1
View File
@@ -39,7 +39,7 @@ host = https://www.transifex.com
# tap:i18n requires us to use `-` separator in the language identifiers whereas
# Transifex uses a `_` separator, without an option to customize it on one side
# or the other, so we need to do a Manual mapping.
lang_map = ar_EG:ar-EG, bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
[wekan.application]
file_filter = i18n/<lang>.i18n.json
+130
View File
@@ -1,3 +1,133 @@
# v5.26 2021-04-28 Wekan release
This release adds the following new features:
- [Feature/mini card subtask count](https://github.com/wekan/wekan/pull/3765).
Thanks to ryanMushy.
and fixes the following bugs:
- [Bring back Almost-Due for Start Date](https://github.com/wekan/wekan/commit/8ca1b25daf3be60c2dc64f03830dea8437bbd8ad).
Thanks to darren-teo.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.25 2021-04-27 Wekan release
This release adds the following new features:
- [Swimlane in Export to Excel](https://github.com/wekan/wekan/pull/3764).
Thanks to Keelan and ryanMushy.
and adds the following updates:
- [Updated release scripts](https://github.com/wekan/wekan/commit/9f0f6841b01b88f5559724b047d5e245617a02c8).
Thanks to xet7.
and fixes the following bugs:
- [Added missing PostgreSQL password to ToroDB](https://github.com/wekan/wekan/commit/995de525d96946702536f0cdcb98ef281b9df94e).
Thanks to xet7.
- [Fixed language name of Deutsch (Schweiz)](https://github.com/wekan/wekan/commit/621c701bef1d09d4ddfc93be411cfad98869f0ae).
Thanks to urmel1960.
- [Bugfix/Summernote on paste](https://github.com/wekan/wekan/pull/3761).
Thanks to ryanMushy.
- [OpenAPI: Better handle nested schemas](https://github.com/wekan/wekan/pull/3762).
Thanks to bentiss.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.24 2021-04-24 Wekan release
This release adds the following new features:
- [Copy Swimlane](https://github.com/wekan/wekan/pull/3753).
Thanks to jrsupplee.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/e738177e081e4a7e83fed3389f47847403551fc2).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Fix Snap: Delete extra symlink that prevented building Snap](https://github.com/wekan/wekan/commit/45124a39f34a918b251a4a36fb016639b558f119).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.23 2021-04-22 Wekan release
This release adds the following new features:
- [Filtering by due date](https://github.com/wekan/wekan/pull/3731).
Thanks to mcrute.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/676bf686c7a121b0da744afce5911807a6be48fe).
Thanks to developers of dependencies.
and fixes the following bugs:
- [Fix: Trello data without labels definition](https://github.com/wekan/wekan/pull/3733).
Thanks to jrsupplee.
- [Bug fix for Due Cards](https://github.com/wekan/wekan/pull/3741).
Thanks to jrsupplee.
- [Fix: The bg color of start at button is almost-due](https://github.com/wekan/wekan/pull/3749).
Thanks to listenerri.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.22 2021-04-16 Wekan release
This release adds the following new translations:
- Added German (Switzerland) (de_CH) (Schwiizerdütsch). Updated translations.
[Part 1](https://github.com/wekan/wekan/commit/09506c78f3c3439db622574eb851fa0c20d3a066),
[Part 2](https://github.com/wekan/wekan/commit/dce99c00be80cceba686fd73b4b78b6c778d78a6),
[Part 3](https://github.com/wekan/wekan/commit/6ff9c5b58d25ba52b11e5429c9cfe6ed6a97000e).
Thanks to translators.
and fixes the following bugs:
- [Remove allowedValues from Cards.type schema](https://github.com/wekan/wekan/pull/3724).
Thanks to jrsupplee.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.21 2021-04-16 Wekan release
This release adds the following new features:
- [Summernote Rich Text Editor](https://github.com/wekan/wekan/pull/3720):
1) Add new button to insert a URL link.
2) Add new popover allowing you to edit existing URL links.
3) Enable spell check.
4) Allow client side grammerly extension.
Thanks to ryanMushy.
and adds the following updates:
- [Upgraded to Meteor 2.2](https://github.com/wekan/wekan/commit/0e7c2b4b94b1c48e8839cfba635b53cdc1a797b1).
Thanks to Meteor developers.
and fixes the following bugs:
- [Bugfix, date format not changed to local format](https://github.com/wekan/wekan/pull/3723).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.20 2021-04-14 Wekan release
This release fixes the following bugs:
- [OpenAPI: rework the allowedValues to allow for imported variables](https://github.com/wekan/wekan/pull/3715).
Thanks to bentiss.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.19 2021-04-14 Wekan release
This release adds the following new features:
+1 -1
View File
@@ -52,7 +52,7 @@ that by providing one-click installation on various platforms.
- Wekan is used in [most countries of the world](https://snapcraft.io/wekan).
- Wekan largest user has 13k users using Wekan in their company.
- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 62 languages.
- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 63 languages.
- [Features][features]: Wekan has real-time user interface.
- [Platforms][platforms]: Wekan supports many platforms.
Wekan is critical part of new platforms Wekan is currently being integrated to.
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v5.19.0"
appVersion: "v5.26.0"
files:
userUploads:
- README.md
+1 -1
View File
@@ -3,7 +3,7 @@ const commentFormIsOpen = new ReactiveVar(false);
BlazeComponent.extendComponent({
onDestroyed() {
commentFormIsOpen.set(false);
$(".note-popover").hide();
$('.note-popover').hide();
},
commentFormIsOpen() {
@@ -1,5 +1,4 @@
import { DatePicker } from '/client/lib/datepicker';
import moment from 'moment';
import Cards from '/models/cards';
Template.cardCustomFieldsPopup.helpers({
-1
View File
@@ -1,4 +1,3 @@
import moment from 'moment';
import { DatePicker } from '/client/lib/datepicker';
Template.dateBadge.helpers({
+1 -1
View File
@@ -3,7 +3,7 @@ const descriptionFormIsOpen = new ReactiveVar(false);
BlazeComponent.extendComponent({
onDestroyed() {
descriptionFormIsOpen.set(false);
$(".note-popover").hide();
$('.note-popover').hide();
},
descriptionFormIsOpen() {
+5
View File
@@ -129,3 +129,8 @@ template(name="minicard")
.badge(class="{{#if checklistFinished}}is-finished{{/if}}")
span.badge-icon.fa.fa-check-square-o
span.badge-text.check-list-text {{checklistFinishedCount}}/{{checklistItemCount}}
if allSubtasks.count
.badge
span.badge-icon.fa.fa-sitemap
span.badge-text.check-list-text {{subtasksFinishedCount}}/{{allSubtasksCount}}
//{{subtasksFinishedCount}}/{{subtasksCount}} does not work because when a subtaks is archived, the count goes down
+3 -3
View File
@@ -3,7 +3,7 @@ import {
OPERATOR_HAS,
OPERATOR_SORT,
OPERATOR_USER,
ORDER_DESCENDING,
ORDER_ASCENDING,
PREDICATE_DUE_AT,
} from '../../../config/search-const';
import { QueryParams } from '../../../config/query-classes';
@@ -62,14 +62,14 @@ class DueCardsComponent extends CardSearchPagedComponent {
// queryParams[OPERATOR_LIMIT] = 5;
queryParams.addPredicate(OPERATOR_SORT, {
name: PREDICATE_DUE_AT,
order: ORDER_DESCENDING,
order: ORDER_ASCENDING,
});
if (Utils.dueCardsView() !== 'all') {
queryParams.addPredicate(OPERATOR_USER, Meteor.user().username);
}
this.runGlobalSearch(queryParams.getQueryParams());
this.runGlobalSearch(queryParams);
}
dueCardsView() {
+19 -9
View File
@@ -49,7 +49,7 @@ Template.editor.onRendered(() => {
['para', ['ul', 'ol', 'paragraph']],
['table', ['table']],
//['insert', ['link', 'picture', 'video']], // iframe tag will be sanitized TODO if iframe[class=note-video-clip] can be added into safe list, insert video can be enabled
//['insert', ['link', 'picture']], // modal popup has issue somehow :(
['insert', ['link']], //, 'picture']], // modal popup has issue somehow :(
['view', ['fullscreen', 'help']],
];
const cleanPastedHTML = function(input) {
@@ -145,6 +145,7 @@ Template.editor.onRendered(() => {
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
const insertImage = src => {
// process all image upload types to the description/comment window
const img = document.createElement('img');
img.src = src;
img.setAttribute('width', '100%');
@@ -210,7 +211,16 @@ Template.editor.onRendered(() => {
}
}
},
onPaste() {
onPaste(e) {
var clipboardData = e.clipboardData;
var pastedData = clipboardData.getData('Text');
//if pasted data is an image, exit
if( !pastedData.length ){
e.preventDefault();
return;
}
// clear up unwanted tag info when user pasted in text
const thisNote = this;
const updatePastedText = function(object) {
@@ -219,7 +229,7 @@ Template.editor.onRendered(() => {
// (and multiplies by pasting more) by changing paste "p" to "br".
// Fixes https://github.com/wekan/wekan/2890 .
// == Fix Start ==
someNote.execCommand('defaultParagraphSeparator', false, 'br');
//someNote.execCommand('defaultParagraphSeparator', false, 'br');
// == Fix End ==
const original = someNote.summernote('code');
const cleaned = cleanPastedHTML(original); //this is where to call whatever clean function you want. I have mine in a different file, called CleanPastedHTML.
@@ -231,20 +241,20 @@ Template.editor.onRendered(() => {
//the function is called before the text is really pasted.
updatePastedText(thisNote);
}, 10);
},
}
},
dialogsInBody: true,
disableDragAndDrop: true,
spellCheck: true,
disableGrammar: false,
disableDragAndDrop: false,
toolbar,
popover: {
image: [
[
'image',
['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone'],
],
['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']],
['float', ['floatLeft', 'floatRight', 'floatNone']],
['remove', ['removeMedia']],
],
link: [['link', ['linkDialogShow', 'unlink']]],
table: [
['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],
['delete', ['deleteRow', 'deleteCol', 'deleteTable']],
+2
View File
@@ -77,6 +77,8 @@ Template.userFormsLayout.helpers({
} else if (lang.name === 'ar-EG') {
// ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo)
name = 'مَصرى';
} else if (lang.name === 'de-CH') {
name = 'Deutsch (Schweiz)';
} else if (lang.name === 'fa-IR') {
// fa-IR = Persian (Iran)
name = 'فارسی/پارسی (ایران‎)';
@@ -72,6 +72,43 @@ template(name="filterSidebar")
| (<span class="username">{{ username }}</span>)
if Filter.assignees.isSelected _id
i.fa.fa-check
hr
h3
i.fa.fa-list-alt
| {{_ 'filter-dates-label' }}
ul.sidebar-list
li(class="{{#if Filter.dueAt.isSelected 'noDate'}}active{{/if}}")
a.name.js-toggle-no-due-date-filter
span.sidebar-list-item-description
| {{_ 'filter-no-due-date' }}
if Filter.dueAt.isSelected 'noDate'
i.fa.fa-check
li(class="{{#if Filter.dueAt.isSelected 'past'}}active{{/if}}")
a.name.js-toggle-overdue-filter
span.sidebar-list-item-description
| {{_ 'filter-overdue' }}
if Filter.dueAt.isSelected 'past'
i.fa.fa-check
li(class="{{#if Filter.dueAt.isSelected 'today'}}active{{/if}}")
a.name.js-toggle-due-today-filter
span.sidebar-list-item-description
| {{_ 'filter-due-today' }}
if Filter.dueAt.isSelected 'today'
i.fa.fa-check
li(class="{{#if Filter.dueAt.isSelected 'tomorrow'}}active{{/if}}")
a.name.js-toggle-due-tomorrow-filter
span.sidebar-list-item-description
| {{_ 'filter-due-tomorrow' }}
if Filter.dueAt.isSelected 'tomorrow'
i.fa.fa-check
li(class="{{#if Filter.dueAt.isSelected 'week'}}active{{/if}}")
a.name.js-toggle-due-this-week-filter
span.sidebar-list-item-description
| {{_ 'filter-due-this-week' }}
if Filter.dueAt.isSelected 'week'
i.fa.fa-check
hr
h3
i.fa.fa-list-alt
@@ -23,6 +23,31 @@ BlazeComponent.extendComponent({
Filter.assignees.toggle(this.currentData()._id);
Filter.resetExceptions();
},
'click .js-toggle-no-due-date-filter'(evt) {
evt.preventDefault();
Filter.dueAt.noDate();
Filter.resetExceptions();
},
'click .js-toggle-overdue-filter'(evt) {
evt.preventDefault();
Filter.dueAt.past();
Filter.resetExceptions();
},
'click .js-toggle-due-today-filter'(evt) {
evt.preventDefault();
Filter.dueAt.today();
Filter.resetExceptions();
},
'click .js-toggle-due-tomorrow-filter'(evt) {
evt.preventDefault();
Filter.dueAt.tomorrow();
Filter.resetExceptions();
},
'click .js-toggle-due-this-week-filter'(evt) {
evt.preventDefault();
Filter.dueAt.thisWeek();
Filter.resetExceptions();
},
'click .js-toggle-archive-filter'(evt) {
evt.preventDefault();
Filter.archive.toggle(this.currentData()._id);
@@ -39,6 +39,8 @@ template(name="swimlaneActionPopup")
hr
ul.pop-over-list
li: a.js-close-swimlane {{_ 'archive-swimlane'}}
ul.pop-over-list
li: a.js-copy-swimlane {{_ 'copy-swimlane'}}
ul.pop-over-list
li: a.js-move-swimlane {{_ 'move-swimlane'}}
@@ -55,6 +55,7 @@ Template.swimlaneActionPopup.events({
Popup.close();
},
'click .js-move-swimlane': Popup.open('moveSwimlane'),
'click .js-copy-swimlane': Popup.open('copySwimlane'),
});
Template.swimlaneActionPopup.events({
@@ -71,3 +71,13 @@ template(name="moveSwimlanePopup")
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}
template(name="copySwimlanePopup")
unless currentUser.isWorker
label {{_ 'boards'}}:
select.js-select-boards(autofocus)
each toBoard in toBoards
option(value="{{toBoard._id}}" selected="{{#if $eq toBoard.title board.title}}1{{/if}}") {{toBoard.title}}
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}
+30 -21
View File
@@ -324,45 +324,54 @@ BlazeComponent.extendComponent({
},
}).register('listsGroup');
BlazeComponent.extendComponent({
class MoveSwimlaneComponent extends BlazeComponent {
serverMethod = 'moveSwimlane';
onCreated() {
this.currentSwimlane = this.currentData();
},
}
board() {
return Boards.findOne(Session.get('currentBoard'));
},
}
toBoardsSelector() {
return {
archived: false,
'members.userId': Meteor.userId(),
type: 'board',
_id: { $ne: this.board()._id },
};
}
toBoards() {
const boards = Boards.find(
{
archived: false,
'members.userId': Meteor.userId(),
type: 'board',
_id: { $ne: this.board()._id },
},
{
sort: { title: 1 },
},
);
return boards;
},
return Boards.find(this.toBoardsSelector(), { sort: { title: 1 } });
}
events() {
return [
{
'click .js-done'() {
const swimlane = Swimlanes.findOne(this.currentSwimlane._id);
// const swimlane = Swimlanes.findOne(this.currentSwimlane._id);
const bSelect = $('.js-select-boards')[0];
let boardId;
if (bSelect) {
boardId = bSelect.options[bSelect.selectedIndex].value;
Meteor.call('moveSwimlane', this.currentSwimlane._id, boardId);
Meteor.call(this.serverMethod, this.currentSwimlane._id, boardId);
}
Popup.close();
},
},
];
},
}).register('moveSwimlanePopup');
}
}
MoveSwimlaneComponent.register('moveSwimlanePopup');
(class extends MoveSwimlaneComponent {
serverMethod = 'copySwimlane';
toBoardsSelector() {
const selector = super.toBoardsSelector();
delete selector._id;
return selector;
}
}.register('copySwimlanePopup'));
+2
View File
@@ -174,6 +174,8 @@ Template.changeLanguagePopup.helpers({
} else if (lang.name === 'fa-IR') {
// fa-IR = Persian (Iran)
name = 'فارسی/پارسی (ایران‎)';
} else if (lang.name === 'de-CH') {
name = 'Deutsch (Schweiz)';
} else if (lang.name === 'fr-BE') {
name = 'Français (Belgique)';
} else if (lang.name === 'fr-CA') {
-2
View File
@@ -1,5 +1,3 @@
import moment from 'moment';
// Helper function to replace HH with H for 24 hours format, because H allows also single-digit hours
function adjustedTimeFormat() {
return moment
+121
View File
@@ -7,6 +7,125 @@ function showFilterSidebar() {
Sidebar.setView('filter');
}
class DateFilter {
constructor() {
this._dep = new Tracker.Dependency();
this.subField = ''; // Prevent name mangling in Filter
this._filter = null;
this._filterState = null;
}
_updateState(state) {
this._filterState = state;
showFilterSidebar();
this._dep.changed();
}
// past builds a filter for all dates before now
past() {
if (this._filterState == 'past') { this.reset(); return; }
this._filter = { $lte: moment().toDate() };
this._updateState('past');
}
// today is a convenience method for calling relativeDay with 0
today() {
if (this._filterState == 'today') { this.reset(); return; }
this.relativeDay(0);
this._updateState('today');
}
// tomorrow is a convenience method for calling relativeDay with 1
tomorrow() {
if (this._filterState == 'tomorrow') { this.reset(); return; }
this.relativeDay(1);
this._updateState('tomorrow');
}
// thisWeek is a convenience method for calling relativeWeek with 1
thisWeek() {
this.relativeWeek(1);
}
// relativeDay builds a filter starting from now and including all
// days up to today +/- offset.
relativeDay(offset) {
if (this._filterState == 'day') { this.reset(); return; }
var startDay = moment().startOf('day').toDate(),
endDay = moment().endOf('day').add(offset, 'day').toDate();
if (offset >= 0) {
this._filter = { $gte: startDay, $lte: endDay };
} else {
this._filter = { $lte: startDay, $gte: endDay };
}
this._updateState('day');
}
// relativeWeek builds a filter starting from today and including all
// weeks up to today +/- offset. This considers the user's preferred
// start of week day (as defined by Meteor).
relativeWeek(offset) {
if (this._filterState == 'week') { this.reset(); return; }
// getStartDayOfWeek returns the offset from Sunday of the user's
// preferred starting day of the week. This date should be added
// to the moment start of week to get the real start of week date.
// The default is 1, meaning Monday.
const currentUser = Meteor.user();
const weekStartDay = currentUser ? currentUser.getStartDayOfWeek() : 1;
// Moments are mutable so they must be cloned before modification
var thisWeekStart = moment().startOf('day').startOf('week').add(weekStartDay, 'days');
var thisWeekEnd = thisWeekStart.clone().add(offset, 'week').endOf('day');
var startDate = thisWeekStart.toDate();
var endDate = thisWeekEnd.toDate();
if (offset >= 0) {
this._filter = { $gte: startDate, $lte: endDate };
} else {
this._filter = { $lte: startDate, $gte: endDate };
}
this._updateState('week');
}
// noDate builds a filter for items where date is not set
noDate() {
if (this._filterState == 'noDate') { this.reset(); return; }
this._filter = null;
this._updateState('noDate');
}
reset() {
this._filter = null;
this._filterState = null;
this._dep.changed();
}
isSelected(val) {
this._dep.depend();
return this._filterState == val;
}
_isActive() {
this._dep.depend();
return this._filterState !== null;
}
_getMongoSelector() {
this._dep.depend();
return this._filter;
}
_getEmptySelector() {
this._dep.depend();
return null;
}
}
// Use a "set" filter for a field that is a set of documents uniquely
// identified. For instance `{ labels: ['labelA', 'labelC', 'labelD'] }`.
// use "subField" for searching inside object Fields.
@@ -462,6 +581,7 @@ Filter = {
assignees: new SetFilter(),
archive: new SetFilter(),
hideEmpty: new SetFilter(),
dueAt: new DateFilter(),
customFields: new SetFilter('_id'),
advanced: new AdvancedFilter(),
lists: new AdvancedFilter(), // we need the ability to filter list by name as well
@@ -472,6 +592,7 @@ Filter = {
'assignees',
'archive',
'hideEmpty',
'dueAt',
'customFields',
],
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1010
View File
File diff suppressed because it is too large. Load diff
+19 -11
View File
@@ -344,6 +344,12 @@
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Karten oder Listen filtern",
"filter-dates-label": "Nach Datum filtern",
"filter-no-due-date": "Kein Fälligkeitsdatum",
"filter-overdue": "Überfällig",
"filter-due-today": "Heute fällig",
"filter-due-this-week": "Diese Woche fällig",
"filter-due-tomorrow": "Morgen fällig",
"list-filter-label": "Liste nach Titel filtern",
"filter-clear": "Filter entfernen",
"filter-labels-label": "Nach Label filtern",
@@ -900,7 +906,7 @@
"operator-member-abbrev": "m",
"operator-assignee": "Zugewiesener",
"operator-assignee-abbrev": "a",
"operator-creator": "creator",
"operator-creator": "Ersteller",
"operator-status": "Status",
"operator-due": "Fällig",
"operator-created": "erstellt",
@@ -952,7 +958,7 @@
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` – Kurzform für `user:<username>`",
"globalSearch-instructions-operator-member": "`__operator_member__:<username>` – Karten, von denen *<username>* *Mitglied* ist",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` – Karten, denen *<username>* *zugewiesen* ist",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - cards where *<username>* is the card's creator",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` – Karten, die von *<username>* angelegt wurden",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` – Karten, die spätestens in *<n>* Tagen fällig sind. `__operator_due__:__predicate_overdue__` zeigt alle Karten, für die die Fälligkeit überschritten ist.",
"globalSearch-instructions-operator-created": "`__operator_created__:<n>` – Karten, die vor maximal *<n>* Tagen angelegt wurden",
"globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` – Karten, die vor maximal *<n>* Tagen geändert wurden",
@@ -990,13 +996,15 @@
"now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen",
"move-swimlane": "Swimlane verschieben",
"moveSwimlanePopup-title": "Swimlane verschieben",
"custom-field-stringtemplate": "String Template",
"custom-field-stringtemplate-format": "Format (use %{value} as placeholder)",
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"filesReportTitle": "Files Report",
"orphanedFilesReportTitle": "Orphaned Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report"
"custom-field-stringtemplate": "String-Vorlage",
"custom-field-stringtemplate-format": "Format (verwende %{value} als Platzhalter)",
"custom-field-stringtemplate-separator": "Trenner (verwende &#32; oder &nbsp; für einen Leerschritt)",
"custom-field-stringtemplate-item-placeholder": "Drücke die Eingabetaste, um weitere Einträge hinzuzufügen",
"creator": "Ersteller",
"filesReportTitle": "Dateien-Bericht",
"orphanedFilesReportTitle": "Verwaister Datei-Bericht",
"reports": "Berichte",
"rulesReportTitle": "Regeln-Bericht",
"copy-swimlane": "Kopiere Swimlane",
"copySwimlanePopup-title": "Swimlane kopieren"
}
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+9 -1
View File
@@ -344,6 +344,12 @@
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter Cards or Lists",
"filter-dates-label": "Filter by date",
"filter-no-due-date": "No due date",
"filter-overdue": "Overdue",
"filter-due-today": "Due today",
"filter-due-this-week": "Due this week",
"filter-due-tomorrow": "Due tomorrow",
"list-filter-label": "Filter List by Title",
"filter-clear": "Clear filter",
"filter-labels-label": "Filter by label",
@@ -999,5 +1005,7 @@
"filesReportTitle": "Files Report",
"orphanedFilesReportTitle": "Orphaned Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report"
"rulesReportTitle": "Rules Report",
"copy-swimlane": "Copy Swimlane",
"copySwimlanePopup-title": "Copy Swimlane"
}
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+19 -11
View File
@@ -344,6 +344,12 @@
"list-label-short-sort": "(M)",
"filter": "Filtrer",
"filter-cards": "Filtrer les cartes ou listes",
"filter-dates-label": "Filtrer par date",
"filter-no-due-date": "Pas de date d'échéance",
"filter-overdue": "Échue",
"filter-due-today": "Arrive à échéance aujourd'hui",
"filter-due-this-week": "Arrive à échéance cette semaine",
"filter-due-tomorrow": "Arrive à échéance demain",
"list-filter-label": "Filtrer la liste par titre",
"filter-clear": "Supprimer les filtres",
"filter-labels-label": "Filtrer par étiquette",
@@ -900,7 +906,7 @@
"operator-member-abbrev": "m",
"operator-assignee": "personne assignée",
"operator-assignee-abbrev": "a",
"operator-creator": "creator",
"operator-creator": "créateur",
"operator-status": "statut",
"operator-due": "échéance",
"operator-created": "créé",
@@ -952,7 +958,7 @@
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__nom` - raccourci pour `__operator_user__:<nom>`",
"globalSearch-instructions-operator-member": "`__operator_member__:<nom>` - cartes pour lesquelles l'utilisateur *<nom>* est *participant*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<nom>` - cartes *assignées* à l'utilisateur *<nom>*",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - cards where *<username>* is the card's creator",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<utilisateur>` - cartes dont le créateur est *<utilisateur>*",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cartes qui arrive à échéance dans moins de *<n>* jours à partir d'aujourd'hui.\n`__operator_due__:__predicate_overdue__` liste toutes les cartes ayant passé la date d'échéance.",
"globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cartes qui ont été créées il y a *<n>* jours ou moins",
"globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cartes qui ont été modifiées il y a *<n>* jours ou moins",
@@ -990,13 +996,15 @@
"now-system-messages-of-all-users-are-hidden": "Les messages système de tous les utilisateurs seront dorénavant masqués",
"move-swimlane": "Déplacer le couloir",
"moveSwimlanePopup-title": "Déplacer le Couloir",
"custom-field-stringtemplate": "String Template",
"custom-field-stringtemplate-format": "Format (use %{value} as placeholder)",
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"filesReportTitle": "Files Report",
"orphanedFilesReportTitle": "Orphaned Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report"
"custom-field-stringtemplate": "Modèle de chaîne",
"custom-field-stringtemplate-format": "Format (utiliser %{valeur} pour marquer un emplacement)",
"custom-field-stringtemplate-separator": "Séparateur (utiliser &#32; ou &nbsp; pour un espace)",
"custom-field-stringtemplate-item-placeholder": "Appuyez sur Entrée pour ajouter plus d'éléments",
"creator": "Créateur",
"filesReportTitle": "Rapports sur les fichiers",
"orphanedFilesReportTitle": "Rapports sur les fichiers orphelins",
"reports": "Rapports",
"rulesReportTitle": "Rapports sur les règles",
"copy-swimlane": "Copier le couloir",
"copySwimlanePopup-title": "Copie de Couloir"
}
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+19 -11
View File
@@ -344,6 +344,12 @@
"list-label-short-sort": "(י)",
"filter": "מסנן",
"filter-cards": "סינון כרטיסים או רשימות",
"filter-dates-label": "סינון לפי תאריך",
"filter-no-due-date": "אין מועד סיום",
"filter-overdue": "מועד הסיום עבר",
"filter-due-today": "מועד הסיום הוא היום",
"filter-due-this-week": "מועד הסיום הוא השבוע",
"filter-due-tomorrow": "מועד הסיום הוא מחר",
"list-filter-label": "סינון רשימה לפי כותרת",
"filter-clear": "ניקוי המסנן",
"filter-labels-label": "סינון לפי תווית",
@@ -900,7 +906,7 @@
"operator-member-abbrev": "ח",
"operator-assignee": "אחראי",
"operator-assignee-abbrev": "א",
"operator-creator": "creator",
"operator-creator": "יוצר",
"operator-status": "מצב",
"operator-due": "תפוגה",
"operator-created": "נוצר",
@@ -952,7 +958,7 @@
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - קיצור של `user:<username>`",
"globalSearch-instructions-operator-member": "`__operator_member__:<username>` - כרטיסים בהם *<username>* *חבר*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - כרטיסים שהוקצו אל *<username>*",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - cards where *<username>* is the card's creator",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - כרטיסים שנוצרו על ידי *<username>*",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` - כרטיסים שהתוקף שלהם יפוג עד עוד *<n>* ימים מעכשיו. `__operator_due__:__predicate_overdue__ מציג את כל הכרטיסים שתאריך התוקף שלהם עבר.",
"globalSearch-instructions-operator-created": "`__operator_created__:<n>` - כרטיסים שנוצרו לפני *<n>* ימים או פחות",
"globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - כרטיסים שנערכו לפני *<n>* ימים או פחות",
@@ -990,13 +996,15 @@
"now-system-messages-of-all-users-are-hidden": "כעת הודעות המערכת של כל המשתמשים מוסתרות",
"move-swimlane": "העברת מסלול",
"moveSwimlanePopup-title": "העברת מסלול",
"custom-field-stringtemplate": "String Template",
"custom-field-stringtemplate-format": "Format (use %{value} as placeholder)",
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"filesReportTitle": "Files Report",
"orphanedFilesReportTitle": "Orphaned Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report"
"custom-field-stringtemplate": "תבנית מחרוזת",
"custom-field-stringtemplate-format": "תבנית (להשתמש ב־%{value} כממלא מקום)",
"custom-field-stringtemplate-separator": "מפריד (להשתמש ב־&#32; או ב־&nbsp; כרווח)",
"custom-field-stringtemplate-item-placeholder": "יש ללחוץ על enter כדי להוסיף עוד פריטים",
"creator": "יוצר",
"filesReportTitle": "דוח קבצים",
"orphanedFilesReportTitle": "דוח קבצים יתומים",
"reports": "דוחות",
"rulesReportTitle": "דוח כללים",
"copy-swimlane": "העתקת מסלול",
"copySwimlanePopup-title": "העתקת מסלול"
}
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+155 -11
View File
@@ -144,7 +144,7 @@
"board-view-collapse": "Slå sammen",
"board-view-gantt": "Gantt",
"board-view-lists": "Lister",
"bucket-example": "Som \"Bucket List\" for eksempel",
"bucket-example": "Som 'Bucket List' for eksempel",
"cancel": "Avbryt",
"card-archived": "Dette kortet er flyttet til Arkivet",
"board-archived": "Denne tavlen er flyttet til Arkivet",
@@ -207,7 +207,7 @@
"clipboard": "Utklippstavle eller Dra og Slipp",
"close": "Lukk",
"close-board": "Lukk Tavle",
"close-board-pop": "Du vil ha muligheten til å gjenopprette Tavle ved å klikke på \"Arkiv\"-knappen i hjem-menyen.",
"close-board-pop": "Du vil ha muligheten til å gjenopprette Tavle ved å klikke på 'Arkiv'-knappen i hjem-menyen.",
"color-black": "svart",
"color-blue": "blå",
"color-crimson": "høyrød",
@@ -322,11 +322,15 @@
"error-user-notAllowSelf": "Du kan ikke invitere deg selv",
"error-user-notCreated": "Denne Brukeren er ikke opprettet",
"error-username-taken": "Brukernavn allerede i bruk",
"error-orgname-taken": "Navn på Organisasjon allerede benyttet",
"error-teamname-taken": "Navn på Team allerede benyttet",
"error-email-taken": "E-postadressen er allerede i bruk",
"export-board": "Eksporter tavle",
"export-board-json": "Eksporter tavle til JSON",
"export-board-csv": "Eksporter tavle til CSV",
"export-board-tsv": "Eksporter tavle til TSV",
"export-board-excel": "Eksporter Tavle til Excel",
"user-can-not-export-excel": "Bruker kan ikke eksportere til Excel",
"export-board-html": "Eksporter tavle til HTML",
"exportBoardPopup-title": "Eksporter tavle",
"sort": "Sorter",
@@ -340,6 +344,12 @@
"list-label-short-sort": "(M)",
"filter": "Filtrer",
"filter-cards": "Filtrer Kort eller Lister",
"filter-dates-label": "Filtrer etter dato",
"filter-no-due-date": "Ingen forfallsdato",
"filter-overdue": "Forfalt",
"filter-due-today": "Forfall i dag",
"filter-due-this-week": "Forfall denne uke",
"filter-due-tomorrow": "Forfall i morgen",
"list-filter-label": "Filtrer Liste etter tittel",
"filter-clear": "Fjern filter",
"filter-labels-label": "Filtrer etter Etikett",
@@ -382,6 +392,7 @@
"import-csv-placeholder": "Lim inn gyldig CSV/TSV-data her",
"import-map-members": "Tilknytt medlemmer",
"import-members-map": "Importert Tavle har medlemmer. Vennligst tilknytt medlemmer som skal importeres til dine Brukere.",
"import-members-map-note": "Merk: Ikke registrerte medlemmer vil bli lagt til nåværende bruker.",
"import-show-user-mapping": "Gjennomgang tilknytning medlemmer",
"import-user-select": "Velg eksisterende Bruker som skal tilknyttes dette Medlemmet",
"importMapMembersAddPopup-title": "Velg Medlem",
@@ -527,7 +538,9 @@
"custom-login-logo-image-url": "Tilpass URL logo-bilde innlogging",
"custom-login-logo-link-url": "Tilpass URL logo-link innlogging",
"text-below-custom-login-logo": "Tekst under tilpasset logo innlogging",
"automatic-linked-url-schemes": "Egendefinerte URL-tilordninger som automatisk skal kunne klikkes på. Kun én URL-tilordning per linje",
"username": "Brukernavn",
"import-usernames": "Importer Brukernavn",
"view-it": "Se det",
"warn-list-archived": "advarsel: dette kortet er i en liste i arkivet",
"watch": "Overvåk",
@@ -546,7 +559,7 @@
"wipLimitErrorPopup-dialog-pt2": "Vennligst flytt noen oppgaver ut av denne listen eller sett høyere WIP-begrensning.",
"admin-panel": "Admin-panel",
"settings": "Innstillinger",
"people": "Folk",
"people": "Medlemmer",
"registration": "Registrering",
"disable-self-registration": "Deaktiver selvregistrering",
"invite": "Inviter",
@@ -599,7 +612,8 @@
"minutes": "minutter",
"seconds": "sekunder",
"show-field-on-card": "Vis dette feltet på kort",
"automatically-field-on-card": "Automatisk oppretting av felt på alle kort",
"automatically-field-on-card": "Legg til felt på nye kort",
"always-field-on-card": "Legg til felt på alle kort",
"showLabel-field-on-card": "Vis feltetikett på minikort",
"yes": "Ja",
"no": "Nei",
@@ -607,6 +621,7 @@
"accounts-allowEmailChange": "Tillat endring e-post",
"accounts-allowUserNameChange": "Tillat endring brukernavn",
"createdAt": "Opprettet på",
"modifiedAt": "Endret kl. ",
"verified": "Verifisert",
"active": "Aktiv",
"card-received": "Mottatt",
@@ -669,6 +684,7 @@
"r-removed-from": "Fjernet fra",
"r-the-board": "tavlen",
"r-list": "listen",
"list": "Liste",
"set-filter": "Sett filter",
"r-moved-to": "Flyttet til",
"r-moved-from": "Flyttet fra",
@@ -851,16 +867,144 @@
"person": "Person",
"my-cards": "Mine Kort",
"card": "Kort",
"list": "Liste",
"board": "Tavle",
"context-separator": "/",
"myCardsSortChange-title": "Sortering mine Kort",
"myCardsSortChangePopup-title": "Sortering mine Kort",
"myCardsSortChange-choice-board": "På Tavle",
"myCardsSortChange-choice-dueat": "På dato Varighet",
"dueCards-title": "Due Cards",
"dueCardsViewChange-title": "Due Cards View",
"dueCardsViewChange-choice-me": "Me",
"dueCardsViewChange-choice-all": "All Users",
"dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.",
"broken-cards": "Broken Cards"
"dueCards-title": "Forfalte Kort",
"dueCardsViewChange-title": "Oversikt Forfalte Kort",
"dueCardsViewChangePopup-title": "Oversikt Forfalte Kort",
"dueCardsViewChange-choice-me": "Meg",
"dueCardsViewChange-choice-all": "Alle Brukere",
"dueCardsViewChange-choice-all-description": "Viser alle kort som ikke er ferdigstilt, med \"Forfallsdato\" fra tavler som brukeren har rettigheter til.",
"broken-cards": "Broken Cards",
"board-title-not-found": "Tavle '%s' ikke funnet.",
"swimlane-title-not-found": "Svømmebane '%s' ikke funnet.",
"list-title-not-found": "Liste '%s' ikke funnet.",
"label-not-found": "Merke '%s' ikke funnet.",
"label-color-not-found": "Farge på Merke %s ikke funnet.",
"user-username-not-found": "Brukernavn '%s' ikke funnet.",
"comment-not-found": "Kort med kommentar som inneholder teksten '%s' ikke funnet.",
"globalSearch-title": "Søk i alle Tavler.",
"no-cards-found": "Ingen Kort funnet.",
"one-card-found": "Ett Kort funnet.",
"n-cards-found": "%s Kort funnet.",
"n-n-of-n-cards-found": "__start__-__end__ av __total__ Kort funnet",
"operator-board": "Tavle",
"operator-board-abbrev": "t",
"operator-swimlane": "svømmebane",
"operator-swimlane-abbrev": "s",
"operator-list": "listen",
"operator-list-abbrev": "l",
"operator-label": "etikett",
"operator-label-abbrev": "#",
"operator-user": "bruker",
"operator-user-abbrev": "@",
"operator-member": "Medlem",
"operator-member-abbrev": "m",
"operator-assignee": "Rettighetstaker",
"operator-assignee-abbrev": "r",
"operator-creator": "oppretter",
"operator-status": "status",
"operator-due": "forfall",
"operator-created": "opprettet",
"operator-modified": "endret",
"operator-sort": "sorter",
"operator-comment": "kommentar",
"operator-has": "har",
"operator-limit": "begens",
"predicate-archived": "arkivert",
"predicate-open": "åpne",
"predicate-ended": "avsluttet",
"predicate-all": "alle",
"predicate-overdue": "forfalt",
"predicate-week": "uke",
"predicate-month": "måned",
"predicate-quarter": "kvartal",
"predicate-year": "år",
"predicate-due": "forfall",
"predicate-modified": "endret",
"predicate-created": "opprettet",
"predicate-attachment": "vedlegg",
"predicate-description": "beskrivelse",
"predicate-checklist": "sjekkliste",
"predicate-start": "start",
"predicate-end": "slutt",
"predicate-assignee": "Rettighetstaker",
"predicate-member": "Medlem",
"predicate-public": "offentlig",
"predicate-private": "privat",
"operator-unknown-error": "%s er ikke en operator",
"operator-number-expected": "operator __operator__ forventet et tall, mottok '__value__'",
"operator-sort-invalid": "sortering av '%s' er ugyldig",
"operator-status-invalid": "'%s' er ikke en gyldig status",
"operator-has-invalid": "%s er ikke en gyldig kontroll av eksistens",
"operator-limit-invalid": "%ser ikke en gyldig begrensning. Begrensning må være et positivt heltall.",
"next-page": "Neste Side",
"previous-page": "Forrige Side",
"heading-notes": "Notater",
"globalSearch-instructions-heading": "Søk etter Instruksjoner",
"globalSearch-instructions-description": "Søk kan inkludere operatorer for å avgrense søket. Operatoren spesifiseres ved å skrive operatorens navn og verdi, atskilt med et kolon. For eksempel vil en spesifisering av operatoren `liste:Blokkert' begrense søket til Kort som er inkludert i en liste med navnet \"Blokkert\". Hvis verdien inneholder mellomrom eller spesialtegn, må den være spesifisert i anførselstegn (f.eks. `__operator_list__:\"To Review\"`).",
"globalSearch-instructions-operators": "Tilgjengelige operatorer:",
"globalSearch-instructions-operator-board": "`__operator_board__:<title>` - kort i tavlene samsvarer med angitt *<title>*",
"globalSearch-instructions-operator-list": "`__operator_list__:<title>` - kort i listene stemmer med angitt *<title>*",
"globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - kort i svømmebaner samsvarer med angitt *<title>*",
"globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - kort med en kommetar inneholdende *<text>*.",
"globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - kort med merke som samsvarer med *<color>* or *<name>",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name|color>` - forkortelse for `__operator_label__:<color>` eller `__operator_label__:<name>`",
"globalSearch-instructions-operator-user": "`__operator_user__:<username>` - kort hvor *<username>* ier et *medlemr* or *rettighetstaker*",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - forkortelse for bruker:<username>`",
"globalSearch-instructions-operator-member": "`__operator_member__:<username>` - kort hvor *<username>* er et *medlem*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - kort hvor *<username>* er en *rettighetstaker*",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - kort hvor *<username>* er kortenes oppretter",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` - kort som forfaller om *<n>* dager fra nå. `__operator_due__:__predicate_overdue__ lister alle kort med passert forfallsdato.",
"globalSearch-instructions-operator-created": "`__operator_created__:<n>` - kort som er opprettet *<n>* dager siden eller mindre",
"globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - kort som er modifisert *<n>* dager siden eller mindre",
"globalSearch-instructions-operator-status": "`__operator_status__:<status>` - hvor *<status>* er en av de følgende:",
"globalSearch-instructions-status-archived": "`__predicate_archived__` - arkiverte kort",
"globalSearch-instructions-status-all": "`__predicate_all__` - alle arkiverte eller ikke arkiverte kort",
"globalSearch-instructions-status-ended": "`__predicate_ended__` - kort med en sluttdato",
"globalSearch-instructions-status-public": "`__predicate_public__` - kort bare i offentlige tavler",
"globalSearch-instructions-status-private": "`__predicate_private__` - kort bare i private tavler",
"globalSearch-instructions-operator-has": "`__operator_has__:<field>` - hvor *<field>* er en av `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` eller `__predicate_member__`. Plassering av et `-` foran *<field>* søk i mangel på en verdi i et felt (f.eks. `har:-forfall` søker etter alle kort uten en forfallsdato).",
"globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - hvor *<sort-name>* er en av `__predicate_due__`, `__predicate_created__` eller `__predicate_modified__`. For en synkende sortering, plassér en `-` foran navn på sortering.",
"globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - hvor*<n>* er et positivt heltall som angir antall kort som skal vises på siden.",
"globalSearch-instructions-notes-1": "Flere operatorer kan angis.",
"globalSearch-instructions-notes-2": "Like operatorer er knyttet sammen med \"ELLER\". Kort som samsvarer med noen av de angitte kriteriene vil returneres.\n`__operator_list__:Tilgjengelig __operator_list__:Blokkert` vil returnere Kort som inneholder lister med navnet \"Blokkert\" eller \"Tilgjengelig\".",
"globalSearch-instructions-notes-3": "Forskjellige operatorer er knyttet sammen med *OG*. Bare kort som samsvarer med alle de angitte kriteriene vil returneres. `__operator_list__:Tilgjengelig __operator_list__:rød` vil kun returnere kort i listen *Tilgjengelig* og som er markert med et *rødt* merke.",
"globalSearch-instructions-notes-3-2": "Dager kan angis som et positivt eller negativt heltall, eller ved bruk av `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` eller `__predicate_year__` for den aktuelle perioden.",
"globalSearch-instructions-notes-4": "Tekstsøk er ikke \"case\"-sensitive.",
"globalSearch-instructions-notes-5": "Som standard er arkiverte kort ikke søkbare, ",
"link-to-search": "Link til dette søket",
"excel-font": "Arial",
"number": "Nummer",
"label-colors": "Farge Merke",
"label-names": "Navn på Merke",
"archived-at": "arkivert på",
"sort-cards": "Sortér Kort",
"cardsSortPopup-title": "Sortér Kort",
"due-date": "Forfalldato",
"server-error": "Serverfeil",
"server-error-troubleshooting": "For hjelp til feilsøk ber vi om innsending av feilmelding generert av server.\nFor Snap-installasjon, kjør: `sudo snap logs wekan.wekan`\nFor Docker-installasjon, kjør: `sudo docker logs wekan-app`",
"title-alphabetically": "Tittel (alfabetisk)",
"created-at-newest-first": "Opprettet på (Nyeste Først)",
"created-at-oldest-first": "Opprettet på (Eldste Først)",
"links-heading": "Linker",
"hide-system-messages-of-all-users": "Skjul systemmeldinger for alle brukere",
"now-system-messages-of-all-users-are-hidden": "Systemmeldinger er nå skjult for alle brukere",
"move-swimlane": "Flytt Svømmebane",
"moveSwimlanePopup-title": "Flytt Svømmebane",
"custom-field-stringtemplate": "Mal Tekststreng",
"custom-field-stringtemplate-format": "Format (bruk %{value} som standardverdi)",
"custom-field-stringtemplate-separator": "Tekstseparator (bruk &#32; eller &nbsp; som separator)",
"custom-field-stringtemplate-item-placeholder": "Trykk Enter for å legge til flere objekt",
"creator": "Oppretter",
"filesReportTitle": "Rapportering Filer",
"orphanedFilesReportTitle": "Rapportering Foreldreløse Filer",
"reports": "Rapportering",
"rulesReportTitle": "Rapportering Regler",
"copy-swimlane": "Kopiér Svømmebane",
"copySwimlanePopup-title": "Kopiér Svømmebane"
}
+19 -11
View File
@@ -172,7 +172,7 @@
"card-edit-voting": "Wijzig stemming",
"editVoteEndDatePopup-title": "Wijzig einddatum stemming",
"allowNonBoardMembers": "Sta alle ingelogde gebruikers toe",
"vote-question": "Stemvraag",
"vote-question": "Vraag",
"vote-public": "Toon wie wat gestemd heeft",
"vote-for-it": "Voor",
"vote-against": "tegen",
@@ -344,6 +344,12 @@
"list-label-short-sort": "(M)",
"filter": "Filter",
"filter-cards": "Filter kaarten of lijsten",
"filter-dates-label": "Filter op datum",
"filter-no-due-date": "Geen vervaldatum",
"filter-overdue": "verlopen",
"filter-due-today": "Vervalt vandaag",
"filter-due-this-week": "Vervalt deze week",
"filter-due-tomorrow": "Vervalt morgen",
"list-filter-label": "Filter lijst op titel",
"filter-clear": "Wis filter",
"filter-labels-label": "Filter op label",
@@ -900,7 +906,7 @@
"operator-member-abbrev": "m",
"operator-assignee": "toegewezen aan",
"operator-assignee-abbrev": "a",
"operator-creator": "creator",
"operator-creator": "aangemaakt door",
"operator-status": "status",
"operator-due": "verval",
"operator-created": "aangemaakt",
@@ -952,7 +958,7 @@
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - afkorting voor `gebruiker:<username>`",
"globalSearch-instructions-operator-member": "`__operator_member__:<username>` - kaarten waar *<username>* een *lid* is",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - kaarten waar *<username>* een *actiehouder* is",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - cards where *<username>* is the card's creator",
"globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - kaarten die door *<username>* aangemaakt zijn",
"globalSearch-instructions-operator-due": "`__operator_due__:<n>` - kaarten die achterstallig zijn *<n>* dagen vanaf nu. `__operator_due__:__predicate_overdue__ lists alle kaarten nu hun geplande datum.",
"globalSearch-instructions-operator-created": "`__operator_created__:<n>` - kaarten die zijn aangemaakt *<n>* dagen of minder geleden",
"globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - kaarten die zijn bijgewerkt *<n>* dagen of minder geleden",
@@ -991,12 +997,14 @@
"move-swimlane": "Verplaats Swimlane",
"moveSwimlanePopup-title": "Verplaats Swimlane",
"custom-field-stringtemplate": "String Template",
"custom-field-stringtemplate-format": "Format (use %{value} as placeholder)",
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"filesReportTitle": "Files Report",
"orphanedFilesReportTitle": "Orphaned Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report"
"custom-field-stringtemplate-format": "Format (gebruik %{waarde} als tijdelijke aanduiding)",
"custom-field-stringtemplate-separator": "Scheidingsteken (gebruik &#32; of &nbsp; voor een spatie)",
"custom-field-stringtemplate-item-placeholder": "Druk op Enter om meer items toe te voegen",
"creator": "Aangemaakt door",
"filesReportTitle": "Bestanden Rapportage",
"orphanedFilesReportTitle": "Verweesde Bestanden Rapportage",
"reports": "Rapportages",
"rulesReportTitle": "Regels Rapportage",
"copy-swimlane": "Kopieer Swimlane",
"copySwimlanePopup-title": "Kopieer Swimlane"
}
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+9 -1
View File
@@ -344,6 +344,12 @@
"list-label-short-sort": "(M)",
"filter": "Filtrar",
"filter-cards": "Filtrar Cartões ou Listas",
"filter-dates-label": "Filtrar por data",
"filter-no-due-date": "Sem prazo final",
"filter-overdue": "Atrasado",
"filter-due-today": "Para hoje",
"filter-due-this-week": "Para nesta semana",
"filter-due-tomorrow": "Para amanhã",
"list-filter-label": "Filtrar Lista por Título",
"filter-clear": "Limpar filtro",
"filter-labels-label": "Filtrar por etiqueta",
@@ -998,5 +1004,7 @@
"filesReportTitle": "Relatório de Arquivos",
"orphanedFilesReportTitle": "Relatório de Arquivos Órfãos",
"reports": "Relatórios",
"rulesReportTitle": "Regras de Relatório"
"rulesReportTitle": "Regras de Relatório",
"copy-swimlane": "Copiar Raia",
"copySwimlanePopup-title": "Copiar Raia"
}
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+17 -9
View File
@@ -344,6 +344,12 @@
"list-label-short-sort": "(M)",
"filter": "Фильтр",
"filter-cards": "Фильтр Карточек или Списков",
"filter-dates-label": "Фильтр по дате",
"filter-no-due-date": "Без срока выполнения",
"filter-overdue": "Просрочено",
"filter-due-today": "Крайний срок - сегодня",
"filter-due-this-week": "Крайний срок - эта неделя",
"filter-due-tomorrow": "Крайний срок - завтра",
"list-filter-label": "Фильтровать Список по Названию",
"filter-clear": "Очистить фильтр",
"filter-labels-label": "Фильтр по метке",
@@ -900,7 +906,7 @@
"operator-member-abbrev": "m",
"operator-assignee": "Кому назначено",
"operator-assignee-abbrev": "a",
"operator-creator": "creator",
"operator-creator": "автор",
"operator-status": "статус",
"operator-due": "выполнить к",
"operator-created": "создано",
@@ -990,13 +996,15 @@
"now-system-messages-of-all-users-are-hidden": "Системные сообщения всех пользователей скрыты",
"move-swimlane": "Переместить дорожку",
"moveSwimlanePopup-title": "Переместить дорожку",
"custom-field-stringtemplate": "String Template",
"custom-field-stringtemplate-format": "Format (use %{value} as placeholder)",
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate": "Строковый шаблон",
"custom-field-stringtemplate-format": "Формат (используйте %{значение} для подстановки)",
"custom-field-stringtemplate-separator": "Разделитель (для пробела используйте &#32; или &nbsp;)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "Creator",
"filesReportTitle": "Files Report",
"orphanedFilesReportTitle": "Orphaned Files Report",
"reports": "Reports",
"rulesReportTitle": "Rules Report"
"creator": "Автор",
"filesReportTitle": "Отчёт по файлам",
"orphanedFilesReportTitle": "Отчёт по потерянным файлам",
"reports": "Отчёты",
"rulesReportTitle": "Отчёт по правилам",
"copy-swimlane": "Скопировать дорожку",
"copySwimlanePopup-title": "Скопировать дорожку"
}
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+1009 -1001
View File
File diff suppressed because it is too large. Load diff
+22 -27
View File
@@ -287,7 +287,7 @@ Cards.attachSchema(
*/
type: String,
defaultValue: TYPE_CARD,
allowedValues: [TYPE_CARD, TYPE_LINKED_CARD, TYPE_LINKED_BOARD],
// allowedValues: [TYPE_CARD, TYPE_LINKED_CARD, TYPE_LINKED_BOARD, TYPE_TEMPLATE_CARD],
},
linkedId: {
/**
@@ -641,37 +641,32 @@ Cards.helpers({
);
},
allSubtasks() {
return Cards.find(
{
parentId: this._id,
archived: false,
},
{
sort: {
sort: 1,
},
},
);
},
subtasksCount() {
return Cards.find({
parentId: this._id,
archived: false,
}).count();
},
subtasksFinishedCount() {
subtasksFinished() {
return Cards.find({
parentId: this._id,
archived: true,
}).count();
});
},
subtasksFinished() {
const finishCount = this.subtasksFinishedCount();
return finishCount > 0 && this.subtasksCount() === finishCount;
allSubtasks() {
return Cards.find({
parentId: this._id
});
},
subtasksCount() {
const subtasks = this.subtasks();
return subtasks.count();
},
subtasksFinishedCount() {
const subtasksArchived = this.subtasksFinished();
return subtasksArchived.count();
},
allSubtasksCount() {
const allSubtasks = this.allSubtasks();
return allSubtasks.count();
},
allowsSubtasks() {
+27 -4
View File
@@ -239,7 +239,7 @@ export class ExporterExcel {
},
{
key: 'c',
width: 20,
width: 60,
},
{
key: 'd',
@@ -342,6 +342,10 @@ export class ExporterExcel {
key: 'p',
width: 20,
},
{
key: 'q',
width: 20,
},
];
//add title line
@@ -378,10 +382,23 @@ export class ExporterExcel {
for (const klist in result.lists) {
jlist[result.lists[klist]._id] = result.lists[klist].title;
}
//get kanban swimlanes info
const jswimlane = {};
for (const kswimlane in result.swimlanes) {
jswimlane[result.swimlanes[kswimlane]._id] = result.swimlanes[kswimlane].title;
}
//get kanban label info
const jlabel = {};
for (const klabel in result.labels) {
jlabel[result.labels[klabel]._id] = result.labels[klabel].name;
var isFirst = 1;
for (const klabel in result.labels){
console.log(klabel);
if (isFirst == 0){
jlabel[result.labels[klabel]._id] = `,${result.labels[klabel].name}`;
}
else{
isFirst = 0;
jlabel[result.labels[klabel]._id] = result.labels[klabel].name;
}
}
//add data +8 hours
function addTZhours(jdate) {
@@ -413,7 +430,7 @@ export class ExporterExcel {
size: 10,
bold: true,
};
ws.mergeCells('F3:P3');
ws.mergeCells('F3:Q3');
ws.getCell('B3').style = {
font: {
name: TAPi18n.__('excel-font'),
@@ -487,6 +504,7 @@ export class ExporterExcel {
];
//add card title
//ws.addRow().values = ['编号', '标题', '创建人', '创建时间', '更新时间', '列表', '成员', '描述', '标签'];
//this is where order in which the excel file generates
ws.addRow().values = [
TAPi18n.__('number'),
TAPi18n.__('title'),
@@ -499,6 +517,7 @@ export class ExporterExcel {
TAPi18n.__('card-due'),
TAPi18n.__('card-end'),
TAPi18n.__('list'),
TAPi18n.__('swimlane'),
TAPi18n.__('assignee'),
TAPi18n.__('members'),
TAPi18n.__('labels'),
@@ -522,6 +541,7 @@ export class ExporterExcel {
allBorder('N5');
allBorder('O5');
allBorder('P5');
allBorder('Q5');
cellCenter('A5');
cellCenter('B5');
cellCenter('C5');
@@ -538,6 +558,7 @@ export class ExporterExcel {
cellCenter('N5');
cellCenter('O5');
cellCenter('P5');
cellCenter('Q5');
ws.getRow(5).font = {
name: TAPi18n.__('excel-font'),
size: 12,
@@ -580,6 +601,7 @@ export class ExporterExcel {
addTZhours(jcard.dueAt),
addTZhours(jcard.endAt),
jlist[jcard.listId],
jswimlane[jcard.swimlaneId],
jcassig,
jcmem,
jclabel,
@@ -604,6 +626,7 @@ export class ExporterExcel {
allBorder(`N${y}`);
allBorder(`O${y}`);
allBorder(`P${y}`);
allBorder(`Q${y}`);
cellCenter(`A${y}`);
ws.getCell(`B${y}`).alignment = {
wrapText: true,
+39
View File
@@ -147,6 +147,45 @@ Swimlanes.helpers({
});
},
move(toBoardId) {
this.lists().forEach(list => {
const toList = Lists.findOne({
boardId: toBoardId,
title: list.title,
archived: false,
});
let toListId;
if (toList) {
toListId = toList._id;
} else {
toListId = Lists.insert({
title: list.title,
boardId: toBoardId,
type: list.type,
archived: false,
wipLimit: list.wipLimit,
});
}
Cards.find({
listId: list._id,
swimlaneId: this._id,
}).forEach(card => {
card.move(toBoardId, this._id, toListId);
});
});
Swimlanes.update(this._id, {
$set: {
boardId: toBoardId,
},
});
// make sure there is a default swimlane
this.board().getDefaultSwimline();
},
cards() {
return Cards.find(
Filter.mongoSelector({
+13 -11
View File
@@ -208,17 +208,19 @@ export class TrelloCreator {
}
});
}
trelloBoard.labels.forEach(label => {
const labelToCreate = {
_id: Random.id(6),
color: label.color ? label.color : 'black',
name: label.name,
};
// We need to remember them by Trello ID, as this is the only ref we have
// when importing cards.
this.labels[label.id] = labelToCreate._id;
boardToCreate.labels.push(labelToCreate);
});
if (trelloBoard.labels) {
trelloBoard.labels.forEach(label => {
const labelToCreate = {
_id: Random.id(6),
color: label.color ? label.color : 'black',
name: label.name,
};
// We need to remember them by Trello ID, as this is the only ref we have
// when importing cards.
this.labels[label.id] = labelToCreate._id;
boardToCreate.labels.push(labelToCreate);
});
}
const boardId = Boards.direct.insert(boardToCreate);
Boards.direct.update(boardId, { $set: { modifiedAt: this._now() } });
// log activity
+87 -38
View File
@@ -466,6 +466,7 @@ class SchemaProperty(object):
self.type = 'object'
self.blackbox = False
self.required = True
imports = {}
for p in statement.value.properties:
try:
if p.key.name == 'type':
@@ -477,41 +478,79 @@ class SchemaProperty(object):
elif p.key.name == 'allowedValues':
self.type = 'enum'
if p.value.type == 'ArrayExpression':
self.enum = [e.value.lower() for e in p.value.elements]
elif p.value.type == 'Identifier':
# tree wide lookout for the identifier
def find_variable(elem, match):
if isinstance(elem, list):
for value in elem:
ret = find_variable(value, match)
self.enum = []
def parse_enum(value, enum):
if value.type == 'ArrayExpression':
for e in value.elements:
parse_enum(e, enum)
elif value.type == 'Literal':
enum.append(value.value.lower())
return
elif value.type == 'Identifier':
# tree wide lookout for the identifier
def find_variable(elem, match):
if isinstance(elem, list):
for value in elem:
ret = find_variable(value, match)
if ret is not None:
return ret
try:
items = elem.items()
except AttributeError:
return None
except TypeError:
return None
if (elem.type == 'VariableDeclarator' and
elem.id.name == match):
return elem
elif (elem.type == 'ImportSpecifier' and
elem.local.name == match):
# we have to treat that case in the caller, because we lack
# information of the source of the import at that point
return elem
elif (elem.type == 'ExportNamedDeclaration' and
elem.declaration.type == 'VariableDeclaration'):
ret = find_variable(elem.declaration.declarations, match)
if ret is not None:
return ret
try:
items = elem.items()
except AttributeError:
return None
except TypeError:
for type, value in items:
ret = find_variable(value, match)
if ret is not None:
if ret.type == 'ImportSpecifier':
# first open and read the import source, if
# we haven't already done so
path = elem.source.value
if elem.source.value.startswith('/'):
script_dir = os.path.dirname(os.path.realpath(__file__))
path = os.path.abspath(os.path.join('{}/..'.format(script_dir), elem.source.value.lstrip('/')))
else:
path = os.path.abspath(os.path.join(os.path.dirname(context.path), elem.source.value))
path += '.js'
if path not in imports:
imported_context = parse_file(path)
imports[path] = imported_context
imported_context = imports[path]
# and then re-run the find in the imported file
return find_variable(imported_context.program.body, match)
return ret
return None
if (elem.type == 'VariableDeclarator' and
elem.id.name == match):
return elem
elem = find_variable(context.program.body, value.name)
for type, value in items:
ret = find_variable(value, match)
if ret is not None:
return ret
if elem is None:
raise TypeError('can not find "{}"'.format(value.name))
return None
return parse_enum(elem.init, enum)
elem = find_variable(context.program.body, p.value.name)
if elem.init.type != 'ArrayExpression':
raise TypeError('can not find "{}"'.format(p.value.name))
self.enum = [e.value.lower() for e in elem.init.elements]
parse_enum(p.value, self.enum)
elif p.key.name == 'blackbox':
self.blackbox = True
@@ -568,6 +607,9 @@ class SchemaProperty(object):
# deal with subschemas
if '.' in name:
subschema = name.split('.')[0]
subschema = subschema.capitalize()
if name.endswith('$'):
# reference in reference
subschema = ''.join([n.capitalize() for n in self.name.split('.')[:-1]])
@@ -582,9 +624,12 @@ class SchemaProperty(object):
print(''' {}:
type: object'''.format(subschema))
return current_schema
elif '$' in name:
# In the form of 'profile.notifications.$.activity'
subschema = name[:name.index('$') - 1] # 'profile.notifications'
subschema = ''.join([s.capitalize() for s in subschema.split('.')])
subschema = name.split('.')[0]
schema_name = self.schema.name + subschema.capitalize()
schema_name = self.schema.name + subschema
name = name.split('.')[-1]
if current_schema != schema_name:
@@ -716,7 +761,7 @@ class Schemas(object):
# then print the references
current = None
required_properties = []
properties = [f for f in self.fields if '.' in f.name and not f.name.endswith('$')]
properties = [f for f in self.fields if '.' in f.name and not '$' in f.name]
for prop in properties:
current = prop.print_openapi(6, current, required_properties)
@@ -727,7 +772,7 @@ class Schemas(object):
required_properties = []
# then print the references in the references
for prop in [f for f in self.fields if '.' in f.name and f.name.endswith('$')]:
for prop in [f for f in self.fields if '.' in f.name and '$' in f.name]:
current = prop.print_openapi(6, current, required_properties)
if required_properties:
@@ -757,6 +802,15 @@ class Context(object):
return ''.join(self._txt[begin - 1:end])
def parse_file(path):
try:
# if the file failed, it's likely it doesn't contain a schema
context = Context(path)
except:
return
return context
def parse_schemas(schemas_dir):
schemas = {}
@@ -766,12 +820,7 @@ def parse_schemas(schemas_dir):
files.sort()
for filename in files:
path = os.path.join(root, filename)
try:
# if the file failed, it's likely it doesn't contain a schema
context = Context(path)
except:
continue
context = parse_file(path)
program = context.program
current_schema = None
@@ -1012,7 +1061,7 @@ def main():
script_dir = os.path.dirname(os.path.realpath(__file__))
parser.add_argument('--release', default='git-master', nargs=1,
help='the current version of the API, can be retrieved by running `git describe --tags --abbrev=0`')
parser.add_argument('dir', default='{}/../models'.format(script_dir), nargs='?',
parser.add_argument('dir', default=os.path.abspath('{}/../models'.format(script_dir)), nargs='?',
help='the directory where to look for schemas')
args = parser.parse_args()
+16 -7576
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v5.19.0",
"version": "v5.26.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+182 -83
View File
@@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Wekan REST API v5.17</title>
<title>Wekan REST API v5.26</title>
<style>
</style>
@@ -1486,6 +1486,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<!-- backwards compatibility -->
<!-- backwards compatibility -->
<!-- backwards compatibility -->
<!-- backwards compatibility -->
<!-- backwards compatibility -->
</head>
@@ -1549,7 +1550,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<ul class="toc-list-h1">
<li>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.17">Wekan REST API v5.17</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.26">Wekan REST API v5.26</a>
</li>
@@ -2062,11 +2063,6 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
</li>
<li>
<a href="#tocs_usersemails" class="toc-h2 toc-link" data-title="">UsersEmails</a>
</li>
<li>
<a href="#tocs_usersprofile" class="toc-h2 toc-link" data-title="">UsersProfile</a>
@@ -2077,6 +2073,16 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
</li>
<li>
<a href="#tocs_usersemails" class="toc-h2 toc-link" data-title="">UsersEmails</a>
</li>
<li>
<a href="#tocs_usersprofilenotifications" class="toc-h2 toc-link" data-title="">UsersProfileNotifications</a>
</li>
</ul>
</li>
@@ -2092,7 +2098,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id="wekan-rest-api">Wekan REST API v5.17</h1>
<h1 id="wekan-rest-api">Wekan REST API v5.26</h1>
<blockquote>
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
</blockquote>
@@ -3478,7 +3484,7 @@ System.out.println(response.toString());
{
<span class="hljs-attr">&quot;_id&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;name&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;color&quot;</span>: <span class="hljs-string">&quot;green&quot;</span>
<span class="hljs-attr">&quot;color&quot;</span>: <span class="hljs-string">&quot;white&quot;</span>
}
],
<span class="hljs-attr">&quot;members&quot;</span>: [
@@ -3506,6 +3512,7 @@ System.out.println(response.toString());
<span class="hljs-attr">&quot;allowsDescriptionText&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsActivities&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsLabels&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCreator&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsAssignee&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsMembers&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsRequestedBy&quot;</span>: <span class="hljs-literal">true</span>,
@@ -3520,7 +3527,7 @@ System.out.println(response.toString());
<span class="hljs-attr">&quot;endAt&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;spentTime&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;isOvertime&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;type&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;type&quot;</span>: <span class="hljs-string">&quot;board&quot;</span>,
<span class="hljs-attr">&quot;sort&quot;</span>: <span class="hljs-number">0</span>
}
</code></pre>
@@ -15914,9 +15921,12 @@ System.out.println(response.toString());
<span class="hljs-string">&quot;string&quot;</span>
],
<span class="hljs-attr">&quot;language&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [],
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [
{
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
}
],
<span class="hljs-attr">&quot;showCardsCountAt&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;startDayOfWeek&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;starredBoards&quot;</span>: [
@@ -16652,9 +16662,12 @@ System.out.println(response.toString());
<span class="hljs-string">&quot;string&quot;</span>
],
<span class="hljs-attr">&quot;language&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [],
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [
{
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
}
],
<span class="hljs-attr">&quot;showCardsCountAt&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;startDayOfWeek&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;starredBoards&quot;</span>: [
@@ -18169,7 +18182,7 @@ UserSecurity
{
<span class="hljs-attr">&quot;_id&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;name&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;color&quot;</span>: <span class="hljs-string">&quot;green&quot;</span>
<span class="hljs-attr">&quot;color&quot;</span>: <span class="hljs-string">&quot;white&quot;</span>
}
],
<span class="hljs-attr">&quot;members&quot;</span>: [
@@ -18197,6 +18210,7 @@ UserSecurity
<span class="hljs-attr">&quot;allowsDescriptionText&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsActivities&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsLabels&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCreator&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsAssignee&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsMembers&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsRequestedBy&quot;</span>: <span class="hljs-literal">true</span>,
@@ -18211,7 +18225,7 @@ UserSecurity
<span class="hljs-attr">&quot;endAt&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;spentTime&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;isOvertime&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;type&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;type&quot;</span>: <span class="hljs-string">&quot;board&quot;</span>,
<span class="hljs-attr">&quot;sort&quot;</span>: <span class="hljs-number">0</span>
}
@@ -18398,6 +18412,13 @@ UserSecurity
<td>Does the board allows labels?</td>
</tr>
<tr>
<td>allowsCreator</td>
<td>boolean</td>
<td>true</td>
<td>none</td>
<td>Does the board allow creator?</td>
</tr>
<tr>
<td>allowsAssignee</td>
<td>boolean</td>
<td>true</td>
@@ -18500,7 +18521,7 @@ UserSecurity
<td>string</td>
<td>true</td>
<td>none</td>
<td>The type of board</td>
<td>The type of board<br />possible values: board, template-board, template-container</td>
</tr>
<tr>
<td>sort</td>
@@ -18612,6 +18633,18 @@ UserSecurity
<td>presentParentTask</td>
<td>no-parent</td>
</tr>
<tr>
<td>type</td>
<td>board</td>
</tr>
<tr>
<td>type</td>
<td>template-board</td>
</tr>
<tr>
<td>type</td>
<td>template-container</td>
</tr>
</tbody>
</table>
<h2 id="tocs_boardslabels">BoardsLabels</h2>
@@ -18622,7 +18655,7 @@ UserSecurity
<pre class="highlight tab tab-json"><code>{
<span class="hljs-attr">&quot;_id&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;name&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;color&quot;</span>: <span class="hljs-string">&quot;green&quot;</span>
<span class="hljs-attr">&quot;color&quot;</span>: <span class="hljs-string">&quot;white&quot;</span>
}
</code></pre>
@@ -18672,6 +18705,10 @@ UserSecurity
<tbody>
<tr>
<td>color</td>
<td>white</td>
</tr>
<tr>
<td>color</td>
<td>green</td>
</tr>
<tr>
@@ -19564,7 +19601,9 @@ UserSecurity
<span class="hljs-attr">&quot;currencyCode&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;dropdownItems&quot;</span>: [
{}
]
],
<span class="hljs-attr">&quot;stringtemplateFormat&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;stringtemplateSeparator&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
},
<span class="hljs-attr">&quot;showOnCard&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;automaticallyOnCard&quot;</span>: <span class="hljs-literal">true</span>,
@@ -19693,6 +19732,10 @@ UserSecurity
<td>type</td>
<td>currency</td>
</tr>
<tr>
<td>type</td>
<td>stringtemplate</td>
</tr>
</tbody>
</table>
<h2 id="tocs_customfieldssettings">CustomFieldsSettings</h2>
@@ -19704,7 +19747,9 @@ UserSecurity
<span class="hljs-attr">&quot;currencyCode&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;dropdownItems&quot;</span>: [
{}
]
],
<span class="hljs-attr">&quot;stringtemplateFormat&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;stringtemplateSeparator&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
}
</code></pre>
@@ -19734,6 +19779,20 @@ UserSecurity
<td>none</td>
<td>list of drop down items objects</td>
</tr>
<tr>
<td>stringtemplateFormat</td>
<td>string</td>
<td>false</td>
<td>none</td>
<td>none</td>
</tr>
<tr>
<td>stringtemplateSeparator</td>
<td>string</td>
<td>false</td>
<td>none</td>
<td>none</td>
</tr>
</tbody>
</table>
<h2 id="tocs_customfieldssettingsdropdownitems">CustomFieldsSettingsDropdownitems</h2>
@@ -20039,6 +20098,10 @@ UserSecurity
</tr>
<tr>
<td>color</td>
<td>silver</td>
</tr>
<tr>
<td>color</td>
<td>peachpuff</td>
</tr>
<tr>
@@ -20297,6 +20360,10 @@ UserSecurity
</tr>
<tr>
<td>color</td>
<td>silver</td>
</tr>
<tr>
<td>color</td>
<td>peachpuff</td>
</tr>
<tr>
@@ -20379,9 +20446,12 @@ UserSecurity
<span class="hljs-string">&quot;string&quot;</span>
],
<span class="hljs-attr">&quot;language&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [],
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [
{
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
}
],
<span class="hljs-attr">&quot;showCardsCountAt&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;startDayOfWeek&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;starredBoards&quot;</span>: [
@@ -20517,45 +20587,6 @@ UserSecurity
</tr>
</tbody>
</table>
<h2 id="tocs_usersemails">UsersEmails</h2>
<p><a id="schemausersemails"></a>
<a id="schema_UsersEmails"></a>
<a id="tocSusersemails"></a>
<a id="tocsusersemails"></a></p>
<pre class="highlight tab tab-json"><code>{
<span class="hljs-attr">&quot;address&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;verified&quot;</span>: <span class="hljs-literal">true</span>
}
</code></pre>
<h3 id="properties-18">Properties</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Required</th>
<th>Restrictions</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>address</td>
<td>string</td>
<td>true</td>
<td>none</td>
<td>The email address</td>
</tr>
<tr>
<td>verified</td>
<td>boolean</td>
<td>true</td>
<td>none</td>
<td>Has the email been verified</td>
</tr>
</tbody>
</table>
<h2 id="tocs_usersprofile">UsersProfile</h2>
<p><a id="schemausersprofile"></a>
<a id="schema_UsersProfile"></a>
@@ -20576,9 +20607,12 @@ UserSecurity
<span class="hljs-string">&quot;string&quot;</span>
],
<span class="hljs-attr">&quot;language&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [],
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;notifications&quot;</span>: [
{
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
}
],
<span class="hljs-attr">&quot;showCardsCountAt&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;startDayOfWeek&quot;</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">&quot;starredBoards&quot;</span>: [
@@ -20594,7 +20628,7 @@ UserSecurity
}
</code></pre>
<h3 id="properties-19">Properties</h3>
<h3 id="properties-18">Properties</h3>
<table>
<thead>
<tr>
@@ -20684,20 +20718,6 @@ UserSecurity
<td>enabled notifications for the user</td>
</tr>
<tr>
<td>activity</td>
<td>string</td>
<td>true</td>
<td>none</td>
<td>The id of the activity this notification references</td>
</tr>
<tr>
<td>read</td>
<td>string</td>
<td>false</td>
<td>none</td>
<td>the date on which this notification was read</td>
</tr>
<tr>
<td>showCardsCountAt</td>
<td>number</td>
<td>false</td>
@@ -20827,7 +20847,7 @@ UserSecurity
}
</code></pre>
<h3 id="properties-20">Properties</h3>
<h3 id="properties-19">Properties</h3>
<table>
<thead>
<tr>
@@ -20855,6 +20875,84 @@ UserSecurity
</tr>
</tbody>
</table>
<h2 id="tocs_usersemails">UsersEmails</h2>
<p><a id="schemausersemails"></a>
<a id="schema_UsersEmails"></a>
<a id="tocSusersemails"></a>
<a id="tocsusersemails"></a></p>
<pre class="highlight tab tab-json"><code>{
<span class="hljs-attr">&quot;address&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;verified&quot;</span>: <span class="hljs-literal">true</span>
}
</code></pre>
<h3 id="properties-20">Properties</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Required</th>
<th>Restrictions</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>address</td>
<td>string</td>
<td>true</td>
<td>none</td>
<td>The email address</td>
</tr>
<tr>
<td>verified</td>
<td>boolean</td>
<td>true</td>
<td>none</td>
<td>Has the email been verified</td>
</tr>
</tbody>
</table>
<h2 id="tocs_usersprofilenotifications">UsersProfileNotifications</h2>
<p><a id="schemausersprofilenotifications"></a>
<a id="schema_UsersProfileNotifications"></a>
<a id="tocSusersprofilenotifications"></a>
<a id="tocsusersprofilenotifications"></a></p>
<pre class="highlight tab tab-json"><code>{
<span class="hljs-attr">&quot;activity&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-attr">&quot;read&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
}
</code></pre>
<h3 id="properties-21">Properties</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Required</th>
<th>Restrictions</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>activity</td>
<td>string</td>
<td>true</td>
<td>none</td>
<td>The id of the activity this notification references</td>
</tr>
<tr>
<td>read</td>
<td>string</td>
<td>false</td>
<td>none</td>
<td>the date on which this notification was read</td>
</tr>
</tbody>
</table>
<!-- Renderer: Shins v2.6.0 -->
<!-- Generator: Widdershins v4.0.1 -->
<!-- backwards compatibility -->
@@ -20876,6 +20974,7 @@ UserSecurity
<!-- backwards compatibility -->
<!-- backwards compatibility -->
<!-- backwards compatibility -->
<!-- backwards compatibility -->
<!-- backwards compatibility -->
</div>
<div class="dark-box">
+46 -24
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v5.17
version: v5.26
description: |
The REST API allows you to control and extend Wekan with ease.
@@ -2757,6 +2757,10 @@ definitions:
description: |
Does the board allows labels?
type: boolean
allowsCreator:
description: |
Does the board allow creator?
type: boolean
allowsAssignee:
description: |
Does the board allows assignee?
@@ -2834,7 +2838,12 @@ definitions:
type:
description: |
The type of board
possible values: board, template-board, template-container
type: string
enum:
- board
- template-board
- template-container
sort:
description: |
Sort value
@@ -2857,6 +2866,7 @@ definitions:
- allowsDescriptionText
- allowsActivities
- allowsLabels
- allowsCreator
- allowsAssignee
- allowsMembers
- allowsRequestedBy
@@ -2889,6 +2899,7 @@ definitions:
`saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`
type: string
enum:
- white
- green
- yellow
- orange
@@ -3298,6 +3309,7 @@ definitions:
- dropdown
- checkbox
- currency
- stringtemplate
settings:
description: |
settings of the custom field
@@ -3344,6 +3356,10 @@ definitions:
type: array
items:
$ref: "#/definitions/CustomFieldsSettingsDropdownitems"
stringtemplateFormat:
type: string
stringtemplateSeparator:
type: string
CustomFieldsSettingsDropdownitems:
type: object
Integrations:
@@ -3467,6 +3483,7 @@ definitions:
- lime
- pink
- black
- silver
- peachpuff
- crimson
- plum
@@ -3558,6 +3575,7 @@ definitions:
- lime
- pink
- black
- silver
- peachpuff
- crimson
- plum
@@ -3663,20 +3681,6 @@ definitions:
- createdAt
- modifiedAt
- authenticationMethod
UsersEmails:
type: object
properties:
address:
description: |
The email address
type: string
verified:
description: |
Has the email been verified
type: boolean
required:
- address
- verified
UsersProfile:
type: object
properties:
@@ -3732,14 +3736,6 @@ definitions:
type: array
items:
$ref: "#/definitions/UsersProfileNotifications"
activity:
description: |
The id of the activity this notification references
type: string
read:
description: |
the date on which this notification was read
type: string
showCardsCountAt:
description: |
showCardCountAt field of the user
@@ -3795,7 +3791,6 @@ definitions:
Reference to the board templates swimlane Id
type: string
required:
- activity
- templatesBoardId
- cardTemplatesSwimlaneId
- listTemplatesSwimlaneId
@@ -3811,3 +3806,30 @@ definitions:
description: |
last hit that was returned
type: number
UsersEmails:
type: object
properties:
address:
description: |
The email address
type: string
verified:
description: |
Has the email been verified
type: boolean
required:
- address
- verified
UsersProfileNotifications:
type: object
properties:
activity:
description: |
The id of the activity this notification references
type: string
read:
description: |
the date on which this notification was read
type: string
required:
- activity
+3
View File
@@ -30,5 +30,8 @@ meteor-spk pack wekan-$1.spk
# Publish Sandstorm Wekan to exprimental App Market
spk publish wekan-$1.spk
# Upload spk to https://releases.wekan.team/sandstorm/
scp wekan-$1.spk x2:/var/snap/wekan/common/releases.wekan.team/sandstorm/
# Delete old temporary build directory
rm -rf ~/repos/wekan/.meteor-spk
@@ -63,6 +63,9 @@ tx pull -f -l ka
echo "German:"
tx pull -f -l de
echo "German (Switzerland) => Deutsch (Schweiz):"
tx pull -f -l de_CH
echo "Greek:"
tx pull -f -l el
+2 -2
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 519,
appVersion = 526,
# Increment this for every release.
appMarketingVersion = (defaultText = "5.19.0~2021-04-14"),
appMarketingVersion = (defaultText = "5.26.0~2021-04-28"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
Loaded 100 of 103 files, more files were not shown because too many files have changed in this diff. Show more