Browse Source

When logged in, use database for setting, so that changes are
immediate. Only on public board use cookies.
Comment out Collapse CSS that is not in use.

Thanks to xet7 !

Lauri Ojansivu 5 years ago
parent
commit
351d4767d7

+ 36 - 21
client/components/boards/boardBody.js

@@ -196,9 +196,20 @@ BlazeComponent.extendComponent({
     const cookies = new Cookies();
 
     this.autorun(() => {
+      let showDesktopDragHandles = false;
+      currentUser = Meteor.user();
+      if (currentUser) {
+        showDesktopDragHandles = (currentUser.profile || {}).showDesktopDragHandles;
+      } else {
+        if (cookies.has('showDesktopDragHandles')) {
+          showDesktopDragHandles = true;
+        } else {
+          showDesktopDragHandles = false;
+        }
+      }
       if (
         Utils.isMiniScreen() ||
-        (!Utils.isMiniScreen() && cookies.has('showDesktopDragHandles'))
+        (!Utils.isMiniScreen() && showDesktopDragHandles)
       ) {
         $swimlanesDom.sortable({
           handle: '.js-swimlane-header-handle',
@@ -230,33 +241,36 @@ BlazeComponent.extendComponent({
   },
 
   isViewSwimlanes() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    const currentUser = Meteor.user();
-    if (!currentUser) {
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).boardView === 'board-view-swimlanes';
+    } else {
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
       return cookies.get('boardView') === 'board-view-swimlanes';
     }
-    return (currentUser.profile || {}).boardView === 'board-view-swimlanes';
   },
 
   isViewLists() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    const currentUser = Meteor.user();
-    if (!currentUser) {
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).boardView === 'board-view-lists';
+    } else {
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
       return cookies.get('boardView') === 'board-view-lists';
     }
-    return (currentUser.profile || {}).boardView === 'board-view-lists';
   },
 
   isViewCalendar() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    const currentUser = Meteor.user();
-    if (!currentUser) {
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).boardView === 'board-view-cal';
+    } else {
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
       return cookies.get('boardView') === 'board-view-cal';
     }
-    return (currentUser.profile || {}).boardView === 'board-view-cal';
   },
 
   openNewListForm() {
@@ -413,12 +427,13 @@ BlazeComponent.extendComponent({
     };
   },
   isViewCalendar() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    const currentUser = Meteor.user();
-    if (!currentUser) {
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).boardView === 'board-view-cal';
+    } else {
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
       return cookies.get('boardView') === 'board-view-cal';
     }
-    return (currentUser.profile || {}).boardView === 'board-view-cal';
   },
 }).register('calendarView');

+ 20 - 10
client/components/cards/minicard.js

@@ -33,21 +33,31 @@ BlazeComponent.extendComponent({
 
 Template.minicard.helpers({
   showDesktopDragHandles() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('showDesktopDragHandles')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).showDesktopDragHandles;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
   hiddenMinicardLabelText() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('hiddenMinicardLabelText')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).hiddenMinicardLabelText;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('hiddenMinicardLabelText')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
 });

+ 23 - 6
client/components/lists/list.js

