Compare commits

...
58 Commits
Author SHA1 Message Date
Lauri Ojansivu 83848dbee2 v0.78 2018-03-17 09:34:57 +02:00
Lauri Ojansivu cb099d1093 "DANGER" data loss warning to bigger text. 2018-03-17 09:20:12 +02:00
Lauri Ojansivu 89a8a6f5e3 - Fix scroll board when opening cardDetails
- Fix swimlane info not displayed in activities
- Fix sandstorm default swimlane creation
- Extend lists to bottom of frame in lists view
- Fix drag and drop issues when re-enter board

Thanks to andresmanelli !

Closes #1529, closes #1530, closes #1506, closes #1494, closes #1538, closes #1528
2018-03-17 09:18:31 +02:00
Lauri Ojansivu 22923d08af Enabled import at Sandtorm. Keep there warning about possible data loss bug. 2018-03-17 08:49:22 +02:00
Lauri Ojansivu 57ccfcde63 Update translations. 2018-03-17 08:48:55 +02:00
Lauri Ojansivu 75693d16e2 Add language: Armenian. 2018-03-17 08:48:30 +02:00
Andrés Manelli 454523dd47 Fix scroll board when opening cardDetails 2018-03-17 00:31:19 -03:00
Andrés Manelli bb37d8fa96 Fix swimlane info not displayed in activities 2018-03-16 23:31:24 -03:00
Andrés Manelli f470323ee7 Fix sandstorm default swimlane creation 2018-03-16 23:18:26 -03:00
Andrés Manelli c62a2ee11f Extend lists to bottom of frame in lists view 2018-03-16 22:37:08 -03:00
Andrés Manelli 5b0f7f8aef Fix drag and drop issues when re-enter board 2018-03-16 22:13:40 -03:00
Lauri Ojansivu 0495e61c28 Change snap to previous MongoDB version 3.2.18 because of data loss:
https://github.com/wekan/wekan-mongodb/issues/9
2018-03-15 18:54:03 +02:00
Lauri Ojansivu c1c3421006 Change to previous MongoDB version 3.2.18 because of data loss:
https://github.com/wekan/wekan-mongodb/issues/9
2018-03-15 18:53:28 +02:00
Lauri Ojansivu 3ce90e9766 Update translations. 2018-03-13 02:01:52 +02:00
Lauri Ojansivu 293718d90c - Fix card copy and move with swimlanes
Thanks andresmanelli ! Closes #1520
2018-03-07 21:18:08 +02:00
Andrés Manelli 4b53b0c90a Fix card copy and move with swimlanes 2018-03-07 14:11:21 -03:00
Lauri Ojansivu 98103bb2f7 Merge branch 'lumatijev-patch-1' into devel 2018-03-07 15:33:09 +02:00
Lauri Ojansivu e5b003f5ab - Fix swimlane header rotation on Google Chrome. After this change
both Firefox 58 and Google Chrome 64 have properly rotated
  swimlane header.

Thanks to lumatijev !
2018-03-07 15:31:34 +02:00
Luka Matijević 9a1b1a5bed Fix swimlane header rotation on Google Chrome
After this change both Firefox 58 and Google Chrome 64 have properly rotated swimlane header.
2018-03-07 09:42:35 +01:00
Lauri Ojansivu 990af4e5c2 Update translations. 2018-03-07 09:05:10 +02:00
Lauri Ojansivu f7a9bafe4c - Fix scroll when dragging elements. Remove
scrollbars from swimlanes.
- Partial fix for scroll bar inside cardDetails.

Thanks to andresmanelli !

Closes #1458, closes #1484,
closes #1481, closes #1497,
closes #1521
2018-03-07 08:13:35 +02:00
Andrés Manelli ac7d44f8a8 Partial fix for scroll bar inside cardDetails 2018-03-06 22:00:13 -03:00
Andrés Manelli ed8471be9b Fix scroll when dragging elements. Remove scrollbars from swimlanes. 2018-03-06 21:36:16 -03:00
Lauri Ojansivu 65beb89944 MongoDB 3.2.19 2018-03-06 01:08:56 +02:00
Lauri Ojansivu 663d8e3c34 Fix Scrollbar near top of screen when using internet explorer on Win7.
Thanks to lunatic4ever ! Closes #1524
2018-03-05 23:05:02 +02:00
Lauri Ojansivu 128a356b92 - Fix Scrollbar near top of screen when using internet explorer on Win7
Thanks to lunatic4ever ! Closes #1524
2018-03-05 23:01:09 +02:00
Lauri Ojansivu 2092b429db - Fix Add Card Button dissapearing when dragging
Thanks to andresmanelli ! Closes #1519
2018-03-05 22:43:02 +02:00
Andrés Manelli 58e5e9b308 Fix #1519 Add Card Btn dissapear on drag 2018-03-05 17:25:00 -03:00
Lauri Ojansivu 338fb5304d Update translations. 2018-03-03 17:46:49 +02:00
Lauri Ojansivu 9e62584b26 Merge branch 'GhassenRjab-feature/list-default-view' into devel 2018-03-02 12:47:17 +02:00
Lauri Ojansivu 5849ffbb53 - Lists view is the default view when creating boards.
Thanks to GhassenRjab ! Closes #1507
2018-03-02 12:45:20 +02:00
Lauri Ojansivu a58bffbb3e Merge branch 'feature/list-default-view' of https://github.com/GhassenRjab/wekan into GhassenRjab-feature/list-default-view 2018-03-02 12:39:10 +02:00
Lauri Ojansivu a8ae6adbc2 Merge branch 'GhassenRjab-hotfix/wekan-import' into devel 2018-03-02 12:38:02 +02:00
Lauri Ojansivu 946dcf0b0a - Import missing card fields: isOvertime, startAt and spentTime.
Thanks to GhassenRjab ! Closes #1516, closes #1428
2018-03-02 12:36:30 +02:00
Ghassen Rjab 1ca9e96f35 Lists view is the default view when creating boards 2018-03-02 00:06:45 +01:00
Ghassen Rjab b475127c53 Import missing card fields : isOvertime, startAt and spenTime 2018-03-01 23:34:17 +01:00
Lauri Ojansivu bbca361aeb Merge branch 'kubiko-devel' into devel 2018-03-01 14:37:31 +02:00
Lauri Ojansivu f96e21f462 Snap:
- Adding network hooks for configure hook to fix security denials
- Fixing problem when mongodb was not started at install/refresh

Thanks to kubiko ! Closes wekan/wekan-snap#36
2018-03-01 14:13:47 +02:00
Ondrej Kubik 1be8e5625f Fixing problem when mongodb was not started at install/refresh
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-03-01 11:53:40 +00:00
Ondrej Kubik 9084158aec Adding network hooks for configure hook to fix security denials
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>
2018-03-01 11:53:21 +00:00
Lauri Ojansivu d454fa7dd7 - Remove list max-height 350px.
Thanks to xet7 !
Closes #1512, closes wekan/wekan-snap#35
2018-03-01 13:00:48 +02:00
Lauri Ojansivu b6d3e79548 Remove list max-height 350px. Thanks to xet7 !
Closes #1512, closes wekan/wekan-snap#35
2018-03-01 12:54:28 +02:00
Lauri Ojansivu a23d93391b - Fix scrollbar inside list and outer scroll.
Thanks to andresmanelli ! Closes #1485
2018-03-01 01:02:09 +02:00
Andrés Manelli a033c35a34 Fix scrollbar inside list and outer scroll 2018-02-28 15:48:36 -03:00
Lauri Ojansivu 48cd551a69 Merge remote-tracking branch 'upstream/devel' into devel 2018-02-28 16:36:46 +02:00
Andrés Manelli 8d2839f0c3 Fix order lists in lists view 2018-02-28 11:24:39 -03:00
Lauri Ojansivu 284fac043b - Allow swimlanes reordering
- Avoid swimlane title overlap

Thanks to andresmanelli !
Related #955. Closes #1487
2018-02-28 10:30:05 +02:00
Lauri Ojansivu bd239351fd Update translations. 2018-02-28 09:07:42 +02:00
Andrés Manelli 37c94622e4 Allow swimlanes reordering 2018-02-27 20:11:43 -03:00
Andrés Manelli c4fa9010f3 Avoid swimlane title overlap 2018-02-27 13:51:47 -03:00
Lauri Ojansivu 843381a36c Merge pull request #1510 from GhassenRjab/feature/fix-lint-warnings
Fix lint warnings
2018-02-27 08:41:35 +02:00
Ghassen Rjab 59ba2111e8 Fix lint warnings 2018-02-27 02:57:58 +01:00
Lauri Ojansivu 1efa66b58c Merge branch 'GhassenRjab-feature/fix-lint' into devel 2018-02-26 16:11:03 +02:00
Lauri Ojansivu dc8c9053c2 - Fix lint errors related to sandstorm
- Add Swimlanes to globals
- Fix lint errors related to trello creator
- Fix lint errors related to language names

Thanks to GhassenRjab !
2018-02-26 16:10:18 +02:00
Ghassen Rjab 0a16147470 Fix lint errors related to sandstorm 2018-02-26 03:19:59 +01:00
Ghassen Rjab 373e9782dc Add Swimlanes to globals 2018-02-26 03:19:27 +01:00
Ghassen Rjab 951a0db380 Fix lint errors related to trello creator 2018-02-26 03:18:26 +01:00
Ghassen Rjab c0d33d97f2 Fix lint errors related to language names 2018-02-26 03:17:56 +01:00
45 changed files with 1261 additions and 674 deletions

No files matched your search

