Browse Source

Merge branch 'erikturk-copyMany' into devel

v0.75
Lauri Ojansivu 7 years ago
parent
commit
7f4b382d2f

+ 11 - 0
CHANGELOG.md

@@ -1,3 +1,14 @@
+# v0.75 2018-02-16 Wekan release
+
+This release adds the following new features:
+
+- [Checklist templates](https://github.com/wekan/wekan/pull/1470);
+- Added [Finnish language changelog](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog)
+  and [more Finnish traslations](https://github.com/wekan/wekan/blob/devel/sandstorm-pkgdef.capnp)
+  to Sandstorm.
+
+Thanks to GitHub users erikturk and xet7 for their contributions.
+
 # v0.74 2018-02-13 Wekan release
 
 This release fixes the following bugs:

+ 11 - 0
client/components/cards/cardDetails.jade

@@ -135,6 +135,7 @@ template(name="cardDetailsActionsPopup")
     ul.pop-over-list
       li: a.js-move-card {{_ 'moveCardPopup-title'}}
       li: a.js-copy-card {{_ 'copyCardPopup-title'}}
+      li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}}
       unless archived
         li: a.js-archive {{_ 'archive-card'}}
       li: a.js-more {{_ 'cardMorePopup-title'}}
@@ -154,6 +155,16 @@ template(name="copyCardPopup")
   else
     +boardsAndLists
 
+
+template(name="copyChecklistToManyCardsPopup")
+  label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
+  textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
+    | {{_ 'copyChecklistToManyCardsPopup-format'}}
+  if isSandstorm
+    +boardLists
+  else
+    +boardsAndLists
+
 template(name="boardsAndLists")
   select.js-select-boards
     each boards

+ 55 - 0
client/components/cards/cardDetails.js

