Selaa lähdekoodia

Create unique board names when importing

John R. Supplee 4 vuotta sitten
vanhempi
sitoutus
ad6da9bf37
4 muutettua tiedostoa jossa 22 lisäystä ja 17 poistoa
  1. 1 1
      client/components/boards/boardsList.js
  2. 19 14
      models/boards.js
  3. 1 1
      models/trelloCreator.js
  4. 1 1
      models/wekanCreator.js

+ 1 - 1
client/components/boards/boardsList.js

@@ -129,7 +129,7 @@ BlazeComponent.extendComponent({
             {
               sort: Boards.find({ archived: false }).count(),
               type: 'board',
-              title: Boards.findOne(this.currentData()._id).copyTitle(),
+              title: Boards.findOne(this.currentData()._id).title,
             },
             (err, res) => {
               if (err) {

+ 19 - 14
models/boards.js

@@ -510,6 +510,7 @@ Boards.helpers({
     const oldId = this._id;
     delete this._id;
     delete this.slug;
+    this.title = this.copyTitle();
     const _id = Boards.insert(this);
 
     // Copy all swimlanes in board
@@ -569,20 +570,7 @@ Boards.helpers({
    * @returns {string|null}
    */
   copyTitle() {
-    const m = this.title.match(/^(?<title>.*?)\s*(\[(?<num>\d+)]\s*$|\s*$)/);
-    const title = escapeForRegex(m.groups.title);
-    let num = 0;
-    Boards.find({ title: new RegExp(`^${title}\\s*\\[\\d+]\\s*$`) }).forEach(
-      board => {
-        const m = board.title.match(/^(?<title>.*?)\s*\[(?<num>\d+)]\s*$/);
-        if (m) {
-          const n = parseInt(m.groups.num, 10);
-          num = num < n ? n : num;
-        }
-      },
-    );
-
-    return `${title} [${num + 1}]`;
+    return Boards.uniqueTitle(this.title);
   },
 
   /**
@@ -1274,6 +1262,23 @@ function boardRemover(userId, doc) {
   );
 }
 
+Boards.uniqueTitle = title => {
+  const m = title.match(/^(?<title>.*?)\s*(\[(?<num>\d+)]\s*$|\s*$)/);
+  const base = escapeForRegex(m.groups.title);
+  let num = 0;
+  Boards.find({ title: new RegExp(`^${base}\\s*\\[\\d+]\\s*$`) }).forEach(
+    board => {
+      const m = board.title.match(/^(?<title>.*?)\s*\[(?<num>\d+)]\s*$/);
+      if (m) {
+        const n = parseInt(m.groups.num, 10);
+        num = num < n ? n : num;
+      }
+    },
+  );
+
+  return `${base} [${num + 1}]`;
+};
+
 Boards.userSearch = (
   userId,
   selector = {},

+ 1 - 1
models/trelloCreator.js

@@ -177,7 +177,7 @@ export class TrelloCreator {
       permission: this.getPermission(trelloBoard.prefs.permissionLevel),
       slug: getSlug(trelloBoard.name) || 'board',
       stars: 0,
-      title: trelloBoard.name,
+      title: Boards.uniqueTitle(trelloBoard.name),
     };
     // now add other members
     if (trelloBoard.memberships) {

+ 1 - 1
models/wekanCreator.js

@@ -253,7 +253,7 @@ export class WekanCreator {
       permission: boardToImport.permission,
       slug: getSlug(boardToImport.title) || 'board',
       stars: 0,
-      title: boardToImport.title,
+      title: Boards.uniqueTitle(boardToImport.title),
     };
     // now add other members
     if (boardToImport.members) {