mirror of
https://github.com/wekan/wekan.git
synced 2026-11-05 21:44:59 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
843ff8eaaa | ||
|
|
c5143e2c54 | ||
|
|
0596f5e864 | ||
|
|
8ca1b25daf | ||
|
|
1f76159bfe | ||
|
|
39ece35f52 | ||
|
|
63c1bb9e17 | ||
|
|
354622c5ad | ||
|
|
df7fd8c900 | ||
|
|
7957690fca | ||
|
|
63d19447a0 | ||
|
|
018a84ec59 | ||
|
|
e5c0e623a0 | ||
|
|
9a2d3e15e8 | ||
|
|
c07e262e68 | ||
|
|
cacb2b91ee | ||
|
|
6f269d598f | ||
|
|
57ea254bff | ||
|
|
7e183c838f | ||
|
|
3ffdfd9736 | ||
|
|
621c701bef | ||
|
|
3c24c9966c | ||
|
|
995de525d9 | ||
|
|
ae30b1220a | ||
|
|
e380ad26c2 | ||
|
|
9bb31d2380 | ||
|
|
8ec1e4f3fa | ||
|
|
9f0f6841b0 | ||
|
|
5d18f98b44 | ||
|
|
e738177e08 | ||
|
|
bb201935b9 | ||
|
|
bcfe6bd616 | ||
|
|
9c6352a7bc | ||
|
|
9110e41f20 | ||
|
|
7ae871d3a6 | ||
|
|
0ddf027d43 | ||
|
|
45124a39f3 | ||
|
|
4940af0573 | ||
|
|
924b5d1733 | ||
|
|
2119a3a51e | ||
|
|
dcda99ddf3 | ||
|
|
0e35dcd5ad | ||
|
|
991d42ca0b | ||
|
|
ac242c96b7 | ||
|
|
79d45c8e33 | ||
|
|
8e9f7102f9 | ||
|
|
1952dc309b | ||
|
|
5e7767247f | ||
|
|
676bf686c7 | ||
|
|
5cd6985368 | ||
|
|
807e72dcce | ||
|
|
71702b5821 | ||
|
|
40c56248f1 | ||
|
|
74ac7d8d3f | ||
|
|
e7186b47b0 | ||
|
|
12aa7ea2cb | ||
|
|
ef584e2826 | ||
|
|
f902be10b6 | ||
|
|
29b835de59 | ||
|
|
6ff9c5b58d | ||
|
|
1b86aeb4f5 | ||
|
|
dce99c00be | ||
|
|
e47c700c36 | ||
|
|
09506c78f3 | ||
|
|
9ec1fc0902 | ||
|
|
0b3ec2c19e | ||
|
|
a94bec921c | ||
|
|
3884da3c06 | ||
|
|
d3fa177c7f | ||
|
|
d2176e2c08 | ||
|
|
8d9c59486d | ||
|
|
0e7c2b4b94 | ||
|
|
5c9bc1c745 | ||
|
|
5e7efa0098 | ||
|
|
424862e313 | ||
|
|
9b80ad5a3c | ||
|
|
96c6fa0276 | ||
|
|
69305e1833 | ||
|
|
8aa74ab65e | ||
|
|
aee12c2494 | ||
|
|
83976b3229 | ||
|
|
39f8a138d7 | ||
|
|
120e4af7b2 |
No files matched your search
+2
-2
@@ -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
@@ -1 +1 @@
|
||||
METEOR@2.1.1
|
||||
METEOR@2.2
|
||||
+19
-19
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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,4 +1,3 @@
|
||||
import moment from 'moment';
|
||||
import { DatePicker } from '/client/lib/datepicker';
|
||||
|
||||
Template.dateBadge.helpers({
|
||||
|
||||
@@ -3,7 +3,7 @@ const descriptionFormIsOpen = new ReactiveVar(false);
|
||||
BlazeComponent.extendComponent({
|
||||
onDestroyed() {
|
||||
descriptionFormIsOpen.set(false);
|
||||
$(".note-popover").hide();
|
||||
$('.note-popover').hide();
|
||||
},
|
||||
|
||||
descriptionFormIsOpen() {
|
||||
|
||||
@@ -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,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() {
|
||||
|
||||
@@ -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']],
|
||||
|
||||
@@ -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'}}
|
||||
@@ -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'));
|
||||
@@ -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') {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+19
-11
@@ -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   or 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   oder 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
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+9
-1
@@ -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
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+19
-11
@@ -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   or 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   ou 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
File diff suppressed because it is too large.
Load diff
+19
-11
@@ -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   or 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": "מפריד (להשתמש ב־  או ב־ כרווח)",
|
||||
"custom-field-stringtemplate-item-placeholder": "יש ללחוץ על enter כדי להוסיף עוד פריטים",
|
||||
"creator": "יוצר",
|
||||
"filesReportTitle": "דוח קבצים",
|
||||
"orphanedFilesReportTitle": "דוח קבצים יתומים",
|
||||
"reports": "דוחות",
|
||||
"rulesReportTitle": "דוח כללים",
|
||||
"copy-swimlane": "העתקת מסלול",
|
||||
"copySwimlanePopup-title": "העתקת מסלול"
|
||||
}
|
||||
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+155
-11
@@ -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   eller 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
@@ -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   or 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   of 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
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
@@ -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
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+17
-9
@@ -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   or for a space)",
|
||||
"custom-field-stringtemplate": "Строковый шаблон",
|
||||
"custom-field-stringtemplate-format": "Формат (используйте %{значение} для подстановки)",
|
||||
"custom-field-stringtemplate-separator": "Разделитель (для пробела используйте   или )",
|
||||
"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
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+1009
-1001
File diff suppressed because it is too large.
Load diff
+22
-27
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
@@ -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
@@ -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()
|
||||
|
||||
Generated
+16
-7576
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v5.19.0",
|
||||
"version": "v5.26.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
+182
-83
@@ -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">"_id"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"color"</span>: <span class="hljs-string">"green"</span>
|
||||
<span class="hljs-attr">"color"</span>: <span class="hljs-string">"white"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"members"</span>: [
|
||||
@@ -3506,6 +3512,7 @@ System.out.println(response.toString());
|
||||
<span class="hljs-attr">"allowsDescriptionText"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsActivities"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsLabels"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsCreator"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsAssignee"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsMembers"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsRequestedBy"</span>: <span class="hljs-literal">true</span>,
|
||||
@@ -3520,7 +3527,7 @@ System.out.println(response.toString());
|
||||
<span class="hljs-attr">"endAt"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"spentTime"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"isOvertime"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"board"</span>,
|
||||
<span class="hljs-attr">"sort"</span>: <span class="hljs-number">0</span>
|
||||
}
|
||||
</code></pre>
|
||||
@@ -15914,9 +15921,12 @@ System.out.println(response.toString());
|
||||
<span class="hljs-string">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</span>: [
|
||||
@@ -16652,9 +16662,12 @@ System.out.println(response.toString());
|
||||
<span class="hljs-string">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</span>: [
|
||||
@@ -18169,7 +18182,7 @@ UserSecurity
|
||||
{
|
||||
<span class="hljs-attr">"_id"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"color"</span>: <span class="hljs-string">"green"</span>
|
||||
<span class="hljs-attr">"color"</span>: <span class="hljs-string">"white"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"members"</span>: [
|
||||
@@ -18197,6 +18210,7 @@ UserSecurity
|
||||
<span class="hljs-attr">"allowsDescriptionText"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsActivities"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsLabels"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsCreator"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsAssignee"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsMembers"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"allowsRequestedBy"</span>: <span class="hljs-literal">true</span>,
|
||||
@@ -18211,7 +18225,7 @@ UserSecurity
|
||||
<span class="hljs-attr">"endAt"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"spentTime"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"isOvertime"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"type"</span>: <span class="hljs-string">"board"</span>,
|
||||
<span class="hljs-attr">"sort"</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">"_id"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"name"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"color"</span>: <span class="hljs-string">"green"</span>
|
||||
<span class="hljs-attr">"color"</span>: <span class="hljs-string">"white"</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">"currencyCode"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"dropdownItems"</span>: [
|
||||
{}
|
||||
]
|
||||
],
|
||||
<span class="hljs-attr">"stringtemplateFormat"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"stringtemplateSeparator"</span>: <span class="hljs-string">"string"</span>
|
||||
},
|
||||
<span class="hljs-attr">"showOnCard"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"automaticallyOnCard"</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">"currencyCode"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"dropdownItems"</span>: [
|
||||
{}
|
||||
]
|
||||
],
|
||||
<span class="hljs-attr">"stringtemplateFormat"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"stringtemplateSeparator"</span>: <span class="hljs-string">"string"</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">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</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">"address"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"verified"</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">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</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">"address"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"verified"</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">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</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
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
Reference in new issue
Block a user