From 1c13c48beea5131690f568ebe782a04106a05125 Mon Sep 17 00:00:00 2001 From: 3onyc <3onyc@x3tech.com> Date: Sun, 16 Aug 2015 17:04:24 +0200 Subject: [PATCH 01/11] Fix removing user salt+hash from API response --- website/src/controllers/user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/src/controllers/user.js b/website/src/controllers/user.js index 949e4cfb7b..b9ad5d3d38 100644 --- a/website/src/controllers/user.js +++ b/website/src/controllers/user.js @@ -208,9 +208,9 @@ api.getUser = function(req, res, next) { user.stats.maxHealth = 50; user.stats.maxMP = res.locals.user._statsComputed.maxMP; delete user.apiToken; - if (user.auth) { - delete user.auth.hashed_password; - delete user.auth.salt; + if (user.auth && user.auth.local) { + delete user.auth.local.hashed_password; + delete user.auth.local.salt; } return res.json(200, user); }; From e762a51e4cc089930d3e7a56a9fe0dfbde98f96d Mon Sep 17 00:00:00 2001 From: TheHollidayInn Date: Wed, 19 Aug 2015 08:53:51 -0500 Subject: [PATCH 02/11] Moved menu expand directive and created menu close directive --- website/public/js/controllers/menuCtrl.js | 4 +- .../js/directives/close-menu.directive.js | 20 +++++ .../js/directives/expand-menu.directive.js | 20 +++++ website/public/manifest.json | 2 + website/views/shared/header/menu.jade | 78 +++++++++---------- 5 files changed, 82 insertions(+), 42 deletions(-) create mode 100644 website/public/js/directives/close-menu.directive.js create mode 100644 website/public/js/directives/expand-menu.directive.js diff --git a/website/public/js/controllers/menuCtrl.js b/website/public/js/controllers/menuCtrl.js index f9f8f9e69c..651735880e 100644 --- a/website/public/js/controllers/menuCtrl.js +++ b/website/public/js/controllers/menuCtrl.js @@ -9,9 +9,7 @@ angular.module('habitrpg') window.location.href = '/logout'; }; - $scope.expandMenu = function(menu) { - $scope._expandedMenu = ($scope._expandedMenu == menu) ? null : menu; - }; + $scope._expandedMenu = null; function selectNotificationValue(mysteryValue, invitationValue, cardValue, unallocatedValue, messageValue, noneValue) { var user = $scope.user; diff --git a/website/public/js/directives/close-menu.directive.js b/website/public/js/directives/close-menu.directive.js new file mode 100644 index 0000000000..776e153966 --- /dev/null +++ b/website/public/js/directives/close-menu.directive.js @@ -0,0 +1,20 @@ +'use strict'; + +(function(){ + + angular + .module('habitrpg') + .directive('closeMenu', closeMenu); + + function closeMenu() { + return { + restrict: 'A', + link: function(scope, element, attrs) { + element.on('click', function(event) { + scope._expandedMenu = null; + scope.$apply() + }); + } + } + } +}()); diff --git a/website/public/js/directives/expand-menu.directive.js b/website/public/js/directives/expand-menu.directive.js new file mode 100644 index 0000000000..73a070a2ac --- /dev/null +++ b/website/public/js/directives/expand-menu.directive.js @@ -0,0 +1,20 @@ +'use strict'; + +(function(){ + + angular + .module('habitrpg') + .directive('expandMenu', expandMenu); + + function expandMenu() { + return { + restrict: 'A', + link: function(scope, element, attrs) { + element.on('click', function(event) { + scope._expandedMenu = (scope._expandedMenu == attrs.menu) ? null : attrs.menu; + scope.$apply() + }); + } + } + } +}()); diff --git a/website/public/manifest.json b/website/public/manifest.json index 848437642a..227d42c2e0 100644 --- a/website/public/manifest.json +++ b/website/public/manifest.json @@ -58,6 +58,8 @@ "js/filters/roundLargeNumbers.js", "js/filters/taskOrdering.js", + "js/directives/close-menu.directive.js", + "js/directives/expand-menu.directive.js", "js/directives/focus-me.directive.js", "js/directives/from-now.directive.js", "js/directives/habitrpg-tasks.directive.js", diff --git a/website/views/shared/header/menu.jade b/website/views/shared/header/menu.jade index 75adc03d94..eba7ed60b8 100644 --- a/website/views/shared/header/menu.jade +++ b/website/views/shared/header/menu.jade @@ -2,9 +2,9 @@ nav.toolbar(ng-controller='MenuCtrl') .toolbar-container ul.toolbar-mobile-nav li.toolbar-mobile - a(ng-click='expandMenu("mobile")', ng-class='{active: _expandedMenu=="mobile"}') + a(data-expand-menu, menu="mobile", ng-class='{active: _expandedMenu=="mobile"}') span.glyphicon.glyphicon-align-justify - div(ng-if='_expandedMenu=="mobile"', ng-click='expandMenu(null)') + div(ng-show='_expandedMenu=="mobile"', data-close-menu) h4=env.t('menu') div ul.toolbar-submenu @@ -71,18 +71,18 @@ nav.toolbar(ng-controller='MenuCtrl') li.toolbar-subscribe-button button(ng-if='!user.purchased.plan.customerId',ui-sref='options.settings.subscription',popover-trigger='mouseenter',popover-placement='bottom',popover-title=env.t('subscriptions'),popover=env.t('subDescription'),popover-append-to-body='true')=env.t('subscribe') li.toolbar-controls-button - a(ng-click='expandMenu(null)')=env.t('close') + a(data-close-menu)=env.t('close') ul.toolbar-nav li.toolbar-button - a(ui-sref='tasks') + a(ui-sref='tasks', data-close-menu) span=env.t('tasks') li.toolbar-button-dropdown - a(ui-sref='options.profile.avatar') + a(ui-sref='options.profile.avatar', data-close-menu) span=env.t('user') - a(ng-click='expandMenu("avatar")', ng-class='{active: _expandedMenu == "avatar"}') + a(ng-class='{active: _expandedMenu == "avatar"}', data-expand-menu, menu='avatar') span ☰ - div(ng-if='_expandedMenu == "avatar"') - ul.toolbar-submenu(ng-click='expandMenu(null)') + div(ng-show='_expandedMenu == "avatar"', data-close-menu) + ul.toolbar-submenu li a(ui-sref='options.profile.avatar')=env.t('avatar') li @@ -94,12 +94,12 @@ nav.toolbar(ng-controller='MenuCtrl') li.toolbar-button-dropdown a(ui-sref='options.social.inbox', ng-if='user.inbox.newMessages') span.badge.badge-danger {{user.inbox.newMessages}} - a(ui-sref='options.social.tavern') + a(ui-sref='options.social.tavern', data-close-menu) span=env.t('social') - a(ng-click='expandMenu("social")', ng-class='{active: _expandedMenu == "social"}') + a(ng-class='{active: _expandedMenu == "social"}', data-expand-menu, menu='social') span ☰ - div(ng-if='_expandedMenu == "social"') - ul.toolbar-submenu(ng-click='expandMenu(null)') + div(ng-show='_expandedMenu == "social"', data-close-menu) + ul.toolbar-submenu li a(ui-sref='options.social.inbox') span.badge.badge-danger(ng-if='user.inbox.newMessages') {{user.inbox.newMessages}}   @@ -115,12 +115,12 @@ nav.toolbar(ng-controller='MenuCtrl') li a(ui-sref='options.social.hall.heroes')=env.t('hall') li.toolbar-button-dropdown - a(ui-sref='options.inventory.drops') + a(ui-sref='options.inventory.drops', data-close-menu) span=env.t('inventory') - a(ng-click='expandMenu("inventory")', ng-class='{active: _expandedMenu == "inventory"}') + a(ng-class='{active: _expandedMenu == "inventory"}' data-expand-menu, menu='inventory') span ☰ - div(ng-if='_expandedMenu == "inventory"') - ul.toolbar-submenu(ng-click='expandMenu(null)') + div(ng-show='_expandedMenu == "inventory"', data-close-menu) + ul.toolbar-submenu li a(ui-sref='options.inventory.drops')=env.t('market') li @@ -136,12 +136,12 @@ nav.toolbar(ng-controller='MenuCtrl') li a(ui-sref='options.inventory.seasonalshop')=env.t('seasonalShop') li.toolbar-button-dropdown - a(target="_blank" ng-href='http://data.habitrpg.com?uuid={{user._id}}') + a(target="_blank" ng-href='http://data.habitrpg.com?uuid={{user._id}}', data-close-menu) span=env.t('data') - a(ng-click='expandMenu("data")', ng-class='{active: _expandedMenu == "data"}') + a(ng-class='{active: _expandedMenu == "data"}', data-expand-menu, menu='data') span ☰ - div(ng-if='_expandedMenu == "data"') - ul.toolbar-submenu(ng-click='expandMenu(null)') + div(ng-show='_expandedMenu == "data"', data-close-menu) + ul.toolbar-submenu li a(target="_blank" ng-href='http://data.habitrpg.com?uuid={{user._id}}')=env.t('dataTool') li @@ -150,10 +150,10 @@ nav.toolbar(ng-controller='MenuCtrl') a(target="_blank" href='http://habitrpg.wikia.com/wiki/') span.glyphicon.glyphicon-question-sign span=env.t('help') - a(ng-click='expandMenu("help")', ng-class='{active: _expandedMenu == "help"}') + a(ng-class='{active: _expandedMenu == "help"}', data-expand-menu, menu='help') span ☰ - div(ng-if='_expandedMenu == "help"') - ul.toolbar-submenu(ng-click='expandMenu(null)') + div(ng-show='_expandedMenu == "help"', data-close-menu) + ul.toolbar-submenu li a(target="_blank" href='http://habitrpg.wikia.com/wiki/')=env.t('overview') li @@ -171,9 +171,9 @@ nav.toolbar(ng-controller='MenuCtrl') button.highlight(ui-sref='options.settings.subscription',popover-trigger='mouseenter',popover-placement='bottom',popover-title=env.t('subscriptions'),popover=env.t('subDescription'),popover-append-to-body='true')=env.t('subscribe') ul.toolbar-options li.toolbar-notifs - a(ng-click='expandMenu("notifs")') + a(data-expand-menu, menu='notifs') span.glyphicon(ng-class='iconClasses()') - div(ng-if='_expandedMenu=="notifs"') + div(ng-show='_expandedMenu=="notifs"', data-close-menu) h4=env.t('notifications') div ul.toolbar-notifs-notifs @@ -183,7 +183,7 @@ nav.toolbar(ng-controller='MenuCtrl') span.glyphicon.glyphicon-gift span=env.t('newSubscriberItem') li(ng-if='user.invitations.party.id') - a(ui-sref='options.social.party', ng-click='expandMenu(null)') + a(ui-sref='options.social.party') span.glyphicon.glyphicon-user span=env.t('invitedTo', {name: '{{user.invitations.party.name}}'}) li(ng-if='user.flags.cardReceived') @@ -193,11 +193,11 @@ nav.toolbar(ng-controller='MenuCtrl') a(ng-click='clearCards()', popover=env.t('clear'),popover-placement='right',popover-trigger='mouseenter',popover-append-to-body='true') span.glyphicon.glyphicon-remove-circle li(ng-repeat='guild in user.invitations.guilds') - a(ui-sref='options.social.guilds.public', ng-click='expandMenu(null)') + a(ui-sref='options.social.guilds.public') span.glyphicon.glyphicon-user span=env.t('invitedTo', {name: '{{guild.name}}'}) li(ng-if='user.flags.classSelected && !user.preferences.disableClasses && user.stats.points') - a(ui-sref='options.profile.stats', ng-click='expandMenu(null)') + a(ui-sref='options.profile.stats') span.glyphicon.glyphicon-plus-sign span=env.t('haveUnallocated', {points: '{{user.stats.points}}'}) li(ng-repeat='(k,v) in user.newMessages', ng-if='v.value') @@ -209,35 +209,35 @@ nav.toolbar(ng-controller='MenuCtrl') ul.toolbar-controls li.toolbar-controls-button - a(ng-click='expandMenu(null)')=env.t('close') + a(data-close-menu)=env.t('close') li.toolbar-audio - a(ng-click='expandMenu("audio")') + a(data-expand-menu, menu="audio") span.glyphicon(ng-class="{'glyphicon-volume-off':user.preferences.sound=='off', 'glyphicon-volume-up':user.preferences.sound!='off'}") - div(ng-if='_expandedMenu=="audio"',style='min-width:150px') + div(ng-show='_expandedMenu=="audio"',style='min-width:150px', data-close-menu) h4=env.t('audioTheme') div - ul.toolbar-submenu(ng-click='expandMenu(null)') + ul.toolbar-submenu // Using [{k,v}] instead of {k:v,k:v} to maintain order ('off' at top) for theme in ['off','danielTheBard', 'wattsTheme', 'gokulTheme'] li a(ng-class="{'bg-primary':user.preferences.sound=='#{theme}'}", ng-click="set({'preferences.sound':'#{theme}'})")=env.t('audioTheme_'+theme) ul.toolbar-controls li.toolbar-controls-button - a(ng-click='expandMenu(null)')=env.t('close') + a(data-close-menu)=env.t('close') li.toolbar-sync a(ng-click='User.sync()', popover=env.t('sync'),popover-placement='bottom',popover-trigger='mouseenter') span.glyphicon.glyphicon-refresh li.toolbar-settings - a(ng-click='expandMenu("settings")') + a(data-expand-menu, menu="settings") span.glyphicon.glyphicon-cog - div(ng-if='_expandedMenu=="settings"') + div(ng-show='_expandedMenu=="settings"', data-close-menu) h4=env.t('settings') div - ul.toolbar-submenu(ng-click='expandMenu(null)') + ul.toolbar-submenu li a(ng-click='logout()')=env.t('logout') - ul.toolbar-submenu(ng-click='expandMenu(null)') + ul.toolbar-submenu li a(ui-sref='options.settings.settings')=env.t('site') li @@ -250,14 +250,14 @@ nav.toolbar(ng-controller='MenuCtrl') a(ui-sref='options.settings.subscription')=env.t('subscription') li a(ui-sref='options.settings.notifications')=env.t('notifications') - ul.toolbar-submenu(ng-click='expandMenu(null)') + ul.toolbar-submenu li a(href="http://habitrpg.wikia.com/wiki/FAQ", target='_blank')=env.t('FAQ') li a(href="https://vimeo.com/57654086", target='_blank')=env.t('tutorials') ul.toolbar-controls li.toolbar-controls-button - a(ng-click='expandMenu(null)')=env.t('close') + a(data-close-menu)=env.t('close') ul.toolbar-wallet li.toolbar-gems(popover-trigger='mouseenter', popover-title=env.t('gemsPopoverTitle'), popover=env.t('gemsWhatFor'), popover-placement='bottom',popover-append-to-body='true') a.gem-wallet(ng-click='openModal("buyGems",{track:"Gems > Toolbar"})') From b8bd87eeb89d367727f85c7d4142f78f5e13e7e9 Mon Sep 17 00:00:00 2001 From: lacrimae Date: Thu, 20 Aug 2015 16:55:05 +0200 Subject: [PATCH 03/11] Wording: Proper English it was not --- common/locales/en/challenge.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/locales/en/challenge.json b/common/locales/en/challenge.json index abce3c33a6..edffd599a4 100644 --- a/common/locales/en/challenge.json +++ b/common/locales/en/challenge.json @@ -43,8 +43,8 @@ "exportChallengeCSV": "Export to CSV", "selectGroup": "Please select group", "challengeCreated": "Challenge created", - "sureDelCha": "Delete challenge, are you sure?", - "sureDelChaTavern": "Delete challenge, are you sure? Your gems will not be refunded.", + "sureDelCha": "Are you sure you want to delete this challenge?", + "sureDelChaTavern": "Are you sure you want to delete this challenge? Your gems will not be refunded.", "removeTasks": "Remove Tasks", "keepTasks": "Keep Tasks", "closeCha": "Close challenge and...", From 5e510aade0e9c1f1f60cb5e7c60c818c65d98113 Mon Sep 17 00:00:00 2001 From: TheHollidayInn Date: Sat, 22 Aug 2015 15:25:51 -0500 Subject: [PATCH 04/11] Added tests for new menu directives --- karma.conf.js | 2 ++ test/spec/directives/close-menu.directive.js | 32 +++++++++++++++++++ test/spec/directives/expand-menu.directive.js | 32 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 test/spec/directives/close-menu.directive.js create mode 100644 test/spec/directives/expand-menu.directive.js diff --git a/karma.conf.js b/karma.conf.js index 9f5fe99f30..cd015bf9bb 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -61,6 +61,8 @@ module.exports = function(config) { "website/public/js/filters/roundLargeNumbers.js", "website/public/js/filters/taskOrdering.js", + "website/public/js/directives/expand-menu.directive.js", + "website/public/js/directives/close-menu.directive.js", "website/public/js/directives/focus-me.directive.js", "website/public/js/directives/from-now.directive.js", "website/public/js/directives/habitrpg-tasks.directive.js", diff --git a/test/spec/directives/close-menu.directive.js b/test/spec/directives/close-menu.directive.js new file mode 100644 index 0000000000..7cf41d571c --- /dev/null +++ b/test/spec/directives/close-menu.directive.js @@ -0,0 +1,32 @@ +'use strict'; + +describe('closeMenu Directive', function() { + var element, menuElement, scope, ctrl; + + beforeEach(module('habitrpg')); + + beforeEach(inject(function($rootScope, $compile, $controller) { + scope = $rootScope.$new(); + + ctrl = $controller('MenuCtrl', {$scope: scope}); + + element = ''; + + element = $compile(element)(scope); + menuElement = $compile(element)(scope); + scope.$digest(); + })); + + it('closes a connected menu when element is clicked', function() { + inject(function($timeout) { + var clickSpy = sandbox.spy(); + + element.appendTo(document.body); + element.on('click', clickSpy); + element.triggerHandler('click'); + + expect(scope._expandedMenu).to.equal(null) + expect(clickSpy).to.have.been.called; + }); + }); +}); diff --git a/test/spec/directives/expand-menu.directive.js b/test/spec/directives/expand-menu.directive.js new file mode 100644 index 0000000000..9c53149486 --- /dev/null +++ b/test/spec/directives/expand-menu.directive.js @@ -0,0 +1,32 @@ +'use strict'; + +describe('expandMenu Directive', function() { + var element, menuElement, scope, ctrl, elm; + + beforeEach(module('habitrpg')); + + beforeEach(inject(function($rootScope, $compile, $controller) { + scope = $rootScope.$new(); + + ctrl = $controller('MenuCtrl', {$scope: scope}); + + element = ''; + + element = $compile(element)(scope); + menuElement = $compile(element)(scope); + scope.$digest(); + })); + + it('expands a connected menu when element is clicked', function() { + inject(function($timeout) { + var clickSpy = sandbox.spy(); + + element.appendTo(document.body); + + element.on('click', clickSpy); + element.triggerHandler('click'); + + expect(clickSpy).to.have.been.called; + }); + }); +}); From 6b7ca3e823db82110f900b6d0578226dbf79c6db Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 22 Aug 2015 16:59:35 -0500 Subject: [PATCH 05/11] Use $scope instead of scope in directives --- website/public/js/directives/close-menu.directive.js | 6 +++--- website/public/js/directives/expand-menu.directive.js | 7 ++++--- website/public/js/directives/focus-me.directive.js | 4 ++-- website/public/js/directives/from-now.directive.js | 8 ++++---- website/public/js/directives/habitrpg-tasks.directive.js | 6 +++--- .../public/js/directives/popover-html-popup.directive.js | 6 +++--- website/public/js/directives/task-focus.directive.js | 4 ++-- website/public/js/directives/when-scrolled.directive.js | 4 ++-- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/website/public/js/directives/close-menu.directive.js b/website/public/js/directives/close-menu.directive.js index 776e153966..c932cfcd41 100644 --- a/website/public/js/directives/close-menu.directive.js +++ b/website/public/js/directives/close-menu.directive.js @@ -9,10 +9,10 @@ function closeMenu() { return { restrict: 'A', - link: function(scope, element, attrs) { + link: function($scope, element, attrs) { element.on('click', function(event) { - scope._expandedMenu = null; - scope.$apply() + $scope._expandedMenu = null; + $scope.$apply() }); } } diff --git a/website/public/js/directives/expand-menu.directive.js b/website/public/js/directives/expand-menu.directive.js index 73a070a2ac..95b3e30057 100644 --- a/website/public/js/directives/expand-menu.directive.js +++ b/website/public/js/directives/expand-menu.directive.js @@ -1,5 +1,6 @@ 'use strict'; +var count = 0; (function(){ angular @@ -9,10 +10,10 @@ function expandMenu() { return { restrict: 'A', - link: function(scope, element, attrs) { + link: function($scope, element, attrs) { element.on('click', function(event) { - scope._expandedMenu = (scope._expandedMenu == attrs.menu) ? null : attrs.menu; - scope.$apply() + $scope._expandedMenu = ($scope._expandedMenu === attrs.menu) ? null : attrs.menu; + $scope.$apply() }); } } diff --git a/website/public/js/directives/focus-me.directive.js b/website/public/js/directives/focus-me.directive.js index da0bd20681..0fdec0e390 100644 --- a/website/public/js/directives/focus-me.directive.js +++ b/website/public/js/directives/focus-me.directive.js @@ -12,9 +12,9 @@ function focusMe($timeout, $parse) { return { - link: function(scope, element, attrs) { + link: function($scope, element, attrs) { var model = $parse(attrs.focusMe); - scope.$watch(model, function(value) { + $scope.$watch(model, function(value) { $timeout(function() { element[0].focus(); }); diff --git a/website/public/js/directives/from-now.directive.js b/website/public/js/directives/from-now.directive.js index 83ddae3b61..54236c92ee 100644 --- a/website/public/js/directives/from-now.directive.js +++ b/website/public/js/directives/from-now.directive.js @@ -11,18 +11,18 @@ ]; function fromNow($interval, $timeout) { - return function(scope, element, attr){ + return function($scope, element, attr){ var interval, timeout; var updateText = function(){ - element.text(moment(scope.message.timestamp).fromNow()); + element.text(moment($scope.message.timestamp).fromNow()); }; var setupInterval = function() { if(interval) $interval.cancel(interval); if(timeout) $timeout.cancel(timeout); - var diff = moment().diff(scope.message.timestamp, 'minute'); + var diff = moment().diff($scope.message.timestamp, 'minute'); if(diff < 60) { // Update every minute @@ -37,7 +37,7 @@ updateText(); setupInterval(); - scope.$on('$destroy', function() { + $scope.$on('$destroy', function() { if(interval) $interval.cancel(interval); if(timeout) $timeout.cancel(timeout); }); diff --git a/website/public/js/directives/habitrpg-tasks.directive.js b/website/public/js/directives/habitrpg-tasks.directive.js index 9708c58f9e..a185cf4f6b 100644 --- a/website/public/js/directives/habitrpg-tasks.directive.js +++ b/website/public/js/directives/habitrpg-tasks.directive.js @@ -19,10 +19,10 @@ // main: '@', // true if it's the user's main list // obj: '=' //}, - link: function(scope, element, attrs) { + link: function($scope, element, attrs) { // $scope.obj needs to come from controllers, so we can pass by ref - scope.main = attrs.main; - scope.modal = attrs.modal; + $scope.main = attrs.main; + $scope.modal = attrs.modal; var dailiesView; if(User.user.preferences.dailyDueDefaultView) { dailiesView = "remaining"; diff --git a/website/public/js/directives/popover-html-popup.directive.js b/website/public/js/directives/popover-html-popup.directive.js index d4f76a1267..0c378a6872 100644 --- a/website/public/js/directives/popover-html-popup.directive.js +++ b/website/public/js/directives/popover-html-popup.directive.js @@ -15,9 +15,9 @@ restrict: 'EA', replace: true, scope: { title: '@', content: '@', placement: '@', animation: '&', isOpen: '&' }, - link: function(scope, element, attrs) { - scope.$watch('content', function(value, oldValue) { - scope.unsafeContent = $sce.trustAsHtml(scope.content); + link: function($scope, element, attrs) { + $scope.$watch('content', function(value, oldValue) { + $scope.unsafeContent = $sce.trustAsHtml($scope.content); }); }, templateUrl: 'template/popover/popover-html.html' diff --git a/website/public/js/directives/task-focus.directive.js b/website/public/js/directives/task-focus.directive.js index ae6a30c84b..00faf89259 100644 --- a/website/public/js/directives/task-focus.directive.js +++ b/website/public/js/directives/task-focus.directive.js @@ -13,8 +13,8 @@ */ function taskFocus($timeout) { - return function(scope, elem, attrs) { - scope.$watch(attrs.taskFocus, function(newVal) { + return function($scope, elem, attrs) { + $scope.$watch(attrs.taskFocus, function(newVal) { if (newVal) { $timeout(function() { elem[0].focus(); diff --git a/website/public/js/directives/when-scrolled.directive.js b/website/public/js/directives/when-scrolled.directive.js index 5fa0cbb998..86bd5fa7fb 100644 --- a/website/public/js/directives/when-scrolled.directive.js +++ b/website/public/js/directives/when-scrolled.directive.js @@ -6,12 +6,12 @@ .directive('whenScrolled', whenScrolled); function whenScrolled() { - return function(scope, elm, attr) { + return function($scope, elm, attr) { var raw = elm[0]; elm.bind('scroll', function() { if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) { - scope.$apply(attr.whenScrolled); + $scope.$apply(attr.whenScrolled); } }); }; From 01d122ad671df2cba47ac6e2b6a5d574e901626b Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 22 Aug 2015 17:04:46 -0500 Subject: [PATCH 06/11] Remove unneded declaration --- website/public/js/controllers/menuCtrl.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/website/public/js/controllers/menuCtrl.js b/website/public/js/controllers/menuCtrl.js index 651735880e..5549c527dd 100644 --- a/website/public/js/controllers/menuCtrl.js +++ b/website/public/js/controllers/menuCtrl.js @@ -9,8 +9,6 @@ angular.module('habitrpg') window.location.href = '/logout'; }; - $scope._expandedMenu = null; - function selectNotificationValue(mysteryValue, invitationValue, cardValue, unallocatedValue, messageValue, noneValue) { var user = $scope.user; if (user.purchased && user.purchased.plan && user.purchased.plan.mysteryItems && user.purchased.plan.mysteryItems.length) { From b41b629e93643a23ecefccab61086451397181aa Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 22 Aug 2015 17:08:28 -0500 Subject: [PATCH 07/11] Remove test variable --- website/public/js/directives/expand-menu.directive.js | 1 - 1 file changed, 1 deletion(-) diff --git a/website/public/js/directives/expand-menu.directive.js b/website/public/js/directives/expand-menu.directive.js index 95b3e30057..246c649a70 100644 --- a/website/public/js/directives/expand-menu.directive.js +++ b/website/public/js/directives/expand-menu.directive.js @@ -1,6 +1,5 @@ 'use strict'; -var count = 0; (function(){ angular From 9ddf5353d12825d506a686098511f703c9e27d44 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 22 Aug 2015 17:21:30 -0500 Subject: [PATCH 08/11] Clean up directive tests --- test/spec/directives/close-menu.directive.js | 21 +++++--------- test/spec/directives/expand-menu.directive.js | 28 ++++++++++--------- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/test/spec/directives/close-menu.directive.js b/test/spec/directives/close-menu.directive.js index 7cf41d571c..3c50b16cc6 100644 --- a/test/spec/directives/close-menu.directive.js +++ b/test/spec/directives/close-menu.directive.js @@ -1,32 +1,25 @@ 'use strict'; describe('closeMenu Directive', function() { - var element, menuElement, scope, ctrl; + var menuElement, scope; beforeEach(module('habitrpg')); - beforeEach(inject(function($rootScope, $compile, $controller) { + beforeEach(inject(function($rootScope, $compile) { scope = $rootScope.$new(); - ctrl = $controller('MenuCtrl', {$scope: scope}); + var element = ''; - element = ''; - - element = $compile(element)(scope); menuElement = $compile(element)(scope); scope.$digest(); })); it('closes a connected menu when element is clicked', function() { - inject(function($timeout) { - var clickSpy = sandbox.spy(); + scope._expandedMenu = 'mobile'; + menuElement.appendTo(document.body); - element.appendTo(document.body); - element.on('click', clickSpy); - element.triggerHandler('click'); + menuElement.triggerHandler('click'); - expect(scope._expandedMenu).to.equal(null) - expect(clickSpy).to.have.been.called; - }); + expect(scope._expandedMenu).to.eql(null) }); }); diff --git a/test/spec/directives/expand-menu.directive.js b/test/spec/directives/expand-menu.directive.js index 9c53149486..f73de77c5b 100644 --- a/test/spec/directives/expand-menu.directive.js +++ b/test/spec/directives/expand-menu.directive.js @@ -1,32 +1,34 @@ 'use strict'; describe('expandMenu Directive', function() { - var element, menuElement, scope, ctrl, elm; + var menuElement, scope; beforeEach(module('habitrpg')); - beforeEach(inject(function($rootScope, $compile, $controller) { + beforeEach(inject(function($rootScope, $compile) { scope = $rootScope.$new(); - ctrl = $controller('MenuCtrl', {$scope: scope}); + var element = ''; - element = ''; - - element = $compile(element)(scope); menuElement = $compile(element)(scope); scope.$digest(); })); it('expands a connected menu when element is clicked', function() { - inject(function($timeout) { - var clickSpy = sandbox.spy(); + expect(scope._expandedMenu).to.not.exist; + menuElement.appendTo(document.body); - element.appendTo(document.body); + menuElement.triggerHandler('click'); - element.on('click', clickSpy); - element.triggerHandler('click'); + expect(scope._expandedMenu).to.eql('mobile') + }); - expect(clickSpy).to.have.been.called; - }); + it('closes a connected menu when it is already open', function() { + scope._expandedMenu = 'mobile'; + menuElement.appendTo(document.body); + + menuElement.triggerHandler('click'); + + expect(scope._expandedMenu).to.eql(null) }); }); From b2c4d5c012527f813fec2362df5c388206b4eca4 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 22 Aug 2015 17:53:49 -0500 Subject: [PATCH 09/11] Add test for items that are deleted when getting the user --- test/api/get_user.coffee | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/api/get_user.coffee diff --git a/test/api/get_user.coffee b/test/api/get_user.coffee new file mode 100644 index 0000000000..530fa398a9 --- /dev/null +++ b/test/api/get_user.coffee @@ -0,0 +1,25 @@ +'use strict' + +require('../../website/src/server') + +describe 'User', -> + + before (done) -> + registerNewUser done, true + + describe 'GET /user', -> + it 'removes password from user object', (done) -> + request.get(baseURL + '/user') + .end (err, res) -> + expectCode res, 200 + localAuth = res.body.auth.local + expect(localAuth.hashed_password).to.not.exist + expect(localAuth.salt).to.not.exist + done() + + it 'removes apiToken from user object', (done) -> + request.get(baseURL + '/user') + .end (err, res) -> + expectCode res, 200 + expect(res.body.apiToken).to.not.exist + done() From 75a77faa923d4c6f768759361ece7f9f7840098d Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 22 Aug 2015 19:15:45 -0500 Subject: [PATCH 10/11] Glob files in karma.conf --- karma.conf.js | 47 ++++------------------------------------------- 1 file changed, 4 insertions(+), 43 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index cd015bf9bb..898802ef63 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -42,53 +42,14 @@ module.exports = function(config) { "website/public/js/app.js", "common/script/public/config.js", - "website/public/js/services/sharedServices.js", - "website/public/js/services/notificationServices.js", "common/script/public/userServices.js", "common/script/public/directives.js", - "website/public/js/services/analyticsServices.js", - "website/public/js/services/groupServices.js", - "website/public/js/services/chatServices.js", - "website/public/js/services/memberServices.js", - "website/public/js/services/guideServices.js", - "website/public/js/services/challengeServices.js", - "website/public/js/services/taskServices.js", - "website/public/js/services/paymentServices.js", - "website/public/js/services/questServices.js", - "website/public/js/services/statServices.js", - "website/public/js/filters/money.js", - "website/public/js/filters/roundLargeNumbers.js", - "website/public/js/filters/taskOrdering.js", + "website/public/js/services/**/*.js", + "website/public/js/filters/**/*.js", + "website/public/js/directives/**/*.directive.js", + "website/public/js/controllers/**/*.js", - "website/public/js/directives/expand-menu.directive.js", - "website/public/js/directives/close-menu.directive.js", - "website/public/js/directives/focus-me.directive.js", - "website/public/js/directives/from-now.directive.js", - "website/public/js/directives/habitrpg-tasks.directive.js", - "website/public/js/directives/hrpg-sort-checklist.directive.js", - "website/public/js/directives/hrpg-sort-tags.directive.js", - "website/public/js/directives/hrpg-sort-tasks.directive.js", - "website/public/js/directives/popover-html-popup.directive.js", - "website/public/js/directives/popover-html.directive.js", - "website/public/js/directives/task-focus.directive.js", - "website/public/js/directives/when-scrolled.directive.js", - - "website/public/js/controllers/authCtrl.js", - "website/public/js/controllers/memberModalCtrl.js", - "website/public/js/controllers/menuCtrl.js", - "website/public/js/controllers/notificationCtrl.js", - "website/public/js/controllers/rootCtrl.js", - "website/public/js/controllers/settingsCtrl.js", - "website/public/js/controllers/headerCtrl.js", - "website/public/js/controllers/tasksCtrl.js", - "website/public/js/controllers/filtersCtrl.js", - "website/public/js/controllers/userCtrl.js", - "website/public/js/controllers/groupsCtrl.js", - "website/public/js/controllers/inventoryCtrl.js", - "website/public/js/controllers/footerCtrl.js", - "website/public/js/controllers/challengesCtrl.js", - "website/public/js/controllers/hallCtrl.js", 'test/spec/mocks/**/*.js', 'test/spec/specHelper.js', 'test/spec/**/*.js' From 85243c75124001b4888b86a53d3340b2a535456b Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sat, 22 Aug 2015 19:16:32 -0500 Subject: [PATCH 11/11] Remove mocks --- karma.conf.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index 898802ef63..3c1d0e59ee 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -35,9 +35,6 @@ module.exports = function(config) { 'website/public/bower_components/js-emoji/emoji.js', 'common/dist/scripts/habitrpg-shared.js', - "test/spec/mocks/translations.js", - "test/spec/mocks/sandbox.js", - "website/public/js/env.js", "website/public/js/app.js",