Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff19d6744e | ||
|
|
c26af16688 | ||
|
|
216b3cfe01 | ||
|
|
fd70556c82 | ||
|
|
0fee20cc12 | ||
|
|
32f6de1eec | ||
|
|
8671f08a0e | ||
|
|
299484f7b2 | ||
|
|
d16086fcdb | ||
|
|
1968b7da31 | ||
|
|
95a40a45e5 | ||
|
|
0ad7f080b7 | ||
|
|
aca3048036 | ||
|
|
1158cd42cc | ||
|
|
0e2b7458d7 | ||
|
|
cf7d740004 | ||
|
|
dc4c4d9ade | ||
|
|
a347ae3676 | ||
|
|
7da2a8a15e | ||
|
|
0002559d6e | ||
|
|
afda0ed4da | ||
|
|
473f389bbe | ||
|
|
b7c000b78b | ||
|
|
4ac8247db0 | ||
|
|
0471d1ac97 | ||
|
|
c0221dafde | ||
|
|
8f337f17e4 | ||
|
|
de5a63f7b2 | ||
|
|
52a744b443 | ||
|
|
4be5fa598e | ||
|
|
d03a7e7a98 | ||
|
|
ebc4d6fdbd | ||
|
|
35ffd02814 | ||
|
|
4c72479d12 | ||
|
|
907c761f71 | ||
|
|
97206aa8f6 | ||
|
|
2ec1664408 | ||
|
|
97822f35fd | ||
|
|
c5e72d1a2b | ||
|
|
117c9e069e | ||
|
|
951a9f81d6 | ||
|
|
6f30c33f11 | ||
|
|
8050117adf | ||
|
|
6d6bb8fc57 |
No files matched your search
+1
-1
@@ -82,7 +82,6 @@ staringatlights:fast-render
|
||||
mixmax:smart-disconnect
|
||||
accounts-password@1.5.0
|
||||
cfs:gridfs
|
||||
eluck:accounts-lockout
|
||||
rzymek:fullcalendar
|
||||
momentjs:moment@2.22.2
|
||||
browser-policy-framing
|
||||
@@ -92,3 +91,4 @@ wekan-scrollbar
|
||||
mquandalle:perfect-scrollbar
|
||||
mdg:meteor-apm-agent
|
||||
meteorhacks:unblock
|
||||
lucasantoniassi:accounts-lockout
|
||||
+3
-3
@@ -60,7 +60,6 @@ ecmascript-runtime@0.5.0
|
||||
ecmascript-runtime-client@0.5.0
|
||||
ecmascript-runtime-server@0.5.0
|
||||
ejson@1.1.0
|
||||
eluck:accounts-lockout@0.9.0
|
||||
email@1.2.3
|
||||
es5-shim@4.6.15
|
||||
fastclick@1.0.13
|
||||
@@ -82,6 +81,7 @@ launch-screen@1.1.1
|
||||
livedata@1.0.18
|
||||
localstorage@1.2.0
|
||||
logging@1.1.19
|
||||
lucasantoniassi:accounts-lockout@1.0.0
|
||||
matb33:collection-hooks@0.8.4
|
||||
matteodem:easy-search@1.6.4
|
||||
mdg:meteor-apm-agent@3.1.2
|
||||
@@ -145,8 +145,6 @@ reload@1.1.11
|
||||
retry@1.0.9
|
||||
routepolicy@1.0.12
|
||||
rzymek:fullcalendar@3.8.0
|
||||
wekan-accounts-oidc@1.0.10
|
||||
wekan-oidc@1.0.12
|
||||
service-configuration@1.0.11
|
||||
session@1.1.7
|
||||
sha@1.0.9
|
||||
@@ -181,6 +179,8 @@ useraccounts:unstyled@1.14.2
|
||||
verron:autosize@3.0.8
|
||||
webapp@1.4.0
|
||||
webapp-hashing@1.0.9
|
||||
wekan-accounts-oidc@1.0.10
|
||||
wekan-oidc@1.0.12
|
||||
wekan-scrollbar@3.1.3
|
||||
wekan:accounts-cas@0.1.0
|
||||
wekan:wekan-ldap@0.0.2
|
||||
|
||||
+63
-1
@@ -1,9 +1,71 @@
|
||||
# v2.48 2019-03-15 Wekan release
|
||||
|
||||
This release fixes the following bugs, thanks to GitHub user xet7:
|
||||
|
||||
- [Fix LDAP login](https://github.com/wekan/wekan/commit/216b3cfe0121aa026139536c383aa27db0353411).
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v2.47 2019-03-14 Wekan release
|
||||
|
||||
This release fixes the following bugs, thanks to GitHub user xet7:
|
||||
|
||||
- [Remove ordering of cards by starred/color/description, so that cards would not reorder all the time](https://github.com/wekan/wekan/issues/2241).
|
||||
- Try to fix [LDAP Login: "Login forbidden", ReferenceError: req is not defined](https://github.com/wekan/wekan-ldap/44).
|
||||
|
||||
# v2.46 2019-03-13 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix watchers undefined](https://github.com/wekan/wekan/pull/2253).
|
||||
Thanks to justinr1234.
|
||||
- [Revert hiding of Subtask boards](https://github.com/wekan/wekan/commit/1968b7da31d75757fd6383417d729ff6af6bbc5b)
|
||||
because of feedback from Wekan users, that need Subtask boards to be visible.
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v2.45 2019-03-11 Wekan release
|
||||
|
||||
This release fixes the following bugs, thanks to andresmanelli:
|
||||
|
||||
- [Rename circular card migration to re run the fix](https://github.com/wekan/wekan/commit/a347ae367654258b7768e7571831ed8f75fb5b84).
|
||||
|
||||
# v2.44 2019-03-11 Wekan release
|
||||
|
||||
This release adds the following new features and fixes with Apache I-CLA, thanks to bentiss:
|
||||
|
||||
- [Activities: register customFields changes in the activities](https://github.com/wekan/wekan/pull/2239).
|
||||
- [customFields: fix leftover from lint](https://github.com/wekan/wekan/commit/4c72479d1206850d436261dc5c6a4127f246f6da).
|
||||
Looks like I forgot to use the camelCase notation here, and this leads to an exception while updating a custom field.
|
||||
- [Fix imports](https://github.com/wekan/wekan/pull/2245).
|
||||
|
||||
and adds the following new features:
|
||||
|
||||
- Add language: Occitan. Thanks to translators.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix removed checklistItem activity => dangling activities created](https://github.com/wekan/wekan/commit/2ec1664408d9515b5ca77fbb46ef99208eb8cff0).
|
||||
Closes #2240. Thanks to andresmanelli.
|
||||
- [Avoid set self as parent card to cause circular reference, for real](https://github.com/wekan/commit/97822f35fd6365e5631c5488e8ee595f76ab4e34).
|
||||
Thanks to andresmanelli.
|
||||
- Try to fix [Order All Boards by starred, color, board name and board description. Part 2](https://github.com/wekan/wekan/commit/8f337f17e45f8af8d96b6043d54466e5878b7e0b).
|
||||
Works on new Wekan install. Could still have boards keeping reording happening all the time on old Wekan installs.
|
||||
Thanks to xet7. Note: Ordering by starred/color/description was removed at Wekan v2.47.
|
||||
- [Changed brute force protection package from eluck:accounts-lockout to lucasantoniassi:accounts-lockout that is maintained and works.
|
||||
Added Snap/Docker/Source settings](https://github.com/wekan/wekan/commit/b7c000b78b9af253fb115bbfa5ef0d4c0681abbb).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above Wekan contributors for their contributions.
|
||||
|
||||
# v2.43 2019-03-08 Wekan release
|
||||
|
||||
This release adds the following new features, thanks to xet7:
|
||||
|
||||
- [Hide Subtask boards from All Boards](https://github.com/wekan/wekan/issues/1990).
|
||||
- [Hide Subtask boards from All Boards](https://github.com/wekan/wekan/issues/1990). This was reverted in Wekan v2.46 to make Subtask boards visible again.
|
||||
- [Order All Boards by Starred, Color, Title and Description](https://github.com/wekan/wekan/commit/856872815292590e0c4eff2848ea1b857a318dc4).
|
||||
This was removed at Wekan v2.47.
|
||||
- [HTTP header automatic login](https://github.com/wekan/wekan/commit/ff825d6123ecfd033ccb08ce97c11cefee676104)
|
||||
for [3rd party authentication server method](https://github.com/wekan/wekan/issues/2019) like siteminder, and any webserver that
|
||||
handles authentication and based on it adds HTTP headers to be used for login. Please test.
|
||||
|
||||
+12
@@ -12,6 +12,12 @@ ARG FIBERS_VERSION
|
||||
ARG ARCHITECTURE
|
||||
ARG SRC_PATH
|
||||
ARG WITH_API
|
||||
ARG ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE
|
||||
ARG ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD
|
||||
ARG ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW
|
||||
ARG ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE
|
||||
ARG ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD
|
||||
ARG ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW
|
||||
ARG EMAIL_NOTIFICATION_TIMEOUT
|
||||
ARG MATOMO_ADDRESS
|
||||
ARG MATOMO_SITE_ID
|
||||
@@ -102,6 +108,12 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
|
||||
ARCHITECTURE=linux-x64 \
|
||||
SRC_PATH=./ \
|
||||
WITH_API=true \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \
|
||||
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \
|
||||
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
|
||||
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
|
||||
EMAIL_NOTIFICATION_TIMEOUT=30000 \
|
||||
MATOMO_ADDRESS="" \
|
||||
MATOMO_SITE_ID="" \
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v2.43.0"
|
||||
appVersion: "v2.48.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -114,6 +114,12 @@ template(name="boardActivities")
|
||||
if($eq activityType 'removedLabel')
|
||||
| {{{_ 'activity-removed-label' lastLabel cardLink}}}.
|
||||
|
||||
if($eq activityType 'setCustomField')
|
||||
| {{{_ 'activity-set-customfield' lastCustomField lastCustomFieldValue cardLink}}}.
|
||||
|
||||
if($eq activityType 'unsetCustomField')
|
||||
| {{{_ 'activity-unset-customfield' lastCustomField cardLink}}}.
|
||||
|
||||
if($eq activityType 'unjoinMember')
|
||||
if($eq user._id member._id)
|
||||
| {{{_ 'activity-unjoined' cardLink}}}.
|
||||
|
||||
@@ -82,6 +82,24 @@ BlazeComponent.extendComponent({
|
||||
}
|
||||
},
|
||||
|
||||
lastCustomField(){
|
||||
const lastCustomField = CustomFields.findOne(this.currentData().customFieldId);
|
||||
return lastCustomField.name;
|
||||
},
|
||||
|
||||
lastCustomFieldValue(){
|
||||
const lastCustomField = CustomFields.findOne(this.currentData().customFieldId);
|
||||
const value = this.currentData().value;
|
||||
if (lastCustomField.settings.dropdownItems && lastCustomField.settings.dropdownItems.length > 0) {
|
||||
const dropDownValue = _.find(lastCustomField.settings.dropdownItems, (item) => {
|
||||
return item._id === value;
|
||||
});
|
||||
if (dropDownValue)
|
||||
return dropDownValue.name;
|
||||
}
|
||||
return value;
|
||||
},
|
||||
|
||||
listLabel() {
|
||||
return this.currentData().list().title;
|
||||
},
|
||||
|
||||
@@ -25,12 +25,8 @@ BlazeComponent.extendComponent({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
type: 'board',
|
||||
subtasksDefaultListId: null,
|
||||
}, {
|
||||
sort: { stars: -1, color: 1, title: 1, description: 1 },
|
||||
});
|
||||
}, { sort: ['title'] });
|
||||
},
|
||||
|
||||
isStarred() {
|
||||
const user = Meteor.user();
|
||||
return user && user.hasStarred(this.currentData()._id);
|
||||
|
||||
@@ -306,27 +306,27 @@ template(name="cardMorePopup")
|
||||
h2 {{_ 'change-card-parent'}}
|
||||
label {{_ 'source-board'}}:
|
||||
select.js-field-parent-board
|
||||
if isTopLevel
|
||||
option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
|
||||
else
|
||||
option(value="none") {{_ 'custom-field-dropdown-none'}}
|
||||
each boards
|
||||
if isParentBoard
|
||||
option(value="{{_id}}" selected) {{title}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
if isTopLevel
|
||||
option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
|
||||
else
|
||||
option(value="none") {{_ 'custom-field-dropdown-none'}}
|
||||
|
||||
label {{_ 'parent-card'}}:
|
||||
select.js-field-parent-card
|
||||
if isTopLevel
|
||||
option(value="none" selected) {{_ 'custom-field-dropdown-none'}}
|
||||
else
|
||||
option(value="none") {{_ 'custom-field-dropdown-none'}}
|
||||
each cards
|
||||
if isParentCard
|
||||
option(value="{{_id}}" selected) {{title}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
option(value="none") {{_ 'custom-field-dropdown-none'}}
|
||||
br
|
||||
| {{_ 'added'}}
|
||||
span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
|
||||
|
||||
@@ -578,11 +578,14 @@ BlazeComponent.extendComponent({
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.currentCard = this.currentData();
|
||||
this.parentBoard = new ReactiveVar(null);
|
||||
this.parentCard = this.currentCard.parentCard();
|
||||
if (this.parentCard) {
|
||||
this.parentBoard = this.parentCard.board();
|
||||
const list = $('.js-field-parent-card');
|
||||
list.val(this.parentCard._id);
|
||||
this.parentBoard.set(this.parentCard.board()._id);
|
||||
} else {
|
||||
this.parentBoard = null;
|
||||
this.parentBoard.set(null);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -601,9 +604,9 @@ BlazeComponent.extendComponent({
|
||||
|
||||
cards() {
|
||||
const currentId = Session.get('currentCard');
|
||||
if (this.parentBoard) {
|
||||
if (this.parentBoard.get()) {
|
||||
return Cards.find({
|
||||
boardId: this.parentBoard,
|
||||
boardId: this.parentBoard.get(),
|
||||
_id: {$ne: currentId},
|
||||
});
|
||||
} else {
|
||||
@@ -613,8 +616,8 @@ BlazeComponent.extendComponent({
|
||||
|
||||
isParentBoard() {
|
||||
const board = this.currentData();
|
||||
if (this.parentBoard) {
|
||||
return board._id === this.parentBoard;
|
||||
if (this.parentBoard.get()) {
|
||||
return board._id === this.parentBoard.get();
|
||||
}
|
||||
return false;
|
||||
},
|
||||
@@ -628,11 +631,10 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
setParentCardId(cardId) {
|
||||
if (cardId === 'null') {
|
||||
cardId = null;
|
||||
this.parentCard = null;
|
||||
} else {
|
||||
if (cardId) {
|
||||
this.parentCard = Cards.findOne(cardId);
|
||||
} else {
|
||||
this.parentCard = null;
|
||||
}
|
||||
this.currentCard.setParentId(cardId);
|
||||
},
|
||||
@@ -669,23 +671,14 @@ BlazeComponent.extendComponent({
|
||||
'change .js-field-parent-board'(evt) {
|
||||
const selection = $(evt.currentTarget).val();
|
||||
const list = $('.js-field-parent-card');
|
||||
list.empty();
|
||||
if (selection === 'none') {
|
||||
this.parentBoard = null;
|
||||
list.prop('disabled', true);
|
||||
this.parentBoard.set(null);
|
||||
} else {
|
||||
this.parentBoard = Boards.findOne(selection);
|
||||
this.parentBoard.cards().forEach(function(card) {
|
||||
list.append(
|
||||
$('<option></option>').val(card._id).html(card.title)
|
||||
);
|
||||
});
|
||||
subManager.subscribe('board', $(evt.currentTarget).val());
|
||||
this.parentBoard.set(selection);
|
||||
list.prop('disabled', false);
|
||||
}
|
||||
list.append(
|
||||
`<option value='none' selected='selected'>${TAPi18n.__('custom-field-dropdown-none')}</option>`
|
||||
);
|
||||
this.setParentCardId('null');
|
||||
this.setParentCardId(null);
|
||||
},
|
||||
'change .js-field-parent-card'(evt) {
|
||||
const selection = $(evt.currentTarget).val();
|
||||
|
||||
@@ -101,14 +101,8 @@ Template.defaultLayout.events({
|
||||
});
|
||||
|
||||
async function authentication(event, instance) {
|
||||
|
||||
// If header login id is set, use it for login.
|
||||
// Header username = Email address
|
||||
// Header password = Login ID
|
||||
// Not user currently: req.headers[process.env.HEADER_LOGIN_FIRSTNAME]
|
||||
// and req.headers[process.env.HEADER_LOGIN_LASTNAME]
|
||||
const match = req.headers[process.env.HEADER_LOGIN_EMAIL] || $('#at-field-username_and_email').val();
|
||||
const password = req.headers[process.env.HEADER_LOGIN_ID] || $('#at-field-password').val();
|
||||
const match = $('#at-field-username_and_email').val();
|
||||
const password = $('#at-field-password').val();
|
||||
|
||||
if (!match || !password) return;
|
||||
|
||||
@@ -116,12 +110,9 @@ async function authentication(event, instance) {
|
||||
|
||||
if (result === 'password') return;
|
||||
|
||||
// If header login id is not set, don't try to login automatically.
|
||||
if (!process.env.HEADER_LOGIN_ID) {
|
||||
// Stop submit #at-pwd-form
|
||||
event.preventDefault();
|
||||
event.stopImmediatePropagation();
|
||||
}
|
||||
// Stop submit #at-pwd-form
|
||||
event.preventDefault();
|
||||
event.stopImmediatePropagation();
|
||||
|
||||
switch (result) {
|
||||
case 'ldap':
|
||||
|
||||
@@ -221,6 +221,16 @@ services:
|
||||
# If you disable Wekan API with false, Export Board does not work.
|
||||
- WITH_API=true
|
||||
#---------------------------------------------------------------
|
||||
# ==== PASSWORD BRUTE FORCE PROTECTION ====
|
||||
#https://atmospherejs.com/lucasantoniassi/accounts-lockout
|
||||
#Defaults below. Uncomment to change. wekan/server/accounts-lockout.js
|
||||
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3
|
||||
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60
|
||||
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15
|
||||
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
|
||||
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
|
||||
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
|
||||
#---------------------------------------------------------------
|
||||
# ==== EMAIL NOTIFICATION TIMEOUT, ms =====
|
||||
# Defaut: 30000 ms = 30s
|
||||
#- EMAIL_NOTIFICATION_TIMEOUT=30000
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "добави етикет '%s'",
|
||||
"activity-removed-label-card": "премахна етикет '%s'",
|
||||
"activity-delete-attach-card": "изтри прикачения файл",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Правило",
|
||||
"r-add-trigger": "Добави спусък",
|
||||
"r-add-action": "Добави действие",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "přidán štítek '%s'",
|
||||
"activity-removed-label-card": "odstraněn štítek '%s'",
|
||||
"activity-delete-attach-card": "odstraněna příloha",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Pravidlo",
|
||||
"r-add-trigger": "Přidat spoštěč",
|
||||
"r-add-action": "Přidat akci",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "Label hinzugefügt '%s'",
|
||||
"activity-removed-label-card": "Label entfernt '%s'",
|
||||
"activity-delete-attach-card": "hat einen Anhang gelöscht",
|
||||
"activity-set-customfield": "setze benutzerdefiniertes Feld '%s' zu '%s' in %s",
|
||||
"activity-unset-customfield": "entferne benutzerdefiniertes Feld '%s' in %s",
|
||||
"r-rule": "Regel",
|
||||
"r-add-trigger": "Auslöser hinzufügen",
|
||||
"r-add-action": "Aktion hinzufügen",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "añadida etiqueta '%s'",
|
||||
"activity-removed-label-card": "eliminada etiqueta '%s'",
|
||||
"activity-delete-attach-card": "eliminado un adjunto",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Regla",
|
||||
"r-add-trigger": "Añadir disparador",
|
||||
"r-add-action": "Añadir acción",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "افزودن لیبل '%s'",
|
||||
"activity-removed-label-card": "حذف لیبل '%s'",
|
||||
"activity-delete-attach-card": "حذف ضمیمه",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "نقش",
|
||||
"r-add-trigger": "افزودن گیره",
|
||||
"r-add-action": "افزودن عملیات",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "lisätty tunniste '%s'",
|
||||
"activity-removed-label-card": "poistettu tunniste '%s'",
|
||||
"activity-delete-attach-card": "poistettu liitetiedosto",
|
||||
"activity-set-customfield": "asetettu mukautettu kentän '%s' sisällöksi '%s' kortilla %s",
|
||||
"activity-unset-customfield": "poistettu mukautettu kenttä '%s' kortilla %s",
|
||||
"r-rule": "Sääntö",
|
||||
"r-add-trigger": "Lisää liipaisin",
|
||||
"r-add-action": "Lisää toimi",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "a ajouté l'étiquette '%s'",
|
||||
"activity-removed-label-card": "a supprimé l'étiquette '%s'",
|
||||
"activity-delete-attach-card": "a supprimé une pièce jointe",
|
||||
"activity-set-customfield": "a défini le champ personnalisé '%s' à '%s' dans %s",
|
||||
"activity-unset-customfield": "a effacé le champ personnalisé '%s' dans %s",
|
||||
"r-rule": "Règle",
|
||||
"r-add-trigger": "Ajouter un déclencheur",
|
||||
"r-add-action": "Ajouter une action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "התווית ‚%s’ נוספה",
|
||||
"activity-removed-label-card": "התווית ‚%s’ הוסרה",
|
||||
"activity-delete-attach-card": "קובץ מצורף נמחק",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "כלל",
|
||||
"r-add-trigger": "הוספת הקפצה",
|
||||
"r-add-action": "הוספת פעולה",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "संकलित label '%s'",
|
||||
"activity-removed-label-card": "हटा दिया label '%s'",
|
||||
"activity-delete-attach-card": "deleted an संलग्नक",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "जोड़ें trigger",
|
||||
"r-add-action": "जोड़ें action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "aggiunta etichetta '%s'",
|
||||
"activity-removed-label-card": "L' etichetta '%s' è stata rimossa.",
|
||||
"activity-delete-attach-card": "Cancella un allegato",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Ruolo",
|
||||
"r-add-trigger": "Aggiungi trigger",
|
||||
"r-add-action": "Aggiungi azione",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "добави етикет '%s'",
|
||||
"activity-removed-label-card": "премахна етикет '%s'",
|
||||
"activity-delete-attach-card": "изтри прикачения файл",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Правило",
|
||||
"r-add-trigger": "Добави спусък",
|
||||
"r-add-action": "Добави действие",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -0,0 +1,682 @@
|
||||
{
|
||||
"accept": "Acceptar",
|
||||
"act-activity-notify": "Notificacion d'activitat",
|
||||
"act-addAttachment": "as apondut una pèça joncha __astacament__ de la carta __card__ a la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-deleteAttachment": "as tirat una pèça joncha __astacament__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-addSubtask": "as apondut una jos-tasca __subtask__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-addLabel": "as apondut una etiqueta__label__ de la carta __card__ a la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-removeLabel": "as tirat l'etiqueta__label__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-addChecklist": "as apondut la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-addChecklistItem": " as apondut l'element __checklistItem__ de la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-removeChecklist": "as tirat la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-removeChecklistItem": " as tirat l'element __checklistItem__ de la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-checkedItem": "as croiat __checklistItem__ de la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-uncheckedItem": "as descroiar __checklistItem__ de la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-completeChecklist": "as completat la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-uncompleteChecklist": "as rendut incomplet la checklist __checklist__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-addComment": "as comentat la carta __card__: __comment__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-createBoard": "as creat lo tablèu __board__",
|
||||
"act-createCard": "as creat la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-createCustomField": "as creat lo camp personalizat __customField__ a la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-createList": "as apondut la tièra __list__ al tablèu __board__",
|
||||
"act-addBoardMember": "as apondut un participant __member__ al tablèu __board__",
|
||||
"act-archivedBoard": "Lo tablèu __board__ es estat desplaçar cap a Archius",
|
||||
"act-archivedCard": "La carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__ es estat desplaçar cap a Archiu",
|
||||
"act-archivedList": "La tièra __list__ del corredor __swimlane__ del tablèu __board__ es estat desplaçar cap a Archius",
|
||||
"act-archivedSwimlane": "Lo corredor __swimlane__ del tablèu __board__ es estat desplaçar cap a Archius",
|
||||
"act-importBoard": "as importat lo tablèu __board__",
|
||||
"act-importCard": "as importat la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-importList": "as importat la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-joinMember": "as apondut un participant __member__ a la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-moveCard": "as desplaçat la carta __card__ de la tièra __oldList__ del corredor __oldSwimlane__ del tablèu __oldBoard__ cap a la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-removeBoardMember": "as tirat lo participant __member__ del tablèu __board__",
|
||||
"act-restoredCard": "as restorat la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-unjoinMember": "as tirat lo participant __member__ de la carta __card__ de la tièra __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"act-withBoardTitle": "__tablèu__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Accions",
|
||||
"activities": "Activitats",
|
||||
"activity": "Activitat",
|
||||
"activity-added": "as apondut %s a %s",
|
||||
"activity-archived": "%s desplaçat cap a Archius",
|
||||
"activity-attached": "as ligat %s a %s",
|
||||
"activity-created": "as creat %s",
|
||||
"activity-customfield-created": "as creat lo camp personalizat %s",
|
||||
"activity-excluded": "as exclús %s de %s",
|
||||
"activity-imported": "as importat %s cap a %s dempuèi %s",
|
||||
"activity-imported-board": "as importat %s dempuèi %s",
|
||||
"activity-joined": "as rejonch %s",
|
||||
"activity-moved": "as desplaçat %s dempuèi %s cap a %s",
|
||||
"activity-on": "sus %s",
|
||||
"activity-removed": "as tirat %s de %s",
|
||||
"activity-sent": "as mandat %s cap a %s",
|
||||
"activity-unjoined": "as quitat %s",
|
||||
"activity-subtask-added": "as apondut una jos-tasca a %s",
|
||||
"activity-checked-item": "as croiat %s dins la checklist %s de %s",
|
||||
"activity-unchecked-item": "as descroiat %s dins la checklist %s de %s",
|
||||
"activity-checklist-added": "as apondut a checklist a %s",
|
||||
"activity-checklist-removed": "as tirat la checklist de %s",
|
||||
"activity-checklist-completed": "as acabat la checklist __checklist__ de la carta __card__ de la lista __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"activity-checklist-uncompleted": "as rendut incomplet la checklist %s de %s",
|
||||
"activity-checklist-item-added": "as apondut un element a la checklist '%s' dins %s",
|
||||
"activity-checklist-item-removed": "as tirat un element a la checklist '%s' dins %s",
|
||||
"add": "Apondre",
|
||||
"activity-checked-item-card": "as croiat %s dins la checklist %s",
|
||||
"activity-unchecked-item-card": "as descroiat %s dins la checklist %s",
|
||||
"activity-checklist-completed-card": "as acabat la checklist__checklist__ de la carta __card__ de la lista __list__ del corredor __swimlane__ del tablèu __board__",
|
||||
"activity-checklist-uncompleted-card": "as rendut incomplet la checklist %s",
|
||||
"add-attachment": "Apondre una pèça joncha",
|
||||
"add-board": "Apondre un tablèu",
|
||||
"add-card": "Apondre una carta",
|
||||
"add-swimlane": "Apondre un corredor",
|
||||
"add-subtask": "Apondre una jos-tasca",
|
||||
"add-checklist": "Apondre una checklist",
|
||||
"add-checklist-item": "Apondre un element a la checklist",
|
||||
"add-cover": "Apondre una cobèrta",
|
||||
"add-label": "Apondre una etiqueta",
|
||||
"add-list": "Apondre una tièra",
|
||||
"add-members": "Apondre un participant",
|
||||
"added": "Apondut",
|
||||
"addMemberPopup-title": "Participants",
|
||||
"admin": "Administartor",
|
||||
"admin-desc": "As lo drech de legir e modificar las cartas, tirar de participants, e modificar las opcions del tablèu.",
|
||||
"admin-announcement": "Anóncia",
|
||||
"admin-announcement-active": "Activar l'anóncia globala",
|
||||
"admin-announcement-title": "Anóncia de l'administrator",
|
||||
"all-boards": "Totes los tablèus",
|
||||
"and-n-other-card": "E __comptar__ carta de mai",
|
||||
"and-n-other-card_plural": "E __comptar__ cartas de mai",
|
||||
"apply": "Aplicar",
|
||||
"app-is-offline": "Cargament, vos cal esperar. Refrescar la pagina vos va far perdre vòstre trabalh. Se lo cargament es tròp long, vos cal agachar se lo servidor es pas blocat/arrestat.",
|
||||
"archive": "Archivar",
|
||||
"archive-all": "Archivar tot",
|
||||
"archive-board": "Archivar lo tablèu",
|
||||
"archive-card": "Archivar la carta",
|
||||
"archive-list": "Archivar la tièra",
|
||||
"archive-swimlane": "Archivar lo corredor",
|
||||
"archive-selection": "Archivar la seleccion",
|
||||
"archiveBoardPopup-title": "Archivar lo tablèu?",
|
||||
"archived-items": "Archius",
|
||||
"archived-boards": "Tablèu archivat",
|
||||
"restore-board": "Restaurar lo tablèu",
|
||||
"no-archived-boards": "Pas de tablèu archivat.",
|
||||
"archives": "Archivar",
|
||||
"template": "Modèl",
|
||||
"templates": "Modèls",
|
||||
"assign-member": "Affectar un participant",
|
||||
"attached": "jónher",
|
||||
"attachment": "pèça joncha",
|
||||
"attachment-delete-pop": "Tirar una pèça joncha es defenitiu.",
|
||||
"attachmentDeletePopup-title": "Tirar la pèça joncha ?",
|
||||
"attachments": "Pèças jonchas",
|
||||
"auto-watch": "Survelhar automaticament lo tablèu un còp creat",
|
||||
"avatar-too-big": "L'imatge es tròp pesuc (70KB max)",
|
||||
"back": "Tornar",
|
||||
"board-change-color": "Cambiar de color",
|
||||
"board-nb-stars": "%s estèla",
|
||||
"board-not-found": "Tablèu pas trapat",
|
||||
"board-private-info": "Aqueste tablèu serà <strong>privat</strong>.",
|
||||
"board-public-info": "Aqueste tablèu serà <strong>public</strong>.",
|
||||
"boardChangeColorPopup-title": "Cambiar lo fons del tablèu",
|
||||
"boardChangeTitlePopup-title": "Tornar nomenar lo tablèu",
|
||||
"boardChangeVisibilityPopup-title": "Cambiar la visibilitat",
|
||||
"boardChangeWatchPopup-title": "Cambiar lo seguit",
|
||||
"boardMenuPopup-title": "Opcions del tablèu",
|
||||
"boards": "Tablèus",
|
||||
"board-view": "Presentacion del tablèu",
|
||||
"board-view-cal": "Calendièr",
|
||||
"board-view-swimlanes": "Corredor",
|
||||
"board-view-lists": "Tièras",
|
||||
"bucket-example": "Coma \"Tota la tièra\" per exemple",
|
||||
"cancel": "Tornar",
|
||||
"card-archived": "Aquesta carta es desplaçada dins Archius",
|
||||
"board-archived": "Aqueste tablèu esdesplaçat dins Archius",
|
||||
"card-comments-title": "Aquesta carta a %s de comentaris.",
|
||||
"card-delete-notice": "Un còp tirat, pas de posibilitat de tornar enrè",
|
||||
"card-delete-pop": "Totes las accions van èsser quitadas del seguit d'activitat e poiretz pas mai utilizar aquesta carta.",
|
||||
"card-delete-suggest-archive": "Podètz desplaçar una carta dins Archius per la quitar del tablèu e gardar las activitats.",
|
||||
"card-due": "esperat",
|
||||
"card-due-on": "esperat per",
|
||||
"card-spent": "Temps passat",
|
||||
"card-edit-attachments": "Cambiar las pèças jonchas",
|
||||
"card-edit-custom-fields": "Cambiar los camps personalizats",
|
||||
"card-edit-labels": "Cambiar los labèls",
|
||||
"card-edit-members": "Cambiar los participants",
|
||||
"card-labels-title": "Cambiar l'etiqueta de la carta.",
|
||||
"card-members-title": "Apondre o quitar de participants a la carta. ",
|
||||
"card-start": "Debuta",
|
||||
"card-start-on": "Debuta lo",
|
||||
"cardAttachmentsPopup-title": "Apondut dempuèi",
|
||||
"cardCustomField-datePopup-title": "Cambiar la data",
|
||||
"cardCustomFieldsPopup-title": "Cambiar los camps personalizats",
|
||||
"cardDeletePopup-title": "Suprimir la carta?",
|
||||
"cardDetailsActionsPopup-title": "Accions sus la carta",
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Participants",
|
||||
"cardMorePopup-title": "Mai",
|
||||
"cardTemplatePopup-title": "Crear un modèl",
|
||||
"cards": "Cartas",
|
||||
"cards-count": "Cartas",
|
||||
"casSignIn": "Vos connectar amb CAS",
|
||||
"cardType-card": "Carta",
|
||||
"cardType-linkedCard": "Carta ligada",
|
||||
"cardType-linkedBoard": "Tablèu ligat",
|
||||
"change": "Cambiar",
|
||||
"change-avatar": "Cambiar la fòto",
|
||||
"change-password": "Cambiar lo mot de Santa-Clara",
|
||||
"change-permissions": "Cambiar las permissions",
|
||||
"change-settings": "Cambiar los paramètres",
|
||||
"changeAvatarPopup-title": "Cambiar la fòto",
|
||||
"changeLanguagePopup-title": "Cambiar la lenga",
|
||||
"changePasswordPopup-title": "Cambiar lo mot de Santa-Clara",
|
||||
"changePermissionsPopup-title": "Cambiar las permissions",
|
||||
"changeSettingsPopup-title": "Cambiar los paramètres",
|
||||
"subtasks": "Jos-tasca",
|
||||
"checklists": "Checklistas",
|
||||
"click-to-star": "Apondre lo tablèu als favorits",
|
||||
"click-to-unstar": "Quitar lo tablèu dels favorits",
|
||||
"clipboard": "Copiar o far limpar",
|
||||
"close": "Tampar",
|
||||
"close-board": "Tampar lo tablèu",
|
||||
"close-board-pop": "Podètz tornar activar lo tablèu dempuèi la pagina d'acuèlh.",
|
||||
"color-black": "negre",
|
||||
"color-blue": "blau",
|
||||
"color-crimson": "purple clar",
|
||||
"color-darkgreen": "verd fonçat",
|
||||
"color-gold": "aur",
|
||||
"color-gray": "gris",
|
||||
"color-green": "verd",
|
||||
"color-indigo": "indi",
|
||||
"color-lime": "jaune clar",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "ròse clar",
|
||||
"color-navy": "blau marin",
|
||||
"color-orange": "irange",
|
||||
"color-paleturquoise": "turqués",
|
||||
"color-peachpuff": "persèc",
|
||||
"color-pink": "ròsa",
|
||||
"color-plum": "pruna",
|
||||
"color-purple": "violet",
|
||||
"color-red": "roge",
|
||||
"color-saddlebrown": "castanh",
|
||||
"color-silver": "argent",
|
||||
"color-sky": "blau clar",
|
||||
"color-slateblue": "blau lausa",
|
||||
"color-white": "blanc",
|
||||
"color-yellow": "jaune",
|
||||
"unset-color": "pas reglat",
|
||||
"comment": "Comentari",
|
||||
"comment-placeholder": "Escrire un comentari",
|
||||
"comment-only": "Comentari solament",
|
||||
"comment-only-desc": "Comentari sus las cartas solament.",
|
||||
"no-comments": "Pas cap de comentari",
|
||||
"no-comments-desc": "Podèts pas veire ni los comentaris ni las activitats",
|
||||
"computer": "Ordenator",
|
||||
"confirm-subtask-delete-dialog": "Sètz segur de voler quitar aquesta jos-tasca?",
|
||||
"confirm-checklist-delete-dialog": "Sètz segur de voler quitar aquesta checklist?",
|
||||
"copy-card-link-to-clipboard": "Còpia del ligam de la carta",
|
||||
"linkCardPopup-title": "Ligam de la carta",
|
||||
"searchElementPopup-title": "Cèrca",
|
||||
"copyCardPopup-title": "Còpia de la carta",
|
||||
"copyChecklistToManyCardsPopup-title": "Còpia del modèl de checklist cap a mai d'una carta",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Un compte es estat creat per vos sus ",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Títol de la primièra carta\", \"description\":\"Descripcion de la primièra carta\"}, {\"title\":\"Títol de la segonda carta\",\"description\":\"Descripcion de la segonda carta\"},{\"title\":\"Títol de la darrièra carta\",\"description\":\"Descripcion de la darrièra carta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear un tablèu",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablèu",
|
||||
"createLabelPopup-title": "Crear una etiqueta",
|
||||
"createCustomField": "Crear un camp",
|
||||
"createCustomFieldPopup-title": "Crear un camp",
|
||||
"current": "actual",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Casa de croiar",
|
||||
"custom-field-date": "Data",
|
||||
"custom-field-dropdown": "Tièra de causidas",
|
||||
"custom-field-dropdown-none": "(pas res)",
|
||||
"custom-field-dropdown-options": "Opcions de la tièra",
|
||||
"custom-field-dropdown-options-placeholder": "Apiejar sus \"Enter\" per apondre d'opcions",
|
||||
"custom-field-dropdown-unknown": "(desconegut)",
|
||||
"custom-field-number": "Nombre",
|
||||
"custom-field-text": "Tèxte",
|
||||
"custom-fields": "Camps personalizats",
|
||||
"date": "Data",
|
||||
"decline": "Refusar",
|
||||
"default-avatar": "Fòto per defaut",
|
||||
"delete": "Suprimir",
|
||||
"deleteCustomFieldPopup-title": "Tirar lo camp personalizat?",
|
||||
"deleteLabelPopup-title": "Tirar l'etiqueta?",
|
||||
"description": "Descripcion",
|
||||
"disambiguateMultiLabelPopup-title": "Precisar l'accion de l'etiqueta",
|
||||
"disambiguateMultiMemberPopup-title": "Precisar l'accion del participant",
|
||||
"discard": "Botar dins l'escobilha",
|
||||
"done": "Acabat",
|
||||
"download": "Telecargar",
|
||||
"edit": "Modificar",
|
||||
"edit-avatar": "Cambiar la fòto",
|
||||
"edit-profile": "Modificar lo perfil",
|
||||
"edit-wip-limit": "Modificar la WIP limit",
|
||||
"soft-wip-limit": "Leugièr WIP limit",
|
||||
"editCardStartDatePopup-title": "Cambiar la data de debuta",
|
||||
"editCardDueDatePopup-title": "Cambiar la data de fin",
|
||||
"editCustomFieldPopup-title": "Modificar los camps",
|
||||
"editCardSpentTimePopup-title": "Cambiar lo temp passat",
|
||||
"editLabelPopup-title": "Cambiar l'etiqueta",
|
||||
"editNotificationPopup-title": "Modificar la notificacion",
|
||||
"editProfilePopup-title": "Modificar lo perfil",
|
||||
"email": "Corrièl",
|
||||
"email-enrollAccount-subject": "Vòstre compte es ara activat pel sit __siteName__",
|
||||
"email-enrollAccount-text": "Adieu __user__,\n\nPer comença d'utilizar lo servici, vos cal clicar sul ligam.\n\n__url__\n\nMercé.",
|
||||
"email-fail": "Pas possible de mandar lo corrièl",
|
||||
"email-fail-text": "Error per mandar lo corrièl",
|
||||
"email-invalid": "L'adreça corrièl es pas valida",
|
||||
"email-invite": "Convidar per corrièl",
|
||||
"email-invite-subject": "__inviter__ vos as mandat un convit",
|
||||
"email-invite-text": "Car __user__,\n\n__inviter__ vos a convidat per jónher lo tablèu \"__board__\".\n\nVos cal clicar sul ligam:\n\n__url__\n\nMercé.",
|
||||
"email-resetPassword-subject": "Tornar inicializar vòstre mot de Santa-Clara de sit __siteName__",
|
||||
"email-resetPassword-text": "Adieu __user__,\n\nPer tornar inicializar vòstre mot de Santa-Clara vos cal clicar sul ligam :\n\n__url__\n\nMercé.",
|
||||
"email-sent": "Mail mandat",
|
||||
"email-verifyEmail-subject": "Vos cal verificar vòstra adreça corrièl del sit __siteName__",
|
||||
"email-verifyEmail-text": "Adieu __user__,\n\nPer verificar vòstra adreça corrièl, vos cal clicar sul ligam :\n\n__url__\n\nMercé.",
|
||||
"enable-wip-limit": "Activar la WIP limit",
|
||||
"error-board-doesNotExist": "Aqueste tablèu existís pas",
|
||||
"error-board-notAdmin": "Devètz èsser un administrator del tablèu per far aquò ",
|
||||
"error-board-notAMember": "Devètz èsser un participant del tablèu per far aquò",
|
||||
"error-json-malformed": "Vòstre tèxte es pas valid JSON",
|
||||
"error-json-schema": "Vòstre JSON es pas al format correct ",
|
||||
"error-list-doesNotExist": "Aqueste tièra existís pas",
|
||||
"error-user-doesNotExist": "Aqueste utilizator existís pas",
|
||||
"error-user-notAllowSelf": "Vos podètz pas convidar vautres meteisses",
|
||||
"error-user-notCreated": "Aqueste utilizator es pas encara creat",
|
||||
"error-username-taken": "Lo nom es ja pres",
|
||||
"error-email-taken": "Lo corrièl es ja pres ",
|
||||
"export-board": "Exportar lo tablèu",
|
||||
"filter": "Filtre",
|
||||
"filter-cards": "Filtre cartas",
|
||||
"filter-clear": "Escafar lo filtre",
|
||||
"filter-no-label": "Pas cap d'etiqueta",
|
||||
"filter-no-member": "Pas cap de participant",
|
||||
"filter-no-custom-fields": "Pas de camp personalizat",
|
||||
"filter-on": "Lo filtre es activat",
|
||||
"filter-on-desc": "Filtratz las cartas dins aqueste tablèu. Picar aquí per editar los filtres",
|
||||
"filter-to-selection": "Filtrar la seleccion",
|
||||
"advanced-filter-label": "Filtre avançat",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Retorn a vòstra pagina de tablèus",
|
||||
"hide-system-messages": "Amagar los messatges sistèm",
|
||||
"headerBarCreateBoardPopup-title": "Crear un tablèu",
|
||||
"home": "Acuèlh",
|
||||
"import": "Importar",
|
||||
"link": "Ligar",
|
||||
"import-board": "Importar un tablèu",
|
||||
"import-board-c": "Importar un tablèu",
|
||||
"import-board-title-trello": "Importar un tablèu dempuèi Trello",
|
||||
"import-board-title-wekan": "Importar un tablèu dempuèi un export passat",
|
||||
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
|
||||
"import-sandstorm-warning": "Importar lo tablèu va quitar totes las donadas del tablèu e lo va remplaçar amb las donadas del tablèu importat.",
|
||||
"from-trello": "Dempuèi Trello",
|
||||
"from-wekan": "Dempuèi un export passat",
|
||||
"import-board-instruction-trello": "Dins vòstre tablèu Trello, vos cal anar dins \"Menut\", puèi \"Mai\", \"Export\", \"Export JSON\", e copiar lo tèxte balhat.",
|
||||
"import-board-instruction-wekan": "Dins vòstre tablèu, vos cal anar dins \"Menut\", puèi \"Exportar lo tablèu\", e de copiar lo tèxte del fichièr telecargat.",
|
||||
"import-board-instruction-about-errors": "Se avètz de errors al moment d'importar un tablèu, es possible que l'importacion as fonccionat, lo tablèu es belèu a la pagina \"Totes los tablèus\".",
|
||||
"import-json-placeholder": "Pegar las donadas del fichièr JSON aicí",
|
||||
"import-map-members": "Mapa dels participants",
|
||||
"import-members-map": "Lo tablèu qu'avètz importat as ja de participants, vos cal far la migracion amb los utilizators actual",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
"import-user-select": "Pick your existing user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Seleccionar un participant",
|
||||
"info": "Vesion",
|
||||
"initials": "Data inicala",
|
||||
"invalid-date": "Data invalida",
|
||||
"invalid-time": "Temps invalid",
|
||||
"invalid-user": "Participant invalid",
|
||||
"joined": "Jónher",
|
||||
"just-invited": "Sètz just convidat dins aqueste tablèu",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
"label-create": "Crear una etiqueta",
|
||||
"label-default": "%s label (default)",
|
||||
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
|
||||
"labels": "Etiquetas",
|
||||
"language": "Lenga",
|
||||
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
|
||||
"leave-board": "Leave Board",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Ligam per aquesta carta",
|
||||
"list-archive-cards": "Mandar totas las cartas d'aquesta lista dins Archius",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
|
||||
"list-move-cards": "Mandar totas las cartas dins aquesta lista",
|
||||
"list-select-cards": "Seleccionar totas las cartas dins aquesta lista",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "Tièra de las accions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Importar una carta de Trello",
|
||||
"listMorePopup-title": "Mai",
|
||||
"link-list": "Ligam d'aquesta lista",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
|
||||
"lists": "Tièras",
|
||||
"swimlanes": "Corredor",
|
||||
"log-out": "Desconnexion",
|
||||
"log-in": "Connexion",
|
||||
"loginPopup-title": "Connexion",
|
||||
"memberMenuPopup-title": "Paramètres dels participants",
|
||||
"members": "Participants",
|
||||
"menu": "Menut",
|
||||
"move-selection": "Bolegar la seleccion",
|
||||
"moveCardPopup-title": "Bolegar la carta",
|
||||
"moveCardToBottom-title": "Bolegar cap al bas",
|
||||
"moveCardToTop-title": "Bolegar cap al naut",
|
||||
"moveSelectionPopup-title": "Bolegar la seleccion",
|
||||
"multi-selection": "Multi-seleccion",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Silenciós",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
"my-boards": "Mon tablèu",
|
||||
"name": "Nom",
|
||||
"no-archived-cards": "Pas cap de carta dins Archius",
|
||||
"no-archived-lists": "Pas cap de lista dins Archius",
|
||||
"no-archived-swimlanes": "Pas cap de corredor dins Archius",
|
||||
"no-results": "Pas brica de resultat",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Can view and edit cards. Can't change settings.",
|
||||
"not-accepted-yet": "Invitation not accepted yet",
|
||||
"notify-participate": "Receive updates to any cards you participate as creater or member",
|
||||
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
|
||||
"optional": "opcional",
|
||||
"or": "o",
|
||||
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
|
||||
"page-not-found": "Pagina pas trapada",
|
||||
"password": "Mot de Santa-Clara",
|
||||
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
|
||||
"participating": "Participating",
|
||||
"preview": "Apercebut",
|
||||
"previewAttachedImagePopup-title": "Apercebut",
|
||||
"previewClipboardImagePopup-title": "Apercebut",
|
||||
"private": "Privat",
|
||||
"private-desc": "Aqueste tablèu es privat. Solament las personas apondudas a aquete tablèu lo pòdon veire e editar.",
|
||||
"profile": "Perfil",
|
||||
"public": "Public",
|
||||
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
|
||||
"quick-access-description": "Star a board to add a shortcut in this bar.",
|
||||
"remove-cover": "Remove Cover",
|
||||
"remove-from-board": "Quitar lo tablèu",
|
||||
"remove-label": "Quitar l'etiqueta",
|
||||
"listDeletePopup-title": "Suprimir la lista ?",
|
||||
"remove-member": "Quitar lo participant",
|
||||
"remove-member-from-card": "Quitar aquesta carta",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Remove Member?",
|
||||
"rename": "Tornar nomenar",
|
||||
"rename-board": "Tornar nomenar lo tablèu",
|
||||
"restore": "Restore",
|
||||
"save": "Salvar",
|
||||
"search": "Cèrca",
|
||||
"rules": "Règlas",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Color causida",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Autocomplete members",
|
||||
"shortcut-clear-filters": "Clear all filters",
|
||||
"shortcut-close-dialog": "Tampar lo dialòg",
|
||||
"shortcut-filter-my-cards": "Filter my cards",
|
||||
"shortcut-show-shortcuts": "Bring up this shortcuts list",
|
||||
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
|
||||
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
|
||||
"show-cards-minimum-count": "Show cards count if list contains more than",
|
||||
"sidebar-open": "Open Sidebar",
|
||||
"sidebar-close": "Close Sidebar",
|
||||
"signupPopup-title": "Create an Account",
|
||||
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
|
||||
"starred-boards": "Starred Boards",
|
||||
"starred-boards-description": "Starred boards show up at the top of your boards list.",
|
||||
"subscribe": "Subscribe",
|
||||
"team": "Còla",
|
||||
"this-board": "Aqueste tablèu",
|
||||
"this-card": "aquesta carta",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Temps",
|
||||
"title": "Títol",
|
||||
"tracking": "Tracking",
|
||||
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
|
||||
"type": "Mena",
|
||||
"unassign-member": "Unassign member",
|
||||
"unsaved-description": "You have an unsaved description.",
|
||||
"unwatch": "Unwatch",
|
||||
"upload": "Telecargar",
|
||||
"upload-avatar": "Telecargar un avatar",
|
||||
"uploaded-avatar": "Avatar telecargat",
|
||||
"username": "Username",
|
||||
"view-it": "View it",
|
||||
"warn-list-archived": "warning: this card is in an list at Archive",
|
||||
"watch": "Agachar",
|
||||
"watching": "Agachat",
|
||||
"watching-info": "You will be notified of any change in this board",
|
||||
"welcome-board": "Tablèu de benvenguda",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"card-templates-swimlane": "Card Templates",
|
||||
"list-templates-swimlane": "List Templates",
|
||||
"board-templates-swimlane": "Board Templates",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Paramètres",
|
||||
"people": "Personas",
|
||||
"registration": "Registration",
|
||||
"disable-self-registration": "Disable Self-Registration",
|
||||
"invite": "Convidar",
|
||||
"invite-people": "Convidat",
|
||||
"to-boards": "To board(s)",
|
||||
"email-addresses": "Adreça corrièl",
|
||||
"smtp-host-description": "The address of the SMTP server that handles your emails.",
|
||||
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
|
||||
"smtp-tls-description": "Enable TLS support for SMTP server",
|
||||
"smtp-host": "SMTP Host",
|
||||
"smtp-port": "SMTP Port",
|
||||
"smtp-username": "Username",
|
||||
"smtp-password": "Mot de Santa-Clara",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "From",
|
||||
"send-smtp-test": "Se mandar un corrièl d'ensag",
|
||||
"invitation-code": "Còde de convit",
|
||||
"email-invite-register-subject": "__inviter__ vos a mandat un convit",
|
||||
"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-smtp-test-text": "As capitat de mandar un corrièl",
|
||||
"error-invitation-code-not-exist": "Lo còde de convit existís pas",
|
||||
"error-notAuthorized": "Sès pas autorizat a agachar aquesta pagina",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"boardCardTitlePopup-title": "Card Title Filter",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(Desconegut)",
|
||||
"Node_version": "Node version",
|
||||
"OS_Arch": "OS Arch",
|
||||
"OS_Cpus": "OS CPU Count",
|
||||
"OS_Freemem": "OS Free Memory",
|
||||
"OS_Loadavg": "OS Load Average",
|
||||
"OS_Platform": "OS Platform",
|
||||
"OS_Release": "OS Release",
|
||||
"OS_Totalmem": "OS Total Memory",
|
||||
"OS_Type": "OS Type",
|
||||
"OS_Uptime": "OS Uptime",
|
||||
"days": "jorns",
|
||||
"hours": "oras",
|
||||
"minutes": "minutas",
|
||||
"seconds": "segondas",
|
||||
"show-field-on-card": "Show this field on card",
|
||||
"automatically-field-on-card": "Auto create field to all cards",
|
||||
"showLabel-field-on-card": "Show field label on minicard",
|
||||
"yes": "Òc",
|
||||
"no": "Non",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"accounts-allowUserNameChange": "Allow Username Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verificat",
|
||||
"active": "Avtivat",
|
||||
"card-received": "Recebut",
|
||||
"card-received-on": "Received on",
|
||||
"card-end": "Fin",
|
||||
"card-end-on": "Ends on",
|
||||
"editCardReceivedDatePopup-title": "Change received date",
|
||||
"editCardEndDatePopup-title": "Change end date",
|
||||
"setCardColorPopup-title": "Color seleccionada",
|
||||
"setCardActionsColorPopup-title": "Causir una color",
|
||||
"setSwimlaneColorPopup-title": "Causir una color",
|
||||
"setListColorPopup-title": "Causir una color",
|
||||
"assigned-by": "Assigned By",
|
||||
"requested-by": "Requested By",
|
||||
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
|
||||
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
|
||||
"boardDeletePopup-title": "Suprimir lo tablèu ?",
|
||||
"delete-board": "Tablèu suprimit",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
|
||||
"show-subtasks-field": "Cards can have subtasks",
|
||||
"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:",
|
||||
"prefix-with-full-path": "Prefix with full path",
|
||||
"prefix-with-parent": "Prefix with parent",
|
||||
"subtext-with-full-path": "Subtext with full path",
|
||||
"subtext-with-parent": "Subtext with parent",
|
||||
"change-card-parent": "Change card's parent",
|
||||
"parent-card": "Parent card",
|
||||
"source-board": "Source board",
|
||||
"no-parent": "Don't show parent",
|
||||
"activity-added-label": "added label '%s' to %s",
|
||||
"activity-removed-label": "removed label '%s' from %s",
|
||||
"activity-delete-attach": "deleted an attachment from %s",
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
"r-board-rules": "Board rules",
|
||||
"r-add-rule": "Add rule",
|
||||
"r-view-rule": "View rule",
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
"set-filter": "Set Filter",
|
||||
"r-moved-to": "Moved to",
|
||||
"r-moved-from": "Moved from",
|
||||
"r-archived": "Moved to Archive",
|
||||
"r-unarchived": "Restored from Archive",
|
||||
"r-a-card": "a card",
|
||||
"r-when-a-label-is": "When a label is",
|
||||
"r-when-the-label-is": "When the label is",
|
||||
"r-list-name": "list name",
|
||||
"r-when-a-member": "When a member is",
|
||||
"r-when-the-member": "When the member",
|
||||
"r-name": "name",
|
||||
"r-when-a-attach": "When an attachment",
|
||||
"r-when-a-checklist": "When a checklist is",
|
||||
"r-when-the-checklist": "When the checklist",
|
||||
"r-completed": "Completed",
|
||||
"r-made-incomplete": "Made incomplete",
|
||||
"r-when-a-item": "When a checklist item is",
|
||||
"r-when-the-item": "When the checklist item",
|
||||
"r-checked": "Checked",
|
||||
"r-unchecked": "Unchecked",
|
||||
"r-move-card-to": "Move card to",
|
||||
"r-top-of": "Top of",
|
||||
"r-bottom-of": "Bottom of",
|
||||
"r-its-list": "its list",
|
||||
"r-archive": "Desplaçar cap a Archius",
|
||||
"r-unarchive": "Restore from Archive",
|
||||
"r-card": "card",
|
||||
"r-add": "Apondre",
|
||||
"r-remove": "Remove",
|
||||
"r-label": "label",
|
||||
"r-member": "member",
|
||||
"r-remove-all": "Remove all members from the card",
|
||||
"r-set-color": "Set color to",
|
||||
"r-checklist": "checklist",
|
||||
"r-check-all": "Check all",
|
||||
"r-uncheck-all": "Uncheck all",
|
||||
"r-items-check": "items of checklist",
|
||||
"r-check": "Check",
|
||||
"r-uncheck": "Uncheck",
|
||||
"r-item": "item",
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
"r-d-move-to-top-spec": "Move card to top of list",
|
||||
"r-d-move-to-bottom-gen": "Move card to bottom of its list",
|
||||
"r-d-move-to-bottom-spec": "Move card to bottom of list",
|
||||
"r-d-send-email": "Send email",
|
||||
"r-d-send-email-to": "to",
|
||||
"r-d-send-email-subject": "subject",
|
||||
"r-d-send-email-message": "message",
|
||||
"r-d-archive": "Move card to Archive",
|
||||
"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-in-list": "in list",
|
||||
"r-in-swimlane": "in swimlane",
|
||||
"r-d-add-member": "Add member",
|
||||
"r-d-remove-member": "Remove member",
|
||||
"r-d-remove-all-member": "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-of-list": "of checklist",
|
||||
"r-d-add-checklist": "Add checklist",
|
||||
"r-d-remove-checklist": "Remove checklist",
|
||||
"r-by": "by",
|
||||
"r-add-checklist": "Add checklist",
|
||||
"r-with-items": "with items",
|
||||
"r-items-list": "item1,item2,item3",
|
||||
"r-add-swimlane": "Add swimlane",
|
||||
"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",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
"authentication-method": "Authentication method",
|
||||
"authentication-type": "Authentication type",
|
||||
"custom-product-name": "Custom Product Name",
|
||||
"layout": "Layout",
|
||||
"hide-logo": "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",
|
||||
"error-ldap-login": "An error occurred while trying to login",
|
||||
"display-authentication-method": "Display Authentication Method",
|
||||
"default-authentication-method": "Default Authentication Method"
|
||||
}
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "dodał(a) etykietę '%s'",
|
||||
"activity-removed-label-card": "usunięto etykietę '%s'",
|
||||
"activity-delete-attach-card": "usunięto załącznik",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Reguła",
|
||||
"r-add-trigger": "Dodaj przełącznik",
|
||||
"r-add-action": "Dodaj czynność",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "adicionada etiqueta '%s'",
|
||||
"activity-removed-label-card": "removida etiqueta '%s'",
|
||||
"activity-delete-attach-card": "excluido um anexo",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Regra",
|
||||
"r-add-trigger": "Adicionar gatilho",
|
||||
"r-add-action": "Adicionar ação",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "добавил метку '%s'",
|
||||
"activity-removed-label-card": "удалил метку '%s'",
|
||||
"activity-delete-attach-card": "удалил вложение",
|
||||
"activity-set-customfield": "сменил значение поля '%s' на '%s' в карточке %s",
|
||||
"activity-unset-customfield": "очистил поле '%s' в карточке %s",
|
||||
"r-rule": "Правило",
|
||||
"r-add-trigger": "Задать условие",
|
||||
"r-add-action": "Задать действие",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "lade till etiketten \"%s\"",
|
||||
"activity-removed-label-card": "tog bort etiketten \"%s\"",
|
||||
"activity-delete-attach-card": "tog bort en bilaga",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Regel",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Lägg till åtgärd",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "etiket eklendi '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "Ek silindi",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Kural",
|
||||
"r-add-trigger": "Tetikleyici ekle",
|
||||
"r-add-action": "Eylem ekle",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "已添加标签 '%s'",
|
||||
"activity-removed-label-card": "已移除标签 '%s'",
|
||||
"activity-delete-attach-card": "已删除附件",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "规则",
|
||||
"r-add-trigger": "添加触发器",
|
||||
"r-add-action": "添加行动",
|
||||
|
||||
@@ -567,6 +567,8 @@
|
||||
"activity-added-label-card": "added label '%s'",
|
||||
"activity-removed-label-card": "removed label '%s'",
|
||||
"activity-delete-attach-card": "deleted an attachment",
|
||||
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
|
||||
"activity-unset-customfield": "unset custom field '%s' in %s",
|
||||
"r-rule": "Rule",
|
||||
"r-add-trigger": "Add trigger",
|
||||
"r-add-action": "Add action",
|
||||
|
||||
+15
-9
@@ -113,9 +113,11 @@ if (Meteor.isServer) {
|
||||
}
|
||||
if (activity.oldBoardId) {
|
||||
const oldBoard = activity.oldBoard();
|
||||
watchers = _.union(watchers, oldBoard.watchers || []);
|
||||
params.oldBoard = oldBoard.title;
|
||||
params.oldBoardId = activity.oldBoardId;
|
||||
if (oldBoard) {
|
||||
watchers = _.union(watchers, oldBoard.watchers || []);
|
||||
params.oldBoard = oldBoard.title;
|
||||
params.oldBoardId = activity.oldBoardId;
|
||||
}
|
||||
}
|
||||
if (activity.memberId) {
|
||||
participants = _.union(participants, [activity.memberId]);
|
||||
@@ -129,15 +131,19 @@ if (Meteor.isServer) {
|
||||
}
|
||||
if (activity.oldListId) {
|
||||
const oldList = activity.oldList();
|
||||
watchers = _.union(watchers, oldList.watchers || []);
|
||||
params.oldList = oldList.title;
|
||||
params.oldListId = activity.oldListId;
|
||||
if (oldList) {
|
||||
watchers = _.union(watchers, oldList.watchers || []);
|
||||
params.oldList = oldList.title;
|
||||
params.oldListId = activity.oldListId;
|
||||
}
|
||||
}
|
||||
if (activity.oldSwimlaneId) {
|
||||
const oldSwimlane = activity.oldSwimlane();
|
||||
watchers = _.union(watchers, oldSwimlane.watchers || []);
|
||||
params.oldSwimlane = oldSwimlane.title;
|
||||
params.oldSwimlaneId = activity.oldSwimlaneId;
|
||||
if (oldSwimlane) {
|
||||
watchers = _.union(watchers, oldSwimlane.watchers || []);
|
||||
params.oldSwimlane = oldSwimlane.title;
|
||||
params.oldSwimlaneId = activity.oldSwimlaneId;
|
||||
}
|
||||
}
|
||||
if (activity.cardId) {
|
||||
const card = activity.card();
|
||||
|
||||
@@ -1400,6 +1400,56 @@ function cardLabels(userId, doc, fieldNames, modifier) {
|
||||
}
|
||||
}
|
||||
|
||||
function cardCustomFields(userId, doc, fieldNames, modifier) {
|
||||
if (!_.contains(fieldNames, 'customFields'))
|
||||
return;
|
||||
|
||||
// Say hello to the new customField value
|
||||
if (modifier.$set) {
|
||||
_.each(modifier.$set, (value, key) => {
|
||||
if (key.startsWith('customFields')) {
|
||||
const dotNotation = key.split('.');
|
||||
|
||||
// only individual changes are registered
|
||||
if (dotNotation.length > 1) {
|
||||
const customFieldId = doc.customFields[dotNotation[1]]._id;
|
||||
const act = {
|
||||
userId,
|
||||
customFieldId,
|
||||
value,
|
||||
activityType: 'setCustomField',
|
||||
boardId: doc.boardId,
|
||||
cardId: doc._id,
|
||||
};
|
||||
Activities.insert(act);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Say goodbye to the former customField value
|
||||
if (modifier.$unset) {
|
||||
_.each(modifier.$unset, (value, key) => {
|
||||
if (key.startsWith('customFields')) {
|
||||
const dotNotation = key.split('.');
|
||||
|
||||
// only individual changes are registered
|
||||
if (dotNotation.length > 1) {
|
||||
const customFieldId = doc.customFields[dot_notation[1]]._id;
|
||||
const act = {
|
||||
userId,
|
||||
customFieldId,
|
||||
activityType: 'unsetCustomField',
|
||||
boardId: doc.boardId,
|
||||
cardId: doc._id,
|
||||
};
|
||||
Activities.insert(act);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function cardCreation(userId, doc) {
|
||||
Activities.insert({
|
||||
userId,
|
||||
@@ -1471,6 +1521,11 @@ if (Meteor.isServer) {
|
||||
cardLabels(userId, doc, fieldNames, modifier);
|
||||
});
|
||||
|
||||
// Add a new activity if we edit a custom field
|
||||
Cards.before.update((userId, doc, fieldNames, modifier) => {
|
||||
cardCustomFields(userId, doc, fieldNames, modifier);
|
||||
});
|
||||
|
||||
// Remove all activities associated with a card if we remove the card
|
||||
// Remove also card_comments / checklists / attachments
|
||||
Cards.after.remove((userId, doc) => {
|
||||
|
||||
+12
-12
@@ -99,17 +99,6 @@ function itemCreation(userId, doc) {
|
||||
}
|
||||
|
||||
function itemRemover(userId, doc) {
|
||||
const card = Cards.findOne(doc.cardId);
|
||||
const boardId = card.boardId;
|
||||
Activities.insert({
|
||||
userId,
|
||||
activityType: 'removedChecklistItem',
|
||||
cardId: doc.cardId,
|
||||
boardId,
|
||||
checklistId: doc.checklistId,
|
||||
checklistItemId: doc._id,
|
||||
checklistItemName:doc.title,
|
||||
});
|
||||
Activities.remove({
|
||||
checklistItemId: doc._id,
|
||||
});
|
||||
@@ -206,8 +195,19 @@ if (Meteor.isServer) {
|
||||
itemCreation(userId, doc);
|
||||
});
|
||||
|
||||
ChecklistItems.after.remove((userId, doc) => {
|
||||
ChecklistItems.before.remove((userId, doc) => {
|
||||
itemRemover(userId, doc);
|
||||
const card = Cards.findOne(doc.cardId);
|
||||
const boardId = card.boardId;
|
||||
Activities.insert({
|
||||
userId,
|
||||
activityType: 'removedChecklistItem',
|
||||
cardId: doc.cardId,
|
||||
boardId,
|
||||
checklistId: doc.checklistId,
|
||||
checklistItemId: doc._id,
|
||||
checklistItemName:doc.title,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -3,10 +3,10 @@ import { WekanCreator } from './wekanCreator';
|
||||
|
||||
Meteor.methods({
|
||||
importBoard(board, data, importSource, currentBoard) {
|
||||
//check(board, Object);
|
||||
//check(data, Object);
|
||||
//check(importSource, String);
|
||||
//check(currentBoard, Match.Maybe(String));
|
||||
check(board, Object);
|
||||
check(data, Object);
|
||||
check(importSource, String);
|
||||
check(currentBoard, Match.Maybe(String));
|
||||
let creator;
|
||||
switch (importSource) {
|
||||
case 'trello':
|
||||
|
||||
@@ -298,6 +298,10 @@ export class WekanCreator {
|
||||
cardToCreate.members = wekanMembers;
|
||||
}
|
||||
}
|
||||
// set color
|
||||
if (card.color) {
|
||||
cardToCreate.color = card.color;
|
||||
}
|
||||
// insert card
|
||||
const cardId = Cards.direct.insert(cardToCreate);
|
||||
// keep track of Wekan id => Wekan id
|
||||
@@ -484,6 +488,10 @@ export class WekanCreator {
|
||||
title: swimlane.title,
|
||||
sort: swimlane.sort ? swimlane.sort : swimlaneIndex,
|
||||
};
|
||||
// set color
|
||||
if (swimlane.color) {
|
||||
swimlaneToCreate.color = swimlane.color;
|
||||
}
|
||||
const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate);
|
||||
Swimlanes.direct.update(swimlaneId, {
|
||||
$set: {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v2.43.0",
|
||||
"version": "v2.48.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -99,6 +99,9 @@ tx pull -f -l nl
|
||||
echo "Norwegian:"
|
||||
tx pull -f -l no
|
||||
|
||||
echo "Occitan:"
|
||||
tx pull -f -l oc
|
||||
|
||||
echo "Polish:"
|
||||
tx pull -f -l pl
|
||||
|
||||
|
||||
@@ -25,6 +25,16 @@
|
||||
# Wekan Export Board works when WITH_API='true'.
|
||||
# If you disable Wekan API, Export Board does not work.
|
||||
export WITH_API='true'
|
||||
#---------------------------------------------------------------
|
||||
# ==== PASSWORD BRUTE FORCE PROTECTION ====
|
||||
#https://atmospherejs.com/lucasantoniassi/accounts-lockout
|
||||
#Defaults below. Uncomment to change. wekan/server/accounts-lockout.js
|
||||
#export ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3
|
||||
#export ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60
|
||||
#export ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15
|
||||
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
|
||||
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
|
||||
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
|
||||
#---------------------------------------------
|
||||
# CORS: Set Access-Control-Allow-Origin header. Example: *
|
||||
#export CORS=*
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 245,
|
||||
appVersion = 250,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "2.43.0~2019-03-08"),
|
||||
appMarketingVersion = (defaultText = "2.48.0~2019-03-15"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
// https://atmospherejs.com/lucasantoniassi/accounts-lockout
|
||||
// server
|
||||
import { AccountsLockout } from 'meteor/lucasantoniassi:accounts-lockout';
|
||||
|
||||
(new AccountsLockout({
|
||||
knownUsers: {
|
||||
failuresBeforeLockout: process.env.ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE || 3,
|
||||
lockoutPeriod: process.env.ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD || 60,
|
||||
failureWindow: process.env.ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW || 15,
|
||||
},
|
||||
unknownUsers: {
|
||||
failuresBeforeLockout: process.env.ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE || 3,
|
||||
lockoutPeriod: process.env.ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD || 60,
|
||||
failureWindow: process.env.ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW || 15,
|
||||
},
|
||||
})).startup();
|
||||
@@ -0,0 +1,10 @@
|
||||
Meteor.startup(() => {
|
||||
|
||||
if ( process.env.HEADER_LOGIN_ID ) {
|
||||
Meteor.settings.public.headerLoginId = process.env.HEADER_LOGIN_ID;
|
||||
Meteor.settings.public.headerLoginEmail = process.env.HEADER_LOGIN_EMAIL;
|
||||
Meteor.settings.public.headerLoginFirstname = process.env.HEADER_LOGIN_FIRSTNAME;
|
||||
Meteor.settings.public.headerLoginLastname = process.env.HEADER_LOGIN_LASTNAME;
|
||||
}
|
||||
|
||||
});
|
||||
@@ -518,7 +518,7 @@ Migrations.add('add-templates', () => {
|
||||
});
|
||||
});
|
||||
|
||||
Migrations.add('fix-circular-reference', () => {
|
||||
Migrations.add('fix-circular-reference_', () => {
|
||||
Cards.find().forEach((card) => {
|
||||
if (card.parentId === card._id) {
|
||||
Cards.update(card._id, {$set: {parentId: ''}}, noValidateMulti);
|
||||
|
||||
+25
-1
@@ -3,7 +3,7 @@
|
||||
# All supported keys are defined here together with descriptions and default values
|
||||
|
||||
# list of supported keys
|
||||
keys="DEBUG MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API EMAIL_NOTIFICATION_TIMEOUT CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_EMAIL_MAP LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS HEADER_LOGIN_ID HEADER_LOGIN_FIRSTNAME HEADER_LOGIN_LASTNAME HEADER_LOGIN_EMAIL LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD"
|
||||
keys="DEBUG MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW EMAIL_NOTIFICATION_TIMEOUT CORS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_EMAIL_MAP LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS HEADER_LOGIN_ID HEADER_LOGIN_FIRSTNAME HEADER_LOGIN_LASTNAME HEADER_LOGIN_EMAIL LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD"
|
||||
|
||||
# default values
|
||||
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
|
||||
@@ -56,6 +56,30 @@ DESCRIPTION_WITH_API="Enable/disable the api of wekan"
|
||||
DEFAULT_WITH_API="true"
|
||||
KEY_WITH_API="with-api"
|
||||
|
||||
DESCRIPTION_ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE="Accounts lockout known users failures before, greater than 0. Default: 3"
|
||||
DEFAULT_ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE="3"
|
||||
KEY_ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE="accounts-lockout-known-users-failures-before"
|
||||
|
||||
DESCRIPTION_ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD="Accounts lockout know users period, in seconds. Default: 60"
|
||||
DEFAULT_ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD="60"
|
||||
KEY_ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD="accounts-lockout-known-users-period"
|
||||
|
||||
DESCRIPTION_ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW="Accounts lockout unknown failure window, in seconds. Default: 15"
|
||||
DEFAULT_ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW="15"
|
||||
KEY_ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW="accounts-lockout-known-users-failure-window"
|
||||
|
||||
DESCRIPTION_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE="Accounts lockout unknown users failures before, greater than 0. Default: 3"
|
||||
DEFAULT_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE="3"
|
||||
KEY_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE="accounts-lockout-unknown-users-failures-before"
|
||||
|
||||
DESCRIPTION_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD="Accounts lockout unknown users lockout period, in seconds. Default: 60"
|
||||
DEFAULT_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD="60"
|
||||
KEY_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD="accounts-lockout-unknown-users-lockout-period"
|
||||
|
||||
DESCRIPTION_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="Accounts lockout unknown users failure window, in seconds. Default: 15"
|
||||
DEFAULT_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="15"
|
||||
KEY_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="accounts-lockout-unknown-users-failure-window"
|
||||
|
||||
DESCRIPTION_EMAIL_NOTIFICATION_TIMEOUT="Email notification timeout, ms. Default: 30000 (=30s)."
|
||||
DEFAULT_EMAIL_NOTIFICATION_TIMEOUT="30000"
|
||||
KEY_EMAIL_NOTIFICATION_TIMEOUT="email-notification-timeout"
|
||||
|
||||
@@ -40,6 +40,24 @@ echo -e "\t$ snap set $SNAP_NAME with-api='true'"
|
||||
echo -e "\t-Disable the API:"
|
||||
echo -e "\t$ snap set $SNAP_NAME with-api='false'"
|
||||
echo -e "\n"
|
||||
echo -e "Accounts lockout known users failures before, greater than 0. Default: 3"
|
||||
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-known-users-failures-before='3'"
|
||||
echo -e "\n"
|
||||
echo -e "Accounts lockout know users period, in seconds. Default: 60"
|
||||
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-known-users-period='60'"
|
||||
echo -e "\n"
|
||||
echo -e "Accounts lockout unknown failure window, in seconds. Default: 15"
|
||||
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-known-users-failure-window='15'"
|
||||
echo -e "\n"
|
||||
echo -e "Accounts lockout unknown users failures before, greater than 0. Default: 3"
|
||||
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-unknown-users-failures-before='3'"
|
||||
echo -e "\n"
|
||||
echo -e "Accounts lockout unknown users lockout period, in seconds. Default: 60"
|
||||
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-unknown-users-lockout-period='60'"
|
||||
echo -e "\n"
|
||||
echo -e "Accounts lockout unknown users failure window, in seconds. Default: 15"
|
||||
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-unknown-users-failure-window='15'"
|
||||
echo -e "\n"
|
||||
echo -e "To enable the Email Notification Timeout of wekan in ms, default 30000 (=30s):"
|
||||
echo -e "\t$ snap set $SNAP_NAME email-notification-timeout='10000'"
|
||||
echo -e "\t-Disable the Email Notification Timeout of Wekan:"
|
||||
|
||||
@@ -14,6 +14,16 @@ SET PORT=2000
|
||||
REM # If you disable Wekan API with false, Export Board does not work.
|
||||
SET WITH_API=true
|
||||
|
||||
REM # ==== PASSWORD BRUTE FORCE PROTECTION ====
|
||||
REM #https://atmospherejs.com/lucasantoniassi/accounts-lockout
|
||||
REM #Defaults below. Uncomment to change. wekan/server/accounts-lockout.js
|
||||
REM SET ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3
|
||||
REM SET ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60
|
||||
REM SET ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15
|
||||
REM SET ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
|
||||
REM SET ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
|
||||
REM SET ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
|
||||
|
||||
REM # Optional: Integration with Matomo https://matomo.org that is installed to your server
|
||||
REM # The address of the server where Matomo is hosted.
|
||||
REM # example: - MATOMO_ADDRESS=https://example.com/matomo
|
||||
|
||||
@@ -43,6 +43,16 @@ function wekan_repo_check(){
|
||||
# Wekan Export Board works when WITH_API=true.
|
||||
# If you disable Wekan API with false, Export Board does not work.
|
||||
export WITH_API='true'
|
||||
#---------------------------------------------------------------
|
||||
# ==== PASSWORD BRUTE FORCE PROTECTION ====
|
||||
#https://atmospherejs.com/lucasantoniassi/accounts-lockout
|
||||
#Defaults below. Uncomment to change. wekan/server/accounts-lockout.js
|
||||
#export ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3
|
||||
#export ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60
|
||||
#export ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15
|
||||
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
|
||||
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
|
||||
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
|
||||
#---------------------------------------------
|
||||
# CORS: Set Access-Control-Allow-Origin header. Example: *
|
||||
#export CORS=*
|
||||
|
||||
Reference in new issue
Block a user