From 07593dc1226e8ebc760625948dcfd1083e7cf480 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 2 Feb 2014 16:43:58 +0100 Subject: [PATCH] refactor(bs3): port quests modals, fix restore modal and various bugs --- public/js/controllers/authCtrl.js | 1 - public/js/controllers/groupsCtrl.js | 2 +- public/js/controllers/inventoryCtrl.js | 18 +++++++++++------- public/js/controllers/notificationCtrl.js | 19 ++++++++++++++++++- public/js/controllers/rootCtrl.js | 2 +- public/js/controllers/settingsCtrl.js | 11 +++++------ public/js/controllers/userCtrl.js | 4 ++-- views/options/settings.jade | 2 +- views/shared/header/menu.jade | 1 - views/shared/modals/quests.jade | 20 ++++++++------------ views/shared/modals/settings.jade | 14 +++++++------- 11 files changed, 54 insertions(+), 40 deletions(-) diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 381ed62e32..1312b40d35 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -27,7 +27,6 @@ angular.module('authCtrl', []) runAuth = function(id, token) { User.authenticate(id, token, function(err) { $window.location.href = '/'; - //$rootScope.modals.login = false; }); }; diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index c52b81da9a..3c66eabdcd 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -222,7 +222,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' } $scope.newGroup = newGroup() $scope.create = function(group){ - if (User.user.balance < 1) return $rootScope.modals.buyGems = true; + if (User.user.balance < 1) return $rootScope.openModal('buyGems'); if (confirm("Create Guild for 4 Gems?")) { group.$save(function(saved){ diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 122295ddb9..4710b3a9c7 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -1,5 +1,5 @@ -habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', 'Content', - function($rootScope, $scope, $window, User, Content) { +habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', 'Content', '$modal', + function($rootScope, $scope, $window, User, Content, $modal) { var user = User.user; @@ -87,7 +87,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', $scope.purchase = function(type, item){ var gems = User.user.balance * 4; - if(gems < item.value) return $rootScope.modals.buyGems = true; + if(gems < item.value) return $rootScope.openModal('buyGems'); var string = (type == 'hatchingPotion') ? 'hatching potion' : type; // give hatchingPotion a space var message = "Buy this " + string + " with " + item.value + " of your " + gems + " Gems?" if($window.confirm(message)) @@ -127,12 +127,13 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', if (item.lvl && item.lvl > user.stats.lvl) return alert("You must be level " + item.lvl + '.'); $rootScope.selectedQuest = item; - $rootScope.modals.showQuest = true; + $modal.open({ + templateUrl: 'modals/showQuest.html', + controller: 'InventoryCtrl' + }); } $scope.closeQuest = function(){ $rootScope.selectedQuest = undefined; - $rootScope.modals.showQuest = false; - $rootScope.modals.buyQuest = false; } $scope.questInit = function(){ $rootScope.party.$questAccept({key:$scope.selectedQuest.key}, function(){ @@ -148,7 +149,10 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', if (!completedPrevious) return $scope.purchase("quests", item); $rootScope.selectedQuest = item; - $rootScope.modals.buyQuest = true; + $modal.open({ + templateUrl: 'modals/buyQuest.html', + controller: 'InventoryCtrl' + }); } } ]); diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index c270558320..a8f4ece386 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -133,13 +133,30 @@ habitrpg.controller('NotificationCtrl', } }); + // Math updates modal $rootScope.$watch('!user.flags.mathUpdates', function(after, before){ - if (after === before || after !== true) return; + if (after == before || after != true) return; $modal.open({ templateUrl: 'modals/mathUpdates.html' }); }); + // Completed quest modal + $rootScope.$watch('user.party.quest.completed', function(after, before){ + if (after == before || after != true) return; + $modal.open({ + templateUrl: 'modals/questCompleted.html', + controller: 'InventoryCtrl' + }); + }); + + $rootScope.$watch('party.quest.key && !party.quest.active && !questHold && party.quest.members[user._id] == undefined', function(after, before){ + if (after == before || after != true) return; + $modal.open({ + templateUrl: 'modals/questInvitation.html' + }); + }); + $rootScope.$on('responseError', function(ev, error){ Notification.error(error); }); diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index 8047127792..35e001a95e 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -67,7 +67,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ // Open a modal from a template expression (like ng-click,...) // Otherwise use the proper $modal.open $rootScope.openModal = function(template, controller, scope){ - $modal.open({ + return $modal.open({ templateUrl: 'modals/' + template + '.html', controller: controller, // optional scope: scope // optional diff --git a/public/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js index 1f2bbebb67..9d56526bd5 100644 --- a/public/js/controllers/settingsCtrl.js +++ b/public/js/controllers/settingsCtrl.js @@ -78,12 +78,11 @@ habitrpg.controller('SettingsCtrl', } $scope.restoreValues = {}; - $rootScope.$watch('modals.restore', function(value){ - if(value === true){ - $scope.restoreValues.stats = angular.copy(User.user.stats); - $scope.restoreValues.achievements = {streak: User.user.achievements.streak || 0}; - } - }) + $rootScope.openRestoreModal = function(){ + $scope.restoreValues.stats = angular.copy(User.user.stats); + $scope.restoreValues.achievements = {streak: User.user.achievements.streak || 0}; + $rootScope.openModal('restore', undefined, $scope); + }; $scope.restore = function(){ var stats = $scope.restoreValues.stats, diff --git a/public/js/controllers/userCtrl.js b/public/js/controllers/userCtrl.js index ce3c629d82..43abc3e327 100644 --- a/public/js/controllers/userCtrl.js +++ b/public/js/controllers/userCtrl.js @@ -53,10 +53,10 @@ habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$ if (fullSet) { if (confirm("Purchase for 5 Gems?") !== true) return; - if (User.user.balance < cost) return $rootScope.modals.buyGems = true; + if (User.user.balance < cost) return $rootScope.openModal('buyGems'); } else if (!User.user.fns.dotGet('purchased.' + path)) { if (confirm("Purchase for 2 Gems?") !== true) return; - if (User.user.balance < cost) return $rootScope.modals.buyGems = true; + if (User.user.balance < cost) return $rootScope.openModal('buyGems'); } User.user.ops.unlock({query:{path:path}}) } diff --git a/views/options/settings.jade b/views/options/settings.jade index a0bbb78714..c6e6fc88aa 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -65,7 +65,7 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') br button.btn(ng-click='showBailey()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('showBaileyPop'))= env.t('showBailey') br - button.btn(ng-click='openModal("restore", "SettingsCtrl")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('fixValPop'))= env.t('fixVal') + button.btn(ng-click='openRestoreModal()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('fixValPop'))= env.t('fixVal') div(ng-if='user.preferences.disableClasses==true') button.btn(ng-click='user.ops.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableClassPop'))= env.t('enableClass') div(ng-if='!user.preferences.disableClasses && user.flags.classSelected') diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index 38c409f1da..d812ded929 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -1,5 +1,4 @@ .user-menu(ng-controller='AuthCtrl') - button.task-action-btn.tile.solid(ng-hide='authenticated()', style='cursor: pointer;', ng-click="modals.login = true")=env.t('loginAndReg') ul.nav.site-nav(ng-show='authenticated()') li.flyout h1.task-action-btn.tile.solid.user-reporter {{user.profile.name}} diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index 8c26933369..0efc6be7f3 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -11,7 +11,6 @@ script(id='partials/options.social.party.quest-rewards.html', type='text/ng-temp td {{quest.drop.gp}} =env.t('gold') -//div(modal='user.party.quest.completed', ng-controller='InventoryCtrl') script(type='text/ng-template', id='modals/questCompleted.html') .modal-header h3 "{{Content.quests[user.party.quest.completed].text}}" @@ -20,9 +19,8 @@ script(type='text/ng-template', id='modals/questCompleted.html') p {{Content.quests[user.party.quest.completed].completion}} quest-rewards(key='{{user.party.quest.completed}}', header=env.t('youReceived')) .modal-footer - button.btn.btn-default.btn-primary(ng-click='set({"party.quest.completed":""})')=env.t('accept') + button.btn.btn-default.btn-primary(ng-click='set({"party.quest.completed":""}); $close()')=env.t('accept') -//div(modal='modals.showQuest', ng-controller='InventoryCtrl') script(type='text/ng-template', id='modals/showQuest.html') .modal-header h3 {{selectedQuest.text}} @@ -35,10 +33,9 @@ script(type='text/ng-template', id='modals/showQuest.html') .npc_ian.pull-left p=env.t('questSend') .modal-footer - button.btn.btn-default.btn-small.btn-cancel(ng-click='closeQuest()')=env.t('cancel') - button.btn.btn-default.btn-primary(ng-click='questInit()')=env.t('inviteParty') + button.btn.btn-default.btn-small.btn-cancel(ng-click='closeQuest(); $close()')=env.t('cancel') + button.btn.btn-default.btn-primary(ng-click='questInit(); $close()')=env.t('inviteParty') -//div(modal='modals.buyQuest', ng-controller='InventoryCtrl') script(type='text/ng-template', id='modals/buyQuest.html') .modal-header h3 {{selectedQuest.text}} @@ -47,10 +44,9 @@ script(type='text/ng-template', id='modals/buyQuest.html') div(ng-bind-html='selectedQuest.notes') quest-rewards(key='{{selectedQuest.key}}') .modal-footer - button.btn.btn-large.cancel(ng-click='closeQuest()')=env.t('neverMind') - button.btn.btn-default.btn-large.btn-primary(ng-click='purchase("quests", quest);closeQuest()')=env.t('buyQuest') + button.btn.btn-large.cancel(ng-click='closeQuest(); $close()')=env.t('neverMind') + button.btn.btn-default.btn-large.btn-primary(ng-click='purchase("quests", quest); closeQuest(); $close()')=env.t('buyQuest') -//div(modal='party.quest.key && !party.quest.active && !questHold && party.quest.members[user._id] == undefined') script(type='text/ng-template', id='modals/questInvitation.html') .modal-header h3=env.t('questInvitation') @@ -59,6 +55,6 @@ script(type='text/ng-template', id='modals/questInvitation.html') div(ng-bind-html='Content.quests[party.quest.key].notes') quest-rewards(key='{{party.quest.key}}') .modal-footer - button.btn.btn-default.btn-small.btn-cancel(ng-click='questHold = true')=env.t('askLater') - button.btn.btn-default.btn-small.btn-cancel(ng-click='party.$questReject()')=env.t('reject') - button.btn.btn-default.btn-primary(ng-click='party.$questAccept()')=env.t('accept') + button.btn.btn-default.btn-small.btn-cancel(ng-click='questHold = true; $close()')=env.t('askLater') + button.btn.btn-default.btn-small.btn-cancel(ng-click='party.$questReject(); $close()')=env.t('reject') + button.btn.btn-default.btn-primary(ng-click='party.$questAccept(); $close()')=env.t('accept') diff --git a/views/shared/modals/settings.jade b/views/shared/modals/settings.jade index 634fc92cc0..644c0a60e3 100644 --- a/views/shared/modals/settings.jade +++ b/views/shared/modals/settings.jade @@ -18,33 +18,33 @@ script(type='text/ng-template', id='modals/restore.html') form#restore-form.form-horizontal h3=env.t('stats') .option-group.option-medium - input.option-content(type='number', step="any", data-for='stats.hp', ng-model='restoreValues.stats.hp') + input.option-content(type='number', step="any", data-for='stats.hp', ng-model='$parent.restoreValues.stats.hp') span.input-suffix=env.t('health') .option-group.option-medium - input.option-content(type='number', step="any", data-for='stats.exp', ng-model='restoreValues.stats.exp') + input.option-content(type='number', step="any", data-for='stats.exp', ng-model='$parent.restoreValues.stats.exp') span.input-suffix=env.t('experience') .option-group.option-medium - input.option-content(type='number', step="any", data-for='stats.gp', ng-model='restoreValues.stats.gp') + input.option-content(type='number', step="any", data-for='stats.gp', ng-model='$parent.restoreValues.stats.gp') //input.option-content(type='number', step="any", data-for='stats.gp', ng-model='restoreValues.stats.gp',disabled) span.input-suffix=env.t('gold') //-p.alert small=env.t('disabledWinterEvent') .option-group.option-medium - input.option-content(type='number', step="any", data-for='stats.mp', ng-model='restoreValues.stats.mp') + input.option-content(type='number', step="any", data-for='stats.mp', ng-model='$parent.restoreValues.stats.mp') span.input-suffix=env.t('mana') .option-group.option-medium - input.option-content(type='number', data-for='stats.lvl', ng-model='restoreValues.stats.lvl') + input.option-content(type='number', data-for='stats.lvl', ng-model='$parent.restoreValues.stats.lvl') span.input-suffix=env.t('level') h3=env.t('achievements') .option-group.option-medium - input.option-content(type='number', data-for='achievements.streak', ng-model='restoreValues.achievements.streak') + input.option-content(type='number', data-for='achievements.streak', ng-model='$parent.restoreValues.achievements.streak') span.input-suffix=env.t('fix21Streaks') //- This is causing too many problems for users h3=env.t('other') a.btn.btn-small.btn-warning(ng-controller='FooterCtrl', ng-click='addMissedDay()')=env.t('triggerDay') .modal-footer button.btn.btn-default.cancel(ng-click='$close()')=env.t('discardChanges') - button.btn.btn-primary(ng-click='$close(); restore()')=env.t('saveAndClose') + button.btn.btn-primary(ng-click='restore(); $close();')=env.t('saveAndClose') script(type='text/ng-template', id='modals/delete.html') .modal-header