@@ -170,6 +170,7 @@ Template.cardDetailsActionsPopup.events({
   'click .js-spent-time': Popup.open('editCardSpentTime'),
   'click .js-move-card': Popup.open('moveCard'),
   'click .js-copy-card': Popup.open('copyCard'),
+  'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
   'click .js-move-card-to-top' (evt) {
     evt.preventDefault();
     const minOrder = _.min(this.list().cards(this.swimlaneId).map((c) => c.sort));
@@ -296,6 +297,60 @@ Template.copyCardPopup.events({
   },
 });
 
+
+Template.copyChecklistToManyCardsPopup.events({
+  'click .js-select-list' (evt) {
+    const card = Cards.findOne(Session.get('currentCard'));
+    const oldId = card._id;
+    card._id = null;
+    card.listId = this._id;
+    const list = Lists.findOne(card.listId);
+    card.boardId = list.boardId;
+    const textarea = $(evt.currentTarget).parents('.content').find('textarea');
+    const titleEntry = textarea.val().trim();
+    // insert new card to the bottom of new list
+    card.sort = Lists.findOne(this._id).cards().count();
+
+    if (titleEntry) {
+      const titleList = JSON.parse(titleEntry);
+      for (let i = 0; i < titleList.length; i++){
+        const obj = titleList[i];
+        card.title = obj.title;
+        card.description = obj.description;
+        card.coverId = '';
+        const _id = Cards.insert(card);
+        // In case the filter is active we need to add the newly inserted card in
+        // the list of exceptions -- cards that are not filtered. Otherwise the
+        // card will disappear instantly.
+        // See https://github.com/wekan/wekan/issues/80
+        Filter.addException(_id);
+
+        // copy checklists
+        let cursor = Checklists.find({cardId: oldId});
+        cursor.forEach(function() {
+          'use strict';
+          const checklist = arguments[0];
+          checklist.cardId = _id;
+          checklist._id = null;
+          Checklists.insert(checklist);
+        });
+
+        // copy card comments
+        cursor = CardComments.find({cardId: oldId});
+        cursor.forEach(function () {
+          'use strict';
+          const comment = arguments[0];
+          comment.cardId = _id;
+          comment._id = null;
+          CardComments.insert(comment);
+        });
+      }
+      Popup.close();
+    }
+  },
+});
+
+
 Template.cardMorePopup.events({
   'click .js-copy-card-link-to-clipboard' () {
     // Clipboard code from:

+ 3 - 0
i18n/ar.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
     "copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
     "copyCardPopup-title": "نسخ البطاقة",
+    "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": "إنشاء",
     "createBoardPopup-title": "إنشاء لوحة",
     "chooseBoardSourcePopup-title": "استيراد لوحة",

+ 3 - 0
i18n/br.i18n.json

@@ -159,6 +159,9 @@
     "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": "Krouiñ",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",

+ 3 - 0
i18n/ca.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
     "copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
     "copyCardPopup-title": "Copia la fitxa",
+    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "create": "Crea",
     "createBoardPopup-title": "Crea tauler",
     "chooseBoardSourcePopup-title": "Importa Tauler",

+ 3 - 0
i18n/cs.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
     "copy-card-link-to-clipboard": "Kopírovat adresu karty do mezipaměti",
     "copyCardPopup-title": "Kopírovat kartu",
+    "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": "Vytvořit",
     "createBoardPopup-title": "Vytvořit tablo",
     "chooseBoardSourcePopup-title": "Importovat tablo",

+ 3 - 0
i18n/de.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Sind Sie sicher, dass Sie die Checkliste löschen möchten?",
     "copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage",
     "copyCardPopup-title": "Karte kopieren",
+    "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": "Erstellen",
     "createBoardPopup-title": "Board erstellen",
     "chooseBoardSourcePopup-title": "Board importieren",

+ 3 - 0
i18n/el.i18n.json

@@ -159,6 +159,9 @@
     "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": "Δημιουργία",
     "createBoardPopup-title": "Create Board",
     "chooseBoardSourcePopup-title": "Import board",

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

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/en.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/eo.i18n.json

@@ -159,6 +159,9 @@
     "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": "Krei",
     "createBoardPopup-title": "Krei tavolon",
     "chooseBoardSourcePopup-title": "Import board",

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

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "¿Estás segur@ que querés borrar la lista de ítems?",
     "copy-card-link-to-clipboard": "Copiar enlace a tarjeta en el portapapeles",
     "copyCardPopup-title": "Copiar Tarjeta",
+    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "create": "Crear",
     "createBoardPopup-title": "Crear Tablero",
     "chooseBoardSourcePopup-title": "Importar tablero",

+ 3 - 0
i18n/es.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de tareas",
     "copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
     "copyCardPopup-title": "Copiar la tarjeta",
+    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "create": "Crear",
     "createBoardPopup-title": "Crear tablero",
     "chooseBoardSourcePopup-title": "Importar un tablero",

+ 3 - 0
i18n/eu.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Ziur zaude kontrol-zerrenda ezabatu nahi duzula",
     "copy-card-link-to-clipboard": "Kopiatu txartela arbelera",
     "copyCardPopup-title": "Kopiatu txartela",
+    "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": "Sortu",
     "createBoardPopup-title": "Sortu arbela",
     "chooseBoardSourcePopup-title": "Inportatu arbela",

+ 3 - 0
i18n/fa.i18n.json

@@ -159,6 +159,9 @@
     "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": "ایجاد",
     "createBoardPopup-title": "ایجاد تخته",
     "chooseBoardSourcePopup-title": "Import board",

+ 3 - 0
i18n/fi.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Haluatko varmasti poistaa tarkistuslistan",
     "copy-card-link-to-clipboard": "Kopioi kortin linkki leikepöydälle",
     "copyCardPopup-title": "Kopioi kortti",
+    "copyChecklistToManyCardsPopup-title": "Kopioi tarkistuslistan malli monille korteille",
+    "copyChecklistToManyCardsPopup-instructions": "Kohde korttien otsikot ja kuvaukset JSON muodossa",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Ensimmäisen kortin otsikko\", \"description\":\"Ensimmäisen kortin kuvaus\"}, {\"title\":\"Toisen kortin otsikko\",\"description\":\"Toisen kortin kuvaus\"},{\"title\":\"Viimeisen kortin otsikko\",\"description\":\"Viimeisen kortin kuvaus\"} ]",
     "create": "Luo",
     "createBoardPopup-title": "Luo taulu",
     "chooseBoardSourcePopup-title": "Tuo taulu",

+ 3 - 0
i18n/fr.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer cette checklist ?",
     "copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
     "copyCardPopup-title": "Copier la carte",
+    "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": "Créer",
     "createBoardPopup-title": "Créer un tableau",
     "chooseBoardSourcePopup-title": "Importer un tableau",

+ 3 - 0
i18n/gl.i18n.json

@@ -159,6 +159,9 @@
     "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": "Crear",
     "createBoardPopup-title": "Crear taboleiro",
     "chooseBoardSourcePopup-title": "Importar taboleiro",

+ 3 - 0
i18n/he.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "האם אתה בטוח שברצונך למחוק את רשימת המשימות",
     "copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים",
     "copyCardPopup-title": "העתק כרטיס",
+    "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": "יצירה",
     "createBoardPopup-title": "יצירת לוח",
     "chooseBoardSourcePopup-title": "ייבוא לוח",

+ 3 - 0
i18n/hu.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Biztosan törölni szeretné az ellenőrzőlistát?",
     "copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
     "copyCardPopup-title": "Kártya másolása",
+    "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": "Létrehozás",
     "createBoardPopup-title": "Tábla létrehozása",
     "chooseBoardSourcePopup-title": "Tábla importálása",

+ 3 - 0
i18n/id.i18n.json

@@ -159,6 +159,9 @@
     "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": "Buat",
     "createBoardPopup-title": "Buat Panel",
     "chooseBoardSourcePopup-title": "Import board",

+ 3 - 0
i18n/ig.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/it.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Sei sicuro di voler cancellare questa checklist?",
     "copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
     "copyCardPopup-title": "Copia Scheda",
+    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "create": "Crea",
     "createBoardPopup-title": "Crea bacheca",
     "chooseBoardSourcePopup-title": "Importa bacheca",

+ 3 - 0
i18n/ja.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
     "copy-card-link-to-clipboard": "カードへのリンクをクリップボードにコピー",
     "copyCardPopup-title": "カードをコピー",
+    "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": "作成",
     "createBoardPopup-title": "ボードの作成",
     "chooseBoardSourcePopup-title": "ボードをインポート",

+ 3 - 0
i18n/ko.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "정말 이 체크리스트를 삭제할까요?",
     "copy-card-link-to-clipboard": "클립보드에 카드의 링크가 복사되었습니다.",
     "copyCardPopup-title": "카드 복사",
+    "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": "생성",
     "createBoardPopup-title": "보드 생성",
     "chooseBoardSourcePopup-title": "보드 가져오기",

+ 3 - 0
i18n/lv.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/mn.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/nb.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/nl.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Weet u zeker dat u de checklist wilt verwijderen",
     "copy-card-link-to-clipboard": "Kopieer kaart link naar klembord",
     "copyCardPopup-title": "Kopieer kaart",
+    "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": "Aanmaken",
     "createBoardPopup-title": "Bord aanmaken",
     "chooseBoardSourcePopup-title": "Importeer bord",

+ 3 - 0
i18n/pl.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
     "copy-card-link-to-clipboard": "Copy card link to clipboard",
     "copyCardPopup-title": "Skopiuj kartę",
+    "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": "Utwórz",
     "createBoardPopup-title": "Utwórz tablicę",
     "chooseBoardSourcePopup-title": "Import tablicy",

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

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Tem a certeza de que pretende eliminar lista de verificação",
     "copy-card-link-to-clipboard": "Copiar link do cartão para a área de transferência",
     "copyCardPopup-title": "Copiar o cartão",
+    "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": "Criar",
     "createBoardPopup-title": "Criar Quadro",
     "chooseBoardSourcePopup-title": "Importar quadro",

+ 3 - 0
i18n/pt.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/ro.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/ru.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Вы уверены, что хотите удалить контрольный список?",
     "copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
     "copyCardPopup-title": "Копировать карточку",
+    "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": "Создать",
     "createBoardPopup-title": "Создать доску",
     "chooseBoardSourcePopup-title": "Импортировать доску",

+ 3 - 0
i18n/sr.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/sv.i18n.json

@@ -159,6 +159,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-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": "Skapa",
     "createBoardPopup-title": "Skapa anslagstavla",
     "chooseBoardSourcePopup-title": "Importera anslagstavla",

+ 3 - 0
i18n/ta.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/th.i18n.json

@@ -159,6 +159,9 @@
     "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": "สร้าง",
     "createBoardPopup-title": "สร้างบอร์ด",
     "chooseBoardSourcePopup-title": "Import board",

+ 3 - 0
i18n/tr.i18n.json

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Yapılacak listesini silmek istediğinize emin misiniz",
     "copy-card-link-to-clipboard": "Kartın linkini kopyala",
     "copyCardPopup-title": "Kartı Kopyala",
+    "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
+    "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
+    "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
     "create": "Oluştur",
     "createBoardPopup-title": "Pano Oluşturma",
     "chooseBoardSourcePopup-title": "Panoyu içe aktar",

+ 3 - 0
i18n/uk.i18n.json

@@ -159,6 +159,9 @@
     "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",

+ 3 - 0
i18n/vi.i18n.json

@@ -159,6 +159,9 @@
     "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",

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

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "确认要删除清单吗",
     "copy-card-link-to-clipboard": "复制卡片链接到剪贴板",
     "copyCardPopup-title": "复制卡片",
+    "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": "创建",
     "createBoardPopup-title": "创建看板",
     "chooseBoardSourcePopup-title": "导入看板",

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

@@ -159,6 +159,9 @@
     "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
     "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": "建立",
     "createBoardPopup-title": "建立看板",
     "chooseBoardSourcePopup-title": "匯入看板",

+ 20 - 0
meta/t9n-changelog/fi.md

@@ -0,0 +1,20 @@
+# v0.75 2018-02-16 Wekan julkaisu
+
+Tämä julkaisu lisää seuraavat ominaisuudet:
+
+- [Tarkistuslista mallit](https://github.com/wekan/wekan/pull/1470);
+- Lisätty [Suomenkielinen muutosloki](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog) 
+  ja [lisää suomennoksia](https://github.com/wekan/wekan/blob/devel/sandstorm-pkgdef.capnp)
+  Sandstormiin.
+
+
+Kiitos GitHub käyttäjille erikturk ja xet7 heidän osallistumisistaan.
+
+# v0.74 2018-02-13 Wekan julkaisu
+
+Tämä julkaisu korjaa seuraavat bugit:
+
+- [Poistettu Emoji tuki, jotta MAC osoitteet, kellonajat jne näkyvät oikein](https://github.com/wekan/wekan/commit/056843d66c361594d5d4478cfe86e2e405333b91).
+  HUOM: Voit silti käyttää Unicode Emojeita, tämä vain poistaa rikkinäisen automaattimuunnoksen Emojeiksi.
+
+Kiitos GitHub käyttäjälle xet7 osallistumisista.

+ 1 - 1
package.json

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

+ 11 - 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 = 59,
+    appVersion = 60,
     # Increment this for every release.
 
-    appMarketingVersion = (defaultText = "0.74.0~2018-02-13"),
+    appMarketingVersion = (defaultText = "0.75.0~2018-02-16"),
     # Human-readable presentation of the app version.
 
     minUpgradableAppVersion = 0,
@@ -90,6 +90,7 @@ const pkgdef :Spk.PackageDefinition = (
         defaultText = embed "CHANGELOG.md",
         localizations = [
           (locale = "fr", text = embed "meta/t9n-changelog/fr.md"),
+          (locale = "fi", text = embed "meta/t9n-changelog/fi.md"),
         ],
       )
     )
@@ -117,12 +118,14 @@ const pkgdef :Spk.PackageDefinition = (
           defaultText = "participate",
           localizations = [
             (locale = "fr", text = "participer"),
+            (locale = "fi", text = "osallistu"),
           ],
         ),
         description = (
           defaultText = "allows participating in the board",
           localizations = [
             (locale = "fr", text = "permet de participer dans le tableau"),
+            (locale = "fi", text = "mahdollistaa taululle osallistumisen"),
           ],
         )
       ), (
@@ -131,12 +134,14 @@ const pkgdef :Spk.PackageDefinition = (
           defaultText = "configure",
           localizations = [
             (locale = "fr", text = "configurer"),
+            (locale = "fi", text = "asetukset"),
           ],
         ),
         description = (
           defaultText = "allows configuring the board",
           localizations = [
             (locale = "fr", text = "permet de configurer le tableau"),
+            (locale = "fi", text = "mahdollistaa taulun asetusten määrittämisen"),
           ],
         )
       )],
@@ -146,6 +151,7 @@ const pkgdef :Spk.PackageDefinition = (
           defaultText = "observer",
           localizations = [
             (locale = "fr", text = "observateur"),
+            (locale = "fi", text = "tarkkailija"),
           ],
         ),
         permissions = [false, false],
@@ -153,6 +159,7 @@ const pkgdef :Spk.PackageDefinition = (
           defaultText = "can read",
           localizations = [
             (locale = "fr", text = "peut lire"),
+            (locale = "fi", text = "voi lukea"),
           ],
         )
       ), (
@@ -160,6 +167,7 @@ const pkgdef :Spk.PackageDefinition = (
           defaultText = "member",
           localizations = [
             (locale = "fr", text = "membre"),
+            (locale = "fi", text = "jäsen"),
           ],
         ),
         permissions = [true, false],
@@ -167,6 +175,7 @@ const pkgdef :Spk.PackageDefinition = (
           defaultText = "can edit",
           localizations = [
             (locale = "fr", text = "peut éditer"),
+            (locale = "fi", text = "voi muokata"),
           ],
         ),
         default = true,