@@ -119,7 +119,19 @@ BlazeComponent.extendComponent({
     const cookies = new Cookies();
 
     this.autorun(() => {
-      if (!Utils.isMiniScreen() && cookies.has('showDesktopDragHandles')) {
+      let showDesktopDragHandles = false;
+      currentUser = Meteor.user();
+      if (currentUser) {
+        showDesktopDragHandles = (currentUser.profile || {}).showDesktopDragHandles;
+      } else {
+        if (cookies.has('showDesktopDragHandles')) {
+          showDesktopDragHandles = true;
+        } else {
+          showDesktopDragHandles = false;
+        }
+      }
+
+      if (!Utils.isMiniScreen() && showDesktopDragHandles) {
         $cards.sortable({
           handle: '.handle',
         });
@@ -163,12 +175,17 @@ BlazeComponent.extendComponent({
 
 Template.list.helpers({
   showDesktopDragHandles() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('showDesktopDragHandles')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).showDesktopDragHandles;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
 });

+ 10 - 5
client/components/lists/listHeader.js

@@ -102,12 +102,17 @@ BlazeComponent.extendComponent({
 
 Template.listHeader.helpers({
   showDesktopDragHandles() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('showDesktopDragHandles')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).showDesktopDragHandles;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
 });

+ 20 - 10
client/components/sidebar/sidebar.js

@@ -107,12 +107,17 @@ BlazeComponent.extendComponent({
         'click .js-toggle-sidebar': this.toggle,
         'click .js-back-home': this.setView,
         'click .js-toggle-minicard-label-text'() {
-          import { Cookies } from 'meteor/ostrio:cookies';
-          const cookies = new Cookies();
-          if (cookies.has('hiddenMinicardLabelText')) {
-            cookies.remove('hiddenMinicardLabelText'); //true
+          currentUser = Meteor.user();
+          if (currentUser) {
+            Meteor.call('toggleMinicardLabelText');
           } else {
-            cookies.set('hiddenMinicardLabelText', 'true'); //true
+            import { Cookies } from 'meteor/ostrio:cookies';
+            const cookies = new Cookies();
+            if (cookies.has('hiddenMinicardLabelText')) {
+              cookies.remove('hiddenMinicardLabelText');
+            } else {
+              cookies.set('hiddenMinicardLabelText', 'true');
+            }
           }
         },
         'click .js-shortcuts'() {
@@ -127,12 +132,17 @@ Blaze.registerHelper('Sidebar', () => Sidebar);
 
 Template.homeSidebar.helpers({
   hiddenMinicardLabelText() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('hiddenMinicardLabelText')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).hiddenMinicardLabelText;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('hiddenMinicardLabelText')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
 });

+ 10 - 5
client/components/swimlanes/swimlaneHeader.js

@@ -30,12 +30,17 @@ BlazeComponent.extendComponent({
 
 Template.swimlaneHeader.helpers({
   showDesktopDragHandles() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('showDesktopDragHandles')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).showDesktopDragHandles;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
 });

+ 22 - 22
client/components/swimlanes/swimlanes.jade

@@ -20,28 +20,28 @@ template(name="swimlane")
         if currentUser.isBoardMember
           unless currentUser.isCommentOnly
             +addListForm
-  if collapseSwimlane
-    // Minimize swimlanes next 2 lines below https://www.w3schools.com/howto/howto_js_accordion.asp
-    button(class="accordion")
-    div(class="panel")
-      .swimlane.js-lists.js-swimlane
-        if isMiniScreen
-          if currentListIsInThisSwimlane _id
-            +list(currentList)
-          unless currentList
-            each lists
-              +miniList(this)
-            if currentUser.isBoardMember
-              unless currentUser.isCommentOnly
-                +addListForm
-        else
-          each lists
-            +list(this)
-            if currentCardIsInThisList _id ../_id
-              +cardDetails(currentCard)
-          if currentUser.isBoardMember
-            unless currentUser.isCommentOnly
-              +addListForm
+  //if collapseSwimlane
+  //  // Minimize swimlanes next 2 lines below https://www.w3schools.com/howto/howto_js_accordion.asp
+  //  button(class="accordion")
+  //  div(class="panel")
+  //    .swimlane.js-lists.js-swimlane
+  //      if isMiniScreen
+  //        if currentListIsInThisSwimlane _id
+  //          +list(currentList)
+  //        unless currentList
+  //          each lists
+  //            +miniList(this)
+  //          if currentUser.isBoardMember
+  //            unless currentUser.isCommentOnly
+  //              +addListForm
+  //      else
+  //        each lists
+  //          +list(this)
+  //          if currentCardIsInThisList _id ../_id
+  //            +cardDetails(currentCard)
+  //        if currentUser.isBoardMember
+  //          unless currentUser.isCommentOnly
+  //            +addListForm
 
 template(name="listsGroup")
   .swimlane.list-group.js-lists

+ 39 - 7
client/components/swimlanes/swimlanes.js

@@ -99,7 +99,21 @@ function initSortable(boardComponent, $listsDom) {
   boardComponent.autorun(() => {
     import { Cookies } from 'meteor/ostrio:cookies';
     const cookies = new Cookies();
-    if (!Utils.isMiniScreen() && cookies.has('showDesktopDragHandles')) {
+    let showDesktopDragHandles = false;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      showDesktopDragHandles = (currentUser.profile || {}).showDesktopDragHandles;
+    } else {
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        showDesktopDragHandles = true;
+      } else {
+        showDesktopDragHandles = false;
+      }
+    }
+
+    if (!Utils.isMiniScreen() && showDesktopDragHandles) {
       $listsDom.sortable({
         handle: '.js-list-handle',
       });
@@ -186,10 +200,23 @@ BlazeComponent.extendComponent({
 
           import { Cookies } from 'meteor/ostrio:cookies';
           const cookies = new Cookies();
+          let showDesktopDragHandles = false;
+          currentUser = Meteor.user();
+          if (currentUser) {
+            showDesktopDragHandles = (currentUser.profile || {}).showDesktopDragHandles;
+          } else {
+            import { Cookies } from 'meteor/ostrio:cookies';
+            const cookies = new Cookies();
+            if (cookies.has('showDesktopDragHandles')) {
+              showDesktopDragHandles = true;
+            } else {
+              showDesktopDragHandles = false;
+            }
+          }
 
           const noDragInside = ['a', 'input', 'textarea', 'p'].concat(
             Utils.isMiniScreen() ||
-              (!Utils.isMiniScreen() && cookies.has('showDesktopDragHandles'))
+              (!Utils.isMiniScreen() && showDesktopDragHandles)
               ? ['.js-list-handle', '.js-swimlane-header-handle']
               : ['.js-list-header'],
           );
@@ -270,12 +297,17 @@ BlazeComponent.extendComponent({
 
 Template.swimlane.helpers({
   showDesktopDragHandles() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('showDesktopDragHandles')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).showDesktopDragHandles;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
   canSeeAddList() {

+ 2 - 0
client/components/swimlanes/swimlanes.styl

@@ -1,5 +1,6 @@
 @import 'nib'
 
+/*
 // Minimize swimlanes start https://www.w3schools.com/howto/howto_js_accordion.asp
 
 .accordion
@@ -33,6 +34,7 @@
   padding: 0px
 
 // Minimize swimlanes end https://www.w3schools.com/howto/howto_js_accordion.asp
+*/
 
 .swimlane
   // Even if this background color is the same as the body we can't leave it

+ 67 - 19
client/components/users/userHeader.js

@@ -5,10 +5,22 @@ Template.headerUserBar.events({
 
 Template.memberMenuPopup.helpers({
   templatesBoardId() {
-    return Meteor.user().getTemplatesBoardId();
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return Meteor.user().getTemplatesBoardId();
+    } else {
+      // No need to getTemplatesBoardId on public board
+      return false;
+    }
   },
   templatesBoardSlug() {
-    return Meteor.user().getTemplatesBoardSlug();
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return Meteor.user().getTemplatesBoardSlug();
+    } else {
+      // No need to getTemplatesBoardSlug() on public board
+      return false;
+    }
   },
 });
 
@@ -162,44 +174,73 @@ Template.changeLanguagePopup.events({
 
 Template.changeSettingsPopup.helpers({
   showDesktopDragHandles() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('showDesktopDragHandles')) {
-      return true;
+    currentUser = Meteor.user();
+    if (currentUser) {
+      return (currentUser.profile || {}).showDesktopDragHandles;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
   hiddenSystemMessages() {
-    const currentUser = Meteor.user();
+    currentUser = Meteor.user();
     if (currentUser) {
-      return Meteor.user().hasHiddenSystemMessages();
+      return (currentUser.profile || {}).hasHiddenSystemMessages;
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('hasHiddenSystemMessages')) {
+        return true;
+      } else {
+        return false;
+      }
     }
   },
   showCardsCountAt() {
-    const currentUser = Meteor.user();
+    currentUser = Meteor.user();
     if (currentUser) {
       return Meteor.user().getLimitToShowCardsCount();
     } else {
-      return false;
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      return cookies.get('limitToShowCardsCount');
     }
   },
 });
 
 Template.changeSettingsPopup.events({
   'click .js-toggle-desktop-drag-handles'() {
-    import { Cookies } from 'meteor/ostrio:cookies';
-    const cookies = new Cookies();
-    if (cookies.has('showDesktopDragHandles')) {
-      cookies.remove('showDesktopDragHandles'); //true
+    currentUser = Meteor.user();
+    if (currentUser) {
+      Meteor.call('toggleDesktopDragHandles');
     } else {
-      cookies.set('showDesktopDragHandles', 'true'); //true
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('showDesktopDragHandles')) {
+        cookies.remove('showDesktopDragHandles');
+      } else {
+        cookies.set('showDesktopDragHandles', 'true');
+      }
     }
   },
   'click .js-toggle-system-messages'() {
-    Meteor.call('toggleSystemMessages');
+    currentUser = Meteor.user();
+    if (currentUser) {
+      Meteor.call('toggleSystemMessages');
+    } else {
+      import { Cookies } from 'meteor/ostrio:cookies';
+      const cookies = new Cookies();
+      if (cookies.has('hasHiddenSystemMessages')) {
+        cookies.remove('hasHiddenSystemMessages');
+      } else {
+        cookies.set('hasHiddenSystemMessages', 'true');
+      }
+    }
   },
   'click .js-apply-show-cards-at'(event, templateInstance) {
     event.preventDefault();
@@ -208,7 +249,14 @@ Template.changeSettingsPopup.events({
       10,
     );
     if (!isNaN(minLimit)) {
-      Meteor.call('changeLimitToShowCardsCount', minLimit);
+      currentUser = Meteor.user();
+      if (currentUser) {
+        Meteor.call('changeLimitToShowCardsCount', minLimit);
+      } else {
+        import { Cookies } from 'meteor/ostrio:cookies';
+        const cookies = new Cookies();
+        cookies.set('limitToShowCardsCount', minLimit);
+      }
       Popup.back();
     }
   },

+ 53 - 18
models/users.js

@@ -119,6 +119,13 @@ Users.attachSchema(
       type: String,
       optional: true,
     },
+    'profile.showDesktopDragHandles': {
+      /**
+       * does the user want to hide system messages?
+       */
+      type: Boolean,
+      optional: true,
+    },
     'profile.hiddenSystemMessages': {
       /**
        * does the user want to hide system messages?
@@ -126,6 +133,13 @@ Users.attachSchema(
       type: Boolean,
       optional: true,
     },
+    'profile.hiddenMinicardLabelText': {
+      /**
+       * does the user want to hide minicard label texts?
+       */
+      type: Boolean,
+      optional: true,
+    },
     'profile.initials': {
       /**
        * initials of the user
@@ -184,7 +198,6 @@ Users.attachSchema(
       allowedValues: [
         'board-view-lists',
         'board-view-swimlanes',
-        'board-view-collapse',
         'board-view-cal',
       ],
     },
@@ -382,18 +395,10 @@ Users.helpers({
     }
     return ret;
   },
-  //hasSortBy() {
-  // if use doesn't have dragHandle, then we can let user to choose sort list by different order
-  //return this.hasShowDesktopDragHandles();
-  //  return false;
-  /*
-    if (typeof currentUser === 'undefined' || typeof currentUser === 'null') {
-      return false;
-    } else {
-      return this.hasShowDesktopDragHandles();
-    }
-    */
-  //},
+  hasSortBy() {
+    // if use doesn't have dragHandle, then we can let user to choose sort list by different order
+    return !this.hasShowDesktopDragHandles();
+  },
   getListSortBy() {
     return this._getListSortBy()[0];
   },
@@ -414,11 +419,21 @@ Users.helpers({
     return _.contains(notifications, activityId);
   },
 
+  hasShowDesktopDragHandles() {
+    const profile = this.profile || {};
+    return profile.showDesktopDragHandles || false;
+  },
+
   hasHiddenSystemMessages() {
     const profile = this.profile || {};
     return profile.hiddenSystemMessages || false;
   },
 
+  hasHiddenMinicardLabelText() {
+    const profile = this.profile || {};
+    return profile.hiddenMinicardLabelText || false;
+  },
+
   getEmailBuffer() {
     const { emailBuffer = [] } = this.profile || {};
     return emailBuffer;
@@ -440,11 +455,8 @@ Users.helpers({
   },
 
   getLimitToShowCardsCount() {
-    currentUser = Meteor.user();
-    if (currentUser) {
-      const profile = this.profile || {};
-      return profile.showCardsCountAt;
-    }
+    const profile = this.profile || {};
+    return profile.showCardsCountAt;
   },
 
   getName() {
@@ -524,6 +536,13 @@ Users.mutations({
       },
     };
   },
+  toggleDesktopHandles(value = false) {
+    return {
+      $set: {
+        'profile.showDesktopDragHandles': !value,
+      },
+    };
+  },
 
   toggleSystem(value = false) {
     return {
@@ -533,6 +552,14 @@ Users.mutations({
     };
   },
 
+  toggleLabelText(value = false) {
+    return {
+      $set: {
+        'profile.hiddenMinicardLabelText': !value,
+      },
+    };
+  },
+
   addNotification(activityId) {
     return {
       $addToSet: {
@@ -597,10 +624,18 @@ Meteor.methods({
     check(value, String);
     Meteor.user().setListSortBy(value);
   },
+  toggleDesktopDragHandles() {
+    const user = Meteor.user();
+    user.toggleDesktopHandles(user.hasShowDesktopDragHandles());
+  },
   toggleSystemMessages() {
     const user = Meteor.user();
     user.toggleSystem(user.hasHiddenSystemMessages());
   },
+  toggleMinicardLabelText() {
+    const user = Meteor.user();
+    user.toggleLabelText(user.hasHiddenMinicardLabelText());
+  },
   changeLimitToShowCardsCount(limit) {
     check(limit, Number);
     Meteor.user().setShowCardsCountAt(limit);

+ 16 - 8
server/migrations.js

@@ -794,24 +794,32 @@ Migrations.add('add-assignee', () => {
   );
 });
 
-Migrations.add('remove-profile-showDesktopDragHandles', () => {
+Migrations.add('add-profile-showDesktopDragHandles', () => {
   Users.update(
-    {},
     {
-      $unset: {
-        'profile.showDesktopDragHandles': 1,
+      'profile.showDesktopDragHandles': {
+        $exists: false,
+      },
+    },
+    {
+      $set: {
+        'profile.showDesktopDragHandles': false,
       },
     },
     noValidateMulti,
   );
 });
 
-Migrations.add('remove-profile-hiddenMinicardLabelText', () => {
+Migrations.add('add-profile-hiddenMinicardLabelText', () => {
   Users.update(
-    {},
     {
-      $unset: {
-        'profile.hiddenMinicardLabelText': 1,
+      'profile.hiddenMinicardLabelText': {
+        $exists: false,
+      },
+    },
+    {
+      $set: {
+        'profile.hiddenMinicardLabelText': false,
       },
     },
     noValidateMulti,