2
0
Эх сурвалжийг харах

Merge branch 'master' of https://github.com/wekan/wekan into search

John R. Supplee 4 жил өмнө
parent
commit
238b0f0725
99 өөрчлөгдсөн 1473 нэмэгдсэн , 492 устгасан
  1. 2 2
      .meteor/packages
  2. 1 3
      .meteor/versions
  3. 61 0
      CHANGELOG.md
  4. 1 1
      Stackerfile.yml
  5. 1 1
      client/components/cards/cardDescription.jade
  6. 1 0
      client/components/main/editor.jade
  7. 5 1
      client/components/main/editor.js
  8. 2 0
      client/components/swimlanes/swimlaneHeader.jade
  9. 16 11
      client/components/swimlanes/swimlaneHeader.js
  10. 10 0
      client/components/swimlanes/swimlanes.jade
  11. 43 0
      client/components/swimlanes/swimlanes.js
  12. 3 1
      i18n/ar-EG.i18n.json
  13. 3 1
      i18n/ar.i18n.json
  14. 3 1
      i18n/bg.i18n.json
  15. 3 1
      i18n/br.i18n.json
  16. 3 1
      i18n/ca.i18n.json
  17. 3 1
      i18n/cs.i18n.json
  18. 3 1
      i18n/da.i18n.json
  19. 3 1
      i18n/de.i18n.json
  20. 3 1
      i18n/el.i18n.json
  21. 3 1
      i18n/en-GB.i18n.json
  22. 3 1
      i18n/en.i18n.json
  23. 3 1
      i18n/eo.i18n.json
  24. 3 1
      i18n/es-AR.i18n.json
  25. 3 1
      i18n/es-CL.i18n.json
  26. 3 1
      i18n/es-LA.i18n.json
  27. 3 1
      i18n/es-MX.i18n.json
  28. 3 1
      i18n/es-PE.i18n.json
  29. 3 1
      i18n/es-PY.i18n.json
  30. 3 1
      i18n/es.i18n.json
  31. 3 1
      i18n/eu.i18n.json
  32. 3 1
      i18n/fa-IR.i18n.json
  33. 3 1
      i18n/fa.i18n.json
  34. 3 1
      i18n/fi.i18n.json
  35. 3 1
      i18n/fr.i18n.json
  36. 3 1
      i18n/gl.i18n.json
  37. 3 1
      i18n/he.i18n.json
  38. 3 1
      i18n/hi.i18n.json
  39. 3 1
      i18n/hr.i18n.json
  40. 3 1
      i18n/hu.i18n.json
  41. 3 1
      i18n/hy.i18n.json
  42. 3 1
      i18n/id.i18n.json
  43. 3 1
      i18n/ig.i18n.json
  44. 3 1
      i18n/it.i18n.json
  45. 3 1
      i18n/ja.i18n.json
  46. 3 1
      i18n/ka.i18n.json
  47. 3 1
      i18n/km.i18n.json
  48. 3 1
      i18n/ko.i18n.json
  49. 3 1
      i18n/lt.i18n.json
  50. 3 1
      i18n/lv.i18n.json
  51. 3 1
      i18n/mk.i18n.json
  52. 3 1
      i18n/mn.i18n.json
  53. 3 1
      i18n/nl.i18n.json
  54. 3 1
      i18n/oc.i18n.json
  55. 3 1
      i18n/pa.i18n.json
  56. 3 1
      i18n/pl.i18n.json
  57. 3 1
      i18n/pt-BR.i18n.json
  58. 3 1
      i18n/pt.i18n.json
  59. 3 1
      i18n/ro.i18n.json
  60. 3 1
      i18n/ru.i18n.json
  61. 3 1
      i18n/sk.i18n.json
  62. 3 1
      i18n/sl.i18n.json
  63. 3 1
      i18n/sr.i18n.json
  64. 5 3
      i18n/sv.i18n.json
  65. 3 1
      i18n/sw.i18n.json
  66. 3 1
      i18n/ta.i18n.json
  67. 3 1
      i18n/th.i18n.json
  68. 3 1
      i18n/tr.i18n.json
  69. 3 1
      i18n/uk.i18n.json
  70. 3 1
      i18n/vi.i18n.json
  71. 3 1
      i18n/zh-CN.i18n.json
  72. 3 1
      i18n/zh-HK.i18n.json
  73. 3 1
      i18n/zh-TW.i18n.json
  74. 5 2
      models/cards.js
  75. 51 0
      models/export.js
  76. 58 49
      models/exporter.js
  77. 30 1
      models/lists.js
  78. 616 290
      package-lock.json
  79. 21 24
      package.json
  80. 3 3
      public/api/wekan.html
  81. 31 1
      public/api/wekan.yml
  82. 30 0
      releases/clone-release-repos.sh
  83. 10 5
      releases/maintainer-make-bundle-a.sh
  84. 18 1
      releases/maintainer-make-bundle-o.sh
  85. 12 0
      releases/maintainer-make-bundle-s.sh
  86. 2 0
      releases/node-version.sh
  87. 0 20
      releases/rebuild-docs-install-deps.sh
  88. 36 4
      releases/rebuild-docs.sh
  89. 4 1
      releases/release-bundle.sh
  90. 16 0
      releases/release-ondra-1.sh
  91. 19 0
      releases/release-ondra-2.sh
  92. 47 0
      releases/release-website.sh
  93. 18 6
      releases/release.sh
  94. 15 0
      releases/up-a.sh
  95. 15 0
      releases/up-o.sh
  96. 15 0
      releases/up-s.sh
  97. 15 0
      releases/up.sh
  98. 2 2
      sandstorm-pkgdef.capnp
  99. 53 0
      server/publications/swimlanes.js

+ 2 - 2
.meteor/packages

@@ -52,6 +52,7 @@ mquandalle:autofocus
 ongoworks:speakingurl
 raix:handlebar-helpers
 tap:i18n
+http@1.4.2
 
 # UI components
 blaze
