Compare commits

...
38 Commits
Author SHA1 Message Date
Lauri Ojansivu ad241b9f84 v2.58 2019-04-06 13:54:32 +03:00
Lauri Ojansivu 53e76288cb [Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board](https://github.com/wekan/wekan/commit/0f15b6d1982c383f76e8411cb501ff27e8febd42).
Thanks to xet7 !
2019-04-06 13:52:05 +03:00
Lauri Ojansivu 0f15b6d198 - Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board.
Thanks to xet7 !
2019-04-06 13:47:15 +03:00
Lauri Ojansivu 93a5bb2baa Add the following new features:
- [Duplicate Board](https://github.com/wekan/wekan/issues/2257). Related #2225.
  Thanks to Angtrim. Closes #2257.

and fix the following bugs:

- [Fix Swimlane Rules don't work](https://github.com/wekan/wekan/issues/2225).
  Thanks to Angtrim.
2019-04-06 09:19:33 +03:00
Lauri Ojansivu ebfc8e5a1b Fix lint errors.
Thanks to xet7 !
2019-04-06 09:00:13 +03:00
Lauri Ojansivu 972b9b6e91 Remove extra files.
Thanks to xet7 !
2019-04-06 08:50:56 +03:00
Lauri Ojansivu 56cccc6781 Merge remote-tracking branch 'Angtrim/feature-duplicate' into edge 2019-04-06 08:46:40 +03:00
Lauri Ojansivu b680bb5372 - [Remove not needed ARGS from Dockerfile to reduce amount of Docker layers](https://github.com/wekan/wekan/issues/2301).
Thanks to folhabranca !

Closes #2301
2019-04-06 08:14:37 +03:00
Lauri Ojansivu 217b3ae488 Remove not needed ARGS from Dockerfile to reduce amount of Docker layers.
Thanks to folhabranca !

Closes #2301
2019-04-06 08:11:08 +03:00
Lauri Ojansivu 959392f815 [Center reduce left margin in card view on mobile browser](https://github.com/wekan/wekan/pull/2314).
Thanks to hupptechnologies !
2019-04-06 07:57:30 +03:00
Lauri Ojansivu d1e13e48fe Restore original meteor packages and versions.
Thanks to xet7 !
2019-04-06 07:47:08 +03:00
Lauri Ojansivu 1c04502963 Merge branch 'devel' of github.com:wekan/wekan into devel 2019-04-06 07:45:16 +03:00
Lauri Ojansivu 34da23783e Merge pull request #2314 from hupptechnologies/card-view-on-mobile-browser
Issue: Center reduce left margin in card view on mobile browser #2188
2019-04-06 07:45:03 +03:00
Lauri Ojansivu 2b603cfbb5 Merge branch 'edge' into devel 2019-04-06 07:44:03 +03:00
Lauri Ojansivu a1fe22c08c [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313).
Thanks to chotaire.
2019-04-06 07:43:14 +03:00
Lauri Ojansivu bc04ae24a7 Merge pull request #2313 from chotaire/edge
Add proper variables for unjoin card
2019-04-05 22:10:05 +03:00
Angelo Gallarello 48216e1653 Minor fixes 2019-04-05 10:38:39 +02:00
hupptechnologies 8aca82a593 Issue: Center (or reduce left margin) in card view on mobile browser #2188
Resolved #2188
2019-04-05 13:27:41 +05:30
chotaire 68d8cbe68a Merge pull request #1 from chotaire/chotaire-patch-1
Add proper variables for unjoin card
2019-04-05 03:03:57 +02:00
chotaire 4bc3acb14d Add proper variables for unjoin card 2019-04-05 02:59:35 +02:00
Lauri Ojansivu a974ec9dee Update translations. 2019-04-04 20:22:25 +03:00
Lauri Ojansivu e91c43466d Merge pull request #2303 from fossabot/devel
Add license scan report and status
2019-04-02 16:36:29 +03:00
fossabot dfc4ab6dd8 Add license scan report and status
Signed-off-by: fossabot <badges@fossa.io>
2019-04-02 06:32:34 -07:00
Lauri Ojansivu 9f5ffde2dd v2.57 2019-04-02 15:26:40 +03:00
Lauri Ojansivu 678bef2360 Update changelog. 2019-04-02 15:19:21 +03:00
Lauri Ojansivu 3b12cdc179 Merge branch 'bentiss-spinners-no-IntersectionObserver' into devel 2019-04-02 15:15:34 +03:00
Benjamin Tissoires 261754f18b list: do not use IntersectionObserver to reduce CPU usage
Switch back to a custom spinner detection, as the IntersectionObserver
is eating a lot of CPU resources on idle.

This should also take care of #2250 properly: the previous `onDestroyed()`
was removing the resize and scroll callbacks, but they were not unique
enough, and they were shared across swimlanes. So if a list had 2 swimlanes
with spinners, when one was removed, the other was not triggering its
callbacks anymore.

Related: #2294
2019-04-01 23:54:35 +02:00
Lauri Ojansivu 980db9cb0c Merge branch 'edge' of github.com:wekan/wekan into edge 2019-03-30 19:07:05 +02:00
Lauri Ojansivu a80cd455de - [Add back zoom fixes of #2250](https://github.com/wekan/wekan/issues/2250).
Thanks to xet7 !
2019-03-30 19:06:09 +02:00
Lauri Ojansivu 289e3d6286 More deps. 2019-03-30 14:34:32 +02:00
Lauri Ojansivu 4b181620d8 Added nodejs to install dependencies.
Thanks to xet7 !
2019-03-30 14:30:04 +02:00
Lauri Ojansivu 088ec7fd94 [Add proper variables for join card](https://github.com/wekan/wekan/commit/289f1fe1340c85eb2af19825f4972e9057a86b7a),
fixes [Incorrect variable replacement on email notifications](https://github.com/wekan/wekan/issues/2295).

Thanks to justinr1234 !

Closes #2295
2019-03-29 14:39:35 +02:00
Lauri Ojansivu 289f1fe134 Merge pull request #2291 from justinr1234/patch-3
Add proper variables for join card Fixes #2285
2019-03-29 14:35:06 +02:00
Lauri Ojansivu 6b9ac52af6 Update translations. 2019-03-29 14:34:24 +02:00
Lauri Ojansivu 0e422eb70d [Revert spinner etc fixes of Wekan v2.56, because of some new bugs](https://github.com/wekan/wekan/issues/2250).
Thanks to gerroon !

Related #2250
2019-03-29 14:31:26 +02:00
Lauri Ojansivu df32545b07 Revert spinner etc fixes of Wekan v2.56, because of some new bugs.
Thanks to gerroon !

Related #2250
2019-03-29 14:27:37 +02:00
justinr1234 bab340a849 Add proper variables for join card Fixes #2285 2019-03-28 19:38:02 -05:00
Angelo Gallarello 477d71e0b9 Fixes 2019-02-12 23:40:12 +01:00
71 changed files with 450 additions and 340 deletions

No files matched your search

+35
View File
@@ -1,3 +1,38 @@
# v2.58 2019-04-06 Wekan release
This release adds the following new features:
- [Duplicate Board](https://github.com/wekan/wekan/issues/2257). Related #2225.
Thanks to Angtrim.
- [Add Duplicate Board tooltip, and remove adding text "Copy" to duplicated board](https://github.com/wekan/wekan/commit/0f15b6d1982c383f76e8411cb501ff27e8febd42).
Thanks to xet7.
amd fixes the following bugs:
- [Add proper variables for unjoin card](https://github.com/wekan/wekan/pull/2313).
Thanks to chotaire.
- [Center reduce left margin in card view on mobile browser](https://github.com/wekan/wekan/pull/2314).
Thanks to hupptechnologies.
- [Remove not needed ARGS from Dockerfile to reduce amount of Docker layers](https://github.com/wekan/wekan/issues/2301).
Thanks to folhabranca and xet7.
- [Fix Swimlane Rules don't work](https://github.com/wekan/wekan/issues/2225).
Thanks to Angtrim.
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.57 2019-04-02 Wekan release
This release fixes the following bugs, thanks to justinr1234:
- [Add proper variables for join card](https://github.com/wekan/wekan/commit/289f1fe1340c85eb2af19825f4972e9057a86b7a),
fixes [Incorrect variable replacement on email notifications](https://github.com/wekan/wekan/issues/2295).
and fixes the following bugs with Apache I-CLA, thanks to bentiss:
- [List: Do not use IntersectionObserver to reduce CPU usage](https://github.com/wekan/wekan/pull/2302).
Thanks to above GitHub users for their contributions and translators for their translations.
# v2.56 2019-03-27 Wekan release
This release [fixes the following bugs](https://github.com/wekan/wekan/pull/2287), thanks to bentiss with Apache I-CLA:
-94
View File
@@ -1,100 +1,6 @@
FROM ubuntu:cosmic
LABEL maintainer="wekan"
# Declare Arguments
ARG DEBUG
ARG NODE_VERSION
ARG METEOR_RELEASE
ARG METEOR_EDGE
ARG USE_EDGE
ARG NPM_VERSION
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
ARG MATOMO_DO_NOT_TRACK
ARG MATOMO_WITH_USERNAME
ARG BROWSER_POLICY_ENABLED
ARG TRUSTED_URL
ARG WEBHOOKS_ATTRIBUTES
ARG OAUTH2_ENABLED
ARG OAUTH2_LOGIN_STYLE
ARG OAUTH2_CLIENT_ID
ARG OAUTH2_SECRET
ARG OAUTH2_SERVER_URL
ARG OAUTH2_AUTH_ENDPOINT
ARG OAUTH2_USERINFO_ENDPOINT
ARG OAUTH2_TOKEN_ENDPOINT
ARG OAUTH2_ID_MAP
ARG OAUTH2_USERNAME_MAP
ARG OAUTH2_FULLNAME_MAP
ARG OAUTH2_EMAIL_MAP
ARG LDAP_ENABLE
ARG LDAP_PORT
ARG LDAP_HOST
ARG LDAP_BASEDN
ARG LDAP_LOGIN_FALLBACK
ARG LDAP_RECONNECT
ARG LDAP_TIMEOUT
ARG LDAP_IDLE_TIMEOUT
ARG LDAP_CONNECT_TIMEOUT
ARG LDAP_AUTHENTIFICATION
ARG LDAP_AUTHENTIFICATION_USERDN
ARG LDAP_AUTHENTIFICATION_PASSWORD
ARG LDAP_LOG_ENABLED
ARG LDAP_BACKGROUND_SYNC
ARG LDAP_BACKGROUND_SYNC_INTERVAL
ARG LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED
ARG LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS
ARG LDAP_ENCRYPTION
ARG LDAP_CA_CERT
ARG LDAP_REJECT_UNAUTHORIZED
ARG LDAP_USER_SEARCH_FILTER
ARG LDAP_USER_SEARCH_SCOPE
ARG LDAP_USER_SEARCH_FIELD
ARG LDAP_SEARCH_PAGE_SIZE
ARG LDAP_SEARCH_SIZE_LIMIT
ARG LDAP_GROUP_FILTER_ENABLE
ARG LDAP_GROUP_FILTER_OBJECTCLASS
ARG LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE
ARG LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE
ARG LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT
ARG LDAP_GROUP_FILTER_GROUP_NAME
ARG LDAP_UNIQUE_IDENTIFIER_FIELD
ARG LDAP_UTF8_NAMES_SLUGIFY
ARG LDAP_USERNAME_FIELD
ARG LDAP_FULLNAME_FIELD
ARG LDAP_EMAIL_FIELD
ARG LDAP_EMAIL_MATCH_ENABLE
ARG LDAP_EMAIL_MATCH_REQUIRE
ARG LDAP_EMAIL_MATCH_VERIFIED
ARG LDAP_MERGE_EXISTING_USERS
ARG LDAP_SYNC_USER_DATA
ARG LDAP_SYNC_USER_DATA_FIELDMAP
ARG LDAP_SYNC_GROUP_ROLES
ARG LDAP_DEFAULT_DOMAIN
ARG LDAP_SYNC_ADMIN_STATUS
ARG LDAP_SYNC_ADMIN_GROUPS
ARG HEADER_LOGIN_ID
ARG HEADER_LOGIN_FIRSTNAME
ARG HEADER_LOGIN_LASTNAME
ARG HEADER_LOGIN_EMAIL
ARG LOGOUT_WITH_TIMER
ARG LOGOUT_IN
ARG LOGOUT_ON_HOURS
ARG LOGOUT_ON_MINUTES
ARG CORS
ARG DEFAULT_AUTHENTICATION_METHOD
# Set the environment variables (defaults where required)
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
+4
View File
@@ -9,6 +9,7 @@
[![Code Climate](https://codeclimate.com/github/wekan/wekan/badges/gpa.svg "Code Climate")](https://codeclimate.com/github/wekan/wekan)
[![Project Dependencies](https://david-dm.org/wekan/wekan.svg "Project Dependencies")](https://david-dm.org/wekan/wekan)
[![Code analysis at Open Hub](https://img.shields.io/badge/code%20analysis-at%20Open%20Hub-brightgreen.svg "Code analysis at Open Hub")](https://www.openhub.net/p/wekan)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwekan%2Fwekan.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwekan%2Fwekan?ref=badge_shield)
## [Translate Wekan at Transifex](https://transifex.com/wekan/wekan)
@@ -133,3 +134,6 @@ with [Meteor](https://www.meteor.com).
[free_software]: https://en.wikipedia.org/wiki/Free_software
[vanila_badge]: https://vanila.io/img/join-chat-button2.png
[wekan_chat]: https://community.vanila.io/wekan
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwekan%2Fwekan.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwekan%2Fwekan?ref=badge_large)
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v2.56.0"
appVersion: "v2.58.0"
files:
userUploads:
- README.md
+3 -1
View File
@@ -22,7 +22,9 @@ template(name="boardList")
i.fa.js-star-board(
class="fa-star{{#if isStarred}} is-star-active{{else}}-o{{/if}}"
title="{{_ 'star-board-title'}}")
i.fa.js-clone-board(
class="fa-clone"
title="{{_ 'duplicate-board'}}")
if hasSpentTimeCards
i.fa.js-has-spenttime-cards(
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
+15
View File
@@ -55,6 +55,21 @@ BlazeComponent.extendComponent({
Meteor.user().toggleBoardStar(boardId);
evt.preventDefault();
},
'click .js-clone-board'(evt) {
Meteor.call('cloneBoard',
this.currentData()._id,
Session.get('fromBoard'),
(err, res) => {
if (err) {
this.setError(err.error);
} else {
Session.set('fromBoard', null);
Utils.goBoardId(res);
}
}
);
evt.preventDefault();
},
'click .js-accept-invite'() {
const boardId = this.currentData()._id;
Meteor.user().removeInvite(boardId);
+13
View File
@@ -93,14 +93,27 @@ $spaceBetweenTiles = 16px
.is-star-active
color: white
.fa-clone
position: absolute;
bottom: 0
font-size: 14px
height: 18px
line-height: 18px
opacity: 0
right: 0
padding: 9px 9px
transition-duration: .15s
transition-property: color, font-size, background
li:hover a
&:hover
.fa-star,
.fa-clone,
.fa-star-o
color: white
.fa-star,
.fa-clone,
.fa-star-o
color: white
opacity: .75
+2 -1
View File
@@ -133,7 +133,8 @@ input[type="submit"].attachment-add-link-submit
.card-details-canvas
width: 100%
padding-left: 0px;
.card-details-header
.close-card-details
margin-right: 0px
+29 -19
View File
@@ -615,40 +615,50 @@ BlazeComponent.extendComponent({
BlazeComponent.extendComponent({
onCreated() {
this.spinnerShown = false;
this.cardlimit = this.parentComponent().cardlimit;
this.listId = this.parentComponent().data()._id;
this.swimlaneId = '';
const boardView = Meteor.user().profile.boardView;
if (boardView === 'board-view-swimlanes')
this.swimlaneId = this.parentComponent().parentComponent().parentComponent().data()._id;
},
onRendered() {
const spinner = this.find('.sk-spinner-list');
this.spinner = this.find('.sk-spinner-list');
this.container = this.$(this.spinner).parents('.js-perfect-scrollbar')[0];
if (spinner) {
const options = {
root: null, // we check if the spinner is on the current viewport
rootMargin: '0px',
threshold: 0.25,
};
$(this.container).on(`scroll.spinner_${this.swimlaneId}_${this.listId}`, () => this.updateList());
$(window).on(`resize.spinner_${this.swimlaneId}_${this.listId}`, () => this.updateList());
this.observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
this.spinnerShown = entry.isIntersecting;
this.updateList();
});
}, options);
this.observer.observe(spinner);
}
this.updateList();
},
onDestroyed() {
this.observer.disconnect();
$(this.container).off(`scroll.spinner_${this.swimlaneId}_${this.listId}`);
$(window).off(`resize.spinner_${this.swimlaneId}_${this.listId}`);
},
updateList() {
if (this.spinnerShown) {
if (this.spinnerInView()) {
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
window.requestIdleCallback(() => this.updateList());
}
},
spinnerInView() {
const parentViewHeight = this.container.clientHeight;
const bottomViewPosition = this.container.scrollTop + parentViewHeight;
const threshold = this.spinner.offsetTop;
// spinner deleted
if (!this.spinner.offsetTop) {
return false;
}
return bottomViewPosition > threshold;
},
}).register('spinnerList');
@@ -64,8 +64,7 @@ template(name="boardTriggers")
div.trigger-text
| {{_'r-in-swimlane'}}
div.trigger-dropdown
input(id="create-swimlane-name",type=text,placeholder="{{_'r-swimlane-name'}}")
div.trigger-button.trigger-button-person.js-show-user-field
input(id="create-swimlane-name-2",type=text,placeholder="{{_'r-swimlane-name'}}")
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
div.user-details.hide-element
@@ -39,15 +39,18 @@ BlazeComponent.extendComponent({
'click .js-add-moved-trigger' (event) {
const datas = this.data();
const desc = Utils.getTriggerActionDesc(event, this);
const swimlaneName = this.find('#create-swimlane-name').value;
const swimlaneName = this.find('#create-swimlane-name-2').value;
const actionSelected = this.find('#move-action').value;
const listName = this.find('#move-list-name').value;
const boardId = Session.get('currentBoard');
const divId = $(event.currentTarget.parentNode).attr('id');
const cardTitle = this.cardTitleFilters[divId];
if (actionSelected === 'moved-to') {
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
listName,
cardTitle,
swimlaneName,
'oldListName': '*',
desc,
@@ -57,6 +60,7 @@ BlazeComponent.extendComponent({
datas.triggerVar.set({
activityType: 'moveCard',
boardId,
cardTitle,
swimlaneName,
'listName': '*',
'oldListName': listName,
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Něco se pokazilo",
"error-ldap-login": "Během přihlašování nastala chyba",
"display-authentication-method": "Zobraz způsob ověřování",
"default-authentication-method": "Zobraz způsob ověřování"
"default-authentication-method": "Zobraz způsob ověřování",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+40 -39
View File
@@ -1,41 +1,41 @@
{
"accept": "Akzeptieren",
"act-activity-notify": "Aktivitätsbenachrichtigung",
"act-addAttachment": "hat Anhang __attachment__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-deleteAttachment": "löschte Anhang __attachment__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addSubtask": "hat Teilaufgabe __subtask__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board angehängt",
"act-addLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-addedLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-removeLabel": "entfernte Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-removedLabel": "entfernte Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addChecklist": "hat Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-addChecklistItem": "hat Checklistenposition __checklistItem__ zu Checkliste __checkList__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
"act-removeChecklist": "entfernt Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-removeChecklistItem": "entfernt Checklistenposition __checklistItem__ von Checkliste __checkList__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-checkedItem": "hakte __checklistItem__ von der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ ab",
"act-uncheckedItem": "unabgehakt __checklistItem__ von der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-completeChecklist": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-uncompleteChecklist": "unvollendete Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addComment": "kommentierte eine Karte __card__: __comment__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-addAttachment": "hat Anhang __attachment__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-deleteAttachment": "hat Anhang __attachment__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ gelöscht",
"act-addSubtask": "hat Teilaufgabe __subtask__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-addLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-addedLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-removeLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-removedLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-addChecklist": "hat Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-addChecklistItem": "hat Checklistenposition __checklistItem__ zu Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-removeChecklist": "hat Checkliste __checklist__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-removeChecklistItem": "hat Checklistenposition __checklistItem__ von Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-checkedItem": "hat __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ abgehakt",
"act-uncheckedItem": "hat Haken von __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-completeChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"act-uncompleteChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ unvervollständigt",
"act-addComment": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ kommentiert: __comment__",
"act-createBoard": "hat Board __board__ erstellt",
"act-createSwimlane": "erstellte Swimlane __swimlane__ auf Board __board__",
"act-createCard": "erstellte Karte __card__ auf Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-createCustomField": "erstellte ein benutzerdefiniertes Feld __customField__ für Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-createSwimlane": "hat Swimlane __swimlane__ in Board __board__ erstellt",
"act-createCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ erstellt",
"act-createCustomField": "hat das benutzerdefinierte Feld __customField__ auf Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ erstellt",
"act-createList": "hat Liste __list__ zu Board __board__ hinzugefügt",
"act-addBoardMember": "hat Mitglied __member__ zu Board __board__ hinzugefügt",
"act-archivedBoard": "Board __board__ ins Archiv verschoben",
"act-archivedCard": "Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-archivedList": "Liste __list__ bei Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-archivedSwimlane": "Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-importBoard": "importiert Board __board__",
"act-importCard": "importiert Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ in Board __board__ ",
"act-importList": "importiert Liste __list__ bei Swimlane __swimlane__ in Board __board__ ",
"act-joinMember": "fügt Mitglied __member__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ hinzu",
"act-moveCard": "verschiebt Karte __card__ auf Board __board__ von Liste __oldList__ in Swimlane __oldSwimlane__ zu Liste __list__ in Swimlane __swimlane__",
"act-moveCardToOtherBoard": "verschiebt Karte __card__ von Liste __oldList__ von Swimlane __oldSwimlane__ von Board __oldBoard__ nach Liste __list__ in Swimlane __swimlane__ zu Board __board__",
"act-removeBoardMember": "entfernte Mitglied __member__ vom Board __board__",
"act-restoredCard": "wiederherstellte Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-unjoinMember": "entfernte Mitglied __member__ von Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"act-archivedBoard": "hat Board __board__ ins Archiv verschoben",
"act-archivedCard": "hat Karte __card__ von der Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben",
"act-archivedList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben",
"act-archivedSwimlane": "hat Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
"act-importBoard": "hat Board __board__ importiert",
"act-importCard": "hat Karte __card__ in Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert",
"act-importList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert",
"act-joinMember": "hat Mitglied __member__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
"act-moveCard": "hat Karte __card__ in Board __board__ von Liste __oldList__ in Swimlane __oldSwimlane__ zu Liste __list__ in Swimlane __swimlane__ verschoben",
"act-moveCardToOtherBoard": "hat Karte __card__ von Liste __oldList__ in Swimlane __oldSwimlane__ in Board __oldBoard__ zu Liste __list__ in Swimlane __swimlane__ in Board __board__ verschoben",
"act-removeBoardMember": "hat Mitglied __member__ von Board __board__ entfernt",
"act-restoredCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ wiederhergestellt",
"act-unjoinMember": "hat Mitglied __member__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Aktionen",
@@ -60,14 +60,14 @@
"activity-unchecked-item": "hat %s in Checkliste %s von %s abgewählt",
"activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
"activity-checklist-removed": "entfernte eine Checkliste von %s",
"activity-checklist-completed": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"activity-checklist-completed": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"activity-checklist-uncompleted": "unvervollständigte die Checkliste %s von %s",
"activity-checklist-item-added": "hat ein Checklistenelement zu '%s' in %s hinzugefügt",
"activity-checklist-item-removed": "hat ein Checklistenelement von '%s' in %s entfernt",
"add": "Hinzufügen",
"activity-checked-item-card": "markiere %s in Checkliste %s",
"activity-unchecked-item-card": "hat %s in Checkliste %s abgewählt",
"activity-checklist-completed-card": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
"activity-checklist-completed-card": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"activity-checklist-uncompleted-card": "unvervollständigte die Checkliste %s",
"add-attachment": "Datei anhängen",
"add-board": "neues Board",
@@ -576,16 +576,16 @@
"r-rule": "Regel",
"r-add-trigger": "Auslöser hinzufügen",
"r-add-action": "Aktion hinzufügen",
"r-board-rules": "Board Regeln",
"r-board-rules": "Boardregeln",
"r-add-rule": "Regel hinzufügen",
"r-view-rule": "Regel anzeigen",
"r-delete-rule": "Regel löschen",
"r-new-rule-name": "Neuer Regeltitel",
"r-no-rules": "Keine Regeln",
"r-when-a-card": "Wenn eine Karte",
"r-is": "ist",
"r-when-a-card": "Wenn Karte",
"r-is": "wird",
"r-is-moved": "verschoben wird",
"r-added-to": "hinzugefügt wird zu",
"r-added-to": "hinzugefügt zu",
"r-removed-from": "Entfernt von",
"r-the-board": "das Board",
"r-list": "Liste",
@@ -682,5 +682,6 @@
"error-undefined": "Etwas ist schief gelaufen",
"error-ldap-login": "Es ist ein Fehler beim Anmelden aufgetreten",
"display-authentication-method": "Anzeige Authentifizierungsverfahren",
"default-authentication-method": "Standardauthentifizierungsverfahren"
"default-authentication-method": "Standardauthentifizierungsverfahren",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -685,5 +685,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Algo no está bien",
"error-ldap-login": "Ocurrió un error al intentar acceder",
"display-authentication-method": "Mostrar el método de autenticación",
"default-authentication-method": "Método de autenticación por defecto"
"default-authentication-method": "Método de autenticación por defecto",
"duplicate-board": "Duplicar tablero"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "یک اشتباه رخ داده شده است",
"error-ldap-login": "هنگام تلاش برای ورود به یک خطا رخ داد",
"display-authentication-method": "نمایش نوع اعتبارسنجی",
"default-authentication-method": "نوع اعتبارسنجی پیشفرض"
"default-authentication-method": "نوع اعتبارسنجی پیشفرض",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Jotain meni pieleen",
"error-ldap-login": "Virhe tapahtui yrittäessä kirjautua sisään",
"display-authentication-method": "Näytä kirjautumistapa",
"default-authentication-method": "Oletus kirjautumistapa"
"default-authentication-method": "Oletus kirjautumistapa",
"duplicate-board": "Tee kaksoiskappale taulusta"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Une erreur inconnue s'est produite",
"error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion",
"display-authentication-method": "Afficher la méthode d'authentification",
"default-authentication-method": "Méthode d'authentification par défaut"
"default-authentication-method": "Méthode d'authentification par défaut",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "מהו השתבש",
"error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה",
"display-authentication-method": "הצגת שיטת אימות",
"default-authentication-method": "שיטת אימות כבררת מחדל"
"default-authentication-method": "שיטת אימות כבררת מחדל",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Valami hiba történt",
"error-ldap-login": "Hiba történt bejelentkezés közben",
"display-authentication-method": "Hitelelesítési mód mutatása",
"default-authentication-method": "Alapértelmezett hitelesítési mód"
"default-authentication-method": "Alapértelmezett hitelesítési mód",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Qualcosa è andato storto",
"error-ldap-login": "C'è stato un errore mentre provavi ad effettuare il login",
"display-authentication-method": "Mostra il metodo di autenticazione",
"default-authentication-method": "Metodo di autenticazione predefinito"
"default-authentication-method": "Metodo di autenticazione predefinito",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+110 -109
View File
@@ -1,5 +1,5 @@
{
"accept": "Приемам",
"accept": "Прифати",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -38,11 +38,11 @@
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Действия",
"activities": "Действия",
"activity": "Дейности",
"actions": "Акции",
"activities": "Активности",
"activity": "Активност",
"activity-added": "добави %s към %s",
"activity-archived": "%s е преместена в Архива",
"activity-archived": "%s е преместена во Архива",
"activity-attached": "прикачи %s към %s",
"activity-created": "създаде %s",
"activity-customfield-created": "създаде собствено поле %s",
@@ -69,56 +69,56 @@
"activity-unchecked-item-card": "размаркира %s в чеклист %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-uncompleted-card": "\"отзавърши\" чеклистта %s",
"add-attachment": "Добави прикачен файл",
"add-board": "Добави Табло",
"add-card": "Добави карта",
"add-swimlane": "Добави коридор",
"add-subtask": "Добави подзадача",
"add-checklist": "Добави списък със задачи",
"add-checklist-item": "Добави точка към списъка със задачи",
"add-cover": "Добави корица",
"add-label": "Добави етикет",
"add-list": "Добави списък",
"add-members": "Добави членове",
"added": "Добавено",
"addMemberPopup-title": "Членове",
"add-attachment": "Додај прилог",
"add-board": "Додади Табла",
"add-card": "Додади Картичка",
"add-swimlane": "Додади Коридор",
"add-subtask": "Додади подзадача",
"add-checklist": "Додади список на задачи",
"add-checklist-item": "Додади точка во списокот со задачи",
"add-cover": "Додади корица",
"add-label": "Додади етикета",
"add-list": "Додади листа",
"add-members": "Додави членови",
"added": "Додадено",
"addMemberPopup-title": "Членови",
"admin": "Администратор",
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
"admin-announcement": "Съобщение",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Съобщение от администратора",
"all-boards": "Всички табла",
"and-n-other-card": "И __count__ друга карта",
"and-n-other-card_plural": "И __count__ други карти",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "Сите табли",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Приложи",
"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": "Премести в Архива",
"archive-all": "Премести всички в Архива",
"archive-board": "Премести Таблото в Архива",
"archive-card": "Премести Картата в Архива",
"archive-list": "Премести Списъка в Архива",
"archive-swimlane": "Премести Коридора в Архива",
"archive-selection": "Премести избраното в Архива",
"archiveBoardPopup-title": "Да преместя ли Таблото в Архива?",
"archived-items": "Архив",
"archived-boards": "Табла в Архива",
"archive": "Премести во Архива",
"archive-all": "Премести всички во Архива",
"archive-board": "Премести Таблото во Архива",
"archive-card": "Премести Картата во Архива",
"archive-list": "Премести Списъка во Архива",
"archive-swimlane": "Премести Коридора во Архива",
"archive-selection": "Премести избраното во Архива",
"archiveBoardPopup-title": "Да преместя ли Таблото во Архива?",
"archived-items": "Архива",
"archived-boards": "Табла во Архива",
"restore-board": "Възстанови Таблото",
"no-archived-boards": "Няма Табла в Архива.",
"archives": "Архив",
"no-archived-boards": "Няма Табла во Архива.",
"archives": "Архива",
"template": "Template",
"templates": "Templates",
"assign-member": "Възложи на член от екипа",
"attached": "прикачен",
"attachment": "Прикаченн файл",
"attachment-delete-pop": "Изтриването на прикачен файл е завинаги. Няма как да бъде възстановен.",
"attachmentDeletePopup-title": "Желаете ли да изтриете прикачения файл?",
"attachments": "Прикачени файлове",
"attachment": "Прикаченн датотека",
"attachment-delete-pop": "Изтриването на прикачен датотека е завинаги. Няма как да бъде възстановен.",
"attachmentDeletePopup-title": "Желаете ли да изтриете прикачения датотека?",
"attachments": "Прикачени датотеки",
"auto-watch": "Автоматично наблюдаване на таблата, когато са създадени",
"avatar-too-big": "Аватарът е прекалено голям (максимум 70KB)",
"back": "Назад",
"board-change-color": "Промени цвета",
"board-change-color": "Промени боја",
"board-nb-stars": "%s звезди",
"board-not-found": "Таблото не е намерено",
"board-not-found": "Таблото не е најдено",
"board-private-info": "This board will be <strong>private</strong>.",
"board-public-info": "This board will be <strong>public</strong>.",
"boardChangeColorPopup-title": "Change Board Background",
@@ -126,69 +126,69 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Промени наблюдаването",
"boardMenuPopup-title": "Board Settings",
"boards": "Табла",
"boards": "Табли",
"board-view": "Board View",
"board-view-cal": "Календар",
"board-view-swimlanes": "Коридори",
"board-view-lists": "Списъци",
"board-view-lists": "Листи",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "Тази карта е преместена в Архива.",
"board-archived": "Това табло е преместено в Архива.",
"cancel": "Откажи",
"card-archived": "Тази карта е преместена во Архива.",
"board-archived": "Това табло е преместено во Архива.",
"card-comments-title": "Тази карта има %s коментар.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
"card-delete-suggest-archive": "Можете да преместите картата в Архива, за да я премахнете от Таблото и така да запазите активността в него.",
"card-delete-suggest-archive": "Можете да преместите картата во Архива, за да я премахнете от Таблото и така да запазите активността в него.",
"card-due": "Готова за",
"card-due-on": "Готова за",
"card-spent": "Изработено време",
"card-edit-attachments": "Промени прикачените файлове",
"card-edit-attachments": "Промени прикачените датотеки",
"card-edit-custom-fields": "Промени собствените полета",
"card-edit-labels": "Промени етикетите",
"card-edit-members": "Промени членовете",
"card-labels-title": "Промени етикетите за картата.",
"card-members-title": "Добави или премахни членове на Таблото от тази карта.",
"card-start": "Начало",
"card-start-on": "Започва на",
"card-start": "Започнува",
"card-start-on": "Започнува на",
"cardAttachmentsPopup-title": "Прикачи от",
"cardCustomField-datePopup-title": "Промени датата",
"cardCustomFieldsPopup-title": "Промени собствените полета",
"cardDeletePopup-title": "Желаете да изтриете картата?",
"cardDetailsActionsPopup-title": "Опции",
"cardLabelsPopup-title": "Етикети",
"cardMembersPopup-title": "Членове",
"cardMorePopup-title": "Още",
"cardMembersPopup-title": "Членови",
"cardMorePopup-title": "Повеќе",
"cardTemplatePopup-title": "Create template",
"cards": "Карти",
"cards-count": "Карти",
"cards": "Картички",
"cards-count": "Картички",
"casSignIn": "Sign In with CAS",
"cardType-card": "Карта",
"cardType-linkedCard": "Свързана карта",
"cardType-linkedCard": "Поврзана карта",
"cardType-linkedBoard": "Свързано табло",
"change": "Промени",
"change-avatar": "Промени аватара",
"change-password": "Промени паролата",
"change-permissions": "Промени правата",
"change-settings": "Промени настройките",
"changeAvatarPopup-title": "Промени аватара",
"changeLanguagePopup-title": "Промени езика",
"changePasswordPopup-title": "Промени паролата",
"changePermissionsPopup-title": "Промени правата",
"changeSettingsPopup-title": "Промяна на настройките",
"change-password": "Промени лозинка",
"change-permissions": "Промени права",
"change-settings": "Промени параметри",
"changeAvatarPopup-title": "Промени аватар",
"changeLanguagePopup-title": "Промени јазик",
"changePasswordPopup-title": "Промени лозинка",
"changePermissionsPopup-title": "Промени права",
"changeSettingsPopup-title": "Промени параметри",
"subtasks": "Подзадачи",
"checklists": "Списъци със задачи",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Натиснете, за да премахнете това табло от любими.",
"clipboard": "Клипборда или с драг & дроп",
"close": "Затвори",
"close-board": "Затвори Таблото",
"close-board-pop": "Ще можете да възстановите Таблото като натиснете на бутона \"Архив\" в началото на хедъра.",
"color-black": "черно",
"color-blue": "синьо",
"close-board": "Затвори Табла",
"close-board-pop": "Ще можете да възстановите Таблото като натиснете на бутона \"Архива\" в началото на хедъра.",
"color-black": "црно",
"color-blue": "сино",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-gold": "златно",
"color-gray": "сиво",
"color-green": "зелено",
"color-indigo": "indigo",
"color-lime": "лайм",
@@ -209,28 +209,28 @@
"color-white": "бяло",
"color-yellow": "жълто",
"unset-color": "Unset",
"comment": "Коментирай",
"comment": "Коментирај",
"comment-placeholder": "Напиши коментар",
"comment-only": "Само коментар",
"comment-only": "Само коментари",
"comment-only-desc": "Може да коментира само в карти.",
"no-comments": "Няма коментари",
"no-comments": "Нема коментари",
"no-comments-desc": "Can not see comments and activities.",
"computer": "Компютър",
"confirm-subtask-delete-dialog": "Сигурен ли сте, че искате да изтриете подзадачата?",
"confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
"computer": "Компјутер",
"confirm-subtask-delete-dialog": "Сигурен ли сте, дека сакате да изтриете подзадачата?",
"confirm-checklist-delete-dialog": "Сигурни ли сте, дека сакате да изтриете този чеклист?",
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
"linkCardPopup-title": "Свържи картата",
"searchElementPopup-title": "Търсене",
"copyCardPopup-title": "Копирай картата",
"linkCardPopup-title": "Поврзи картичка",
"searchElementPopup-title": "Барај",
"copyCardPopup-title": "Копирај картичка",
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
"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": "Създай",
"createBoardPopup-title": "Създай Табло",
"create": "Креирај",
"createBoardPopup-title": "Креирај Табло",
"chooseBoardSourcePopup-title": "Импортирай Табло",
"createLabelPopup-title": "Създай Табло",
"createCustomField": "Създай Поле",
"createCustomFieldPopup-title": "Създай Поле",
"createLabelPopup-title": "Креирај Табло",
"createCustomField": "Креирај Поле",
"createCustomFieldPopup-title": "Креирај Поле",
"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": "Чекбокс",
@@ -240,13 +240,13 @@
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-number": "Номер",
"custom-field-number": "Број",
"custom-field-text": "Текст",
"custom-fields": "Собствени полета",
"date": "Дата",
"decline": "Отказ",
"decline": "Откажи",
"default-avatar": "Основен аватар",
"delete": "Изтрий",
"delete": "Избриши",
"deleteCustomFieldPopup-title": "Изтриване на Собственото поле?",
"deleteLabelPopup-title": "Желаете да изтриете етикета?",
"description": "Описание",
@@ -272,8 +272,8 @@
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
"email-fail": "Неуспешно изпращане на имейла",
"email-fail-text": "Възникна грешка при изпращането на имейла",
"email-invalid": "Невалиден имейл",
"email-invite": "Покани чрез имейл",
"email-invalid": "Невалиден е-маил",
"email-invite": "Покани чрез е-маил",
"email-invite-subject": "__inviter__ sent you an invitation",
"email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
"email-resetPassword-subject": "Reset your password on __siteName__",
@@ -294,7 +294,7 @@
"error-username-taken": "Това потребителско име е вече заето",
"error-email-taken": "Имейлът е вече зает",
"export-board": "Експортиране на Табло",
"filter": "Филтър",
"filter": "Филтер",
"filter-cards": "Филтрирай картите",
"filter-clear": "Премахване на филтрите",
"filter-no-label": "без етикет",
@@ -303,15 +303,15 @@
"filter-on": "Има приложени филтри",
"filter-on-desc": "В момента филтрирате картите в това табло. Моля, натиснете тук, за да промените филтъра.",
"filter-to-selection": "Филтрирай избраните",
"advanced-filter-label": "Advanced Filter",
"advanced-filter-label": "Напреден филтер",
"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": "Име",
"header-logo-title": "Назад към страницата с Вашите табла.",
"hide-system-messages": "Скриване на системните съобщения",
"headerBarCreateBoardPopup-title": "Създай Табло",
"home": "Начало",
"headerBarCreateBoardPopup-title": "Креирај Табло",
"home": "Почетна",
"import": "Импорт",
"link": "Връзка",
"link": "Врска",
"import-board": "Импортирай Табло",
"import-board-c": "Импортирай Табло",
"import-board-title-trello": "Импорт на табло от Trello",
@@ -337,7 +337,7 @@
"joined": "присъедини",
"just-invited": "Бяхте поканени в това табло",
"keyboard-shortcuts": "Преки пътища с клавиатурата",
"label-create": "Създай етикет",
"label-create": "Креирај етикет",
"label-default": "%s етикет (по подразбиране)",
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
"labels": "Етикети",
@@ -347,8 +347,8 @@
"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": "Връзка към тази карта",
"list-archive-cards": "Премести всички карти от този списък в Архива",
"list-archive-cards-pop": "Това ще премахне всички карти от този Списък от Таблото. За да видите картите в Архива и да ги върнете натиснете на \"Меню\" > \"Архив\".",
"list-archive-cards": "Премести всички карти от този списък во Архива",
"list-archive-cards-pop": "Това ще премахне всички карти от този Списък от Таблото. За да видите картите во Архива и да ги върнете натиснете на \"Меню\" > \"Архива\".",
"list-move-cards": "Премести всички карти в този списък",
"list-select-cards": "Избери всички карти в този списък",
"set-color-list": "Set Color",
@@ -359,7 +359,7 @@
"listMorePopup-title": "Още",
"link-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": "Можете да преместите списъка в Архива, за да го премахнете от Таблото и така да запазите активността в него.",
"list-delete-suggest-archive": "Можете да преместите списъка во Архива, за да го премахнете от Таблото и така да запазите активността в него.",
"lists": "Списъци",
"swimlanes": "Коридори",
"log-out": "Изход",
@@ -379,9 +379,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "Моите табла",
"name": "Име",
"no-archived-cards": "Няма карти в Архива.",
"no-archived-lists": "Няма списъци в Архива.",
"no-archived-swimlanes": "Няма коридори в Архива.",
"no-archived-cards": "Няма карти во Архива.",
"no-archived-lists": "Няма списъци во Архива.",
"no-archived-swimlanes": "Няма коридори во Архива.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -401,7 +401,7 @@
"private": "Private",
"private-desc": "This board is private. Only people added to the board can view and edit it.",
"profile": "Профил",
"public": "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",
@@ -461,7 +461,7 @@
"uploaded-avatar": "Качихте аватар",
"username": "Потребителско име",
"view-it": "View it",
"warn-list-archived": "внимание: тази карта е в списък в Архива",
"warn-list-archived": "внимание: тази карта е в списък во Архива",
"watch": "Наблюдавай",
"watching": "Наблюдава",
"watching-info": "You will be notified of any change in this board",
@@ -494,12 +494,12 @@
"smtp-password": "Парола",
"smtp-tls": "TLS поддръжка",
"send-from": "От",
"send-smtp-test": "Изпрати тестов имейл на себе си",
"send-smtp-test": "Изпрати тестов е-маил на себе си",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"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": "Успешно изпратихте имейл",
"email-smtp-test-text": "Успешно изпратихте е-маил",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
@@ -567,10 +567,10 @@
"no-parent": "Не показвай източника",
"activity-added-label": "добави етикет '%s' към %s",
"activity-removed-label": "премахна етикет '%s' от %s",
"activity-delete-attach": "изтри прикачен файл от %s",
"activity-delete-attach": "изтри прикачен датотека от %s",
"activity-added-label-card": "добави етикет '%s'",
"activity-removed-label-card": "премахна етикет '%s'",
"activity-delete-attach-card": "изтри прикачения файл",
"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": "Правило",
@@ -592,7 +592,7 @@
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Преместено в Архива",
"r-archived": "Преместено во Архива",
"r-unarchived": "Възстановено от Архива",
"r-a-card": "карта",
"r-when-a-label-is": "When a label is",
@@ -614,7 +614,7 @@
"r-top-of": "началото на",
"r-bottom-of": "края на",
"r-its-list": "списъка й",
"r-archive": "Премести в Архива",
"r-archive": "Премести во Архива",
"r-unarchive": "Възстанови от Архива",
"r-card": "карта",
"r-add": "Добави",
@@ -643,7 +643,7 @@
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Премести картата в Архива",
"r-d-archive": "Премести картата во Архива",
"r-d-unarchive": "Възстанови картата от Архива",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Coś poszło nie tak",
"error-ldap-login": "Wystąpił błąd w trakcie logowania",
"display-authentication-method": "Wyświetl metodę logowania",
"default-authentication-method": "Domyślna metoda logowania"
"default-authentication-method": "Domyślna metoda logowania",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Algo deu errado",
"error-ldap-login": "Um erro ocorreu enquanto tentava entrar",
"display-authentication-method": "Mostrar Método de Autenticação",
"default-authentication-method": "Método de Autenticação Padrão"
"default-authentication-method": "Método de Autenticação Padrão",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+3 -2
View File
@@ -18,7 +18,7 @@
"act-uncompleteChecklist": "вновь открыл контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-addComment": "написал в карточке __card__: __comment__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-createBoard": "создал доску __board__",
"act-createSwimlane": "created swimlane __swimlane__ to board __board__",
"act-createSwimlane": "создал дорожку __swimlane__ на доске __board__",
"act-createCard": "создал карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-createCustomField": "создал поле __customField__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__\n",
"act-createList": "добавил список __list__ на доску __board__",
@@ -682,5 +682,6 @@
"error-undefined": "Что-то пошло не так",
"error-ldap-login": "Ошибка при попытке авторизации",
"display-authentication-method": "Показывать способ авторизации",
"default-authentication-method": "Способ авторизации по умолчанию"
"default-authentication-method": "Способ авторизации по умолчанию",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Något gick fel",
"error-ldap-login": "Ett fel uppstod när du försökte logga in",
"display-authentication-method": "Visa autentiseringsmetod",
"default-authentication-method": "Standard autentiseringsmetod"
"default-authentication-method": "Standard autentiseringsmetod",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "Bir şeyler yanlış gitti",
"error-ldap-login": "Giriş yapmaya çalışırken bir hata oluştu",
"display-authentication-method": "Display Authentication Method",
"default-authentication-method": "Default Authentication Method"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"error-undefined": "出了点问题",
"error-ldap-login": "尝试登陆时出错",
"display-authentication-method": "显示认证方式",
"default-authentication-method": "缺省认证方式"
"default-authentication-method": "缺省认证方式",
"duplicate-board": "Duplicate Board"
}
+2 -1
View File
@@ -682,5 +682,6 @@
"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"
"default-authentication-method": "Default Authentication Method",
"duplicate-board": "Duplicate Board"
}
+7
View File
@@ -1338,6 +1338,7 @@ function cardMove(userId, doc, fieldNames, oldListId, oldSwimlaneId, oldBoardId)
listId: doc.listId,
boardId: doc.boardId,
cardId: doc._id,
cardTitle:doc.title,
swimlaneName: Swimlanes.findOne(doc.swimlaneId).title,
swimlaneId: doc.swimlaneId,
oldSwimlaneId,
@@ -1384,6 +1385,9 @@ function cardMembers(userId, doc, fieldNames, modifier) {
activityType: 'joinMember',
boardId: doc.boardId,
cardId: doc._id,
memberId,
listId: doc.listId,
swimlaneId: doc.swimlaneId,
});
}
}
@@ -1400,6 +1404,9 @@ function cardMembers(userId, doc, fieldNames, modifier) {
activityType: 'unjoinMember',
boardId: doc.boardId,
cardId: doc._id,
memberId,
listId: doc.listId,
swimlaneId: doc.swimlaneId,
});
}
}
+9 -16
View File
@@ -6,34 +6,27 @@ if (Meteor.isServer) {
// `ApiRoutes.path('boards/export', boardId)``
// on the client instead of copy/pasting the route path manually between the
// client and the server.
/**
* @operation export
* @tag Boards
*
* @summary This route is used to export the board.
*
* @description If user is already logged-in, pass loginToken as param
* "authToken": '/api/boards/:boardId/export?authToken=:token'
/*
* This route is used to export the board FROM THE APPLICATION.
* If user is already logged-in, pass loginToken as param "authToken":
* '/api/boards/:boardId/export?authToken=:token'
*
* See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
* for detailed explanations
*
* @param {string} boardId the ID of the board we are exporting
* @param {string} authToken the loginToken
*/
JsonRoutes.add('get', '/api/boards/:boardId/export', function(req, res) {
const boardId = req.params.boardId;
let user = null;
// todo XXX for real API, first look for token in Authentication: header
// then fallback to parameter
const loginToken = req.query.authToken;
if (loginToken) {
const hashToken = Accounts._hashLoginToken(loginToken);
user = Meteor.users.findOne({
'services.resume.loginTokens.hashedToken': hashToken,
});
} else if (!Meteor.settings.public.sandstorm) {
Authentication.checkUserId(req.userId);
user = Users.findOne({ _id: req.userId, isAdmin: true });
}
const exporter = new Exporter(boardId);
@@ -50,7 +43,7 @@ if (Meteor.isServer) {
});
}
class Exporter {
export class Exporter {
constructor(boardId) {
this._boardId = boardId;
}
+19
View File
@@ -1,5 +1,7 @@
import { TrelloCreator } from './trelloCreator';
import { WekanCreator } from './wekanCreator';
import {Exporter} from './export';
import wekanMembersMapper from './wekanmapper';
Meteor.methods({
importBoard(board, data, importSource, currentBoard) {
@@ -27,3 +29,20 @@ Meteor.methods({
return creator.create(board, currentBoard);
},
});
Meteor.methods({
cloneBoard(sourceBoardId, currentBoardId) {
check(sourceBoardId, String);
check(currentBoardId, Match.Maybe(String));
const exporter = new Exporter(sourceBoardId);
const data = exporter.build();
const addData = {};
addData.membersMapping = wekanMembersMapper.getMembersToMap(data);
const creator = new WekanCreator(addData);
//data.title = `${data.title } - ${ TAPi18n.__('copy-tag')}`;
data.title = `${data.title}`;
return creator.create(data, currentBoardId);
},
});
+25
View File
@@ -169,6 +169,31 @@ export class WekanCreator {
})]);
}
getMembersToMap(data) {
// we will work on the list itself (an ordered array of objects) when a
// mapping is done, we add a 'wekan' field to the object representing the
// imported member
const membersToMap = data.members;
const users = data.users;
// auto-map based on username
membersToMap.forEach((importedMember) => {
importedMember.id = importedMember.userId;
delete importedMember.userId;
const user = users.filter((user) => {
return user._id === importedMember.id;
})[0];
if (user.profile && user.profile.fullname) {
importedMember.fullName = user.profile.fullname;
}
importedMember.username = user.username;
const wekanUser = Users.findOne({ username: importedMember.username });
if (wekanUser) {
importedMember.wekanId = wekanUser._id;
}
});
return membersToMap;
}
checkActions(wekanActions) {
// XXX More check based on action type
check(wekanActions, [Match.ObjectIncluding({
+24
View File
@@ -0,0 +1,24 @@
export function getMembersToMap(data) {
// we will work on the list itself (an ordered array of objects) when a
// mapping is done, we add a 'wekan' field to the object representing the
// imported member
const membersToMap = data.members;
const users = data.users;
// auto-map based on username
membersToMap.forEach((importedMember) => {
importedMember.id = importedMember.userId;
delete importedMember.userId;
const user = users.filter((user) => {
return user._id === importedMember.id;
})[0];
if (user.profile && user.profile.fullname) {
importedMember.fullName = user.profile.fullname;
}
importedMember.username = user.username;
const wekanUser = Users.findOne({ username: importedMember.username });
if (wekanUser) {
importedMember.wekanId = wekanUser._id;
}
});
return membersToMap;
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v2.56.0",
"version": "v2.58.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+2 -1
View File
@@ -72,8 +72,9 @@ do
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
# Debian, Ubuntu, Mint
sudo apt-get install -y build-essential git curl wget
sudo apt-get install -y build-essential gcc g++ make git curl wget
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS";
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
+2 -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 = 258,
appVersion = 260,
# Increment this for every release.
appMarketingVersion = (defaultText = "2.56.0~2019-03-27"),
appMarketingVersion = (defaultText = "2.58.0~2019-04-06"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+3 -1
View File
@@ -141,13 +141,15 @@ RulesHelper = {
Swimlanes.insert({
title: action.swimlaneName,
boardId,
sort: 0,
});
}
if(action.actionType === 'addChecklistWithItems'){
const checkListId = Checklists.insert({'title':action.checklistName, 'cardId':card._id, 'sort':0});
const itemsArray = action.checklistItems.split(',');
const checkList = Checklists.findOne({_id:checkListId});
for(let i = 0; i <itemsArray.length; i++){
ChecklistItems.insert({title:itemsArray[i], checklistId:checkListId, cardId:card._id, 'sort':0});
ChecklistItems.insert({title:itemsArray[i], checklistId:checkListId, cardId:card._id, 'sort':checkList.itemCount()});
}
}
if(action.actionType === 'createCard'){
+3 -3
View File
@@ -3,13 +3,13 @@ TriggersDef = {
matchingFields: ['boardId', 'listName', 'userId', 'swimlaneName', 'cardTitle'],
},
moveCard:{
matchingFields: ['boardId', 'listName', 'oldListName', 'userId', 'swimlaneName'],
matchingFields: ['boardId', 'listName', 'oldListName', 'userId', 'swimlaneName', 'cardTitle'],
},
archivedCard:{
matchingFields: ['boardId', 'userId'],
matchingFields: ['boardId', 'userId', 'cardTitle'],
},
restoredCard:{
matchingFields: ['boardId', 'userId'],
matchingFields: ['boardId', 'userId', 'cardTitle'],
},
joinMember:{
matchingFields: ['boardId', 'username', 'userId'],