Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75073bbdb2 | ||
|
|
88573ad2cd | ||
|
|
058180687a | ||
|
|
897506eeac | ||
|
|
aac7c380c8 | ||
|
|
fc35c234a7 | ||
|
|
0d3002f69d | ||
|
|
7d920e938b | ||
|
|
26b521e86e | ||
|
|
83b042701f | ||
|
|
21b75edcdd | ||
|
|
493d71a198 | ||
|
|
27f9c6b925 | ||
|
|
fa07dcf422 | ||
|
|
2b9540ce02 | ||
|
|
906c25d5e8 | ||
|
|
e9924a2f03 | ||
|
|
16e7fc6edc | ||
|
|
e0ca960a35 | ||
|
|
0e755e021b | ||
|
|
9be3f3714a | ||
|
|
02e425b39d | ||
|
|
ec01206030 | ||
|
|
cbbb5deff7 | ||
|
|
4377be8aa4 | ||
|
|
26010476b8 | ||
|
|
aac27d4db3 | ||
|
|
9762030920 | ||
|
|
cb1ffea5d6 | ||
|
|
a4ff6cc0af | ||
|
|
84acc65d04 | ||
|
|
2b1727c6e1 | ||
|
|
178f376e21 | ||
|
|
92538a6ac3 | ||
|
|
3fcde252f7 | ||
|
|
e89965f642 | ||
|
|
b4e5583065 | ||
|
|
65b11ce3bd | ||
|
|
ea74e6ad23 | ||
|
|
4467a68b97 | ||
|
|
799bf5735b | ||
|
|
92d0385911 | ||
|
|
9a21b0a1c9 | ||
|
|
6eb21faca2 | ||
|
|
2a54218f3f | ||
|
|
6eac38bde5 | ||
|
|
947c1f81ee | ||
|
|
2fce02afbc |
No files matched your search
+6
-6
@@ -6,10 +6,11 @@
|
||||
meteor-base@1.4.0
|
||||
|
||||
# Build system
|
||||
ecmascript@0.14.0
|
||||
ecmascript@0.14.2
|
||||
standard-minifier-css@1.6.0
|
||||
standard-minifier-js@2.6.0
|
||||
mquandalle:jade
|
||||
coffeescript@2.4.1!
|
||||
|
||||
# Polyfills
|
||||
es5-shim@4.8.0
|
||||
@@ -22,7 +23,7 @@ dburles:collection-helpers
|
||||
idmontie:migrations
|
||||
matb33:collection-hooks
|
||||
matteodem:easy-search
|
||||
mongo@1.8.0
|
||||
mongo@1.9.0-rc110.2
|
||||
mquandalle:collection-mutations
|
||||
|
||||
# Account system
|
||||
@@ -37,13 +38,12 @@ wekan-accounts-oidc
|
||||
# Utilities
|
||||
check@1.3.1
|
||||
jquery@1.11.10
|
||||
random@1.1.0
|
||||
random@1.2.0-rc110.2
|
||||
reactive-dict@1.3.0
|
||||
session@1.2.0
|
||||
tracker@1.2.0
|
||||
underscore@1.0.10
|
||||
3stack:presence
|
||||
alethes:pages
|
||||
arillo:flow-router-helpers
|
||||
audit-argument-checks@1.0.7
|
||||
kadira:blaze-layout
|
||||
@@ -67,7 +67,7 @@ templates:tabs
|
||||
verron:autosize
|
||||
simple:json-routes
|
||||
rajit:bootstrap3-datepicker
|
||||
shell-server@0.4.0
|
||||
shell-server@0.5.0-rc110.2
|
||||
simple:rest-accounts-password
|
||||
useraccounts:core
|
||||
email@1.2.3
|
||||
@@ -75,7 +75,7 @@ horka:swipebox
|
||||
dynamic-import@0.5.1
|
||||
staringatlights:fast-render
|
||||
|
||||
accounts-password@1.5.2
|
||||
accounts-password@1.6.0-rc110.2
|
||||
cfs:gridfs
|
||||
rzymek:fullcalendar
|
||||
momentjs:moment@2.22.2
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@1.9
|
||||
METEOR@1.10-rc.2
|
||||
+19
-19
@@ -1,24 +1,23 @@
|
||||
3stack:presence@1.1.2
|
||||
accounts-base@1.5.0
|
||||
accounts-oauth@1.1.16
|
||||
accounts-password@1.5.3
|
||||
accounts-base@1.6.0-rc110.2
|
||||
accounts-oauth@1.2.0-rc110.2
|
||||
accounts-password@1.6.0-rc110.2
|
||||
aldeed:collection2@2.10.0
|
||||
aldeed:collection2-core@1.2.0
|
||||
aldeed:schema-deny@1.1.0
|
||||
aldeed:schema-index@1.1.1
|
||||
aldeed:simple-schema@1.5.4
|
||||
alethes:pages@1.8.6
|
||||
allow-deny@1.1.0
|
||||
arillo:flow-router-helpers@0.5.2
|
||||
audit-argument-checks@1.0.7
|
||||
autoupdate@1.6.0
|
||||
babel-compiler@7.5.1
|
||||
babel-compiler@7.5.2
|
||||
babel-runtime@1.5.0
|
||||
base64@1.0.12
|
||||
binary-heap@1.0.11
|
||||
blaze@2.3.4
|
||||
blaze-tools@1.0.10
|
||||
boilerplate-generator@1.6.0
|
||||
boilerplate-generator@1.7.0-rc110.2
|
||||
browser-policy-common@1.0.11
|
||||
browser-policy-framing@1.1.0
|
||||
caching-compiler@1.2.1
|
||||
@@ -45,7 +44,8 @@ cfs:worker@0.1.5
|
||||
check@1.3.1
|
||||
chuangbo:cookie@1.1.0
|
||||
coagmano:stylus@2.0.0
|
||||
coffeescript@1.0.17
|
||||
coffeescript@2.4.1
|
||||
coffeescript-compiler@2.4.1
|
||||
cottz:publish-relations@2.0.8
|
||||
dburles:collection-helpers@1.1.0
|
||||
ddp@1.4.0
|
||||
@@ -57,7 +57,7 @@ deps@1.0.12
|
||||
diff-sequence@1.1.1
|
||||
dynamic-import@0.5.1
|
||||
easylogic:summernote@0.8.8
|
||||
ecmascript@0.14.1
|
||||
ecmascript@0.14.2
|
||||
ecmascript-runtime@0.7.0
|
||||
ecmascript-runtime-client@0.10.0
|
||||
ecmascript-runtime-server@0.9.0
|
||||
@@ -75,7 +75,7 @@ htmljs@1.0.11
|
||||
http@1.4.2
|
||||
id-map@1.1.0
|
||||
idmontie:migrations@1.0.3
|
||||
inter-process-messaging@0.1.0
|
||||
inter-process-messaging@0.1.1-rc110.2
|
||||
jquery@1.11.11
|
||||
kadira:blaze-layout@2.3.0
|
||||
kadira:dochead@1.5.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.1.1
|
||||
launch-screen@1.2.0-rc110.2
|
||||
livedata@1.0.18
|
||||
localstorage@1.2.0
|
||||
logging@1.1.20
|
||||
@@ -104,13 +104,13 @@ meteorspark:util@0.2.0
|
||||
minifier-css@1.5.0
|
||||
minifier-js@2.6.0
|
||||
minifiers@1.1.8-faster-rebuild.0
|
||||
minimongo@1.4.5
|
||||
mobile-status-bar@1.0.14
|
||||
minimongo@1.5.0-rc110.2
|
||||
mobile-status-bar@1.1.0-rc110.2
|
||||
modern-browsers@0.1.5
|
||||
modules@0.15.0
|
||||
modules-runtime@0.12.0
|
||||
momentjs:moment@2.24.0
|
||||
mongo@1.8.1
|
||||
mongo@1.9.0-rc110.2
|
||||
mongo-decimal@0.1.1
|
||||
mongo-dev-server@1.1.0
|
||||
mongo-id@1.0.7
|
||||
@@ -127,9 +127,9 @@ mquandalle:mousetrap-bindglobal@0.0.1
|
||||
mquandalle:perfect-scrollbar@0.6.5_2
|
||||
msavin:usercache@1.8.0
|
||||
npm-bcrypt@0.9.3
|
||||
npm-mongo@3.3.0
|
||||
oauth@1.2.8
|
||||
oauth2@1.2.1
|
||||
npm-mongo@3.5.0-rc110.2
|
||||
oauth@1.3.0-rc110.2
|
||||
oauth2@1.3.0-rc110.2
|
||||
observe-sequence@1.0.16
|
||||
ongoworks:speakingurl@1.1.0
|
||||
ordered-dict@1.1.0
|
||||
@@ -144,7 +144,7 @@ promise@0.11.2
|
||||
raix:eventemitter@0.1.3
|
||||
raix:handlebar-helpers@0.2.5
|
||||
rajit:bootstrap3-datepicker@1.7.1_1
|
||||
random@1.1.0
|
||||
random@1.2.0-rc110.2
|
||||
rate-limit@1.0.9
|
||||
reactive-dict@1.3.0
|
||||
reactive-var@1.0.11
|
||||
@@ -156,7 +156,7 @@ server-render@0.3.1
|
||||
service-configuration@1.0.11
|
||||
session@1.2.0
|
||||
sha@1.0.9
|
||||
shell-server@0.4.0
|
||||
shell-server@0.5.0-rc110.2
|
||||
simple:authenticate-user-by-token@1.0.1
|
||||
simple:json-routes@2.1.0
|
||||
simple:rest-accounts-password@1.1.2
|
||||
@@ -186,7 +186,7 @@ useraccounts:core@1.14.2
|
||||
useraccounts:flow-routing@1.14.2
|
||||
useraccounts:unstyled@1.14.2
|
||||
verron:autosize@3.0.8
|
||||
webapp@1.8.2
|
||||
webapp@1.9.0-rc110.2
|
||||
webapp-hashing@1.0.9
|
||||
wekan-accounts-cas@0.1.0
|
||||
wekan-accounts-oidc@1.0.10
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v3.76.0",
|
||||
"version": "v3.83.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v3.76.0",
|
||||
"version": "v3.83.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
+125
@@ -1,8 +1,133 @@
|
||||
# v3.83 2020-03-01 Wekan release
|
||||
|
||||
This release tries to revert remaining the following changes:
|
||||
|
||||
- [Revert](https://github.com/wekan/wekan/88573ad2cdb8596b795a82ef40a0662180e8a7d7) change made at Wekan v3.81,
|
||||
because building did not work: [Try to make Meteor build time shorter
|
||||
by excluding legacy and cordova. This was made possible by
|
||||
Meteor 1.10-rc.2](https://github.com/wekan/wekan/commit/0d3002f69d97e646fa7368bfdade4f78c51e9884).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.82 2020-03-01 Wekan release
|
||||
|
||||
This release reverts the following changes:
|
||||
|
||||
- Revert change made at Wekan v3.81, because building did not work: [Try to make Meteor build time shorter
|
||||
by excluding legacy and cordova. This was made possible by
|
||||
Meteor 1.10-rc.2](https://github.com/wekan/wekan/commit/0d3002f69d97e646fa7368bfdade4f78c51e9884).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.81 2020-03-01 Wekan release
|
||||
|
||||
This release [fixes](https://github.com/wekan/wekan/commit/aac7c380c8c389b0683b2bd64e2cc856993f0e30) the following CRITICAL SECURITY VULNERABILITIES and other bugs:
|
||||
|
||||
- Fix critical and moderate security vulnerabilities reported at 2020-02-26 with
|
||||
responsible disclosure by [Dejan Zelic](https://twitter.com/dejandayoff),
|
||||
Justin Benjamin and others at [Offensive Security](https://twitter.com/offsectraining),
|
||||
that follow standard 90 days before public disclosure.
|
||||
Thanks to xet7.
|
||||
- Fix webhook error that prevented some card etc deleting from web UI of board.
|
||||
Thanks to xet7.
|
||||
- Add missing Font Awesome icon to Board Settings Menu.
|
||||
Thanks to xet7.
|
||||
- Remove autofocus from many form input boxes so that they would not cause warnings.
|
||||
Thanks to xet7.
|
||||
|
||||
and does the following upgrades:
|
||||
|
||||
- [Upgrade Meteor to 1.10-rc.2](https://github.com/wekan/wekan/commit/26b521e86e6ac40b7ba25bbe8dac7bf4d48d43ce).
|
||||
Thanks to xet7.
|
||||
- [Try to make Meteor build time shorter by excluding legacy and cordova. This was made possible by
|
||||
Meteor 1.10-rc.2](https://github.com/wekan/wekan/commit/0d3002f69d97e646fa7368bfdade4f78c51e9884).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Try to fix afterwards loading of cards by adding fallback when requestIdleCallback is not
|
||||
available](https://github.com/wekan/wekan/commit/2b9540ce02de604bf84ea082f2dcb1d01673708c).
|
||||
Thanks to xet7.
|
||||
- [Make profile.initials available in publications](https://github.com/wekan/wekan/pull/2948).
|
||||
Thanks to NicoP-S.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.80 2020-02-22 Wekan release
|
||||
|
||||
This release adds the following features:
|
||||
|
||||
- [Create New User in Admin Panel](https://github.com/wekan/wekan/commit/e0ca960a35cf006880019ba28fc82aa30f289a71).
|
||||
Works, but does not save fullname yet, so currently it's needed to edit add fullname later.
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update to Meteor 1.9.1, Node 12.16.1 etc newest dependencies](https://github.com/wekan/wekan/commit/cbbb5deff7d84a91c40becc9caaf70f5b6738b63).
|
||||
Thanks to xet7.
|
||||
- [Update to Meteor 1.9.2](https://github.com/wekan/wekan/commit/9be3f3714ae680ff9fc1855c960c9831e84c2b07).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Update Sandstorm release build script](https://github.com/wekan/wekan/commit/a4ff6cc0af8545ca4d3e97fa2cabbe7981c025b2).
|
||||
Thanks to xet7.
|
||||
- [Fix docker-compose link](https://github.com/wekan/wekan/pull/2937).
|
||||
Thanks to pbek.
|
||||
- [Remove alethes:pages package, that had some indentation error.
|
||||
Package is about pagination, but I did not find any pagination related code in Wekan
|
||||
yet](https://github.com/wekan/wekan/commit/ec012060305bc16fbf8d2ac218f5c847e02c4301).
|
||||
Thanks to xet7 !
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.79 2020-02-13 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix Card Opened Webhook can not be disabled](https://github.com/wekan/wekan/commit/178f376e2138b5522c2e92ddfd2babb113df8d9f).
|
||||
Thanks to mvanvoorden and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.78 2020-02-12 Wekan release
|
||||
|
||||
This release adds the following features:
|
||||
|
||||
- [Card Settings / Show on Card: Description Title and Description Text](https://github.com/wekan/wekan/commit/e89965f6422fd95b4ad2112ae407b1dde4853510).
|
||||
Thanks to e-stoniauk, 2020product and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Remove card element grouping to create compact card layout](https://github.com/wekan/wekan/commit/e89965f6422fd95b4ad2112ae407b1dde4853510).
|
||||
Thanks to e-stoniauk, 2020product and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.77 2020-02-10 Wekan release
|
||||
|
||||
This release removes the following features:
|
||||
|
||||
- [Remove hiding comments and activities](https://github.com/wekan/wekan/commit/2a54218f3f68547032bd53a04a968b233be21e15).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- Fix Copy Card Link to Clipboard button at card title did not
|
||||
work [Part 1](https://github.com/wekan/wekan/commit/9a21b0a1c933e7f778e4e57a8258e150ccea1620)
|
||||
and [Part2](https://github.com/wekan/wekan/commit/4467a68b97a3fbf0fbae7f05177d978f2aa80287).
|
||||
Thanks to 2020product and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.76 2020-02-07 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Use Meteor 1.9 and Node.js 12.15.0 on Snap and Docker](https://github.com/wekan/wekan/commit/8384d68a060ef8f2c202ce2fa6064c5c823d28dc).
|
||||
This also fixes bug that exporting some boards was not possible, downloading export file failed.
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ LABEL maintainer="wekan"
|
||||
# ENV BUILD_DEPS="paxctl"
|
||||
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v12.15.0 \
|
||||
METEOR_RELEASE=1.9.0 \
|
||||
NODE_VERSION=v12.16.1 \
|
||||
METEOR_RELEASE=1.10-rc.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
NPM_VERSION=latest \
|
||||
|
||||
@@ -61,7 +61,7 @@ that by providing one-click installation on various platforms.
|
||||
[Mac](https://github.com/wekan/wekan/wiki/Mac) / [Windows](https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows).
|
||||
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists.
|
||||
- 1 GB RAM minimum free for Wekan. Production server should have minimum total 4 GB RAM.
|
||||
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/devel/docker-compose.yml): 3 frontend servers,
|
||||
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/master/docker-compose.yml): 3 frontend servers,
|
||||
each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.
|
||||
- Enough disk space and alerts about low disk space. If you run out disk space, MongoDB database gets corrupted.
|
||||
- SECURITY: Updating to newest Wekan version very often. Please check you do not have automatic updates of Sandstorm or Snap turned off.
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v3.76.0"
|
||||
appVersion: "v3.82.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -201,20 +201,20 @@ template(name="cardActivities")
|
||||
.activity-checklist(href="{{ card.absoluteUrl }}")
|
||||
+viewer
|
||||
= checklistItem.title
|
||||
|
||||
|
||||
if(currentData.timeKey)
|
||||
| {{{_ activityType }}}
|
||||
= ' '
|
||||
i(title=currentData.timeValue).activity-meta {{ moment currentData.timeValue 'LLL' }}
|
||||
if (currentData.timeOldValue)
|
||||
= ' '
|
||||
= ' '
|
||||
| {{{_ "previous_as" }}}
|
||||
= ' '
|
||||
i(title=currentData.timeOldValue).activity-meta {{ moment currentData.timeOldValue 'LLL' }}
|
||||
= ' @'
|
||||
else if(currentData.timeValue)
|
||||
| {{{_ activityType currentData.timeValue}}}
|
||||
|
||||
|
||||
|
||||
if($eq activityType 'deleteComment')
|
||||
| {{{_ 'activity-deleteComment' currentData.commentId}}}.
|
||||
|
||||
@@ -53,5 +53,7 @@ template(name="attachmentsGalery")
|
||||
if currentUser.isBoardMember
|
||||
unless currentUser.isCommentOnly
|
||||
unless currentUser.isWorker
|
||||
li.attachment-item.add-attachment
|
||||
a.js-add-attachment {{_ 'add-attachment' }}
|
||||
//li.attachment-item.add-attachment
|
||||
a.js-add-attachment
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'add-attachment' }}
|
||||
@@ -8,10 +8,11 @@ template(name="cardDetails")
|
||||
a.fa.fa-times-thin.close-card-details.js-close-card-details
|
||||
if currentUser.isBoardMember
|
||||
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu
|
||||
input.inline-input(type="hidden" id="cardURL_copy" value="{{ absoluteUrl }}")
|
||||
a.fa.card-copy-button.js-copy-link(
|
||||
input.inline-input(type="text" id="cardURL_copy" value="{{ absoluteUrl }}")
|
||||
a.fa.fa-link.card-copy-button.js-copy-link(
|
||||
class="fa-link"
|
||||
title="{{_ 'copy-card-link-to-clipboard'}}"
|
||||
value="{{ absoluteUrl }}"
|
||||
)
|
||||
if isMiniScreen
|
||||
a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details
|
||||
@@ -94,7 +95,7 @@ template(name="cardDetails")
|
||||
a.card-label.add-label.js-end-date
|
||||
i.fa.fa-plus
|
||||
|
||||
.card-details-items
|
||||
//.card-details-items
|
||||
if currentBoard.allowsMembers
|
||||
.card-details-item.card-details-item-members
|
||||
h3
|
||||
@@ -140,7 +141,7 @@ template(name="cardDetails")
|
||||
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
.card-details-items
|
||||
//.card-details-items
|
||||
each customFieldsWD
|
||||
.card-details-item.card-details-item-customfield
|
||||
h3.card-details-item-title
|
||||
@@ -148,7 +149,7 @@ template(name="cardDetails")
|
||||
= definition.name
|
||||
+cardCustomField
|
||||
|
||||
.card-details-items
|
||||
//.card-details-items
|
||||
if getSpentTime
|
||||
.card-details-item.card-details-item-spent
|
||||
if getIsOvertime
|
||||
@@ -157,37 +158,7 @@ template(name="cardDetails")
|
||||
h3.card-details-item-title {{_ 'spent-time-hours'}}
|
||||
+cardSpentTime
|
||||
|
||||
//- XXX We should use "editable" to avoid repetiting ourselves
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
h3
|
||||
i.fa.fa-align-left
|
||||
card-details-item-title {{_ 'description'}}
|
||||
+inlinedCardDescription(classNames="card-description js-card-description")
|
||||
+editor(autofocus=true)
|
||||
| {{getUnsavedValue 'cardDescription' _id getDescription}}
|
||||
.edit-controls.clearfix
|
||||
button.primary(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if getDescription
|
||||
+viewer
|
||||
= getDescription
|
||||
else
|
||||
| {{_ 'edit'}}
|
||||
if (hasUnsavedValue 'cardDescription' _id)
|
||||
p.quiet
|
||||
| {{_ 'unsaved-description'}}
|
||||
a.js-open-inlined-form {{_ 'view-it'}}
|
||||
= ' - '
|
||||
a.js-close-inlined-form {{_ 'discard'}}
|
||||
else if getDescription
|
||||
h3.card-details-item-title {{_ 'description'}}
|
||||
+viewer
|
||||
= getDescription
|
||||
|
||||
.card-details-items
|
||||
//.card-details-items
|
||||
if currentBoard.allowsRequestedBy
|
||||
.card-details-item.card-details-item-name
|
||||
h3
|
||||
@@ -228,6 +199,41 @@ template(name="cardDetails")
|
||||
+viewer
|
||||
= getAssignedBy
|
||||
|
||||
//- XXX We should use "editable" to avoid repetiting ourselves
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
if currentBoard.allowsDescriptionTitle
|
||||
h3
|
||||
i.fa.fa-align-left
|
||||
card-details-item-title {{_ 'description'}}
|
||||
if currentBoard.allowsDescriptionText
|
||||
+inlinedCardDescription(classNames="card-description js-card-description")
|
||||
+editor(autofocus=true)
|
||||
| {{getUnsavedValue 'cardDescription' _id getDescription}}
|
||||
.edit-controls.clearfix
|
||||
button.primary(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
if currentBoard.allowsDescriptionText
|
||||
a.js-open-inlined-form
|
||||
if getDescription
|
||||
+viewer
|
||||
= getDescription
|
||||
else
|
||||
| {{_ 'edit'}}
|
||||
if (hasUnsavedValue 'cardDescription' _id)
|
||||
p.quiet
|
||||
| {{_ 'unsaved-description'}}
|
||||
a.js-open-inlined-form {{_ 'view-it'}}
|
||||
= ' - '
|
||||
a.js-close-inlined-form {{_ 'discard'}}
|
||||
else if getDescription
|
||||
if currentBoard.allowsDescriptionTitle
|
||||
h3.card-details-item-title {{_ 'description'}}
|
||||
if currentBoard.allowsDescriptionText
|
||||
+viewer
|
||||
= getDescription
|
||||
|
||||
.card-checklist-attachmentGalerys
|
||||
.card-checklist-attachmentGalery.card-checklists
|
||||
if currentBoard.allowsChecklists
|
||||
|
||||
@@ -4,6 +4,12 @@
|
||||
|
||||
avatar-radius = 50%
|
||||
|
||||
#cardURL_copy
|
||||
// Have clipboard text not visible by moving it to far left
|
||||
position: absolute
|
||||
left: -2000px
|
||||
top: 0px
|
||||
|
||||
.assignee
|
||||
border-radius: 3px
|
||||
display: block
|
||||
|
||||
@@ -743,9 +743,25 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
updateList() {
|
||||
// Use fallback when requestIdleCallback is not available on iOS and Safari
|
||||
// https://www.afasterweb.com/2017/11/20/utilizing-idle-moments/
|
||||
checkIdleTime =
|
||||
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);
|
||||
};
|
||||
|
||||
if (this.spinnerInView()) {
|
||||
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
|
||||
window.requestIdleCallback(() => this.updateList());
|
||||
checkIdleTime(() => this.updateList());
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -40,9 +40,15 @@ template(name="peopleGeneral")
|
||||
th {{_ 'active'}}
|
||||
th {{_ 'authentication-method'}}
|
||||
th
|
||||
+newUserRow
|
||||
each user in peopleList
|
||||
+peopleRow(userId=user._id)
|
||||
|
||||
template(name="newUserRow")
|
||||
a.new-user
|
||||
i.fa.fa-edit
|
||||
| {{_ 'new'}}
|
||||
|
||||
template(name="peopleRow")
|
||||
tr
|
||||
if userData.loginDisabled
|
||||
@@ -104,7 +110,7 @@ template(name="editUserPopup")
|
||||
label.hide.userId(type="text" value=user._id)
|
||||
label
|
||||
| {{_ 'fullname'}}
|
||||
input.js-profile-fullname(type="text" value=user.profile.fullname autofocus)
|
||||
input.js-profile-fullname(type="text" value=user.profile.fullname)
|
||||
label
|
||||
| {{_ 'username'}}
|
||||
span.error.hide.username-taken
|
||||
@@ -148,3 +154,49 @@ template(name="editUserPopup")
|
||||
// div
|
||||
// input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
|
||||
|
||||
template(name="newUserPopup")
|
||||
form
|
||||
//label.hide.userId(type="text" value=user._id)
|
||||
label
|
||||
| {{_ 'fullname'}}
|
||||
input.js-profile-fullname(type="text" value="")
|
||||
label
|
||||
| {{_ 'username'}}
|
||||
span.error.hide.username-taken
|
||||
| {{_ 'error-username-taken'}}
|
||||
//if isLdap
|
||||
// input.js-profile-username(type="text" value=user.username readonly)
|
||||
//else
|
||||
input.js-profile-username(type="text" value="")
|
||||
label
|
||||
| {{_ 'email'}}
|
||||
span.error.hide.email-taken
|
||||
| {{_ 'error-email-taken'}}
|
||||
//if isLdap
|
||||
// input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
|
||||
//else
|
||||
input.js-profile-email(type="email" value="")
|
||||
label
|
||||
| {{_ 'admin'}}
|
||||
select.select-role.js-profile-isadmin
|
||||
option(value="false" selected="selected") {{_ 'no'}}
|
||||
option(value="true") {{_ 'yes'}}
|
||||
label
|
||||
| {{_ 'active'}}
|
||||
select.select-active.js-profile-isactive
|
||||
option(value="false" selected="selected") {{_ 'yes'}}
|
||||
option(value="true") {{_ 'no'}}
|
||||
label
|
||||
| {{_ 'authentication-type'}}
|
||||
select.select-authenticationMethod.js-authenticationMethod
|
||||
each authentications
|
||||
if isSelected value
|
||||
option(value="{{value}}" selected) {{_ value}}
|
||||
else
|
||||
option(value="{{value}}") {{_ value}}
|
||||
hr
|
||||
label
|
||||
| {{_ 'password'}}
|
||||
input.js-profile-password(type="password")
|
||||
div.buttonsContainer
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
@@ -39,6 +39,9 @@ BlazeComponent.extendComponent({
|
||||
this.filterPeople();
|
||||
}
|
||||
},
|
||||
'click #newUserButton'() {
|
||||
Popup.open('newUser');
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
@@ -141,6 +144,47 @@ Template.editUserPopup.helpers({
|
||||
},
|
||||
});
|
||||
|
||||
Template.newUserPopup.onCreated(function() {
|
||||
this.authenticationMethods = new ReactiveVar([]);
|
||||
this.errorMessage = new ReactiveVar('');
|
||||
|
||||
Meteor.call('getAuthenticationsEnabled', (_, result) => {
|
||||
if (result) {
|
||||
// TODO : add a management of different languages
|
||||
// (ex {value: ldap, text: TAPi18n.__('ldap', {}, T9n.getLanguage() || 'en')})
|
||||
this.authenticationMethods.set([
|
||||
{ value: 'password' },
|
||||
// Gets only the authentication methods availables
|
||||
...Object.entries(result)
|
||||
.filter(e => e[1])
|
||||
.map(e => ({ value: e[0] })),
|
||||
]);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Template.newUserPopup.helpers({
|
||||
//user() {
|
||||
// return Users.findOne(this.userId);
|
||||
//},
|
||||
authentications() {
|
||||
return Template.instance().authenticationMethods.get();
|
||||
},
|
||||
//isSelected(match) {
|
||||
// const userId = Template.instance().data.userId;
|
||||
// const selected = Users.findOne(userId).authenticationMethod;
|
||||
// return selected === match;
|
||||
//},
|
||||
//isLdap() {
|
||||
// const userId = Template.instance().data.userId;
|
||||
// const selected = Users.findOne(userId).authenticationMethod;
|
||||
// return selected === 'ldap';
|
||||
//},
|
||||
errorMessage() {
|
||||
return Template.instance().errorMessage.get();
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {},
|
||||
user() {
|
||||
@@ -155,6 +199,16 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('peopleRow');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click a.new-user': Popup.open('newUser'),
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('newUserRow');
|
||||
|
||||
Template.editUserPopup.events({
|
||||
submit(event, templateInstance) {
|
||||
event.preventDefault();
|
||||
@@ -248,3 +302,44 @@ Template.editUserPopup.events({
|
||||
Popup.close();
|
||||
}),
|
||||
});
|
||||
|
||||
Template.newUserPopup.events({
|
||||
submit(event, templateInstance) {
|
||||
event.preventDefault();
|
||||
const fullname = templateInstance.find('.js-profile-fullname').value.trim();
|
||||
const username = templateInstance.find('.js-profile-username').value.trim();
|
||||
const password = templateInstance.find('.js-profile-password').value;
|
||||
const isAdmin = templateInstance.find('.js-profile-isadmin').value.trim();
|
||||
const isActive = templateInstance.find('.js-profile-isactive').value.trim();
|
||||
const email = templateInstance.find('.js-profile-email').value.trim();
|
||||
|
||||
Meteor.call(
|
||||
'setCreateUser',
|
||||
fullname,
|
||||
username,
|
||||
password,
|
||||
isAdmin,
|
||||
isActive,
|
||||
email.toLowerCase(),
|
||||
function(error) {
|
||||
const usernameMessageElement = templateInstance.$('.username-taken');
|
||||
const emailMessageElement = templateInstance.$('.email-taken');
|
||||
if (error) {
|
||||
const errorElement = error.error;
|
||||
if (errorElement === 'username-already-taken') {
|
||||
usernameMessageElement.show();
|
||||
emailMessageElement.hide();
|
||||
} else if (errorElement === 'email-already-taken') {
|
||||
usernameMessageElement.hide();
|
||||
emailMessageElement.show();
|
||||
}
|
||||
} else {
|
||||
usernameMessageElement.hide();
|
||||
emailMessageElement.hide();
|
||||
Popup.close();
|
||||
}
|
||||
},
|
||||
);
|
||||
Popup.close();
|
||||
},
|
||||
});
|
||||
@@ -129,6 +129,20 @@ template(name="boardCardSettingsPopup")
|
||||
span
|
||||
i.fa.fa-tags
|
||||
| {{_ 'labels'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-description-title(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
|
||||
span
|
||||
i.fa.fa-align-left
|
||||
| {{_ 'description'}}
|
||||
| {{_ 'title'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-description-text(class="{{#if allowsDescriptionText}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsDescriptionText}}is-checked{{/if}}")
|
||||
span
|
||||
i.fa.fa-align-left
|
||||
| {{_ 'description'}}
|
||||
| {{_ 'custom-field-text'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-checklists(class="{{#if allowsChecklists}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsChecklists}}is-checked{{/if}}")
|
||||
@@ -147,12 +161,18 @@ template(name="boardCardSettingsPopup")
|
||||
span
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'attachments'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-comments(class="{{#if allowsComments}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsComments}}is-checked{{/if}}")
|
||||
span
|
||||
i.fa.fa-comment-o
|
||||
| {{_ 'comment'}}
|
||||
//div.check-div
|
||||
// a.flex.js-field-has-comments(class="{{#if allowsComments}}is-checked{{/if}}")
|
||||
// .materialCheckBox(class="{{#if allowsComments}}is-checked{{/if}}")
|
||||
// span
|
||||
// i.fa.fa-comment-o
|
||||
// | {{_ 'comment'}}
|
||||
//div.check-div
|
||||
// a.flex.js-field-has-activities(class="{{#if allowsActivities}}is-checked{{/if}}")
|
||||
// .materialCheckBox(class="{{#if allowsActivities}}is-checked{{/if}}")
|
||||
// span
|
||||
// i.fa.fa-history
|
||||
// | {{_ 'activities'}}
|
||||
|
||||
template(name="boardSubtaskSettingsPopup")
|
||||
form.board-subtask-settings
|
||||
@@ -225,7 +245,7 @@ template(name="outgoingWebhooksPopup")
|
||||
b
|
||||
.materialCheckBox(class="{{#unless enabled}}is-checked{{/unless}}")
|
||||
input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" value=title)
|
||||
input.js-outgoing-webhooks-url(type="text" name="url" value=url autofocus)
|
||||
input.js-outgoing-webhooks-url(type="text" name="url" value=url)
|
||||
input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" value=token name="token")
|
||||
select.js-outgoing-webhooks-type(name="type")
|
||||
each _type in types
|
||||
@@ -237,7 +257,7 @@ template(name="outgoingWebhooksPopup")
|
||||
input(type="hidden" value=_id name="id")
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
form.integration-form
|
||||
input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" autofocus)
|
||||
input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title")
|
||||
input.js-outgoing-webhooks-url(placeholder="{{_ 'URL' }}" type="text" name="url")
|
||||
input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" name="token")
|
||||
select.js-outgoing-webhooks-type(name="type")
|
||||
@@ -247,7 +267,10 @@ template(name="outgoingWebhooksPopup")
|
||||
|
||||
template(name="boardMenuPopup")
|
||||
ul.pop-over-list
|
||||
li: a.js-custom-fields {{_ 'custom-fields'}}
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'custom-fields'}}
|
||||
li
|
||||
a.js-open-archives
|
||||
i.fa.fa-archive
|
||||
|
||||
@@ -647,6 +647,14 @@ BlazeComponent.extendComponent({
|
||||
return this.currentBoard.allowsComments;
|
||||
},
|
||||
|
||||
allowsDescriptionTitle() {
|
||||
return this.currentBoard.allowsDescriptionTitle;
|
||||
},
|
||||
|
||||
allowsDescriptionText() {
|
||||
return this.currentBoard.allowsDescriptionText;
|
||||
},
|
||||
|
||||
isBoardSelected() {
|
||||
return this.currentBoard.dateSettingsDefaultBoardID;
|
||||
},
|
||||
@@ -837,6 +845,38 @@ BlazeComponent.extendComponent({
|
||||
this.currentBoard.allowsLabels,
|
||||
);
|
||||
},
|
||||
'click .js-field-has-description-title'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsDescriptionTitle = !this.currentBoard
|
||||
.allowsDescriptionTitle;
|
||||
this.currentBoard.setAllowsDescriptionTitle(
|
||||
this.currentBoard.allowsDescriptionTitle,
|
||||
);
|
||||
$(`.js-field-has-description-title ${MCB}`).toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsDescriptionTitle,
|
||||
);
|
||||
$('.js-field-has-description-title').toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsDescriptionTitle,
|
||||
);
|
||||
},
|
||||
'click .js-field-has-description-text'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsDescriptionText = !this.currentBoard
|
||||
.allowsDescriptionText;
|
||||
this.currentBoard.setAllowsDescriptionText(
|
||||
this.currentBoard.allowsDescriptionText,
|
||||
);
|
||||
$(`.js-field-has-description-text ${MCB}`).toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsDescriptionText,
|
||||
);
|
||||
$('.js-field-has-description-text').toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsDescriptionText,
|
||||
);
|
||||
},
|
||||
'click .js-field-has-checklists'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsChecklists = !this.currentBoard
|
||||
@@ -882,6 +922,22 @@ BlazeComponent.extendComponent({
|
||||
this.currentBoard.allowsComments,
|
||||
);
|
||||
},
|
||||
'click .js-field-has-activities'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsActivities = !this.currentBoard
|
||||
.allowsActivities;
|
||||
this.currentBoard.setAllowsActivities(
|
||||
this.currentBoard.allowsActivities,
|
||||
);
|
||||
$(`.js-field-has-activities ${MCB}`).toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsActivities,
|
||||
);
|
||||
$('.js-field-has-activities').toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsActivities,
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ services:
|
||||
#-------------------------------------------------------------------------------------
|
||||
# ==== MONGODB AND METEOR VERSION ====
|
||||
# a) For Wekan Meteor 1.8.x version at master branch, use mongo 4.x
|
||||
image: mongo:4.2.2
|
||||
image: mongo:latest
|
||||
# b) For Wekan Meteor 1.6.x version at devel branch.
|
||||
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
|
||||
#image: mongo:3.2.21
|
||||
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+17
-14
@@ -111,8 +111,8 @@
|
||||
"restore-board": "Restaura Tauler",
|
||||
"no-archived-boards": "No hi han Taulers al Arxiu.",
|
||||
"archives": "Desa",
|
||||
"template": "Template",
|
||||
"templates": "Templates",
|
||||
"template": "Plantilla",
|
||||
"templates": "Plantilles",
|
||||
"assign-member": "Assignar membre",
|
||||
"attached": "adjuntat",
|
||||
"attachment": "Adjunt",
|
||||
@@ -131,13 +131,13 @@
|
||||
"boardChangeTitlePopup-title": "Canvia el nom tauler",
|
||||
"boardChangeVisibilityPopup-title": "Canvia visibilitat",
|
||||
"boardChangeWatchPopup-title": "Canvia seguiment",
|
||||
"boardMenuPopup-title": "Board Settings",
|
||||
"boardMenuPopup-title": "Configuració del tauler",
|
||||
"boardChangeViewPopup-title": "Visió del tauler",
|
||||
"boards": "Taulers",
|
||||
"board-view": "Visió del tauler",
|
||||
"board-view-cal": "Calendari",
|
||||
"board-view-swimlanes": "Carrils de Natació",
|
||||
"board-view-collapse": "Collapse",
|
||||
"board-view-collapse": "Contraure",
|
||||
"board-view-lists": "Llistes",
|
||||
"bucket-example": "Igual que “Bucket List”, per exemple",
|
||||
"cancel": "Cancel·la",
|
||||
@@ -583,9 +583,9 @@
|
||||
"default": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
"card-settings": "Configuració de targeta",
|
||||
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
|
||||
"boardCardSettingsPopup-title": "Card Settings",
|
||||
"boardCardSettingsPopup-title": "Configuració de targeta",
|
||||
"deposit-subtasks-board": "Deposit subtasks to this board:",
|
||||
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
|
||||
"show-parent-in-minicard": "Show parent in minicard:",
|
||||
@@ -626,7 +626,7 @@
|
||||
"r-moved-from": "Moved from",
|
||||
"r-archived": "Moved to Archive",
|
||||
"r-unarchived": "Restored from Archive",
|
||||
"r-a-card": "a card",
|
||||
"r-a-card": "una targeta",
|
||||
"r-when-a-label-is": "When a label is",
|
||||
"r-when-the-label": "When the label",
|
||||
"r-list-name": "list name",
|
||||
@@ -648,7 +648,7 @@
|
||||
"r-its-list": "its list",
|
||||
"r-archive": "Moure al arxiu",
|
||||
"r-unarchive": "Restore from Archive",
|
||||
"r-card": "card",
|
||||
"r-card": "targeta",
|
||||
"r-add": "Afegeix",
|
||||
"r-remove": "Remove",
|
||||
"r-label": "label",
|
||||
@@ -679,7 +679,7 @@
|
||||
"r-d-unarchive": "Restore card from Archive",
|
||||
"r-d-add-label": "Add label",
|
||||
"r-d-remove-label": "Remove label",
|
||||
"r-create-card": "Create new card",
|
||||
"r-create-card": "Crea una targeta nova",
|
||||
"r-in-list": "in list",
|
||||
"r-in-swimlane": "in swimlane",
|
||||
"r-d-add-member": "Add member",
|
||||
@@ -700,7 +700,7 @@
|
||||
"r-swimlane-name": "swimlane name",
|
||||
"r-board-note": "Note: leave a field empty to match every possible value.",
|
||||
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
||||
"r-when-a-card-is-moved": "When a card is moved to another list",
|
||||
"r-when-a-card-is-moved": "Quan una targeta es mou a una altra llista",
|
||||
"r-set": "Set",
|
||||
"r-update": "Update",
|
||||
"r-datefield": "date field",
|
||||
@@ -753,8 +753,11 @@
|
||||
"accounts-allowUserDelete": "Allow users to self delete their account",
|
||||
"hide-minicard-label-text": "Hide minicard label text",
|
||||
"show-desktop-drag-handles": "Show desktop drag handles",
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"assignee": "Assignat",
|
||||
"cardAssigneesPopup-title": "Assignat",
|
||||
"addmore-detail": "Afegiu una descripció més detallada",
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+5
-2
@@ -224,7 +224,7 @@
|
||||
"no-comments": "Keine Kommentare",
|
||||
"no-comments-desc": "Kann keine Kommentare und Aktivitäten sehen.",
|
||||
"worker": "Arbeiter",
|
||||
"worker-desc": "Kann nur Karten verschieben, sich selbst zuweisen und kommentieren.",
|
||||
"worker-desc": "Kann Karten nur verschieben, sich selbst zuweisen und kommentieren.",
|
||||
"computer": "Computer",
|
||||
"confirm-subtask-delete-dialog": "Wollen Sie die Teilaufgabe wirklich löschen?",
|
||||
"confirm-checklist-delete-dialog": "Wollen Sie die Checkliste wirklich löschen?",
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "Zugewiesen",
|
||||
"cardAssigneesPopup-title": "Zugewiesen",
|
||||
"addmore-detail": "Eine detailliertere Beschreibung hinzufügen",
|
||||
"show-on-card": "Zeige auf Karte"
|
||||
"show-on-card": "Zeige auf Karte",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -759,5 +759,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Asignado",
|
||||
"cardAssigneesPopup-title": "Asignado",
|
||||
"addmore-detail": "Añadir una descripción detallada",
|
||||
"show-on-card": "Mostrar en la tarjeta"
|
||||
"show-on-card": "Mostrar en la tarjeta",
|
||||
"new": "Nuevo",
|
||||
"editUserPopup-title": "Editar el usuario",
|
||||
"newUserPopup-title": "Nuevo usuario"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Käsittelijä",
|
||||
"cardAssigneesPopup-title": "Käsittelijä",
|
||||
"addmore-detail": "Lisää tarkempi kuvaus",
|
||||
"show-on-card": "Näytä kortilla"
|
||||
"show-on-card": "Näytä kortilla",
|
||||
"new": "Uusi",
|
||||
"editUserPopup-title": "Muokkaa käyttäjää",
|
||||
"newUserPopup-title": "Uusi käyttäjä"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Cessionnaire",
|
||||
"cardAssigneesPopup-title": "Cessionnaire",
|
||||
"addmore-detail": "Ajouter une description plus détaillée",
|
||||
"show-on-card": "Afficher sur la carte"
|
||||
"show-on-card": "Afficher sur la carte",
|
||||
"new": "Nouveau",
|
||||
"editUserPopup-title": "Éditer l'utilisateur",
|
||||
"newUserPopup-title": "Nouvel utilisateur"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "גורם אחראי",
|
||||
"cardAssigneesPopup-title": "גורם אחראי",
|
||||
"addmore-detail": "הוספת תיאור מפורט",
|
||||
"show-on-card": "הצגה על הכרטיס"
|
||||
"show-on-card": "הצגה על הכרטיס",
|
||||
"new": "חדש",
|
||||
"editUserPopup-title": "עריכת משתמש",
|
||||
"newUserPopup-title": "משתמש חדש"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+8
-5
@@ -24,7 +24,7 @@
|
||||
"act-createCard": "scheda __card__ creata nella lista __list__ della corsia __swimlane__ della bacheca __board__",
|
||||
"act-createCustomField": "creato campo personalizzato __customField__ nella bacheca __board",
|
||||
"act-deleteCustomField": "campo personalizzato eliminato __customField__ nella bacheca __board",
|
||||
"act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-setCustomField": "campo personalizzato modificato __customField__: __customFieldValue__ sulla scheda __card__ sulla lista __list__ sulla swimlane __swimlane__ sulla bacheca __board__",
|
||||
"act-createList": "aggiunta lista __list__ alla bacheca __board__",
|
||||
"act-addBoardMember": "aggiunto membro __member__ alla bacheca __board__",
|
||||
"act-archivedBoard": "Bacheca __board__ archiviata",
|
||||
@@ -583,9 +583,9 @@
|
||||
"default": "Predefinito",
|
||||
"queue": "Coda",
|
||||
"subtask-settings": "Impostazioni sotto-compiti",
|
||||
"card-settings": "Card Settings",
|
||||
"card-settings": "Impostazioni della scheda",
|
||||
"boardSubtaskSettingsPopup-title": "Impostazioni sotto-compiti della bacheca",
|
||||
"boardCardSettingsPopup-title": "Card Settings",
|
||||
"boardCardSettingsPopup-title": "Impostazioni della scheda",
|
||||
"deposit-subtasks-board": "Deposita i sotto compiti in questa bacheca",
|
||||
"deposit-subtasks-list": "Lista di destinaizoni per questi sotto-compiti",
|
||||
"show-parent-in-minicard": "Mostra genirotri nelle mini schede:",
|
||||
@@ -755,6 +755,9 @@
|
||||
"show-desktop-drag-handles": "Mostra maniglie di trascinamento del desktop",
|
||||
"assignee": "Assegnatario",
|
||||
"cardAssigneesPopup-title": "Assegnatario",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"addmore-detail": "Aggiungi una descrizione più dettagliata",
|
||||
"show-on-card": "Mostra sulla scheda",
|
||||
"new": "Nuovo",
|
||||
"editUserPopup-title": "Modifica utente",
|
||||
"newUserPopup-title": "Nuovo utente"
|
||||
}
|
||||
+42
-39
@@ -66,7 +66,7 @@
|
||||
"activity-checklist-removed": "チェックリストを %s から削除しました",
|
||||
"activity-checklist-completed": "チェックリスト __checklist__ ボード __board__, スイムレーン __swimlane__, リスト __list__, カード __card__ が完了しました",
|
||||
"activity-checklist-uncompleted": "チェックリスト %s / %s が未完了になりました",
|
||||
"activity-checklist-item-added": "added checklist item to '%s' in %s",
|
||||
"activity-checklist-item-added": "チェックリスト項目を '%s' / %s に追加しました",
|
||||
"activity-checklist-item-removed": "'%s' の チェックリスト %s の項目を削除しました",
|
||||
"add": "追加",
|
||||
"activity-checked-item-card": "チェックされました %s チェックリスト %s",
|
||||
@@ -137,7 +137,7 @@
|
||||
"board-view": "ボード表示",
|
||||
"board-view-cal": "カレンダー",
|
||||
"board-view-swimlanes": "スイムレーン",
|
||||
"board-view-collapse": "Collapse",
|
||||
"board-view-collapse": "折りたたむ",
|
||||
"board-view-lists": "リスト",
|
||||
"bucket-example": "例:バケットリスト",
|
||||
"cancel": "キャンセル",
|
||||
@@ -169,10 +169,10 @@
|
||||
"cardTemplatePopup-title": "テンプレートの作成",
|
||||
"cards": "カード",
|
||||
"cards-count": "カード",
|
||||
"casSignIn": "Sign In with CAS",
|
||||
"casSignIn": "CASでサインインする",
|
||||
"cardType-card": "カード",
|
||||
"cardType-linkedCard": "Linked Card",
|
||||
"cardType-linkedBoard": "Linked Board",
|
||||
"cardType-linkedCard": "リンクされたカード",
|
||||
"cardType-linkedBoard": "リンクされたボード",
|
||||
"change": "変更",
|
||||
"change-avatar": "アバターの変更",
|
||||
"change-password": "パスワードの変更",
|
||||
@@ -269,7 +269,7 @@
|
||||
"edit-avatar": "アバターの変更",
|
||||
"edit-profile": "プロフィールの編集",
|
||||
"edit-wip-limit": "仕掛中制限編集",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"soft-wip-limit": "警告のみの仕掛中制限",
|
||||
"editCardStartDatePopup-title": "開始日の変更",
|
||||
"editCardDueDatePopup-title": "期限の変更",
|
||||
"editCustomFieldPopup-title": "フィールドを編集",
|
||||
@@ -304,12 +304,12 @@
|
||||
"error-username-taken": "このユーザ名は既に使用されています",
|
||||
"error-email-taken": "メールは既に受け取られています",
|
||||
"export-board": "ボードのエクスポート",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
"list-label-modifiedAt": "Last Access Time",
|
||||
"sort": "並べ替え",
|
||||
"sort-desc": "クリックでリストをソート",
|
||||
"list-sort-by": "次によりリストを並べ替え:",
|
||||
"list-label-modifiedAt": "最終アクセス日時",
|
||||
"list-label-title": "リストの名前",
|
||||
"list-label-sort": "Your Manual Order",
|
||||
"list-label-sort": "手動による並べ替え",
|
||||
"list-label-short-modifiedAt": "(L)",
|
||||
"list-label-short-title": "(N)",
|
||||
"list-label-short-sort": "(M)",
|
||||
@@ -344,12 +344,12 @@
|
||||
"from-wekan": "以前のエクスポートから",
|
||||
"import-board-instruction-trello": "Trelloボードの、 'Menu' → 'More' → 'Print and Export' → 'Export JSON'を選択し、テキストをコピーしてください。",
|
||||
"import-board-instruction-wekan": "ボードの、 'メニュー' → 'ボードのエクスポート'を選択し、ダウンロードされたファイルの中のテキストをコピーしてください。",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-board-instruction-about-errors": "ボードのインポート中にエラーが発生した場合、インポートがまだ進行中のまま、全てのボードページに表示されている場合があります。",
|
||||
"import-json-placeholder": "JSONデータをここに貼り付けする",
|
||||
"import-map-members": "メンバーを紐付け",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-members-map": "インポートしたボードにはいくつかのメンバーが含まれています。インポートしたいメンバーをユーザーにマッピングしてください",
|
||||
"import-show-user-mapping": "メンバー紐付けの確認",
|
||||
"import-user-select": "Pick your existing user you want to use as this member",
|
||||
"import-user-select": "このメンバーとして使用したいユーザーを選択してください",
|
||||
"importMapMembersAddPopup-title": "メンバーを選択",
|
||||
"info": "バージョン",
|
||||
"initials": "イニシャル",
|
||||
@@ -466,10 +466,10 @@
|
||||
"this-board": "このボード",
|
||||
"this-card": "このカード",
|
||||
"spent-time-hours": "作業時間(時)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"overtime-hours": "超過時間(時)",
|
||||
"overtime": "超過時間",
|
||||
"has-overtime-cards": "超過時間ありのカード",
|
||||
"has-spenttime-cards": "作業時間ありのカード",
|
||||
"time": "時間",
|
||||
"title": "タイトル",
|
||||
"tracking": "トラッキング",
|
||||
@@ -519,8 +519,8 @@
|
||||
"send-smtp-test": "テストメールを自分に送信",
|
||||
"invitation-code": "招待コード",
|
||||
"email-invite-register-subject": "__inviter__さんがあなたを招待しています",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email",
|
||||
"email-invite-register-text": "__user__ 様\n\n__inviter__ によりカンバンへ招待されています。\n\n以下のリンクへ移動し、招待コード __icode__ を入力してください。\n__url__",
|
||||
"email-smtp-test-subject": "SMTP経由でテストメールを送信",
|
||||
"email-smtp-test-text": "メールを送信しました",
|
||||
"error-invitation-code-not-exist": "招待コードが存在しません",
|
||||
"error-notAuthorized": "このページを参照する権限がありません。",
|
||||
@@ -548,8 +548,8 @@
|
||||
"OS_Totalmem": "OSトータルメモリ",
|
||||
"OS_Type": "OS種類",
|
||||
"OS_Uptime": "OSアップタイム",
|
||||
"days": "days",
|
||||
"hours": "時",
|
||||
"days": "日",
|
||||
"hours": "時間",
|
||||
"minutes": "分",
|
||||
"seconds": "秒",
|
||||
"show-field-on-card": "このフィールドをカードに表示",
|
||||
@@ -671,10 +671,10 @@
|
||||
"r-d-move-to-top-spec": "カードをリストの先頭に移動",
|
||||
"r-d-move-to-bottom-gen": "カードを自身のリストの最下部に移動",
|
||||
"r-d-move-to-bottom-spec": "カードをリストの最下部に移動",
|
||||
"r-d-send-email": "Send email",
|
||||
"r-d-send-email": "メールを送信",
|
||||
"r-d-send-email-to": "宛先",
|
||||
"r-d-send-email-subject": "件名",
|
||||
"r-d-send-email-message": "message",
|
||||
"r-d-send-email-message": "メッセージ本文",
|
||||
"r-d-archive": "カードをアーカイブする",
|
||||
"r-d-unarchive": "アーカイブからカードを復元する",
|
||||
"r-d-add-label": "ラベルを追加",
|
||||
@@ -685,10 +685,10 @@
|
||||
"r-d-add-member": "メンバーを追加",
|
||||
"r-d-remove-member": "メンバーを削除",
|
||||
"r-d-remove-all-member": "すべてのメンバーを削除",
|
||||
"r-d-check-all": "Check all items of a list",
|
||||
"r-d-uncheck-all": "Uncheck all items of a list",
|
||||
"r-d-check-one": "Check item",
|
||||
"r-d-uncheck-one": "Uncheck item",
|
||||
"r-d-check-all": "リストのアイテムすべてをチェックする",
|
||||
"r-d-uncheck-all": "リストのアイテムのすべてのチェックを外す",
|
||||
"r-d-check-one": "アイテムをチェックする",
|
||||
"r-d-uncheck-one": "アイテムのチェックを外す",
|
||||
"r-d-check-of-list": "チェックリスト",
|
||||
"r-d-add-checklist": "チェックリストを追加",
|
||||
"r-d-remove-checklist": "チェックリストを削除",
|
||||
@@ -718,9 +718,9 @@
|
||||
"custom-product-name": "カスタム製品名",
|
||||
"layout": "レイアウト",
|
||||
"hide-logo": "ロゴを隠す",
|
||||
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
|
||||
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
|
||||
"error-undefined": "Something went wrong",
|
||||
"add-custom-html-after-body-start": "<body> の開始直後にカスタムHTMLを追加する",
|
||||
"add-custom-html-before-body-end": "</body> の終了直前にカスタムHTMLを追加する",
|
||||
"error-undefined": "何らかの問題が発生しています",
|
||||
"error-ldap-login": "ログイン中にエラーが発生しました",
|
||||
"display-authentication-method": "認証方式を表示",
|
||||
"default-authentication-method": "デフォルトの認証方式",
|
||||
@@ -731,7 +731,7 @@
|
||||
"restore-all": "全てをリストアする",
|
||||
"delete-all": "全てを削除する",
|
||||
"loading": "ローディング中です、しばらくお待ちください。",
|
||||
"previous_as": "last time was",
|
||||
"previous_as": "最終日時",
|
||||
"act-a-dueAt": "期限の時刻が変更されました\n変更後:__timeValue__\n場所:__card__\n変更前の期限の時刻は __timeOldValue__ でした",
|
||||
"act-a-endAt": "終了を (__timeOldValue__)から __timeValue__ に変更しました",
|
||||
"act-a-startAt": "開始を (__timeOldValue__)から __timeValue__ に変更しました",
|
||||
@@ -743,18 +743,21 @@
|
||||
"almostdue": "期限 %s が近づいています",
|
||||
"pastdue": "期限 %s が過ぎています",
|
||||
"duenow": "期限 %s は本日です",
|
||||
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
|
||||
"act-withDue": "__list__/__card__ due reminders [__board__]",
|
||||
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
|
||||
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
|
||||
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
|
||||
"act-newDue": "__list __ / __ card__に1回目の有効期限アラートがあります [__board__]",
|
||||
"act-withDue": "__list __ / __ card__ の有効期限のアラート [__board__]",
|
||||
"act-almostdue": "__card__ の期限日時 (__timeValue__) が近づいています",
|
||||
"act-pastdue": "__card__ の期限日時 (__timeValue__) が過ぎています",
|
||||
"act-duenow": "__card__ の期限日時 (__timeValue__) になりました",
|
||||
"act-atUserComment": "あなたが [__board__] __list__/__card__ に追記しました",
|
||||
"delete-user-confirm-popup": "本当にこのアカウントを削除しますか?この操作は取り消しできません。",
|
||||
"accounts-allowUserDelete": "ユーザー自身のアカウント削除を許可",
|
||||
"hide-minicard-label-text": "ミニカードのラベル名を隠す",
|
||||
"show-desktop-drag-handles": "Show desktop drag handles",
|
||||
"show-desktop-drag-handles": "デスクトップへのドラッグハンドルを表示",
|
||||
"assignee": "担当者",
|
||||
"cardAssigneesPopup-title": "担当者",
|
||||
"addmore-detail": "詳細説明の追加",
|
||||
"show-on-card": "カードに表示する項目"
|
||||
"show-on-card": "カードに表示する項目",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Toegewezen aan",
|
||||
"cardAssigneesPopup-title": "Toegewezen aan",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+27
-24
@@ -2,44 +2,44 @@
|
||||
"accept": "Akceptuj",
|
||||
"act-activity-notify": "Powiadomienia aktywności",
|
||||
"act-addAttachment": "dodał(a) załącznik __attachment__ do karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-deleteAttachment": "usunął/usunęła załącznik __attachment__ na karcie __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-deleteAttachment": "usunął załącznik __attachment__ na karcie __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-addSubtask": "dodał(a) podzadanie __subtask__ na karcie __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-addLabel": "dodał(a) etykietę __label__ do karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-addedLabel": "dodał(a) etykietę __label__ do karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeLabel": "usunął/usunęła etykietę __label__ z karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removedLabel": "usunął/usunęła etykietę __label__ z karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeLabel": "usunął etykietę __label__ z karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removedLabel": "usunął etykietę __label__ z karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-addChecklist": "dodał(a) listę zadań __checklist__ do karty __card__ na liście __list__ w diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-addChecklistItem": "dodał(a) element listy zadań __checklistItem__ do listy zadań __checklist__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeChecklist": "usunął/usunęła listę zadań __checklist__ z karty __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeChecklistItem": "usunął/usunęła element listy zadań __checklistItem__ z listy zadań __checkList__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeChecklist": "usunął listę zadań __checklist__ z karty __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeChecklistItem": "usunął element listy zadań __checklistItem__ z listy zadań __checkList__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-checkedItem": "zaznaczył(a) __checklistItem__ na liście zadań __checklist__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-uncheckedItem": "odznaczył(a) __checklistItem__ na liście __checklist__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-completeChecklist": "wykonał(a) wszystkie zadania z listy __checklist__ na karcie __card__ na liście __list__ na diagramie czynności__ na tablicy __board__",
|
||||
"act-uncompleteChecklist": "wycofał(a) ukończenie wykonania listy __checklist__ na karcie __card__ na liście __list__ na diagramie czynności__ na tablicy __board__",
|
||||
"act-addComment": "dodał(a) komentarz na karcie __card__: __comment__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-editComment": "edytował(a) komentarz na karcie __card__: __comment__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-deleteComment": "usunął/usunęła komentarz na karcie __card__: __comment__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-deleteComment": "usunął komentarz na karcie __card__: __comment__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-createBoard": "utworzył(a) tablicę __board__",
|
||||
"act-createSwimlane": "utworzył(a) diagram czynności __swimlane__ na tablicy __board__",
|
||||
"act-createCard": "utworzył(a) kartę __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-createCustomField": "utworzył(a) niestandardowe pole __customField__ na tablicy __board__",
|
||||
"act-deleteCustomField": "usunął/usunęła niestandardowe pole __customField__ na tablicy __board__",
|
||||
"act-deleteCustomField": "usunął niestandardowe pole __customField__ na tablicy __board__",
|
||||
"act-setCustomField": "zmienił(a) niestandardowe pole __customField__: __customFieldValue__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-createList": "dodał(a) listę __list__ do tablicy __board__",
|
||||
"act-addBoardMember": "dodał(a) użytykownika __member__ do tablicy __board__",
|
||||
"act-archivedBoard": "Tablica __board__ została przeniesiona do Archiwum",
|
||||
"act-archivedCard": "przeniósł/przeniosła kartę __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__ do Archiwum",
|
||||
"act-archivedList": "przeniósł/przeniosła listę __list__ na diagramie czynności __swimlane__ na tablicy __board__ do Archiwum",
|
||||
"act-archivedSwimlane": "przeniósł/przeniosła diagram czynności __swimlane__ na tablicy __board__ do Archiwum",
|
||||
"act-archivedCard": "przeniósł kartę __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__ do Archiwum",
|
||||
"act-archivedList": "przeniósł listę __list__ na diagramie czynności __swimlane__ na tablicy __board__ do Archiwum",
|
||||
"act-archivedSwimlane": "przeniósł diagram czynności __swimlane__ na tablicy __board__ do Archiwum",
|
||||
"act-importBoard": "zaimportował(a) tablicę __board__",
|
||||
"act-importCard": "zaimportował(a) kartę __card__ do listy __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-importList": "zaimportował(a) listę __list__ na diagram czynności __swimlane__ do tablicy __board__",
|
||||
"act-joinMember": "dodał(a) użytkownika __member__ do karty __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-moveCard": "przeniósł/a kartę __card__ na tablicy __board__ z listy __oldList__ na diagramie czynności __oldSwimlane__ na listę __list__ na diagramie czynności __swimlane__",
|
||||
"act-moveCardToOtherBoard": "przeniósł/a kartę __card__ z listy __oldList__ na diagramie czynności __oldSwimlane__ na tablicy __oldBoard__ do listy __listy__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeBoardMember": "usunął/usunęła użytkownika __member__ z tablicy __board__",
|
||||
"act-moveCard": "przeniósł kartę __card__ na tablicy __board__ z listy __oldList__ na diagramie czynności __oldSwimlane__ na listę __list__ na diagramie czynności __swimlane__",
|
||||
"act-moveCardToOtherBoard": "przeniósł kartę __card__ z listy __oldList__ na diagramie czynności __oldSwimlane__ na tablicy __oldBoard__ do listy __listy__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-removeBoardMember": "usunął użytkownika __member__ z tablicy __board__",
|
||||
"act-restoredCard": "przywrócił(a) kartę __card__ na listę __list__ na diagram czynności__ na tablicy __board__",
|
||||
"act-unjoinMember": "usunął/usunęła użytkownika __member__ z karty __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-unjoinMember": "usunął użytkownika __member__ z karty __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"act-withBoardTitle": "__board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Akcje",
|
||||
@@ -63,18 +63,18 @@
|
||||
"activity-checked-item": "zaznaczono %s w liście zadań%s z %s",
|
||||
"activity-unchecked-item": "odznaczono %s w liście zadań %s z %s",
|
||||
"activity-checklist-added": "dodał(a) listę zadań do %s",
|
||||
"activity-checklist-removed": "usunął/usunęła listę zadań z %s",
|
||||
"activity-checklist-removed": "usunął listę zadań z %s",
|
||||
"activity-checklist-completed": "wykonał(a) wszystkie zadania z listy __checklist__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"activity-checklist-uncompleted": "nieukończono listy zadań %s z %s",
|
||||
"activity-checklist-item-added": "dodał(a) zadanie '%s' do %s",
|
||||
"activity-checklist-item-removed": "usunął/usunęła element z listy zadań '%s' w %s",
|
||||
"activity-checklist-item-removed": "usunął element z listy zadań '%s' w %s",
|
||||
"add": "Dodaj",
|
||||
"activity-checked-item-card": "zaznaczono %s w liście zadań %s",
|
||||
"activity-unchecked-item-card": "odznaczono %s w liście zadań %s",
|
||||
"activity-checklist-completed-card": "wykonał(a) wszystkie zadania z listy __checklist__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"activity-checklist-uncompleted-card": "wycofano ukończenie listy zadań %s",
|
||||
"activity-editComment": "edytował(a) komentarz %s",
|
||||
"activity-deleteComment": "usunął/ęła komentarz %s",
|
||||
"activity-deleteComment": "usunął komentarz %s",
|
||||
"add-attachment": "Dodaj załącznik",
|
||||
"add-board": "Dodaj tablicę",
|
||||
"add-card": "Dodaj kartę",
|
||||
@@ -598,11 +598,11 @@
|
||||
"source-board": "Tablica źródłowa",
|
||||
"no-parent": "Nie pokazuj rodzica",
|
||||
"activity-added-label": "dodał(a) etykietę '%s' z '%s'",
|
||||
"activity-removed-label": "usunął/usunęła etykietę '%s' z '%s'",
|
||||
"activity-delete-attach": "usunął/usunęła załącznik z %s",
|
||||
"activity-removed-label": "usunął etykietę '%s' z '%s'",
|
||||
"activity-delete-attach": "usunął załącznik z %s",
|
||||
"activity-added-label-card": "dodał(a) etykietę '%s'",
|
||||
"activity-removed-label-card": "usunął/usunęła etykietę '%s'",
|
||||
"activity-delete-attach-card": "usunął/usunęła załącznik",
|
||||
"activity-removed-label-card": "usunął etykietę '%s'",
|
||||
"activity-delete-attach-card": "usunął załącznik",
|
||||
"activity-set-customfield": "ustawiono niestandardowe pole '%s' do '%s' na '%s'",
|
||||
"activity-unset-customfield": "wyczyszczono niestandardowe pole '%s' na '%s'",
|
||||
"r-rule": "Reguła",
|
||||
@@ -618,7 +618,7 @@
|
||||
"r-is": "jest",
|
||||
"r-is-moved": "jest przenoszona",
|
||||
"r-added-to": "dodana do",
|
||||
"r-removed-from": "usunął/usunęła z",
|
||||
"r-removed-from": "usunął z",
|
||||
"r-the-board": "tablicy",
|
||||
"r-list": "lista",
|
||||
"set-filter": "Ustaw filtr",
|
||||
@@ -709,7 +709,7 @@
|
||||
"r-df-end-at": "zakończenie",
|
||||
"r-df-received-at": "odebrano",
|
||||
"r-to-current-datetime": "o aktualnej dacie/godzinie",
|
||||
"r-remove-value-from": "usunął/usunęła wartość z",
|
||||
"r-remove-value-from": "usunął wartość z",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "Przypisujący",
|
||||
"cardAssigneesPopup-title": "Przypisujący",
|
||||
"addmore-detail": "Dodaj bardziej szczegółowy opis",
|
||||
"show-on-card": "Pokaż na karcie"
|
||||
"show-on-card": "Pokaż na karcie",
|
||||
"new": "Nowy",
|
||||
"editUserPopup-title": "Edytuj użytkownika",
|
||||
"newUserPopup-title": "Nowy użytkownik"
|
||||
}
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "Administrador",
|
||||
"cardAssigneesPopup-title": "Administrador",
|
||||
"addmore-detail": "Adicionar descrição detalhada",
|
||||
"show-on-card": "Mostrar no Cartão"
|
||||
"show-on-card": "Mostrar no Cartão",
|
||||
"new": "Novo",
|
||||
"editUserPopup-title": "Editar usuário",
|
||||
"newUserPopup-title": "Novo usuário"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+7
-4
@@ -583,9 +583,9 @@
|
||||
"default": "По умолчанию",
|
||||
"queue": "Очередь",
|
||||
"subtask-settings": "Настройки подзадач",
|
||||
"card-settings": "Card Settings",
|
||||
"card-settings": "Настройки карточки",
|
||||
"boardSubtaskSettingsPopup-title": "Настройки подзадач для доски",
|
||||
"boardCardSettingsPopup-title": "Card Settings",
|
||||
"boardCardSettingsPopup-title": "Настройки карточки",
|
||||
"deposit-subtasks-board": "Отправлять подзадачи на доску:",
|
||||
"deposit-subtasks-list": "Размещать подзадачи, отправленные на эту доску, в списке:",
|
||||
"show-parent-in-minicard": "Указывать исходную карточку:",
|
||||
@@ -755,6 +755,9 @@
|
||||
"show-desktop-drag-handles": "Show desktop drag handles",
|
||||
"assignee": "Исполнитель",
|
||||
"cardAssigneesPopup-title": "Исполнитель",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"addmore-detail": "Добавить более детальное описание",
|
||||
"show-on-card": "Показать на карточке",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Dodeljen član",
|
||||
"cardAssigneesPopup-title": "Dodeljen član",
|
||||
"addmore-detail": "Dodaj podrobnejši opis",
|
||||
"show-on-card": "Prikaži na kartici"
|
||||
"show-on-card": "Prikaži na kartici",
|
||||
"new": "Novo",
|
||||
"editUserPopup-title": "Uredi uporabnika",
|
||||
"newUserPopup-title": "Nov uporabnik"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Asignat",
|
||||
"cardAssigneesPopup-title": "Asignat",
|
||||
"addmore-detail": "Dodaj detaljaniji opis",
|
||||
"show-on-card": "Prikaži na kartici"
|
||||
"show-on-card": "Prikaži na kartici",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+20
-17
@@ -17,14 +17,14 @@
|
||||
"act-completeChecklist": "slutförde checklista __checklist__ i kort __card__ i lista __list__ i simbana __swimlane__ på anslagstavla __board__",
|
||||
"act-uncompleteChecklist": "ofullbordade checklista __checklist__ på kort __card__ i lista __list__ i simbana __swimlane__ på anslagstavla __board__",
|
||||
"act-addComment": "kommenterade på kort __card__: __comment__ i lista __list__ i simbana __swimlane__ på anslagstavla __board__",
|
||||
"act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-editComment": "redigerade kommentar på kort __card__: __comment__ i listan __list__ i simbana __swimlane__ i brädet __board__",
|
||||
"act-deleteComment": "raderade kommentar på kort __card__: __comment__ i listan __list__ i simbana __swimlane__ i brädet __board__",
|
||||
"act-createBoard": "skapade anslagstavla __board__",
|
||||
"act-createSwimlane": "skapade simbana __swimlane__ till anslagstavla __board__",
|
||||
"act-createCard": "skapade kort __card__ i lista __list__ i simbana __swimlane__ på anslagstavla __board__",
|
||||
"act-createCustomField": "skapade anpassat fält __customField__ på anslagstavlan __board__",
|
||||
"act-deleteCustomField": "deleted custom field __customField__ at board __board__",
|
||||
"act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-deleteCustomField": "raderade anpasssat fält __customField__ på bräde __board__",
|
||||
"act-setCustomField": "redigerade anpassat fält __customField__: __customFieldValue__ på kort __card__ i lista __list__ i simbana __swimlane__ på bräde __board__",
|
||||
"act-createList": "lade till lista __list__ på anslagstavla __board__",
|
||||
"act-addBoardMember": "lade till medlem __member__ på anslagstavla __board__",
|
||||
"act-archivedBoard": "Anslagstavla __board__ flyttad till arkivet",
|
||||
@@ -137,7 +137,7 @@
|
||||
"board-view": "Anslagstavelsvy",
|
||||
"board-view-cal": "Kalender",
|
||||
"board-view-swimlanes": "Simbanor",
|
||||
"board-view-collapse": "Collapse",
|
||||
"board-view-collapse": "Kollapsa",
|
||||
"board-view-lists": "Listor",
|
||||
"bucket-example": "Gilla \"att-göra-innan-jag-dör-lista\" till exempel",
|
||||
"cancel": "Avbryt",
|
||||
@@ -530,7 +530,7 @@
|
||||
"bidirectional-webhooks": "Two-Way Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Utgående Webhookar",
|
||||
"boardCardTitlePopup-title": "Korttitelfiler",
|
||||
"disable-webhook": "Disable This Webhook",
|
||||
"disable-webhook": "Avaktivera denna webhook",
|
||||
"global-webhook": "Globala webhooks",
|
||||
"new-outgoing-webhook": "Ny utgående webhook",
|
||||
"no-name": "(Okänd)",
|
||||
@@ -583,9 +583,9 @@
|
||||
"default": "Standard",
|
||||
"queue": "Kö",
|
||||
"subtask-settings": "Deluppgift inställningar",
|
||||
"card-settings": "Card Settings",
|
||||
"card-settings": "Kortinställningar",
|
||||
"boardSubtaskSettingsPopup-title": "Deluppgiftsinställningar för anslagstavla",
|
||||
"boardCardSettingsPopup-title": "Card Settings",
|
||||
"boardCardSettingsPopup-title": "Kortinställningar",
|
||||
"deposit-subtasks-board": "Insättnings deluppgifter på denna anslagstavla:",
|
||||
"deposit-subtasks-list": "Landningslista för deluppgifter deponerade här:",
|
||||
"show-parent-in-minicard": "Visa förälder i minikort:",
|
||||
@@ -743,18 +743,21 @@
|
||||
"almostdue": "aktuell förfallotid %s närmar sig",
|
||||
"pastdue": "aktuell förfallotid %s är förbi",
|
||||
"duenow": "aktuell förfallotid %s är idag",
|
||||
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
|
||||
"act-withDue": "__list__/__card__ due reminders [__board__]",
|
||||
"act-newDue": "__list__/__card__ har en 1:a påminnelse [__board__]",
|
||||
"act-withDue": "__list__/__card__ påminnelser [__board__]",
|
||||
"act-almostdue": "påminde om den aktuella förfallotiden (__timeValue__) av __card__ närmar sig",
|
||||
"act-pastdue": "påminde om den aktuella förfallotiden (__timeValue__) av __card__ är förbi",
|
||||
"act-duenow": "påminde om den aktuella förfallotiden (__timeValue__) av __card__ är nu",
|
||||
"act-atUserComment": "You were mentioned in [__board__] __list__/__card__",
|
||||
"act-atUserComment": "Du omnämndes i [__board__] __list__/__card__",
|
||||
"delete-user-confirm-popup": "Är du säker på att du vill ta bort det här kontot? Det går inte att ångra sig.",
|
||||
"accounts-allowUserDelete": "Tillåt användare att själv ta bort sina konton",
|
||||
"hide-minicard-label-text": "Hide minicard label text",
|
||||
"show-desktop-drag-handles": "Show desktop drag handles",
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"hide-minicard-label-text": "Dölj etikett för minikort",
|
||||
"show-desktop-drag-handles": "Visa greppytor i desktop",
|
||||
"assignee": "Tilldelad till",
|
||||
"cardAssigneesPopup-title": "Tilldelad till",
|
||||
"addmore-detail": "Lägg till detaljerad beskrivning",
|
||||
"show-on-card": "Visa på kort",
|
||||
"new": "Ny",
|
||||
"editUserPopup-title": "Redigera användare",
|
||||
"newUserPopup-title": "Ny användare"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
+4
-1
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "被指派人",
|
||||
"cardAssigneesPopup-title": "被指派人",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
@@ -756,5 +756,8 @@
|
||||
"assignee": "代理人",
|
||||
"cardAssigneesPopup-title": "代理人",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Show on Card"
|
||||
"show-on-card": "Show on Card",
|
||||
"new": "New",
|
||||
"editUserPopup-title": "Edit User",
|
||||
"newUserPopup-title": "New User"
|
||||
}
|
||||
@@ -108,7 +108,7 @@ if (Meteor.isServer) {
|
||||
let participants = [];
|
||||
let watchers = [];
|
||||
let title = 'act-activity-notify';
|
||||
let board = null;
|
||||
const board = Boards.findOne(activity.boardId);
|
||||
const description = `act-${activity.activityType}`;
|
||||
const params = {
|
||||
activityId: activity._id,
|
||||
@@ -122,8 +122,11 @@ if (Meteor.isServer) {
|
||||
params.userId = activity.userId;
|
||||
}
|
||||
if (activity.boardId) {
|
||||
board = activity.board();
|
||||
params.board = board.title;
|
||||
if (board.title.length > 0) {
|
||||
params.board = board.title;
|
||||
} else {
|
||||
params.board = '';
|
||||
}
|
||||
title = 'act-withBoardTitle';
|
||||
params.url = board.absoluteUrl();
|
||||
params.boardId = activity.boardId;
|
||||
|
||||
@@ -332,6 +332,30 @@ Boards.attachSchema(
|
||||
defaultValue: true,
|
||||
},
|
||||
|
||||
allowsDescriptionTitle: {
|
||||
/**
|
||||
* Does the board allows description title?
|
||||
*/
|
||||
type: Boolean,
|
||||
defaultValue: true,
|
||||
},
|
||||
|
||||
allowsDescriptionText: {
|
||||
/**
|
||||
* Does the board allows description text?
|
||||
*/
|
||||
type: Boolean,
|
||||
defaultValue: true,
|
||||
},
|
||||
|
||||
allowsActivities: {
|
||||
/**
|
||||
* Does the board allows comments?
|
||||
*/
|
||||
type: Boolean,
|
||||
defaultValue: true,
|
||||
},
|
||||
|
||||
allowsLabels: {
|
||||
/**
|
||||
* Does the board allows labels?
|
||||
@@ -1119,6 +1143,18 @@ Boards.mutations({
|
||||
return { $set: { allowsComments } };
|
||||
},
|
||||
|
||||
setAllowsDescriptionTitle(allowsDescriptionTitle) {
|
||||
return { $set: { allowsDescriptionTitle } };
|
||||
},
|
||||
|
||||
setAllowsDescriptionText(allowsDescriptionText) {
|
||||
return { $set: { allowsDescriptionText } };
|
||||
},
|
||||
|
||||
setAllowsActivities(allowsActivities) {
|
||||
return { $set: { allowsActivities } };
|
||||
},
|
||||
|
||||
setAllowsReceivedDate(allowsReceivedDate) {
|
||||
return { $set: { allowsReceivedDate } };
|
||||
},
|
||||
|
||||
+89
-52
@@ -620,16 +620,6 @@ Users.mutations({
|
||||
});
|
||||
|
||||
Meteor.methods({
|
||||
setUsername(username, userId) {
|
||||
check(username, String);
|
||||
check(userId, String);
|
||||
const nUsersWithUsername = Users.find({ username }).count();
|
||||
if (nUsersWithUsername > 0) {
|
||||
throw new Meteor.Error('username-already-taken');
|
||||
} else {
|
||||
Users.update(userId, { $set: { username } });
|
||||
}
|
||||
},
|
||||
setListSortBy(value) {
|
||||
check(value, String);
|
||||
Meteor.user().setListSortBy(value);
|
||||
@@ -650,51 +640,97 @@ Meteor.methods({
|
||||
check(limit, Number);
|
||||
Meteor.user().setShowCardsCountAt(limit);
|
||||
},
|
||||
setEmail(email, userId) {
|
||||
if (Array.isArray(email)) {
|
||||
email = email.shift();
|
||||
}
|
||||
check(email, String);
|
||||
const existingUser = Users.findOne(
|
||||
{ 'emails.address': email },
|
||||
{ fields: { _id: 1 } },
|
||||
);
|
||||
if (existingUser) {
|
||||
throw new Meteor.Error('email-already-taken');
|
||||
} else {
|
||||
Users.update(userId, {
|
||||
$set: {
|
||||
emails: [
|
||||
{
|
||||
address: email,
|
||||
verified: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
setUsernameAndEmail(username, email, userId) {
|
||||
check(username, String);
|
||||
if (Array.isArray(email)) {
|
||||
email = email.shift();
|
||||
}
|
||||
check(email, String);
|
||||
check(userId, String);
|
||||
Meteor.call('setUsername', username, userId);
|
||||
Meteor.call('setEmail', email, userId);
|
||||
},
|
||||
setPassword(newPassword, userId) {
|
||||
check(userId, String);
|
||||
check(newPassword, String);
|
||||
if (Meteor.user().isAdmin) {
|
||||
Accounts.setPassword(userId, newPassword);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
if (Meteor.isServer) {
|
||||
Meteor.methods({
|
||||
setCreateUser(fullname, username, password, isAdmin, isActive, email) {
|
||||
if (Meteor.user() && Meteor.user().isAdmin) {
|
||||
check(fullname, String);
|
||||
check(username, String);
|
||||
check(password, String);
|
||||
check(isAdmin, String);
|
||||
check(isActive, String);
|
||||
check(email, String);
|
||||
|
||||
const nUsersWithUsername = Users.find({ username }).count();
|
||||
const nUsersWithEmail = Users.find({ email }).count();
|
||||
if (nUsersWithUsername > 0) {
|
||||
throw new Meteor.Error('username-already-taken');
|
||||
} else if (nUsersWithEmail > 0) {
|
||||
throw new Meteor.Error('email-already-taken');
|
||||
} else {
|
||||
Accounts.createUser({
|
||||
fullname,
|
||||
username,
|
||||
password,
|
||||
isAdmin,
|
||||
isActive,
|
||||
email: email.toLowerCase(),
|
||||
from: 'admin',
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
setUsername(username, userId) {
|
||||
if (Meteor.user() && Meteor.user().isAdmin) {
|
||||
check(username, String);
|
||||
check(userId, String);
|
||||
const nUsersWithUsername = Users.find({ username }).count();
|
||||
if (nUsersWithUsername > 0) {
|
||||
throw new Meteor.Error('username-already-taken');
|
||||
} else {
|
||||
Users.update(userId, { $set: { username } });
|
||||
}
|
||||
}
|
||||
},
|
||||
setEmail(email, userId) {
|
||||
if (Meteor.user() && Meteor.user().isAdmin) {
|
||||
if (Array.isArray(email)) {
|
||||
email = email.shift();
|
||||
}
|
||||
check(email, String);
|
||||
const existingUser = Users.findOne(
|
||||
{ 'emails.address': email },
|
||||
{ fields: { _id: 1 } },
|
||||
);
|
||||
if (existingUser) {
|
||||
throw new Meteor.Error('email-already-taken');
|
||||
} else {
|
||||
Users.update(userId, {
|
||||
$set: {
|
||||
emails: [
|
||||
{
|
||||
address: email,
|
||||
verified: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
setUsernameAndEmail(username, email, userId) {
|
||||
if (Meteor.user() && Meteor.user().isAdmin) {
|
||||
check(username, String);
|
||||
if (Array.isArray(email)) {
|
||||
email = email.shift();
|
||||
}
|
||||
check(email, String);
|
||||
check(userId, String);
|
||||
Meteor.call('setUsername', username, userId);
|
||||
Meteor.call('setEmail', email, userId);
|
||||
}
|
||||
},
|
||||
setPassword(newPassword, userId) {
|
||||
if (Meteor.user() && Meteor.user().isAdmin) {
|
||||
check(userId, String);
|
||||
check(newPassword, String);
|
||||
if (Meteor.user().isAdmin) {
|
||||
Accounts.setPassword(userId, newPassword);
|
||||
}
|
||||
}
|
||||
},
|
||||
// we accept userId, username, email
|
||||
inviteUserToBoard(username, boardId) {
|
||||
check(username, String);
|
||||
@@ -726,8 +762,9 @@ if (Meteor.isServer) {
|
||||
throw new Meteor.Error('error-user-notAllowSelf');
|
||||
} else {
|
||||
if (posAt <= 0) throw new Meteor.Error('error-user-doesNotExist');
|
||||
if (Settings.findOne().disableRegistration)
|
||||
if (Settings.findOne({ disableRegistration: true })) {
|
||||
throw new Meteor.Error('error-user-notCreated');
|
||||
}
|
||||
// Set in lowercase email before creating account
|
||||
const email = username.toLowerCase();
|
||||
username = email.substring(0, posAt);
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v3.76.0",
|
||||
"version": "v3.83.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v3.76.0",
|
||||
"version": "v3.83.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
+343
-316
File diff suppressed because it is too large.
Load diff
+16
-1
@@ -1,7 +1,7 @@
|
||||
swagger: '2.0'
|
||||
info:
|
||||
title: Wekan REST API
|
||||
version: v3.76
|
||||
version: v3.83
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
@@ -2115,6 +2115,18 @@ definitions:
|
||||
description: |
|
||||
Does the board allows comments?
|
||||
type: boolean
|
||||
allowsDescriptionTitle:
|
||||
description: |
|
||||
Does the board allows description title?
|
||||
type: boolean
|
||||
allowsDescriptionText:
|
||||
description: |
|
||||
Does the board allows description text?
|
||||
type: boolean
|
||||
allowsActivities:
|
||||
description: |
|
||||
Does the board allows comments?
|
||||
type: boolean
|
||||
allowsLabels:
|
||||
description: |
|
||||
Does the board allows labels?
|
||||
@@ -2211,6 +2223,9 @@ definitions:
|
||||
- allowsAttachments
|
||||
- allowsChecklists
|
||||
- allowsComments
|
||||
- allowsDescriptionTitle
|
||||
- allowsDescriptionText
|
||||
- allowsActivities
|
||||
- allowsLabels
|
||||
- allowsAssignee
|
||||
- allowsMembers
|
||||
|
||||
+2
-2
@@ -18,8 +18,8 @@ REM Install chocolatey
|
||||
|
||||
choco install -y git curl python2 dotnet4.5.2 nano mongodb-3 mongoclient meteor
|
||||
|
||||
curl -O https://nodejs.org/dist/v8.17.0/node-v12.15.0-x64.msi
|
||||
call node-v12.15.0-x64.msi
|
||||
curl -O https://nodejs.org/dist/v12.16.1/node-v12.16.1-x64.msi
|
||||
call node-v12.16.1-x64.msi
|
||||
|
||||
call npm config -g set msvs_version 2015
|
||||
call meteor npm config -g set msvs_version 2015
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correct
|
||||
echo " You can still use any other locale as your main locale."
|
||||
|
||||
#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
|
||||
#NODE_VERSION=12.15.0
|
||||
#NODE_VERSION=12.16.1
|
||||
#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
|
||||
|
||||
function pause(){
|
||||
@@ -79,7 +79,7 @@ do
|
||||
curl -0 -L https://npmjs.org/install.sh | sudo sh
|
||||
sudo chown -R $(id -u):$(id -g) $HOME/.npm
|
||||
sudo npm -g install n
|
||||
sudo n 12.15.0
|
||||
sudo n 12.16.1
|
||||
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
|
||||
#sudo apt-get install -y nodejs
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
|
||||
@@ -8,43 +8,56 @@
|
||||
#cd ~/repos/wekan
|
||||
#./releases/rebuild-release.sh
|
||||
|
||||
REPODIR=/home/wekan/repos
|
||||
WEKANDIR=/home/wekan/repos/wekan
|
||||
OLDDIR=/home/wekan/repos/sandstorm-build
|
||||
METEDIR=/home/wekan/repos/wekan/.snap-meteor-1.8
|
||||
|
||||
# Ensure sudo access
|
||||
sudo echo .
|
||||
# Build Sandstorm
|
||||
cd ~/repos/wekan
|
||||
cd $REPODIR
|
||||
rm -rf $WEKANDIR
|
||||
git clone git@github.com:wekan/wekan.git
|
||||
cd $WEKANDIR
|
||||
# Use Meteor 1.8.x and Node 8.17.0
|
||||
sudo n 8.17.0
|
||||
sudo rm -rf /root/.cache/node-gyp/8.17.0
|
||||
#sudo rm -rf /root/.cache/node-gyp/8.17.0
|
||||
sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp
|
||||
sudo npm -g uninstall node-gyp node-pre-gyp fibers
|
||||
sudo npm -g install node-gyp node-pre-gyp fibers
|
||||
./releases/rebuild-release.sh
|
||||
rm -rf .build
|
||||
mkdir ../sandstorm-build
|
||||
cp -pR .meteor ../sandstorm-build/
|
||||
cp -pR .snap-meteor-1.8 ../sandstorm-build/
|
||||
mv .snap-meteor-1.8/.meteor .
|
||||
mv .snap-meteor-1.8/package.json .
|
||||
mv .snap-meteor-1.8/package-lock.json .
|
||||
#sudo npm -g uninstall node-gyp node-pre-gyp fibers
|
||||
#./releases/rebuild-release.sh
|
||||
rm -rf $OLDDIR
|
||||
mkdir $OLDDIR
|
||||
mv .meteor $OLDDIR/
|
||||
cp -pR .snap-meteor-1.8 $OLDDIR/
|
||||
mv $METEDIR/.meteor .
|
||||
mv $METEDIR/package.json .
|
||||
mv $METEDIR/package-lock.json .
|
||||
# Meteor 1.9.x has changes to Buffer() => Buffer.alloc(), so reverting those
|
||||
mv .snap-meteor-1.8/cfs_access-point.txt fix-download-unicode/
|
||||
mv .snap-meteor-1.8/export.js models/
|
||||
mv .snap-meteor-1.8/wekanCreator.js models/
|
||||
mv .snap-meteor-1.8/ldap.js packages/wekan-ldap/server/ldap.js
|
||||
mv .snap-meteor-1.8/oidc_server.js packages/wekan-oidc/oidc_server.js
|
||||
rm -rf .snap-meteor-1.8
|
||||
# Build bundle with Meteor 1.8.x and Node 8.17.0
|
||||
mv $METEDIR/cfs_access-point.txt fix-download-unicode/
|
||||
mv $METEDIR/export.js models/
|
||||
mv $METEDIR/wekanCreator.js models/
|
||||
mv $METEDIR/ldap.js packages/wekan-ldap/server/ldap.js
|
||||
mv $METEDIR/oidc_server.js packages/wekan-oidc/oidc_server.js
|
||||
rm -rf $METEDIR
|
||||
# Build Wekan
|
||||
./releases/rebuild-release.sh
|
||||
# Build bundle with Meteor 1.8.x and Node 8.17.0
|
||||
cd .build/bundle/programs/server
|
||||
npm install node-gyp node-pre-gyp fibers@2.0.0
|
||||
cd $WEKANDIR
|
||||
# Build Sandstorm
|
||||
meteor-spk pack wekan-$1.spk
|
||||
spk publish wekan-$1.spk
|
||||
scp wekan-$1.spk x2:/var/snap/wekan/common/releases.wekan.team/
|
||||
mv wekan-$1.spk ..
|
||||
sudo rm -rf .meteor-spk
|
||||
#spk publish wekan-$1.spk
|
||||
#scp wekan-$1.spk x2:/var/snap/wekan/common/releases.wekan.team/
|
||||
#mv wekan-$1.spk ..
|
||||
#sudo rm -rf .meteor-spk
|
||||
# Back to Meteor 1.9 and Node 12.14.1
|
||||
sudo n 12.14.1
|
||||
sudo rm -rf .meteor
|
||||
mv ../sandstorm-build/.meteor .
|
||||
mv ../sandstorm-build/.snap-meteor-1.8 .
|
||||
rmdir ../sandstorm-build
|
||||
#sudo n 12.14.1
|
||||
#sudo rm -rf .meteor
|
||||
#mv ../sandstorm-build/.meteor .
|
||||
#mv ../sandstorm-build/.snap-meteor-1.8 .
|
||||
#rmdir ../sandstorm-build
|
||||
# Delete old stuff
|
||||
#cd ~/repos/wekan
|
||||
#./releases/release-cleanup.sh
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 378,
|
||||
appVersion = 383,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "3.76.0~2020-02-07"),
|
||||
appMarketingVersion = (defaultText = "3.83.0~2020-03-01"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
Meteor.startup(() => {
|
||||
if (process.env.CARD_OPENED_WEBHOOK_ENABLED) {
|
||||
if (process.env.CARD_OPENED_WEBHOOK_ENABLED === 'true') {
|
||||
Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED = true;
|
||||
} else {
|
||||
Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED = false;
|
||||
}
|
||||
});
|
||||
@@ -985,3 +985,51 @@ Migrations.add('add-requested-by-allowed', () => {
|
||||
noValidateMulti,
|
||||
);
|
||||
});
|
||||
|
||||
Migrations.add('add-activities-allowed', () => {
|
||||
Boards.update(
|
||||
{
|
||||
allowsActivities: {
|
||||
$exists: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
$set: {
|
||||
allowsActivities: true,
|
||||
},
|
||||
},
|
||||
noValidateMulti,
|
||||
);
|
||||
});
|
||||
|
||||
Migrations.add('add-description-title-allowed', () => {
|
||||
Boards.update(
|
||||
{
|
||||
allowsDescriptionTitle: {
|
||||
$exists: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
$set: {
|
||||
allowsDescriptionTitle: true,
|
||||
},
|
||||
},
|
||||
noValidateMulti,
|
||||
);
|
||||
});
|
||||
|
||||
Migrations.add('add-description-text-allowed', () => {
|
||||
Boards.update(
|
||||
{
|
||||
allowsDescriptionText: {
|
||||
$exists: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
$set: {
|
||||
allowsDescriptionText: true,
|
||||
},
|
||||
},
|
||||
noValidateMulti,
|
||||
);
|
||||
});
|
||||
+192
-185
@@ -1,192 +1,199 @@
|
||||
const postCatchError = Meteor.wrapAsync((url, options, resolve) => {
|
||||
HTTP.post(url, options, (err, res) => {
|
||||
if (err) {
|
||||
resolve(null, err.response);
|
||||
} else {
|
||||
resolve(null, res);
|
||||
}
|
||||
if (Meteor.isServer) {
|
||||
const postCatchError = Meteor.wrapAsync((url, options, resolve) => {
|
||||
HTTP.post(url, options, (err, res) => {
|
||||
if (err) {
|
||||
resolve(null, err.response);
|
||||
} else {
|
||||
resolve(null, res);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
const Lock = {
|
||||
_lock: {},
|
||||
_timer: {},
|
||||
echoDelay: 500, // echo should be happening much faster
|
||||
normalDelay: 1e3, // normally user typed comment will be much slower
|
||||
ECHO: 2,
|
||||
NORMAL: 1,
|
||||
NULL: 0,
|
||||
has(id, value) {
|
||||
const existing = this._lock[id];
|
||||
let ret = this.NULL;
|
||||
if (existing) {
|
||||
ret = existing === value ? this.ECHO : this.NORMAL;
|
||||
}
|
||||
return ret;
|
||||
},
|
||||
clear(id, delay) {
|
||||
const previous = this._timer[id];
|
||||
if (previous) {
|
||||
Meteor.clearTimeout(previous);
|
||||
}
|
||||
this._timer[id] = Meteor.setTimeout(() => this.unset(id), delay);
|
||||
},
|
||||
set(id, value) {
|
||||
const state = this.has(id, value);
|
||||
let delay = this.normalDelay;
|
||||
if (state === this.ECHO) {
|
||||
delay = this.echoDelay;
|
||||
}
|
||||
if (!value) {
|
||||
// user commented, we set a lock
|
||||
value = 1;
|
||||
}
|
||||
this._lock[id] = value;
|
||||
this.clear(id, delay); // always auto reset the locker after delay
|
||||
},
|
||||
unset(id) {
|
||||
delete this._lock[id];
|
||||
},
|
||||
};
|
||||
const Lock = {
|
||||
_lock: {},
|
||||
_timer: {},
|
||||
echoDelay: 500, // echo should be happening much faster
|
||||
normalDelay: 1e3, // normally user typed comment will be much slower
|
||||
ECHO: 2,
|
||||
NORMAL: 1,
|
||||
NULL: 0,
|
||||
has(id, value) {
|
||||
const existing = this._lock[id];
|
||||
let ret = this.NULL;
|
||||
if (existing) {
|
||||
ret = existing === value ? this.ECHO : this.NORMAL;
|
||||
}
|
||||
return ret;
|
||||
},
|
||||
clear(id, delay) {
|
||||
const previous = this._timer[id];
|
||||
if (previous) {
|
||||
Meteor.clearTimeout(previous);
|
||||
}
|
||||
this._timer[id] = Meteor.setTimeout(() => this.unset(id), delay);
|
||||
},
|
||||
set(id, value) {
|
||||
const state = this.has(id, value);
|
||||
let delay = this.normalDelay;
|
||||
if (state === this.ECHO) {
|
||||
delay = this.echoDelay;
|
||||
}
|
||||
if (!value) {
|
||||
// user commented, we set a lock
|
||||
value = 1;
|
||||
}
|
||||
this._lock[id] = value;
|
||||
this.clear(id, delay); // always auto reset the locker after delay
|
||||
},
|
||||
unset(id) {
|
||||
delete this._lock[id];
|
||||
},
|
||||
};
|
||||
|
||||
const webhooksAtbts = (process.env.WEBHOOKS_ATTRIBUTES &&
|
||||
process.env.WEBHOOKS_ATTRIBUTES.split(',')) || [
|
||||
'cardId',
|
||||
'listId',
|
||||
'oldListId',
|
||||
'boardId',
|
||||
'comment',
|
||||
'user',
|
||||
'card',
|
||||
'commentId',
|
||||
'swimlaneId',
|
||||
];
|
||||
const responseFunc = data => {
|
||||
const paramCommentId = data.commentId;
|
||||
const paramCardId = data.cardId;
|
||||
const paramBoardId = data.boardId;
|
||||
const newComment = data.comment;
|
||||
if (paramCardId && paramBoardId && newComment) {
|
||||
// only process data with the cardid, boardid and comment text, TODO can expand other functions here to react on returned data
|
||||
const comment = CardComments.findOne({
|
||||
_id: paramCommentId,
|
||||
cardId: paramCardId,
|
||||
boardId: paramBoardId,
|
||||
});
|
||||
const board = Boards.findOne(paramBoardId);
|
||||
const card = Cards.findOne(paramCardId);
|
||||
if (board && card) {
|
||||
if (comment) {
|
||||
Lock.set(comment._id, newComment);
|
||||
CardComments.direct.update(comment._id, {
|
||||
$set: {
|
||||
const webhooksAtbts = (process.env.WEBHOOKS_ATTRIBUTES &&
|
||||
process.env.WEBHOOKS_ATTRIBUTES.split(',')) || [
|
||||
'cardId',
|
||||
'listId',
|
||||
'oldListId',
|
||||
'boardId',
|
||||
'comment',
|
||||
'user',
|
||||
'card',
|
||||
'commentId',
|
||||
'swimlaneId',
|
||||
];
|
||||
const responseFunc = data => {
|
||||
const paramCommentId = data.commentId;
|
||||
const paramCardId = data.cardId;
|
||||
const paramBoardId = data.boardId;
|
||||
const newComment = data.comment;
|
||||
if (paramCardId && paramBoardId && newComment) {
|
||||
// only process data with the cardid, boardid and comment text, TODO can expand other functions here to react on returned data
|
||||
const comment = CardComments.findOne({
|
||||
_id: paramCommentId,
|
||||
cardId: paramCardId,
|
||||
boardId: paramBoardId,
|
||||
});
|
||||
const board = Boards.findOne(paramBoardId);
|
||||
const card = Cards.findOne(paramCardId);
|
||||
if (board && card) {
|
||||
if (comment) {
|
||||
Lock.set(comment._id, newComment);
|
||||
CardComments.direct.update(comment._id, {
|
||||
$set: {
|
||||
text: newComment,
|
||||
},
|
||||
});
|
||||
}
|
||||
} else {
|
||||
const userId = data.userId;
|
||||
if (userId) {
|
||||
const inserted = CardComments.direct.insert({
|
||||
text: newComment,
|
||||
},
|
||||
});
|
||||
}
|
||||
} else {
|
||||
const userId = data.userId;
|
||||
if (userId) {
|
||||
const inserted = CardComments.direct.insert({
|
||||
text: newComment,
|
||||
userId,
|
||||
cardId,
|
||||
boardId,
|
||||
});
|
||||
Lock.set(inserted._id, newComment);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Meteor.methods({
|
||||
outgoingWebhooks(integration, description, params) {
|
||||
check(integration, Object);
|
||||
check(description, String);
|
||||
check(params, Object);
|
||||
this.unblock();
|
||||
|
||||
// label activity did not work yet, see wekan/models/activities.js
|
||||
const quoteParams = _.clone(params);
|
||||
const clonedParams = _.clone(params);
|
||||
[
|
||||
'card',
|
||||
'list',
|
||||
'oldList',
|
||||
'board',
|
||||
'oldBoard',
|
||||
'comment',
|
||||
'checklist',
|
||||
'swimlane',
|
||||
'oldSwimlane',
|
||||
'label',
|
||||
'attachment',
|
||||
].forEach(key => {
|
||||
if (quoteParams[key]) quoteParams[key] = `"${params[key]}"`;
|
||||
});
|
||||
|
||||
const userId = params.userId ? params.userId : integrations[0].userId;
|
||||
const user = Users.findOne(userId);
|
||||
const text = `${params.user} ${TAPi18n.__(
|
||||
description,
|
||||
quoteParams,
|
||||
user.getLanguage(),
|
||||
)}\n${params.url}`;
|
||||
|
||||
if (text.length === 0) return;
|
||||
|
||||
const value = {
|
||||
text: `${text}`,
|
||||
};
|
||||
|
||||
webhooksAtbts.forEach(key => {
|
||||
if (params[key]) value[key] = params[key];
|
||||
});
|
||||
value.description = description;
|
||||
//integrations.forEach(integration => {
|
||||
const is2way = integration.type === Integrations.Const.TWOWAY;
|
||||
const token = integration.token || '';
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
};
|
||||
if (token) headers['X-Wekan-Token'] = token;
|
||||
const options = {
|
||||
headers,
|
||||
data: is2way ? { description, ...clonedParams } : value,
|
||||
};
|
||||
const url = integration.url;
|
||||
if (is2way) {
|
||||
const cid = params.commentId;
|
||||
const comment = params.comment;
|
||||
const lockState = cid && Lock.has(cid, comment);
|
||||
if (cid && lockState !== Lock.NULL) {
|
||||
// it's a comment and there is a previous lock
|
||||
return;
|
||||
} else if (cid) {
|
||||
Lock.set(cid, comment); // set a lock here
|
||||
}
|
||||
}
|
||||
const response = postCatchError(url, options);
|
||||
|
||||
if (
|
||||
response &&
|
||||
response.statusCode &&
|
||||
response.statusCode >= 200 &&
|
||||
response.statusCode < 300
|
||||
) {
|
||||
if (is2way) {
|
||||
const data = response.data; // only an JSON encoded response will be actioned
|
||||
if (data) {
|
||||
try {
|
||||
responseFunc(data);
|
||||
} catch (e) {
|
||||
throw new Meteor.Error('error-process-data');
|
||||
}
|
||||
userId,
|
||||
cardId,
|
||||
boardId,
|
||||
});
|
||||
Lock.set(inserted._id, newComment);
|
||||
}
|
||||
}
|
||||
return response; // eslint-disable-line consistent-return
|
||||
} else {
|
||||
throw new Meteor.Error('error-invalid-webhook-response');
|
||||
}
|
||||
//});
|
||||
},
|
||||
});
|
||||
};
|
||||
Meteor.methods({
|
||||
outgoingWebhooks(integration, description, params) {
|
||||
if (Meteor.user()) {
|
||||
check(integration, Object);
|
||||
check(description, String);
|
||||
check(params, Object);
|
||||
this.unblock();
|
||||
|
||||
// label activity did not work yet, see wekan/models/activities.js
|
||||
const quoteParams = _.clone(params);
|
||||
const clonedParams = _.clone(params);
|
||||
[
|
||||
'card',
|
||||
'list',
|
||||
'oldList',
|
||||
'board',
|
||||
'oldBoard',
|
||||
'comment',
|
||||
'checklist',
|
||||
'swimlane',
|
||||
'oldSwimlane',
|
||||
'label',
|
||||
'attachment',
|
||||
].forEach(key => {
|
||||
if (quoteParams[key]) quoteParams[key] = `"${params[key]}"`;
|
||||
});
|
||||
|
||||
const userId = params.userId ? params.userId : integrations[0].userId;
|
||||
const user = Users.findOne(userId);
|
||||
const text = `${params.user} ${TAPi18n.__(
|
||||
description,
|
||||
quoteParams,
|
||||
user.getLanguage(),
|
||||
)}\n${params.url}`;
|
||||
|
||||
if (text.length === 0) return;
|
||||
|
||||
const value = {
|
||||
text: `${text}`,
|
||||
};
|
||||
|
||||
webhooksAtbts.forEach(key => {
|
||||
if (params[key]) value[key] = params[key];
|
||||
});
|
||||
value.description = description;
|
||||
//integrations.forEach(integration => {
|
||||
const is2way = integration.type === Integrations.Const.TWOWAY;
|
||||
const token = integration.token || '';
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
};
|
||||
if (token) headers['X-Wekan-Token'] = token;
|
||||
const options = {
|
||||
headers,
|
||||
data: is2way ? { description, ...clonedParams } : value,
|
||||
};
|
||||
|
||||
if (!Integrations.findOne({ url: integration.url })) return;
|
||||
|
||||
const url = integration.url;
|
||||
|
||||
if (is2way) {
|
||||
const cid = params.commentId;
|
||||
const comment = params.comment;
|
||||
const lockState = cid && Lock.has(cid, comment);
|
||||
if (cid && lockState !== Lock.NULL) {
|
||||
// it's a comment and there is a previous lock
|
||||
return;
|
||||
} else if (cid) {
|
||||
Lock.set(cid, comment); // set a lock here
|
||||
}
|
||||
}
|
||||
const response = postCatchError(url, options);
|
||||
|
||||
if (
|
||||
response &&
|
||||
response.statusCode &&
|
||||
response.statusCode >= 200 &&
|
||||
response.statusCode < 300
|
||||
) {
|
||||
if (is2way) {
|
||||
const data = response.data; // only an JSON encoded response will be actioned
|
||||
if (data) {
|
||||
try {
|
||||
responseFunc(data);
|
||||
} catch (e) {
|
||||
throw new Meteor.Error('error-process-data');
|
||||
}
|
||||
}
|
||||
}
|
||||
return response; // eslint-disable-line consistent-return
|
||||
} else {
|
||||
throw new Meteor.Error('error-invalid-webhook-response');
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -192,6 +192,7 @@ Meteor.publishRelations('board', function(boardId, isArchived) {
|
||||
username: 1,
|
||||
'profile.fullname': 1,
|
||||
'profile.avatarUrl': 1,
|
||||
'profile.initials': 1,
|
||||
},
|
||||
},
|
||||
),
|
||||
|
||||
@@ -6,6 +6,7 @@ Meteor.publish('user-miniprofile', function(userId) {
|
||||
username: 1,
|
||||
'profile.fullname': 1,
|
||||
'profile.avatarUrl': 1,
|
||||
'profile.initials': 1,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
+73
-65
@@ -1,68 +1,76 @@
|
||||
import { MongoInternals } from 'meteor/mongo';
|
||||
|
||||
Meteor.methods({
|
||||
getStatistics() {
|
||||
const os = require('os');
|
||||
const pjson = require('/package.json');
|
||||
const statistics = {};
|
||||
let wekanVersion = pjson.version;
|
||||
wekanVersion = wekanVersion.replace('v', '');
|
||||
statistics.version = wekanVersion;
|
||||
statistics.os = {
|
||||
type: os.type(),
|
||||
platform: os.platform(),
|
||||
arch: os.arch(),
|
||||
release: os.release(),
|
||||
uptime: os.uptime(),
|
||||
loadavg: os.loadavg(),
|
||||
totalmem: os.totalmem(),
|
||||
freemem: os.freemem(),
|
||||
cpus: os.cpus(),
|
||||
};
|
||||
let nodeVersion = process.version;
|
||||
nodeVersion = nodeVersion.replace('v', '');
|
||||
statistics.process = {
|
||||
nodeVersion,
|
||||
pid: process.pid,
|
||||
uptime: process.uptime(),
|
||||
};
|
||||
// Remove beginning of Meteor release text METEOR@
|
||||
let meteorVersion = Meteor.release;
|
||||
meteorVersion = meteorVersion.replace('METEOR@', '');
|
||||
statistics.meteor = {
|
||||
meteorVersion,
|
||||
};
|
||||
// Thanks to RocketChat for MongoDB version detection !
|
||||
// https://github.com/RocketChat/Rocket.Chat/blob/develop/app/utils/server/functions/getMongoInfo.js
|
||||
let mongoVersion;
|
||||
let mongoStorageEngine;
|
||||
let mongoOplogEnabled;
|
||||
try {
|
||||
const { mongo } = MongoInternals.defaultRemoteCollectionDriver();
|
||||
oplogEnabled = Boolean(
|
||||
mongo._oplogHandle && mongo._oplogHandle.onOplogEntry,
|
||||
);
|
||||
const { version, storageEngine } = Promise.await(
|
||||
mongo.db.command({ serverStatus: 1 }),
|
||||
);
|
||||
mongoVersion = version;
|
||||
mongoStorageEngine = storageEngine.name;
|
||||
mongoOplogEnabled = oplogEnabled;
|
||||
} catch (e) {
|
||||
try {
|
||||
const { version } = Promise.await(mongo.db.command({ buildinfo: 1 }));
|
||||
mongoVersion = version;
|
||||
mongoStorageEngine = 'unknown';
|
||||
} catch (e) {
|
||||
mongoVersion = 'unknown';
|
||||
mongoStorageEngine = 'unknown';
|
||||
if (Meteor.isServer) {
|
||||
Meteor.methods({
|
||||
getStatistics() {
|
||||
if (Meteor.user() && Meteor.user().isAdmin) {
|
||||
const os = require('os');
|
||||
const pjson = require('/package.json');
|
||||
const statistics = {};
|
||||
let wekanVersion = pjson.version;
|
||||
wekanVersion = wekanVersion.replace('v', '');
|
||||
statistics.version = wekanVersion;
|
||||
statistics.os = {
|
||||
type: os.type(),
|
||||
platform: os.platform(),
|
||||
arch: os.arch(),
|
||||
release: os.release(),
|
||||
uptime: os.uptime(),
|
||||
loadavg: os.loadavg(),
|
||||
totalmem: os.totalmem(),
|
||||
freemem: os.freemem(),
|
||||
cpus: os.cpus(),
|
||||
};
|
||||
let nodeVersion = process.version;
|
||||
nodeVersion = nodeVersion.replace('v', '');
|
||||
statistics.process = {
|
||||
nodeVersion,
|
||||
pid: process.pid,
|
||||
uptime: process.uptime(),
|
||||
};
|
||||
// Remove beginning of Meteor release text METEOR@
|
||||
let meteorVersion = Meteor.release;
|
||||
meteorVersion = meteorVersion.replace('METEOR@', '');
|
||||
statistics.meteor = {
|
||||
meteorVersion,
|
||||
};
|
||||
// Thanks to RocketChat for MongoDB version detection !
|
||||
// https://github.com/RocketChat/Rocket.Chat/blob/develop/app/utils/server/functions/getMongoInfo.js
|
||||
let mongoVersion;
|
||||
let mongoStorageEngine;
|
||||
let mongoOplogEnabled;
|
||||
try {
|
||||
const { mongo } = MongoInternals.defaultRemoteCollectionDriver();
|
||||
oplogEnabled = Boolean(
|
||||
mongo._oplogHandle && mongo._oplogHandle.onOplogEntry,
|
||||
);
|
||||
const { version, storageEngine } = Promise.await(
|
||||
mongo.db.command({ serverStatus: 1 }),
|
||||
);
|
||||
mongoVersion = version;
|
||||
mongoStorageEngine = storageEngine.name;
|
||||
mongoOplogEnabled = oplogEnabled;
|
||||
} catch (e) {
|
||||
try {
|
||||
const { version } = Promise.await(
|
||||
mongo.db.command({ buildinfo: 1 }),
|
||||
);
|
||||
mongoVersion = version;
|
||||
mongoStorageEngine = 'unknown';
|
||||
} catch (e) {
|
||||
mongoVersion = 'unknown';
|
||||
mongoStorageEngine = 'unknown';
|
||||
}
|
||||
}
|
||||
statistics.mongo = {
|
||||
mongoVersion,
|
||||
mongoStorageEngine,
|
||||
mongoOplogEnabled,
|
||||
};
|
||||
return statistics;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
statistics.mongo = {
|
||||
mongoVersion,
|
||||
mongoStorageEngine,
|
||||
mongoOplogEnabled,
|
||||
};
|
||||
return statistics;
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
+1
-1
@@ -81,7 +81,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.15.0
|
||||
node-engine: 12.16.1
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set -euxo pipefail
|
||||
|
||||
BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA"
|
||||
NODE_VERSION=v12.15.0
|
||||
NODE_VERSION=v12.16.1
|
||||
#METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer
|
||||
USE_EDGE=false
|
||||
METEOR_EDGE=1.5-beta.17
|
||||
|
||||
Reference in new issue
Block a user