浏览代码

Merge branch 'add-toggle-watch-icon-on-card' of github.com:Rayene123/wekan into Rayene123-add-toggle-watch-icon-on-card

Lauri Ojansivu 2 月之前
父节点
当前提交
bc2eab6f9d
共有 3 个文件被更改,包括 54 次插入24 次删除
  1. 31 24
      client/components/boards/boardsList.js
  2. 9 0
      client/components/cards/minicard.jade
  3. 14 0
      client/components/cards/minicard.js

+ 31 - 24
client/components/boards/boardsList.js

@@ -239,34 +239,41 @@ BlazeComponent.extendComponent({
           evt.preventDefault();
         },
         'click .js-clone-board'(evt) {
-          let title = getSlug(ReactiveCache.getBoard(this.currentData()._id).title) || 'cloned-board';
-          Meteor.call(
-            'copyBoard',
-            this.currentData()._id,
-            {
-              sort: ReactiveCache.getBoards({ archived: false }).length,
-              type: 'board',
-              title: ReactiveCache.getBoard(this.currentData()._id).title,
-            },
-            (err, res) => {
-              if (err) {
-                console.error(err);
-              } else {
-                Session.set('fromBoard', null);
-                subManager.subscribe('board', res, false);
-                FlowRouter.go('board', {
-                  id: res,
-                  slug: title,
-                });
-              }
-            },
-          );
-          evt.preventDefault();
+          if (confirm('Are you sure you want to clone this board?')) {
+            let title =
+              getSlug(ReactiveCache.getBoard(this.currentData()._id).title) ||
+              'cloned-board';
+            Meteor.call(
+              'copyBoard',
+              this.currentData()._id,
+              {
+                sort: ReactiveCache.getBoards({ archived: false }).length,
+                type: 'board',
+                title: ReactiveCache.getBoard(this.currentData()._id).title,
+              },
+              (err, res) => {
+                if (err) {
+                  console.error(err);
+                } else {
+                  Session.set('fromBoard', null);
+                  subManager.subscribe('board', res, false);
+                  FlowRouter.go('board', {
+                    id: res,
+                    slug: title,
+                  });
+                }
+              },
+            );
+            evt.preventDefault();
+          }
         },
         'click .js-archive-board'(evt) {
-          const boardId = this.currentData()._id;
+          if (confirm('Are you sure you want to archive this board?'))
+          {
+            const boardId = this.currentData()._id;
           Meteor.call('archiveBoard', boardId);
           evt.preventDefault();
+          }
         },
         'click .js-accept-invite'() {
           const boardId = this.currentData()._id;

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

@@ -225,3 +225,12 @@ template(name="minicardDetailsActionsPopup")
         a.js-link
           i.fa.fa-link
           | {{_ 'link-card'}}
+      li
+      a.js-toggle-watch-card
+        if isWatching
+          i.fa.fa-eye
+          |  {{_ 'unwatch'}}
+        else
+          i.fa.fa-eye-slash
+          |  {{_ 'watch'}}
+

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

@@ -46,6 +46,10 @@ BlazeComponent.extendComponent({
     }
     return ret;
   },
+  isWatching() {
+    const card = this.currentData();
+    return card.findWatcher(Meteor.userId());
+  },
 
   showMembers() {
     // cache "board" to reduce the mini-mongodb access
@@ -125,6 +129,9 @@ Template.minicard.helpers({
       ? Meteor.connection._lastSessionId
       : null;
   },
+  isWatching() {
+    return this.findWatcher(Meteor.userId());
+  }
 });
 
 BlazeComponent.extendComponent({
@@ -178,4 +185,11 @@ Template.minicardDetailsActionsPopup.events({
     this.archive();
     Utils.goBoardId(this.boardId);
   }),
+  'click .js-toggle-watch-card'() {
+    const currentCard = this;
+    const level = currentCard.findWatcher(Meteor.userId()) ? null : 'watching';
+    Meteor.call('watch', 'card', currentCard._id, level, (err, ret) => {
+      if (!err && ret) Popup.back();
+    });
+  },
 });