Forráskód Böngészése

Merge branch 'upstream-devel' into calendar

Nicu Tofan 7 éve
szülő
commit
243797d2e9
55 módosított fájl, 606 hozzáadás és 38 törlés
  1. 49 1
      CHANGELOG.md
  2. 1 2
      Dockerfile
  3. 1 1
      client/components/cards/cardDate.js
  4. 3 3
      client/components/cards/minicard.styl
  5. 1 1
      client/components/settings/invitationCode.js
  6. 2 2
      client/components/sidebar/sidebarFilters.jade
  7. 1 1
      client/components/users/userAvatar.jade
  8. 1 0
      i18n/ar.i18n.json
  9. 1 0
      i18n/bg.i18n.json
  10. 1 0
      i18n/br.i18n.json
  11. 1 0
      i18n/ca.i18n.json
  12. 1 0
      i18n/cs.i18n.json
  13. 1 0
      i18n/de.i18n.json
  14. 1 0
      i18n/el.i18n.json
  15. 1 0
      i18n/en-GB.i18n.json
  16. 1 0
      i18n/eo.i18n.json
  17. 1 0
      i18n/es-AR.i18n.json
  18. 1 0
      i18n/es.i18n.json
  19. 1 0
      i18n/eu.i18n.json
  20. 1 0
      i18n/fa.i18n.json
  21. 1 0
      i18n/fi.i18n.json
  22. 1 0
      i18n/fr.i18n.json
  23. 1 0
      i18n/gl.i18n.json
  24. 1 0
      i18n/he.i18n.json
  25. 1 0
      i18n/hu.i18n.json
  26. 1 0
      i18n/hy.i18n.json
  27. 1 0
      i18n/id.i18n.json
  28. 1 0
      i18n/ig.i18n.json
  29. 1 0
      i18n/it.i18n.json
  30. 1 0
      i18n/ja.i18n.json
  31. 479 0
      i18n/ka.i18n.json
  32. 1 0
      i18n/km.i18n.json
  33. 1 0
      i18n/ko.i18n.json
  34. 1 0
      i18n/lv.i18n.json
  35. 1 0
      i18n/mn.i18n.json
  36. 1 0
      i18n/nb.i18n.json
  37. 1 0
      i18n/nl.i18n.json
  38. 1 0
      i18n/pl.i18n.json
  39. 1 0
      i18n/pt-BR.i18n.json
  40. 1 0
      i18n/pt.i18n.json
  41. 1 0
      i18n/ro.i18n.json
  42. 1 0
      i18n/ru.i18n.json
  43. 1 0
      i18n/sr.i18n.json
  44. 14 13
      i18n/sv.i18n.json
  45. 1 0
      i18n/ta.i18n.json
  46. 1 0
      i18n/th.i18n.json
  47. 1 0
      i18n/tr.i18n.json
  48. 1 0
      i18n/uk.i18n.json
  49. 1 0
      i18n/vi.i18n.json
  50. 1 0
      i18n/zh-CN.i18n.json
  51. 1 0
      i18n/zh-TW.i18n.json
  52. 1 1
      package.json
  53. 2 2
      sandstorm-pkgdef.capnp
  54. 9 9
      server/migrations.js
  55. 1 2
      snapcraft.yaml

+ 49 - 1
CHANGELOG.md

@@ -1,15 +1,63 @@
 # Upcoming Wekan release
 
+This release fixes the following bugs:
+
+- [Fix warning about missing space in jade file](https://github.com/wekan/wekan/commit/067aef9de948ef0cb6037d52602100b00d214706);
+- Revert [Fix vertical align of user avatar initials](https://github.com/wekan/wekan/pull/1714), so that [initials are again
+  visible](https://github.com/wekan/wekan/commit/122a61b3333fb77c0f08bbdc6fe0d3c2f6db97df);
+- Fix lint warning: [EditCardDate is assigned a value but never used
+  no-unused-vars](https://github.com/wekan/wekan/commit/dd324aa581bed7ea31f20968c6b596f373e7054f).
+
+Thanks to GitHub users pravdomil and xet7 for their contributions.
+
+# v1.11 2018-06-30 Wekan release
+
+This release fixes the following bugs:
+
+* [Remove card shadow](https://github.com/wekan/wekan/pull/1726), Wekan users now prefer not to have it;
+* [Revert](https://github.com/wekan/wekan/commit/928d88cfe1da4187797519c929cd2fdd9ffe9c2e) previous
+  [Less margin-bottom after minicard](https://github.com/wekan/wekan/pull/1713).
+
+Thanks to GitHub users pravdomil and xet7 for their contributions.
+
+# v1.10 2018-06-28 Wekan release
+
+This release fixes the following bugs:
+
+* Fix migration error "TypeError: Checklists.foreach" at [Snap](https://github.com/wekan/wekan-snap/issues/51),
+  [Docker](https://github.com/wekan/wekan/issues/1736) etc.
+
+Thanks to GitHub users Jubi94, kestrelhawk and xet7 for their contributions.
+
+# v1.09 2018-06-28 Wekan release
+
+This release adds the following new features:
+
+* [Calendar](https://github.com/wekan/wekan/pull/1728). Click Lists / Swimlanes / Calendar.
+
+and fixes the following bugs:
+
+* To fix ["title is required"](https://github.com/wekan/wekan/issues/1576) fix only
+  [add-checklist-items and revert all other migration changes](https://github.com/wekan/wekan/issues/1734);
+* [Restore invitation code logic](https://github.com/wekan/wekan/pull/1732). Please test and add comment
+  to those invitation code issues that this fixes. 
+
+Thanks to GitHub users TNick and xet7 for their contributions.
+
+# v1.08 2018-06-27 Wekan release
+
 This release adds the following new features:
 
 * [Add more card inner shadow](https://github.com/wekan/wekan/commit/6a587299b80a49fce0789628ff65885b5ed2c837);
 * [Less margin-bottom after minicard](https://github.com/wekan/wekan/pull/1713);
+* Updated newest node fork binary from Sandstorm to Wekan, see https://releases.wekan.team/node.txt
+* Add Georgian language.
 
 and fixes the following bugs:
 
 * [Fix typo in English translation](https://github.com/wekan/wekan/pull/1710);
 * [Fix vertical align of user avatar initials](https://github.com/wekan/wekan/pull/1714);
-* [Submit inline form on click outside]https://github.com/wekan/wekan/pull/1717), fixes
+* [Submit inline form on click outside](https://github.com/wekan/wekan/pull/1717), fixes
   ["You have an unsaved description" doesn't go away after saving](https://github.com/wekan/wekan/issues/1287);
 * [Fix "Error: title is required" by removing find() from all of migrations](https://github.com/wekan/wekan/commit/97922c90cb42be6c6615639bb164173748982f56).
 

+ 1 - 2
Dockerfile

@@ -47,9 +47,8 @@ RUN \
     #   Fiber.poolSize = 1e9;
     # Download node version 8.11.1 that has fix included, node binary copied from Sandstorm
     # Description at https://releases.wekan.team/node.txt
-    # SHA256SUM: 18c99d5e79e2fe91e75157a31be30e5420787213684d4048eb91e602e092725d
     wget https://releases.wekan.team/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
-    echo "509e79f1bfccc849b65bd3f207a56095dfa608f17502997e844fa9c9d01e6c20  node-v8.11.1-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
+    echo "308d0caaef0a1da3e98d1a1615016aad9659b3caf31d0f09ced20cabedb8acbf  node-v8.11.1-linux-x64.tar.gz" >> SHASUMS256.txt.asc && \
     \
     # Verify nodejs authenticity
     grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \

+ 1 - 1
client/components/cards/cardDate.js

@@ -1,5 +1,5 @@
 // Edit received, start, due & end dates
-const EditCardDate = BlazeComponent.extendComponent({
+BlazeComponent.extendComponent({
   template() {
     return 'editCardDate';
   },

+ 3 - 3
client/components/cards/minicard.styl

@@ -5,11 +5,11 @@
   position: relative
   display: flex
   align-items: center
-  margin-bottom: 2px
+  margin-bottom: 9px
 
   &.placeholder
     background: darken(white, 20%)
-    border-radius: 2px
+    border-radius: 9px
 
   &.ui-sortable-helper
     cursor: grabbing
@@ -37,7 +37,7 @@
   flex-wrap: wrap
   background-color: #fff
   min-height: 20px
-  box-shadow: 0 0px 16px rgba(0,0,0,0.15) inset
+  box-shadow: 0 1px 2px rgba(0,0,0,.15)
   border-radius: 2px
   color: #4d4d4d
   overflow: hidden

+ 1 - 1
client/components/settings/invitationCode.js

@@ -1,6 +1,6 @@
 Template.invitationCode.onRendered(() => {
   const setting = Settings.findOne();
-  if (setting || setting.disableRegistration) {
+  if (!setting || !setting.disableRegistration) {
     $('#invitationcode').hide();
   }
 });

+ 2 - 2
client/components/sidebar/sidebarFilters.jade

@@ -52,9 +52,9 @@ template(name="filterSidebar")
       li(class="{{#if Filter.customFields.isSelected _id}}active{{/if}}")
         a.name.js-toggle-custom-fields-filter
           span.sidebar-list-item-description
-            {{ name }}
+            | {{ name }}
           if Filter.customFields.isSelected _id
-              i.fa.fa-check
+            i.fa.fa-check
   hr
   span {{_ 'advanced-filter-label'}}
   input.js-field-advanced-filter(type="text")

+ 1 - 1
client/components/users/userAvatar.jade

@@ -17,7 +17,7 @@ template(name="userAvatar")
 
 template(name="userAvatarInitials")
   svg.avatar.avatar-initials(viewBox="0 0 {{viewPortWidth}} 15")
-    text(x="50%" y="50%" text-anchor="middle" alignment-baseline="central")= initials
+    text(x="50%" y="13" text-anchor="middle")= initials
 
 template(name="userPopup")
   .board-member-menu

+ 1 - 0
i18n/ar.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "قائمة اللوحة",
     "boards": "لوحات",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "القائمات",
     "bucket-example": "مثل « todo list » على سبيل المثال",

+ 1 - 0
i18n/bg.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Меню на Таблото",
     "boards": "Табла",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Коридори",
     "board-view-lists": "Списъци",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/br.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/ca.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menú del tauler",
     "boards": "Taulers",
     "board-view": "Visió del tauler",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Carrils de Natació",
     "board-view-lists": "Llistes",
     "bucket-example": "Igual que “Bucket List”,  per exemple",

+ 1 - 0
i18n/cs.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menu tabla",
     "boards": "Tabla",
     "board-view": "Náhled tabla",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Seznamy",
     "bucket-example": "Například \"Než mě odvedou\"",

+ 1 - 0
i18n/de.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Boardmenü",
     "boards": "Boards",
     "board-view": "Boardansicht",
+    "board-view-cal": "Kalender",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Listen",
     "bucket-example": "z.B. \"Löffelliste\"",

+ 1 - 0
i18n/el.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Λίστες",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/en-GB.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/eo.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Listoj",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/es-AR.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menú del Tablero",
     "boards": "Tableros",
     "board-view": "Vista de Tablero",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Calles",
     "board-view-lists": "Listas",
     "bucket-example": "Como \"Lista de Contenedores\" por ejemplo",

+ 1 - 0
i18n/es.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menú del tablero",
     "boards": "Tableros",
     "board-view": "Vista del tablero",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Carriles",
     "board-view-lists": "Listas",
     "bucket-example": "Como “Cosas por hacer” por ejemplo",

+ 1 - 0
i18n/eu.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Arbelaren menua",
     "boards": "Arbelak",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Zerrendak",
     "bucket-example": "Esaterako \"Pertz zerrenda\"",

+ 1 - 0
i18n/fa.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "منوی تخته",
     "boards": "تخته‌ها",
     "board-view": "نمایش تخته",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "فهرست‌ها",
     "bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",

+ 1 - 0
i18n/fi.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Taulu valikko",
     "boards": "Taulut",
     "board-view": "Taulu näkymä",
+    "board-view-cal": "Kalenteri",
     "board-view-swimlanes": "Swimlanet",
     "board-view-lists": "Listat",
     "bucket-example": "Kuten “Laatikko lista” esimerkiksi",

+ 1 - 0
i18n/fr.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menu du tableau",
     "boards": "Tableaux",
     "board-view": "Vue du tableau",
+    "board-view-cal": "Calendrier",
     "board-view-swimlanes": "Couloirs",
     "board-view-lists": "Listes",
     "bucket-example": "Comme « todo list » par exemple",

+ 1 - 0
i18n/gl.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Taboleiros",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Listas",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/he.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "תפריט לוח",
     "boards": "לוחות",
     "board-view": "תצוגת לוח",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "מסלולים",
     "board-view-lists": "רשימות",
     "bucket-example": "כמו למשל „רשימת המשימות“",

+ 1 - 0
i18n/hu.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Tábla menü",
     "boards": "Táblák",
     "board-view": "Tábla nézet",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Listák",
     "bucket-example": "Mint például „Bakancslista”",

+ 1 - 0
i18n/hy.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/id.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menu Panel",
     "boards": "Panel",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Daftar",
     "bucket-example": "Contohnya seperti “Bucket List” ",

+ 1 - 0
i18n/ig.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/it.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menu bacheca",
     "boards": "Bacheche",
     "board-view": "Visualizza bacheca",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Corsie",
     "board-view-lists": "Liste",
     "bucket-example": "Per esempio come \"una lista di cose da fare\"",

+ 1 - 0
i18n/ja.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "ボードメニュー",
     "boards": "ボード",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "スイムレーン",
     "board-view-lists": "リスト",
     "bucket-example": "例:バケットリスト",

+ 479 - 0
i18n/ka.i18n.json

@@ -0,0 +1,479 @@
+{
+    "accept": "Accept",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "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-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createCustomField": "created custom field __customField__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "__board__ moved to Recycle Bin",
+    "act-archivedCard": "__card__ moved to Recycle Bin",
+    "act-archivedList": "__list__ moved to Recycle Bin",
+    "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin",
+    "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": "%s moved to Recycle Bin",
+    "activity-attached": "attached %s to %s",
+    "activity-created": "created %s",
+    "activity-customfield-created": "created custom field %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": "Move to Recycle Bin",
+    "archive-all": "Move All to Recycle Bin",
+    "archive-board": "Move Board to Recycle Bin",
+    "archive-card": "Move Card to Recycle Bin",
+    "archive-list": "Move List to Recycle Bin",
+    "archive-swimlane": "Move Swimlane to Recycle Bin",
+    "archive-selection": "Move selection to Recycle Bin",
+    "archiveBoardPopup-title": "Move Board to Recycle Bin?",
+    "archived-items": "Recycle Bin",
+    "archived-boards": "Boards in Recycle Bin",
+    "restore-board": "Restore Board",
+    "no-archived-boards": "No Boards in Recycle Bin.",
+    "archives": "Recycle Bin",
+    "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-cal": "Calendar",
+    "board-view-swimlanes": "Swimlanes",
+    "board-view-lists": "Lists",
+    "bucket-example": "Like “Bucket List” for example",
+    "cancel": "Cancel",
+    "card-archived": "This card is moved to Recycle Bin.",
+    "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 move a card to Recycle Bin 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-custom-fields": "Edit custom fields",
+    "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",
+    "cardCustomField-datePopup-title": "Change date",
+    "cardCustomFieldsPopup-title": "Edit custom fields",
+    "cardDeletePopup-title": "Delete Card?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Labels",
+    "cardMembersPopup-title": "Members",
+    "cardMorePopup-title": "More",
+    "cards": "Cards",
+    "cards-count": "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 “Recycle Bin” 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",
+    "createCustomField": "Create Field",
+    "createCustomFieldPopup-title": "Create Field",
+    "current": "current",
+    "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
+    "custom-field-checkbox": "Checkbox",
+    "custom-field-date": "Date",
+    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown-none": "(none)",
+    "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": "Number",
+    "custom-field-text": "Text",
+    "custom-fields": "Custom Fields",
+    "date": "Date",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Delete",
+    "deleteCustomFieldPopup-title": "Delete Custom Field?",
+    "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",
+    "editCustomFieldPopup-title": "Edit Field",
+    "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-no-custom-fields": "No Custom Fields",
+    "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",
+    "advanced-filter-label": "Advanced Filter",
+    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
+    "fullname": "Full Name",
+    "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": "Move all cards in this list to Recycle Bin",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
+    "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 move a list to Recycle Bin 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 cards in Recycle Bin.",
+    "no-archived-lists": "No lists in Recycle Bin.",
+    "no-archived-swimlanes": "No swimlanes in Recycle Bin.",
+    "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.",
+    "type": "Type",
+    "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 list at Recycle Bin",
+    "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",
+    "show-field-on-card": "Show this field on card",
+    "yes": "Yes",
+    "no": "No",
+    "accounts": "Accounts",
+    "accounts-allowEmailChange": "Allow Email Change",
+    "accounts-allowUserNameChange": "Allow Username Change",
+    "createdAt": "Created at",
+    "verified": "Verified",
+    "active": "Active",
+    "card-received": "Received",
+    "card-received-on": "Received on",
+    "card-end": "End",
+    "card-end-on": "Ends on",
+    "editCardReceivedDatePopup-title": "Change received date",
+    "editCardEndDatePopup-title": "Change end date",
+    "assigned-by": "Assigned By",
+    "requested-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"
+}

+ 1 - 0
i18n/km.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/ko.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "보드 메뉴",
     "boards": "보드",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "목록들",
     "bucket-example": "예: “프로젝트 이름“ 입력",

+ 1 - 0
i18n/lv.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/mn.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/nb.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Tavlemeny",
     "boards": "Tavler",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Som \"Bucket List\" for eksempel",

+ 1 - 0
i18n/nl.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Bord menu",
     "boards": "Borden",
     "board-view": "Bord overzicht",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lijsten",
     "bucket-example": "Zoals \"Bucket List\" bijvoorbeeld",

+ 1 - 0
i18n/pl.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menu tablicy",
     "boards": "Tablice",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Listy",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/pt-BR.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Menu do Quadro",
     "boards": "Quadros",
     "board-view": "Visão de quadro",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Listas",
     "bucket-example": "\"Bucket List\", por exemplo",

+ 1 - 0
i18n/pt.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/ro.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Liste",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/ru.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Меню доски",
     "boards": "Доски",
     "board-view": "Вид доски",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Дорожки",
     "board-view-lists": "Списки",
     "bucket-example": "Например “Список дел”",

+ 1 - 0
i18n/sr.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Meni table",
     "boards": "Table",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Na primer \"Lista zadataka\"",

+ 14 - 13
i18n/sv.i18n.json

@@ -99,7 +99,8 @@
     "boardChangeWatchPopup-title": "Ändra bevaka",
     "boardMenuPopup-title": "Anslagstavla meny",
     "boards": "Anslagstavlor",
-    "board-view": "Board View",
+    "board-view": "Anslagstavelsvy",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Simbanor",
     "board-view-lists": "Listor",
     "bucket-example": "Gilla \"att-göra-innan-jag-dör-lista\" till exempel",
@@ -108,7 +109,7 @@
     "card-comments-title": "Detta kort har %s kommentar.",
     "card-delete-notice": "Ta bort är permanent. Du kommer att förlora alla åtgärder i samband med detta kort.",
     "card-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsflöde och du kommer inte att kunna öppna kortet igen. Det går inte att ångra.",
-    "card-delete-suggest-archive": "You can move a card to Recycle Bin to remove it from the board and preserve the activity.",
+    "card-delete-suggest-archive": "Du kan flytta ett kort till papperskorgen for att ta bort det från anslagstavlan och bevara aktiviteten.",
     "card-due": "Förfaller",
     "card-due-on": "Förfaller på",
     "card-spent": "Spenderad tid",
@@ -146,7 +147,7 @@
     "clipboard": "Urklipp eller dra och släpp",
     "close": "Stäng",
     "close-board": "Stäng anslagstavla",
-    "close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.",
+    "close-board-pop": "Du kan återskapa anslagstavlan genom att klicka på \"Papperskorgen\" från huvudmenyn.",
     "color-black": "svart",
     "color-blue": "blå",
     "color-green": "grön",
@@ -165,9 +166,9 @@
     "confirm-checklist-delete-dialog": "Är du säker på att du vill ta bort checklista",
     "copy-card-link-to-clipboard": "Kopiera kortlänk till urklipp",
     "copyCardPopup-title": "Kopiera kort",
-    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+    "copyChecklistToManyCardsPopup-title": "Kopiera checklist-mallen till flera kort",
     "copyChecklistToManyCardsPopup-instructions": "Destinationskorttitlar och beskrivningar i detta 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-format": "[ {\"title\": \"Första kortets titel\", \"description\":\"Första kortets beskrivning\"}, {\"title\":\"Andra kortets titel\",\"description\":\"Andra kortets beskrivning\"},{\"title\":\"Sista kortets titel\",\"description\":\"Sista kortets beskrivning\"} ]",
     "create": "Skapa",
     "createBoardPopup-title": "Skapa anslagstavla",
     "chooseBoardSourcePopup-title": "Importera anslagstavla",
@@ -178,7 +179,7 @@
     "custom-field-delete-pop": "Det går inte att ångra. Detta tar bort det här anpassade fältet från alla kort och förstör dess historia.",
     "custom-field-checkbox": "Kryssruta",
     "custom-field-date": "Datum",
-    "custom-field-dropdown": "Dropdown List",
+    "custom-field-dropdown": "Rullgardingsmeny",
     "custom-field-dropdown-none": "(inga)",
     "custom-field-dropdown-options": "Listalternativ",
     "custom-field-dropdown-options-placeholder": "Tryck på enter för att lägga till fler alternativ",
@@ -247,7 +248,7 @@
     "filter-on-desc": "Du filtrerar kort på denna anslagstavla. Klicka här för att redigera filter.",
     "filter-to-selection": "Filter till val",
     "advanced-filter-label": "Avancerat filter",
-    "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
+    "advanced-filter-description": "Avancerade Filter låter dig skriva en sträng innehållande följande operatorer: == != <= >= && || ( ). Ett mellanslag används som separator mellan operatorerna. Du kan filtrera alla specialfält genom att skriva dess namn och värde. Till exempel: Fält1 == Vårde1. Notera: om fälten eller värden innehåller mellanrum behöver du innesluta dem med enkla citatstecken. Till exempel:  'Fält 1' == 'Värde 1'. För att skippa enkla kontrolltecken (' \\/) kan du använda \\. Till exempel: Fält1 == I\\'m. Du kan även kombinera fler villkor. TIll exempel: F1 == V1 || F1 == V2. Vanligtvis läses operatorerna från vänster till höger. Du kan ändra ordning genom att använda paranteser. TIll exempel: F1 == V1 && ( F2 == V2 || F2 == V3 ). Du kan även söka efter textfält med hjälp av regex: F1 == /Tes.*/i",
     "fullname": "Namn",
     "header-logo-title": "Gå tillbaka till din anslagstavlor-sida.",
     "hide-system-messages": "Göm systemmeddelanden",
@@ -288,7 +289,7 @@
     "leaveBoardPopup-title": "Lämna anslagstavla ?",
     "link-card": "Länka till detta kort",
     "list-archive-cards": "Flytta alla kort i den här listan till papperskorgen",
-    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.",
+    "list-archive-cards-pop": "Detta tar bort alla kort i den här listan från anslagstavlan. För att se kort i papperskorgen och få tillbaka dem till den här anslagstavlan, klicka på \"Meny\" > \"Papperskorgen\".",
     "list-move-cards": "Flytta alla kort i denna lista",
     "list-select-cards": "Välj alla kort i denna lista",
     "listActionPopup-title": "Liståtgärder",
@@ -436,9 +437,9 @@
     "email-smtp-test-text": "Du har skickat ett e-postmeddelande",
     "error-invitation-code-not-exist": "Inbjudningskod finns inte",
     "error-notAuthorized": "Du är inte behörig att se den här sidan.",
-    "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks",
-    "new-outgoing-webhook": "New Outgoing Webhook",
+    "outgoing-webhooks": "Utgående Webhookar",
+    "outgoingWebhooksPopup-title": "Utgående Webhookar",
+    "new-outgoing-webhook": "Ny utgående webhook",
     "no-name": "(Okänd)",
     "Wekan_version": "Wekan version",
     "Node_version": "Nodversion",
@@ -471,8 +472,8 @@
     "editCardEndDatePopup-title": "Ändra slutdatum",
     "assigned-by": "Tilldelad av",
     "requested-by": "Efterfrågad av",
-    "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.",
+    "board-delete-notice": "Borttagningen är permanent. Du kommer förlora alla listor, kort och händelser kopplade till den här anslagstavlan.",
+    "delete-board-confirm-popup": "Alla listor, kort, etiketter och aktiviteter kommer tas bort och du kommer inte kunna återställa anslagstavlans innehåll. Det går inte att ångra.",
     "boardDeletePopup-title": "Ta bort anslagstavla?",
     "delete-board": "Ta bort anslagstavla"
 }

+ 1 - 0
i18n/ta.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Boards",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/th.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "เมนูบอร์ด",
     "boards": "บอร์ด",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "รายการ",
     "bucket-example": "ตัวอย่างเช่น “ระบบที่ต้องทำ”",

+ 1 - 0
i18n/tr.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Pano menüsü",
     "boards": "Panolar",
     "board-view": "Pano Görünümü",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Kulvarlar",
     "board-view-lists": "Listeler",
     "bucket-example": "Örn: \"Marketten Alacaklarım\"",

+ 1 - 0
i18n/uk.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Дошки",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/vi.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "Board Menu",
     "boards": "Bảng",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "Lists",
     "bucket-example": "Like “Bucket List” for example",

+ 1 - 0
i18n/zh-CN.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "看板菜单",
     "boards": "看板",
     "board-view": "看板视图",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "泳道图",
     "board-view-lists": "列表",
     "bucket-example": "例如 “目标清单”",

+ 1 - 0
i18n/zh-TW.i18n.json

@@ -100,6 +100,7 @@
     "boardMenuPopup-title": "看板選單",
     "boards": "看板",
     "board-view": "Board View",
+    "board-view-cal": "Calendar",
     "board-view-swimlanes": "Swimlanes",
     "board-view-lists": "清單",
     "bucket-example": "例如 “目標清單”",

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "wekan",
-  "version": "1.07.0",
+  "version": "1.11.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 = 92,
+    appVersion = 96,
     # Increment this for every release.
 
-    appMarketingVersion = (defaultText = "1.07.0~2018-06-14"),
+    appMarketingVersion = (defaultText = "1.11.0~2018-06-30"),
     # Human-readable presentation of the app version.
 
     minUpgradableAppVersion = 0,

+ 9 - 9
server/migrations.js

@@ -55,7 +55,7 @@ Migrations.add('lowercase-board-permission', () => {
 // Security migration: see https://github.com/wekan/wekan/issues/99
 Migrations.add('change-attachments-type-for-non-images', () => {
   const newTypeForNonImage = 'application/octet-stream';
-  Attachments.forEach((file) => {
+  Attachments.find().forEach((file) => {
     if (!file.isImage()) {
       Attachments.update(file._id, {
         $set: {
@@ -68,7 +68,7 @@ Migrations.add('change-attachments-type-for-non-images', () => {
 });
 
 Migrations.add('card-covers', () => {
-  Cards.forEach((card) => {
+  Cards.find().forEach((card) => {
     const cover =  Attachments.findOne({ cardId: card._id, cover: true });
     if (cover) {
       Cards.update(card._id, {$set: {coverId: cover._id}}, noValidate);
@@ -86,7 +86,7 @@ Migrations.add('use-css-class-for-boards-colors', () => {
     '#2C3E50': 'midnight',
     '#E67E22': 'pumpkin',
   };
-  Boards.forEach((board) => {
+  Boards.find().forEach((board) => {
     const oldBoardColor = board.background.color;
     const newBoardColor = associationTable[oldBoardColor];
     Boards.update(board._id, {
@@ -97,7 +97,7 @@ Migrations.add('use-css-class-for-boards-colors', () => {
 });
 
 Migrations.add('denormalize-star-number-per-board', () => {
-  Boards.forEach((board) => {
+  Boards.find().forEach((board) => {
     const nStars = Users.find({'profile.starredBoards': board._id}).count();
     Boards.update(board._id, {$set: {stars: nStars}}, noValidate);
   });
@@ -132,7 +132,7 @@ Migrations.add('add-member-isactive-field', () => {
 });
 
 Migrations.add('add-sort-checklists', () => {
-  Checklists.forEach((checklist, index) => {
+  Checklists.find().forEach((checklist, index) => {
     if (!checklist.hasOwnProperty('sort')) {
       Checklists.direct.update(
         checklist._id,
@@ -153,7 +153,7 @@ Migrations.add('add-sort-checklists', () => {
 });
 
 Migrations.add('add-swimlanes', () => {
-  Boards.forEach((board) => {
+  Boards.find().forEach((board) => {
     const swimlane = Swimlanes.findOne({ boardId: board._id });
     let swimlaneId = '';
     if (swimlane)
@@ -177,7 +177,7 @@ Migrations.add('add-swimlanes', () => {
 });
 
 Migrations.add('add-views', () => {
-  Boards.forEach((board) => {
+  Boards.find().forEach((board) => {
     if (!board.hasOwnProperty('view')) {
       Boards.direct.update(
         { _id: board._id },
@@ -189,7 +189,7 @@ Migrations.add('add-views', () => {
 });
 
 Migrations.add('add-checklist-items', () => {
-  Checklists.forEach((checklist) => {
+  Checklists.find().forEach((checklist) => {
     // Create new items
     _.sortBy(checklist.items, 'sort').forEach((item, index) => {
       ChecklistItems.direct.insert({
@@ -210,7 +210,7 @@ Migrations.add('add-checklist-items', () => {
 });
 
 Migrations.add('add-profile-view', () => {
-  Users.forEach((user) => {
+  Users.find().forEach((user) => {
     if (!user.hasOwnProperty('profile.boardView')) {
       // Set default view
       Users.direct.update(

+ 1 - 2
snapcraft.yaml

@@ -110,8 +110,7 @@ parts:
             #   Fiber.poolSize = 1e9;
             # Download node version 8.11.1 that has fix included, node binary copied from Sandstorm
             # Description at https://releases.wekan.team/node.txt
-            # SHA256SUM: 18c99d5e79e2fe91e75157a31be30e5420787213684d4048eb91e602e092725d
-            echo "5f2703af5f7bd48e85fc8ed32d61de7c7cf81c53d0dcd73f6c218ed87e950fae  node" >> node-SHASUMS256.txt.asc
+            echo "13baa1b3114a5ea3248875e0f36cb46fcf8acd212de1fb74ba68ef4c9a4e1d93  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:"