mirror of
https://github.com/wekan/wekan.git
synced 2026-11-08 03:22:32 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
977821d293 | ||
|
|
f4e5306181 | ||
|
|
f01b440fb7 | ||
|
|
2fd741bf54 | ||
|
|
e8522c323f | ||
|
|
def2ec46e0 | ||
|
|
4e17d5a10f | ||
|
|
dcba6909e2 | ||
|
|
fc74324d1a | ||
|
|
8bb33c53f0 | ||
|
|
236b6c3552 | ||
|
|
28e9a6ac33 | ||
|
|
f91cc25b11 | ||
|
|
6fd45ce74b | ||
|
|
b57eae14d4 | ||
|
|
12db3714f9 | ||
|
|
7a1f42fa4e | ||
|
|
74064324cf | ||
|
|
f3baa32d6c | ||
|
|
33eed50290 | ||
|
|
11d9d1c889 | ||
|
|
5a7860ac8e | ||
|
|
b13f691389 | ||
|
|
d70e876388 | ||
|
|
36c2cb9573 | ||
|
|
88a47780a8 | ||
|
|
d30ce3c5cf | ||
|
|
0fa8fc8b50 | ||
|
|
6d73618a48 | ||
|
|
db493f1571 | ||
|
|
2b51afaedf | ||
|
|
18b6381d79 | ||
|
|
c65d8ed6a9 | ||
|
|
b3ba156d20 | ||
|
|
e1de787f19 | ||
|
|
e1f08b157b | ||
|
|
508915462d | ||
|
|
7c2ef6fbd5 | ||
|
|
ae73029dda | ||
|
|
542972fc5c | ||
|
|
d7cb143b0a | ||
|
|
d594555227 | ||
|
|
fe25ed5202 | ||
|
|
f6c36d6edd | ||
|
|
fe40f35d6d | ||
|
|
789d1d1d1c | ||
|
|
70265deb47 | ||
|
|
c0d1ed714e | ||
|
|
0555b7e34c | ||
|
|
c1c2eb22ba | ||
|
|
697d7613f2 | ||
|
|
33836af1f9 | ||
|
|
4f0c2dafca | ||
|
|
84801010d5 | ||
|
|
cb418f5e23 | ||
|
|
f7d6ac9401 | ||
|
|
d939ab0d76 | ||
|
|
d538a01d19 | ||
|
|
8770326ed3 | ||
|
|
b2e96746db | ||
|
|
6ce0be635b | ||
|
|
1001e95a87 | ||
|
|
609adcdf10 | ||
|
|
9de2580e30 | ||
|
|
9eb9081c6d | ||
|
|
f551b03dc7 | ||
|
|
1d5dd5e60f | ||
|
|
35a7036d4a | ||
|
|
7024929881 | ||
|
|
90058f25bf | ||
|
|
24ec9018fb | ||
|
|
ec01e5182d | ||
|
|
06d2880a7e | ||
|
|
2a611a8935 | ||
|
|
b236d95636 | ||
|
|
fe7962e10a |
No files matched your search
@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v12.22.2 \
|
||||
NODE_VERSION=v12.22.4 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
|
||||
@@ -81,7 +81,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.22.2
|
||||
node-engine: 12.22.4
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
@@ -83,7 +83,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.22.2
|
||||
node-engine: 12.22.4
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
@@ -34,3 +34,7 @@ ehthumbs.db
|
||||
.devcontainer/docker-compose.extend.yml
|
||||
.devcontainer/volumes*/
|
||||
.coverage
|
||||
|
||||
# Helm chart
|
||||
# Chart dependencies
|
||||
/helm/wekan/**/*.tgz
|
||||
+1
-1
@@ -3,7 +3,7 @@ sudo: required
|
||||
|
||||
env:
|
||||
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
|
||||
TRAVIS_NODE_VERSION: 12.22.2
|
||||
TRAVIS_NODE_VERSION: 12.22.4
|
||||
TRAVIS_NPM_VERSION: latest
|
||||
|
||||
before_install:
|
||||
|
||||
+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, 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
|
||||
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_IT:en-IT, 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
|
||||
|
||||
+112
@@ -3,6 +3,118 @@
|
||||
Note: With Docker, please don't use latest tag. Only use release tags.
|
||||
See https://github.com/wekan/wekan/issues/3874
|
||||
|
||||
# v5.44 2021-08-03 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Wekan v5.43](https://github.com/wekan/wekan/commit/4e17d5a10f95fcea420c794ed8b30ea18dc2a725) and v5.44 for helm.
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix: Consecutive Card numbering when a card is moved to another board or copied](https://github.com/wekan/wekan/pull/3936).
|
||||
Thanks to syndimann.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.43 2021-08-03 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Consecutive boardwise card numbering](https://github.com/wekan/wekan/pull/3935).
|
||||
Thanks to syndimann.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update Helm Chart apiVersion, pin image version](https://github.com/wekan/wekan/pulls/3933).
|
||||
This makes this Chart compatible with [flux](https://fluxcd.io)
|
||||
[helm-controller](https://fluxcd.io/docs/components/helm), which requires v2 charts.
|
||||
Thanks to varac.
|
||||
- [Wekan v5.42 for helm](https://github.com/wekan/wekan/commit/7a1f42fa4e153ff4a0fb481ca5a363ac62033b7f).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.42 2021-08-01 Wekan release
|
||||
|
||||
This release adds the following CRITICAL SECURITY UPDATES:
|
||||
|
||||
- [Updated to Node.js v12.22.4](https://github.com/wekan/wekan/commit/b13f6913896f787e1cae485381d98345d9f8b830).
|
||||
Thanks to Node.js developers.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.41 2021-07-26 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fixed Wekan JSON import fails](https://github.com/wekan/wekan/commit/0fa8fc8b506831a60649d100ce93c96f8f7b76f5).
|
||||
Thanks to BartoszBroda and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.40 2021-07-25 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fixed Delete of Planning Poker doesn't work](https://github.com/wekan/wekan/commit/18b6381d790848062752b211d48c84a2de268bd0).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.39 2021-07-24 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [LDAP AD Simple Auth](https://github.com/wekan/wekan/pull/3909).
|
||||
Thanks to indika-dev.
|
||||
- [LDAP AD Simple Auth: Added settings for all remaining Wekan Standalone (non-Sandstorm)
|
||||
platforms](https://github.com/wekan/wekan/commit/fe40f35d6d9b6293f3bdbf5bc0f3e8e708c59518)
|
||||
and Docs to https://github.com/wekan/wekan/wiki/LDAP-AD-Simple-Auth .
|
||||
Thanks to xet7.
|
||||
- [Convert Checklist Item to Card](https://github.com/wekan/wekan/pull/3910).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Organizations and Teams are taken into account when displaying board at
|
||||
`All Boards` page](https://github.com/wekan/wekan/pull/3912).
|
||||
Thanks to Emile840.
|
||||
|
||||
and adds the following new translations:
|
||||
|
||||
- [English (Italy)](https://github.com/wekan/wekan/commit/ae73029dda63db361925e378202e6f8c137cf5bd).
|
||||
Thanks to translators.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.38 2021-07-18 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Added Code View `</>` button when `RICHER_CARD_COMMENT_EDITOR=true` and in desktop view
|
||||
where is enough screen space for buttons (not added to mobile
|
||||
view)](https://github.com/wekan/wekan/commit/ec01e5182d6b8c848d752540887a8113472b0226).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- Updated dependencies
|
||||
[Part 1](https://github.com/wekan/wekan/commit/7024929881c05cad472de74c86517cf80c8e240c),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/609adcdf100db226c5f310577195afa4b1a4aead).
|
||||
Thanks to developers of dependencies.
|
||||
- [Updated to Node.js v12.22.3](https://github.com/wekan/wekan/commit/d538a01d1962464cf4cb001462669150eeafaa99).
|
||||
Thanks to Node.js developers.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fixed Line break which is wrongly added in Cards description and Cards
|
||||
comments](https://github.com/wekan/wekan/commit/ec01e5182d6b8c848d752540887a8113472b0226).
|
||||
Thanks to Emile840 and xet7.
|
||||
- [Fixed rebuild-wekan.sh](https://github.com/wekan/wekan/commit/1d5dd5e60fec151de6c7dce7ef4e758b562923b9).
|
||||
Thanks to xet7.
|
||||
- [Small fixes for ModernDark theme](https://github.com/wekan/wekan/pull/3902).
|
||||
Thanks to jghaanstra.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.37 2021-07-04 Wekan release
|
||||
|
||||
This release adds the following CRITICAL SECURITY UPDATES:
|
||||
|
||||
+4
-3
@@ -12,7 +12,7 @@ ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v12.22.2 \
|
||||
NODE_VERSION=v12.22.4 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
@@ -64,6 +64,9 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
||||
LDAP_ENABLE=false \
|
||||
LDAP_PORT=389 \
|
||||
LDAP_HOST="" \
|
||||
LDAP_AD_SIMPLE_AUTH="" \
|
||||
LDAP_USER_AUTHENTICATION=false \
|
||||
LDAP_USER_AUTHENTICATION_FIELD=uid \
|
||||
LDAP_BASEDN="" \
|
||||
LDAP_LOGIN_FALLBACK=false \
|
||||
LDAP_RECONNECT=true \
|
||||
@@ -81,8 +84,6 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
||||
LDAP_ENCRYPTION=false \
|
||||
LDAP_CA_CERT="" \
|
||||
LDAP_REJECT_UNAUTHORIZED=false \
|
||||
LDAP_USER_AUTHENTICATION=false \
|
||||
LDAP_USER_AUTHENTICATION_FIELD=uid \
|
||||
LDAP_USER_SEARCH_FILTER="" \
|
||||
LDAP_USER_SEARCH_SCOPE="" \
|
||||
LDAP_USER_SEARCH_FIELD="" \
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ FROM amd64/alpine:3.7 AS builder
|
||||
ENV QEMU_VERSION=v4.2.0-6 \
|
||||
QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v12.22.2 \
|
||||
NODE_VERSION=v12.22.4 \
|
||||
WEKAN_VERSION=latest \
|
||||
WEKAN_ARCHITECTURE=arm64
|
||||
|
||||
@@ -40,7 +40,7 @@ LABEL maintainer="wekan"
|
||||
# Set the environment variables (defaults where required)
|
||||
ENV QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v12.22.2 \
|
||||
NODE_VERSION=v12.22.4 \
|
||||
NODE_ENV=production \
|
||||
NPM_VERSION=latest \
|
||||
WITH_API=true \
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v5.37.0"
|
||||
appVersion: "v5.44.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -766,7 +766,15 @@ setBoardClear(color1,color2)
|
||||
.toggle-label:after, .board-color-modern .toggle-switch:checked~.toggle-label:after
|
||||
background-color: #819C5D !important
|
||||
|
||||
button, input:not([type=file]), select, textarea
|
||||
border-radius: 2px
|
||||
|
||||
/* Headers */
|
||||
&#header
|
||||
background-color: #262626
|
||||
border-bottom: 1px solid #555555;
|
||||
border-top: 1px solid #555555;
|
||||
|
||||
&#header-quick-access, .background-box, #header
|
||||
background-color: #333333
|
||||
|
||||
@@ -774,14 +782,16 @@ setBoardClear(color1,color2)
|
||||
padding: 4px
|
||||
font-size: 14px
|
||||
|
||||
&#header-quick-access .allBoards
|
||||
padding: 5px 10px 0 10px;
|
||||
|
||||
&#header-quick-access ul.header-quick-access-list
|
||||
margin: -5px 0 -5px 0
|
||||
|
||||
&#header #header-main-bar
|
||||
height: 30px
|
||||
padding-top: 3px
|
||||
padding-bottom: 3px
|
||||
|
||||
&#header
|
||||
box-shadow: 0 6px 6px -6px rgba(0,0,0,0.8)
|
||||
|
||||
&#header-quick-access ul
|
||||
overflow: visible
|
||||
|
||||
@@ -812,18 +822,23 @@ setBoardClear(color1,color2)
|
||||
/* Content */
|
||||
.board-canvas
|
||||
background: #2a2a2a
|
||||
padding: 10px 10px 0
|
||||
|
||||
/* Swimlanes */
|
||||
.swimlane .swimlane-header-wrap
|
||||
background-color: #666666
|
||||
background-color: #494949
|
||||
color: #cccccc
|
||||
padding: 4px 0
|
||||
margin-bottom: 10px
|
||||
|
||||
.swimlane .swimlane-header-wrap .swimlane-header
|
||||
font-family: Poppins
|
||||
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-menu
|
||||
padding: 6px
|
||||
font-size: 16px
|
||||
|
||||
.swimlane .swimlane-header-wrap .swimlane-header-plus-icon
|
||||
font-size: 16px
|
||||
|
||||
.swimlane
|
||||
background: #2a2a2a
|
||||
line-height: 15px
|
||||
@@ -836,13 +851,19 @@ setBoardClear(color1,color2)
|
||||
border: 0px solid #666666
|
||||
flex: 0 0 265px;
|
||||
|
||||
.swimlane .list:first-child
|
||||
margin-left: 0
|
||||
|
||||
.swimlane .list:nth-child(even)
|
||||
background: #5f5f5f
|
||||
|
||||
.swimlane .list:nth-child(odd) .list-header
|
||||
background: #3b3b3b
|
||||
|
||||
.list-header
|
||||
background: #333333
|
||||
padding-top: 10px
|
||||
border-bottom: 6px solid #333333
|
||||
padding: 10px
|
||||
border-bottom: 0
|
||||
|
||||
.list-header .viewer
|
||||
padding-left: 10px
|
||||
@@ -852,7 +873,11 @@ setBoardClear(color1,color2)
|
||||
color: #eeeeee
|
||||
|
||||
.list-header .list-header-menu
|
||||
padding-top: 17px
|
||||
padding: 10px
|
||||
top: 0
|
||||
|
||||
.list-header .list-header-plus-icon
|
||||
color: #a6a6a6
|
||||
|
||||
.list-body
|
||||
scrollbar-width: thin
|
||||
@@ -883,35 +908,43 @@ setBoardClear(color1,color2)
|
||||
color: #ffffff
|
||||
|
||||
/* Mini Card */
|
||||
.minicard-wrapper
|
||||
margin-bottom: 12px
|
||||
|
||||
.minicard
|
||||
background-color: #444444
|
||||
color: #cccccc
|
||||
border-radius: 2px
|
||||
font-size: 0.9em
|
||||
font-size: 0.95em
|
||||
padding: 10px
|
||||
box-shadow: 0 4px 3px -3px rgba(0,0,0,0.8)
|
||||
border-bottom: 1px solid #666666
|
||||
|
||||
.minicard:hover
|
||||
background-color: #555555 !important
|
||||
background-color: #494949 !important
|
||||
|
||||
.minicard .minicard-labels
|
||||
margin-bottom: 4px
|
||||
|
||||
.minicard .card-label
|
||||
font-size: 11px
|
||||
font-weight: 400
|
||||
padding: 2px 6px 0
|
||||
padding: 1px 6px 0
|
||||
border-radius: 2px
|
||||
|
||||
.minicard .badges
|
||||
color: #bbbbbb
|
||||
|
||||
.minicard .date
|
||||
margin-top: 7px
|
||||
margin-top: 10px
|
||||
font-size: 11px
|
||||
|
||||
.card-date
|
||||
color: #555555
|
||||
color: #444444
|
||||
border-radius: 2px
|
||||
|
||||
.card-date.almost-due
|
||||
color: #666666
|
||||
color: #444444
|
||||
|
||||
.minicard.minicard-composer textarea.minicard-composer-textarea:focus
|
||||
background-color: #eeeeee
|
||||
@@ -970,11 +1003,17 @@ setBoardClear(color1,color2)
|
||||
|
||||
.card-details .checklist-item
|
||||
background-color: rgba(255,255,255,0.1)
|
||||
padding: 2px 8px
|
||||
border-radius: 3px
|
||||
padding: 4px 8px
|
||||
border-radius: 2px
|
||||
font-size: 13px
|
||||
margin-top: 5px
|
||||
|
||||
.card-details .checklist-item:hover
|
||||
background-color: rgba(255,255,255,0.2)
|
||||
|
||||
.card-details .checklist-item .item-title .viewer p
|
||||
max-width: auto
|
||||
|
||||
.card-details .check-box.materialCheckBox
|
||||
border-color: #ffffff
|
||||
|
||||
|
||||
@@ -87,16 +87,52 @@ BlazeComponent.extendComponent({
|
||||
|
||||
boards() {
|
||||
const query = {
|
||||
archived: false,
|
||||
//type: { $in: ['board','template-container'] },
|
||||
type: 'board',
|
||||
//archived: false,
|
||||
////type: { $in: ['board','template-container'] },
|
||||
//type: 'board',
|
||||
$and: [
|
||||
{ archived: false },
|
||||
{ type: 'board' },
|
||||
{ $or:[] }
|
||||
]
|
||||
};
|
||||
if (FlowRouter.getRouteName() === 'home')
|
||||
query['members.userId'] = Meteor.userId();
|
||||
if (FlowRouter.getRouteName() === 'home'){
|
||||
query.$and[2].$or.push({'members.userId': Meteor.userId()});
|
||||
|
||||
const currUser = Users.findOne(Meteor.userId());
|
||||
|
||||
// const currUser = Users.findOne(Meteor.userId(), {
|
||||
// fields: {
|
||||
// orgs: 1,
|
||||
// teams: 1,
|
||||
// },
|
||||
// });
|
||||
|
||||
let orgIdsUserBelongs = currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : '';
|
||||
if(orgIdsUserBelongs && orgIdsUserBelongs != ''){
|
||||
let orgsIds = orgIdsUserBelongs.split(',');
|
||||
// for(let i = 0; i < orgsIds.length; i++){
|
||||
// query.$and[2].$or.push({'orgs.orgId': orgsIds[i]});
|
||||
// }
|
||||
|
||||
//query.$and[2].$or.push({'orgs': {$elemMatch : {orgId: orgsIds[0]}}});
|
||||
query.$and[2].$or.push({'orgs.orgId': {$in : orgsIds}});
|
||||
}
|
||||
|
||||
let teamIdsUserBelongs = currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : '';
|
||||
if(teamIdsUserBelongs && teamIdsUserBelongs != ''){
|
||||
let teamsIds = teamIdsUserBelongs.split(',');
|
||||
// for(let i = 0; i < teamsIds.length; i++){
|
||||
// query.$or[2].$or.push({'teams.teamId': teamsIds[i]});
|
||||
// }
|
||||
//query.$and[2].$or.push({'teams': { $elemMatch : {teamId: teamsIds[0]}}});
|
||||
query.$and[2].$or.push({'teams.teamId': {$in : teamsIds}});
|
||||
}
|
||||
}
|
||||
else query.permission = 'public';
|
||||
|
||||
return Boards.find(query, {
|
||||
sort: { sort: 1 /* boards default sorting */ },
|
||||
//sort: { sort: 1 /* boards default sorting */ },
|
||||
});
|
||||
},
|
||||
isStarred() {
|
||||
|
||||
@@ -25,6 +25,9 @@ template(name="cardDetails")
|
||||
h2.card-details-title.js-card-title(
|
||||
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
|
||||
+viewer
|
||||
if currentBoard.allowsCardNumber
|
||||
span.card-number
|
||||
| ##{getCardNumber}
|
||||
= getTitle
|
||||
if isWatching
|
||||
i.card-details-watch.fa.fa-eye
|
||||
|
||||
@@ -627,6 +627,7 @@ Template.cardDetailsActionsPopup.events({
|
||||
'click .js-spent-time': Popup.open('editCardSpentTime'),
|
||||
'click .js-move-card': Popup.open('moveCard'),
|
||||
'click .js-copy-card': Popup.open('copyCard'),
|
||||
'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'),
|
||||
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
|
||||
'click .js-set-card-color': Popup.open('setCardColor'),
|
||||
'click .js-move-card-to-top'(event) {
|
||||
@@ -791,6 +792,34 @@ Template.copyCardPopup.events({
|
||||
},
|
||||
});
|
||||
|
||||
Template.convertChecklistItemToCardPopup.events({
|
||||
'click .js-done'() {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const lSelect = $('.js-select-lists')[0];
|
||||
const listId = lSelect.options[lSelect.selectedIndex].value;
|
||||
const slSelect = $('.js-select-swimlanes')[0];
|
||||
const swimlaneId = slSelect.options[slSelect.selectedIndex].value;
|
||||
const bSelect = $('.js-select-boards')[0];
|
||||
const boardId = bSelect.options[bSelect.selectedIndex].value;
|
||||
const textarea = $('#copy-card-title');
|
||||
const title = textarea.val().trim();
|
||||
|
||||
if (title) {
|
||||
const _id = Cards.insert({
|
||||
title: title,
|
||||
listId: listId,
|
||||
boardId: boardId,
|
||||
swimlaneId: swimlaneId,
|
||||
sort: 0,
|
||||
});
|
||||
Filter.addException(_id);
|
||||
|
||||
Popup.close();
|
||||
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Template.copyChecklistToManyCardsPopup.events({
|
||||
'click .js-done'() {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
@@ -1297,7 +1326,6 @@ BlazeComponent.extendComponent({
|
||||
Popup.close();
|
||||
},
|
||||
'click .js-remove-poker': Popup.afterConfirm('deletePoker', (event) => {
|
||||
event.preventDefault();
|
||||
this.currentCard.unsetPoker();
|
||||
Popup.close();
|
||||
}),
|
||||
|
||||
@@ -114,6 +114,12 @@ avatar-radius = 50%
|
||||
background: darken(white, 7%)
|
||||
border-bottom: 1px solid darken(white, 14%)
|
||||
|
||||
.card-number {
|
||||
color: darken(white, 30%);
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.close-card-details,
|
||||
.maximize-card-details,
|
||||
.minimize-card-details,
|
||||
|
||||
@@ -80,6 +80,9 @@ template(name="editChecklistItemForm")
|
||||
span(title=createdAt) {{ moment createdAt }}
|
||||
if canModifyCard
|
||||
a.js-delete-checklist-item {{_ "delete"}}...
|
||||
a.js-convert-checklist-item-to-card
|
||||
i.fa.fa-copy
|
||||
| {{_ 'convertChecklistItemToCardPopup-title'}}
|
||||
|
||||
template(name="checklistItems")
|
||||
.checklist-items.js-checklist-items
|
||||
@@ -110,3 +113,32 @@ template(name='checklistItemDetail')
|
||||
.item-title(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
+viewer
|
||||
= item.title
|
||||
|
||||
template(name="convertChecklistItemToCardPopup")
|
||||
label(for='convert-checklist-item-to-card-title') {{_ 'title'}}:
|
||||
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
|
||||
= item.title
|
||||
+boardsSwimlanesAndLists
|
||||
|
||||
template(name="boardsSwimlanesAndLists")
|
||||
unless currentUser.isWorker
|
||||
label {{_ 'boards'}}:
|
||||
select.js-select-boards(autofocus)
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
option(value="{{_id}}" selected) {{_ 'current'}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'swimlanes'}}:
|
||||
select.js-select-swimlanes
|
||||
each swimlanes
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'lists'}}:
|
||||
select.js-select-lists
|
||||
each aBoardLists
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm.js-done {{_ 'done'}}
|
||||
@@ -1,3 +1,7 @@
|
||||
import Cards from '/models/cards';
|
||||
import Boards from '/models/boards';
|
||||
|
||||
const subManager = new SubsManager();
|
||||
const { calculateIndexData, capitalize } = Utils;
|
||||
|
||||
function initSorting(items) {
|
||||
@@ -206,6 +210,7 @@ BlazeComponent.extendComponent({
|
||||
'submit .js-edit-checklist-title': this.editChecklist,
|
||||
'submit .js-add-checklist-item': this.addChecklistItem,
|
||||
'submit .js-edit-checklist-item': this.editChecklistItem,
|
||||
'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'),
|
||||
'click .js-delete-checklist-item': this.deleteItem,
|
||||
'click .confirm-checklist-delete': this.deleteChecklist,
|
||||
'focus .js-add-checklist-item': this.focusChecklistItem,
|
||||
@@ -215,6 +220,47 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('checklists');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
subManager.subscribe('board', Session.get('currentBoard'), false);
|
||||
this.selectedBoardId = new ReactiveVar(Session.get('currentBoard'));
|
||||
},
|
||||
|
||||
boards() {
|
||||
return Boards.find(
|
||||
{
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
_id: { $ne: Meteor.user().getTemplatesBoardId() },
|
||||
},
|
||||
{
|
||||
sort: { sort: 1 /* boards default sorting */ },
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
swimlanes() {
|
||||
const board = Boards.findOne(this.selectedBoardId.get());
|
||||
return board.swimlanes();
|
||||
},
|
||||
|
||||
aBoardLists() {
|
||||
const board = Boards.findOne(this.selectedBoardId.get());
|
||||
return board.lists();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'change .js-select-boards'(event) {
|
||||
this.selectedBoardId.set($(event.currentTarget).val());
|
||||
subManager.subscribe('board', this.selectedBoardId.get(), false);
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('boardsSwimlanesAndLists');
|
||||
|
||||
Template.checklists.helpers({
|
||||
hideCheckedItems() {
|
||||
const currentUser = Meteor.user();
|
||||
|
||||
@@ -159,7 +159,8 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
|
||||
padding-top: 2px
|
||||
padding-right: 10px;
|
||||
|
||||
.js-delete-checklist-item
|
||||
.js-delete-checklist-item,
|
||||
.js-convert-checklist-item-to-card
|
||||
margin: 0 0 0.5em 1.33em
|
||||
@extends .delete-text
|
||||
padding: 12px 0 0 0
|
||||
|
||||
@@ -37,6 +37,9 @@ template(name="minicard")
|
||||
if getArchived
|
||||
span.linked-icon.linked-archived.fa.fa-archive
|
||||
+viewer
|
||||
if currentBoard.allowsCardNumber
|
||||
span.card-number
|
||||
| ##{getCardNumber}
|
||||
= getTitle
|
||||
if $eq 'subtext-with-full-path' currentBoard.presentParentTask
|
||||
.parent-subtext
|
||||
|
||||
@@ -114,6 +114,10 @@
|
||||
font-size:20px;
|
||||
color: #ccc;
|
||||
.minicard-title
|
||||
.card-number
|
||||
color: darken(white, 30%);
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
p:last-child
|
||||
margin-bottom: 0
|
||||
.viewer
|
||||
|
||||
@@ -81,7 +81,9 @@ BlazeComponent.extendComponent({
|
||||
Utils.boardView() === 'board-view-cal' ||
|
||||
!Utils.boardView()
|
||||
)
|
||||
swimlaneId = board.getDefaultSwimline()._id;
|
||||
swimlaneId = board.getDefaultSwimline()._id;
|
||||
|
||||
const nextCardNumber = board.getNextCardNumber();
|
||||
|
||||
const _id = Cards.insert({
|
||||
title,
|
||||
@@ -93,6 +95,7 @@ BlazeComponent.extendComponent({
|
||||
sort: sortIndex,
|
||||
swimlaneId,
|
||||
type: cardType,
|
||||
cardNumber: nextCardNumber,
|
||||
linkedId,
|
||||
});
|
||||
|
||||
@@ -241,7 +244,7 @@ BlazeComponent.extendComponent({
|
||||
Boards.findOne(currentBoardId)
|
||||
.customFields()
|
||||
.fetch(),
|
||||
function(field) {
|
||||
function (field) {
|
||||
if (field.automaticallyOnCard || field.alwaysOnCard)
|
||||
arr.push({ _id: field._id, value: null });
|
||||
},
|
||||
@@ -750,17 +753,17 @@ BlazeComponent.extendComponent({
|
||||
|
||||
checkIdleTime() {
|
||||
return window.requestIdleCallback ||
|
||||
function(handler) {
|
||||
const startTime = Date.now();
|
||||
return setTimeout(function() {
|
||||
handler({
|
||||
didTimeout: false,
|
||||
timeRemaining() {
|
||||
return Math.max(0, 50.0 - (Date.now() - startTime));
|
||||
},
|
||||
});
|
||||
}, 1);
|
||||
};
|
||||
function (handler) {
|
||||
const startTime = Date.now();
|
||||
return setTimeout(function () {
|
||||
handler({
|
||||
didTimeout: false,
|
||||
timeRemaining() {
|
||||
return Math.max(0, 50.0 - (Date.now() - startTime));
|
||||
},
|
||||
});
|
||||
}, 1);
|
||||
};
|
||||
}
|
||||
|
||||
updateList() {
|
||||
|
||||
@@ -50,7 +50,7 @@ Template.editor.onRendered(() => {
|
||||
['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 :(
|
||||
['view', ['fullscreen', 'help']],
|
||||
['view', ['fullscreen', 'codeview', 'help']],
|
||||
];
|
||||
const cleanPastedHTML = function(input) {
|
||||
const badTags = [
|
||||
@@ -229,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.
|
||||
|
||||
@@ -92,6 +92,8 @@ Template.userFormsLayout.helpers({
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'latviešu valoda') {
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'en-IT') {
|
||||
name = 'English (Italy)';
|
||||
} else if (lang.name === 'Español') {
|
||||
name = 'español';
|
||||
} else if (lang.name === 'es_419') {
|
||||
|
||||
@@ -31,6 +31,26 @@ template(name='homeSidebar')
|
||||
+activities(mode="board")
|
||||
|
||||
template(name="membersWidget")
|
||||
.board-widget.board-widget-members
|
||||
h3
|
||||
i.fa.fa-users
|
||||
| {{_ 'organizations'}}
|
||||
|
||||
.board-widget-content
|
||||
+boardOrgGeneral
|
||||
.clearfix
|
||||
br
|
||||
hr
|
||||
.board-widget.board-widget-members
|
||||
h3
|
||||
i.fa.fa-users
|
||||
| {{_ 'teams'}}
|
||||
|
||||
.board-widget-content
|
||||
+boardTeamGeneral
|
||||
.clearfix
|
||||
br
|
||||
hr
|
||||
.board-widget.board-widget-members
|
||||
h3
|
||||
i.fa.fa-users
|
||||
@@ -65,6 +85,30 @@ template(name="membersWidget")
|
||||
button.js-member-invite-accept.primary {{_ 'accept'}}
|
||||
button.js-member-invite-decline {{_ 'decline'}}
|
||||
|
||||
template(name="boardOrgGeneral")
|
||||
table
|
||||
tbody
|
||||
tr
|
||||
th {{_ 'displayName'}}
|
||||
th
|
||||
if currentUser.isBoardAdmin
|
||||
a.member.orgOrTeamMember.add-member.js-manage-board-addOrg(title="{{_ 'add-members'}}")
|
||||
i.fa.fa-plus
|
||||
each org in currentBoard.activeOrgs
|
||||
+boardOrgRow(orgId=org.orgId)
|
||||
|
||||
template(name="boardTeamGeneral")
|
||||
table
|
||||
tbody
|
||||
tr
|
||||
th {{_ 'displayName'}}
|
||||
th
|
||||
if currentUser.isBoardAdmin
|
||||
a.member.orgOrTeamMember.add-member.js-manage-board-addTeam(title="{{_ 'add-members'}}")
|
||||
i.fa.fa-plus
|
||||
each currentBoard.activeTeams
|
||||
+boardTeamRow(teamId=this.teamId)
|
||||
|
||||
template(name="boardChangeColorPopup")
|
||||
.board-backgrounds-list.clearfix
|
||||
each backgroundColors
|
||||
@@ -145,6 +189,13 @@ template(name="boardCardSettingsPopup")
|
||||
span
|
||||
i.fa.fa-tags
|
||||
| {{_ 'labels'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-card-number(class="{{#if allowsCardNumber}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsCardNumber}}is-checked{{/if}}")
|
||||
span
|
||||
i.fa.fa-hashtag
|
||||
| {{_ 'card'}}
|
||||
| {{_ 'number'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-description-title(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
|
||||
@@ -409,6 +460,40 @@ template(name="leaveBoardPopup")
|
||||
p {{_ 'leave-board-pop' boardTitle=board.title}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'leave-board'}}
|
||||
|
||||
template(name="addBoardOrgPopup")
|
||||
select.js-boardOrgs#jsBoardOrgs
|
||||
option(value="-1") {{_ 'organizations'}} :
|
||||
each value in orgsDatas
|
||||
option(value="{{value._id}}") {{_ value.orgDisplayName}}
|
||||
|
||||
template(name="removeBoardOrgPopup")
|
||||
form
|
||||
input.hide#hideOrgId(type="text" value=org._id)
|
||||
label
|
||||
| {{_ 'leave-board'}} ?
|
||||
br
|
||||
hr
|
||||
div.buttonsContainer
|
||||
input.primary.wide.leaveBoardBtn#leaveBoardBtn(type="submit" value="{{_ 'leave-board'}}")
|
||||
input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardBtn(type="submit" value="{{_ 'Cancel'}}")
|
||||
|
||||
template(name="addBoardTeamPopup")
|
||||
select.js-boardTeams#jsBoardTeams
|
||||
option(value="-1") {{_ 'teams'}} :
|
||||
each value in teamsDatas
|
||||
option(value="{{value._id}}") {{_ value.teamDisplayName}}
|
||||
|
||||
template(name="removeBoardTeamPopup")
|
||||
form
|
||||
input.hide#hideTeamId(type="text" value=team._id)
|
||||
label
|
||||
| {{_ 'leave-board'}} ?
|
||||
br
|
||||
hr
|
||||
div.buttonsContainer
|
||||
input.primary.wide.leaveBoardBtn#leaveBoardTeamBtn(type="submit" value="{{_ 'leave-board'}}")
|
||||
input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardTeamBtn(type="submit" value="{{_ 'Cancel'}}")
|
||||
|
||||
template(name="addMemberPopup")
|
||||
.js-search-member
|
||||
+esInput(index="users")
|
||||
|
||||
@@ -313,6 +313,8 @@ Template.membersWidget.events({
|
||||
'click .js-member': Popup.open('member'),
|
||||
'click .js-open-board-menu': Popup.open('boardMenu'),
|
||||
'click .js-manage-board-members': Popup.open('addMember'),
|
||||
'click .js-manage-board-addOrg': Popup.open('addBoardOrg'),
|
||||
'click .js-manage-board-addTeam': Popup.open('addBoardTeam'),
|
||||
'click .js-import': Popup.open('boardImportBoard'),
|
||||
submit: this.onSubmit,
|
||||
'click .js-import-board': Popup.open('chooseBoardSource'),
|
||||
@@ -774,6 +776,10 @@ BlazeComponent.extendComponent({
|
||||
return this.currentBoard.allowsComments;
|
||||
},
|
||||
|
||||
allowsCardNumber() {
|
||||
return this.currentBoard.allowsCardNumber;
|
||||
},
|
||||
|
||||
allowsDescriptionTitle() {
|
||||
return this.currentBoard.allowsDescriptionTitle;
|
||||
},
|
||||
@@ -1017,6 +1023,22 @@ BlazeComponent.extendComponent({
|
||||
this.currentBoard.allowsDescriptionTitle,
|
||||
);
|
||||
},
|
||||
'click .js-field-has-card-number'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsCardNumber = !this.currentBoard
|
||||
.allowsCardNumber;
|
||||
this.currentBoard.setAllowsCardNumber(
|
||||
this.currentBoard.allowsCardNumber,
|
||||
);
|
||||
$(`.js-field-has-card-number ${MCB}`).toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsCardNumber,
|
||||
);
|
||||
$('.js-field-has-card-number').toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsCardNumber,
|
||||
);
|
||||
},
|
||||
'click .js-field-has-description-text'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsDescriptionText = !this.currentBoard
|
||||
@@ -1168,6 +1190,283 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('addMemberPopup');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.findOrgsOptions = new ReactiveVar({});
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.autorun(() => {
|
||||
const limitOrgs = this.page.get() * Number.MAX_SAFE_INTEGER;
|
||||
this.subscribe('org', this.findOrgsOptions.get(), limitOrgs, () => {});
|
||||
});
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
this.setLoading(false);
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
|
||||
isLoading() {
|
||||
return this.loading.get();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'keyup input'() {
|
||||
this.setError('');
|
||||
},
|
||||
'change #jsBoardOrgs'() {
|
||||
let currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
let selectElt = document.getElementById("jsBoardOrgs");
|
||||
let selectedOrgId = selectElt.options[selectElt.selectedIndex].value;
|
||||
let selectedOrgDisplayName = selectElt.options[selectElt.selectedIndex].text;
|
||||
let boardOrganizations = [];
|
||||
if(currentBoard.orgs !== undefined){
|
||||
for(let i = 0; i < currentBoard.orgs.length; i++){
|
||||
boardOrganizations.push(currentBoard.orgs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!boardOrganizations.some((org) => org.orgDisplayName == selectedOrgDisplayName)){
|
||||
boardOrganizations.push({
|
||||
"orgId": selectedOrgId,
|
||||
"orgDisplayName": selectedOrgDisplayName,
|
||||
"isActive" : true,
|
||||
})
|
||||
|
||||
if (selectedOrgId != "-1") {
|
||||
Meteor.call('setBoardOrgs', boardOrganizations, currentBoard._id);
|
||||
}
|
||||
}
|
||||
|
||||
Popup.close();
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('addBoardOrgPopup');
|
||||
|
||||
Template.addBoardOrgPopup.helpers({
|
||||
orgsDatas() {
|
||||
// return Org.find({}, {sort: { createdAt: -1 }});
|
||||
let orgs = Org.find({}, {sort: { createdAt: -1 }});
|
||||
return orgs;
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.findOrgsOptions = new ReactiveVar({});
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.autorun(() => {
|
||||
const limitOrgs = this.page.get() * Number.MAX_SAFE_INTEGER;
|
||||
this.subscribe('org', this.findOrgsOptions.get(), limitOrgs, () => {});
|
||||
});
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
this.setLoading(false);
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
|
||||
isLoading() {
|
||||
return this.loading.get();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'keyup input'() {
|
||||
this.setError('');
|
||||
},
|
||||
'click #leaveBoardBtn'(){
|
||||
let stringOrgId = document.getElementById('hideOrgId').value;
|
||||
let currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
let boardOrganizations = [];
|
||||
if(currentBoard.orgs !== undefined){
|
||||
for(let i = 0; i < currentBoard.orgs.length; i++){
|
||||
if(currentBoard.orgs[i].orgId != stringOrgId){
|
||||
boardOrganizations.push(currentBoard.orgs[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Meteor.call('setBoardOrgs', boardOrganizations, currentBoard._id);
|
||||
|
||||
Popup.close();
|
||||
},
|
||||
'click #cancelLeaveBoardBtn'(){
|
||||
Popup.close();
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('removeBoardOrgPopup');
|
||||
|
||||
Template.removeBoardOrgPopup.helpers({
|
||||
org() {
|
||||
return Org.findOne(this.orgId);
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.findOrgsOptions = new ReactiveVar({});
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.autorun(() => {
|
||||
const limitTeams = this.page.get() * Number.MAX_SAFE_INTEGER;
|
||||
this.subscribe('team', this.findOrgsOptions.get(), limitTeams, () => {});
|
||||
});
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
this.setLoading(false);
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
|
||||
isLoading() {
|
||||
return this.loading.get();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'keyup input'() {
|
||||
this.setError('');
|
||||
},
|
||||
'change #jsBoardTeams'() {
|
||||
let currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
let selectElt = document.getElementById("jsBoardTeams");
|
||||
let selectedTeamId = selectElt.options[selectElt.selectedIndex].value;
|
||||
let selectedTeamDisplayName = selectElt.options[selectElt.selectedIndex].text;
|
||||
let boardTeams = [];
|
||||
if(currentBoard.teams !== undefined){
|
||||
for(let i = 0; i < currentBoard.teams.length; i++){
|
||||
boardTeams.push(currentBoard.teams[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!boardTeams.some((team) => team.teamDisplayName == selectedTeamDisplayName)){
|
||||
boardTeams.push({
|
||||
"teamId": selectedTeamId,
|
||||
"teamDisplayName": selectedTeamDisplayName,
|
||||
"isActive" : true,
|
||||
})
|
||||
|
||||
if (selectedTeamId != "-1") {
|
||||
Meteor.call('setBoardTeams', boardTeams, currentBoard._id);
|
||||
}
|
||||
}
|
||||
|
||||
Popup.close();
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('addBoardTeamPopup');
|
||||
|
||||
Template.addBoardTeamPopup.helpers({
|
||||
teamsDatas() {
|
||||
let teams = Team.find({}, {sort: { createdAt: -1 }});
|
||||
return teams;
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.findOrgsOptions = new ReactiveVar({});
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.autorun(() => {
|
||||
const limitTeams = this.page.get() * Number.MAX_SAFE_INTEGER;
|
||||
this.subscribe('team', this.findOrgsOptions.get(), limitTeams, () => {});
|
||||
});
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
this.setLoading(false);
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
|
||||
isLoading() {
|
||||
return this.loading.get();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'keyup input'() {
|
||||
this.setError('');
|
||||
},
|
||||
'click #leaveBoardTeamBtn'(){
|
||||
let stringTeamId = document.getElementById('hideTeamId').value;
|
||||
let currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
let boardTeams = [];
|
||||
if(currentBoard.teams !== undefined){
|
||||
for(let i = 0; i < currentBoard.teams.length; i++){
|
||||
if(currentBoard.teams[i].teamId != stringTeamId){
|
||||
boardTeams.push(currentBoard.teams[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Meteor.call('setBoardTeams', boardTeams, currentBoard._id);
|
||||
|
||||
Popup.close();
|
||||
},
|
||||
'click #cancelLeaveBoardTeamBtn'(){
|
||||
Popup.close();
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('removeBoardTeamPopup');
|
||||
|
||||
Template.removeBoardTeamPopup.helpers({
|
||||
team() {
|
||||
return Team.findOne(this.teamId);
|
||||
},
|
||||
});
|
||||
|
||||
Template.changePermissionsPopup.events({
|
||||
'click .js-set-admin, click .js-set-normal, click .js-set-no-comments, click .js-set-comment-only, click .js-set-worker'(
|
||||
event,
|
||||
|
||||
@@ -214,3 +214,13 @@
|
||||
i.fa
|
||||
padding: 8px 0px 8px 16px
|
||||
font-weight: bold
|
||||
|
||||
#jsBoardOrgs, #jsBoardTeams
|
||||
width: 90%
|
||||
|
||||
.leaveBoardBtn
|
||||
background-color: green !important
|
||||
|
||||
.cancelLeaveBoardBtn
|
||||
margin-left: 5% !important
|
||||
background-color: red !important
|
||||
@@ -19,6 +19,44 @@ template(name="userAvatarInitials")
|
||||
svg.avatar.avatar-initials(viewBox="0 0 {{viewPortWidth}} 15")
|
||||
text(x="50%" y="13" text-anchor="middle")= initials
|
||||
|
||||
template(name="orgAvatar")
|
||||
a.member.orgOrTeamMember(class="js-member" title="{{orgData.orgDisplayName}}")
|
||||
+boardOrgName(orgId=orgData._id)
|
||||
|
||||
template(name="boardOrgRow")
|
||||
tr
|
||||
if orgData.orgIsActive
|
||||
td <s>{{ orgData.orgDisplayName }}</s>
|
||||
else
|
||||
td {{ orgData.orgDisplayName }}
|
||||
td
|
||||
if currentUser.isBoardAdmin
|
||||
a.member.orgOrTeamMember.add-member.js-manage-board-removeOrg(title="{{_ 'remove-from-board'}}")
|
||||
i.fa.fa-minus
|
||||
|
||||
template(name="boardTeamRow")
|
||||
tr
|
||||
if teamData.teamIsActive
|
||||
td <s>{{ teamData.teamDisplayName }}</s>
|
||||
else
|
||||
td {{ teamData.teamDisplayName }}
|
||||
td
|
||||
if currentUser.isBoardAdmin
|
||||
a.member.orgOrTeamMember.add-member.js-manage-board-removeTeam(title="{{_ 'remove-from-board'}}")
|
||||
i.fa.fa-minus
|
||||
|
||||
template(name="boardOrgName")
|
||||
svg.avatar.avatar-initials(viewBox="0 0 {{orgViewPortWidth}} 15")
|
||||
text(x="50%" y="13" text-anchor="middle")= orgName
|
||||
|
||||
template(name="teamAvatar")
|
||||
a.member.orgOrTeamMember(class="js-member" title="{{teamData.teamDisplayName}}")
|
||||
+boardTeamName(orgId=orgData._id)
|
||||
|
||||
template(name="boardTeamName")
|
||||
svg.avatar.avatar-initials(viewBox="0 0 {{teamViewPortWidth}} 15")
|
||||
text(x="50%" y="13" text-anchor="middle")= teamName
|
||||
|
||||
template(name="userPopup")
|
||||
.board-member-menu
|
||||
.mini-profile-info
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import Cards from '/models/cards';
|
||||
import Avatars from '/models/avatars';
|
||||
import Users from '/models/users';
|
||||
import Org from '/models/org';
|
||||
import Team from '/models/team';
|
||||
|
||||
Template.userAvatar.helpers({
|
||||
userData() {
|
||||
@@ -46,6 +48,132 @@ Template.userAvatarInitials.helpers({
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.findOrgsOptions = new ReactiveVar({});
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.autorun(() => {
|
||||
const limitOrgs = this.page.get() * Number.MAX_SAFE_INTEGER;
|
||||
this.subscribe('org', this.findOrgsOptions.get(), limitOrgs, () => {});
|
||||
});
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
this.setLoading(false);
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
|
||||
isLoading() {
|
||||
return this.loading.get();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'keyup input'() {
|
||||
this.setError('');
|
||||
},
|
||||
'click .js-manage-board-removeOrg': Popup.open('removeBoardOrg'),
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('boardOrgRow');
|
||||
|
||||
Template.boardOrgRow.helpers({
|
||||
orgData() {
|
||||
const orgCollection = this.esSearch ? ESSearchResults : Org;
|
||||
return orgCollection.findOne(this.orgId);
|
||||
},
|
||||
currentUser(){
|
||||
return Meteor.user();
|
||||
},
|
||||
});
|
||||
|
||||
Template.boardOrgName.helpers({
|
||||
orgName() {
|
||||
const org = Org.findOne(this.orgId);
|
||||
return org && org.orgDisplayName;
|
||||
},
|
||||
|
||||
orgViewPortWidth() {
|
||||
const org = Org.findOne(this.orgId);
|
||||
return ((org && org.orgDisplayName.length) || 1) * 12;
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.findOrgsOptions = new ReactiveVar({});
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.autorun(() => {
|
||||
const limitTeams = this.page.get() * Number.MAX_SAFE_INTEGER;
|
||||
this.subscribe('team', this.findOrgsOptions.get(), limitTeams, () => {});
|
||||
});
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
this.setLoading(false);
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
|
||||
isLoading() {
|
||||
return this.loading.get();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'keyup input'() {
|
||||
this.setError('');
|
||||
},
|
||||
'click .js-manage-board-removeTeam': Popup.open('removeBoardTeam'),
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('boardTeamRow');
|
||||
|
||||
Template.boardTeamRow.helpers({
|
||||
teamData() {
|
||||
const teamCollection = this.esSearch ? ESSearchResults : Team;
|
||||
return teamCollection.findOne(this.teamId);
|
||||
},
|
||||
currentUser(){
|
||||
return Meteor.user();
|
||||
},
|
||||
});
|
||||
|
||||
Template.boardTeamName.helpers({
|
||||
teamName() {
|
||||
const team = Team.findOne(this.teamId);
|
||||
return team && team.teamDisplayName;
|
||||
},
|
||||
|
||||
teamViewPortWidth() {
|
||||
const team = Team.findOne(this.teamId);
|
||||
return ((team && team.teamDisplayName.length) || 1) * 12;
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
|
||||
@@ -186,6 +186,8 @@ Template.changeLanguagePopup.helpers({
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'latviešu valoda') {
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'en-IT') {
|
||||
name = 'English (Italy)';
|
||||
} else if (lang.name === 'Español') {
|
||||
name = 'español';
|
||||
} else if (lang.name === 'es_419') {
|
||||
|
||||
+40
-9
@@ -440,9 +440,47 @@ services:
|
||||
# The host server for the LDAP server
|
||||
#- LDAP_HOST=localhost
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP AD Simple Auth ====
|
||||
#
|
||||
# Set to true, if you want to connect with Active Directory by Simple Authentication.
|
||||
# When using AD Simple Auth, LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#- LDAP_AD_SIMPLE_AUTH=true
|
||||
#
|
||||
# === LDAP User Authentication ===
|
||||
#
|
||||
# a) Option to login to the LDAP server with the user's own username and password, instead of
|
||||
# an administrator key. Default: false (use administrator key).
|
||||
#
|
||||
# b) When using AD Simple Auth, set to true, when login user is used for binding,
|
||||
# and LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#- LDAP_USER_AUTHENTICATION=true
|
||||
#
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
#- LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# === LDAP Default Domain ===
|
||||
#
|
||||
# a) In case AD SimpleAuth is configured, the default domain is appended to the given
|
||||
# loginname for creating the correct username for the bind request to AD.
|
||||
#
|
||||
# b) The default domain of the ldap it is used to create email if the field is not map
|
||||
# correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
|
||||
#
|
||||
# Example :
|
||||
#- LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP BASEDN Auth ====
|
||||
#
|
||||
# The base DN for the LDAP Tree
|
||||
#- LDAP_BASEDN=ou=user,dc=example,dc=org
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# Fallback on the default authentication method
|
||||
#- LDAP_LOGIN_FALLBACK=false
|
||||
#
|
||||
@@ -493,12 +531,6 @@ services:
|
||||
# Reject Unauthorized Certificate
|
||||
#- LDAP_REJECT_UNAUTHORIZED=false
|
||||
#
|
||||
# Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key).
|
||||
#- LDAP_USER_AUTHENTICATION=true
|
||||
#
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
#- LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
|
||||
#- LDAP_USER_SEARCH_FILTER=
|
||||
#
|
||||
@@ -564,9 +596,8 @@ services:
|
||||
#
|
||||
#- LDAP_SYNC_GROUP_ROLES=
|
||||
#
|
||||
# The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
|
||||
# example :
|
||||
#- LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
# The default domain of the ldap it is used to create email if the field is not map correctly
|
||||
# with the LDAP_SYNC_USER_DATA_FIELDMAP is defined in setting LDAP_DEFAULT_DOMAIN above.
|
||||
#
|
||||
# Enable/Disable syncing of admin status based on ldap groups:
|
||||
#- LDAP_SYNC_ADMIN_STATUS=true
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
dependencies:
|
||||
- name: mongodb
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 10.0.5
|
||||
digest: sha256:f6520f39b687cb52574ec2fda514662ce913665c0fd2391b68fdb4d2eb059497
|
||||
generated: "2021-07-27T22:16:39.945592552+02:00"
|
||||
+20
-10
@@ -1,14 +1,24 @@
|
||||
name: wekan
|
||||
version: 1.0.3
|
||||
apiVersion: v1
|
||||
apiVersion: v2
|
||||
appVersion: "5.44"
|
||||
dependencies:
|
||||
- condition: mongodb.enabled
|
||||
name: mongodb
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 10.0.x
|
||||
description: Open Source kanban
|
||||
home: https://wekan.github.io/
|
||||
home: https://wekan.github.io
|
||||
icon: https://wekan.github.io/wekan-logo.svg
|
||||
keywords:
|
||||
- kanban
|
||||
maintainers:
|
||||
- email: github@randall.cc
|
||||
name: technotaff
|
||||
- email: jiangyt.cn@gmail.com
|
||||
name: jiangytcn
|
||||
- email: varac@varac.net
|
||||
name: varac
|
||||
name: wekan
|
||||
sources:
|
||||
- https://github.com/wekan/wekan
|
||||
maintainers:
|
||||
- name: technotaff
|
||||
email: github@randall.cc
|
||||
- name: jiangytcn
|
||||
email: jiangyt.cn@gmail.com
|
||||
engine: gotpl
|
||||
type: application
|
||||
version: 1.1.0
|
||||
@@ -1,5 +0,0 @@
|
||||
dependencies:
|
||||
- name: mongodb
|
||||
version: 10.0.x
|
||||
repository: "https://charts.bitnami.com/bitnami"
|
||||
condition: mongodb.enabled
|
||||
@@ -14,7 +14,7 @@ serviceAccounts:
|
||||
##
|
||||
image:
|
||||
repository: quay.io/wekan/wekan
|
||||
tag: latest
|
||||
tag: v5.44
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
## Configuration for wekan component
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "إضافة مهمة فرعية",
|
||||
"add-checklist": "إضافة قائمة تدقيق",
|
||||
"add-checklist-item": "إضافة عنصر إلى قائمة التحقق",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "إضافة غلاف",
|
||||
"add-label": "إضافة ملصق",
|
||||
"add-list": "إضافة قائمة",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Добави подзадача",
|
||||
"add-checklist": "Добави списък със задачи",
|
||||
"add-checklist-item": "Добави точка към списъка със задачи",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Добави корица",
|
||||
"add-label": "Добави етикет",
|
||||
"add-list": "Добави списък",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Ouzphenn ur golo",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Afegir Subtasca",
|
||||
"add-checklist": "Afegeix checklist",
|
||||
"add-checklist-item": "Afegeix un ítem al checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Afegeix coberta",
|
||||
"add-label": "Afegeix etiqueta",
|
||||
"add-list": "Afegeix llista",
|
||||
|
||||
+4
-3
@@ -81,7 +81,7 @@
|
||||
"activity-endDate": "editoval(a) datum ukončení na %s z %s",
|
||||
"add-attachment": "Přidat přílohu",
|
||||
"add-board": "Přidat tablo",
|
||||
"add-template": "Add Template",
|
||||
"add-template": "Přidat šablonu",
|
||||
"add-card": "Přidat kartu",
|
||||
"add-card-to-top-of-list": "Přidat kartu na začátek seznamu",
|
||||
"add-card-to-bottom-of-list": "Přidat kartu na konec seznamu",
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Přidat Podúkol",
|
||||
"add-checklist": "Přidat zaškrtávací seznam",
|
||||
"add-checklist-item": "Přidat položku do zaškrtávacího seznamu",
|
||||
"convertChecklistItemToCardPopup-title": "Převést na kartu",
|
||||
"add-cover": "Přidat obal",
|
||||
"add-label": "Přidat štítek",
|
||||
"add-list": "Přidat sloupec",
|
||||
@@ -120,8 +121,8 @@
|
||||
"archives": "Archiv",
|
||||
"template": "Šablona",
|
||||
"templates": "Šablony",
|
||||
"template-container": "Template Container",
|
||||
"add-template-container": "Add Template Container",
|
||||
"template-container": "Kontejner šablony",
|
||||
"add-template-container": "Přidat kontejner šablony",
|
||||
"assign-member": "Přiřadit člena",
|
||||
"attached": "přiloženo",
|
||||
"attachment": "Příloha",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Tilføj delopgave",
|
||||
"add-checklist": "Tilføj tjekliste",
|
||||
"add-checklist-item": "Tilføj et element til tjeklisten",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Tilføj omslag",
|
||||
"add-label": "Tilføj etikette",
|
||||
"add-list": "Tilføj liste",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Teilaufgabe hinzufügen",
|
||||
"add-checklist": "Checkliste hinzufügen",
|
||||
"add-checklist-item": "Element zu Checkliste hinzufügen",
|
||||
"convertChecklistItemToCardPopup-title": "in Karte konvertieren",
|
||||
"add-cover": "Cover hinzufügen",
|
||||
"add-label": "Label hinzufügen",
|
||||
"add-list": "Liste hinzufügen",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Teilaufgabe hinzufügen",
|
||||
"add-checklist": "Checkliste hinzufügen",
|
||||
"add-checklist-item": "Element zu Checkliste hinzufügen",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Cover hinzufügen",
|
||||
"add-label": "Label hinzufügen",
|
||||
"add-list": "Liste hinzufügen",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Προσθήκη Υποεργασίας",
|
||||
"add-checklist": "Προσθήκη Λίστας ελέγχου",
|
||||
"add-checklist-item": "Προσθήκη ενός στοιχείου στη λίστα ελέγχου - checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Προσθήκη Ετικέτας",
|
||||
"add-list": "Προσθήκη Λίστας",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Agregar Subtarea",
|
||||
"add-checklist": "Agregar Lista de Tareas",
|
||||
"add-checklist-item": "Agregar ítem a lista de tareas",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Agregar Portadas",
|
||||
"add-label": "Agregar Etiqueta",
|
||||
"add-list": "Agregar Lista",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Añadir subtarea",
|
||||
"add-checklist": "Añadir una lista de verificación",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de verificación",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Añadir portada",
|
||||
"add-label": "Añadir una etiqueta",
|
||||
"add-list": "Añadir una lista",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Agregar subtarea",
|
||||
"add-checklist": "Agregar lista de comprobación",
|
||||
"add-checklist-item": "Agregar un elemento a la lista de comprobación",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Agregar portada",
|
||||
"add-label": "Agregar una etiqueta",
|
||||
"add-list": "Agregar una lista",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Añadir subtarea",
|
||||
"add-checklist": "Añadir una lista de verificación",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de verificación",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Añadir portada",
|
||||
"add-label": "Añadir una etiqueta",
|
||||
"add-list": "Añadir una lista",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Gehitu egiaztaketa zerrenda",
|
||||
"add-checklist-item": "Gehitu elementu bat egiaztaketa zerrendara",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Gehitu azala",
|
||||
"add-label": "Gehitu etiketa",
|
||||
"add-list": "Gehitu zerrenda",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "افزودن زیر وظیفه",
|
||||
"add-checklist": "افزودن چکلیست",
|
||||
"add-checklist-item": "افزودن مورد به چکلیست",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "افزودن کاور",
|
||||
"add-label": "افزودن لیبل",
|
||||
"add-list": "افزودن لیست",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Lisää alitehtävä",
|
||||
"add-checklist": "Lisää tarkistuslista",
|
||||
"add-checklist-item": "Lisää kohta tarkistuslistaan",
|
||||
"convertChecklistItemToCardPopup-title": "Muuta kortiksi",
|
||||
"add-cover": "Lisää kansi",
|
||||
"add-label": "Lisää nimilappu",
|
||||
"add-list": "Lisää lista",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Ajouter une sous-tâche",
|
||||
"add-checklist": "Ajouter une checklist",
|
||||
"add-checklist-item": "Ajouter un élément à la checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convertir en carte",
|
||||
"add-cover": "Ajouter la couverture",
|
||||
"add-label": "Ajouter une étiquette",
|
||||
"add-list": "Ajouter une liste",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Engadir etiqueta",
|
||||
"add-list": "Engadir lista",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "הוסף תת משימה",
|
||||
"add-checklist": "הוספת רשימת מטלות",
|
||||
"add-checklist-item": "הוספת פריט לרשימת משימות",
|
||||
"convertChecklistItemToCardPopup-title": "המרה לכרטיס",
|
||||
"add-cover": "הוספת כיסוי",
|
||||
"add-label": "הוספת תווית",
|
||||
"add-list": "הוספת רשימה",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "उप कार्य जोड़ें",
|
||||
"add-checklist": "चिह्नांकन-सूची जोड़ें",
|
||||
"add-checklist-item": "चिह्नांकन-सूची विषय कोई तक जोड़ें",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "आवरण जोड़ें",
|
||||
"add-label": "नामपत्र जोड़ें",
|
||||
"add-list": "सूची जोड़ें",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Dodaj podzadatak",
|
||||
"add-checklist": "Dodaj listu provjere",
|
||||
"add-checklist-item": "Dodaj stavku listi provjere",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj naslovnicu",
|
||||
"add-label": "Dodaj oznaku",
|
||||
"add-list": "Dodaj listu",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Alfeladat hozzáadása",
|
||||
"add-checklist": "Ellenőrzőlista hozzáadása",
|
||||
"add-checklist-item": "Elem hozzáadása az ellenőrzőlistához",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Borító hozzáadása",
|
||||
"add-label": "Címke hozzáadása",
|
||||
"add-list": "Lista hozzáadása",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Tambahkan hal ke daftar periksa",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Tambahkan Sampul",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
+4
-3
@@ -81,7 +81,7 @@
|
||||
"activity-endDate": "ha modificato la data di fine a %s di %s ",
|
||||
"add-attachment": "Aggiungi allegato",
|
||||
"add-board": "Aggiungi bacheca",
|
||||
"add-template": "Add Template",
|
||||
"add-template": "Aggiungi Template",
|
||||
"add-card": "Aggiungi scheda",
|
||||
"add-card-to-top-of-list": "Aggiungi Scheda in cima alla Lista",
|
||||
"add-card-to-bottom-of-list": "Aggiungi Scheda in fondo alla Lista",
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Aggiungi sotto-compito",
|
||||
"add-checklist": "Aggiungi Checklist",
|
||||
"add-checklist-item": "Aggiungi un elemento alla checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Aggiungi copertina",
|
||||
"add-label": "Aggiungi etichetta",
|
||||
"add-list": "Aggiungi lista",
|
||||
@@ -120,8 +121,8 @@
|
||||
"archives": "Archivio",
|
||||
"template": "Template",
|
||||
"templates": "Template",
|
||||
"template-container": "Template Container",
|
||||
"add-template-container": "Add Template Container",
|
||||
"template-container": "Contenitore dei Template",
|
||||
"add-template-container": "Aggiungi contenitore di Template",
|
||||
"assign-member": "Assegna a un membro",
|
||||
"attached": "allegato",
|
||||
"attachment": "Allegato",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "サブタスクを追加",
|
||||
"add-checklist": "チェックリストを追加",
|
||||
"add-checklist-item": "チェックリストに項目を追加",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "カバーの追加",
|
||||
"add-label": "ラベルを追加",
|
||||
"add-list": "リストを追加",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "ქვესაქმიანობის დამატება",
|
||||
"add-checklist": "კატალოგის დამატება",
|
||||
"add-checklist-item": "დაამატეთ საგანი ჩამონათვალს",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "გარეკანის დამატება",
|
||||
"add-label": "ნიშნის დამატება",
|
||||
"add-list": "ჩამონათვალის დამატება",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "체크리스트 추가",
|
||||
"add-checklist-item": "체크리스트에 항목 추가",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "커버 추가",
|
||||
"add-label": "라벨 추가",
|
||||
"add-list": "리스트 추가",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Pievienot apakšuzdevumu",
|
||||
"add-checklist": "Pievienot kontrolsarakstu",
|
||||
"add-checklist-item": "Pievienot elementu",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Pievienot vāku",
|
||||
"add-label": "Pievienot birku",
|
||||
"add-list": "Pievienot sarakstu",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Додади подзадача",
|
||||
"add-checklist": "Додади список на задачи",
|
||||
"add-checklist-item": "Додади точка во списокот со задачи",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Додади корица",
|
||||
"add-label": "Додади етикета",
|
||||
"add-list": "Додади листа",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Чеклист нэмэх",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Шошго нэмэх",
|
||||
"add-list": "Жагсаалт нэмэх",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Legg til Underoppgave",
|
||||
"add-checklist": "Legg til Sjekkliste",
|
||||
"add-checklist-item": "Nytt punkt på sjekklisten",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Nytt omslag",
|
||||
"add-label": "Legg til Etikett",
|
||||
"add-list": "Legg til Liste",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Subtaak Toevoegen",
|
||||
"add-checklist": "Checklist toevoegen",
|
||||
"add-checklist-item": "Voeg item toe aan checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Converteer naar Kaart",
|
||||
"add-cover": "Cover Toevoegen",
|
||||
"add-label": "Label Toevoegen",
|
||||
"add-list": "Lijst Toevoegen",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Apondre una jos-tasca",
|
||||
"add-checklist": "Apondre una checklist",
|
||||
"add-checklist-item": "Apondre un element a la checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Apondre una cobèrta",
|
||||
"add-label": "Apondre una etiqueta",
|
||||
"add-list": "Apondre una tièra",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Dodaj podzadanie",
|
||||
"add-checklist": "Dodaj czeklistę",
|
||||
"add-checklist-item": "Dodaj element do czeklisty",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj okładkę",
|
||||
"add-label": "Dodaj etykietę",
|
||||
"add-list": "Dodaj listę",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Adicionar subtarefa",
|
||||
"add-checklist": "Adicionar lista de verificação",
|
||||
"add-checklist-item": "Adicionar um item à lista de verificação",
|
||||
"convertChecklistItemToCardPopup-title": "Converter para Cartão",
|
||||
"add-cover": "Adicionar Capa",
|
||||
"add-label": "Adicionar Etiqueta",
|
||||
"add-list": "Adicionar Lista",
|
||||
|
||||
+2
-1
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Adicionar Sub-tarefa",
|
||||
"add-checklist": "Adicionar Lista de Verificação",
|
||||
"add-checklist-item": "Adicionar um item à lista de verificação",
|
||||
"convertChecklistItemToCardPopup-title": "Converter para Cartão",
|
||||
"add-cover": "Adicionar Capa",
|
||||
"add-label": "Adicionar Etiqueta",
|
||||
"add-list": "Adicionar Lista",
|
||||
@@ -198,7 +199,7 @@
|
||||
"poker-forty": "40",
|
||||
"poker-oneHundred": "100",
|
||||
"poker-unsure": "?",
|
||||
"poker-finish": "Finish",
|
||||
"poker-finish": "Finalizar",
|
||||
"poker-result-votes": "Votos",
|
||||
"poker-result-who": "Who",
|
||||
"poker-replay": "Replay",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Adaugă Decor",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Добавить подзадачу",
|
||||
"add-checklist": "Добавить контрольный список",
|
||||
"add-checklist-item": "Добавить пункт в контрольный список",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Прикрепить",
|
||||
"add-label": "Добавить метку",
|
||||
"add-list": "Добавить простой список",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Pridať Podúlohu",
|
||||
"add-checklist": "Pridať Checklist",
|
||||
"add-checklist-item": "Pridať novú položku do Checklistu",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Pridať obal",
|
||||
"add-label": "Pridať značku",
|
||||
"add-list": "Pridať zoznam",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Dodaj podopravilo",
|
||||
"add-checklist": "Dodaj kontrolni seznam",
|
||||
"add-checklist-item": "Dodaj postavko na kontrolni seznam",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj ovitek",
|
||||
"add-label": "Dodaj oznako",
|
||||
"add-list": "Dodaj seznam",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Dodaj podzadatak",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Dodaj novu stavku u listu",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Dodaj zaglavlje",
|
||||
"add-label": "Dodaj oznaku",
|
||||
"add-list": "Dodaj Listu",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Lägg till deluppgift",
|
||||
"add-checklist": "Lägg till checklista",
|
||||
"add-checklist-item": "Lägg till objekt i checklista",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Lägg till omslag",
|
||||
"add-label": "Lägg till etikett",
|
||||
"add-list": "Lägg till lista",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "เพิ่มรายการตรวจสอบ",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "เพิ่มหน้าปก",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Alt Görev Ekle",
|
||||
"add-checklist": "Yapılacak Listesi Ekle",
|
||||
"add-checklist-item": "Yapılacak listesine yeni bir öğe ekle",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Kapak resmi ekle",
|
||||
"add-label": "Etiket Ekle",
|
||||
"add-list": "Liste Ekle",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Додати підзадачу",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Додати елемент в список",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Додати обкладинку",
|
||||
"add-label": "Додати мітку",
|
||||
"add-list": "Додати список",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Thêm Nhiệm vụ phụ",
|
||||
"add-checklist": "Thêm Danh Sách Kiểm Tra",
|
||||
"add-checklist-item": "Thêm Một Mục Vào Danh Sách Kiểm Tra",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Thêm Bìa",
|
||||
"add-label": "Thêm Nhãn",
|
||||
"add-list": "Thêm Danh Sách",
|
||||
|
||||
+32
-31
@@ -81,14 +81,15 @@
|
||||
"activity-endDate": "已将结束日期从 %s 修改为 %s",
|
||||
"add-attachment": "添加附件",
|
||||
"add-board": "添加看板",
|
||||
"add-template": "Add Template",
|
||||
"add-template": "新增模板",
|
||||
"add-card": "添加卡片",
|
||||
"add-card-to-top-of-list": "Add Card to Top of List",
|
||||
"add-card-to-bottom-of-list": "Add Card to Bottom of List",
|
||||
"add-card-to-top-of-list": "新增卡片到列表顶部",
|
||||
"add-card-to-bottom-of-list": "新增卡片到列表底部",
|
||||
"add-swimlane": "添加泳道图",
|
||||
"add-subtask": "添加子任务",
|
||||
"add-checklist": "添加待办清单",
|
||||
"add-checklist-item": "扩充清单",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "添加封面",
|
||||
"add-label": "添加标签",
|
||||
"add-list": "添加列表",
|
||||
@@ -120,8 +121,8 @@
|
||||
"archives": "归档",
|
||||
"template": "模板",
|
||||
"templates": "模板",
|
||||
"template-container": "Template Container",
|
||||
"add-template-container": "Add Template Container",
|
||||
"template-container": "模板容器",
|
||||
"add-template-container": "新增模板容器",
|
||||
"assign-member": "指派成员",
|
||||
"attached": "附加",
|
||||
"attachment": "附件",
|
||||
@@ -136,7 +137,7 @@
|
||||
"board-not-found": "看板不存在",
|
||||
"board-private-info": "该看板将被设为 <strong>私有</strong>.",
|
||||
"board-public-info": "该看板将被设为 <strong>公开</strong>.",
|
||||
"board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.",
|
||||
"board-drag-drop-reorder-or-click-open": "对看板图标进行拖拽排序。点击看板图标打开看板。",
|
||||
"boardChangeColorPopup-title": "修改看板背景",
|
||||
"boardChangeTitlePopup-title": "重命名看板",
|
||||
"boardChangeVisibilityPopup-title": "更改可视级别",
|
||||
@@ -184,10 +185,10 @@
|
||||
"vote-against": "反对",
|
||||
"deleteVotePopup-title": "删除投票?",
|
||||
"vote-delete-pop": "永久删除。此操作会将所有数据删除掉。",
|
||||
"cardStartPlanningPokerPopup-title": "Start a Planning Poker",
|
||||
"card-edit-planning-poker": "Edit Planning Poker",
|
||||
"editPokerEndDatePopup-title": "Change Planning Poker vote end date",
|
||||
"poker-question": "Planning Poker",
|
||||
"cardStartPlanningPokerPopup-title": "开始一次计划扑克",
|
||||
"card-edit-planning-poker": "编辑计划扑克",
|
||||
"editPokerEndDatePopup-title": "更改计划扑克投票截止日期",
|
||||
"poker-question": "计划扑克",
|
||||
"poker-one": "1",
|
||||
"poker-two": "2",
|
||||
"poker-three": "3",
|
||||
@@ -197,14 +198,14 @@
|
||||
"poker-twenty": "20",
|
||||
"poker-forty": "40",
|
||||
"poker-oneHundred": "100",
|
||||
"poker-unsure": "?",
|
||||
"poker-finish": "Finish",
|
||||
"poker-result-votes": "Votes",
|
||||
"poker-result-who": "Who",
|
||||
"poker-unsure": "?",
|
||||
"poker-finish": "完成",
|
||||
"poker-result-votes": "投票",
|
||||
"poker-result-who": "何人",
|
||||
"poker-replay": "Replay",
|
||||
"set-estimation": "Set Estimation",
|
||||
"deletePokerPopup-title": "Delete planning poker?",
|
||||
"poker-delete-pop": "Deleting is permanent. You will lose all actions associated with this planning poker.",
|
||||
"deletePokerPopup-title": "删除计划扑克?",
|
||||
"poker-delete-pop": "永久删除。对该计划扑克的所有操作记录将会丢失。",
|
||||
"cardDeletePopup-title": "彻底删除卡片?",
|
||||
"cardDetailsActionsPopup-title": "卡片操作",
|
||||
"cardLabelsPopup-title": "标签",
|
||||
@@ -236,7 +237,7 @@
|
||||
"close": "关闭",
|
||||
"close-board": "关闭看板",
|
||||
"close-board-pop": "您可以通过主页头部的“归档”按钮,来恢复看板。",
|
||||
"close-card": "Close Card",
|
||||
"close-card": "关闭卡片",
|
||||
"color-black": "黑色",
|
||||
"color-blue": "蓝色",
|
||||
"color-crimson": "深红",
|
||||
@@ -361,11 +362,11 @@
|
||||
"export-board-excel": "看板导出为Excel",
|
||||
"user-can-not-export-excel": "用户无法导出Excel",
|
||||
"export-board-html": "看板导出为HTML",
|
||||
"export-card": "Export card",
|
||||
"export-card-pdf": "Export card to PDF",
|
||||
"user-can-not-export-card-to-pdf": "User can not export card to PDF",
|
||||
"export-card": "导出卡片",
|
||||
"export-card-pdf": "卡片导出为PDF",
|
||||
"user-can-not-export-card-to-pdf": "用户无法将卡片导出为PDF",
|
||||
"exportBoardPopup-title": "导出看板",
|
||||
"exportCardPopup-title": "Export card",
|
||||
"exportCardPopup-title": "导出卡片",
|
||||
"sort": "排序",
|
||||
"sort-desc": "点此来将列表排序",
|
||||
"list-sort-by": "按此来将列表排序:",
|
||||
@@ -454,8 +455,8 @@
|
||||
"set-color-list": "设置颜色",
|
||||
"listActionPopup-title": "列表操作",
|
||||
"settingsUserPopup-title": "用户设置",
|
||||
"settingsTeamPopup-title": "Team Settings",
|
||||
"settingsOrgPopup-title": "Organization Settings",
|
||||
"settingsTeamPopup-title": "团队设置",
|
||||
"settingsOrgPopup-title": "组织设置",
|
||||
"swimlaneActionPopup-title": "泳道图操作",
|
||||
"swimlaneAddPopup-title": "在下面添加一个泳道",
|
||||
"listImportCardPopup-title": "导入 Trello 卡片",
|
||||
@@ -671,7 +672,7 @@
|
||||
"setListColorPopup-title": "选择一种颜色",
|
||||
"assigned-by": "指派人",
|
||||
"requested-by": "需求人",
|
||||
"card-sorting-by-number": "Card sorting by number",
|
||||
"card-sorting-by-number": "根据编号对卡片排序",
|
||||
"board-delete-notice": "删除时永久操作,将会丢失此看板上的所有列表、卡片和动作。",
|
||||
"delete-board-confirm-popup": "所有列表、卡片、标签和活动都回被删除,将无法恢复看板内容。不支持撤销。",
|
||||
"boardDeletePopup-title": "删除看板?",
|
||||
@@ -853,8 +854,8 @@
|
||||
"act-duenow": "__card__ 的当前到期提醒(__timeValue__) 现在到期",
|
||||
"act-atUserComment": "[__board__] __list__/__card__ 提到了您",
|
||||
"delete-user-confirm-popup": "确实要删除此帐户吗?此操作无法撤销。",
|
||||
"delete-team-confirm-popup": "Are you sure you want to delete this team? There is no undo.",
|
||||
"delete-org-confirm-popup": "Are you sure you want to delete this organization? There is no undo.",
|
||||
"delete-team-confirm-popup": "请确认是否删除此团队?此操作无法撤销。",
|
||||
"delete-org-confirm-popup": "请确认是否删除此组织?此操作无法撤销。",
|
||||
"accounts-allowUserDelete": "允许用户自行删除其帐户",
|
||||
"hide-minicard-label-text": "隐藏迷你卡片标签文本",
|
||||
"show-desktop-drag-handles": "显示桌面拖放手柄",
|
||||
@@ -1045,7 +1046,7 @@
|
||||
"rulesReportTitle": "规则报告",
|
||||
"copy-swimlane": "复制泳道",
|
||||
"copySwimlanePopup-title": "复制泳道",
|
||||
"display-card-creator": "Display Card Creator",
|
||||
"display-card-creator": "显示卡片创建者",
|
||||
"wait-spinner": "Wait Spinner",
|
||||
"Bounce": "Bounce Wait Spinner",
|
||||
"Cube": "Cube Wait Spinner",
|
||||
@@ -1055,8 +1056,8 @@
|
||||
"Rotateplane": "Rotateplane Wait Spinner",
|
||||
"Scaleout": "Scaleout Wait Spinner",
|
||||
"Wave": "Wave Wait Spinner",
|
||||
"maximize-card": "Maximize Card",
|
||||
"minimize-card": "Minimize Card",
|
||||
"delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it",
|
||||
"delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it"
|
||||
"maximize-card": "最大化卡片",
|
||||
"minimize-card": "最小化卡片",
|
||||
"delete-org-warning-message": "无法删除该组织,至少还有一个用户属于该组织。",
|
||||
"delete-team-warning-message": "无法删除该团队,至少还有一个用户属于该团队。"
|
||||
}
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Add Label",
|
||||
"add-list": "Add List",
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
"add-subtask": "新增子任務",
|
||||
"add-checklist": "新增待辦清單",
|
||||
"add-checklist-item": "新增項目",
|
||||
"convertChecklistItemToCardPopup-title": "Convert to Card",
|
||||
"add-cover": "新增封面",
|
||||
"add-label": "新增標籤",
|
||||
"add-list": "新增清單",
|
||||
@@ -120,8 +121,8 @@
|
||||
"archives": "封存",
|
||||
"template": "範本",
|
||||
"templates": "範本",
|
||||
"template-container": "Template Container",
|
||||
"add-template-container": "Add Template Container",
|
||||
"template-container": "範本容器",
|
||||
"add-template-container": "新增範本容器",
|
||||
"assign-member": "分配成員",
|
||||
"attached": "附加",
|
||||
"attachment": "附件",
|
||||
@@ -199,12 +200,12 @@
|
||||
"poker-oneHundred": "100",
|
||||
"poker-unsure": "?",
|
||||
"poker-finish": "完成",
|
||||
"poker-result-votes": "Votes",
|
||||
"poker-result-who": "Who",
|
||||
"poker-result-votes": "投票",
|
||||
"poker-result-who": "誰",
|
||||
"poker-replay": "重播",
|
||||
"set-estimation": "Set Estimation",
|
||||
"set-estimation": "設定預估時間",
|
||||
"deletePokerPopup-title": "刪除規劃撲克?",
|
||||
"poker-delete-pop": "Deleting is permanent. You will lose all actions associated with this planning poker.",
|
||||
"poker-delete-pop": "刪除是永遠的,你會失去所有與此規劃撲克相關動作關聯",
|
||||
"cardDeletePopup-title": "徹底刪除卡片?",
|
||||
"cardDetailsActionsPopup-title": "卡片操作",
|
||||
"cardLabelsPopup-title": "標籤",
|
||||
@@ -1041,7 +1042,7 @@
|
||||
"creator": "創建者",
|
||||
"filesReportTitle": "Files Report",
|
||||
"orphanedFilesReportTitle": "Orphaned Files Report",
|
||||
"reports": "Reports",
|
||||
"reports": "報告",
|
||||
"rulesReportTitle": "Rules Report",
|
||||
"copy-swimlane": "複製泳道流程圖",
|
||||
"copySwimlanePopup-title": "複製泳道流程圖",
|
||||
|
||||
@@ -227,6 +227,56 @@ Boards.attachSchema(
|
||||
type: String,
|
||||
allowedValues: ['public', 'private'],
|
||||
},
|
||||
orgs: {
|
||||
/**
|
||||
* the list of organizations that a board belongs to
|
||||
*/
|
||||
type: [Object],
|
||||
optional: true,
|
||||
},
|
||||
'orgs.$.orgId':{
|
||||
/**
|
||||
* The uniq ID of the organization
|
||||
*/
|
||||
type: String,
|
||||
},
|
||||
'orgs.$.orgDisplayName':{
|
||||
/**
|
||||
* The display name of the organization
|
||||
*/
|
||||
type: String,
|
||||
},
|
||||
'orgs.$.isActive': {
|
||||
/**
|
||||
* Is the organization active?
|
||||
*/
|
||||
type: Boolean,
|
||||
},
|
||||
teams: {
|
||||
/**
|
||||
* the list of teams that a board belongs to
|
||||
*/
|
||||
type: [Object],
|
||||
optional: true,
|
||||
},
|
||||
'teams.$.teamId':{
|
||||
/**
|
||||
* The uniq ID of the team
|
||||
*/
|
||||
type: String,
|
||||
},
|
||||
'teams.$.teamDisplayName':{
|
||||
/**
|
||||
* The display name of the team
|
||||
*/
|
||||
type: String,
|
||||
},
|
||||
'teams.$.isActive': {
|
||||
/**
|
||||
* Is the team active?
|
||||
*/
|
||||
type: Boolean,
|
||||
},
|
||||
color: {
|
||||
/**
|
||||
* The color of the board.
|
||||
@@ -325,6 +375,14 @@ Boards.attachSchema(
|
||||
defaultValue: true,
|
||||
},
|
||||
|
||||
allowsCardNumber: {
|
||||
/**
|
||||
* Does the board allows card numbers?
|
||||
*/
|
||||
type: Boolean,
|
||||
defaultValue: false,
|
||||
},
|
||||
|
||||
allowsActivities: {
|
||||
/**
|
||||
* Does the board allows comments?
|
||||
@@ -695,6 +753,23 @@ Boards.helpers({
|
||||
return _.where(this.members, { isActive: true });
|
||||
},
|
||||
|
||||
|
||||
activeOrgs() {
|
||||
return _.where(this.orgs, { isActive: true });
|
||||
},
|
||||
|
||||
// hasNotAnyOrg(){
|
||||
// return this.orgs === undefined || this.orgs.length <= 0;
|
||||
// },
|
||||
|
||||
activeTeams() {
|
||||
return _.where(this.teams, { isActive: true });
|
||||
},
|
||||
|
||||
// hasNotAnyTeam(){
|
||||
// return this.teams === undefined || this.teams.length <= 0;
|
||||
// },
|
||||
|
||||
activeAdmins() {
|
||||
return _.where(this.members, { isActive: true, isAdmin: true });
|
||||
},
|
||||
@@ -989,6 +1064,26 @@ Boards.helpers({
|
||||
return result;
|
||||
},
|
||||
|
||||
getNextCardNumber() {
|
||||
const boardCards = Cards.find(
|
||||
{
|
||||
boardId: this._id
|
||||
},
|
||||
{
|
||||
sort: { cardNumber: -1 },
|
||||
limit: 1
|
||||
}
|
||||
).fetch();
|
||||
|
||||
// If no card is assigned to the board, return 1
|
||||
if (!boardCards || boardCards.length === 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
const maxCardNr = !!boardCards[0].cardNumber ? boardCards[0].cardNumber : 0;
|
||||
return maxCardNr + 1;
|
||||
},
|
||||
|
||||
cardsDueInBetween(start, end) {
|
||||
return Cards.find({
|
||||
boardId: this._id,
|
||||
@@ -1218,6 +1313,10 @@ Boards.mutations({
|
||||
return { $set: { allowsDescriptionTitle } };
|
||||
},
|
||||
|
||||
setAllowsCardNumber(allowsCardNumber) {
|
||||
return { $set: { allowsCardNumber } };
|
||||
},
|
||||
|
||||
setAllowsDescriptionText(allowsDescriptionText) {
|
||||
return { $set: { allowsDescriptionText } };
|
||||
},
|
||||
@@ -1459,6 +1558,24 @@ if (Meteor.isServer) {
|
||||
} else throw new Meteor.Error('error-board-notAMember');
|
||||
} else throw new Meteor.Error('error-board-doesNotExist');
|
||||
},
|
||||
setBoardOrgs(boardOrgsArray, currBoardId){
|
||||
check(boardOrgsArray, Array);
|
||||
check(currBoardId, String);
|
||||
Boards.update(currBoardId, {
|
||||
$set: {
|
||||
orgs: boardOrgsArray,
|
||||
},
|
||||
});
|
||||
},
|
||||
setBoardTeams(boardTeamsArray, currBoardId){
|
||||
check(boardTeamsArray, Array);
|
||||
check(currBoardId, String);
|
||||
Boards.update(currBoardId, {
|
||||
$set: {
|
||||
teams: boardTeamsArray,
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Loaded 100 of 123 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user