Compare commits

..
22 Commits
Author SHA1 Message Date
Lauri Ojansivu 7566f05b97 v3.93 2020-04-09 23:00:00 +03:00
Lauri Ojansivu 268d7fcb32 Upgrade Node to 12.16.2, part 2.
Thanks to Node developers and xet7 !
2020-04-09 22:53:04 +03:00
Lauri Ojansivu 70edd44a01 Update ChangeLog. 2020-04-09 22:50:00 +03:00
Lauri Ojansivu 6db717b9b3 Upgrade to Node v12.16.2
Thanks to Node developers and xet7 !
2020-04-09 22:47:11 +03:00
Lauri Ojansivu f389fd95fb Update translations. 2020-04-09 22:37:36 +03:00
Lauri Ojansivu 363bcab98b Update ChangeLog. 2020-04-09 22:30:31 +03:00
Lauri Ojansivu c4a7e53661 Merge pull request #3005 from jtbairdsr/master
fix bug that prevents editing or deleting comments
2020-04-09 22:30:02 +03:00
Lauri Ojansivu c6afe8d007 Merge pull request #3004 from slvrpdr/master
When adding a user to a board that has subtasks, also add user to the subtask board
2020-04-09 22:26:34 +03:00
Lauri Ojansivu 93eccffd44 Merge pull request #3000 from NicoP-S/master
Trello vote import & hide export button if with_api is disabled
2020-04-09 22:21:43 +03:00
Jonathan Baird fe66169415 fix bug that prevents editing or deleting comments 2020-04-09 12:46:24 -06:00
Pedro Sousa 6ced47aa8c When adding a user to a board that has subtasks, also add user to the subtask board 2020-04-09 19:10:50 +01:00
Nico e661d03e8d Add vote import from Trello 2020-04-09 02:00:15 +02:00
Nico f09219cbfd Remove export button if WITH_API is not enabled
#2938
https://github.com/wekan/wekan/issues/2938#issuecomment-589782402
2020-04-09 01:55:01 +02:00
NicoP-S 7c25542976 Merge pull request #5 from wekan/master
Update
2020-04-08 23:22:49 +02:00
Lauri Ojansivu 121686a928 v3.92 2020-04-08 23:51:38 +03:00
Lauri Ojansivu 3563e0145d Update translations. 2020-04-08 23:41:13 +03:00
Lauri Ojansivu c630714245 Update ChangeLog. 2020-04-08 23:23:45 +03:00
Lauri Ojansivu 5ebb47cb0e Add setting default NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
to all Wekan platforms https://github.com/wekan/wekan/pull/2998