@@ -90,7 +91,6 @@ meteorhacks:aggregate@1.3.0
 wekan-markdown
 konecty:mongo-counter
 percolate:synced-cron
-easylogic:summernote
 cfs:filesystem
 tmeasday:check-npm-versions
 steffo:meteor-accounts-saml
@@ -144,4 +144,4 @@ rajit:bootstrap3-datepicker-zh-cn
 rajit:bootstrap3-datepicker-zh-tw
 staringatlights:fast-render
 spacebars
-jkuester:http
+georgemccann:meteor-emoji-picker

+ 1 - 3
.meteor/versions

@@ -56,7 +56,6 @@ ddp-server@2.3.2
 deps@1.0.12
 diff-sequence@1.1.1
 dynamic-import@0.6.0
-easylogic:summernote@0.8.8
 ecmascript@0.15.0
 ecmascript-runtime@0.7.0
 ecmascript-runtime-client@0.11.0
@@ -68,6 +67,7 @@ fastclick@1.0.13
 fetch@0.1.1
 fortawesome:fontawesome@4.7.0
 geojson-utils@1.0.10
+georgemccann:meteor-emoji-picker@0.1.74
 horka:swipebox@1.0.2
 hot-code-push@1.0.4
 html-tools@1.0.11
@@ -76,7 +76,6 @@ http@1.4.3
 id-map@1.1.0
 idmontie:migrations@1.0.3
 inter-process-messaging@0.1.1
-jkuester:http@2.0.1
 jquery@1.11.11
 kadira:blaze-layout@2.3.0
 kadira:dochead@1.5.0
@@ -227,7 +226,6 @@ templating-runtime@1.3.2
 templating-tools@1.1.2
 tmeasday:check-npm-versions@0.3.2
 tracker@1.2.0
-twbs:bootstrap@3.3.6
 ui@1.0.13
 underscore@1.0.10
 url@1.3.1

+ 61 - 0
CHANGELOG.md

