Browse Source

Merge branch 'devel'

Lauri Ojansivu 7 years ago
parent
commit
82a6b4245c

+ 18 - 1
CHANGELOG.md

@@ -1,4 +1,21 @@
-# v1.23 2018-07-30
+# v1.24 2018-08-09 Wekan release
+
+This release add the following new features:
+
+- [Update node to v8.12.0 prerelease build](https://github.com/wekan/wekan/commit/04d7c47f4ca990311079be8dd6dc383448ee342f).
+
+and fixes the following bugs:
+
+- [Enable Wekan API by default, so that Export Board to JSON works](https://github.com/wekan/wekan/commit/b2eeff96977592deaeb23a8171fc3b13f8c6c5dc);
+- [Fix the flagging of dates](https://github.com/wekan/wekan/pull/1814);
+- [Use new WITH_API and Matomo env variables at Dockerfile](https://github.com/wekan/wekan/issues/1820);
+- For OpenShift compliance, [change](https://github.com/wekan/wekan/commit/53d545eeef7e796bd910f7cce666686ca05de544)
+  [run user](https://github.com/wekan/wekan/pull/1816)
+  and [Docker internal port to 8080](https://github.com/wekan/wekan/commit/95b21943ee7a9fa5a27efe5276307febc2fbad94).
+
+Thanks to GitHub users rjevnikar, tdemaret, xadagaras and xet7 for their contributions.
+
+# v1.23 2018-07-30 Wekan release
 
 This release tries to fix the following bugs:
 

+ 16 - 4
Dockerfile

@@ -10,12 +10,17 @@ ARG NPM_VERSION
 ARG FIBERS_VERSION
 ARG ARCHITECTURE
 ARG SRC_PATH
+ARG WITH_API
+ARG MATOMO_ADDRESS
+ARG MATOMO_SITE_ID
+ARG MATOMO_DO_NOT_TRACK
+ARG MATOMO_WITH_USERNAME
 
 # Set the environment variables (defaults where required)
 # DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
 # ENV BUILD_DEPS="paxctl"
 ENV BUILD_DEPS="apt-utils gnupg gosu wget curl bzip2 build-essential python git ca-certificates gcc-7"
-ENV NODE_VERSION ${NODE_VERSION:-v8.11.3}
+ENV NODE_VERSION ${NODE_VERSION:-v8.12.0}
 ENV METEOR_RELEASE ${METEOR_RELEASE:-1.6.0.1}
 ENV USE_EDGE ${USE_EDGE:-false}
 ENV METEOR_EDGE ${METEOR_EDGE:-1.5-beta.17}
@@ -23,6 +28,12 @@ ENV NPM_VERSION ${NPM_VERSION:-latest}
 ENV FIBERS_VERSION ${FIBERS_VERSION:-2.0.0}
 ENV ARCHITECTURE ${ARCHITECTURE:-linux-x64}
 ENV SRC_PATH ${SRC_PATH:-./}
+ENV WITH_API ${WITH_API:-true}
+ENV MATOMO_ADDRESS ${MATOMO_ADDRESS:-}
+ENV MATOMO_SITE_ID ${MATOMO_SITE_ID:-}
+ENV MATOMO_DO_NOT_TRACK ${MATOMO_DO_NOT_TRACK:-false}
+ENV MATOMO_WITH_USERNAME ${MATOMO_WITH_USERNAME:-true}
+
 
 # Copy the app to the image
 COPY ${SRC_PATH} /home/wekan/app
@@ -45,10 +56,10 @@ RUN \
     # Also see beginning of wekan/server/authentication.js
     #   import Fiber from "fibers";
     #   Fiber.poolSize = 1e9;
-    # Download node version 8.11.1 that has fix included, node binary copied from Sandstorm
+    # Download node version 8.12.0 prerelease that has fix included,
     # Description at https://releases.wekan.team/node.txt
     wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
-    echo "40e7990489c13a1ed1173d8fe03af258c6ed964b92a4bd59a0927ac5931054aa  node-v8.11.3-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
+    echo "1ed54adb8497ad8967075a0b5d03dd5d0a502be43d4a4d84e5af489c613d7795  node-v8.12.0-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
     \
     # Verify nodejs authenticity
     grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
@@ -144,7 +155,8 @@ RUN \
     rm -R /home/wekan/app_build && \
     rm /home/wekan/install_meteor.sh
 
-ENV PORT=80
+ENV PORT=8080
 EXPOSE $PORT
+USER wekan
 
 CMD ["node", "/build/main.js"]

+ 32 - 28
client/components/cards/cardDate.js

@@ -220,12 +220,16 @@ class CardReceivedDate extends CardDate {
   classes() {
     let classes = 'received-date ';
     const dueAt = this.data().dueAt;
-    if (dueAt) {
-      if (this.date.get().isBefore(this.now.get(), 'minute') &&
-          this.now.get().isBefore(dueAt)) {
-        classes += 'current';
-      }
-    }
+    const endAt = this.data().endAt;
+    const startAt = this.data().startAt;
+    const theDate = this.date.get();
+    // if dueAt, endAt and startAt exist & are > receivedAt, receivedAt doesn't need to be flagged
+    if (((startAt) && (theDate.isAfter(dueAt))) ||
+       ((endAt) && (theDate.isAfter(endAt))) ||
+       ((dueAt) && (theDate.isAfter(dueAt))))
+      classes += 'long-overdue';
+    else
+      classes += 'current';
     return classes;
   }
 
@@ -253,12 +257,17 @@ class CardStartDate extends CardDate {
   classes() {
     let classes = 'start-date' + ' ';
     const dueAt = this.data().dueAt;
-    if (dueAt) {
-      if (this.date.get().isBefore(this.now.get(), 'minute') &&
-          this.now.get().isBefore(dueAt)) {
-        classes += 'current';
-      }
-    }
+    const endAt = this.data().endAt;
+    const theDate = this.date.get();
+    const now = this.now.get();
+    // if dueAt or endAt exist & are > startAt, startAt doesn't need to be flagged
+    if (((endAt) && (theDate.isAfter(endAt))) ||
+       ((dueAt) && (theDate.isAfter(dueAt))))
+      classes += 'long-overdue';
+    else if (theDate.isBefore(now, 'minute'))
+      classes += 'almost-due';
+    else
+      classes += 'current';
     return classes;
   }
 
@@ -286,17 +295,15 @@ class CardDueDate extends CardDate {
   classes() {
     let classes = 'due-date' + ' ';
 
-    // if endAt exists & is < dueAt, dueAt doesn't need to be flagged
     const endAt = this.data().endAt;
     const theDate = this.date.get();
     const now = this.now.get();
-
-    if ((endAt !== 0) &&
-       (endAt !== null) &&
-       (endAt !== '') &&
-       (endAt !== undefined) &&
-       (theDate.isBefore(endAt)))
+    // if the due date is after the end date, green - done early
+    if ((endAt) && (theDate.isAfter(endAt)))
       classes += 'current';
+    // if there is an end date, don't need to flag the due date
+    else if (endAt)
+      classes += '';
     else if (now.diff(theDate, 'days') >= 2)
       classes += 'long-overdue';
     else if (now.diff(theDate, 'minute') >= 0)
@@ -330,15 +337,12 @@ class CardEndDate extends CardDate {
   classes() {
     let classes = 'end-date' + ' ';
     const dueAt = this.data.dueAt;
-    if (dueAt) {
-      const diff = dueAt.diff(this.date.get(), 'days');
-      if (diff >= 2)
-        classes += 'long-overdue';
-      else if (diff > 0)
-        classes += 'due';
-      else if (diff <= 0)
-        classes += 'current';
-    }
+    const theDate = this.date.get();
+    // if dueAt exists & is after endAt, endAt doesn't need to be flagged
+    if ((dueAt) && (theDate.isAfter(dueAt, 'minute')))
+      classes += 'long-overdue';
+    else
+      classes += 'current';
     return classes;
   }
 

+ 2 - 2
client/components/cards/cardDate.styl

@@ -43,12 +43,12 @@
   &.start-date
     time
       &::before
-        content: "\f08b"  // symbol: fa-sign-out
+        content: "\f251"  // symbol: fa-hourglass-start
 
   &.received-date
     time
       &::before
-        content: "\f251"  // symbol: fa-hourglass-start
+        content: "\f08b"  // symbol: fa-sign-out
 
   time
     &::before

+ 7 - 7
client/components/cards/cardDetails.jade

@@ -38,13 +38,6 @@ template(name="cardDetails")
         else
           a.js-start-date {{_ 'add'}}
 
-      .card-details-item.card-details-item-due
-        h3.card-details-item-title {{_ 'card-due'}}
-        if dueAt
-          +cardDueDate
-        else
-          a.js-due-date {{_ 'add'}}
-
       .card-details-item.card-details-item-end
         h3.card-details-item-title {{_ 'card-end'}}
         if endAt
@@ -52,6 +45,13 @@ template(name="cardDetails")
         else
           a.js-end-date {{_ 'add'}}
 
+      .card-details-item.card-details-item-due
+        h3.card-details-item-title {{_ 'card-due'}}
+        if dueAt
+          +cardDueDate
+        else
+          a.js-due-date {{_ 'add'}}
+
     .card-details-items
       .card-details-item.card-details-item-members
         h3.card-details-item-title {{_ 'members'}}

+ 13 - 2
docker-compose.yml

@@ -33,11 +33,22 @@ services:
         - METEOR_EDGE=${METEOR_EDGE}
         - USE_EDGE=${USE_EDGE}
     ports:
-      - 80:80
+      - 80:8080
     environment:
       - MONGO_URL=mongodb://wekandb:27017/wekan
       - ROOT_URL=http://localhost
-      - WITH_API=false
+      # Wekan Export Board works when WITH_API='true'.
+      # If you disable Wekan API with 'false', Export Board does not work.
+      - WITH_API=true
+      # Optional: Integration with Matomo https://matomo.org that is installed to your server
+      # The address of the server where Matomo is hosted:
+      # - MATOMO_ADDRESS='https://example.com/matomo'
+      # The value of the site ID given in Matomo server for Wekan
+      # - MATOMO_SITE_ID='123456789'
+      # The option do not track which enables users to not be tracked by matomo"
+      # - MATOMO_DO_NOT_TRACK='false'
+      # The option that allows matomo to retrieve the username:
+      # - MATOMO_WITH_USERNAME='true'
     depends_on:
       - wekandb
 

+ 21 - 21
i18n/fa.i18n.json

@@ -26,7 +26,7 @@
     "act-withBoardTitle": "[Wekan] __board__",
     "act-withCardTitle": "[__board__] __card__",
     "actions": "اعمال",
-    "activities": "فعالیت ها",
+    "activities": "فعالیتها",
     "activity": "فعالیت",
     "activity-added": "%s به %s اضافه شد",
     "activity-archived": "%s به سطل زباله منتقل شد",
@@ -103,7 +103,7 @@
     "boardMenuPopup-title": "منوی تخته",
     "boards": "تخته‌ها",
     "board-view": "نمایش تخته",
-    "board-view-cal": "Calendar",
+    "board-view-cal": "تقویم",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "فهرست‌ها",
     "bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
@@ -113,8 +113,8 @@
     "card-delete-notice": "حذف دائمی. تمامی موارد مرتبط با این کارت از بین خواهند رفت.",
     "card-delete-pop": "همه اقدامات از این پردازه (خوراک) حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
     "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
-    "card-due": "ناشی از",
-    "card-due-on": "مقتضی بر",
+    "card-due": "تا",
+    "card-due-on": "تا",
     "card-spent": "زمان صرف شده",
     "card-edit-attachments": "ویرایش ضمائم",
     "card-edit-custom-fields": "ویرایش فیلدهای شخصی",
@@ -169,7 +169,7 @@
     "comment-only-desc": "فقط می‌تواند روی کارت‌ها نظر دهد.",
     "computer": "رایانه",
     "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
-    "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
+    "confirm-checklist-delete-dialog": "مطمئنا چک لیست پاک شود؟",
     "copy-card-link-to-clipboard": "درج پیوند کارت در حافظه",
     "copyCardPopup-title": "کپی کارت",
     "copyChecklistToManyCardsPopup-title": "کپی قالب کارت به کارت‌های متعدد",
@@ -186,10 +186,10 @@
     "custom-field-checkbox": "جعبه انتخابی",
     "custom-field-date": "تاریخ",
     "custom-field-dropdown": "لیست افتادنی",
-    "custom-field-dropdown-none": "(none)",
+    "custom-field-dropdown-none": "(هیچ)",
     "custom-field-dropdown-options": "لیست امکانات",
     "custom-field-dropdown-options-placeholder": "کلید Enter را جهت افزودن امکانات بیشتر فشار دهید",
-    "custom-field-dropdown-unknown": "(unknown)",
+    "custom-field-dropdown-unknown": "(ناشناخته)",
     "custom-field-number": "عدد",
     "custom-field-text": "متن",
     "custom-fields": "فیلدهای شخصی",
@@ -211,7 +211,7 @@
     "edit-wip-limit": "Edit WIP Limit",
     "soft-wip-limit": "Soft WIP Limit",
     "editCardStartDatePopup-title": "تغییر تاریخ آغاز",
-    "editCardDueDatePopup-title": "تغییر تاریخ بدلیل",
+    "editCardDueDatePopup-title": "تغییر تاریخ پایان",
     "editCustomFieldPopup-title": "ویرایش فیلد",
     "editCardSpentTimePopup-title": "تغییر زمان صرف شده",
     "editLabelPopup-title": "تغیر برچسب",
@@ -253,7 +253,7 @@
     "filter-on": "صافی ـFilterـ فعال است",
     "filter-on-desc": "شما صافی ـFilterـ برای کارتهای تخته را روشن کرده اید. جهت ویرایش کلیک نمایید.",
     "filter-to-selection": "صافی ـFilterـ برای موارد انتخابی",
-    "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": "بازگشت به صفحه تخته.",
@@ -304,7 +304,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": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.",
+    "list-delete-suggest-archive": "با انتقال سیاهه به سطل ذباله می‌توانید ضمن حفظ فعالیت، سیاهه را از تخته حذف کنید.",
     "lists": "لیست ها",
     "swimlanes": "Swimlanes",
     "log-out": "خروج",
@@ -324,8 +324,8 @@
     "muted-info": "شما هیچگاه از تغییرات این تخته مطلع نخواهید شد",
     "my-boards": "تخته‌های من",
     "name": "نام",
-    "no-archived-cards": "No cards in Recycle Bin.",
-    "no-archived-lists": "No lists in Recycle Bin.",
+    "no-archived-cards": "کارتی در سطل ذباله نیست.",
+    "no-archived-lists": "سیاهه‌ای در سطل ذباله نیست.",
     "no-archived-swimlanes": "No swimlanes in Recycle Bin.",
     "no-results": "بدون نتیجه",
     "normal": "عادی",
@@ -396,7 +396,7 @@
     "title": "عنوان",
     "tracking": "پیگردی",
     "tracking-info": "شما از هرگونه تغییر در کارتهایی که بعنوان ایجاد کننده ویا عضو آن هستید، آگاه خواهید شد",
-    "type": "Type",
+    "type": "نوع",
     "unassign-member": "عدم انتصاب کاربر",
     "unsaved-description": "شما توضیحات ذخیره نشده دارید.",
     "unwatch": "عدم دیده بانی",
@@ -405,7 +405,7 @@
     "uploaded-avatar": "تصویر ارسال شد",
     "username": "نام کاربری",
     "view-it": "مشاهده",
-    "warn-list-archived": "warning: this card is in an list at Recycle Bin",
+    "warn-list-archived": "هشدار: این کارت در سیاهه‌ای داخل سطح ذباله است",
     "watch": "دیده بانی",
     "watching": "درحال دیده بانی",
     "watching-info": "شما از هر تغییری دراین تخته آگاه خواهید شد",
@@ -466,7 +466,7 @@
     "no": "خیر",
     "accounts": "حساب‌ها",
     "accounts-allowEmailChange": "اجازه تغییر رایانامه",
-    "accounts-allowUserNameChange": "Allow Username Change",
+    "accounts-allowUserNameChange": "اجازه تغییر نام کاربری",
     "createdAt": "ساخته شده در",
     "verified": "معتبر",
     "active": "فعال",
@@ -476,15 +476,15 @@
     "card-end-on": "پایان در",
     "editCardReceivedDatePopup-title": "تغییر تاریخ رسید",
     "editCardEndDatePopup-title": "تغییر تاریخ پایان",
-    "assigned-by": "Assigned By",
-    "requested-by": "Requested By",
+    "assigned-by": "محول شده توسط",
+    "requested-by": "تقاضا شده توسط",
     "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
     "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
-    "boardDeletePopup-title": "Delete Board?",
-    "delete-board": "Delete Board",
+    "boardDeletePopup-title": "حذف تخته؟",
+    "delete-board": "حذف تخته",
     "default-subtasks-board": "Subtasks for __board__ board",
-    "default": "Default",
-    "queue": "Queue",
+    "default": "پیش‌فرض",
+    "queue": "صف",
     "subtask-settings": "Subtasks Settings",
     "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
     "show-subtasks-field": "Cards can have subtasks",

+ 8 - 8
i18n/he.i18n.json

@@ -50,7 +50,7 @@
     "add-board": "הוספת לוח",
     "add-card": "הוספת כרטיס",
     "add-swimlane": "הוספת מסלול",
-    "add-subtask": "Add Subtask",
+    "add-subtask": "הוסף תת משימה",
     "add-checklist": "הוספת רשימת מטלות",
     "add-checklist-item": "הוספת פריט לרשימת משימות",
     "add-cover": "הוספת כיסוי",
@@ -103,7 +103,7 @@
     "boardMenuPopup-title": "תפריט לוח",
     "boards": "לוחות",
     "board-view": "תצוגת לוח",
-    "board-view-cal": "Calendar",
+    "board-view-cal": "לוח שנה",
     "board-view-swimlanes": "מסלולים",
     "board-view-lists": "רשימות",
     "bucket-example": "כמו למשל „רשימת המשימות“",
@@ -145,7 +145,7 @@
     "changePasswordPopup-title": "החלפת ססמה",
     "changePermissionsPopup-title": "שינוי הרשאות",
     "changeSettingsPopup-title": "שינוי הגדרות",
-    "subtasks": "Subtasks",
+    "subtasks": "תתי משימות",
     "checklists": "רשימות",
     "click-to-star": "יש ללחוץ להוספת הלוח למועדפים.",
     "click-to-unstar": "יש ללחוץ להסרת הלוח מהמועדפים.",
@@ -168,8 +168,8 @@
     "comment-only": "הערה בלבד",
     "comment-only-desc": "ניתן להעיר על כרטיסים בלבד.",
     "computer": "מחשב",
-    "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
-    "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
+    "confirm-subtask-delete-dialog": "האם למחוק את תת המשימה?",
+    "confirm-checklist-delete-dialog": "האם אתה בטוח שברצונך למחוק את רשימת המשימות?",
     "copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים",
     "copyCardPopup-title": "העתק כרטיס",
     "copyChecklistToManyCardsPopup-title": "העתקת תבנית רשימת מטלות למגוון כרטיסים",
@@ -483,9 +483,9 @@
     "boardDeletePopup-title": "למחוק את הלוח?",
     "delete-board": "מחיקת לוח",
     "default-subtasks-board": "Subtasks for __board__ board",
-    "default": "Default",
-    "queue": "Queue",
-    "subtask-settings": "Subtasks Settings",
+    "default": "ברירת מחדל",
+    "queue": "תור",
+    "subtask-settings": "הגדרות תתי משימות",
     "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
     "show-subtasks-field": "Cards can have subtasks",
     "deposit-subtasks-board": "Deposit subtasks to this board:",

File diff suppressed because it is too large
+ 25 - 26
i18n/ka.i18n.json


+ 11 - 11
i18n/ru.i18n.json

@@ -8,9 +8,9 @@
     "act-addComment": "прокомментировал __card__: __comment__",
     "act-createBoard": "создал __board__",
     "act-createCard": "добавил __card__ в __list__",
-    "act-createCustomField": "Расширенный фильтр позволяет написать строку, содержащую следующие операторы: ==! = <=> = && || () Пространство используется как разделитель между Операторами. Вы можете фильтровать все пользовательские поля, введя их имена и значения. Например: Field1 == Value1. Примечание. Если поля или значения содержат пробелы, вам необходимо инкапсулировать их в одинарные кавычки. Например: «Поле 1» == «Значение 1». Также вы можете комбинировать несколько условий. Например: F1 == V1 || F1 = V2. Обычно все операторы интерпретируются слева направо. Вы можете изменить порядок, разместив скобки. Например: F1 == V1 и (F2 == V2 || F2 == V3)",
-    "act-createList": "добавил __list__ для __board__",
-    "act-addBoardMember": "добавил __member__ в __board__",
+    "act-createCustomField": "создано настраиваемое поле __customField__",
+    "act-createList": "добавил __list__ на __board__",
+    "act-addBoardMember": "добавил __member__ на __board__",
     "act-archivedBoard": "Доска __board__ перемещена в Корзину",
     "act-archivedCard": "Карточка __card__ перемещена в Корзину",
     "act-archivedList": "Список __list__ перемещён в Корзину",
@@ -42,7 +42,7 @@
     "activity-removed": "удалил %s из %s",
     "activity-sent": "отправил %s в %s",
     "activity-unjoined": "вышел из %s",
-    "activity-subtask-added": "added subtask to %s",
+    "activity-subtask-added": "добавил подзадачу в %s",
     "activity-checklist-added": "добавил контрольный список в %s",
     "activity-checklist-item-added": "добавил пункт контрольного списка в '%s' в карточке %s",
     "add": "Создать",
@@ -50,7 +50,7 @@
     "add-board": "Добавить доску",
     "add-card": "Добавить карту",
     "add-swimlane": "Добавить дорожку",
-    "add-subtask": "Add Subtask",
+    "add-subtask": "Добавить подзадачу",
     "add-checklist": "Добавить контрольный список",
     "add-checklist-item": "Добавить пункт в контрольный список",
     "add-cover": "Прикрепить",
@@ -103,7 +103,7 @@
     "boardMenuPopup-title": "Меню доски",
     "boards": "Доски",
     "board-view": "Вид доски",
-    "board-view-cal": "Calendar",
+    "board-view-cal": "Календарь",
     "board-view-swimlanes": "Дорожки",
     "board-view-lists": "Списки",
     "bucket-example": "Например “Список дел”",
@@ -145,7 +145,7 @@
     "changePasswordPopup-title": "Изменить пароль",
     "changePermissionsPopup-title": "Изменить настройки доступа",
     "changeSettingsPopup-title": "Изменить Настройки",
-    "subtasks": "Subtasks",
+    "subtasks": "Подзадачи",
     "checklists": "Контрольные списки",
     "click-to-star": "Добавить в  «Избранное»",
     "click-to-unstar": "Удалить из «Избранного»",
@@ -168,8 +168,8 @@
     "comment-only": "Только комментирование",
     "comment-only-desc": "Может комментировать только карточки.",
     "computer": "Загрузить с компьютера",
-    "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
-    "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
+    "confirm-subtask-delete-dialog": "Вы уверены, что хотите удалить подзадачу?",
+    "confirm-checklist-delete-dialog": "Вы уверены, что хотите удалить чеклист?",
     "copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
     "copyCardPopup-title": "Копировать карточку",
     "copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
@@ -482,10 +482,10 @@
     "delete-board-confirm-popup": "Все списки, карточки, ярлыки и действия будут удалены, и вы не сможете восстановить содержимое доски. Отменить нельзя.",
     "boardDeletePopup-title": "Удалить доску?",
     "delete-board": "Удалить доску",
-    "default-subtasks-board": "Subtasks for __board__ board",
+    "default-subtasks-board": "Подзадача для доски __board__ ",
     "default": "Default",
     "queue": "Queue",
-    "subtask-settings": "Subtasks Settings",
+    "subtask-settings": "Настройки подзадач",
     "boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
     "show-subtasks-field": "Cards can have subtasks",
     "deposit-subtasks-board": "Deposit subtasks to this board:",

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "wekan",
-  "version": "1.23.0",
+  "version": "1.24.0",
   "description": "The open-source Trello-like kanban",
   "private": true,
   "scripts": {

+ 2 - 2
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 = 108,
+    appVersion = 109,
     # Increment this for every release.
 
-    appMarketingVersion = (defaultText = "1.23.0~2018-07-30"),
+    appMarketingVersion = (defaultText = "1.24.0~2018-08-09"),
     # Human-readable presentation of the app version.
 
     minUpgradableAppVersion = 0,

+ 5 - 3
snap-src/bin/config

@@ -49,19 +49,21 @@ DEFAULT_CADDY_BIND_PORT="3001"
 KEY_CADDY_BIND_PORT="caddy-bind-port"
 
 DESCRIPTION_WITH_API="Enable/disable the api of wekan"
-DEFAULT_WITH_API="false"
+DEFAULT_WITH_API="true"
 KEY_WITH_API="with-api"
 
 DESCRIPTION_MATOMO_ADDRESS="The address of the server where matomo is hosted"
+DEFAULT_MATOMO_ADDRESS=""
 KEY_MATOMO_ADDRESS="matomo-address"
 
 DESCRIPTION_MATOMO_SITE_ID="The value of the site ID given in matomo server for wekan"
+DEFAULT_MATOMO_SITE_ID=""
 KEY_MATOMO_SITE_ID="matomo-site-id"
 
 DESCRIPTION_MATOMO_DO_NOT_TRACK="The option do not track which enables users to not be tracked by matomo"
-DEFAULT_CADDY_BIND_PORT="false"
+DEFAULT_MATOMO_DO_NOT_TRACK="false"
 KEY_MATOMO_DO_NOT_TRACK="matomo-do-not-track"
 
 DESCRIPTION_MATOMO_WITH_USERNAME="The option that allows matomo to retrieve the username"
-DEFAULT_CADDY_BIND_PORT="false"
+DEFAULT_MATOMO_WITH_USERNAME="false"
 KEY_MATOMO_WITH_USERNAME="matomo-with-username"

+ 2 - 2
snapcraft.yaml

@@ -108,9 +108,9 @@ parts:
             # Also see beginning of wekan/server/authentication.js
             #   import Fiber from "fibers";
             #   Fiber.poolSize = 1e9;
-            # Download node version 8.11.3 that has fix included, node binary copied from Sandstorm
+            # Download node version 8.12.0 prerelease build,
             # Description at https://releases.wekan.team/node.txt
-            echo "5263dc1c571885921179b11a1c6eb9ca82a95a89b69c15b366f885e9b5a32d66  node" >> node-SHASUMS256.txt.asc
+            echo "375bd8db50b9c692c0bbba6e96d4114cd29bee3770f901c1ff2249d1038f1348  node" >> node-SHASUMS256.txt.asc
             curl https://releases.wekan.team/node -o node
             # Verify Fibers patched node authenticity
             echo "Fibers 100% CPU issue patched node authenticity:"

Some files were not shown because too many files changed in this diff