Thanks to xet7 !
2020-04-08 23:16:48 +03:00
Lauri Ojansivu 115701fa65 Merge branch 'jtbairdsr-master' 2020-04-08 22:29:15 +03:00
Jonathan Baird a182dde11f add a "remove all read" button to notification menu 2020-04-08 13:14:29 -06:00
Jonathan Baird 1e20e2601f add a scheduled notification cleanup job 2020-04-08 11:54:00 -06:00
Jonathan Baird 4d066b1f30 stop notifying users about their own behavior 2020-04-08 11:54:00 -06:00
87 changed files with 595 additions and 358 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.93.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.93.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+1 -1
View File
@@ -3,7 +3,7 @@ sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 12.15.0
TRAVIS_NODE_VERSION: 12.16.2
TRAVIS_NPM_VERSION: latest
before_install:
+40
View File
@@ -1,3 +1,43 @@
# v3.93 2020-04-10 Wekan release
This release adds the following new features:
- [Trello vote import & hide export button if with_api is
disabled](https://github.com/wekan/wekan/pull/3000).
Thanks to NicoP-S.
- [When adding a user to a board that has subtasks, also add user to the subtask
board](https://github.com/wekan/wekan/pull/3004).
Thanks to slvrpdr.
and adds the following updates:
- Upgrade to Node v12.16.2 [Part1](https://github.com/wekan/wekan/commit/6db717b9b384fe1491063e507b80e67791a07e3a)
and [Part2](https://github.com/wekan/wekan/commit/268d7fcb32186a902a84e7f6d80c50b1f3790bad).
Thanks to Node developers and xet7.
and fixes the following bugs:
- [Fix bug that prevents editing or deleting
comments](https://github.com/wekan/wekan/pull/3005).
Thanks to jtbairdsr.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.92 2020-04-09 Wekan release
This release adds the following new features:
- [Scheduler to clean up read notifications. Also added a button to manually remove all
read notifications, and a fix to prevent users form getting notifications for their own
actions](https://github.com/wekan/wekan/pull/2998).
Thanks to jtbairdsr.
- [Add setting](https://github.com/wekan/wekan/commit/5ebb47cb0ec7272894a37d99579ede872251f55c)
default [NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2](https://github.com/wekan/wekan/pull/2998)
to all Wekan platforms.
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.91 2020-04-08 Wekan release
This release adds the following new features:
+2 -1
View File
@@ -6,7 +6,7 @@ LABEL maintainer="wekan"
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
DEBUG=false \
NODE_VERSION=v12.16.1 \
NODE_VERSION=v12.16.2 \
METEOR_RELEASE=1.10-rc.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
@@ -26,6 +26,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
ATTACHMENTS_STORE_PATH="" \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \
BIGEVENTS_PATTERN=NONE \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v3.91.0"
appVersion: "v3.93.0"
files:
userUploads:
- README.md
+2 -2
View File
@@ -180,7 +180,7 @@ BlazeComponent.extendComponent({
{
// XXX We should use Popup.afterConfirmation here
'click .js-delete-comment'() {
const commentId = this.currentData().commentId;
const commentId = this.currentData().activity.commentId;
CardComments.remove(commentId);
},
'submit .js-edit-comment'(evt) {
@@ -188,7 +188,7 @@ BlazeComponent.extendComponent({
const commentText = this.currentComponent()
.getValue()
.trim();
const commentId = Template.parentData().commentId;
const commentId = Template.parentData().activity.commentId;
if (commentText) {
CardComments.update(commentId, {
$set: {
-16
View File
@@ -33,22 +33,6 @@ Template.boardMenuPopup.events({
'click .js-card-settings': Popup.open('boardCardSettings'),
});
Template.boardMenuPopup.helpers({
exportUrl() {
const params = {
boardId: Session.get('currentBoard'),
};
const queryParams = {
authToken: Accounts._storedLoginToken(),
};
return FlowRouter.path('/api/boards/:boardId/export', params, queryParams);
},
exportFilename() {
const boardId = Session.get('currentBoard');
return `wekan-export-board-${boardId}.json`;
},
});
Template.boardChangeTitlePopup.events({
submit(event, templateInstance) {
const newTitle = templateInstance
+23 -26
View File
@@ -40,31 +40,29 @@ BlazeComponent.extendComponent({
voteState() {
const card = this.currentData();
const userId = Meteor.userId()
let state
const userId = Meteor.userId();
let state;
if (card.vote) {
if (card.vote.positive) {
state = _.contains(card.vote.positive, userId);
if (state === true) return true
if (state === true) return true;
}
if (card.vote.negative) {
state = _.contains(card.vote.negative, userId);
if (state === true) return false
if (state === true) return false;
}
}
return null
return null;
},
voteCountPositive() {
const card = this.currentData();
if (card.vote && card.vote.positive)
return card.vote.positive.length
return null
if (card.vote && card.vote.positive) return card.vote.positive.length;
return null;
},
voteCountNegative() {
const card = this.currentData();
if (card.vote && card.vote.negative)
return card.vote.negative.length
return null
if (card.vote && card.vote.negative) return card.vote.negative.length;
return null;
},
isWatching() {
const card = this.currentData();
@@ -408,17 +406,17 @@ BlazeComponent.extendComponent({
Meteor.call('toggleSystemMessages');
},
'click .js-vote'(e) {
const forIt = $(e.target).hasClass('js-vote-positive')
let newState = null
const forIt = $(e.target).hasClass('js-vote-positive');
let newState = null;
if (
this.voteState() == null ||
this.voteState() == false && forIt ||
this.voteState() == true && !forIt
(this.voteState() == false && forIt) ||
(this.voteState() == true && !forIt)
) {
newState = forIt
newState = forIt;
}
this.data().setVote(Meteor.userId(), newState)
}
this.data().setVote(Meteor.userId(), newState);
},
},
];
},
@@ -613,7 +611,7 @@ Template.cardDetailsActionsPopup.events({
'click .js-set-card-color': Popup.open('setCardColor'),
'click .js-cancel-voting'(event) {
event.preventDefault();
this.unsetVote()
this.unsetVote();
Popup.close();
},
'click .js-move-card-to-top'(event) {
@@ -649,7 +647,7 @@ Template.cardDetailsActionsPopup.events({
},
});
Template.editCardTitleForm.onRendered(function () {
Template.editCardTitleForm.onRendered(function() {
autosize(this.$('.js-edit-card-title'));
});
@@ -663,7 +661,7 @@ Template.editCardTitleForm.events({
},
});
Template.editCardRequesterForm.onRendered(function () {
Template.editCardRequesterForm.onRendered(function() {
autosize(this.$('.js-edit-card-requester'));
});
@@ -676,7 +674,7 @@ Template.editCardRequesterForm.events({
},
});
Template.editCardAssignerForm.onRendered(function () {
Template.editCardAssignerForm.onRendered(function() {
autosize(this.$('.js-edit-card-assigner'));
});
@@ -816,7 +814,7 @@ Template.copyChecklistToManyCardsPopup.events({
// copy subtasks
cursor = Cards.find({ parentId: oldId });
cursor.forEach(function () {
cursor.forEach(function() {
'use strict';
const subtask = arguments[0];
subtask.parentId = _id;
@@ -965,7 +963,7 @@ BlazeComponent.extendComponent({
}
}
},
'click .js-delete': Popup.afterConfirm('cardDelete', function () {
'click .js-delete': Popup.afterConfirm('cardDelete', function() {
Popup.close();
Cards.remove(this._id);
Utils.goBoardId(this.boardId);
@@ -1003,9 +1001,8 @@ BlazeComponent.extendComponent({
'submit .edit-vote-question'(evt) {
evt.preventDefault();
const voteQuestion = evt.target.vote.value;
this.currentCard.setVoteQuestion(voteQuestion)
this.currentCard.setVoteQuestion(voteQuestion);
Popup.close();
},
},
];
+12 -3
View File
@@ -22,11 +22,20 @@ BlazeComponent.extendComponent({
const listId = targetBoard.getDefaultSubtasksListId();
//Get the full swimlane data for the parent task.
const parentSwimlane = Swimlanes.findOne({boardId: crtBoard._id, _id: card.swimlaneId});
const parentSwimlane = Swimlanes.findOne({
boardId: crtBoard._id,
_id: card.swimlaneId,
});
//find the swimlane of the same name in the target board.
const targetSwimlane = Swimlanes.findOne({boardId: targetBoard._id, title: parentSwimlane.title});
const targetSwimlane = Swimlanes.findOne({
boardId: targetBoard._id,
title: parentSwimlane.title,
});
//If no swimlane with a matching title exists in the target board, fall back to the default swimlane.
const swimlaneId = targetSwimlane === undefined ? targetBoard.getDefaultSwimline()._id : targetSwimlane._id;
const swimlaneId =
targetSwimlane === undefined
? targetBoard.getDefaultSwimline()._id
: targetSwimlane._id;
if (title) {
const _id = Cards.insert({
@@ -14,3 +14,7 @@ template(name='notificationsDrawer')
+notification(activityData=activity index=dbIndex read=read)
if($gt unreadNotifications 0)
a.all-read {{_ 'mark-all-as-read'}}
if ($and ($.Session.get 'showReadNotifications') ($gt readNotifications 0))
a.remove-read
i.fa.fa-trash
| {{_ 'remove-all-read'}}
@@ -16,6 +16,13 @@ Template.notificationsDrawer.helpers({
transformedProfile() {
return Users.findOne(Meteor.userId());
},
readNotifications() {
const readNotifications = _.filter(
Meteor.user().profile.notifications,
v => !!v.read,
);
return readNotifications.length;
},
});
Template.notificationsDrawer.events({
@@ -35,4 +42,12 @@ Template.notificationsDrawer.events({
'click .toggle-read'() {
Session.set('showReadNotifications', !Session.get('showReadNotifications'));
},
'click .remove-read'() {
const user = Meteor.user();
for (const notification of user.profile.notifications) {
if (notification.read) {
user.removeNotification(notification.activity);
}
}
},
});
@@ -45,12 +45,23 @@ section#notifications-drawer
line-height: 24px
opacity 1
.all-read
.all-read,
.remove-read
color belize
background-color: #fafafa
margin 8px 16px 12px
display inline-block
.remove-read
float right
&:hover
color #eb4646 !important
i.fa
color inherit
ul.notifications
display: block
padding: 0px 16px
+11 -9
View File
@@ -298,10 +298,11 @@ template(name="boardMenuPopup")
if currentUser.isBoardAdmin
hr
ul.pop-over-list
li
a(href="{{exportUrl}}", download="{{exportFilename}}")
i.fa.fa-share-alt
| {{_ 'export-board'}}
if withApi
li
a(href="{{exportUrl}}", download="{{exportFilename}}")
i.fa.fa-share-alt
| {{_ 'export-board'}}
li
a.js-outgoing-webhooks
i.fa.fa-globe
@@ -326,11 +327,12 @@ template(name="boardMenuPopup")
if isSandstorm
hr
ul.pop-over-list
li
a(href="{{exportUrl}}", download="{{exportFilename}}")
i.fa.fa-share-alt
i.fa.fa-sign-out
| {{_ 'export-board'}}
if withApi
li
a(href="{{exportUrl}}", download="{{exportFilename}}")
i.fa.fa-share-alt
i.fa.fa-sign-out
| {{_ 'export-board'}}
li
a.js-import-board
i.fa.fa-share-alt
+15 -4
View File
@@ -196,14 +196,14 @@ Template.boardMenuPopup.events({
},
'click .js-change-board-color': Popup.open('boardChangeColor'),
'click .js-change-language': Popup.open('changeLanguage'),
'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function() {
'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function () {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
currentBoard.archive();
// XXX We should have some kind of notification on top of the page to
// confirm that the board was successfully archived.
FlowRouter.go('home');
}),
'click .js-delete-board': Popup.afterConfirm('deleteBoard', function() {
'click .js-delete-board': Popup.afterConfirm('deleteBoard', function () {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
Popup.close();
Boards.remove(currentBoard._id);
@@ -215,7 +215,18 @@ Template.boardMenuPopup.events({
'click .js-card-settings': Popup.open('boardCardSettings'),
});
Template.boardMenuPopup.onCreated(function () {
this.apiEnabled = new ReactiveVar(false);
Meteor.call('_isApiEnabled', (e, result) => {
this.apiEnabled.set(result)
})
})
Template.boardMenuPopup.helpers({
withApi() {
return Template.instance().apiEnabled.get()
},
exportUrl() {
const params = {
boardId: Session.get('currentBoard'),
@@ -237,7 +248,7 @@ Template.memberPopup.events({
Popup.close();
},
'click .js-change-role': Popup.open('changePermissions'),
'click .js-remove-member': Popup.afterConfirm('removeMember', function() {
'click .js-remove-member': Popup.afterConfirm('removeMember', function () {
const boardId = Session.get('currentBoard');
const memberId = this.userId;
Cards.find({ boardId, members: memberId }).forEach(card => {
@@ -578,7 +589,7 @@ BlazeComponent.extendComponent({
'subtext-with-parent',
'no-parent',
];
options.forEach(function(element) {
options.forEach(function (element) {
if (element !== value) {
$(`#${element} ${MCB}`).toggleClass(CKCLS, false);
$(`#${element}`).toggleClass(CKCLS, false);
+5
View File
@@ -254,6 +254,11 @@ services:
#-MAX_IMAGE_PIXEL=1024
#-IMAGE_COMPRESS_RATIO=80
#---------------------------------------------------------------
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
# Number of days after a notification is read before we remove it.
# Default: 2
#- NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Zobrazit vše",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Označit vše jako přečtené",
"remove-all-read": "Remove all read",
"allow-rename": "Povolit přejmenování",
"allowRenamePopup-title": "Povolit přejmenování"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+7 -6
View File
@@ -152,8 +152,8 @@
"card-spent": "Aufgewendete Zeit",
"card-edit-attachments": "Anhänge ändern",
"card-edit-custom-fields": "Benutzerdefinierte Felder editieren",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "Abstimmung starten",
"card-cancel-voting": "Abstimmung mit allen Stimmen löschen ",
"card-edit-labels": "Labels ändern",
"card-edit-members": "Mitglieder ändern",
"card-labels-title": "Labels für diese Karte ändern.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Anhängen von",
"cardCustomField-datePopup-title": "Datum ändern",
"cardCustomFieldsPopup-title": "Benutzerdefinierte Felder editieren",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Abstimmung starten",
"vote-question": "Abstimmen über",
"vote-for-it": "Dafür",
"vote-against": "Dagegen",
"cardDeletePopup-title": "Karte löschen?",
"cardDetailsActionsPopup-title": "Kartenaktionen",
"cardLabelsPopup-title": "Labels",
@@ -771,6 +771,7 @@
"view-all": "Alle anzeigen",
"filter-by-unread": "Nach Ungelesenen filtern",
"mark-all-as-read": "Alle als gelesen markieren",
"remove-all-read": "Alle gelesenen entfernen",
"allow-rename": "Umbenennen erlauben",
"allowRenamePopup-title": "Umbenennen erlauben"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -774,6 +774,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Ver todo",
"filter-by-unread": "Filtrar por no leído",
"mark-all-as-read": "Marcar todo como leido",
"remove-all-read": "Remove all read",
"allow-rename": "Permitir renombrar",
"allowRenamePopup-title": "Permitir renombrar"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Näytä kaikki",
"filter-by-unread": "Suodata lukemattomat",
"mark-all-as-read": "Merkkaa kaikki luetuksi",
"remove-all-read": "Poista kaikki luetut",
"allow-rename": "Salli uudelleennimeäminen",
"allowRenamePopup-title": "Salli uudelleennimeäminen"
}
+10 -9
View File
@@ -152,8 +152,8 @@
"card-spent": "Temps passé",
"card-edit-attachments": "Modifier les pièces jointes",
"card-edit-custom-fields": "Éditer les champs personnalisés",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "Commencer le vote",
"card-cancel-voting": "Supprimer le vote",
"card-edit-labels": "Gérer les étiquettes",
"card-edit-members": "Gérer les participants",
"card-labels-title": "Modifier les étiquettes de la carte.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Ajouter depuis",
"cardCustomField-datePopup-title": "Modifier la date",
"cardCustomFieldsPopup-title": "Éditer les champs personnalisés",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Commencer un vote",
"vote-question": "Question du vote",
"vote-for-it": "pour",
"vote-against": "contre",
"cardDeletePopup-title": "Supprimer la carte ?",
"cardDetailsActionsPopup-title": "Actions sur la carte",
"cardLabelsPopup-title": "Étiquettes",
@@ -325,7 +325,7 @@
"filter-clear": "Supprimer les filtres",
"filter-no-label": "Aucune étiquette",
"filter-no-member": "Aucun participant",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "Pas de personne assignée",
"filter-no-custom-fields": "Pas de champs personnalisés",
"filter-show-archive": "Montrer les listes archivées",
"filter-hide-empty": "Cacher les listes vides",
@@ -760,8 +760,8 @@
"accounts-allowUserDelete": "Autoriser les utilisateurs à supprimer leur compte",
"hide-minicard-label-text": "Cacher le label de la minicarte",
"show-desktop-drag-handles": "Voir les poignées de déplacement du bureau",
"assignee": "Cessionnaire",
"cardAssigneesPopup-title": "Cessionnaire",
"assignee": "Personne assignée",
"cardAssigneesPopup-title": "Personne assignée",
"addmore-detail": "Ajouter une description plus détaillée",
"show-on-card": "Afficher sur la carte",
"new": "Nouveau",
@@ -771,6 +771,7 @@
"view-all": "Voir tout",
"filter-by-unread": "Filtrer par non lu",
"mark-all-as-read": "Marquer comme lus",
"remove-all-read": "Supprimer les lus",
"allow-rename": "Autoriser le renommage",
"allowRenamePopup-title": "Autoriser le renommage"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+4 -3
View File
@@ -152,8 +152,8 @@
"card-spent": "זמן שהושקע",
"card-edit-attachments": "עריכת קבצים מצורפים",
"card-edit-custom-fields": "עריכת שדות בהתאמה אישית",
"card-start-voting": "התחילו להצביע",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "ניתן להצביע",
"card-cancel-voting": "מחיקת אפשרות ההצבעה ואת כל הקולות",
"card-edit-labels": "עריכת תוויות",
"card-edit-members": "עריכת חברים",
"card-labels-title": "שינוי תוויות לכרטיס.",
@@ -163,7 +163,7 @@
"cardAttachmentsPopup-title": "לצרף מ־",
"cardCustomField-datePopup-title": "החלפת תאריך",
"cardCustomFieldsPopup-title": "עריכת שדות בהתאמה אישית",
"cardStartVotingPopup-title": "Start a vote",
"cardStartVotingPopup-title": "התחלת הצבעה",
"vote-question": "שאלת הסקר",
"vote-for-it": "בעד",
"vote-against": "נגד",
@@ -771,6 +771,7 @@
"view-all": "להציג הכול",
"filter-by-unread": "סימון לפי כאלו שלא נקראו",
"mark-all-as-read": "לסמן הכול כאילו שנקראו",
"remove-all-read": "הסרת כל אלו שנקראו",
"allow-rename": "לאפשר שינוי שם",
"allowRenamePopup-title": "לאפשר שינוי שם"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+8 -7
View File
@@ -152,8 +152,8 @@
"card-spent": "Tempo trascorso",
"card-edit-attachments": "Modifica allegati",
"card-edit-custom-fields": "Modifica campo personalizzato",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "Inizia a votare",
"card-cancel-voting": "Cancella votazione e tutti i voti",
"card-edit-labels": "Modifica etichette",
"card-edit-members": "Modifica membri",
"card-labels-title": "Cambia le etichette per questa scheda.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Allega da",
"cardCustomField-datePopup-title": "Cambia data",
"cardCustomFieldsPopup-title": "Modifica campo personalizzato",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Inizia una votazione",
"vote-question": "Domanda di votazione",
"vote-for-it": "a favore",
"vote-against": "contro",
"cardDeletePopup-title": "Elimina scheda?",
"cardDetailsActionsPopup-title": "Azioni scheda",
"cardLabelsPopup-title": "Etichette",
@@ -325,7 +325,7 @@
"filter-clear": "Pulisci filtri",
"filter-no-label": "Nessuna etichetta",
"filter-no-member": "Nessun membro",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "Nessun assegnatario",
"filter-no-custom-fields": "Nessun campo personalizzato",
"filter-show-archive": "Mostra le liste archiviate",
"filter-hide-empty": "Nascondi liste vuote",
@@ -771,6 +771,7 @@
"view-all": "Mostra Tutto",
"filter-by-unread": "Filtra per non letto",
"mark-all-as-read": "Segna come letto",
"remove-all-read": "Rimuovi tutti i già letti",
"allow-rename": "Consenti Rinomina",
"allowRenamePopup-title": "Consenti Rinomina"
}
+9 -8
View File
@@ -152,8 +152,8 @@
"card-spent": "作業時間",
"card-edit-attachments": "添付ファイルの編集",
"card-edit-custom-fields": "カスタムフィールドの編集",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "投票を開始",
"card-cancel-voting": "投票と全ての結果を削除",
"card-edit-labels": "ラベルの編集",
"card-edit-members": "メンバーの編集",
"card-labels-title": "カードのラベルを変更する",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "添付元",
"cardCustomField-datePopup-title": "日時変更",
"cardCustomFieldsPopup-title": "カスタムフィールドの編集",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "投票を開始",
"vote-question": "投票の質問事項",
"vote-for-it": "賛成",
"vote-against": "反対",
"cardDeletePopup-title": "カードを削除しますか?",
"cardDetailsActionsPopup-title": "カード操作",
"cardLabelsPopup-title": "ラベル",
@@ -325,7 +325,7 @@
"filter-clear": "フィルターの解除",
"filter-no-label": "ラベルなし",
"filter-no-member": "メンバーなし",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "担当者なし",
"filter-no-custom-fields": "カスタムフィールドなし",
"filter-show-archive": "アーカイブされたリストを表示",
"filter-hide-empty": "空のリストを隠す",
@@ -447,7 +447,7 @@
"save": "保存",
"search": "検索",
"rules": "ルール",
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
"search-cards": "このボード上のカード/リストタイトル、詳細、カスタムフィールドから検索",
"search-example": "検索文字",
"select-color": "色を選択",
"set-wip-limit-value": "このリスト中のタスクの最大数を設定",
@@ -771,6 +771,7 @@
"view-all": "全てを表示",
"filter-by-unread": "未読でフィルタ",
"mark-all-as-read": "全て既読にする",
"remove-all-read": "全ての既読を削除",
"allow-rename": "リネームを許可する",
"allowRenamePopup-title": "リネームを許可する"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+8 -7
View File
@@ -152,8 +152,8 @@
"card-spent": "Gespendeerde tijd",
"card-edit-attachments": "Wijzig bijlagen",
"card-edit-custom-fields": "Wijzig maatwerkvelden",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "Start stemming",
"card-cancel-voting": "Verwijder stemming en verwijder stemmen",
"card-edit-labels": "Wijzig labels",
"card-edit-members": "Wijzig leden",
"card-labels-title": "Wijzig de labels van de kaart.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Voeg bestand toe vanuit",
"cardCustomField-datePopup-title": "Wijzigingsdatum",
"cardCustomFieldsPopup-title": "Wijzig maatwerkvelden",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Start een stemming",
"vote-question": "Stemvraag",
"vote-for-it": "Voor",
"vote-against": "tegen",
"cardDeletePopup-title": "Kaart verwijderen?",
"cardDetailsActionsPopup-title": "Kaart actie ondernemen",
"cardLabelsPopup-title": "Labels",
@@ -325,7 +325,7 @@
"filter-clear": "Wis filter",
"filter-no-label": "Geen label",
"filter-no-member": "Geen lid",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "Niemand toegewezen",
"filter-no-custom-fields": "Geen maatwerkvelden",
"filter-show-archive": "Toon gearchiveerde lijsten",
"filter-hide-empty": "Verberg lege lijsten",
@@ -771,6 +771,7 @@
"view-all": "Bekijk alles",
"filter-by-unread": "Filter op Ongelezen",
"mark-all-as-read": "Markeer alles als gelezen",
"remove-all-read": "verwijder alle gelezen",
"allow-rename": "Sta Hernoemen toe",
"allowRenamePopup-title": "Sta Hernoemen toe"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Wyświetl wszystko",
"filter-by-unread": "Filtruj nieprzeczytane",
"mark-all-as-read": "Zaznacz wszystkie jako przeczytane",
"remove-all-read": "Remove all read",
"allow-rename": "Zezwól na zmianę nazwy",
"allowRenamePopup-title": "Zezwól na zmianę nazwy"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Ver tudo",
"filter-by-unread": "Filtrar não lidas",
"mark-all-as-read": "Marcar todas como lidas",
"remove-all-read": "Remover todas lidas",
"allow-rename": "Permitir renomear",
"allowRenamePopup-title": "Permitir renomear"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+7 -6
View File
@@ -153,7 +153,7 @@
"card-edit-attachments": "Изменить вложения",
"card-edit-custom-fields": "Редактировать настраиваемые поля",
"card-start-voting": "Запустить голосование",
"card-cancel-voting": "Delete voting and all votes",
"card-cancel-voting": "Отменить голосование и удалить голоса",
"card-edit-labels": "Изменить метку",
"card-edit-members": "Изменить участников",
"card-labels-title": "Изменить метки для этой карточки.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Прикрепить из",
"cardCustomField-datePopup-title": "Изменить дату",
"cardCustomFieldsPopup-title": "редактировать настраиваемые поля",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Голосовать",
"vote-question": "Вопрос для голосования",
"vote-for-it": "за",
"vote-against": "против",
"cardDeletePopup-title": "Удалить карточку?",
"cardDetailsActionsPopup-title": "Действия в карточке",
"cardLabelsPopup-title": "Метки",
@@ -325,7 +325,7 @@
"filter-clear": "Очистить фильтр",
"filter-no-label": "Нет метки",
"filter-no-member": "Нет участников",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "Не применимо",
"filter-no-custom-fields": "Нет настраиваемых полей",
"filter-show-archive": "Показать архивные списки",
"filter-hide-empty": "Скрыть пустые списки",
@@ -771,6 +771,7 @@
"view-all": "Показать все",
"filter-by-unread": "Фильтр по непрочитанным",
"mark-all-as-read": "Отметить все как прочитанные",
"remove-all-read": "Remove all read",
"allow-rename": "Разрешить переименование",
"allowRenamePopup-title": "Разрешить переименование"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+192 -191
View File
@@ -75,34 +75,34 @@
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"activity-editComment": "izmenjen komentar",
"activity-deleteComment": "izbrisan komentar",
"add-attachment": "Add Attachment",
"add-attachment": "Dodaj prilog",
"add-board": "Add Board",
"add-card": "Add Card",
"add-card": "Dodaj karticu",
"add-swimlane": "Add Swimlane",
"add-subtask": "Add Subtask",
"add-subtask": "Dodaj podzadatak",
"add-checklist": "Add Checklist",
"add-checklist-item": "Dodaj novu stavku u listu",
"add-cover": "Dodaj zaglavlje",
"add-label": "Add Label",
"add-label": "Dodaj oznaku",
"add-list": "Dodaj Listu",
"add-members": "Dodaj Članove",
"add-members": "Dodaj članove",
"added": "Dodao",
"addMemberPopup-title": "Članovi",
"admin": "Administrator",
"admin-desc": "Može da pregleda i menja kartice, uklanja članove i menja podešavanja table",
"admin-announcement": "Announcement",
"admin-announcement": "Najava",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"admin-announcement-title": "Najava za administratora",
"all-boards": "Sve table",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Primeni",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive": "Premesti u arhivu",
"archive-all": "Premesti sve u arhivu",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-card": "Premesti karticu u arhivu",
"archive-list": "Premesti listu u arhivu",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
@@ -117,7 +117,7 @@
"attached": "Prikačeno",
"attachment": "Prikačeni dokument",
"attachment-delete-pop": "Brisanje prikačenog dokumenta je trajno. Ne postoji vraćanje obrisanog.",
"attachmentDeletePopup-title": "Obrisati prikačeni dokument ?",
"attachmentDeletePopup-title": "Obrisati prikačeni dokument?",
"attachments": "Prikačeni dokumenti",
"auto-watch": "Automatically watch boards when they are created",
"avatar-too-big": "Avatar je prevelik (maksimum je 70KB)",
@@ -129,25 +129,25 @@
"board-public-info": "Ova tabla će biti <strong>javna<strong>.",
"boardChangeColorPopup-title": "Promeni pozadinu table",
"boardChangeTitlePopup-title": "Preimenuj tablu",
"boardChangeVisibilityPopup-title": "Promeni Vidljivost",
"boardChangeVisibilityPopup-title": "Promeni vidljivost",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Settings",
"boardChangeViewPopup-title": "Board View",
"boards": "Table",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-cal": "Kalendar",
"board-view-swimlanes": "Swimlanes",
"board-view-collapse": "Sažmi",
"board-view-lists": "Lists",
"board-view-lists": "Liste",
"bucket-example": "Na primer \"Lista zadataka\"",
"cancel": "Otkaži",
"card-archived": "This card is moved to Archive.",
"card-archived": "Ova kartica je premeštena u arhivu.",
"board-archived": "This board is moved to Archive.",
"card-comments-title": "Ova kartica ima %s komentar.",
"card-delete-notice": "Brisanje je trajno. Izgubićeš sve akcije povezane sa ovom karticom.",
"card-delete-pop": "Sve akcije će biti uklonjene sa liste aktivnosti i kartica neće moći biti ponovo otvorena. Nema vraćanja unazad.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-due": "Krajnji datum",
"card-due": "Rok",
"card-due-on": "Završava se",
"card-spent": "Spent Time",
"card-edit-attachments": "Uredi priloge",
@@ -161,132 +161,132 @@
"card-start": "Početak",
"card-start-on": "Počinje",
"cardAttachmentsPopup-title": "Attach From",
"cardCustomField-datePopup-title": "Change date",
"cardCustomField-datePopup-title": "Promeni datum",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardStartVotingPopup-title": "Novo glasanje",
"vote-question": "Pitanje za glasanje",
"vote-for-it": "za",
"vote-against": "protiv",
"cardDeletePopup-title": "Delete Card?",
"cardDeletePopup-title": "Obrisati karticu?",
"cardDetailsActionsPopup-title": "Card Actions",
"cardLabelsPopup-title": "Labels",
"cardLabelsPopup-title": "Oznake",
"cardMembersPopup-title": "Članovi",
"cardMorePopup-title": "More",
"cardTemplatePopup-title": "Create template",
"cards": "Cards",
"cards-count": "Cards",
"cardMorePopup-title": "Više",
"cardTemplatePopup-title": "Napravi šemu",
"cards": "Kartice",
"cards-count": "Kartice",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-linkedCard": "Linked Card",
"cardType-card": "Kartica",
"cardType-linkedCard": "Povezana kartica",
"cardType-linkedBoard": "Linked Board",
"change": "Change",
"change-avatar": "Change Avatar",
"change-password": "Change Password",
"change-permissions": "Change permissions",
"change-settings": "Izmeni podešavanja",
"changeAvatarPopup-title": "Change Avatar",
"changeLanguagePopup-title": "Change Language",
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Izmeni podešavanja",
"subtasks": "Subtasks",
"change": "Promeni",
"change-avatar": "Promeni avatara",
"change-password": "Promeni lozinku",
"change-permissions": "Promeni dozvole",
"change-settings": "Promeni podešavanja",
"changeAvatarPopup-title": "Promeni avatara",
"changeLanguagePopup-title": "Promeni jezik",
"changePasswordPopup-title": "Promeni lozinku",
"changePermissionsPopup-title": "Promeni dozvole",
"changeSettingsPopup-title": "Promeni podešavanja",
"subtasks": "Podzadaci",
"checklists": "Liste",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close": "Zatvori",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-black": "crno",
"color-blue": "plavo",
"color-crimson": "grimizno",
"color-darkgreen": "tamnozeleno",
"color-gold": "zlatno",
"color-gray": "sivo",
"color-green": "zeleno",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-navy": "mornarsko",
"color-orange": "narandžasto",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-plum": "šljiva",
"color-purple": "ljubičasto",
"color-red": "crveno",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-silver": "srebrno",
"color-sky": "nebesko",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"color-white": "belo",
"color-yellow": "žuto",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment": "Komentar",
"comment-placeholder": "Napiši komentar",
"comment-only": "Samo komentari",
"comment-only-desc": "Can comment on cards only.",
"no-comments": "No comments",
"no-comments-desc": "Can not see comments and activities.",
"worker": "Radnik",
"worker-desc": "Može samo da pomera kartice, dodeljuje sebe kartici i da komentariše. ",
"computer": "Computer",
"computer": "Računar",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"linkCardPopup-title": "Link Card",
"linkCardPopup-title": "Poveži karticu",
"searchElementPopup-title": "Pretraga",
"copyCardPopup-title": "Copy Card",
"copyCardPopup-title": "Kopiraj karticu",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
"create": "Create",
"create": "Napravi",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"createCustomField": "Create Field",
"createCustomFieldPopup-title": "Create Field",
"createLabelPopup-title": "Napravi oznaku",
"createCustomField": "Napravi polje",
"createCustomFieldPopup-title": "Napravi polje",
"current": "current",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Checkbox",
"custom-field-date": "Datum",
"custom-field-dropdown": "Dropdown List",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown": "Padajuća lista",
"custom-field-dropdown-none": "(ništa)",
"custom-field-dropdown-options": "Opcije liste",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-number": "Number",
"custom-field-text": "Text",
"custom-field-dropdown-unknown": "(nepoznato)",
"custom-field-number": "Broj",
"custom-field-text": "Tekst",
"custom-fields": "Custom Fields",
"date": "Datum",
"decline": "Decline",
"decline": "Odbij",
"default-avatar": "Default avatar",
"delete": "Delete",
"delete": "Obriši",
"deleteCustomFieldPopup-title": "Delete Custom Field?",
"deleteLabelPopup-title": "Delete Label?",
"description": "Description",
"deleteLabelPopup-title": "Obrisati oznaku?",
"description": "Opis",
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
"discard": "Discard",
"done": "Done",
"download": "Download",
"edit": "Edit",
"edit-avatar": "Change Avatar",
"edit-profile": "Edit Profile",
"discard": "Odbaci",
"done": "Završeno",
"download": "Preuzmi",
"edit": "Uredi",
"edit-avatar": "Promeni avatara",
"edit-profile": "Uredi profil",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Izmeni početni datum",
"editCardDueDatePopup-title": "Izmeni krajnji datum",
"editCustomFieldPopup-title": "Edit Field",
"editCustomFieldPopup-title": "Izmeni polje",
"editCardSpentTimePopup-title": "Change spent time",
"editLabelPopup-title": "Change Label",
"editNotificationPopup-title": "Izmeni notifikaciju",
"editProfilePopup-title": "Edit Profile",
"email": "Email",
"editLabelPopup-title": "Izmeni oznaku",
"editNotificationPopup-title": "Izmeni obaveštenje",
"editProfilePopup-title": "Izmeni profil",
"email": "Epošta",
"email-enrollAccount-subject": "An account created for you on __siteName__",
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
"email-fail": "Sending email failed",
"email-fail": "Neuspelo slanje epošte",
"email-fail-text": "Error trying to send email",
"email-invalid": "Invalid email",
"email-invite": "Invite via Email",
@@ -304,9 +304,9 @@
"error-json-malformed": "Your text is not valid JSON",
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
"error-list-doesNotExist": "This list does not exist",
"error-user-doesNotExist": "This user does not exist",
"error-user-notAllowSelf": "You can not invite yourself",
"error-user-notCreated": "This user is not created",
"error-user-doesNotExist": "Korisnik ne postoji",
"error-user-notAllowSelf": "Ne možeš pozvati samog sebe",
"error-user-notCreated": "Korisnik nije kreiran",
"error-username-taken": "Korisničko ime je već zauzeto",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
@@ -322,25 +322,25 @@
"filter": "Filter",
"filter-cards": "Filtriraj kartice ili liste",
"list-filter-label": "Filtriraj liste po naslovu",
"filter-clear": "Clear filter",
"filter-clear": "Očisti filter",
"filter-no-label": "Nema oznake",
"filter-no-member": "Nema člana",
"filter-no-assignee": "Nema zastupnika",
"filter-no-custom-fields": "No Custom Fields",
"filter-show-archive": "Prikaži arhivirane liste",
"filter-hide-empty": "Sakrij prazne liste",
"filter-on": "Filter is on",
"filter-on": "Filter je uključen",
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
"filter-to-selection": "Filter to selection",
"advanced-filter-label": "Advanced Filter",
"advanced-filter-label": "Napredni filter",
"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": "Full Name",
"fullname": "Puno ime",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Sakrij sistemske poruke",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
"link": "Link",
"home": "Početna",
"import": "Uvezi",
"link": "Veza",
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Uvezi tablu iz Trella",
@@ -349,7 +349,7 @@
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
"from-trello": "From Trello",
"from-wekan": "From previous export",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-json-placeholder": "Paste your valid JSON data here",
@@ -357,48 +357,48 @@
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"info": "Version",
"initials": "Initials",
"importMapMembersAddPopup-title": "Izaberi člana",
"info": "Verzija",
"initials": "Inicijali",
"invalid-date": "Neispravan datum",
"invalid-time": "Invalid time",
"invalid-user": "Invalid user",
"invalid-time": "Neispravno vreme",
"invalid-user": "Neispravan korisnik",
"joined": "joined",
"just-invited": "You are just invited to this board",
"keyboard-shortcuts": "Keyboard shortcuts",
"label-create": "Create Label",
"keyboard-shortcuts": "Prečice tastature",
"label-create": "Napravi oznaku",
"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": "Labels",
"language": "Language",
"labels": "Oznake",
"language": "Jezik",
"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": "Link to this card",
"link-card": "Veza do ove kartice",
"list-archive-cards": "Move all cards in this list to Archive",
"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": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"list-move-cards": "Premesti sve kartice u ovoj listi",
"list-select-cards": "Izaberi sve kartice u ovoj listi",
"set-color-list": "Postavi boju",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"listMorePopup-title": "Više",
"link-list": "Link to this list",
"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": "Lists",
"lists": "Liste",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
"log-in": "Log In",
"loginPopup-title": "Log In",
"log-out": "Odjavi se",
"log-in": "Prijava",
"loginPopup-title": "Prijava",
"memberMenuPopup-title": "Member Settings",
"members": "Članovi",
"menu": "Menu",
"menu": "Meni",
"move-selection": "Move selection",
"moveCardPopup-title": "Move Card",
"moveCardPopup-title": "Premesti karticu",
"moveCardToBottom-title": "Premesti na dno",
"moveCardToTop-title": "Premesti na vrh",
"moveSelectionPopup-title": "Move selection",
@@ -416,7 +416,7 @@
"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": "Budite obavešteni o novim događajima u tablama, listama ili karticama koje pratite.",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "opciono",
"or": "ili",
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
@@ -435,21 +435,21 @@
"quick-access-description": "Star a board to add a shortcut in this bar.",
"remove-cover": "Remove Cover",
"remove-from-board": "Ukloni iz table",
"remove-label": "Remove Label",
"listDeletePopup-title": "Delete List ?",
"remove-label": "Ukloni oznaku",
"listDeletePopup-title": "Obrisati listu?",
"remove-member": "Ukloni člana",
"remove-member-from-card": "Ukloni iz kartice",
"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": "Ukloni člana ?",
"removeMemberPopup-title": "Ukloni člana?",
"rename": "Preimenuj",
"rename-board": "Preimenuj tablu",
"restore": "Oporavi",
"save": "Snimi",
"search": "Pretraga",
"rules": "Rules",
"rules": "Pravila",
"search-cards": "Pretraži u naslovima kartica/listi, opsima i proizvoljnim poljima sa ove table",
"search-example": "Text to search for?",
"select-color": "Select Color",
"search-example": "Tekst za pretragu?",
"select-color": "Izaberi boju",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"setWipLimitPopup-title": "Set WIP Limit",
"shortcut-assign-self": "Pridruži sebe trenutnoj kartici",
@@ -481,7 +481,7 @@
"title": "Naslov",
"tracking": "Praćenje",
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
"type": "Type",
"type": "Tip",
"unassign-member": "Unassign member",
"unsaved-description": "Imaš nesnimljen opis.",
"unwatch": "Ne posmatraj",
@@ -498,22 +498,22 @@
"welcome-swimlane": "Milestone 1",
"welcome-list1": "Osnove",
"welcome-list2": "Napredno",
"card-templates-swimlane": "Card Templates",
"list-templates-swimlane": "List Templates",
"card-templates-swimlane": "Šeme kartice",
"list-templates-swimlane": "Šeme liste",
"board-templates-swimlane": "Board Templates",
"what-to-do": "Šta želiš da uradiš ?",
"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": "Settings",
"people": "People",
"registration": "Registration",
"settings": "Podešavanja",
"people": "Ljudi",
"registration": "Registracija",
"disable-self-registration": "Disable Self-Registration",
"invite": "Invite",
"invite-people": "Invite People",
"to-boards": "To board(s)",
"email-addresses": "Email Addresses",
"email-addresses": "Adrese epošte",
"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",
@@ -521,8 +521,8 @@
"smtp-port": "SMTP Port",
"smtp-username": "Korisničko ime",
"smtp-password": "Lozinka",
"smtp-tls": "TLS support",
"send-from": "From",
"smtp-tls": "TLS podrška",
"send-from": "Od",
"send-smtp-test": "Send a test email to yourself",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
@@ -540,8 +540,8 @@
"disable-webhook": "Onesposobi ovu mrežnu kuku",
"global-webhook": "Globalna mrežna kuka",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Node_version": "Node version",
"no-name": "(Nepoznato)",
"Node_version": "Verzija čvora",
"Meteor_version": "Verzija Meteor-a",
"MongoDB_version": "Verzija MongoDB-a",
"MongoDB_storage_engine": "MongoDB mehanizam za skladištenje",
@@ -555,16 +555,16 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"days": "dana",
"hours": "sati",
"minutes": "minuta",
"seconds": "sekundi",
"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": "Yes",
"no": "No",
"accounts": "Accounts",
"yes": "Da",
"no": "Ne",
"accounts": "Nalozi",
"accounts-allowEmailChange": "Allow Email Change",
"accounts-allowUserNameChange": "Allow Username Change",
"createdAt": "Created at",
@@ -576,10 +576,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"setCardColorPopup-title": "Podesi boju",
"setCardActionsColorPopup-title": "Izaberi boju",
"setSwimlaneColorPopup-title": "Izaberi boju",
"setListColorPopup-title": "Izaberi boju",
"assigned-by": "Dodeljeno od strane",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -587,7 +587,7 @@
"boardDeletePopup-title": "Delete Board?",
"delete-board": "Delete Board",
"default-subtasks-board": "Subtasks for __board__ board",
"default": "Default",
"default": "Predefinisano",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
"card-settings": "Podešavanja kartice",
@@ -612,22 +612,22 @@
"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-rule": "Pravilo",
"r-add-trigger": "Dodaj okidač",
"r-add-action": "Dodaj akciju",
"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",
"r-add-rule": "Dodaj pravilo",
"r-view-rule": "Pregledaj pravilo",
"r-delete-rule": "Obriši pravilo",
"r-new-rule-name": "Novi naslov pravila",
"r-no-rules": "Nema pravila",
"r-when-a-card": "Kada kartica",
"r-is": "je",
"r-is-moved": "je premeštena",
"r-added-to": "dodata u",
"r-removed-from": "Uklonjena iz",
"r-the-board": "table",
"r-list": "liste",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
@@ -643,7 +643,7 @@
"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-completed": "Završeno",
"r-made-incomplete": "Made incomplete",
"r-when-a-item": "When a checklist item is",
"r-when-the-item": "When the checklist item",
@@ -655,11 +655,11 @@
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-card": "kartica",
"r-add": "Dodaj",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove": "Ukloni",
"r-label": "oznaka",
"r-member": "član",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
@@ -668,30 +668,30 @@
"r-items-check": "items of checklist",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-item": "stavka",
"r-of-checklist": "of checklist",
"r-send-email": "Send an email",
"r-to": "to",
"r-subject": "subject",
"r-rule-details": "Rule details",
"r-send-email": "Pošalji epoštu",
"r-to": "za",
"r-subject": "naslov",
"r-rule-details": "Detalji pravila",
"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-send-email": "Pošalji epoštu",
"r-d-send-email-to": "za",
"r-d-send-email-subject": "naslov",
"r-d-send-email-message": "poruka",
"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-d-add-label": "Dodaj oznaku",
"r-d-remove-label": "Ukloni oznaku",
"r-create-card": "Napravi novu karticu",
"r-in-list": "u listi",
"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-add-member": "Dodaj člana",
"r-d-remove-member": "Ukloni člana",
"r-d-remove-all-member": "Ukloni sve članove",
"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",
@@ -720,11 +720,11 @@
"ldap": "LDAP",
"oauth2": "OAuth2",
"cas": "CAS",
"authentication-method": "Authentication method",
"authentication-type": "Authentication type",
"authentication-method": "Metod autentifikacije",
"authentication-type": "Tip autentifikacije",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"layout": "Raspored",
"hide-logo": "Sakrij 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",
@@ -736,8 +736,8 @@
"swimlaneDeletePopup-title": "Delete Swimlane ?",
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Restore all",
"delete-all": "Delete all",
"loading": "Loading, please wait.",
"delete-all": "Obriši sve",
"loading": "Učitavanje, molim sačekajte.",
"previous_as": "prošli put je bio",
"act-a-dueAt": "modifikovano u vreme\nKada:__vremenskaVrednost__\nGde:__kartica__\nprethodni rok je bio__StaraVremenskaVrednost",
"act-a-endAt": "izmenjeno vreme završetaka za__vremenskaVrednost__od (__StaraVremenskaVrednost__)",
@@ -760,8 +760,8 @@
"accounts-allowUserDelete": "Dozvoli korisnicima da sami brišu svoj nalog",
"hide-minicard-label-text": "Sakrij tekst nalepnice minikartice",
"show-desktop-drag-handles": "Prikaži kvake za povlačenje sa radne površine",
"assignee": "Asignat",
"cardAssigneesPopup-title": "Asignat",
"assignee": "Zastupnik",
"cardAssigneesPopup-title": "Zastupnik",
"addmore-detail": "Dodaj detaljaniji opis",
"show-on-card": "Prikaži na kartici",
"new": "Novo",
@@ -771,6 +771,7 @@
"view-all": "Prikaži sve",
"filter-by-unread": "Filtriraj nepročitano",
"mark-all-as-read": "Označi sve kao pročitano",
"remove-all-read": "Ukloni sve pročitano",
"allow-rename": "Dozvoli preimenovanje",
"allowRenamePopup-title": "Dozvoli preimenovanje"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "查看全部",
"filter-by-unread": "过滤未读",
"mark-all-as-read": "标记全部已读",
"remove-all-read": "Remove all read",
"allow-rename": "允许重命名",
"allowRenamePopup-title": "允许重命名"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+8 -7
View File
@@ -152,8 +152,8 @@
"card-spent": "耗時",
"card-edit-attachments": "編輯附件",
"card-edit-custom-fields": "編輯自訂欄位",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "開始投票",
"card-cancel-voting": "移除投票",
"card-edit-labels": "編輯標籤",
"card-edit-members": "編輯成員",
"card-labels-title": "更改該卡片上的標籤",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "附件來源",
"cardCustomField-datePopup-title": "修改日期",
"cardCustomFieldsPopup-title": "編輯自訂欄位",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "建立投票",
"vote-question": "投票題目",
"vote-for-it": "同意",
"vote-against": "反對",
"cardDeletePopup-title": "徹底刪除卡片?",
"cardDetailsActionsPopup-title": "卡片操作",
"cardLabelsPopup-title": "標籤",
@@ -325,7 +325,7 @@
"filter-clear": "清除篩選條件",
"filter-no-label": "沒有標籤",
"filter-no-member": "沒有成員",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "沒有代理人",
"filter-no-custom-fields": "沒有自訂欄位",
"filter-show-archive": "顯示封存的清單",
"filter-hide-empty": "隱藏空清單",
@@ -771,6 +771,7 @@
"view-all": "檢視全部",
"filter-by-unread": "篩選: 未讀",
"mark-all-as-read": "標示全部已讀",
"remove-all-read": "移除所有已讀",
"allow-rename": "允許更名",
"allowRenamePopup-title": "允許更名"
}
+4 -1
View File
@@ -282,7 +282,10 @@ if (Meteor.isServer) {
);
}
Notifications.getUsers(watchers).forEach(user => {
Notifications.notify(user, title, description, params);
// don't notify a user of their own behavior
if (user._id !== userId) {
Notifications.notify(user, title, description, params);
}
});
const integrations = Integrations.find({
+31 -31
View File
@@ -334,8 +334,8 @@ Cards.attachSchema(
'vote.end': {
type: Date,
optional: true,
defaultValue: null
}
defaultValue: null,
},
}),
);
@@ -728,7 +728,7 @@ Cards.helpers({
parentString(sep) {
return this.parentList()
.map(function (elem) {
.map(function(elem) {
return elem.title;
})
.join(sep);
@@ -1449,11 +1449,11 @@ Cards.mutations({
$set: {
vote: {
question,
positive:[],
negative:[]
positive: [],
negative: [],
},
}
}
},
};
},
unsetVote() {
return {
@@ -1467,32 +1467,32 @@ Cards.mutations({
case true:
// vote for it
return {
$pull:{
"vote.negative": userId
$pull: {
'vote.negative': userId,
},
$addToSet: {
"vote.positive": userId
}
}
'vote.positive': userId,
},
};
case false:
// vote against
return {
$pull:{
"vote.positive": userId
$pull: {
'vote.positive': userId,
},
$addToSet: {
"vote.negative" : userId
}
}
'vote.negative': userId,
},
};
default:
// Remove votes
return {
$pull:{
"vote.positive": userId,
"vote.negative" : userId
$pull: {
'vote.positive': userId,
'vote.negative': userId,
},
}
};
}
},
});
@@ -1897,7 +1897,7 @@ if (Meteor.isServer) {
});
//New activity for card moves
Cards.after.update(function (userId, doc, fieldNames) {
Cards.after.update(function(userId, doc, fieldNames) {
const oldListId = this.previous.listId;
const oldSwimlaneId = this.previous.swimlaneId;
const oldBoardId = this.previous.boardId;
@@ -1943,7 +1943,7 @@ if (Meteor.isServer) {
// change list modifiedAt, when user modified the key values in timingaction array, if it's endAt, put the modifiedAt of list back to one year ago for sorting purpose
const modifiedAt = new Date(
new Date(value).getTime() -
(action === 'endAt' ? 365 * 24 * 3600 * 1e3 : 0),
(action === 'endAt' ? 365 * 24 * 3600 * 1e3 : 0),
); // set it as 1 year before
const boardId = list.boardId;
Lists.direct.update(
@@ -1997,7 +1997,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'GET',
'/api/boards/:boardId/swimlanes/:swimlaneId/cards',
function (req, res) {
function(req, res) {
const paramBoardId = req.params.boardId;
const paramSwimlaneId = req.params.swimlaneId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
@@ -2007,7 +2007,7 @@ if (Meteor.isServer) {
boardId: paramBoardId,
swimlaneId: paramSwimlaneId,
archived: false,
}).map(function (doc) {
}).map(function(doc) {
return {
_id: doc._id,
title: doc.title,
@@ -2031,7 +2031,7 @@ if (Meteor.isServer) {
* title: string,
* description: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function(
req,
res,
) {
@@ -2044,7 +2044,7 @@ if (Meteor.isServer) {
boardId: paramBoardId,
listId: paramListId,
archived: false,
}).map(function (doc) {
}).map(function(doc) {
return {
_id: doc._id,
title: doc.title,
@@ -2066,7 +2066,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'GET',
'/api/boards/:boardId/lists/:listId/cards/:cardId',
function (req, res) {
function(req, res) {
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
const paramCardId = req.params.cardId;
@@ -2098,7 +2098,7 @@ if (Meteor.isServer) {
* @param {string} [assignees] the array of maximum one ID of assignee of the new card
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function(
req,
res,
) {
@@ -2205,7 +2205,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'PUT',
'/api/boards/:boardId/lists/:listId/cards/:cardId',
function (req, res) {
function(req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
const paramCardId = req.params.cardId;
@@ -2504,7 +2504,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'DELETE',
'/api/boards/:boardId/lists/:listId/cards/:cardId',
function (req, res) {
function(req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
+8
View File
@@ -198,6 +198,10 @@ if (Meteor.isServer) {
return process.env.CAS_ENABLED === 'true';
}
function isApiEnabled() {
return process.env.WITH_API === 'true';
}
Meteor.methods({
sendInvitation(emails, boards) {
check(emails, [String]);
@@ -314,6 +318,10 @@ if (Meteor.isServer) {
return isCasEnabled();
},
_isApiEnabled() {
return isApiEnabled();
},
// Gets all connection methods to use it in the Template
getAuthenticationsEnabled() {
return {
+25 -2
View File
@@ -1,4 +1,4 @@
const DateString = Match.Where(function(dateAsString) {
const DateString = Match.Where(function (dateAsString) {
check(dateAsString, String);
return moment(dateAsString, moment.ISO_8601).isValid();
});
@@ -285,6 +285,29 @@ export class TrelloCreator {
cardToCreate.members = wekanMembers;
}
}
// add vote
if (card.idMembersVoted) {
// Trello only know's positive votes
const positiveVotes = [];
card.idMembersVoted.forEach(trelloId => {
if (this.members[trelloId]) {
const wekanId = this.members[trelloId];
// we may map multiple Trello members to the same wekan user
// in which case we risk adding the same user multiple times
if (!positiveVotes.find(wId => wId === wekanId)) {
positiveVotes.push(wekanId);
}
}
return true;
})
if (positiveVotes.length > 0) {
cardToCreate.vote = {
question: cardToCreate.title,
positive: positiveVotes,
}
}
}
// insert card
const cardId = Cards.direct.insert(cardToCreate);
// keep track of Trello id => Wekan id
@@ -345,7 +368,7 @@ export class TrelloCreator {
// so we make it server only, and let UI catch up once it is done, forget about latency comp.
const self = this;
if (Meteor.isServer) {
file.attachData(att.url, function(error) {
file.attachData(att.url, function (error) {
file.boardId = boardId;
file.cardId = cardId;
file.userId = self._user(att.idMemberCreator);
+47
View File
@@ -1,3 +1,5 @@
import { SyncedCron } from 'meteor/percolate:synced-cron';
// Sandstorm context is detected using the METEOR_SETTINGS environment variable
// in the package definition.
const isSandstorm =
@@ -812,6 +814,16 @@ if (Meteor.isServer) {
board.addMember(user._id);
user.addInvite(boardId);
//Check if there is a subtasks board
if (board.subtasksDefaultBoardId){
const subBoard = Boards.findOne(board.subtasksDefaultBoardId);
//If there is, also add user to that board
if (subBoard) {
subBoard.addMember(user._id);
user.addInvite(subBoard._id);
}
}
try {
const params = {
user: user.username,
@@ -926,6 +938,38 @@ if (Meteor.isServer) {
});
}
const addCronJob = _.debounce(
Meteor.bindEnvironment(function notificationCleanupDebounced() {
// passed in the removeAge has to be a number standing for the number of days after a notification is read before we remove it
const envRemoveAge =
process.env.NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE;
// default notifications will be removed 2 days after they are read
const defaultRemoveAge = 2;
const removeAge = parseInt(envRemoveAge, 10) || defaultRemoveAge;
SyncedCron.add({
name: 'notification_cleanup',
schedule: parser => parser.text('every 1 days'),
job: () => {
for (const user of Users.find()) {
for (const notification of user.profile.notifications) {
if (notification.read) {
const removeDate = new Date(notification.read);
removeDate.setDate(removeDate.getDate() + removeAge);
if (removeDate <= new Date()) {
user.removeNotification(notification.activity);
}
}
}
}
},
});
SyncedCron.start();
}),
500,
);
if (Meteor.isServer) {
// Let mongoDB ensure username unicity
Meteor.startup(() => {
@@ -939,6 +983,9 @@ if (Meteor.isServer) {
},
{ unique: true },
);
Meteor.defer(() => {
addCronJob();
});
});
// OLD WAY THIS CODE DID WORK: When user is last admin of board,
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.93.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.93.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+2 -2
View File
@@ -1524,7 +1524,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<ul class="toc-list-h1">
<li>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v3.91">Wekan REST API v3.91</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v3.93">Wekan REST API v3.93</a>
</li>
@@ -2022,7 +2022,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id="wekan-rest-api">Wekan REST API v3.91</h1>
<h1 id="wekan-rest-api">Wekan REST API v3.93</h1>
<blockquote>
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
</blockquote>
+1 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v3.91
version: v3.93
description: |
The REST API allows you to control and extend Wekan with ease.
+2 -2
View File
@@ -18,8 +18,8 @@ REM Install chocolatey
choco install -y git curl python2 dotnet4.5.2 nano mongodb-3 mongoclient meteor
curl -O https://nodejs.org/dist/v12.16.1/node-v12.16.1-x64.msi
call node-v12.16.1-x64.msi
curl -O https://nodejs.org/dist/v12.16.2/node-v12.16.2-x64.msi
call node-v12.16.2-x64.msi
call npm config -g set msvs_version 2015
call meteor npm config -g set msvs_version 2015
+2 -2
View File
@@ -5,7 +5,7 @@ echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correct
echo " You can still use any other locale as your main locale."
#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
#NODE_VERSION=12.16.1
#NODE_VERSION=12.16.2
#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
function pause(){
@@ -79,7 +79,7 @@ do
curl -0 -L https://npmjs.org/install.sh | sudo sh
sudo chown -R $(id -u):$(id -g) $HOME/.npm
sudo npm -g install n
sudo n 12.16.1
sudo n 12.16.2
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
#sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
+3 -2
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 391,
appVersion = 393,
# Increment this for every release.
appMarketingVersion = (defaultText = "3.91.0~2020-04-08"),
appMarketingVersion = (defaultText = "3.93.0~2020-04-10"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
@@ -242,6 +242,7 @@ const myCommand :Spk.Manifest.Command = (
(key = "SCROLLINERTIA", value="0"),
(key = "SCROLLAMOUNT", value="auto"),
(key = "CARD_OPENED_WEBHOOK_ENABLED", value="false"),
(key = "NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE", value=""),
(key = "BIGEVENTS_PATTERN", value="NONE"),
(key = "MATOMO_ADDRESS", value=""),
(key = "MATOMO_SITE_ID", value=""),
+5 -1
View File
@@ -3,7 +3,7 @@
# All supported keys are defined here together with descriptions and default values
# list of supported keys
keys="DEBUG MONGO_URL MONGODB_BIND_UNIX_SOCKET MONGO_URL MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API RICHER_CARD_COMMENT_EDITOR CARD_OPENED_WEBHOOK_ENABLED 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 MAX_IMAGE_PIXEL IMAGE_COMPRESS_RATIO BIGEVENTS_PATTERN NOTIFY_DUE_DAYS_BEFORE_AND_AFTER NOTIFY_DUE_AT_HOUR_OF_DAY EMAIL_NOTIFICATION_TIMEOUT CORS CORS_ALLOW_HEADERS CORS_EXPOSE_HEADERS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_LOGIN_STYLE 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_ID_TOKEN_WHITELIST_FIELDS OAUTH2_EMAIL_MAP OAUTH2_REQUEST_PERMISSIONS 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_AUTHENTICATION LDAP_USER_AUTHENTICATION_FIELD 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 ATTACHMENTS_STORE_PATH SCROLLINERTIA SCROLLAMOUNT"
keys="DEBUG MONGO_URL MONGODB_BIND_UNIX_SOCKET MONGO_URL MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API RICHER_CARD_COMMENT_EDITOR CARD_OPENED_WEBHOOK_ENABLED 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 MAX_IMAGE_PIXEL IMAGE_COMPRESS_RATIO BIGEVENTS_PATTERN NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE NOTIFY_DUE_DAYS_BEFORE_AND_AFTER NOTIFY_DUE_AT_HOUR_OF_DAY EMAIL_NOTIFICATION_TIMEOUT CORS CORS_ALLOW_HEADERS CORS_EXPOSE_HEADERS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_LOGIN_STYLE 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_ID_TOKEN_WHITELIST_FIELDS OAUTH2_EMAIL_MAP OAUTH2_REQUEST_PERMISSIONS 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_AUTHENTICATION LDAP_USER_AUTHENTICATION_FIELD 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 ATTACHMENTS_STORE_PATH SCROLLINERTIA SCROLLAMOUNT"
# default values
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
@@ -104,6 +104,10 @@ DESCRIPTION_IMAGE_COMPRESS_RATIO="Image compress ratio: Allow to shrink attached
DEFAULT_IMAGE_COMPRESS_RATIO=""
KEY_IMAGE_COMPRESS_RATIO="image-compress-ratio"
DESCRIPTION_NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="Number of days after a notification is read before we remove it. Default: 2."
DEFAULT_NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=""
KEY_NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="notification-tray-after-read-days-before-remove"
DESCRIPTION_BIGEVENTS_PATTERN="Big events pattern: Notify always due etc regardless of notification settings. Default: NONE, All: received|start|due|end, Disabled: NONE"
DEFAULT_BIGEVENTS_PATTERN="NONE"
KEY_BIGEVENTS_PATTERN="bigevents-pattern"
+5
View File
@@ -105,6 +105,11 @@ echo -e "\t$ snap set $SNAP_NAME attachments-store-path='/var/snap/wekan/common/
echo -e "Disabled:"
echo -e "\t$ snap set $SNAP_NAME attachments-store-path=''"
echo -e "\n"
echo -e "NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE https://github.com/wekan/wekan/pull/2998"
echo -e "Number of days after a notification is read before we remove it. Default: 2."
echo -e "Default:"
echo -e "\t$ snap set $SNAP_NAME notification-tray-after-read-days-before-remove='2'"
echo -e "\n"
echo -e "BIGEVENTS DUE ETC NOTIFICATIONS https://github.com/wekan/wekan/pull/2541"
echo -e "Big events pattern: Notify always due etc regardless of notification settings. Default: due, All: received|start|due|end, Disabled: NONE"
echo -e "Default:"
+1 -1
View File
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.16.1
node-engine: 12.16.2
node-packages:
- node-gyp
- node-pre-gyp
+1 -1
View File
@@ -2,7 +2,7 @@
set -euxo pipefail
BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA"
NODE_VERSION=v12.16.1
NODE_VERSION=v12.16.2
#METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer
USE_EDGE=false
METEOR_EDGE=1.5-beta.17
+5
View File
@@ -48,6 +48,11 @@ 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 # ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
REM # Number of days after a notification is read before we remove it.
REM # Default: 2
REM SET NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
REM # ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
REM # https://github.com/wekan/wekan/pull/2541
REM # Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
+5
View File
@@ -54,6 +54,11 @@
#export MAX_IMAGE_PIXEL=1024
#export IMAGE_COMPRESS_RATIO=80
#---------------------------------------------------------------
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
# Number of days after a notification is read before we remove it.
# Default: 2
#- NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
+5
View File
@@ -244,6 +244,11 @@ services:
#-MAX_IMAGE_PIXEL=1024
#-IMAGE_COMPRESS_RATIO=80
#---------------------------------------------------------------
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
# Number of days after a notification is read before we remove it.
# Default: 2
#- NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",