@@ -1,3 +1,64 @@
+# Upcoming Wekan release
+
+This release adds the following updates:
+
+- [Updated release scripts](https://github.com/wekan/wekan/commit/59580e4b0f711ca55e8cb0d73803a4ff8b56352d).
+  Thanks to xet7.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.13 2021-03-28 Wekan release
+
+This release fixes the following bugs:
+
+- [Fixed Sandstorm Wekan attachments upload](https://github.com/wekan/wekan/commit/d4a1611b86521cd5913277cfa2c86c43958eec7b).
+  Thanks to xet7.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.12 2021-03-28 Wekan release
+
+This release fixes the following bugs:
+
+- [Fix HTTP not defined](https://github.com/wekan/wekan/commit/4c609161915cc46ebfccad3d9e7ffdecdef1f85c).
+  Thanks to xet7.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.11 2021-03-28 Wekan release
+
+This release adds the following new features:
+
+- [Added emoji picker to card description edit and card comment edit.
+  Removed and disabled Summernote wysiwyg editor, package-lock.json
+  etc](https://github.com/wekan/wekan/commit/84fde1ecfc81e89ed1895cab3bcb328e4f166a87).
+  Thanks to xet7.
+
+and adds the following updates:
+
+- [Updated dependencies. Fixed lint](https://github.com/wekan/wekan/commit/4e1c0fdce82e3b4add8c4ffd1832752181573e88).
+  Thanks to xet7.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
+# v5.10 2021-03-28 Wekan release
+
+This release adds the following new features:
+
+- [Move swimlane from one board to another](https://github.com/wekan/wekan/pull/3674).
+  Thanks to jrsupplee.
+- [Added translatable Move Swimlane popup title](https://github.com/wekan/wekan/commit/16665bccf912c5e907739c35f7ef5a376c81740e).
+  Thanks to xet7.
+- [REST API: Export one attachment](https://github.com/wekan/wekan/pull/3673).
+  Thanks to vagnernascimento.
+
+and adds the following updates:
+
+- [Updated package-lock.json](https://github.com/wekan/wekan/commit/3145ec65a3defb8ac8d97aed7e43595f661f7100).
+  Thanks to developers of dependencies.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
 # v5.09 2021-03-26 Wekan release
 
 This release adds the following improvements:

+ 1 - 1
Stackerfile.yml

@@ -1,5 +1,5 @@
 appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
-appVersion: "v5.09.0"
+appVersion: "v5.13.0"
 files:
   userUploads:
     - README.md

+ 1 - 1
client/components/cards/cardDescription.jade

@@ -3,5 +3,5 @@ template(name="descriptionForm")
   .new-description.js-new-description(
     class="{{#if descriptionFormIsOpen}}is-open{{/if}}")
     form.js-new-description-form
-      +editor(class="js-new-description-input" data-meteor-emoji-large="true" autofocus="autofocus")
+      +editor(class="js-new-description-input" autofocus="autofocus")
         | {{getUnsavedValue 'cardDescription' _id getDescription}}

+ 1 - 0
client/components/main/editor.jade

@@ -4,6 +4,7 @@ template(name="editor")
     class="{{class}}"
     id=id
     autofocus=autofocus
+    data-meteor-emoji="true"
     placeholder="{{_ 'comment-placeholder'}}")
     +Template.contentBlock
 

+ 5 - 1
client/components/main/editor.js

@@ -1,4 +1,5 @@
 Template.editor.onRendered(() => {
+  new MeteorEmoji();
   const textareaSelector = 'textarea';
   const mentions = [
     // User mentions
@@ -99,7 +100,9 @@ Template.editor.onRendered(() => {
     if (inputs.length === 0) {
       // only enable richereditor to new comment or edit comment no others
       enableTextarea();
-    } else {
+    }
+    /*
+      else {
       const placeholder = inputs.attr('placeholder') || '';
       const mSummernotes = [];
       const getSummernote = function(input) {
@@ -258,6 +261,7 @@ Template.editor.onRendered(() => {
         });
       });
     }
+    */
   } else {
     enableTextarea();
   }

+ 2 - 0
client/components/swimlanes/swimlaneHeader.jade

@@ -39,6 +39,8 @@ template(name="swimlaneActionPopup")
       hr
       ul.pop-over-list
         li: a.js-close-swimlane {{_ 'archive-swimlane'}}
+      ul.pop-over-list
+        li: a.js-move-swimlane {{_ 'move-swimlane'}}
 
 template(name="swimlaneAddPopup")
   unless currentUser.isCommentOnly

+ 16 - 11
client/components/swimlanes/swimlaneHeader.js

@@ -47,20 +47,25 @@ Template.swimlaneFixedHeader.helpers({
   },
 });
 
-Template.swimlaneActionPopup.events({
-  'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
-  'click .js-close-swimlane'(event) {
-    event.preventDefault();
-    this.archive();
-    Popup.close();
-  },
-});
-
-Template.swimlaneActionPopup.helpers({
+BlazeComponent.extendComponent({
   isCommentOnly() {
     return Meteor.user().isCommentOnly();
   },
-});
+
+  events() {
+    return [
+      {
+        'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
+        'click .js-close-swimlane'(event) {
+          event.preventDefault();
+          this.archive();
+          Popup.close();
+        },
+        'click .js-move-swimlane': Popup.open('moveSwimlane'),
+      },
+    ];
+  },
+}).register('swimlaneActionPopup');
 
 BlazeComponent.extendComponent({
   onCreated() {

+ 10 - 0
client/components/swimlanes/swimlanes.jade

@@ -61,3 +61,13 @@ template(name="addListForm")
             a.open-list-composer.js-open-inlined-form
               i.fa.fa-plus
               | {{_ 'add-list'}}
+
+template(name="moveSwimlanePopup")
+  unless currentUser.isWorker
+    label {{_ 'boards'}}:
+    select.js-select-boards(autofocus)
+      each toBoard in toBoards
+        option(value="{{toBoard._id}}") {{toBoard.title}}
+
+  .edit-controls.clearfix
+    button.primary.confirm.js-done {{_ 'done'}}

+ 43 - 0
client/components/swimlanes/swimlanes.js

@@ -323,3 +323,46 @@ BlazeComponent.extendComponent({
     initSortable(boardComponent, $listsDom);
   },
 }).register('listsGroup');
+
+BlazeComponent.extendComponent({
+  onCreated() {
+    this.currentSwimlane = this.currentData();
+  },
+
+  board() {
+    return Boards.findOne(Session.get('currentBoard'));
+  },
+
+  toBoards() {
+    const boards = Boards.find(
+      {
+        archived: false,
+        'members.userId': Meteor.userId(),
+        type: 'board',
+        _id: { $ne: this.board()._id },
+      },
+      {
+        sort: { title: 1 },
+      },
+    );
+
+    return boards;
+  },
+
+  events() {
+    return [
+      {
+        'click .js-done'() {
+          const swimlane = Swimlanes.findOne(this.currentSwimlane._id);
+          const bSelect = $('.js-select-boards')[0];
+          let boardId;
+          if (bSelect) {
+            boardId = bSelect.options[bSelect.selectedIndex].value;
+            Meteor.call('moveSwimlane', this.currentSwimlane._id, boardId);
+          }
+          Popup.close();
+        },
+      },
+    ];
+  },
+}).register('moveSwimlanePopup');

+ 3 - 1
i18n/ar-EG.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ar.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/bg.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/br.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ca.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/cs.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Vytvořeno (Od nejstarších)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/da.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/de.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Erstelldatum (älteste zuerst)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Alle System-Nachrichten aller Nutzer verbergen",
-  "now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen"
+  "now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/el.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

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

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/en.i18n.json

@@ -986,5 +986,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/eo.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

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

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/es-CL.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/es-LA.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/es-MX.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/es-PE.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/es-PY.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/es.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/eu.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/fa-IR.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/fa.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "ساخته شده در تاریخ (با اولویت قدیمی تر)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/fi.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Luotu (Vanhin ensin)",
   "links-heading": "Linkit",
   "hide-system-messages-of-all-users": "Piilota kaikkien käyttäjien järjestelmäviestit",
-  "now-system-messages-of-all-users-are-hidden": "Nyt kaikkien käyttäjien järjestelmäviestit on piilotettu"
+  "now-system-messages-of-all-users-are-hidden": "Nyt kaikkien käyttäjien järjestelmäviestit on piilotettu",
+  "move-swimlane": "Siirrä Swimlane",
+  "moveSwimlanePopup-title": "Siirrä Swimlane"
 }

+ 3 - 1
i18n/fr.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Date de création (Plus anciennes en premier)",
   "links-heading": "Liens",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/gl.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/he.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "מועד יצירה (הישן ביותר בהתחלה)",
   "links-heading": "קישורים",
   "hide-system-messages-of-all-users": "להסתיר את הודעות המערכת של כל המשתמשים",
-  "now-system-messages-of-all-users-are-hidden": "כעת הודעות המערכת של כל המשתמשים מוסתרות"
+  "now-system-messages-of-all-users-are-hidden": "כעת הודעות המערכת של כל המשתמשים מוסתרות",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/hi.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/hr.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/hu.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/hy.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/id.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ig.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/it.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Data di creazione (dalla più vecchia)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ja.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "作成日(古いものから)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ka.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/km.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ko.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/lt.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/lv.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/mk.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/mn.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/nl.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Aangemaakt op (Oudste Eerst)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Verberg systeemberichten voor alle gebruikers",
-  "now-system-messages-of-all-users-are-hidden": "Systeemberichten zijn nu verborgen voor alle gebruikers"
+  "now-system-messages-of-all-users-are-hidden": "Systeemberichten zijn nu verborgen voor alle gebruikers",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/oc.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/pa.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/pl.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "daty utworzenia (najpierw najstarsze)",
   "links-heading": "Linki",
   "hide-system-messages-of-all-users": "Ukryj powiadomienia systemowe wszystkich użytkowników",
-  "now-system-messages-of-all-users-are-hidden": "Odtąd powiadomienia systemowe wszystkich użytkowników będą ukryte"
+  "now-system-messages-of-all-users-are-hidden": "Odtąd powiadomienia systemowe wszystkich użytkowników będą ukryte",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

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

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Criado em (o mais antigo primeiro) ",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Esconder mensagens do sistema para todos os usuários",
-  "now-system-messages-of-all-users-are-hidden": "Agora as mensagens do sistema para todos os usuários estão escondidas "
+  "now-system-messages-of-all-users-are-hidden": "Agora as mensagens do sistema para todos os usuários estão escondidas ",
+  "move-swimlane": "Mover Raia",
+  "moveSwimlanePopup-title": "Mover Raia"
 }

+ 3 - 1
i18n/pt.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ro.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ru.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Дата создания (сначала старые)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/sk.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/sl.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/sr.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 5 - 3
i18n/sv.i18n.json

@@ -981,7 +981,9 @@
   "title-alphabetically": "Titel (Alfabetisk)",
   "created-at-newest-first": "Skapad den (Nyast först)",
   "created-at-oldest-first": "Skapad den (äldst först)",
-  "links-heading": "Links",
-  "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "links-heading": "Länkar",
+  "hide-system-messages-of-all-users": "Göm systemmeddelanden för alla användare",
+  "now-system-messages-of-all-users-are-hidden": "Systemmeddelande dolda för alla användare",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/sw.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/ta.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/th.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/tr.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/uk.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/vi.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Được tạo lúc (Cũ nhất trước)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

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

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "创建时间(最旧)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 3 - 1
i18n/zh-HK.i18n.json

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "Created At (Oldest First)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

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

@@ -983,5 +983,7 @@
   "created-at-oldest-first": "創建於(最早優先)",
   "links-heading": "Links",
   "hide-system-messages-of-all-users": "Hide system messages of all users",
-  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
+  "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
+  "move-swimlane": "Move Swimlane",
+  "moveSwimlanePopup-title": "Move Swimlane"
 }

+ 5 - 2
models/cards.js

@@ -1527,14 +1527,17 @@ Cards.mutations({
     return this.move(boardId, swimlaneId, listId, sort);
   },
 
-  move(boardId, swimlaneId, listId, sort) {
+  move(boardId, swimlaneId, listId, sort = null) {
     const mutatedFields = {
       boardId,
       swimlaneId,
       listId,
-      sort,
     };
 
+    if (sort !== null) {
+      mutatedFields.sort = sort;
+    }
+
     // we must only copy the labels and custom fields if the target board
     // differs from the source board
     if (this.boardId !== boardId) {

+ 51 - 0
models/export.js

@@ -48,6 +48,57 @@ if (Meteor.isServer) {
     }
   });
 
+  // todo XXX once we have a real API in place, move that route there
+  // todo XXX also  share the route definition between the client and the server
+  // so that we could use something like
+  // `ApiRoutes.path('boards/export', boardId)``
+  // on the client instead of copy/pasting the route path manually between the
+  // client and the server.
+  /**
+   * @operation exportJson
+   * @tag Boards
+   *
+   * @summary This route is used to export a attachement to a json file format.
+   *
+   * @description If user is already logged-in, pass loginToken as param
+   * "authToken": '/api/boards/:boardId/attachments/:attachmentId/export?authToken=:token'
+   *
+   *
+   * @param {string} boardId the ID of the board we are exporting
+   * @param {string} attachmentId the ID of the attachment we are exporting
+   * @param {string} authToken the loginToken
+   */
+  JsonRoutes.add(
+    'get',
+    '/api/boards/:boardId/attachments/:attachmentId/export',
+    function(req, res) {
+      const boardId = req.params.boardId;
+      const attachmentId = req.params.attachmentId;
+      let user = null;
+      const loginToken = req.query.authToken;
+      if (loginToken) {
+        const hashToken = Accounts._hashLoginToken(loginToken);
+        user = Meteor.users.findOne({
+          'services.resume.loginTokens.hashedToken': hashToken,
+        });
+      } else if (!Meteor.settings.public.sandstorm) {
+        Authentication.checkUserId(req.userId);
+        user = Users.findOne({ _id: req.userId, isAdmin: true });
+      }
+      const exporter = new Exporter(boardId, attachmentId);
+      if (exporter.canExport(user)) {
+        JsonRoutes.sendResult(res, {
+          code: 200,
+          data: exporter.build(),
+        });
+      } else {
+        // we could send an explicit error message, but on the other hand the only
+        // way to get there is by hacking the UI so let's keep it raw.
+        JsonRoutes.sendResult(res, 403);
+      }
+    },
+  );
+
   /**
    * @operation exportCSV/TSV
    * @tag Boards

+ 58 - 49
models/exporter.js

@@ -2,8 +2,9 @@ const Papa = require('papaparse');
 
 // exporter maybe is broken since Gridfs introduced, add fs and path
 export class Exporter {
-  constructor(boardId) {
+  constructor(boardId, attachmentId) {
     this._boardId = boardId;
+    this._attachmentId = attachmentId;
   }
 
   build() {
@@ -33,6 +34,62 @@ export class Exporter {
         },
       }),
     );
+
+    // [Old] for attachments we only export IDs and absolute url to original doc
+    // [New] Encode attachment to base64
+
+    const getBase64Data = function(doc, callback) {
+      let buffer = Buffer.allocUnsafe(0);
+      buffer.fill(0);
+
+      // callback has the form function (err, res) {}
+      const tmpFile = path.join(
+        os.tmpdir(),
+        `tmpexport${process.pid}${Math.random()}`,
+      );
+      const tmpWriteable = fs.createWriteStream(tmpFile);
+      const readStream = doc.createReadStream();
+      readStream.on('data', function(chunk) {
+        buffer = Buffer.concat([buffer, chunk]);
+      });
+
+      readStream.on('error', function() {
+        callback(null, null);
+      });
+      readStream.on('end', function() {
+        // done
+        fs.unlink(tmpFile, () => {
+          //ignored
+        });
+
+        callback(null, buffer.toString('base64'));
+      });
+      readStream.pipe(tmpWriteable);
+    };
+    const getBase64DataSync = Meteor.wrapAsync(getBase64Data);
+    const byBoardAndAttachment = this._attachmentId
+      ? { boardId: this._boardId, _id: this._attachmentId }
+      : byBoard;
+    result.attachments = Attachments.find(byBoardAndAttachment)
+      .fetch()
+      .map(attachment => {
+        let filebase64 = null;
+        filebase64 = getBase64DataSync(attachment);
+
+        return {
+          _id: attachment._id,
+          cardId: attachment.cardId,
+          //url: FlowRouter.url(attachment.url()),
+          file: filebase64,
+          name: attachment.original.name,
+          type: attachment.original.type,
+        };
+      });
+    //When has a especific valid attachment return the single element
+    if (this._attachmentId) {
+      return result.attachments.length > 0 ? result.attachments[0] : {};
+    }
+
     result.lists = Lists.find(byBoard, noBoardId).fetch();
     result.cards = Cards.find(byBoardNoLinked, noBoardId).fetch();
     result.swimlanes = Swimlanes.find(byBoard, noBoardId).fetch();
@@ -84,54 +141,6 @@ export class Exporter {
       );
     });
 
-    // [Old] for attachments we only export IDs and absolute url to original doc
-    // [New] Encode attachment to base64
-
-    const getBase64Data = function(doc, callback) {
-      let buffer = Buffer.allocUnsafe(0);
-      buffer.fill(0);
-
-      // callback has the form function (err, res) {}
-      const tmpFile = path.join(
-        os.tmpdir(),
-        `tmpexport${process.pid}${Math.random()}`,
-      );
-      const tmpWriteable = fs.createWriteStream(tmpFile);
-      const readStream = doc.createReadStream();
-      readStream.on('data', function(chunk) {
-        buffer = Buffer.concat([buffer, chunk]);
-      });
-
-      readStream.on('error', function() {
-        callback(null, null);
-      });
-      readStream.on('end', function() {
-        // done
-        fs.unlink(tmpFile, () => {
-          //ignored
-        });
-
-        callback(null, buffer.toString('base64'));
-      });
-      readStream.pipe(tmpWriteable);
-    };
-    const getBase64DataSync = Meteor.wrapAsync(getBase64Data);
-    result.attachments = Attachments.find(byBoard)
-      .fetch()
-      .map(attachment => {
-        let filebase64 = null;
-        filebase64 = getBase64DataSync(attachment);
-
-        return {
-          _id: attachment._id,
-          cardId: attachment.cardId,
-          //url: FlowRouter.url(attachment.url()),
-          file: filebase64,
-          name: attachment.original.name,
-          type: attachment.original.type,
-        };
-      });
-
     // we also have to export some user data - as the other elements only
     // include id but we have to be careful:
     // 1- only exports users that are linked somehow to that board

+ 30 - 1
models/lists.js

@@ -202,7 +202,7 @@ Lists.helpers({
     this.swimlaneId = swimlaneId;
 
     let _id = null;
-    existingListWithSameName = Lists.findOne({
+    const existingListWithSameName = Lists.findOne({
       boardId,
       title: this.title,
       archived: false,
@@ -225,6 +225,35 @@ Lists.helpers({
     });
   },
 
+  move(boardId, swimlaneId) {
+    const boardList = Lists.findOne({
+      boardId,
+      title: this.title,
+      archived: false,
+    });
+    let listId;
+    if (boardList) {
+      listId = boardList._id;
+      this.cards().forEach(card => {
+        card.move(boardId, this._id, boardList._id);
+      });
+    } else {
+      console.log('list.title:', this.title);
+      console.log('boardList:', boardList);
+      listId = Lists.insert({
+        title: this.title,
+        boardId,
+        type: this.type,
+        archived: false,
+        wipLimit: this.wipLimit,
+      });
+    }
+
+    this.cards(swimlaneId).forEach(card => {
+      card.move(boardId, swimlaneId, listId);
+    });
+  },
+
   cards(swimlaneId) {
     const selector = {
       listId: this._id,

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 616 - 290
package-lock.json


+ 21 - 24
package.json

@@ -1,6 +1,6 @@
 {
   "name": "wekan",
-  "version": "v5.09.0",
+  "version": "v5.13.0",
   "description": "Open-Source kanban",
   "private": true,
   "scripts": {
@@ -40,47 +40,44 @@
   },
   "homepage": "https://wekan.github.io",
   "devDependencies": {
-    "eslint": "^7.19.0",
+    "babel-eslint": "^10.1.0",
+    "eslint": "^5.16.0",
     "eslint-config-meteor": "0.0.9",
     "eslint-config-prettier": "^3.6.0",
     "eslint-import-resolver-meteor": "^0.4.0",
-    "eslint-plugin-import": "^2.22.1",
-    "eslint-plugin-meteor": "^7.2.2",
-    "eslint-plugin-prettier": "^3.3.1",
+    "eslint-plugin-import": "^2.20.0",
+    "eslint-plugin-meteor": "^5.1.0",
+    "eslint-plugin-prettier": "^3.1.2",
     "lint-staged": "^7.3.0",
     "pre-commit": "^1.2.2",
     "prettier": "^1.19.1",
     "prettier-eslint": "^9.0.2"
   },
   "dependencies": {
-    "@babel/core": "^7.12.10",
-    "@babel/eslint-parser": "^7.12.13",
-    "@babel/runtime": "^7.12.5",
-    "@typescript-eslint/parser": "^4.14.2",
-    "ajv": "^7.0.4",
+    "@babel/core": "^7.9.6",
+    "@babel/runtime": "^7.9.6",
+    "@root/request": "^1.6.1",
+    "ajv": "^6.12.4",
     "babel-runtime": "^6.26.0",
     "bcrypt": "^5.0.0",
-    "bson": "^4.2.2",
-    "bunyan": "^1.8.15",
-    "core-js": "^3.8.3",
+    "bson": "^4.0.3",
+    "bunyan": "^1.8.12",
     "es6-promise": "^4.2.4",
-    "exceljs": "^4.2.0",
+    "exceljs": "^4.2.1",
     "fibers": "^5.0.0",
-    "flatted": "^3.1.1",
+    "flatted": "^3.0.4",
     "gridfs-stream": "https://github.com/wekan/gridfs-stream/tarball/master",
-    "jszip": "^3.5.0",
-    "ldapjs": "^2.2.3",
-    "markdown-it": "^12.0.4",
+    "jszip": "^3.4.0",
+    "ldapjs": "^2.1.1",
+    "markdown-it": "^12.0.2",
     "markdown-it-emoji": "^2.0.0",
-    "meteor-node-stubs": "^1.0.2",
-    "mongodb": "^3.6.4",
+    "meteor-node-stubs": "^1.0.1",
+    "mongodb": "^3.6.2",
     "os": "^0.1.1",
     "page": "^1.11.5",
-    "papaparse": "^5.3.0",
-    "qs": "^6.9.6",
-    "source-map-resolve": "^0.6.0",
+    "papaparse": "^5.2.0",
+    "qs": "^6.9.4",
     "source-map-support": "^0.5.19",
-    "typescript": "^4.1.3",
     "xss": "^1.0.8"
   }
 }

+ 3 - 3
public/api/wekan.html

@@ -7,7 +7,7 @@
     <meta charset="utf-8">
     <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <title>Wekan REST API v5.09</title>
+    <title>Wekan REST API v5.13</title>
 
     <style>
     </style>
@@ -1549,7 +1549,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
 	  	<ul class="toc-list-h1">
         
           <li>
-            <a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.09">Wekan REST API v5.09</a>
+            <a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.13">Wekan REST API v5.13</a>
             
           </li>
         
@@ -2092,7 +2092,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
     <div class="page-wrapper">
       <div class="dark-box"></div>
       <div class="content">
-        <h1 id="wekan-rest-api">Wekan REST API v5.09</h1>
+        <h1 id="wekan-rest-api">Wekan REST API v5.13</h1>
 <blockquote>
 <p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
 </blockquote>

+ 31 - 1
public/api/wekan.yml

@@ -1,7 +1,7 @@
 swagger: '2.0'
 info:
   title: Wekan REST API
-  version: v5.09
+  version: v5.13
   description: |
     The REST API allows you to control and extend Wekan with ease.
 
@@ -326,6 +326,36 @@ paths:
                   type: string
                 swimlaneId:
                   type: string
+  /api/boards/{board}/attachments/{attachment}/export:
+    get:
+      operationId: exportJson
+      summary: This route is used to export a attachement to a json file format.
+      description: |
+        If user is already logged-in, pass loginToken as param
+         "authToken": '/api/boards/:boardId/attachments/:attachmentId/export?authToken=:token'
+      tags:
+        - Boards
+      parameters:
+        - name: board
+          in: path
+          description: |
+            the ID of the board we are exporting
+          type: string
+          required: true
+        - name: attachment
+          in: path
+          description: |
+            the ID of the attachment we are exporting
+          type: string
+          required: true
+      produces:
+        - application/json
+      security:
+          - UserSecurity: []
+      responses:
+        '200':
+          description: |-
+            200 response
   /api/boards/{board}/cards/{card}/checklists:
     get:
       operationId: get_all_checklists

+ 30 - 0
releases/clone-release-repos.sh

@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# With this, clone all release related repos.
+
+# 1) Check that this script has no parameters
+if [ $# -ne 0 ]
+  then
+    echo "Syntax, no parameters:"
+    echo "  ./releases/clone-release-repos.sh"
+    exit 1
+fi
+
+# 2) Create directories, clone repos
+mkdir ../w
+cd ../w
+git clone git@github.com:wekan/wekan.github.io.git
+git clone git@github.com:wekan/wekan-ondra.git
+git clone git@github.com:wekan/wekan-gantt-gpl.git
+
+# 3) Set upstreams
+cd wekan-ondra
+git remote add upstream https://github.com/wekan/wekan
+
+cd ../wekan-gantt-gpl
+git remote add upstream https://github.com/wekan/wekan
+
+# 4) Go back to Wekan repo directory
+cd ../wekan
+
+echo "Release repos ondra, gantt-gpl, and website cloned and upstreams set."

+ 10 - 5
releases/maintainer-make-bundle-a.sh

@@ -3,6 +3,13 @@
 # This script is only for Wekan maintainer to
 # convert x64 bundle to arm64 bundle.
 
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./maintainer-make-bundle-a.sh 5.10"
+    exit 1
+fi
+
 cd ~/repos
 rm -rf bundle
 
@@ -21,13 +28,11 @@ sudo rm -rf /home/wekan/repos/bundle/programs/server/npm/node_modules/meteor/ost
 
 cd bundle/programs/server
 chmod u+w *.json
-npm uninstall fibers node-gyp node-pre-gyp
-npm install node-gyp@5.0.4 node-pre-gyp fibers
+npm uninstall fibers node-gyp node-pre-gyp @mapbox/node-pre-gyp
 npm install
-npm uninstall fibers node-gyp node-pre-gyp
-npm install node-pre-gyp
+npm install node-gyp
+npm install @mapbox/node-pre-gyp
 npm install fibers
-npm install node-gyp@5.0.4
 
 cd /home/wekan/repos/bundle
 find . -type d -name '*-garbage*' | xargs rm -rf

+ 18 - 1
releases/maintainer-make-bundle-o.sh

@@ -1,3 +1,20 @@
+#!/bin/bash
+
+# This script is only for Wekan maintainer to
+# convert x64 bundle to ppc64le bundle.
+
+# 1) Check that there is only one parameter
+#    of Wekan version number
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./maintainer-make-bundle-o.sh 5.10"
+    exit 1
+fi
+
+# 2) Build bundle
+
 cd /home/ubuntu
 rm -rf bundle
 #wget https://releases.wekan.team/wekan-$1.zip
@@ -7,7 +24,7 @@ chmod u+w *.json
 cd /home/ubuntu/bundle/programs/server/node_modules/fibers
 node build.js
 cd /home/ubuntu
-cp -pR /home/ubuntu/node-fibers/bin/linux-ppc64-72-glibc bundle/programs/server/node_modules/fibers/bin/
+#cp -pR /home/ubuntu/node-fibers/bin/linux-ppc64-72-glibc bundle/programs/server/node_modules/fibers/bin/
 cd bundle
 find . -type d -name '*-garbage*' | xargs rm -rf
 find . -name '*phantom*' | xargs rm -rf

+ 12 - 0
releases/maintainer-make-bundle-s.sh

@@ -1,3 +1,15 @@
+#!/bin/bash
+
+# This script is only for Wekan maintainer to
+# convert x64 bundle to s390x bundle.
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./maintainer-make-bundle-s.sh 5.10"
+    exit 1
+fi
+
 cd /home/linux1
 rm -rf bundle
 unzip wekan-$1.zip

+ 2 - 0
releases/node-version.sh

@@ -0,0 +1,2 @@
+#!/bin/bash
+cat ~/repos/wekan/Dockerfile | grep NODE_VERSION=v | sed 's|\\||g' - | sed 's| ||g' - | sed 's|NODE_VERSION=v||g' -

+ 0 - 20
releases/rebuild-docs-install-deps.sh

@@ -1,20 +0,0 @@
-# Extract the OpenAPI specification.
-
-# Install dependencies.
-sudo apt-get install python3-pip
-sudo pip3 install -U setuptools wheel
-sudo npm install -g api2html
-mkdir -p ~/python
-cd ~/python
-git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
-cd ~/python/esprima-python
-sudo python3 setup.py install --record files.txt
-cd ~/repos/wekan
-mkdir -p public/api
-
-# Generate docs.
-python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
-api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
-
-# Copy docs to bundle
-#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser/app/

+ 36 - 4
releases/rebuild-docs.sh

@@ -1,9 +1,41 @@
-# Generate docs.
+# Extract the OpenAPI specification.
 
-#mkdir -p public/api
-python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
+# 1) Check that there is only one parameter
+#    of Wekan version number:
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./rebuild-docs.sh 5.10"
+    exit 1
+fi
+
+# 2) If esprima-python directory does not exist,
+#   install dependencies.
+
+if [ ! -d ~/python/esprima-python ]; then
+  sudo apt-get -y install python3-pip
+  sudo pip3 install -U setuptools wheel
+  sudo npm install -g api2html
+  mkdir -p ~/python
+  cd ~/python
+  git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
+  cd ~/python/esprima-python
+  sudo python3 setup.py install --record files.txt
+fi
+
+# 2) Go to Wekan repo directory
+cd ~/repos/wekan
+
+# 3) Create api docs directory, if it does not exist
+if [ ! -d public/api ]; then
+  mkdir -p public/api
+fi
+
+# 4) Generate docs.
+#python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
+python3 ./openapi/generate_openapi.py --release v$1 > ./public/api/wekan.yml
 api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
 
 # Copy docs to bundle
 #cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser/app/
-#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser.legacy/app/

+ 4 - 1
releases/release-bundle.sh

@@ -6,6 +6,9 @@ cd ~/repos/wekan/.build
 zip -r wekan-$1.zip bundle
 
 {
+  scp ~/repos/wekan/releases/maintainer-make-bundle-a.sh a:/home/wekan/repos/maintainer-make-bundle.sh
+  scp ~/repos/wekan/releases/maintainer-make-bundle-s.sh s:/home/linux1/maintainer-make-bundle.sh
+  scp ~/repos/wekan/releases/maintainer-make-bundle-o.sh o:/home/ubuntu/maintainer-make-bundle.sh
   scp wekan-$1.zip x2:/var/snap/wekan/common/releases.wekan.team/
   scp wekan-$1.zip a:/home/wekan/repos/
   scp wekan-$1.zip s:/home/linux1/
@@ -14,4 +17,4 @@ zip -r wekan-$1.zip bundle
 
 cd ..
 
-echo "Bundle uploaded to x2/a/s/o."
+echo "x64 bundle and arm64/s390x/ppc64le build scripts uploaded to x2/a/s/o."

+ 16 - 0
releases/release-ondra-1.sh

@@ -1,2 +1,18 @@
+#!/bin/bash
+
+# Release script for wekan-ondra and wekan-gantt-gpl
+# part 1. After this merge and fix merge conflicts, and part 2.
+
+# 1) Check that there is only one parameter
+#    of Wekan version number:
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./release-ondra-2.sh 5.10"
+    exit 1
+fi
+
+# 2) Get up
 git fetch upstream
 git merge upstream/master

+ 19 - 0
releases/release-ondra-2.sh

@@ -1 +1,20 @@
+#/bin/bash
+
+# Release script for wekan-ondra and wekan-gantt-gpl
+# part 2. Before these, part 1 and merge and fix merge conflicts.
+
+# 1) Check that there is only one parameter
+#    of Wekan version number:
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./release-ondra-2.sh 5.10"
+    exit 1
+fi
+
+# 2) Move Wekan version tag to be newest after merge
+#    and push to repo.
+git tag --force v$1 HEAD
+git push --tags --force
 git push --follow-tags

+ 47 - 0
releases/release-website.sh

@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# Release website with new Wekan version number
+# and new API docs.
+
+# 1) Check that there is only 2 parameters
+#    of Wekan previous and new version number:
+
+if [ $# -ne 2 ]
+  then
+    echo "Syntax with Wekan previous and new version number:"
+    echo "  ./release-website.sh 5.09 5.10"
+    exit 1
+fi
+
+# 2) Go to website directory
+cd ~/repos/w/wekan.github.io
+
+# 3) Get latest changes to website
+git pull
+
+# 4) Change version number in website
+sed -i 's|v$1|v$2|g' index.html
+
+# 5) Change version number in API docs index page
+cd api
+sed -i 's|v$1|v$2|g' index.html
+
+# 6) Create directory for new docs
+mkdir v$2
+
+# 7) Go to new docs directory
+cd v$2
+
+# 8) Copy new docs from Wekan repo to new docs directory
+cp ~/repos/wekan/public/api/* .
+
+# 9) Move wekan.html to index.html
+mv wekan.html index.html
+
+# 10) Go to docs repo
+cd ~/repos/w/wekan.github.io
+
+# 11) Commit all changes to git and push website changes live
+git add --all
+git commit -m "v$2"
+git push

+ 18 - 6
releases/release.sh

@@ -1,21 +1,33 @@
-# Usage: ./release.sh 4.37
+#!/bin/bash
 
-# Commit and push version number changes
+# Release script for wekan.
+
+# 1) Check that there is only one parameter
+#    of Wekan version number:
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./release.sh 5.10"
+    exit 1
+fi
+
+# 2) Commit and push version number changes
 cd ~/repos/wekan
 git add --all
 git commit -m "v$1"
 git push
 
-# Add release tag
+# 3) Add release tag
 ~/repos/wekan/releases/add-tag.sh v$1
 
-# Push to repo
+# 4) Push to repo
 git push
 
-# Build Bundle
+# 5) Build Bundle
 ~/repos/wekan/releases/release-bundle.sh $1
 
-# Build Sandstorm
+# 6) Build Sandstorm
 ~/repos/wekan/releases/release-sandstorm.sh $1
 
 # Build Snap

+ 15 - 0
releases/up-a.sh

@@ -1,2 +1,17 @@
+#!/bin/bash
+
+# 1) Check that there is only one parameter
+#    of Wekan version number
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./up-a.sh 5.10"
+    exit 1
+fi
+
+# 2) Download release from arm64 build server
 scp a:/home/wekan/repos/wekan-$1-arm64.zip .
+
+# 3) Upload arm64 release to download server
 scp wekan-$1-arm64.zip x2:/var/snap/wekan/common/releases.wekan.team/raspi3/

+ 15 - 0
releases/up-o.sh

@@ -1,2 +1,17 @@
+#!/bin/bash
+
+# 1) Check that there is only one parameter
+#    of Wekan version number
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./up-o.sh 5.10"
+    exit 1
+fi
+
+# 2) Download release from ppc64le build server
 scp o:/home/ubuntu/wekan-$1-ppc64le.zip .
+
+# 3) Upload ppc64le release to download server
 scp wekan-$1-ppc64le.zip x2:/var/snap/wekan/common/releases.wekan.team/ppc64le/

+ 15 - 0
releases/up-s.sh

@@ -1,2 +1,17 @@
+#!/bin/bash
+
+# 1) Check that there is only one parameter
+#    of Wekan version number
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./up-s.sh 5.10"
+    exit 1
+fi
+
+# 2) Download release from s390x build server
 scp s:/home/linux1/wekan-$1-s390x.zip .
+
+# 3) Upload s390x release to download server
 scp wekan-$1-s390x.zip x2:/var/snap/wekan/common/releases.wekan.team/s390x/

+ 15 - 0
releases/up.sh

@@ -1,7 +1,22 @@
 #!/bin/bash
 
+# 1) Check that there is only one parameter
+#    of Wekan version number
+
+if [ $# -ne 1 ]
+  then
+    echo "Syntax with Wekan version number:"
+    echo "  ./maintainer-make-bundle-o.sh 5.10"
+    exit 1
+fi
+
+# 2) Install parallel if it's not installed yet
 sudo apt-get -y install parallel
 
+# 3) Download releases from build servers and
+#    upload releases to download server,
+#    all at the same time in parallel.
+
 {
   ~/repos/wekan/releases/up-a.sh $1
   ~/repos/wekan/releases/up-s.sh $1

+ 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 = 509,
+    appVersion = 513,
     # Increment this for every release.
 
-    appMarketingVersion = (defaultText = "5.09.0~2021-03-26"),
+    appMarketingVersion = (defaultText = "5.13.0~2021-03-28"),
     # Human-readable presentation of the app version.
 
     minUpgradableAppVersion = 0,

+ 53 - 0
server/publications/swimlanes.js

@@ -0,0 +1,53 @@
+Meteor.methods({
+  moveSwimlane(swimlaneId, toBoardId) {
+    check(swimlaneId, String);
+    check(toBoardId, String);
+
+    const swimlane = Swimlanes.findOne(swimlaneId);
+    const fromBoard = Boards.findOne(swimlane.boardId);
+    const toBoard = Boards.findOne(toBoardId);
+
+    if (swimlane && toBoard) {
+      swimlane.lists().forEach(list => {
+        const toList = Lists.findOne({
+          boardId: toBoardId,
+          title: list.title,
+          archived: false,
+        });
+
+        let toListId;
+        if (toList) {
+          toListId = toList._id;
+        } else {
+          toListId = Lists.insert({
+            title: list.title,
+            boardId: toBoardId,
+            type: list.type,
+            archived: false,
+            wipLimit: list.wipLimit,
+          });
+        }
+
+        Cards.find({
+          listId: list._id,
+          swimlaneId,
+        }).forEach(card => {
+          card.move(toBoardId, swimlaneId, toListId);
+        });
+      });
+
+      Swimlanes.update(swimlaneId, {
+        $set: {
+          boardId: toBoardId,
+        },
+      });
+
+      // make sure there is a default swimlane
+      fromBoard.getDefaultSwimline();
+
+      return true;
+    }
+
+    return false;
+  },
+});

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно