summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md13
-rw-r--r--Stackerfile.yml2
-rw-r--r--client/components/lists/listBody.js50
-rw-r--r--i18n/de.i18n.json68
-rw-r--r--i18n/mk.i18n.json216
-rw-r--r--i18n/ru.i18n.json2
-rw-r--r--models/cards.js3
-rw-r--r--package.json2
-rwxr-xr-xrebuild-wekan.sh3
-rw-r--r--sandstorm-pkgdef.capnp4
10 files changed, 195 insertions, 168 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a141dd4f..bdfbba1c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,16 @@
+# v2.57 2019-04-02 Wekan release
+
+This release fixes the following bugs, thanks to justinr1234:
+
+- [Add proper variables for join card](https://github.com/wekan/wekan/commit/289f1fe1340c85eb2af19825f4972e9057a86b7a),
+ fixes [Incorrect variable replacement on email notifications](https://github.com/wekan/wekan/issues/2295).
+
+and fixes the following bugs with Apache I-CLA, thanks to bentiss:
+
+- [List: Do not use IntersectionObserver to reduce CPU usage](https://github.com/wekan/wekan/pull/2302).
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
# v2.56 2019-03-27 Wekan release
This release [fixes the following bugs](https://github.com/wekan/wekan/pull/2287), thanks to bentiss with Apache I-CLA:
diff --git a/Stackerfile.yml b/Stackerfile.yml
index c4160e28..0b53ab88 100644
--- a/Stackerfile.yml
+++ b/Stackerfile.yml
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v2.56.0"
+appVersion: "v2.57.0"
files:
userUploads:
- README.md
diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js
index 112b6379..43619890 100644
--- a/client/components/lists/listBody.js
+++ b/client/components/lists/listBody.js
@@ -615,40 +615,50 @@ BlazeComponent.extendComponent({
BlazeComponent.extendComponent({
onCreated() {
- this.spinnerShown = false;
this.cardlimit = this.parentComponent().cardlimit;
+
+ this.listId = this.parentComponent().data()._id;
+ this.swimlaneId = '';
+
+ const boardView = Meteor.user().profile.boardView;
+ if (boardView === 'board-view-swimlanes')
+ this.swimlaneId = this.parentComponent().parentComponent().parentComponent().data()._id;
},
onRendered() {
- const spinner = this.find('.sk-spinner-list');
-
- if (spinner) {
- const options = {
- root: null, // we check if the spinner is on the current viewport
- rootMargin: '0px',
- threshold: 0.25,
- };
-
- this.observer = new IntersectionObserver((entries) => {
- entries.forEach((entry) => {
- this.spinnerShown = entry.isIntersecting;
- this.updateList();
- });
- }, options);
+ this.spinner = this.find('.sk-spinner-list');
+ this.container = this.$(this.spinner).parents('.js-perfect-scrollbar')[0];
- this.observer.observe(spinner);
- }
+ $(this.container).on(`scroll.spinner_${this.swimlaneId}_${this.listId}`, () => this.updateList());
+ $(window).on(`resize.spinner_${this.swimlaneId}_${this.listId}`, () => this.updateList());
+
+ this.updateList();
},
onDestroyed() {
- this.observer.disconnect();
+ $(this.container).off(`scroll.spinner_${this.swimlaneId}_${this.listId}`);
+ $(window).off(`resize.spinner_${this.swimlaneId}_${this.listId}`);
},
updateList() {
- if (this.spinnerShown) {
+ if (this.spinnerInView()) {
this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter);
window.requestIdleCallback(() => this.updateList());
}
},
+ spinnerInView() {
+ const parentViewHeight = this.container.clientHeight;
+ const bottomViewPosition = this.container.scrollTop + parentViewHeight;
+
+ const threshold = this.spinner.offsetTop;
+
+ // spinner deleted
+ if (!this.spinner.offsetTop) {
+ return false;
+ }
+
+ return bottomViewPosition > threshold;
+ },
+
}).register('spinnerList');
diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json
index c94ac1d2..86a091eb 100644
--- a/i18n/de.i18n.json
+++ b/i18n/de.i18n.json
@@ -1,41 +1,41 @@
{
"accept": "Akzeptieren",
"act-activity-notify": "Aktivitätsbenachrichtigung",
- "act-addAttachment": "hat Anhang __attachment__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
- "act-deleteAttachment": "löschte Anhang __attachment__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-addSubtask": "hat Teilaufgabe __subtask__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board angehängt",
- "act-addLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
- "act-addedLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
- "act-removeLabel": "entfernte Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-removedLabel": "entfernte Label __label__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-addChecklist": "hat Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
- "act-addChecklistItem": "hat Checklistenposition __checklistItem__ zu Checkliste __checkList__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ angehängt",
- "act-removeChecklist": "entfernt Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-removeChecklistItem": "entfernt Checklistenposition __checklistItem__ von Checkliste __checkList__ zur Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-checkedItem": "hakte __checklistItem__ von der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ ab",
- "act-uncheckedItem": "unabgehakt __checklistItem__ von der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-completeChecklist": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-uncompleteChecklist": "unvollendete Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-addComment": "kommentierte eine Karte __card__: __comment__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
+ "act-addAttachment": "hat Anhang __attachment__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
+ "act-deleteAttachment": "hat Anhang __attachment__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ gelöscht",
+ "act-addSubtask": "hat Teilaufgabe __subtask__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
+ "act-addLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
+ "act-addedLabel": "hat Label __label__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
+ "act-removeLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
+ "act-removedLabel": "hat Label __label__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
+ "act-addChecklist": "hat Checkliste __checklist__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
+ "act-addChecklistItem": "hat Checklistenposition __checklistItem__ zu Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
+ "act-removeChecklist": "hat Checkliste __checklist__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
+ "act-removeChecklistItem": "hat Checklistenposition __checklistItem__ von Checkliste __checkList__ auf der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
+ "act-checkedItem": "hat __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ abgehakt",
+ "act-uncheckedItem": "hat Haken von __checklistItem__ der Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
+ "act-completeChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
+ "act-uncompleteChecklist": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ unvervollständigt",
+ "act-addComment": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ kommentiert: __comment__",
"act-createBoard": "hat Board __board__ erstellt",
- "act-createSwimlane": "erstellte Swimlane __swimlane__ auf Board __board__",
- "act-createCard": "erstellte Karte __card__ auf Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-createCustomField": "erstellte ein benutzerdefiniertes Feld __customField__ für Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
+ "act-createSwimlane": "hat Swimlane __swimlane__ in Board __board__ erstellt",
+ "act-createCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ erstellt",
+ "act-createCustomField": "hat das benutzerdefinierte Feld __customField__ auf Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ erstellt",
"act-createList": "hat Liste __list__ zu Board __board__ hinzugefügt",
"act-addBoardMember": "hat Mitglied __member__ zu Board __board__ hinzugefügt",
- "act-archivedBoard": "Board __board__ ins Archiv verschoben",
- "act-archivedCard": "Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
- "act-archivedList": "Liste __list__ bei Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
- "act-archivedSwimlane": "Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
- "act-importBoard": "importiert Board __board__",
- "act-importCard": "importiert Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ in Board __board__ ",
- "act-importList": "importiert Liste __list__ bei Swimlane __swimlane__ in Board __board__ ",
- "act-joinMember": "fügt Mitglied __member__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__ hinzu",
- "act-moveCard": "verschiebt Karte __card__ auf Board __board__ von Liste __oldList__ in Swimlane __oldSwimlane__ zu Liste __list__ in Swimlane __swimlane__",
- "act-moveCardToOtherBoard": "verschiebt Karte __card__ von Liste __oldList__ von Swimlane __oldSwimlane__ von Board __oldBoard__ nach Liste __list__ in Swimlane __swimlane__ zu Board __board__",
- "act-removeBoardMember": "entfernte Mitglied __member__ vom Board __board__",
- "act-restoredCard": "wiederherstellte Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
- "act-unjoinMember": "entfernte Mitglied __member__ von Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
+ "act-archivedBoard": "hat Board __board__ ins Archiv verschoben",
+ "act-archivedCard": "hat Karte __card__ von der Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben",
+ "act-archivedList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ ins Archiv verschoben",
+ "act-archivedSwimlane": "hat Swimlane __swimlane__ von Board __board__ ins Archiv verschoben",
+ "act-importBoard": "hat Board __board__ importiert",
+ "act-importCard": "hat Karte __card__ in Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert",
+ "act-importList": "hat Liste __list__ in Swimlane __swimlane__ in Board __board__ importiert",
+ "act-joinMember": "hat Mitglied __member__ zur Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ hinzugefügt",
+ "act-moveCard": "hat Karte __card__ in Board __board__ von Liste __oldList__ in Swimlane __oldSwimlane__ zu Liste __list__ in Swimlane __swimlane__ verschoben",
+ "act-moveCardToOtherBoard": "hat Karte __card__ von Liste __oldList__ in Swimlane __oldSwimlane__ in Board __oldBoard__ zu Liste __list__ in Swimlane __swimlane__ in Board __board__ verschoben",
+ "act-removeBoardMember": "hat Mitglied __member__ von Board __board__ entfernt",
+ "act-restoredCard": "hat Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ wiederhergestellt",
+ "act-unjoinMember": "hat Mitglied __member__ von Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ entfernt",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Aktionen",
@@ -60,14 +60,14 @@
"activity-unchecked-item": "hat %s in Checkliste %s von %s abgewählt",
"activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
"activity-checklist-removed": "entfernte eine Checkliste von %s",
- "activity-checklist-completed": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
+ "activity-checklist-completed": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"activity-checklist-uncompleted": "unvervollständigte die Checkliste %s von %s",
"activity-checklist-item-added": "hat ein Checklistenelement zu '%s' in %s hinzugefügt",
"activity-checklist-item-removed": "hat ein Checklistenelement von '%s' in %s entfernt",
"add": "Hinzufügen",
"activity-checked-item-card": "markiere %s in Checkliste %s",
"activity-unchecked-item-card": "hat %s in Checkliste %s abgewählt",
- "activity-checklist-completed-card": "vervollständigte Checkliste __checklist__ der Karte __card__ auf der Liste __list__ bei Swimlane __swimlane__ an Board __board__",
+ "activity-checklist-completed-card": "hat Checkliste __checklist__ der Karte __card__ auf der Liste __list__ in Swimlane __swimlane__ in Board __board__ vervollständigt",
"activity-checklist-uncompleted-card": "unvervollständigte die Checkliste %s",
"add-attachment": "Datei anhängen",
"add-board": "neues Board",
diff --git a/i18n/mk.i18n.json b/i18n/mk.i18n.json
index 5fd29479..10489c66 100644
--- a/i18n/mk.i18n.json
+++ b/i18n/mk.i18n.json
@@ -1,5 +1,5 @@
{
- "accept": "Приемам",
+ "accept": "Прифати",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
@@ -38,11 +38,11 @@
"act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
- "actions": "Действия",
- "activities": "Действия",
- "activity": "Дейности",
+ "actions": "Акции",
+ "activities": "Активности",
+ "activity": "Активност",
"activity-added": "добави %s към %s",
- "activity-archived": "%s е преместена в Архива",
+ "activity-archived": "%s е преместена во Архива",
"activity-attached": "прикачи %s към %s",
"activity-created": "създаде %s",
"activity-customfield-created": "създаде собствено поле %s",
@@ -69,56 +69,56 @@
"activity-unchecked-item-card": "размаркира %s в чеклист %s",
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
"activity-checklist-uncompleted-card": "\"отзавърши\" чеклистта %s",
- "add-attachment": "Добави прикачен файл",
- "add-board": "Добави Табло",
- "add-card": "Добави карта",
- "add-swimlane": "Добави коридор",
- "add-subtask": "Добави подзадача",
- "add-checklist": "Добави списък със задачи",
- "add-checklist-item": "Добави точка към списъка със задачи",
- "add-cover": "Добави корица",
- "add-label": "Добави етикет",
- "add-list": "Добави списък",
- "add-members": "Добави членове",
- "added": "Добавено",
- "addMemberPopup-title": "Членове",
+ "add-attachment": "Додај прилог",
+ "add-board": "Додади Табла",
+ "add-card": "Додади Картичка",
+ "add-swimlane": "Додади Коридор",
+ "add-subtask": "Додади подзадача",
+ "add-checklist": "Додади список на задачи",
+ "add-checklist-item": "Додади точка во списокот со задачи",
+ "add-cover": "Додади корица",
+ "add-label": "Додади етикета",
+ "add-list": "Додади листа",
+ "add-members": "Додави членови",
+ "added": "Додадено",
+ "addMemberPopup-title": "Членови",
"admin": "Администратор",
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
"admin-announcement": "Съобщение",
"admin-announcement-active": "Active System-Wide Announcement",
- "admin-announcement-title": "Съобщение от администратора",
- "all-boards": "Всички табла",
- "and-n-other-card": "И __count__ друга карта",
- "and-n-other-card_plural": "И __count__ други карти",
+ "admin-announcement-title": "Announcement from Administrator",
+ "all-boards": "Сите табли",
+ "and-n-other-card": "And __count__ other card",
+ "and-n-other-card_plural": "And __count__ other cards",
"apply": "Приложи",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
- "archive": "Премести в Архива",
- "archive-all": "Премести всички в Архива",
- "archive-board": "Премести Таблото в Архива",
- "archive-card": "Премести Картата в Архива",
- "archive-list": "Премести Списъка в Архива",
- "archive-swimlane": "Премести Коридора в Архива",
- "archive-selection": "Премести избраното в Архива",
- "archiveBoardPopup-title": "Да преместя ли Таблото в Архива?",
- "archived-items": "Архив",
- "archived-boards": "Табла в Архива",
+ "archive": "Премести во Архива",
+ "archive-all": "Премести всички во Архива",
+ "archive-board": "Премести Таблото во Архива",
+ "archive-card": "Премести Картата во Архива",
+ "archive-list": "Премести Списъка во Архива",
+ "archive-swimlane": "Премести Коридора во Архива",
+ "archive-selection": "Премести избраното во Архива",
+ "archiveBoardPopup-title": "Да преместя ли Таблото во Архива?",
+ "archived-items": "Архива",
+ "archived-boards": "Табла во Архива",
"restore-board": "Възстанови Таблото",
- "no-archived-boards": "Няма Табла в Архива.",
- "archives": "Архив",
+ "no-archived-boards": "Няма Табла во Архива.",
+ "archives": "Архива",
"template": "Template",
"templates": "Templates",
"assign-member": "Възложи на член от екипа",
"attached": "прикачен",
- "attachment": "Прикаченн файл",
- "attachment-delete-pop": "Изтриването на прикачен файл е завинаги. Няма как да бъде възстановен.",
- "attachmentDeletePopup-title": "Желаете ли да изтриете прикачения файл?",
- "attachments": "Прикачени файлове",
+ "attachment": "Прикаченн датотека",
+ "attachment-delete-pop": "Изтриването на прикачен датотека е завинаги. Няма как да бъде възстановен.",
+ "attachmentDeletePopup-title": "Желаете ли да изтриете прикачения датотека?",
+ "attachments": "Прикачени датотеки",
"auto-watch": "Автоматично наблюдаване на таблата, когато са създадени",
"avatar-too-big": "Аватарът е прекалено голям (максимум 70KB)",
"back": "Назад",
- "board-change-color": "Промени цвета",
+ "board-change-color": "Промени боја",
"board-nb-stars": "%s звезди",
- "board-not-found": "Таблото не е намерено",
+ "board-not-found": "Таблото не е најдено",
"board-private-info": "This board will be <strong>private</strong>.",
"board-public-info": "This board will be <strong>public</strong>.",
"boardChangeColorPopup-title": "Change Board Background",
@@ -126,69 +126,69 @@
"boardChangeVisibilityPopup-title": "Change Visibility",
"boardChangeWatchPopup-title": "Промени наблюдаването",
"boardMenuPopup-title": "Board Settings",
- "boards": "Табла",
+ "boards": "Табли",
"board-view": "Board View",
"board-view-cal": "Календар",
"board-view-swimlanes": "Коридори",
- "board-view-lists": "Списъци",
+ "board-view-lists": "Листи",
"bucket-example": "Like “Bucket List” for example",
- "cancel": "Cancel",
- "card-archived": "Тази карта е преместена в Архива.",
- "board-archived": "Това табло е преместено в Архива.",
+ "cancel": "Откажи",
+ "card-archived": "Тази карта е преместена во Архива.",
+ "board-archived": "Това табло е преместено во Архива.",
"card-comments-title": "Тази карта има %s коментар.",
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
- "card-delete-suggest-archive": "Можете да преместите картата в Архива, за да я премахнете от Таблото и така да запазите активността в него.",
+ "card-delete-suggest-archive": "Можете да преместите картата во Архива, за да я премахнете от Таблото и така да запазите активността в него.",
"card-due": "Готова за",
"card-due-on": "Готова за",
"card-spent": "Изработено време",
- "card-edit-attachments": "Промени прикачените файлове",
+ "card-edit-attachments": "Промени прикачените датотеки",
"card-edit-custom-fields": "Промени собствените полета",
"card-edit-labels": "Промени етикетите",
"card-edit-members": "Промени членовете",
"card-labels-title": "Промени етикетите за картата.",
"card-members-title": "Добави или премахни членове на Таблото от тази карта.",
- "card-start": "Начало",
- "card-start-on": "Започва на",
+ "card-start": "Започнува",
+ "card-start-on": "Започнува на",
"cardAttachmentsPopup-title": "Прикачи от",
"cardCustomField-datePopup-title": "Промени датата",
"cardCustomFieldsPopup-title": "Промени собствените полета",
"cardDeletePopup-title": "Желаете да изтриете картата?",
"cardDetailsActionsPopup-title": "Опции",
"cardLabelsPopup-title": "Етикети",
- "cardMembersPopup-title": "Членове",
- "cardMorePopup-title": "Още",
+ "cardMembersPopup-title": "Членови",
+ "cardMorePopup-title": "Повеќе",
"cardTemplatePopup-title": "Create template",
- "cards": "Карти",
- "cards-count": "Карти",
+ "cards": "Картички",
+ "cards-count": "Картички",
"casSignIn": "Sign In with CAS",
"cardType-card": "Карта",
- "cardType-linkedCard": "Свързана карта",
+ "cardType-linkedCard": "Поврзана карта",
"cardType-linkedBoard": "Свързано табло",
"change": "Промени",
"change-avatar": "Промени аватара",
- "change-password": "Промени паролата",
- "change-permissions": "Промени правата",
- "change-settings": "Промени настройките",
- "changeAvatarPopup-title": "Промени аватара",
- "changeLanguagePopup-title": "Промени езика",
- "changePasswordPopup-title": "Промени паролата",
- "changePermissionsPopup-title": "Промени правата",
- "changeSettingsPopup-title": "Промяна на настройките",
+ "change-password": "Промени лозинка",
+ "change-permissions": "Промени права",
+ "change-settings": "Промени параметри",
+ "changeAvatarPopup-title": "Промени аватар",
+ "changeLanguagePopup-title": "Промени јазик",
+ "changePasswordPopup-title": "Промени лозинка",
+ "changePermissionsPopup-title": "Промени права",
+ "changeSettingsPopup-title": "Промени параметри",
"subtasks": "Подзадачи",
"checklists": "Списъци със задачи",
"click-to-star": "Click to star this board.",
"click-to-unstar": "Натиснете, за да премахнете това табло от любими.",
"clipboard": "Клипборда или с драг & дроп",
"close": "Затвори",
- "close-board": "Затвори Таблото",
- "close-board-pop": "Ще можете да възстановите Таблото като натиснете на бутона \"Архив\" в началото на хедъра.",
- "color-black": "черно",
- "color-blue": "синьо",
+ "close-board": "Затвори Табла",
+ "close-board-pop": "Ще можете да възстановите Таблото като натиснете на бутона \"Архива\" в началото на хедъра.",
+ "color-black": "црно",
+ "color-blue": "сино",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
- "color-gold": "gold",
- "color-gray": "gray",
+ "color-gold": "златно",
+ "color-gray": "сиво",
"color-green": "зелено",
"color-indigo": "indigo",
"color-lime": "лайм",
@@ -209,28 +209,28 @@
"color-white": "бяло",
"color-yellow": "жълто",
"unset-color": "Unset",
- "comment": "Коментирай",
+ "comment": "Коментирај",
"comment-placeholder": "Напиши коментар",
- "comment-only": "Само коментар",
+ "comment-only": "Само коментари",
"comment-only-desc": "Може да коментира само в карти.",
- "no-comments": "Няма коментари",
+ "no-comments": "Нема коментари",
"no-comments-desc": "Can not see comments and activities.",
- "computer": "Компютър",
- "confirm-subtask-delete-dialog": "Сигурен ли сте, че искате да изтриете подзадачата?",
- "confirm-checklist-delete-dialog": "Сигурни ли сте, че искате да изтриете този чеклист?",
+ "computer": "Компјутер",
+ "confirm-subtask-delete-dialog": "Сигурен ли сте, дека сакате да изтриете подзадачата?",
+ "confirm-checklist-delete-dialog": "Сигурни ли сте, дека сакате да изтриете този чеклист?",
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
- "linkCardPopup-title": "Свържи картата",
- "searchElementPopup-title": "Търсене",
- "copyCardPopup-title": "Копирай картата",
+ "linkCardPopup-title": "Поврзи картичка",
+ "searchElementPopup-title": "Барај",
+ "copyCardPopup-title": "Копирај картичка",
"copyChecklistToManyCardsPopup-title": "Копирай чеклисти в други карти",
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
- "create": "Създай",
- "createBoardPopup-title": "Създай Табло",
+ "create": "Креирај",
+ "createBoardPopup-title": "Креирај Табло",
"chooseBoardSourcePopup-title": "Импортирай Табло",
- "createLabelPopup-title": "Създай Табло",
- "createCustomField": "Създай Поле",
- "createCustomFieldPopup-title": "Създай Поле",
+ "createLabelPopup-title": "Креирај Табло",
+ "createCustomField": "Креирај Поле",
+ "createCustomFieldPopup-title": "Креирај Поле",
"current": "сегашен",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Чекбокс",
@@ -240,13 +240,13 @@
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
- "custom-field-number": "Номер",
+ "custom-field-number": "Број",
"custom-field-text": "Текст",
"custom-fields": "Собствени полета",
"date": "Дата",
- "decline": "Отказ",
+ "decline": "Откажи",
"default-avatar": "Основен аватар",
- "delete": "Изтрий",
+ "delete": "Избриши",
"deleteCustomFieldPopup-title": "Изтриване на Собственото поле?",
"deleteLabelPopup-title": "Желаете да изтриете етикета?",
"description": "Описание",
@@ -272,8 +272,8 @@
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
"email-fail": "Неуспешно изпращане на имейла",
"email-fail-text": "Възникна грешка при изпращането на имейла",
- "email-invalid": "Невалиден имейл",
- "email-invite": "Покани чрез имейл",
+ "email-invalid": "Невалиден е-маил",
+ "email-invite": "Покани чрез е-маил",
"email-invite-subject": "__inviter__ sent you an invitation",
"email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
"email-resetPassword-subject": "Reset your password on __siteName__",
@@ -294,7 +294,7 @@
"error-username-taken": "Това потребителско име е вече заето",
"error-email-taken": "Имейлът е вече зает",
"export-board": "Експортиране на Табло",
- "filter": "Филтър",
+ "filter": "Филтер",
"filter-cards": "Филтрирай картите",
"filter-clear": "Премахване на филтрите",
"filter-no-label": "без етикет",
@@ -303,15 +303,15 @@
"filter-on": "Има приложени филтри",
"filter-on-desc": "В момента филтрирате картите в това табло. Моля, натиснете тук, за да промените филтъра.",
"filter-to-selection": "Филтрирай избраните",
- "advanced-filter-label": "Advanced Filter",
+ "advanced-filter-label": "Напреден филтер",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Име",
"header-logo-title": "Назад към страницата с Вашите табла.",
"hide-system-messages": "Скриване на системните съобщения",
- "headerBarCreateBoardPopup-title": "Създай Табло",
- "home": "Начало",
+ "headerBarCreateBoardPopup-title": "Креирај Табло",
+ "home": "Почетна",
"import": "Импорт",
- "link": "Връзка",
+ "link": "Врска",
"import-board": "Импортирай Табло",
"import-board-c": "Импортирай Табло",
"import-board-title-trello": "Импорт на табло от Trello",
@@ -337,7 +337,7 @@
"joined": "присъедини",
"just-invited": "Бяхте поканени в това табло",
"keyboard-shortcuts": "Преки пътища с клавиатурата",
- "label-create": "Създай етикет",
+ "label-create": "Креирај етикет",
"label-default": "%s етикет (по подразбиране)",
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
"labels": "Етикети",
@@ -347,8 +347,8 @@
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
"leaveBoardPopup-title": "Leave Board ?",
"link-card": "Връзка към тази карта",
- "list-archive-cards": "Премести всички карти от този списък в Архива",
- "list-archive-cards-pop": "Това ще премахне всички карти от този Списък от Таблото. За да видите картите в Архива и да ги върнете натиснете на \"Меню\" > \"Архив\".",
+ "list-archive-cards": "Премести всички карти от този списък во Архива",
+ "list-archive-cards-pop": "Това ще премахне всички карти от този Списък от Таблото. За да видите картите во Архива и да ги върнете натиснете на \"Меню\" > \"Архива\".",
"list-move-cards": "Премести всички карти в този списък",
"list-select-cards": "Избери всички карти в този списък",
"set-color-list": "Set Color",
@@ -359,7 +359,7 @@
"listMorePopup-title": "Още",
"link-list": "Връзка към този списък",
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
- "list-delete-suggest-archive": "Можете да преместите списъка в Архива, за да го премахнете от Таблото и така да запазите активността в него.",
+ "list-delete-suggest-archive": "Можете да преместите списъка во Архива, за да го премахнете от Таблото и така да запазите активността в него.",
"lists": "Списъци",
"swimlanes": "Коридори",
"log-out": "Изход",
@@ -379,9 +379,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "Моите табла",
"name": "Име",
- "no-archived-cards": "Няма карти в Архива.",
- "no-archived-lists": "Няма списъци в Архива.",
- "no-archived-swimlanes": "Няма коридори в Архива.",
+ "no-archived-cards": "Няма карти во Архива.",
+ "no-archived-lists": "Няма списъци во Архива.",
+ "no-archived-swimlanes": "Няма коридори во Архива.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -401,7 +401,7 @@
"private": "Private",
"private-desc": "This board is private. Only people added to the board can view and edit it.",
"profile": "Профил",
- "public": "Public",
+ "public": "Јавна",
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
"quick-access-description": "Star a board to add a shortcut in this bar.",
"remove-cover": "Remove Cover",
@@ -461,7 +461,7 @@
"uploaded-avatar": "Качихте аватар",
"username": "Потребителско име",
"view-it": "View it",
- "warn-list-archived": "внимание: тази карта е в списък в Архива",
+ "warn-list-archived": "внимание: тази карта е в списък во Архива",
"watch": "Наблюдавай",
"watching": "Наблюдава",
"watching-info": "You will be notified of any change in this board",
@@ -494,12 +494,12 @@
"smtp-password": "Парола",
"smtp-tls": "TLS поддръжка",
"send-from": "От",
- "send-smtp-test": "Изпрати тестов имейл на себе си",
+ "send-smtp-test": "Изпрати тестов е-маил на себе си",
"invitation-code": "Invitation Code",
"email-invite-register-subject": "__inviter__ sent you an invitation",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
- "email-smtp-test-text": "Успешно изпратихте имейл",
+ "email-smtp-test-text": "Успешно изпратихте е-маил",
"error-invitation-code-not-exist": "Invitation code doesn't exist",
"error-notAuthorized": "You are not authorized to view this page.",
"outgoing-webhooks": "Outgoing Webhooks",
@@ -567,10 +567,10 @@
"no-parent": "Не показвай източника",
"activity-added-label": "добави етикет '%s' към %s",
"activity-removed-label": "премахна етикет '%s' от %s",
- "activity-delete-attach": "изтри прикачен файл от %s",
+ "activity-delete-attach": "изтри прикачен датотека от %s",
"activity-added-label-card": "добави етикет '%s'",
"activity-removed-label-card": "премахна етикет '%s'",
- "activity-delete-attach-card": "изтри прикачения файл",
+ "activity-delete-attach-card": "изтри прикачения датотека",
"activity-set-customfield": "set custom field '%s' to '%s' in %s",
"activity-unset-customfield": "unset custom field '%s' in %s",
"r-rule": "Правило",
@@ -592,7 +592,7 @@
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
- "r-archived": "Преместено в Архива",
+ "r-archived": "Преместено во Архива",
"r-unarchived": "Възстановено от Архива",
"r-a-card": "карта",
"r-when-a-label-is": "When a label is",
@@ -614,7 +614,7 @@
"r-top-of": "началото на",
"r-bottom-of": "края на",
"r-its-list": "списъка й",
- "r-archive": "Премести в Архива",
+ "r-archive": "Премести во Архива",
"r-unarchive": "Възстанови от Архива",
"r-card": "карта",
"r-add": "Добави",
@@ -643,7 +643,7 @@
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
- "r-d-archive": "Премести картата в Архива",
+ "r-d-archive": "Премести картата во Архива",
"r-d-unarchive": "Възстанови картата от Архива",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json
index 4d163ddf..c677bd87 100644
--- a/i18n/ru.i18n.json
+++ b/i18n/ru.i18n.json
@@ -18,7 +18,7 @@
"act-uncompleteChecklist": "вновь открыл контрольный список __checklist__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-addComment": "написал в карточке __card__: __comment__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-createBoard": "создал доску __board__",
- "act-createSwimlane": "created swimlane __swimlane__ to board __board__",
+ "act-createSwimlane": "создал дорожку __swimlane__ на доске __board__",
"act-createCard": "создал карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
"act-createCustomField": "создал поле __customField__ в карточке __card__ в списке __list__ на дорожке __swimlane__ доски __board__\n",
"act-createList": "добавил список __list__ на доску __board__",
diff --git a/models/cards.js b/models/cards.js
index be7e2b77..12488354 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -1384,6 +1384,9 @@ function cardMembers(userId, doc, fieldNames, modifier) {
activityType: 'joinMember',
boardId: doc.boardId,
cardId: doc._id,
+ memberId,
+ listId: doc.listId,
+ swimlaneId: doc.swimlaneId,
});
}
}
diff --git a/package.json b/package.json
index 81b0971e..f4e7d54c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "v2.56.0",
+ "version": "v2.57.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh
index 2618bda9..281806fd 100755
--- a/rebuild-wekan.sh
+++ b/rebuild-wekan.sh
@@ -72,8 +72,9 @@ do
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux";
# Debian, Ubuntu, Mint
- sudo apt-get install -y build-essential git curl wget
+ sudo apt-get install -y build-essential gcc g++ make git curl wget
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
+ sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "macOS";
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index 61b19d34..7a3b55d8 100644
--- a/sandstorm-pkgdef.capnp
+++ b/sandstorm-pkgdef.capnp
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
- appVersion = 258,
+ appVersion = 259,
# Increment this for every release.
- appMarketingVersion = (defaultText = "2.56.0~2019-03-27"),
+ appMarketingVersion = (defaultText = "2.57.0~2019-04-02"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,