+3 -1
View File
@@ -129,6 +129,8 @@
"Integrations": true,
"HTTP": true,
"AccountSettings": true,
"Announcements": true
"Announcements": true,
"Swimlanes": true,
"Npm": true
}
}
+36
View File
@@ -1,3 +1,39 @@
# v0.78 2018-03-17 Wekan release
This release adds the following new features:
- [Allow swimlanes reordering](https://github.com/wekan/wekan/commit/37c94622e476f50bf2387bc8b140454d66200e78);
- [Import missing card fields: isOvertime, startAt and spentTime](https://github.com/wekan/wekan/commit/b475127c53031fa498da139a7d16f3e54d43b90d);
- [Lists view is the default view when creating boards](https://github.com/wekan/wekan/commit/1ca9e96f35389c0eec2290e8e1207801ee25f907);
- [Enabled import at Sandtorm. Keep there big DANGER warning about data loss bug.](https://github.com/wekan/wekan/commit/22923d08af4f1a63ded1d92fe6918436b598592b);
- [Add language: Armenian](https://github.com/wekan/wekan/commit/75693d16e2a0f3d201c1036ab06e6d40eb1c0adc).
and fixes the following bugs:
- [Fix lint errors related to sandstorm](https://github.com/wekan/wekan/commit/0a16147470246c8f49bb918f5ddc7bb2e54fba14);
- [Add Swimlanes to globals](https://github.com/wekan/wekan/commit/373e9782dcf87a9c1169b5d1f8175ce14e4898c9);
- [Fix lint errors related to trello creator](https://github.com/wekan/wekan/commit/951a0db380d60f3d948ae38d50b85a54983a51de);
- [Fix lint errors related to language names](https://github.com/wekan/wekan/commit/c0d33d97f2c8d4e9371a03d4ad3022df3ed64d3d);
- [Avoid swimlane title overlap](https://github.com/wekan/wekan/commit/c4fa9010f34966b633c7bf7e46ad49fc101127c9);
- [Fix scrollbar inside list and outer scroll](https://github.com/wekan/wekan/commit/a033c35a3411902b9bf8f62a40cd68f641e573d3);
- [Remove list max-height 350px](https://github.com/wekan/wekan/commit/b6d3e79548d1e88c93fa2965a936595176a95565);
- [Snap: Adding network hooks for configure hook to fix security denials](https://github.com/wekan/wekan/commit/9084158aece8a642dc49bf7ecc2196bf9d1af63e);
- [Snap: Fixing problem when mongodb was not started at install/refresh](https://github.com/wekan/wekan/commit/1be8e5625fd20797910009a8221ca706fd52ab11);
- [Fix Add Card Button dissapearing when dragging](https://github.com/wekan/wekan/commit/58e5e9b308113e5a8af5166328a68a0aafcc2558);
- [Fix Scrollbar near top of screen when using internet explorer on Win7](https://github.com/wekan/wekan/commit/128a356b9222fa0ed824b477c2d0e1e6a0368021);
- [Fix scroll when dragging elements. Remove scrollbars from swimlanes.](https://github.com/wekan/wekan/commit/ed8471be9b79243b016a275e5b11a6912717fbb9);
- [Partial fix for scroll bar inside cardDetails](https://github.com/wekan/wekan/commit/ac7d44f8a8d809cd94ed5ef3640473f34c72403b);
- [Fix swimlane header rotation on Google Chrome. After this change both Firefox 58 and Google Chrome 64
have properly rotated swimlane header.](https://github.com/wekan/wekan/commit/9a1b1a5bedbe44827de109731a3c3b1a07790d3e);
- [Fix card copy and move with swimlanes](https://github.com/wekan/wekan/commit/4b53b0c90a57593c0fe2d808d2298e85f488bfa9).
- [Fix scroll board when opening cardDetails](https://github.com/wekan/wekan/commit/454523dd4744b2bccb6805dad59abd664fdacb31);
- [Fix swimlane info not displayed in activities](https://github.com/wekan/wekan/commit/bb37d8fa964c0d03721a664387e74300fde09eef);
- [Fix sandstorm default swimlane creation](https://github.com/wekan/wekan/commit/f470323ee746c4e79f07d166d511867408194eb6);
- [Extend lists to bottom of frame in lists view](https://github.com/wekan/wekan/commit/c62a2ee11febf7f98456c97dc3973509b4bfe119);
- [Fix drag and drop issues when re-enter board](https://github.com/wekan/wekan/commit/5b0f7f8aef115b202aaff6bc25bb514426dc2009).
Thanks to GitHub users andresmanelli, GhassenRjab, kubiko, lumatijev, lunatic4ever and xet7 for their contributions.
# v0.77 2018-02-23 Wekan release
This release adds the following new features:
+1 -1
View File
@@ -14,7 +14,7 @@ template(name="board")
template(name="boardBody")
.board-wrapper(class=currentBoard.colorClass)
+sidebar
.board-canvas(
.board-canvas.js-swimlanes.js-perfect-scrollbar(
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
+87 -23
View File
@@ -1,9 +1,8 @@
const subManager = new SubsManager();
const { calculateIndex } = Utils;
BlazeComponent.extendComponent({
onCreated() {
this.draggingActive = new ReactiveVar(false);
this.showOverlay = new ReactiveVar(false);
this.isBoardReady = new ReactiveVar(false);
// The pattern we use to manually handle data loading is described here:
@@ -21,32 +20,72 @@ BlazeComponent.extendComponent({
});
});
});
this._isDragging = false;
this._lastDragPositionX = 0;
// Used to set the overlay
this.mouseHasEnterCardDetails = false;
},
// XXX Flow components allow us to avoid creating these two setter methods by
// exposing a public API to modify the component state. We need to investigate
// best practices here.
setIsDragging(bool) {
this.draggingActive.set(bool);
},
scrollLeft(position = 0) {
const lists = this.$('.js-lists');
lists && lists.animate({
scrollLeft: position,
});
},
onlyShowCurrentCard() {
return Utils.isMiniScreen() && Session.get('currentCard');
},
}).register('board');
BlazeComponent.extendComponent({
onCreated() {
this.showOverlay = new ReactiveVar(false);
this.draggingActive = new ReactiveVar(false);
this._isDragging = false;
// Used to set the overlay
this.mouseHasEnterCardDetails = false;
},
onRendered() {
const boardComponent = this;
const $swimlanesDom = boardComponent.$('.js-swimlanes');
$swimlanesDom.sortable({
tolerance: 'pointer',
appendTo: '.board-canvas',
helper: 'clone',
handle: '.js-swimlane-header',
items: '.js-swimlane:not(.placeholder)',
placeholder: 'swimlane placeholder',
distance: 7,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
boardComponent.setIsDragging(true);
},
stop(evt, ui) {
// To attribute the new index number, we need to get the DOM element
// of the previous and the following card -- if any.
const prevSwimlaneDom = ui.item.prev('.js-swimlane').get(0);
const nextSwimlaneDom = ui.item.next('.js-swimlane').get(0);
const sortIndex = calculateIndex(prevSwimlaneDom, nextSwimlaneDom, 1);
$swimlanesDom.sortable('cancel');
const swimlaneDomElement = ui.item.get(0);
const swimlane = Blaze.getData(swimlaneDomElement);
Swimlanes.update(swimlane._id, {
$set: {
sort: sortIndex.base,
},
});
boardComponent.setIsDragging(false);
},
});
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
}
// If there is no data in the board (ie, no lists) we autofocus the list
// creation form by clicking on the corresponding element.
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (userIsMember() && currentBoard.lists().count() === 0) {
boardComponent.openNewListForm();
}
},
isViewSwimlanes() {
const currentBoardId = Session.get('currentBoard');
const board = Boards.findOne(currentBoardId);
@@ -59,6 +98,16 @@ BlazeComponent.extendComponent({
return (board.view === 'board-view-lists');
},
openNewListForm() {
if (this.isViewSwimlanes()) {
this.childComponents('swimlane')[0]
.childComponents('addListAndSwimlaneForm')[0].open();
} else if (this.isViewLists()) {
this.childComponents('listsGroup')[0]
.childComponents('addListForm')[0].open();
}
},
events() {
return [{
// XXX The board-overlay div should probably be moved to the parent
@@ -75,4 +124,19 @@ BlazeComponent.extendComponent({
},
}];
},
}).register('board');
// XXX Flow components allow us to avoid creating these two setter methods by
// exposing a public API to modify the component state. We need to investigate
// best practices here.
setIsDragging(bool) {
this.draggingActive.set(bool);
},
scrollLeft(position = 0) {
const swimlanes = this.$('.js-swimlanes');
swimlanes && swimlanes.animate({
scrollLeft: position,
});
},
}).register('boardBody');
+2 -9
View File
@@ -15,23 +15,16 @@ position()
.board-wrapper
position: cover
overflow-y: hidden;
.board-canvas
position: cover
transition: margin .1s
overflow-y: auto;
&.is-sibling-sidebar-open
margin-right: 248px
.swimlane
border-bottom: 1px solid #CCC
display: flex
flex-direction: row
margin: 0 0 10px
padding: 0 40px 5px 0
overflow-x: auto
overflow-y: hidden
.board-overlay
position: fixed-cover
top: -100px
+11 -6
View File
@@ -166,6 +166,7 @@ template(name="copyChecklistToManyCardsPopup")
+boardsAndLists
template(name="boardsAndLists")
label {{_ 'boards'}}:
select.js-select-boards
each boards
if $eq _id currentBoard._id
@@ -173,14 +174,18 @@ template(name="boardsAndLists")
else
option(value="{{_id}}") {{title}}
label {{_ 'swimlanes'}}:
select.js-select-swimlanes
each swimlanes
option(value="{{_id}}") {{title}}
label {{_ 'lists'}}:
ul.pop-over-list
select.js-select-lists
each aBoardLists
li
if $eq ../_id _id
a.disabled {{title}} ({{_ 'current'}})
else
a.js-select-list= title
option(value="{{_id}}") {{title}}
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}
template(name="cardMembersPopup")
ul.pop-over-list.js-card-member-list
+26 -14
View File
@@ -44,8 +44,8 @@ BlazeComponent.extendComponent({
const cardPanelWidth = 510;
const bodyBoardComponent = this.parentComponent().parentComponent();
const $cardContainer = bodyBoardComponent.$('.js-lists');
const $cardView = this.$(this.firstNode());
const $cardContainer = bodyBoardComponent.$('.js-swimlanes');
const cardContainerScroll = $cardContainer.scrollLeft();
const cardContainerWidth = $cardContainer.width();
@@ -211,11 +211,14 @@ Template.editCardTitleForm.events({
});
Template.moveCardPopup.events({
'click .js-select-list' () {
'click .js-done' () {
// XXX We should *not* get the currentCard from the global state, but
// instead from a “component” state.
const card = Cards.findOne(Session.get('currentCard'));
const newListId = this._id;
const lSelect = $('.js-select-lists')[0];
const newListId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
card.move(card.swimlaneId, newListId, 0);
Popup.close();
},
@@ -223,7 +226,8 @@ Template.moveCardPopup.events({
BlazeComponent.extendComponent({
onCreated() {
this.selectedBoard = new ReactiveVar(Session.get('currentBoard'));
subManager.subscribe('board', Session.get('currentBoard'));
this.selectedBoardId = new ReactiveVar(Session.get('currentBoard'));
},
boards() {
@@ -236,32 +240,41 @@ BlazeComponent.extendComponent({
return boards;
},
swimlanes() {
const board = Boards.findOne(this.selectedBoardId.get());
return board.swimlanes();
},
aBoardLists() {
subManager.subscribe('board', this.selectedBoard.get());
const board = Boards.findOne(this.selectedBoard.get());
const board = Boards.findOne(this.selectedBoardId.get());
return board.lists();
},
events() {
return [{
'change .js-select-boards'(evt) {
this.selectedBoard.set($(evt.currentTarget).val());
this.selectedBoardId.set($(evt.currentTarget).val());
subManager.subscribe('board', this.selectedBoardId.get());
},
}];
},
}).register('boardsAndLists');
Template.copyCardPopup.events({
'click .js-select-list' (evt) {
'click .js-done'() {
const card = Cards.findOne(Session.get('currentCard'));
const oldId = card._id;
card._id = null;
card.listId = this._id;
const list = Lists.findOne(card.listId);
card.boardId = list.boardId;
const textarea = $(evt.currentTarget).parents('.content').find('textarea');
const lSelect = $('.js-select-lists')[0];
card.listId = lSelect.options[lSelect.selectedIndex].value;
const slSelect = $('.js-select-swimlanes')[0];
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
const bSelect = $('.js-select-boards')[0];
card.boardId = bSelect.options[bSelect.selectedIndex].value;
const textarea = $('#copy-card-title');
const title = textarea.val().trim();
// insert new card to the bottom of new list
card.sort = Lists.findOne(this._id).cards().count();
card.sort = Lists.findOne(card.listId).cards().count();
if (title) {
card.title = title;
@@ -297,7 +310,6 @@ Template.copyCardPopup.events({
},
});
Template.copyChecklistToManyCardsPopup.events({
'click .js-select-list' (evt) {
const card = Cards.findOne(Session.get('currentCard'));
-1
View File
@@ -2,7 +2,6 @@
.card-details
padding: 0 20px
height: 100%
flex-shrink: 0
flex-basis: 470px
will-change: flex-basis
+8 -11
View File
@@ -11,17 +11,14 @@ template(name="import")
+Template.dynamic(template=currentTemplate)
template(name="importTextarea")
unless isSandstorm
form
p: label(for='import-textarea') {{_ instruction}}
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
| {{jsonText}}
if isSandstorm
p.warning {{_ 'import-sandstorm-warning'}}
input.primary.wide(type="submit" value="{{_ 'import'}}")
if isSandstorm
p.warning 'Import disabled because of data loss bug https://github.com/wekan/wekan/issues/1430'
form
p: label(for='import-textarea') {{_ instruction}}
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
| {{jsonText}}
if isSandstorm
h1.warning DANGER !!! THIS DESTROYS YOUR IMPORTED DATA, CAUSES BOARD NOT FOUND ERROR WHEN YOU OPEN THIS GRAIN AGAIN https://github.com/wekan/wekan/issues/1430
p.warning {{_ 'import-sandstorm-warning'}}
input.primary.wide(type="submit" value="{{_ 'import'}}")
template(name="importMapMembers")
h2 {{_ 'import-map-members'}}
+6 -6
View File
@@ -19,12 +19,17 @@ BlazeComponent.extendComponent({
// comment below provides further details.
onRendered() {
const boardComponent = this.parentComponent().parentComponent();
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
}
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
const $cards = this.$('.js-minicards');
$cards.sortable({
connectWith: '.js-minicards:not(.js-list-full)',
tolerance: 'pointer',
appendTo: 'body',
appendTo: '.board-canvas',
helper(evt, item) {
const helper = item.clone();
if (MultiSelection.isActive()) {
@@ -40,7 +45,6 @@ BlazeComponent.extendComponent({
},
distance: 7,
items: itemsSelector,
scroll: false,
placeholder: 'minicard-wrapper placeholder',
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
@@ -79,10 +83,6 @@ BlazeComponent.extendComponent({
},
});
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
}
// Disable drag-dropping if the current user is not a board member or is comment only
this.autorun(() => {
$cards.sortable('option', 'disabled', !userIsMember());
+2 -1
View File
@@ -10,6 +10,7 @@
// transparent, because that won't work during a list drag.
background: darken(white, 13%)
border-left: 1px solid darken(white, 20%)
border-bottom: 1px solid #CCC
padding: 0
float: left
@@ -86,7 +87,7 @@
color: #ce1414
.list-body
flex: 1
flex: 1 1 auto
flex-direction: column
display: flex
overflow-y: auto
+8 -4
View File
@@ -17,10 +17,14 @@ Template.userFormsLayout.onRendered(() => {
Template.userFormsLayout.helpers({
languages() {
return _.map(TAPi18n.getLanguages(), (lang, code) => {
return {
tag: code,
name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name,
};
const tag = code;
let name = lang.name;
if (lang.name === 'br') {
name = 'Brezhoneg';
} else if (lang.name === 'ig') {
name = 'Igbo';
}
return { tag, name };
}).sort(function(a, b) {
if (a.name === b.name) {
return 0;
+1 -1
View File
@@ -156,7 +156,7 @@ Template.memberPopup.events({
}),
'click .js-leave-member': Popup.afterConfirm('leaveBoard', () => {
const boardId = Session.get('currentBoard');
Meteor.call('quitBoard', boardId, (err, ret) => {
Meteor.call('quitBoard', boardId, () => {
Popup.close();
FlowRouter.go('home');
});
@@ -1,5 +1,5 @@
template(name="swimlaneHeader")
.swimlane-header-wrap
.swimlane-header-wrap.js-swimlane-header
+inlinedForm
+editSwimlaneTitleForm
else
@@ -9,7 +9,7 @@ template(name="swimlaneHeader")
.swimlane-header-menu
unless currentUser.isCommentOnly
a.fa.fa-navicon.js-open-swimlane-menu
template(name="editSwimlaneTitleForm")
.list-composer
input.list-name-input.full-line(type="text" value=title autofocus)
+4 -4
View File
@@ -1,5 +1,5 @@
template(name="swimlane")
.swimlane.js-lists
.swimlane.js-lists.js-swimlane
+swimlaneHeader
if isMiniScreen
if currentList
@@ -18,7 +18,7 @@ template(name="swimlane")
+addListAndSwimlaneForm
template(name="listsGroup")
.swimlane.js-lists
.swimlane.list-group.js-lists
if isMiniScreen
if currentList
+list(currentList)
@@ -36,7 +36,7 @@ template(name="listsGroup")
+addListForm
template(name="addListAndSwimlaneForm")
.list.js-list.list-composer.js-list-composer
.list.list-composer.js-list-composer
.list-header
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
@@ -61,7 +61,7 @@ template(name="addListAndSwimlaneForm")
| {{_ 'add-swimlane'}}
template(name="addListForm")
.list.js-list.list-composer.js-list-composer
.list.list-composer.js-list-composer
.list-header
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
+76 -93
View File
@@ -1,4 +1,80 @@
const { calculateIndex } = Utils;
BlazeComponent.extendComponent({
onRendered() {
const boardComponent = this.parentComponent();
const $listsDom = this.$('.js-lists');
if (!Session.get('currentCard')) {
boardComponent.scrollLeft();
}
// We want to animate the card details window closing. We rely on CSS
// transition for the actual animation.
$listsDom._uihooks = {
removeElement(node) {
const removeNode = _.once(() => {
node.parentNode.removeChild(node);
});
if ($(node).hasClass('js-card-details')) {
$(node).css({
flexBasis: 0,
padding: 0,
});
$listsDom.one(CSSEvents.transitionend, removeNode);
} else {
removeNode();
}
},
};
$listsDom.sortable({
tolerance: 'pointer',
helper: 'clone',
handle: '.js-list-header',
items: '.js-list:not(.js-list-composer)',
placeholder: 'list placeholder',
distance: 7,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
EscapeActions.executeUpTo('popup-close');
boardComponent.setIsDragging(true);
},
stop(evt, ui) {
// To attribute the new index number, we need to get the DOM element
// of the previous and the following card -- if any.
const prevListDom = ui.item.prev('.js-list').get(0);
const nextListDom = ui.item.next('.js-list').get(0);
const sortIndex = calculateIndex(prevListDom, nextListDom, 1);
$listsDom.sortable('cancel');
const listDomElement = ui.item.get(0);
const list = Blaze.getData(listDomElement);
Lists.update(list._id, {
$set: {
sort: sortIndex.base,
},
});
boardComponent.setIsDragging(false);
},
});
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
}
// Disable drag-dropping while in multi-selection mode, or if the current user
// is not a board member
boardComponent.autorun(() => {
const $listDom = $listsDom;
if ($listDom.data('sortable')) {
$listsDom.sortable('option', 'disabled',
MultiSelection.isActive() || !userIsMember());
}
});
},
onCreated() {
this.draggingActive = new ReactiveVar(false);
@@ -6,28 +82,10 @@ BlazeComponent.extendComponent({
this._lastDragPositionX = 0;
},
openNewListForm() {
this.childComponents('addListForm')[0].open();
},
id() {
return this._id;
},
// XXX Flow components allow us to avoid creating these two setter methods by
// exposing a public API to modify the component state. We need to investigate
// best practices here.
setIsDragging(bool) {
this.draggingActive.set(bool);
},
scrollLeft(position = 0) {
const lists = this.$('.js-lists');
lists && lists.animate({
scrollLeft: position,
});
},
currentCardIsInThisList(listId, swimlaneId) {
const currentCard = Cards.findOne(Session.get('currentCard'));
const currentBoardId = Session.get('currentBoard');
@@ -78,81 +136,6 @@ BlazeComponent.extendComponent({
},
}).register('swimlane');
Template.swimlane.onRendered(function() {
const self = BlazeComponent.getComponentForElement(this.firstNode);
self.listsDom = this.find('.js-lists');
if (!Session.get('currentCard')) {
self.scrollLeft();
}
// We want to animate the card details window closing. We rely on CSS
// transition for the actual animation.
self.listsDom._uihooks = {
removeElement(node) {
const removeNode = _.once(() => {
node.parentNode.removeChild(node);
});
if ($(node).hasClass('js-card-details')) {
$(node).css({
flexBasis: 0,
padding: 0,
});
$(self.listsDom).one(CSSEvents.transitionend, removeNode);
} else {
removeNode();
}
},
};
$(self.listsDom).sortable({
tolerance: 'pointer',
helper: 'clone',
handle: '.js-list-header',
items: '.js-list:not(.js-list-composer)',
placeholder: 'list placeholder',
distance: 7,
start(evt, ui) {
ui.placeholder.height(ui.helper.height());
Popup.close();
},
stop() {
$(self.listsDom).find('.js-list:not(.js-list-composer)').each(
(i, list) => {
const data = Blaze.getData(list);
Lists.update(data._id, {
$set: {
sort: i,
},
});
}
);
},
});
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember();
}
// Disable drag-dropping while in multi-selection mode, or if the current user
// is not a board member
self.autorun(() => {
const $listDom = $(self.listsDom);
if ($listDom.data('sortable')) {
$(self.listsDom).sortable('option', 'disabled',
MultiSelection.isActive() || !userIsMember());
}
});
// If there is no data in the board (ie, no lists) we autofocus the list
// creation form by clicking on the corresponding element.
const currentBoard = Boards.findOne(Session.get('currentBoard'));
if (userIsMember() && currentBoard.lists().count() === 0) {
self.openNewListForm();
}
});
BlazeComponent.extendComponent({
// Proxy
open() {
+50 -20
View File
@@ -1,24 +1,54 @@
@import 'nib'
.swimlane-header-wrap
display: flex;
flex-direction: row;
flex: 0 0 50px;
.swimlane
// Even if this background color is the same as the body we can't leave it
// transparent, because that won't work during a swimlane drag.
background: darken(white, 13%)
display: flex
flex-direction: row
overflow: 0;
max-height: 100%
.swimlane-header
writing-mode: sideways-lr;
font-size: 14px;
line-height: 50px;
margin: 0;
font-weight: bold;
min-height: 9px;
min-width: 30px;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
word-wrap: break-word;
text-align: center;
&.placeholder
background-color: rgba(0, 0, 0, .2)
border-color: transparent
box-shadow: none
height: 100px
.swimlane-header-menu
position: absolute
padding: 20px 20px
&.ui-sortable-helper
box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
0 0 1px rgba(0, 0, 0, .5)
transform: rotate(2deg)
cursor: grabbing
.swimlane-header.ui-sortable-handle
cursor: grabbing
.swimlane-header-wrap
display: flex;
flex-direction: row;
flex: 0 0 50px;
padding-bottom: 30px;
border-bottom: 1px solid #CCC
.swimlane-header
writing-mode: vertical-rl;
transform: rotate(180deg);
font-size: 14px;
line-height: 50px;
margin-top: 50px;
font-weight: bold;
min-height: 9px;
min-width: 30px;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
word-wrap: break-word;
text-align: center;
.swimlane-header-menu
position: absolute
padding: 20px 20px
.list-group
height: 100%
+10 -4
View File
@@ -114,10 +114,16 @@ Template.changePasswordPopup.onRendered(function () {
Template.changeLanguagePopup.helpers({
languages() {
return _.map(TAPi18n.getLanguages(), (lang, code) => {
return {
tag: code,
name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name,
};
// Same code in /client/components/main/layouts.js
// TODO : Make code reusable
const tag = code;
let name = lang.name;
if (lang.name === 'br') {
name = 'Brezhoneg';
} else if (lang.name === 'ig') {
name = 'Igbo';
}
return { tag, name };
}).sort(function (a, b) {
if (a.name === b.name) {
return 0;
+197 -197
View File
@@ -1,10 +1,10 @@
{
"accept": "Accept",
"act-activity-notify": "[Wekan] Activity Notification",
"act-activity-notify": "[Wekan] Известия за дейности",
"act-addAttachment": "attached __attachment__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
"act-addComment": "Коментира в __card__: __comment__",
"act-createBoard": "created __board__",
"act-createCard": "added __card__ to __list__",
"act-createList": "added __list__ to __board__",
@@ -24,45 +24,45 @@
"act-withBoardTitle": "[Wekan] __board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "archived %s",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
"activities": "Действия",
"activity": "Дейности",
"activity-added": "добави %s към %s",
"activity-archived": "архивира %s",
"activity-attached": "прикачи %s към %s",
"activity-created": "създаде %s",
"activity-excluded": "изключи %s от %s",
"activity-imported": "импортира %s в/във %s от %s",
"activity-imported-board": "импортира %s от %s",
"activity-joined": "joined %s",
"activity-moved": "moved %s from %s to %s",
"activity-moved": "премести %s от %s в/във %s",
"activity-on": "на %s",
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-removed": "премахна %s от %s",
"activity-sent": "изпрати %s до %s",
"activity-unjoined": "unjoined %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
"add-label": "Add Label",
"add-list": "Add List",
"activity-checklist-added": "добави списък със задачи към %s",
"activity-checklist-item-added": "добави точка към '%s' в/във %s",
"add": "Добави",
"add-attachment": "Добави прикачен файл",
"add-board": "Добави дъска",
"add-card": "Добави карта",
"add-swimlane": "Добави коридор",
"add-checklist": "Добави списък със задачи",
"add-checklist-item": "Добави точка към списъка със задачи",
"add-cover": "Добави корица",
"add-label": "Добави етикет",
"add-list": "Добави списък",
"add-members": "Добави членове",
"added": "Added",
"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": "Announcement from Administrator",
"all-boards": "All boards",
"all-boards": "Всички дъски",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
"apply": "Приложи",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"archive": "Архив",
"archive-all": "Архивирай всички",
@@ -76,67 +76,67 @@
"archived-boards": "Archived Boards",
"restore-board": "Restore Board",
"no-archived-boards": "No Archived Boards.",
"archives": "Archives",
"archives": "Архиви",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
"attached": "прикачен",
"attachment": "Прикаченн файл",
"attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
"attachmentDeletePopup-title": "Delete Attachment?",
"attachments": "Attachments",
"auto-watch": "Automatically watch boards when they are created",
"avatar-too-big": "The avatar is too large (70KB max)",
"back": "Back",
"board-change-color": "Change color",
"board-nb-stars": "%s stars",
"attachmentDeletePopup-title": "Желаете ли да изтриете прикачения файл?",
"attachments": "Прикачени файлове",
"auto-watch": "Автоматично наблюдаване на дъските, когато са създадени",
"avatar-too-big": "Аватарът е прекалено голям (максимум 70KB)",
"back": "Назад",
"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",
"boardChangeTitlePopup-title": "Rename Board",
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardChangeWatchPopup-title": "Промени наблюдаването",
"boardMenuPopup-title": "Board Menu",
"boards": "Дъски",
"board-view": "Board View",
"board-view-swimlanes": "Коридори",
"board-view-lists": "Lists",
"board-view-lists": "Списъци",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is archived.",
"card-comments-title": "This card has %s comment.",
"card-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": "You can archive a card to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
"card-edit-attachments": "Edit attachments",
"card-edit-labels": "Edit labels",
"card-edit-members": "Edit members",
"card-labels-title": "Change the labels for the card.",
"card-due": "Готова за",
"card-due-on": "Готова за",
"card-spent": "Изработено време",
"card-edit-attachments": "Промени прикачените файлове",
"card-edit-labels": "Промени етикетите",
"card-edit-members": "Промени членовете",
"card-labels-title": "Променете етикетите за тази карта",
"card-members-title": "Add or remove members of the board from the card.",
"card-start": "Начало",
"card-start-on": "Starts on",
"cardAttachmentsPopup-title": "Attach From",
"cardDeletePopup-title": "Delete Card?",
"cardDetailsActionsPopup-title": "Card Actions",
"cardLabelsPopup-title": "Labels",
"cardDeletePopup-title": "Желаете да изтриете картата?",
"cardDetailsActionsPopup-title": "Опции",
"cardLabelsPopup-title": "Етикети",
"cardMembersPopup-title": "Членове",
"cardMorePopup-title": "More",
"cards": "Cards",
"cardMorePopup-title": "Още",
"cards": "Карти",
"change": "Change",
"change-avatar": "Change Avatar",
"change-password": "Change Password",
"change-avatar": "Промени аватара",
"change-password": "Промени паролата",
"change-permissions": "Change permissions",
"change-settings": "Change Settings",
"changeAvatarPopup-title": "Change Avatar",
"changeLanguagePopup-title": "Change Language",
"changePasswordPopup-title": "Change Password",
"change-settings": "Промени настройките",
"changeAvatarPopup-title": "Промени аватара",
"changeLanguagePopup-title": "Промени езика",
"changePasswordPopup-title": "Промени паролата",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
"checklists": "Checklists",
"changeSettingsPopup-title": "Промяна на настройките",
"checklists": "Списъци със задачи",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
"click-to-unstar": "Натиснете, за да премахнете тази дъска от любими.",
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
@@ -151,15 +151,15 @@
"color-red": "red",
"color-sky": "sky",
"color-yellow": "yellow",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"comment": "Коментирай",
"comment-placeholder": "Напиши коментар",
"comment-only": "Само коментар",
"comment-only-desc": "Може да коментира само в карти.",
"computer": "Computer",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
"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": "Create",
@@ -167,40 +167,40 @@
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"current": "current",
"date": "Date",
"date": "Дата",
"decline": "Decline",
"default-avatar": "Default avatar",
"delete": "Delete",
"deleteLabelPopup-title": "Delete Label?",
"description": "Description",
"default-avatar": "Основен аватар",
"delete": "Изтрий",
"deleteLabelPopup-title": "Желаете да изтриете етикета?",
"description": "Описание",
"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",
"edit-wip-limit": "Edit WIP Limit",
"download": "Сваляне",
"edit": "Промени",
"edit-avatar": "Промени аватара",
"edit-profile": "Промяна на профила",
"edit-wip-limit": "Промени WIP лимита",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Change start date",
"editCardDueDatePopup-title": "Change due date",
"editCardSpentTimePopup-title": "Change spent time",
"editCardStartDatePopup-title": "Промени началната дата",
"editCardDueDatePopup-title": "Промени датата за готовност",
"editCardSpentTimePopup-title": "Промени изработеното време",
"editLabelPopup-title": "Change Label",
"editNotificationPopup-title": "Edit Notification",
"editProfilePopup-title": "Edit Profile",
"email": "Email",
"editNotificationPopup-title": "Промени известията",
"editProfilePopup-title": "Промяна на профила",
"email": "Имейл",
"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-text": "Error trying to send email",
"email-invalid": "Invalid email",
"email-invite": "Invite via Email",
"email-fail": "Неуспешно изпращане на имейла",
"email-fail-text": "Възникна грешка при изпращането на имейла",
"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__",
"email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
"email-sent": "Email sent",
"email-sent": "Имейлът е изпратен",
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-wip-limit": "Enable WIP Limit",
@@ -214,19 +214,19 @@
"error-user-notAllowSelf": "You can not invite yourself",
"error-user-notCreated": "This user is not created",
"error-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"error-email-taken": "Имейлът е вече зает",
"export-board": "Export board",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-clear": "Clear filter",
"filter": "Филтър",
"filter-cards": "Филтрирай картите",
"filter-clear": "Премахване на филтрите",
"filter-no-label": "No label",
"filter-no-member": "No member",
"filter-on": "Filter is on",
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
"filter-to-selection": "Filter to selection",
"fullname": "Full Name",
"filter-on": "Има приложени филтри",
"filter-on-desc": "В момента филтрирате картите в тази дъска. Моля, натиснете тук, за да промените филтъра.",
"filter-to-selection": "Филтрирай избраните",
"fullname": "Име",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Hide system messages",
"hide-system-messages": "Скриване на системните съобщения",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
@@ -245,54 +245,54 @@
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
"invalid-time": "Invalid time",
"invalid-user": "Invalid user",
"info": "Версия",
"initials": "Инициали",
"invalid-date": "Невалидна дата",
"invalid-time": "Невалиден час",
"invalid-user": "Невалиден потребител",
"joined": "joined",
"just-invited": "You are just invited to this board",
"keyboard-shortcuts": "Keyboard shortcuts",
"label-create": "Create Label",
"label-create": "Създай етикет",
"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": "Етикети",
"language": "Език",
"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",
"list-archive-cards": "Archive all cards in this list",
"link-card": "Връзка към тази карта",
"list-archive-cards": "Архивирай всички карти в този списък",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"list-move-cards": "Премести всички карти в този списък",
"list-select-cards": "Избери всички карти в този списък",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
"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": "You can archive a list to remove it from the board and preserve the activity.",
"lists": "Lists",
"lists": "Списъци",
"swimlanes": "Коридори",
"log-out": "Log Out",
"log-in": "Log In",
"loginPopup-title": "Log In",
"memberMenuPopup-title": "Member Settings",
"log-out": "Изход",
"log-in": "Вход",
"loginPopup-title": "Вход",
"memberMenuPopup-title": "Настройки на профила",
"members": "Членове",
"menu": "Menu",
"menu": "Меню",
"move-selection": "Move selection",
"moveCardPopup-title": "Move Card",
"moveCardToBottom-title": "Move to Bottom",
"moveCardToTop-title": "Move to Top",
"moveCardPopup-title": "Премести картата",
"moveCardToBottom-title": "Премести в края",
"moveCardToTop-title": "Премести в началото",
"moveSelectionPopup-title": "Move selection",
"multi-selection": "Multi-Selection",
"multi-selection-on": "Multi-Selection is on",
"multi-selection": "Множествен избор",
"multi-selection-on": "Множественият избор е приложен",
"muted": "Muted",
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"my-boards": "Моите дъски",
"name": "Име",
"no-archived-cards": "No archived cards.",
"no-archived-lists": "No archived lists.",
"no-archived-swimlanes": "No archived swimlanes.",
@@ -300,13 +300,13 @@
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"notify-participate": "Получавате информация за всички карти, в които сте отбелязани или сте създали",
"notify-watch": "Получавате информация за всички дъски, списъци и карти, които наблюдавате",
"optional": "optional",
"or": "or",
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
"page-not-found": "Page not found.",
"password": "Password",
"password": "Парола",
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
"participating": "Participating",
"preview": "Preview",
@@ -314,68 +314,68 @@
"previewClipboardImagePopup-title": "Preview",
"private": "Private",
"private-desc": "This board is private. Only people added to the board can view and edit it.",
"profile": "Profile",
"profile": "Профил",
"public": "Public",
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
"quick-access-description": "Star a board to add a shortcut in this bar.",
"remove-cover": "Remove Cover",
"remove-from-board": "Remove from Board",
"remove-label": "Remove Label",
"listDeletePopup-title": "Delete List ?",
"listDeletePopup-title": "Желаете да изтриете списъка?",
"remove-member": "Remove Member",
"remove-member-from-card": "Remove from Card",
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
"removeMemberPopup-title": "Remove Member?",
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"save": "Save",
"search": "Search",
"restore": "Възстанови",
"save": "Запази",
"search": "Търсене",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"select-color": "Избери цвят",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"setWipLimitPopup-title": "Set WIP Limit",
"shortcut-assign-self": "Assign yourself to current card",
"shortcut-autocomplete-emoji": "Autocomplete emoji",
"shortcut-autocomplete-members": "Autocomplete members",
"shortcut-clear-filters": "Clear all filters",
"shortcut-clear-filters": "Изчистване на всички филтри",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-filter-my-cards": "Филтрирай моите карти",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-filterbar": "Отвори/затвори сайдбара с филтри",
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
"show-cards-minimum-count": "Show cards count if list contains more than",
"show-cards-minimum-count": "Покажи бройката на картите, ако списъка съдържа повече от",
"sidebar-open": "Open Sidebar",
"sidebar-close": "Close Sidebar",
"signupPopup-title": "Create an Account",
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
"starred-boards": "Starred Boards",
"starred-boards-description": "Starred boards show up at the top of your boards list.",
"starred-boards": "Любими дъски",
"starred-boards-description": "Любимите дъски се показват в началото на списъка Ви.",
"subscribe": "Subscribe",
"team": "Team",
"this-board": "this board",
"this-card": "this card",
"spent-time-hours": "Spent time (hours)",
"overtime-hours": "Overtime (hours)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spent time cards",
"time": "Time",
"this-card": "тази карта",
"spent-time-hours": "Изработено време (часа)",
"overtime-hours": "Оувъртайм (часа)",
"overtime": "Оувъртайм",
"has-overtime-cards": "Има карти с оувъртайм",
"has-spenttime-cards": "Има карти с изработено време",
"time": "Време",
"title": "Title",
"tracking": "Tracking",
"tracking": "Следене",
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
"unassign-member": "Unassign member",
"unsaved-description": "You have an unsaved description.",
"unwatch": "Unwatch",
"unwatch": "Спри наблюдаването",
"upload": "Upload",
"upload-avatar": "Upload an avatar",
"uploaded-avatar": "Uploaded an avatar",
"username": "Username",
"upload-avatar": "Качване на аватар",
"uploaded-avatar": "Качихте аватар",
"username": "Потребителско име",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an archived list",
"watch": "Watch",
"watching": "Watching",
"watch": "Наблюдавай",
"watching": "Наблюдава",
"watching-info": "You will be notified of any change in this board",
"welcome-board": "Welcome Board",
"welcome-swimlane": "Milestone 1",
@@ -385,55 +385,55 @@
"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",
"admin-panel": "Администраторски панел",
"settings": "Настройки",
"people": "Хора",
"registration": "Регистрация",
"disable-self-registration": "Disable Self-Registration",
"invite": "Invite",
"invite-people": "Invite People",
"invite": "Покани",
"invite-people": "Покани хора",
"to-boards": "To board(s)",
"email-addresses": "Email Addresses",
"smtp-host-description": "The address of the SMTP server that handles your emails.",
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
"smtp-tls-description": "Enable TLS support for SMTP server",
"smtp-host": "SMTP Host",
"smtp-port": "SMTP Port",
"smtp-username": "Username",
"smtp-password": "Password",
"smtp-tls": "TLS support",
"send-from": "From",
"send-smtp-test": "Send a test email to yourself",
"email-addresses": "Имейл адреси",
"smtp-host-description": "Адресът на SMTP сървъра, който обслужва Вашите имейли.",
"smtp-port-description": "Портът, който Вашият SMTP сървър използва за изходящи имейли.",
"smtp-tls-description": "Разреши TLS поддръжка за SMTP сървъра",
"smtp-host": "SMTP хост",
"smtp-port": "SMTP порт",
"smtp-username": "Потребителско име",
"smtp-password": "Парола",
"smtp-tls": "TLS поддръжка",
"send-from": "От",
"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 Wekan 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 From Wekan",
"email-smtp-test-text": "You have successfully sent an email",
"email-smtp-test-subject": "SMTP тестов имейл, изпратен от Wekan",
"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",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Wekan version",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
"OS_Freemem": "OS Free Memory",
"OS_Loadavg": "OS Load Average",
"OS_Platform": "OS Platform",
"OS_Release": "OS Release",
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
"accounts-allowEmailChange": "Allow Email Change",
"createdAt": "Created at",
"verified": "Verified",
"active": "Active"
"Wekan_version": "Версия на Wekan",
"Node_version": "Версия на Node",
"OS_Arch": "Архитектура на ОС",
"OS_Cpus": "Брой CPU ядра",
"OS_Freemem": "Свободна памет",
"OS_Loadavg": "ОС средно натоварване",
"OS_Platform": "ОС платформа",
"OS_Release": "ОС Версия",
"OS_Totalmem": "ОС Общо памет",
"OS_Type": "Тип ОС",
"OS_Uptime": "OS Ъптайм",
"hours": "часа",
"minutes": "минути",
"seconds": "секунди",
"yes": "Да",
"no": "Не",
"accounts": "Профили",
"accounts-allowEmailChange": "Разреши промяна на имейла",
"createdAt": "Създаден на",
"verified": "Потвърден",
"active": "Активен"
}
+42 -42
View File
@@ -12,7 +12,7 @@
"act-archivedBoard": "__board__ arxivat",
"act-archivedCard": "__card__ arxivat/da",
"act-archivedList": "__list__ arxivat/da",
"act-archivedSwimlane": "archived __swimlane__",
"act-archivedSwimlane": "arxivada __swimlane__",
"act-importBoard": "__board__ importat",
"act-importCard": "__card__ importat",
"act-importList": "__list__ importat",
@@ -40,12 +40,12 @@
"activity-sent": "ha enviat %s %s",
"activity-unjoined": "desassignat %s",
"activity-checklist-added": "Checklist afegida a %s",
"activity-checklist-item-added": "\nafegit checklist item de'%s' a %s",
"activity-checklist-item-added": "afegida entrada de checklist de '%s' a %s",
"add": "Afegeix",
"add-attachment": "Afegeix adjunt",
"add-board": "Afegeix Tauler",
"add-card": "Afegeix fitxa",
"add-swimlane": "Add Swimlane",
"add-swimlane": "Afegix Carril de Natació",
"add-checklist": "Afegeix checklist",
"add-checklist-item": "Afegeix un ítem",
"add-cover": "Afegeix coberta",
@@ -56,9 +56,9 @@
"addMemberPopup-title": "Membres",
"admin": "Administrador",
"admin-desc": "Pots veure i editar fitxes, eliminar membres, i canviar la configuració del tauler",
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"admin-announcement": "Bàndol",
"admin-announcement-active": "Activar bàndol del Sistema",
"admin-announcement-title": "Bàndol de l'administració",
"all-boards": "Tots els taulers",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
@@ -69,7 +69,7 @@
"archive-board": "Arxiva tauler",
"archive-card": "Arxiva fitxa",
"archive-list": "Arxiva llista",
"archive-swimlane": "Archive Swimlane",
"archive-swimlane": "Arxiva Carril de Natació",
"archive-selection": "Arxiva selecció",
"archiveBoardPopup-title": "Arxivar el tauler?",
"archived-items": "Elements arxivats",
@@ -97,8 +97,8 @@
"boardChangeWatchPopup-title": "Canvia seguiment",
"boardMenuPopup-title": "Menú del tauler",
"boards": "Taulers",
"board-view": "Board View",
"board-view-swimlanes": "Swimlanes",
"board-view": "Visió del tauler",
"board-view-swimlanes": "Carrils de Natació",
"board-view-lists": "Llistes",
"bucket-example": "Igual que “Bucket List”, per exemple",
"cancel": "Cancel·la",
@@ -109,7 +109,7 @@
"card-delete-suggest-archive": "Podeu arxivar una fitxa per extreure-la del tauler i preservar l'activitat.",
"card-due": "Finalitza",
"card-due-on": "Finalitza a",
"card-spent": "Spent Time",
"card-spent": "Temps Dedicat",
"card-edit-attachments": "Edita arxius adjunts",
"card-edit-labels": "Edita etiquetes",
"card-edit-members": "Edita membres",
@@ -160,8 +160,8 @@
"copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
"copyCardPopup-title": "Copia la fitxa",
"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\"} ]",
"copyChecklistToManyCardsPopup-instructions": "Títols de fitxa i Descripcions de destí en aquest format JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Títol de la primera fitxa\", \"description\":\"Descripció de la primera fitxa\"}, {\"title\":\"Títol de la segona fitxa\",\"description\":\"Descripció de la segona fitxa\"},{\"title\":\"Títol de l'última fitxa\",\"description\":\"Descripció de l'última fitxa\"} ]",
"create": "Crea",
"createBoardPopup-title": "Crea tauler",
"chooseBoardSourcePopup-title": "Importa Tauler",
@@ -181,11 +181,11 @@
"edit": "Edita",
"edit-avatar": "Canvia Avatar",
"edit-profile": "Edita el teu Perfil",
"edit-wip-limit": "Edit WIP Limit",
"edit-wip-limit": "Edita el Límit de Treball en Progrès",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Canvia data d'inici",
"editCardDueDatePopup-title": "Canvia data de finalització",
"editCardSpentTimePopup-title": "Change spent time",
"editCardSpentTimePopup-title": "Canvia temps dedicat",
"editLabelPopup-title": "Canvia etiqueta",
"editNotificationPopup-title": "Edita la notificació",
"editProfilePopup-title": "Edita teu Perfil",
@@ -193,7 +193,7 @@
"email-enrollAccount-subject": "An account created for you on __siteName__",
"email-enrollAccount-text": "Hola __user__,\n\nPer començar a utilitzar el servei, segueix l'enllaç següent.\n\n__url__\n\nGràcies.",
"email-fail": "Error enviant el correu",
"email-fail-text": "Error trying to send email",
"email-fail-text": "Error en intentar enviar e-mail",
"email-invalid": "Adreça de correu invàlida",
"email-invite": "Convida mitjançant correu electrònic",
"email-invite-subject": "__inviter__ t'ha convidat",
@@ -203,7 +203,7 @@
"email-sent": "Correu enviat",
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hola __user__, \n\n per verificar el teu correu, segueix l'enllaç següent.\n\n __url__\n\n Gràcies.",
"enable-wip-limit": "Enable WIP Limit",
"enable-wip-limit": "Activa e Límit de Treball en Progrès",
"error-board-doesNotExist": "Aquest tauler no existeix",
"error-board-notAdmin": "Necessites ser administrador d'aquest tauler per dur a lloc aquest acció",
"error-board-notAMember": "Necessites ser membre d'aquest tauler per dur a terme aquesta acció",
@@ -214,7 +214,7 @@
"error-user-notAllowSelf": "No et pots convidar a tu mateix",
"error-user-notCreated": "L'usuari no s'ha creat",
"error-username-taken": "Aquest usuari ja existeix",
"error-email-taken": "Email has already been taken",
"error-email-taken": "L'adreça de correu electrònic ja és en ús",
"export-board": "Exporta tauler",
"filter": "Filtre",
"filter-cards": "Fitxes de filtre",
@@ -249,7 +249,7 @@
"initials": "Inicials",
"invalid-date": "Data invàlida",
"invalid-time": "Temps Invàlid",
"invalid-user": "Invalid user",
"invalid-user": "Usuari invàlid",
"joined": "s'ha unit",
"just-invited": "Has estat convidat a aquest tauler",
"keyboard-shortcuts": "Dreceres de teclat",
@@ -260,22 +260,22 @@
"language": "Idioma",
"last-admin-desc": "No podeu canviar rols perquè ha d'haver-hi almenys un administrador.",
"leave-board": "Abandona tauler",
"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 ?",
"leave-board-pop": "De debò voleu abandonar __boardTitle__? Se us eliminarà de totes les fitxes d'aquest tauler.",
"leaveBoardPopup-title": "Abandonar Tauler?",
"link-card": "Enllaç a aquesta fitxa",
"list-archive-cards": "Arxiva totes les fitxes d'aquesta llista",
"list-archive-cards-pop": "Això eliminarà totes les fitxes d'aquesta llista del tauler. Per veure les fitxes arxivades i recuperar-les en el tauler, feu clic a \" Menú \"/ \" Articles Arxivat \".",
"list-move-cards": "Mou totes les fitxes d'aquesta llista",
"list-select-cards": "Selecciona totes les fitxes d'aquesta llista",
"listActionPopup-title": "Accions de la llista",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneActionPopup-title": "Accions de Carril de Natació",
"listImportCardPopup-title": "importa una fitxa de Trello",
"listMorePopup-title": "Més",
"link-list": "Enllaça a aquesta llista",
"list-delete-pop": "Totes les accions seran esborrades de la llista d'activitats i no serà possible recuperar la llista",
"list-delete-suggest-archive": "Pots arxivar una llista per eliminar-la del tauler i preservar la seva activitat",
"lists": "Llistes",
"swimlanes": "Swimlanes",
"swimlanes": "Carrils de Natació",
"log-out": "Finalitza la sessió",
"log-in": "Ingresa",
"loginPopup-title": "Inicia sessió",
@@ -295,7 +295,7 @@
"name": "Nom",
"no-archived-cards": "No hi ha fitxes arxivades.",
"no-archived-lists": "No hi ha llistes arxivades.",
"no-archived-swimlanes": "No archived swimlanes.",
"no-archived-swimlanes": "Cap Carril de Natació arxivat",
"no-results": "Sense resultats",
"normal": "Normal",
"normal-desc": "Podeu veure i editar fitxes. No podeu canviar la configuració.",
@@ -331,11 +331,11 @@
"restore": "Restaura",
"save": "Desa",
"search": "Cerca",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"search-cards": "Cerca títols de fitxa i descripcions en aquest tauler",
"search-example": "Text que cercar?",
"select-color": "Selecciona color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"setWipLimitPopup-title": "Set WIP Limit",
"set-wip-limit-value": "Limita el màxim nombre de tasques en aquesta llista",
"setWipLimitPopup-title": "Configura el Límit de Treball en Progrès",
"shortcut-assign-self": "Assigna't la ftixa actual",
"shortcut-autocomplete-emoji": "Autocompleta emoji",
"shortcut-autocomplete-members": "Autocompleta membres",
@@ -356,11 +356,11 @@
"team": "Equip",
"this-board": "aquest tauler",
"this-card": "aquesta fitxa",
"spent-time-hours": "Spent time (hours)",
"overtime-hours": "Overtime (hours)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spent time cards",
"spent-time-hours": "Temps dedicat (hores)",
"overtime-hours": "Temps de més (hores)",
"overtime": "Temps de més",
"has-overtime-cards": "Té fitxes amb temps de més",
"has-spenttime-cards": "Té fitxes amb temps dedicat",
"time": "Hora",
"title": "Títol",
"tracking": "En seguiment",
@@ -378,13 +378,13 @@
"watching": "En observació",
"watching-info": "Seràs notificat de cada canvi en aquest tauler",
"welcome-board": "Tauler de benvinguda",
"welcome-swimlane": "Milestone 1",
"welcome-swimlane": "Objectiu 1",
"welcome-list1": "Bàsics",
"welcome-list2": "Avançades",
"what-to-do": "Què vols fer?",
"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.",
"wipLimitErrorPopup-title": "Límit de Treball en Progrès invàlid",
"wipLimitErrorPopup-dialog-pt1": "El nombre de tasques en esta llista és superior al límit de Treball en Progrès que heu definit.",
"wipLimitErrorPopup-dialog-pt2": "Si us plau mogui algunes taques fora d'aquesta llista, o configuri un límit de Treball en Progrès superior.",
"admin-panel": "Tauler d'administració",
"settings": "Configuració",
"people": "Persones",
@@ -403,17 +403,17 @@
"smtp-password": "Contrasenya",
"smtp-tls": "Suport TLS",
"send-from": "De",
"send-smtp-test": "Send a test email to yourself",
"send-smtp-test": "Envia't un correu electrònic de prova",
"invitation-code": "Codi d'invitació",
"email-invite-register-subject": "__inviter__ t'ha convidat",
"email-invite-register-text": " __user__,\n\n __inviter__ us ha convidat a col·laborar a Wekan.\n\n Clicau l'enllaç següent per acceptar l'invitació:\n __url__\n\n El vostre codi d'invitació és: __icode__\n\n Gràcies",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-smtp-test-text": "You have successfully sent an email",
"email-smtp-test-subject": "Correu de Prova SMTP de Wekan",
"email-smtp-test-text": "Has enviat un missatge satisfactòriament",
"error-invitation-code-not-exist": "El codi d'invitació no existeix",
"error-notAuthorized": "No estau autoritzats per veure aquesta pàgina",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"outgoing-webhooks": "Webhooks sortints",
"outgoingWebhooksPopup-title": "Webhooks sortints",
"new-outgoing-webhook": "Nou Webook sortint",
"no-name": "Importa tauler des de Wekan",
"Wekan_version": "Versió Wekan",
"Node_version": "Versió Node",
+2 -2
View File
@@ -331,8 +331,8 @@
"restore": "Wiederherstellen",
"save": "Speichern",
"search": "Suchen",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"search-cards": "Suche nach Kartentiteln und Beschreibungen auf diesem Board",
"search-example": "Suchbegriff",
"select-color": "Farbe auswählen",
"set-wip-limit-value": "Setzen Sie ein Limit für die maximale Anzahl von Aufgaben in dieser Liste",
"setWipLimitPopup-title": "WIP-Limit setzen",
+15 -15
View File
@@ -2,8 +2,8 @@
"accept": "Aceptar",
"act-activity-notify": "[Wekan] Notificación de actividad",
"act-addAttachment": "ha adjuntado __attachment__ a __card__",
"act-addChecklist": "ha añadido la lista de tareas __checklist__ a __card__",
"act-addChecklistItem": "ha añadido __checklistItem__ a la lista de tareas __checklist__ en __card__",
"act-addChecklist": "ha añadido la lista de verificación __checklist__ a __card__",
"act-addChecklistItem": "ha añadido __checklistItem__ a la lista de verificación __checklist__ en __card__",
"act-addComment": "ha comentado en __card__: __comment__",
"act-createBoard": "ha creado __board__",
"act-createCard": "ha añadido __card__ a __list__",
@@ -39,15 +39,15 @@
"activity-removed": "ha eliminado %s de %s",
"activity-sent": "ha enviado %s a %s",
"activity-unjoined": "se ha desvinculado de %s",
"activity-checklist-added": "ha añadido una lista de tareas a %s",
"activity-checklist-item-added": "ha añadido el elemento de la lista de tareas a '%s' en %s",
"activity-checklist-added": "ha añadido una lista de verificación a %s",
"activity-checklist-item-added": "ha añadido el elemento de la lista de verificación a '%s' en %s",
"add": "Añadir",
"add-attachment": "Añadir adjunto",
"add-board": "Añadir tablero",
"add-card": "Añadir una tarjeta",
"add-swimlane": "Añadir un carril de flujo",
"add-checklist": "Añadir una lista de tareas",
"add-checklist-item": "Añadir un elemento a la lista de tareas",
"add-checklist": "Añadir una lista de verificación",
"add-checklist-item": "Añadir un elemento a la lista de verificación",
"add-cover": "Añadir portada",
"add-label": "Añadir una etiqueta",
"add-list": "Añadir una lista",
@@ -98,7 +98,7 @@
"boardMenuPopup-title": "Menú del tablero",
"boards": "Tableros",
"board-view": "Vista de tablero",
"board-view-swimlanes": "Carril de flujo",
"board-view-swimlanes": "Carriles de flujo",
"board-view-lists": "Listas",
"bucket-example": "Como “Cosas por hacer” por ejemplo",
"cancel": "Cancelar",
@@ -134,7 +134,7 @@
"changePasswordPopup-title": "Cambiar la contraseña",
"changePermissionsPopup-title": "Cambiar los permisos",
"changeSettingsPopup-title": "Cambiar las preferencias",
"checklists": "Lista de tareas",
"checklists": "Lista de verificación",
"click-to-star": "Haz clic para destacar este tablero.",
"click-to-unstar": "Haz clic para dejar de destacar este tablero.",
"clipboard": "el portapapeles o con arrastrar y soltar",
@@ -156,12 +156,12 @@
"comment-only": "Sólo comentarios",
"comment-only-desc": "Solo se puede comentar en las tarjetas.",
"computer": "el ordenador",
"confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de tareas",
"confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de verificación?",
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
"copyCardPopup-title": "Copiar la tarjeta",
"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\"} ]",
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas.",
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
"create": "Crear",
"createBoardPopup-title": "Crear tablero",
"chooseBoardSourcePopup-title": "Importar un tablero",
@@ -275,7 +275,7 @@
"list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
"list-delete-suggest-archive": "Puede archivar una lista para quitarla del tablero y preservar así sus actividades.",
"lists": "Listas",
"swimlanes": "Carril de flujo",
"swimlanes": "Carriles de flujo",
"log-out": "Finalizar la sesión",
"log-in": "Iniciar sesión",
"loginPopup-title": "Iniciar sesión",
@@ -331,8 +331,8 @@
"restore": "Restaurar",
"save": "Guardar",
"search": "Buscar",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"search-cards": "Buscar entre los títulos y las descripciones de las tarjetas en este tablero.",
"search-example": "¿Texto a buscar?",
"select-color": "Selecciona un color",
"set-wip-limit-value": "Fija un límite para el número máximo de tareas en esta lista.",
"setWipLimitPopup-title": "Fijar el límite del TEP",
+101 -101
View File
@@ -1,11 +1,11 @@
{
"accept": "تایید",
"act-activity-notify": "[wekan]اطلاع فعالیت",
"accept": "پذیرش",
"act-activity-notify": "[wekan] اطلاع فعالیت",
"act-addAttachment": "پیوست __attachment__ به __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "یادداشت بر __card__: __comment__",
"act-createBoard": "__board__ ایجادشد",
"act-addChecklist": "سیاهه __checklist__ به __card__ افزوده شد",
"act-addChecklistItem": "__checklistItem__ به سیاهه __checklist__ در __card__ افزوده شد",
"act-addComment": "درج نظر برای __card__: __comment__",
"act-createBoard": "__board__ ایجاد شد",
"act-createCard": "__card__ به __list__ اضافه شد",
"act-createList": "__list__ به __board__ اضافه شد",
"act-addBoardMember": "__member__ به __board__ اضافه شد",
@@ -56,31 +56,31 @@
"addMemberPopup-title": "اعضا",
"admin": "مدیر",
"admin-desc": "امکان دیدن و ویرایش کارتها،پاک کردن کاربران و تغییر تنظیمات برای تخته",
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "تمام بردها",
"admin-announcement": "اعلان",
"admin-announcement-active": "اعلان سراسری فعال",
"admin-announcement-title": "اعلان از سوی مدیر",
"all-boards": "تمام تخته‌ها",
"and-n-other-card": "و __count__ کارت دیگر",
"and-n-other-card_plural": "و __count__ کارت دیگر",
"apply": "اجرا",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"apply": "اعمال",
"app-is-offline": "Wekan در حال بارگذاری است. لطفا صبر کنید. نوسازی صفحه، منجر به از دست رفتن داده‌ها می‌شود. اگر Wekan بارگذاری نشد، لطفا بررسی کنید که سرور Wekan متوقف نشده باشد.",
"archive": "بایگانی",
"archive-all": "تمامی بایگانی ها",
"archive-board": "بایگانی برد",
"archive-all": "بایگانی کردن همه",
"archive-board": "بایگانی تخته",
"archive-card": "بایگانی کارت",
"archive-list": "آرشیو لیست",
"archive-list": "فهرست بایگانی",
"archive-swimlane": "Archive Swimlane",
"archive-selection": "بایگانی موارد انتخاب شده ها",
"archiveBoardPopup-title": "آیا می خواهید بایگانی شود؟",
"archived-items": "آیتم های بایگانی شده",
"archived-boards": "Archived Boards",
"restore-board": "Restore Board",
"no-archived-boards": "No Archived Boards.",
"archives": "بایگانی ها",
"archive-selection": "بایگانی موارد انتخاب شده",
"archiveBoardPopup-title": "بایگانی تخته؟",
"archived-items": "موارد بایگانی شده",
"archived-boards": "تخته‌های بایگانی شده",
"restore-board": "بازیابی تخته",
"no-archived-boards": "تخته بایگانی شده وجود ندارد.",
"archives": "بایگانی‌ها",
"assign-member": "تعیین عضو",
"attached": "ضمیمه",
"attachment": "ضمائم",
"attachment-delete-pop": "حذف پیوست دایمی خواهد بود، بدون بازگشت",
"attached": "ضمیمه شده",
"attachment": "ضمیمه",
"attachment-delete-pop": "حذف پیوست دایمی و بی بازگشت خواهد بود.",
"attachmentDeletePopup-title": "آیا می خواهید ضمیمه را حذف کنید؟",
"attachments": "ضمائم",
"auto-watch": "اضافه شدن خودکار دیده بانی تخته زمانی که ایجاد می شوند",
@@ -88,53 +88,53 @@
"back": "بازگشت",
"board-change-color": "تغییر رنگ",
"board-nb-stars": "%s ستاره",
"board-not-found": "برد مورد نظر پیدا نشد",
"board-private-info": "این برد <strong>خصوصی</strong> خواهد بود.",
"board-public-info": "این برد <strong>عمومی</strong> خواهد بود.",
"boardChangeColorPopup-title": "تغییر پس زمینه برد",
"boardChangeTitlePopup-title": "تغییر نام برد",
"boardChangeVisibilityPopup-title": "تغغیر وضعیت نمایش",
"board-not-found": "تخته مورد نظر پیدا نشد",
"board-private-info": "این تخته <strong>خصوصی</strong> خواهد بود.",
"board-public-info": "این تخته <strong>عمومی</strong> خواهد بود.",
"boardChangeColorPopup-title": "تغییر پس زمینه تخته",
"boardChangeTitlePopup-title": "تغییر نام تخته",
"boardChangeVisibilityPopup-title": "تغییر وضعیت نمایش",
"boardChangeWatchPopup-title": "تغییر دیده بانی",
"boardMenuPopup-title": "منوی تخته",
"boards": "تخته ها",
"board-view": "Board View",
"boards": "تخته‌ها",
"board-view": "نمایش تخته",
"board-view-swimlanes": "Swimlanes",
"board-view-lists": "لیست ها",
"board-view-lists": "فهرست‌ها",
"bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
"cancel": "انصراف",
"card-archived": "این کارت بایگانی شده است.",
"card-comments-title": "این کارت دارای %s نظر می باشد.",
"card-delete-notice": "پاک کردن بطور کامل. شما تمامی اقدامات مربوطه را از دست خواهید داد.",
"card-delete-pop": "همه اقدامات ازاین پردازه (خوراک) حذف خواهد شد و امکان بازگشا کردن کارت وجود نخواهد داشت. هیچ امکان بازگشتی!",
"card-archived": "این کارت بایگانی شد.",
"card-comments-title": "این کارت دارای %s نظر است.",
"card-delete-notice": "حذف دائمی. تمامی موارد مرتبط با این کارت از بین خواهند رفت.",
"card-delete-pop": "همه اقدامات از این پردازه (خوراک) حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
"card-delete-suggest-archive": "شما می توانید یک کارت را با حفظ فعالیت های آن بایگانی کنید.",
"card-due": "ناشی از",
"card-due-on": "مقتضی بر",
"card-spent": "Spent Time",
"card-spent": "زمان صرف شده",
"card-edit-attachments": "ویرایش ضمائم",
"card-edit-labels": "ویرایش برچسب",
"card-edit-members": "ویرایش اعضا",
"card-labels-title": "تغییر برچسب کارت",
"card-members-title": "افزودن یا حذف اعضا از کارت.",
"card-start": "شروع",
"card-start-on": "آغاز بر",
"card-start-on": "شروع از",
"cardAttachmentsPopup-title": "ضمیمه از",
"cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
"cardDetailsActionsPopup-title": "اعمال کارت",
"cardLabelsPopup-title": "برچسب ها",
"cardMembersPopup-title": "اعضا",
"cardMorePopup-title": "بیشتر",
"cards": "کارت ها",
"cards": "کارت‌ها",
"change": "تغییر",
"change-avatar": "تغییر تصویر",
"change-password": "تغییر کلمه عبور",
"change-permissions": "تغییر دسترسی ها",
"change-permissions": "تغییر دسترسی‌ها",
"change-settings": "تغییر تنظیمات",
"changeAvatarPopup-title": "تغییر تصویر",
"changeLanguagePopup-title": "تغییر زبان",
"changePasswordPopup-title": "تغییر کلمه عبور",
"changePermissionsPopup-title": "تغییر دسترسی ها",
"changePermissionsPopup-title": "تغییر دسترسی‌ها",
"changeSettingsPopup-title": "تغییر تنظیمات",
"checklists": "سیاهه ها",
"checklists": "سیاهه‌ها",
"click-to-star": "با کلیک کردن ستاره بدهید",
"click-to-unstar": "با کلیک کردن ستاره را کم کنید",
"clipboard": "ذخیره در حافظه ویا بردار-رهاکن",
@@ -152,19 +152,19 @@
"color-sky": "آبی آسمانی",
"color-yellow": "زرد",
"comment": "نظر",
"comment-placeholder": "Write Comment",
"comment-only": "صرفا یادداشت",
"comment-only-desc": "صرفا یادداشت برروی کارت ها",
"comment-placeholder": "درج نظر",
"comment-only": "فقط نظر",
"comment-only-desc": "فقط می‌تواند روی کارت‌ها نظر دهد.",
"computer": "رایانه",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"confirm-checklist-delete-dialog": "مطمئنید که می‌خواهید سیاهه را حذف کنید؟",
"copy-card-link-to-clipboard": "درج پیوند کارت در حافظه",
"copyCardPopup-title": "کپی کارت",
"copyChecklistToManyCardsPopup-title": "کپی قالب کارت به کارت‌های متعدد",
"copyChecklistToManyCardsPopup-instructions": "عنوان و توضیحات کارت مقصد در این قالب JSON",
"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": "ایجاد تخته",
"chooseBoardSourcePopup-title": "Import board",
"chooseBoardSourcePopup-title": "بارگذاری تخته",
"createLabelPopup-title": "ایجاد برچسب",
"current": "جاری",
"date": "تاریخ",
@@ -185,17 +185,17 @@
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "تغییر تاریخ آغاز",
"editCardDueDatePopup-title": "تغییر تاریخ بدلیل",
"editCardSpentTimePopup-title": "Change spent time",
"editCardSpentTimePopup-title": "تغییر زمان صرف شده",
"editLabelPopup-title": "تغیر برچسب",
"editNotificationPopup-title": "اصلاح اعلان",
"editProfilePopup-title": "ویرایش پروفایل",
"email": "پست الکترونیک",
"email-enrollAccount-subject": "یک حساب کاربری برای شما در __siteName__ ایجاد شد",
"email-enrollAccount-text": "سلام __user__ \nبرای شروع به استفاده از این سرویس برروی آدرس زیر کلیک نمایید،با تشکر \n__url__.",
"email-fail": "عدم موفقیت در ارسال نامه الکترونیکی",
"email-fail-text": "Error trying to send email",
"email-invalid": "پست الکترونیکی نادرست",
"email-invite": "دعوت از طریق نامه الکترونیکی",
"email-enrollAccount-text": "سلام __user__ \nبرای شروع به استفاده از این سرویس برروی آدرس زیر کلیک کنید.\n__url__\nبا تشکر.",
"email-fail": "عدم موفقیت در فرستادن رایانامه",
"email-fail-text": "خطا در تلاش برای فرستادن رایانامه",
"email-invalid": "رایانامه نادرست",
"email-invite": "دعوت از طریق رایانامه",
"email-invite-subject": "__inviter__ برای شما دعوت نامه ارسال کرده است",
"email-invite-text": "__User__ عزیز\n __inviter__ شما را به عضویت تخته \"__board__\" برای همکاری دعوت کرده است.\nلطفا لینک زیر را دنبال کنید، باتشکر:\n__url__",
"email-resetPassword-subject": "تنظیم مجدد کلمه عبور در __siteName__",
@@ -214,10 +214,10 @@
"error-user-notAllowSelf": "عدم امکان دعوت خود",
"error-user-notCreated": "این کاربر ایجاد نشده است",
"error-username-taken": "این نام کاربری استفاده شده است",
"error-email-taken": "Email has already been taken",
"error-email-taken": "رایانامه توسط گیرنده دریافت شده است",
"export-board": "انتقال به بیرون تخته",
"filter": "صافی ـFilterـ",
"filter-cards": "صافی ـFilterـ کارتها",
"filter-cards": "صافی ـFilterـ کارت‌ها",
"filter-clear": "حذف صافی ـFilterـ",
"filter-no-label": "بدون برچسب",
"filter-no-member": "بدون عضو",
@@ -230,13 +230,13 @@
"headerBarCreateBoardPopup-title": "ایجاد تخته",
"home": "خانه",
"import": "وارد کردن",
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "وارد کردن تخته ها از Trello",
"import-board-title-wekan": "Import board from Wekan",
"import-board": "وارد کردن تخته",
"import-board-c": "وارد کردن تخته",
"import-board-title-trello": "وارد کردن تخته از Trello",
"import-board-title-wekan": "وارد کردن تخته از Wekan",
"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 Wekan",
"from-trello": "از Trello",
"from-wekan": "از Wekan",
"import-board-instruction-trello": "در Trello-ی خود به 'Menu'، 'More'، 'Print'، 'Export to JSON رفته و متن نهایی را دراینجا وارد نمایید.",
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-json-placeholder": "اطلاعات Json معتبر خود را اینجا وارد کنید.",
@@ -245,17 +245,17 @@
"import-show-user-mapping": "بررسی نقشه کاربران",
"import-user-select": "کاربری از نرم افزار را که می خواهید بعنوان این عضو جایگزین شود را انتخاب کنید.",
"importMapMembersAddPopup-title": "انتخاب کاربر Wekan",
"info": "Version",
"info": "نسخه",
"initials": "تخصیصات اولیه",
"invalid-date": "تاریخ نامعتبر",
"invalid-time": "Invalid time",
"invalid-user": "Invalid user",
"invalid-time": "زمان نامعتبر",
"invalid-user": "کاربر نامعتیر",
"joined": "متصل",
"just-invited": "هم اکنون، شما به این تخته دعوت شده اید.",
"keyboard-shortcuts": "میانبر کلیدها",
"label-create": "ایجاد برچسب",
"label-default": "%s برچسب(پیش فرض)",
"label-delete-pop": "بدون برگشت. این حذف برچسب را از هر کارت پاک خواهد کردو تاریخچه آن را نیز ازبین می برد.",
"label-delete-pop": "این اقدام، برچسب را از همه کارت‌ها پاک خواهد کرد و تاریخچه آن را نیز از بین می‌برد.",
"labels": "برچسب ها",
"language": "زبان",
"last-admin-desc": "شما نمی توانید نقش ـroleـ را تغییر دهید چراکه باید حداقل یک مدیری وجود داشته باشد.",
@@ -271,7 +271,7 @@
"swimlaneActionPopup-title": "Swimlane Actions",
"listImportCardPopup-title": "وارد کردن کارت Trello",
"listMorePopup-title": "بیشتر",
"link-list": "Link to this list",
"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": "You can archive a list to remove it from the board and preserve the activity.",
"lists": "لیست ها",
@@ -291,10 +291,10 @@
"multi-selection-on": "حالت چند انتخابی روشن است",
"muted": "بی صدا",
"muted-info": "شما هیچگاه از تغییرات این تخته مطلع نخواهید شد",
"my-boards": "تخته های من",
"my-boards": "تخته‌های من",
"name": "نام",
"no-archived-cards": "کارتی در بایگانی نیست",
"no-archived-lists": "لیستی در بایگانی نیست",
"no-archived-lists": "فهرستی در بایگانی نیست.",
"no-archived-swimlanes": "No archived swimlanes.",
"no-results": "بدون نتیجه",
"normal": "عادی",
@@ -304,7 +304,7 @@
"notify-watch": "اطلاع رسانی از هرگونه تغییر در تخته، لیست یا کارتهایی که از آنها دیده بانی میکنید",
"optional": "انتخابی",
"or": "یا",
"page-maybe-private": "این صفحه ممکن است خصوصی باشد.شما با<a href='%s'>ورود</a> می توانید آنرا ملاحظه نمایید.",
"page-maybe-private": "این صفحه ممکن است خصوصی باشد. شما با<a href='%s'>ورود</a> می‌توانید آن را ببینید.",
"page-not-found": "صفحه پیدا نشد.",
"password": "کلمه عبور",
"paste-or-dragdrop": "جهت چسباندن، یا برداشتن-رهاسازی فایل تصویر به آن (تصویر)",
@@ -320,8 +320,8 @@
"quick-access-description": "جهت افزودن یک تخته به اینجا،آنرا ستاره دار نمایید.",
"remove-cover": "حذف کاور",
"remove-from-board": "حذف از تخته",
"remove-label": "Remove Label",
"listDeletePopup-title": "Delete List ?",
"remove-label": "حذف برچسب",
"listDeletePopup-title": "حذف فهرست؟",
"remove-member": "حذف عضو",
"remove-member-from-card": "حذف از کارت",
"remove-member-pop": "آیا __name__ (__username__) را از __boardTitle__ حذف می کنید? کاربر از تمام کارت ها در این تخته حذف خواهد شد و آنها ازین اقدام مطلع خواهند شد.",
@@ -331,10 +331,10 @@
"restore": "بازیابی",
"save": "ذخیره",
"search": "جستجو",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"search-cards": "جستجو در میان عناوین و توضیحات در این تخته",
"search-example": "متن مورد جستجو؟",
"select-color": "انتخاب رنگ",
"set-wip-limit-value": "تعیین بیشینه تعداد وظایف در این فهرست",
"setWipLimitPopup-title": "Set WIP Limit",
"shortcut-assign-self": "اختصاص خود به کارت فعلی",
"shortcut-autocomplete-emoji": "تکمیل خودکار شکلکها",
@@ -356,7 +356,7 @@
"team": "تیم",
"this-board": "این تخته",
"this-card": "این کارت",
"spent-time-hours": "Spent time (hours)",
"spent-time-hours": "زمان صرف شده (ساعت)",
"overtime-hours": "Overtime (hours)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
@@ -389,11 +389,11 @@
"settings": "تنظمات",
"people": "افراد",
"registration": "ثبت نام",
"disable-self-registration": "غیرفعالسازی خودثبت نامی",
"disable-self-registration": "‌غیرفعال‌سازی خودثبت‌نامی",
"invite": "دعوت",
"invite-people": "دعوت از افراد",
"to-boards": "به تخته(ها)",
"email-addresses": "ادرس پست های الکترونیکی",
"email-addresses": "نشانی رایانامه",
"smtp-host-description": "آدرس سرور SMTP ای که پست الکترونیکی شما برروی آن است",
"smtp-port-description": "شماره درگاه ـPortـ ای که سرور SMTP شما جهت ارسال از آن استفاده می کند",
"smtp-tls-description": "پشتیبانی از TLS برای سرور SMTP",
@@ -403,20 +403,20 @@
"smtp-password": "کلمه عبور",
"smtp-tls": "پشتیبانی از SMTP",
"send-from": "از",
"send-smtp-test": "Send a test email to yourself",
"send-smtp-test": "فرستادن رایانامه آزمایشی به خود",
"invitation-code": "کد دعوت نامه",
"email-invite-register-subject": "__inviter__ برای شما دعوت نامه ارسال کرده است",
"email-invite-register-text": "__User__ عزیز \nکاربر __inviter__ شما را به عضویت در Wekan برای همکاری دعوت کرده است.\nلطفا لینک زیر را دنبال کنید،\n __url__\nکد دعوت شما __icode__ می باشد.\n باتشکر",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-smtp-test-text": "You have successfully sent an email",
"email-smtp-test-subject": "رایانامه SMTP آزمایشی از Wekan",
"email-smtp-test-text": "با موفقیت، یک رایانامه را فرستادید",
"error-invitation-code-not-exist": "چنین کد دعوتی یافت نشد",
"error-notAuthorized": "You are not authorized to view this page.",
"error-notAuthorized": "شما مجاز به دیدن این صفحه نیستید.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Wekan version",
"Node_version": "Node version",
"no-name": "(ناشناخته)",
"Wekan_version": "نسخه Wekan",
"Node_version": "نسخه Node ",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
"OS_Freemem": "OS Free Memory",
@@ -426,14 +426,14 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
"accounts-allowEmailChange": "Allow Email Change",
"createdAt": "Created at",
"verified": "Verified",
"active": "Active"
"hours": "ساعت",
"minutes": "دقیقه",
"seconds": "ثانیه",
"yes": "بله",
"no": "خیر",
"accounts": "حساب‌ها",
"accounts-allowEmailChange": "اجازه تغییر رایانامه",
"createdAt": "ساخته شده در",
"verified": "معتبر",
"active": "فعال"
}
+2 -2
View File
@@ -331,8 +331,8 @@
"restore": "Restaurer",
"save": "Enregistrer",
"search": "Chercher",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"search-cards": "Rechercher parmi les titres et descriptions des cartes de ce tableau",
"search-example": "Texte à rechercher ?",
"select-color": "Sélectionner une couleur",
"set-wip-limit-value": "Définit une limite maximale au nombre de cartes de cette liste",
"setWipLimitPopup-title": "Définir la limite WIP",
+439
View File
@@ -0,0 +1,439 @@
{
"accept": "Ընդունել",
"act-activity-notify": "[Wekan] Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "ավելացրել է __checklistItem__ __checklist__ on __card__-ին",
"act-addComment": "մեկնաբանել է __card__: __comment__",
"act-createBoard": "created __board__",
"act-createCard": "added __card__ to __list__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "archived __board__",
"act-archivedCard": "archived __card__",
"act-archivedList": "archived __list__",
"act-archivedSwimlane": "archived __swimlane__",
"act-importBoard": "imported __board__",
"act-importCard": "imported __card__",
"act-importList": "imported __list__",
"act-joinMember": "added __member__ to __card__",
"act-moveCard": "moved __card__ from __oldList__ to __list__",
"act-removeBoardMember": "removed __member__ from __board__",
"act-restoredCard": "restored __card__ to __board__",
"act-unjoinMember": "removed __member__ from __card__",
"act-withBoardTitle": "[Wekan] __board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "archived %s",
"activity-attached": "attached %s to %s",
"activity-created": "created %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
"activity-joined": "joined %s",
"activity-moved": "moved %s from %s to %s",
"activity-on": "on %s",
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"add": "Add",
"add-attachment": "Add Attachment",
"add-board": "Add Board",
"add-card": "Add Card",
"add-swimlane": "Add Swimlane",
"add-checklist": "Add Checklist",
"add-checklist-item": "Add an item to checklist",
"add-cover": "Add Cover",
"add-label": "Add Label",
"add-list": "Add List",
"add-members": "Add Members",
"added": "Added",
"addMemberPopup-title": "Members",
"admin": "Admin",
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
"admin-announcement": "Announcement",
"admin-announcement-active": "Active System-Wide Announcement",
"admin-announcement-title": "Announcement from Administrator",
"all-boards": "All boards",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Apply",
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
"archive": "Archive",
"archive-all": "Archive All",
"archive-board": "Archive Board",
"archive-card": "Archive Card",
"archive-list": "Archive List",
"archive-swimlane": "Archive Swimlane",
"archive-selection": "Archive selection",
"archiveBoardPopup-title": "Archive Board?",
"archived-items": "Archived Items",
"archived-boards": "Archived Boards",
"restore-board": "Restore Board",
"no-archived-boards": "No Archived Boards.",
"archives": "Archives",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
"attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
"attachmentDeletePopup-title": "Delete Attachment?",
"attachments": "Attachments",
"auto-watch": "Automatically watch boards when they are created",
"avatar-too-big": "The avatar is too large (70KB max)",
"back": "Back",
"board-change-color": "Change color",
"board-nb-stars": "%s stars",
"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",
"boardChangeTitlePopup-title": "Rename Board",
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Change Watch",
"boardMenuPopup-title": "Board Menu",
"boards": "Boards",
"board-view": "Board View",
"board-view-swimlanes": "Swimlanes",
"board-view-lists": "Lists",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is archived.",
"card-comments-title": "This card has %s comment.",
"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": "You can archive a card to remove it from the board and preserve the activity.",
"card-due": "Due",
"card-due-on": "Due on",
"card-spent": "Spent Time",
"card-edit-attachments": "Edit attachments",
"card-edit-labels": "Edit labels",
"card-edit-members": "Edit members",
"card-labels-title": "Change the labels for the card.",
"card-members-title": "Add or remove members of the board from the card.",
"card-start": "Start",
"card-start-on": "Starts on",
"cardAttachmentsPopup-title": "Attach From",
"cardDeletePopup-title": "Delete Card?",
"cardDetailsActionsPopup-title": "Card Actions",
"cardLabelsPopup-title": "Labels",
"cardMembersPopup-title": "Members",
"cardMorePopup-title": "More",
"cards": "Cards",
"change": "Change",
"change-avatar": "Change Avatar",
"change-password": "Change Password",
"change-permissions": "Change permissions",
"change-settings": "Change Settings",
"changeAvatarPopup-title": "Change Avatar",
"changeLanguagePopup-title": "Change Language",
"changePasswordPopup-title": "Change Password",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
"clipboard": "Clipboard or drag & drop",
"close": "Close",
"close-board": "Close Board",
"close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-green": "green",
"color-lime": "lime",
"color-orange": "orange",
"color-pink": "pink",
"color-purple": "purple",
"color-red": "red",
"color-sky": "sky",
"color-yellow": "yellow",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
"comment-only-desc": "Can comment on cards only.",
"computer": "Computer",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
"copy-card-link-to-clipboard": "Copy card link to clipboard",
"copyCardPopup-title": "Copy Card",
"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",
"createBoardPopup-title": "Create Board",
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"current": "current",
"date": "Date",
"decline": "Decline",
"default-avatar": "Default avatar",
"delete": "Delete",
"deleteLabelPopup-title": "Delete Label?",
"description": "Description",
"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",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Change start date",
"editCardDueDatePopup-title": "Change due date",
"editCardSpentTimePopup-title": "Change spent time",
"editLabelPopup-title": "Change Label",
"editNotificationPopup-title": "Edit Notification",
"editProfilePopup-title": "Edit Profile",
"email": "Email",
"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-text": "Error trying to send email",
"email-invalid": "Invalid email",
"email-invite": "Invite via Email",
"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__",
"email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
"email-sent": "Email sent",
"email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-wip-limit": "Enable WIP Limit",
"error-board-doesNotExist": "This board does not exist",
"error-board-notAdmin": "You need to be admin of this board to do that",
"error-board-notAMember": "You need to be a member of this board to do that",
"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-username-taken": "This username is already taken",
"error-email-taken": "Email has already been taken",
"export-board": "Export board",
"filter": "Filter",
"filter-cards": "Filter Cards",
"filter-clear": "Clear filter",
"filter-no-label": "No label",
"filter-no-member": "No member",
"filter-on": "Filter is on",
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
"filter-to-selection": "Filter to selection",
"fullname": "Full Name",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Hide system messages",
"headerBarCreateBoardPopup-title": "Create Board",
"home": "Home",
"import": "Import",
"import-board": "import board",
"import-board-c": "Import board",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Import board from Wekan",
"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 Wekan",
"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 Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
"import-json-placeholder": "Paste your valid JSON data here",
"import-map-members": "Map members",
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
"import-show-user-mapping": "Review members mapping",
"import-user-select": "Pick the Wekan user you want to use as this member",
"importMapMembersAddPopup-title": "Select Wekan member",
"info": "Version",
"initials": "Initials",
"invalid-date": "Invalid date",
"invalid-time": "Invalid time",
"invalid-user": "Invalid user",
"joined": "joined",
"just-invited": "You are just invited to this board",
"keyboard-shortcuts": "Keyboard shortcuts",
"label-create": "Create Label",
"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",
"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",
"list-archive-cards": "Archive all cards in this list",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"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 archive a list to remove it from the board and preserve the activity.",
"lists": "Lists",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
"log-in": "Log In",
"loginPopup-title": "Log In",
"memberMenuPopup-title": "Member Settings",
"members": "Members",
"menu": "Menu",
"move-selection": "Move selection",
"moveCardPopup-title": "Move Card",
"moveCardToBottom-title": "Move to Bottom",
"moveCardToTop-title": "Move to Top",
"moveSelectionPopup-title": "Move selection",
"multi-selection": "Multi-Selection",
"multi-selection-on": "Multi-Selection is on",
"muted": "Muted",
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"name": "Name",
"no-archived-cards": "No archived cards.",
"no-archived-lists": "No archived lists.",
"no-archived-swimlanes": "No archived swimlanes.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
"not-accepted-yet": "Invitation not accepted yet",
"notify-participate": "Receive updates to any cards you participate as creater or member",
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
"optional": "optional",
"or": "or",
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
"page-not-found": "Page not found.",
"password": "Password",
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
"participating": "Participating",
"preview": "Preview",
"previewAttachedImagePopup-title": "Preview",
"previewClipboardImagePopup-title": "Preview",
"private": "Private",
"private-desc": "This board is private. Only people added to the board can view and edit it.",
"profile": "Profile",
"public": "Public",
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
"quick-access-description": "Star a board to add a shortcut in this bar.",
"remove-cover": "Remove Cover",
"remove-from-board": "Remove from Board",
"remove-label": "Remove Label",
"listDeletePopup-title": "Delete List ?",
"remove-member": "Remove Member",
"remove-member-from-card": "Remove from Card",
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
"removeMemberPopup-title": "Remove Member?",
"rename": "Rename",
"rename-board": "Rename Board",
"restore": "Restore",
"save": "Save",
"search": "Search",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"select-color": "Select Color",
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
"setWipLimitPopup-title": "Set WIP Limit",
"shortcut-assign-self": "Assign yourself to current card",
"shortcut-autocomplete-emoji": "Autocomplete emoji",
"shortcut-autocomplete-members": "Autocomplete members",
"shortcut-clear-filters": "Clear all filters",
"shortcut-close-dialog": "Close Dialog",
"shortcut-filter-my-cards": "Filter my cards",
"shortcut-show-shortcuts": "Bring up this shortcuts list",
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
"show-cards-minimum-count": "Show cards count if list contains more than",
"sidebar-open": "Open Sidebar",
"sidebar-close": "Close Sidebar",
"signupPopup-title": "Create an Account",
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
"starred-boards": "Starred Boards",
"starred-boards-description": "Starred boards show up at the top of your boards list.",
"subscribe": "Subscribe",
"team": "Team",
"this-board": "this board",
"this-card": "this card",
"spent-time-hours": "Spent time (hours)",
"overtime-hours": "Overtime (hours)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spent time cards",
"time": "Time",
"title": "Title",
"tracking": "Tracking",
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
"unassign-member": "Unassign member",
"unsaved-description": "You have an unsaved description.",
"unwatch": "Unwatch",
"upload": "Upload",
"upload-avatar": "Upload an avatar",
"uploaded-avatar": "Uploaded an avatar",
"username": "Username",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an archived list",
"watch": "Watch",
"watching": "Watching",
"watching-info": "You will be notified of any change in this board",
"welcome-board": "Welcome Board",
"welcome-swimlane": "Milestone 1",
"welcome-list1": "Basics",
"welcome-list2": "Advanced",
"what-to-do": "What do you want to do?",
"wipLimitErrorPopup-title": "Invalid WIP Limit",
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
"admin-panel": "Admin Panel",
"settings": "Settings",
"people": "People",
"registration": "Registration",
"disable-self-registration": "Disable Self-Registration",
"invite": "Invite",
"invite-people": "Invite People",
"to-boards": "To board(s)",
"email-addresses": "Email Addresses",
"smtp-host-description": "The address of the SMTP server that handles your emails.",
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
"smtp-tls-description": "Enable TLS support for SMTP server",
"smtp-host": "SMTP Host",
"smtp-port": "SMTP Port",
"smtp-username": "Username",
"smtp-password": "Password",
"smtp-tls": "TLS support",
"send-from": "From",
"send-smtp-test": "Send a test email to yourself",
"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 Wekan 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 From Wekan",
"email-smtp-test-text": "You have successfully sent an email",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
"new-outgoing-webhook": "New Outgoing Webhook",
"no-name": "(Unknown)",
"Wekan_version": "Wekan version",
"Node_version": "Node version",
"OS_Arch": "OS Arch",
"OS_Cpus": "OS CPU Count",
"OS_Freemem": "OS Free Memory",
"OS_Loadavg": "OS Load Average",
"OS_Platform": "OS Platform",
"OS_Release": "OS Release",
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"yes": "Yes",
"no": "No",
"accounts": "Accounts",
"accounts-allowEmailChange": "Allow Email Change",
"createdAt": "Created at",
"verified": "Verified",
"active": "Active"
}
+16 -16
View File
@@ -45,7 +45,7 @@
"add-attachment": "Aggiungi Allegato",
"add-board": "Aggiungi Bacheca",
"add-card": "Aggiungi Scheda",
"add-swimlane": "Add Swimlane",
"add-swimlane": "Aggiungi Corsia",
"add-checklist": "Aggiungi Checklist",
"add-checklist-item": "Aggiungi un elemento alla checklist",
"add-cover": "Aggiungi copertina",
@@ -69,7 +69,7 @@
"archive-board": "Archivia bacheca",
"archive-card": "Archivia scheda",
"archive-list": "Archivia Lista",
"archive-swimlane": "Archive Swimlane",
"archive-swimlane": "Archivia Corsia",
"archive-selection": "Archivia selezione",
"archiveBoardPopup-title": "Archivia Bacheca?",
"archived-items": "Elementi archiviati",
@@ -97,8 +97,8 @@
"boardChangeWatchPopup-title": "Cambia faccia",
"boardMenuPopup-title": "Menu bacheca",
"boards": "Bacheche",
"board-view": "Board View",
"board-view-swimlanes": "Swimlanes",
"board-view": "Visualizza bacheca",
"board-view-swimlanes": "Corsie",
"board-view-lists": "Liste",
"bucket-example": "Per esempio come \"una lista di cose da fare\"",
"cancel": "Cancella",
@@ -159,9 +159,9 @@
"confirm-checklist-delete-dialog": "Sei sicuro di voler cancellare questa checklist?",
"copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
"copyCardPopup-title": "Copia Scheda",
"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\"} ]",
"copyChecklistToManyCardsPopup-title": "Copia template checklist su più schede",
"copyChecklistToManyCardsPopup-instructions": "Titolo e la descrizione della scheda di destinazione in questo formato JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titolo prima scheda\", \"description\":\"Descrizione prima scheda\"}, {\"title\":\"Titolo seconda scheda\",\"description\":\"Descrizione seconda scheda\"},{\"title\":\"Titolo ultima scheda\",\"description\":\"Descrizione ultima scheda\"} ]",
"create": "Crea",
"createBoardPopup-title": "Crea bacheca",
"chooseBoardSourcePopup-title": "Importa bacheca",
@@ -268,14 +268,14 @@
"list-move-cards": "Sposta tutte le schede in questa lista",
"list-select-cards": "Selezione tutte le schede in questa lista",
"listActionPopup-title": "Azioni disponibili",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneActionPopup-title": "Azioni corsia",
"listImportCardPopup-title": "Importa una scheda di Trello",
"listMorePopup-title": "Altro",
"link-list": "Link a questa lista",
"list-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di recuperare la lista. Non potrai tornare indietro.",
"list-delete-suggest-archive": "Puoi archiviare una lista per rimuoverla dalla bacheca e preservarne l'attività.",
"lists": "Liste",
"swimlanes": "Swimlanes",
"swimlanes": "Corsie",
"log-out": "Log Out",
"log-in": "Log In",
"loginPopup-title": "Log In",
@@ -295,7 +295,7 @@
"name": "Nome",
"no-archived-cards": "Nessuna scheda archiviata.",
"no-archived-lists": "Nessuna lista archiviata.",
"no-archived-swimlanes": "No archived swimlanes.",
"no-archived-swimlanes": "Nessuna scheda archiviata.",
"no-results": "Nessun risultato",
"normal": "Normale",
"normal-desc": "Può visionare e modificare le schede. Non può cambiare le impostazioni.",
@@ -331,8 +331,8 @@
"restore": "Ripristina",
"save": "Salva",
"search": "Cerca",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"search-cards": "Ricerca per titolo e descrizione scheda su questa bacheca",
"search-example": "Testo da ricercare?",
"select-color": "Seleziona Colore",
"set-wip-limit-value": "Seleziona un limite per il massimo numero di attività in questa lista",
"setWipLimitPopup-title": "Imposta limite di work in progress",
@@ -359,8 +359,8 @@
"spent-time-hours": "Tempo trascorso (ore)",
"overtime-hours": "Overtime (ore)",
"overtime": "Overtime",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spent time cards",
"has-overtime-cards": "Ci sono scheda scadute",
"has-spenttime-cards": "Ci sono scheda con tempo impiegato",
"time": "Ora",
"title": "Titolo",
"tracking": "Monitoraggio",
@@ -378,7 +378,7 @@
"watching": "Stai seguendo",
"watching-info": "Sarai notificato per tutte le modifiche in questa bacheca",
"welcome-board": "Bacheca di benvenuto",
"welcome-swimlane": "Milestone 1",
"welcome-swimlane": "Pietra miliare 1",
"welcome-list1": "Basi",
"welcome-list2": "Avanzate",
"what-to-do": "Cosa vuoi fare?",
@@ -407,7 +407,7 @@
"invitation-code": "Codice d'invito",
"email-invite-register-subject": "__inviter__ ti ha inviato un invito",
"email-invite-register-text": "Gentile __user__,\n\n__inviter__ ti ha invitato su Wekan per collaborare.\n\nPer favore segui il link qui sotto:\n__url__\n\nIl tuo codice d'invito è: __icode__\n\nGrazie.",
"email-smtp-test-subject": "SMTP Test Email From Wekan",
"email-smtp-test-subject": "Test invio email SMTP per Wekan",
"email-smtp-test-text": "Hai inviato un'email con successo",
"error-invitation-code-not-exist": "Il codice d'invito non esiste",
"error-notAuthorized": "Non sei autorizzato ad accedere a questa pagina.",
+21 -21
View File
@@ -76,7 +76,7 @@
"archived-boards": "Archived Boards",
"restore-board": "Restore Board",
"no-archived-boards": "No Archived Boards.",
"archives": "Archives",
"archives": "Архив",
"assign-member": "Assign member",
"attached": "attached",
"attachment": "Attachment",
@@ -125,15 +125,15 @@
"cardMorePopup-title": "More",
"cards": "Cards",
"change": "Change",
"change-avatar": "Change Avatar",
"change-password": "Change Password",
"change-avatar": "Аватар өөрчлөх",
"change-password": "Нууц үг солих",
"change-permissions": "Change permissions",
"change-settings": "Change Settings",
"changeAvatarPopup-title": "Change Avatar",
"changeLanguagePopup-title": "Change Language",
"changePasswordPopup-title": "Change Password",
"change-settings": "Тохиргоо өөрчлөх",
"changeAvatarPopup-title": "Аватар өөрчлөх",
"changeLanguagePopup-title": "Хэл солих",
"changePasswordPopup-title": "Нууц үг солих",
"changePermissionsPopup-title": "Change Permissions",
"changeSettingsPopup-title": "Change Settings",
"changeSettingsPopup-title": "Тохиргоо өөрчлөх",
"checklists": "Checklists",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Click to unstar this board.",
@@ -162,10 +162,10 @@
"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",
"createBoardPopup-title": "Create Board",
"create": "Үүсгэх",
"createBoardPopup-title": "Самбар үүсгэх",
"chooseBoardSourcePopup-title": "Import board",
"createLabelPopup-title": "Create Label",
"createLabelPopup-title": "Шошго үүсгэх",
"current": "current",
"date": "Date",
"decline": "Decline",
@@ -179,16 +179,16 @@
"done": "Done",
"download": "Download",
"edit": "Edit",
"edit-avatar": "Change Avatar",
"edit-profile": "Edit Profile",
"edit-avatar": "Аватар өөрчлөх",
"edit-profile": "Бүртгэл засварлах",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Change start date",
"editCardDueDatePopup-title": "Change due date",
"editCardSpentTimePopup-title": "Change spent time",
"editLabelPopup-title": "Change Label",
"editNotificationPopup-title": "Edit Notification",
"editProfilePopup-title": "Edit Profile",
"editNotificationPopup-title": "Мэдэгдэл тохируулах",
"editProfilePopup-title": "Бүртгэл засварлах",
"email": "Email",
"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.",
@@ -227,7 +227,7 @@
"fullname": "Full Name",
"header-logo-title": "Go back to your boards page.",
"hide-system-messages": "Hide system messages",
"headerBarCreateBoardPopup-title": "Create Board",
"headerBarCreateBoardPopup-title": "Самбар үүсгэх",
"home": "Home",
"import": "Import",
"import-board": "import board",
@@ -253,7 +253,7 @@
"joined": "joined",
"just-invited": "You are just invited to this board",
"keyboard-shortcuts": "Keyboard shortcuts",
"label-create": "Create Label",
"label-create": "Шошго үүсгэх",
"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",
@@ -276,10 +276,10 @@
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
"lists": "Lists",
"swimlanes": "Swimlanes",
"log-out": "Log Out",
"log-out": "Гарах",
"log-in": "Log In",
"loginPopup-title": "Log In",
"memberMenuPopup-title": "Member Settings",
"memberMenuPopup-title": "Гишүүний тохиргоо",
"members": "Гишүүд",
"menu": "Menu",
"move-selection": "Move selection",
@@ -291,7 +291,7 @@
"multi-selection-on": "Multi-Selection is on",
"muted": "Muted",
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "My Boards",
"my-boards": "Миний самбарууд",
"name": "Name",
"no-archived-cards": "No archived cards.",
"no-archived-lists": "No archived lists.",
@@ -348,7 +348,7 @@
"show-cards-minimum-count": "Show cards count if list contains more than",
"sidebar-open": "Open Sidebar",
"sidebar-close": "Close Sidebar",
"signupPopup-title": "Create an Account",
"signupPopup-title": "Хэрэглэгч үүсгэх",
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
"starred-boards": "Starred Boards",
"starred-boards-description": "Starred boards show up at the top of your boards list.",
+14 -14
View File
@@ -12,7 +12,7 @@
"act-archivedBoard": "__board__ panosunu arşivledi",
"act-archivedCard": "__card__ kartını arşivledi",
"act-archivedList": "__list__ listesini arşivledi",
"act-archivedSwimlane": "archived __swimlane__",
"act-archivedSwimlane": "__swimlane__ arşivlendi",
"act-importBoard": "__board__ panosunu içe aktardı",
"act-importCard": "__card__ kartını içe aktardı",
"act-importList": "__list__ listesini içe aktardı",
@@ -45,7 +45,7 @@
"add-attachment": "Ek Ekle",
"add-board": "Pano Ekle",
"add-card": "Kart Ekle",
"add-swimlane": "Add Swimlane",
"add-swimlane": "Kulvar Ekle",
"add-checklist": "Yapılacak Listesi Ekle",
"add-checklist-item": "Yapılacak listesine yeni bir öğe ekle",
"add-cover": "Kapak resmi ekle",
@@ -69,7 +69,7 @@
"archive-board": "Panoyu Arşivle",
"archive-card": "Kartı Arşivle",
"archive-list": "Listeyi Arşivle",
"archive-swimlane": "Archive Swimlane",
"archive-swimlane": "Kulvarı Arşivle",
"archive-selection": "Seçimi arşivle",
"archiveBoardPopup-title": "Pano Arşivlensin mi?",
"archived-items": "Arşivlenmiş Öğeler",
@@ -98,7 +98,7 @@
"boardMenuPopup-title": "Pano menüsü",
"boards": "Panolar",
"board-view": "Pano Görünümü",
"board-view-swimlanes": "Swimlanes",
"board-view-swimlanes": "Kulvarlar",
"board-view-lists": "Listeler",
"bucket-example": "Örn: \"Marketten Alacaklarım\"",
"cancel": "İptal",
@@ -159,9 +159,9 @@
"confirm-checklist-delete-dialog": "Yapılacak listesini silmek istediğinize emin misiniz",
"copy-card-link-to-clipboard": "Kartın linkini kopyala",
"copyCardPopup-title": "Kartı Kopyala",
"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\"} ]",
"copyChecklistToManyCardsPopup-title": "Yapılacaklar Listesi şemasını birden çok karta kopyala",
"copyChecklistToManyCardsPopup-instructions": "Hedef Kart Başlıkları ve Açıklamaları bu JSON formatında",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"İlk kart başlığı\", \"description\":\"İlk kart açıklaması\"}, {\"title\":\"İkinci kart başlığı\",\"description\":\"İkinci kart açıklaması\"},{\"title\":\"Son kart başlığı\",\"description\":\"Son kart açıklaması\"} ]",
"create": "Oluştur",
"createBoardPopup-title": "Pano Oluşturma",
"chooseBoardSourcePopup-title": "Panoyu içe aktar",
@@ -268,14 +268,14 @@
"list-move-cards": "Listedeki tüm kartları taşı",
"list-select-cards": "Listedeki tüm kartları seç",
"listActionPopup-title": "Liste İşlemleri",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneActionPopup-title": "Kulvar İşlemleri",
"listImportCardPopup-title": "Bir Trello kartını içeri aktar",
"listMorePopup-title": "Daha",
"link-list": "Listeye doğrudan bağlantı",
"list-delete-pop": "Etkinlik akışınızdaki tüm eylemler geri kurtarılamaz şekilde kaldırılacak. Bu işlem geri alınamaz.",
"list-delete-suggest-archive": "Bir listeyi etkinliklerini koruyarak panodan kaldırmak için arşivleyebilirsiniz.",
"lists": "Listeler",
"swimlanes": "Swimlanes",
"swimlanes": "Kulvarlar",
"log-out": "Oturum Kapat",
"log-in": "Oturum Aç",
"loginPopup-title": "Oturum Aç",
@@ -295,7 +295,7 @@
"name": "Adı",
"no-archived-cards": "Arşivlenmiş kart bulunamadı.",
"no-archived-lists": "Arşivlenmiş liste bulunamadı.",
"no-archived-swimlanes": "No archived swimlanes.",
"no-archived-swimlanes": "Arşivlenmiş kulvar bulunamadı.",
"no-results": "Sonuç yok",
"normal": "Normal",
"normal-desc": "Kartları görüntüleyebilir ve düzenleyebilir. Ayarları değiştiremez.",
@@ -331,8 +331,8 @@
"restore": "Geri Getir",
"save": "Kaydet",
"search": "Arama",
"search-cards": "Search from card titles and descriptions on this board",
"search-example": "Text to search for?",
"search-cards": "Bu tahta da ki kart başlıkları ve açıklamalarında arama yap",
"search-example": "Aranılacak metin?",
"select-color": "Renk Seç",
"set-wip-limit-value": "Bu listedeki en fazla öğe sayısı için bir sınır belirleyin",
"setWipLimitPopup-title": "Devam Eden İş Sınırı Belirle",
@@ -360,7 +360,7 @@
"overtime-hours": "Aşılan süre (saat)",
"overtime": "Aşılan süre",
"has-overtime-cards": "Süresi aşılmış kartlar",
"has-spenttime-cards": "Has spent time cards",
"has-spenttime-cards": "Zaman geçirilmiş kartlar",
"time": "Zaman",
"title": "Başlık",
"tracking": "Takip",
@@ -378,7 +378,7 @@
"watching": "Takip Ediliyor",
"watching-info": "Bu pano hakkındaki tüm değişiklikler hakkında bildirim alacaksınız",
"welcome-board": "Hoş Geldiniz Panosu",
"welcome-swimlane": "Milestone 1",
"welcome-swimlane": "Kilometre taşı",
"welcome-list1": "Temel",
"welcome-list2": "Gelişmiş",
"what-to-do": "Ne yapmak istiyorsunuz?",
+3
View File
@@ -23,6 +23,9 @@ Activities.helpers({
list() {
return Lists.findOne(this.listId);
},
swimlane() {
return Swimlanes.findOne(this.swimlaneId);
},
oldList() {
return Lists.findOne(this.oldListId);
},
+6 -6
View File
@@ -35,7 +35,7 @@ Boards.attachSchema(new SimpleSchema({
type: String,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert) {
return 'board-view-swimlanes';
return 'board-view-lists';
}
},
},
@@ -608,7 +608,7 @@ if (Meteor.isServer) {
//BOARDS REST API
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res, next) {
JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res) {
try {
Authentication.checkLoggedIn(req.userId);
const paramUserId = req.params.userId;
@@ -638,7 +638,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/boards', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards', function (req, res) {
try {
Authentication.checkUserId(req.userId);
JsonRoutes.sendResult(res, {
@@ -659,7 +659,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/boards/:id', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:id', function (req, res) {
try {
const id = req.params.id;
Authentication.checkBoardAccess(req.userId, id);
@@ -677,7 +677,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('POST', '/api/boards', function (req, res, next) {
JsonRoutes.add('POST', '/api/boards', function (req, res) {
try {
Authentication.checkUserId(req.userId);
const id = Boards.insert({
@@ -708,7 +708,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('DELETE', '/api/boards/:id', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:id', function (req, res) {
try {
Authentication.checkUserId(req.userId);
const id = req.params.id;
+4 -4
View File
@@ -87,7 +87,7 @@ if (Meteor.isServer) {
//CARD COMMENT REST API
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -111,7 +111,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -130,7 +130,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/comments', function (req, res, next) {
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -160,7 +160,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
+5 -5
View File
@@ -433,7 +433,7 @@ if (Meteor.isServer) {
}
//LISTS REST API
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (req, res) {
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
@@ -449,7 +449,7 @@ if (Meteor.isServer) {
});
});
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) {
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
const paramCardId = req.params.cardId;
@@ -460,7 +460,7 @@ if (Meteor.isServer) {
});
});
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (req, res, next) {
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
@@ -493,7 +493,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('PUT', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) {
JsonRoutes.add('PUT', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
const paramCardId = req.params.cardId;
@@ -527,7 +527,7 @@ if (Meteor.isServer) {
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
+4 -4
View File
@@ -258,7 +258,7 @@ if (Meteor.isServer) {
//CARD COMMENT REST API
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramCardId = req.params.cardId;
@@ -280,7 +280,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramChecklistId = req.params.checklistId;
@@ -298,7 +298,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res, next) {
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramCardId = req.params.cardId;
@@ -329,7 +329,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramCommentId = req.params.commentId;
+7 -7
View File
@@ -59,7 +59,7 @@ Integrations.allow({
//INTEGRATIONS REST API
if (Meteor.isServer) {
// Get all integrations in board
JsonRoutes.add('GET', '/api/boards/:boardId/integrations', function(req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/integrations', function(req, res) {
try {
const paramBoardId = req.params.boardId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
@@ -79,7 +79,7 @@ if (Meteor.isServer) {
});
// Get a single integration in board
JsonRoutes.add('GET', '/api/boards/:boardId/integrations/:intId', function(req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/integrations/:intId', function(req, res) {
try {
const paramBoardId = req.params.boardId;
const paramIntId = req.params.intId;
@@ -99,7 +99,7 @@ if (Meteor.isServer) {
});
// Create a new integration
JsonRoutes.add('POST', '/api/boards/:boardId/integrations', function(req, res, next) {
JsonRoutes.add('POST', '/api/boards/:boardId/integrations', function(req, res) {
try {
const paramBoardId = req.params.boardId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
@@ -126,7 +126,7 @@ if (Meteor.isServer) {
});
// Edit integration data
JsonRoutes.add('PUT', '/api/boards/:boardId/integrations/:intId', function (req, res, next) {
JsonRoutes.add('PUT', '/api/boards/:boardId/integrations/:intId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
const paramIntId = req.params.intId;
@@ -174,7 +174,7 @@ if (Meteor.isServer) {
});
// Delete subscribed activities
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId/activities', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) {
try {
const paramBoardId = req.params.boardId;
const paramIntId = req.params.intId;
@@ -198,7 +198,7 @@ if (Meteor.isServer) {
});
// Add subscribed activities
JsonRoutes.add('POST', '/api/boards/:boardId/integrations/:intId/activities', function (req, res, next) {
JsonRoutes.add('POST', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) {
try {
const paramBoardId = req.params.boardId;
const paramIntId = req.params.intId;
@@ -222,7 +222,7 @@ if (Meteor.isServer) {
});
// Delete integration
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
const paramIntId = req.params.intId;
+4 -4
View File
@@ -201,7 +201,7 @@ if (Meteor.isServer) {
//LISTS REST API
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/boards/:boardId/lists', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/lists', function (req, res) {
try {
const paramBoardId = req.params.boardId;
Authentication.checkBoardAccess( req.userId, paramBoardId);
@@ -224,7 +224,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
@@ -242,7 +242,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('POST', '/api/boards/:boardId/lists', function (req, res, next) {
JsonRoutes.add('POST', '/api/boards/:boardId/lists', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -265,7 +265,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
+4 -4
View File
@@ -131,7 +131,7 @@ if (Meteor.isServer) {
//SWIMLANE REST API
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes', function (req, res) {
try {
const paramBoardId = req.params.boardId;
Authentication.checkBoardAccess( req.userId, paramBoardId);
@@ -154,7 +154,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res, next) {
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
const paramSwimlaneId = req.params.swimlaneId;
@@ -172,7 +172,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('POST', '/api/boards/:boardId/swimlanes', function (req, res, next) {
JsonRoutes.add('POST', '/api/boards/:boardId/swimlanes', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -195,7 +195,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
+13 -13
View File
@@ -401,19 +401,19 @@ export class TrelloCreator {
}
createSwimlanes(boardId) {
const swimlaneToCreate = {
archived: false,
boardId,
// We are being defensing here by providing a default date (now) if the
// creation date wasn't found on the action log. This happen on old
// Wekan boards (eg from 2013) that didn't log the 'createList' action
// we require.
createdAt: this._now(),
title: 'Default',
};
const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate);
Swimlanes.direct.update(swimlaneId, {$set: {'updatedAt': this._now()}});
this.swimlane = swimlaneId;
const swimlaneToCreate = {
archived: false,
boardId,
// We are being defensing here by providing a default date (now) if the
// creation date wasn't found on the action log. This happen on old
// Wekan boards (eg from 2013) that didn't log the 'createList' action
// we require.
createdAt: this._now(),
title: 'Default',
};
const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate);
Swimlanes.direct.update(swimlaneId, {$set: {'updatedAt': this._now()}});
this.swimlane = swimlaneId;
}
createChecklists(trelloChecklists) {
+6 -6
View File
@@ -600,7 +600,7 @@ if (Meteor.isServer) {
// USERS REST API
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/user', function(req, res, next) {
JsonRoutes.add('GET', '/api/user', function(req, res) {
try {
Authentication.checkLoggedIn(req.userId);
const data = Meteor.users.findOne({ _id: req.userId});
@@ -618,7 +618,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/users', function (req, res, next) {
JsonRoutes.add('GET', '/api/users', function (req, res) {
try {
Authentication.checkUserId(req.userId);
JsonRoutes.sendResult(res, {
@@ -636,7 +636,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('GET', '/api/users/:id', function (req, res, next) {
JsonRoutes.add('GET', '/api/users/:id', function (req, res) {
try {
Authentication.checkUserId(req.userId);
const id = req.params.id;
@@ -653,7 +653,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('PUT', '/api/users/:id', function (req, res, next) {
JsonRoutes.add('PUT', '/api/users/:id', function (req, res) {
try {
Authentication.checkUserId(req.userId);
const id = req.params.id;
@@ -696,7 +696,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('POST', '/api/users/', function (req, res, next) {
JsonRoutes.add('POST', '/api/users/', function (req, res) {
try {
Authentication.checkUserId(req.userId);
const id = Accounts.createUser({
@@ -720,7 +720,7 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('DELETE', '/api/users/:id', function (req, res, next) {
JsonRoutes.add('DELETE', '/api/users/:id', function (req, res) {
try {
Authentication.checkUserId(req.userId);
const id = req.params.id;
+3
View File
@@ -228,7 +228,10 @@ export class WekanCreator {
title: card.title,
// we attribute the card to its creator if available
userId: this._user(this.createdBy.cards[card._id]),
isOvertime: card.isOvertime || false,
startAt: card.startAt ? this._now(card.startAt) : null,
dueAt: card.dueAt ? this._now(card.dueAt) : null,
spentTime: card.spentTime || null,
};
// add labels
if (card.labelIds) {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "0.77.0",
"version": "0.78.0",
"description": "The open-source Trello-like kanban",
"private": true,
"scripts": {
+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 = 62,
appVersion = 63,
# Increment this for every release.
appMarketingVersion = (defaultText = "0.77.0~2018-02-23"),
appMarketingVersion = (defaultText = "0.78.0~2018-03-17"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+7 -3
View File
@@ -22,9 +22,9 @@ const sandstormBoard = {
if (isSandstorm && Meteor.isServer) {
const fs = require('fs');
const pathParts = process.cwd().split("/");
var path = pathParts.join("/");
const Capnp = Npm.require(path + "../../../node_modules/capnp.js");
const pathParts = process.cwd().split('/');
const path = pathParts.join('/');
const Capnp = Npm.require(`${path}../../../node_modules/capnp.js`);
const Package = Capnp.importSystem('sandstorm/package.capnp');
const Powerbox = Capnp.importSystem('sandstorm/powerbox.capnp');
const Identity = Capnp.importSystem('sandstorm/identity.capnp');
@@ -252,6 +252,10 @@ if (isSandstorm && Meteor.isServer) {
Users.after.insert((userId, doc) => {
if (!Boards.findOne(sandstormBoard._id)) {
Boards.insert(sandstormBoard, { validate: false });
Swimlanes.insert({
title: 'Default',
boardId: sandstormBoard._id,
});
Activities.update(
{ activityTypeId: sandstormBoard._id },
{ $set: { userId: doc._id }}
+3 -3
View File
@@ -1,6 +1,6 @@
#!/bin/bash
exec >> $SNAP_COMMON/hook.log 2>&1
exec >> $SNAP_DATA/hook.log 2>&1
echo "$(date '+%Y-%m-%d %H:%M:%S') $0: Entering hook"
set -x
@@ -17,8 +17,8 @@ if [ "$value" = "true" ]; then
port=$(snapctl get port)
[ "x" != "x${bind_port}" ] && sed -i 's|proxy / localhost:.* {|proxy / localhost:'"${bind_port}"' {|g' $SNAP_COMMON/Caddyfile
[ "x" != "x$port" ] && sed -i 's|http://:.*|http://:'"${port}"'|g' $SNAP_COMMON/Caddyfile
snapctl stop ${SNAP_NAME}.caddy 2>&1 || true
snapctl start --enable ${SNAP_NAME}.caddy 2>&1 || true
snapctl restart ${SNAP_NAME}.caddy 2>&1 || true
else
snapctl stop --disable ${SNAP_NAME}.caddy 2>&1 || true
fi
@@ -27,8 +27,8 @@ value=$(snapctl get disable-mongodb)
if [ "$value" = "true" ]; then
snapctl stop --disable ${SNAP_NAME}.mongodb 2>&1 || true
else
snapctl stop ${SNAP_NAME}.mongodb 2>&1 || true
snapctl start --enable ${SNAP_NAME}.mongodb 2>&1 || true
snapctl restart ${SNAP_NAME}.mongodb 2>&1 || true
fi
# restart all services
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
exec >> $SNAP_COMMON/hook.log 2>&1
exec >> $SNAP_DATA/hook.log 2>&1
echo "$(date '+%Y-%m-%d %H:%M:%S') $0: Entering hook"
# coppy caddy file in place
+6
View File
@@ -21,6 +21,12 @@ plugs:
interface: content
target: $SNAP_DATA/shared
hooks:
configure:
plugs:
- network
- network-bind
slots:
mongodb-slot:
interface: content