浏览代码

Link description

Andrés Manelli 7 年之前
父节点
当前提交
64367a01dd

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

@@ -109,10 +109,10 @@ template(name="cardDetails")
             a.js-open-inlined-form {{_ 'view-it'}}
             = ' - '
             a.js-close-inlined-form {{_ 'discard'}}
-    else if description
+    else if getDescription
       h3.card-details-item-title {{_ 'description'}}
       +viewer
-        = description
+        = getDescription
 
     .card-details-items
       .card-details-item.card-details-item-name

+ 2 - 1
client/components/cards/cardDetails.js

@@ -43,7 +43,8 @@ BlazeComponent.extendComponent({
   },
 
   canModifyCard() {
-    return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
+    return Meteor.user() && Meteor.user().isBoardMember() &&
+      !Meteor.user().isCommentOnly() && !this.currentData().isImported();
   },
 
   scrollParentContainer() {

+ 5 - 5
client/components/cards/minicard.jade

@@ -1,7 +1,7 @@
 template(name="minicard")
   .minicard(
-    class="{{#if importedCard}}imported-card{{/if}}"
-    class="{{#if importedBoard}}imported-board{{/if}}")
+    class="{{#if isImportedCard}}imported-card{{/if}}"
+    class="{{#if isImportedBoard}}imported-board{{/if}}")
     if cover
       .minicard-cover(style="background-image: url('{{cover.url}}');")
     if labels
@@ -15,7 +15,7 @@ template(name="minicard")
       if $eq 'prefix-with-parent' currentBoard.presentParentTask
         .parent-prefix
           | {{ parentCardName }}
-      if imported
+      if isImported
         span.imported-icon.fa.fa-share-alt
       +viewer
         | {{ title }}
@@ -67,8 +67,8 @@ template(name="minicard")
         .badge(title="{{_ 'card-comments-title' comments.count }}")
           span.badge-icon.fa.fa-comment-o.badge-comment
           span.badge-text= comments.count
-      if description
-        .badge.badge-state-image-only(title=description)
+      if getDescription
+        .badge.badge-state-image-only(title=getDescription)
           span.badge-icon.fa.fa-align-left
       if attachments.count
         .badge

+ 0 - 9
client/components/cards/minicard.js

@@ -6,13 +6,4 @@ BlazeComponent.extendComponent({
   template() {
     return 'minicard';
   },
-  importedCard() {
-    return this.currentData().type === 'cardType-importedCard';
-  },
-  importedBoard() {
-    return this.currentData().type === 'cardType-importedBoard';
-  },
-  imported() {
-    return this.importedCard() || this.importedBoard();
-  },
 }).register('minicard');

+ 5 - 1
client/components/lists/listBody.js

@@ -281,6 +281,8 @@ BlazeComponent.extendComponent({
       archived: false,
       'members.userId': Meteor.userId(),
       _id: {$ne: Session.get('currentBoard')},
+    }, {
+      sort: ['title'],
     })._id;
     // Subscribe to this board
     subManager.subscribe('board', boardId);
@@ -370,6 +372,7 @@ BlazeComponent.extendComponent({
         //IMPORT BOARD
         evt.stopPropagation();
         evt.preventDefault();
+        const impBoardId = $('.js-select-boards option:selected').val();
         const _id = Cards.insert({
           title: $('.js-select-boards option:selected').text(), //dummy
           listId: this.listId,
@@ -377,7 +380,8 @@ BlazeComponent.extendComponent({
           boardId: this.boardId,
           sort: Lists.findOne(this.listId).cards().count(),
           type: 'cardType-importedBoard',
-          importedId: $('.js-select-boards option:selected').val(),
+          importedId: impBoardId,
+          description: Boards.findOne({_id: impBoardId}).description,
         });
         Filter.addException(_id);
         Popup.close();

+ 33 - 0
models/cards.js

@@ -393,6 +393,39 @@ Cards.helpers({
   isTopLevel() {
     return this.parentId === '';
   },
+
+  isImportedCard() {
+    return this.type === 'cardType-importedCard';
+  },
+
+  isImportedBoard() {
+    return this.type === 'cardType-importedBoard';
+  },
+
+  isImported() {
+    return this.isImportedCard() || this.isImportedBoard();
+  },
+
+  getDescription() {
+    if (this.isImportedCard()) {
+      const card = Cards.findOne({_id: this.importedId});
+      if (card && card.description)
+        return card.description;
+      else
+        return null;
+    } else if (this.isImportedBoard()) {
+      const board = Boards.findOne({_id: this.importedId});
+      if (board && board.description)
+        return board.description;
+      else
+        return null;
+    } else {
+      if (this.description)
+        return this.description;
+      else
+        return null;
+    }
+  },
 });
 
 Cards.mutations({

+ 3 - 1
server/publications/boards.js

@@ -98,7 +98,9 @@ Meteor.publishRelations('board', function(boardId) {
     //
     // And in the meantime our code below works pretty well -- it's not even a
     // hack!
-    this.cursor(Cards.find({ boardId }), function(cardId) {
+    this.cursor(Cards.find({ boardId }), function(cardId, card) {
+      this.cursor(Cards.find({_id: card.importedId}));
+      this.cursor(Boards.find({_id: card.importedId}));
       this.cursor(CardComments.find({ cardId }));
       this.cursor(Attachments.find({ cardId }));
       this.cursor(Checklists.find({ cardId }));