From 9fa864676857341e5539673b6c71ae8c35df81fb Mon Sep 17 00:00:00 2001 From: Etryn Date: Tue, 28 Jan 2014 01:13:24 -0800 Subject: [PATCH 001/159] Fixed unnecessary margin on button group buttons Buttons in groups in bootstrap are styled to touch on inside edges to appear joined, so should not have a 5 px margin between them. --- public/css/index.styl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/css/index.styl b/public/css/index.styl index fb2d74a615..60ff774125 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -181,6 +181,10 @@ a .btn margin-right: 5px +// Buttons in groups should not have a 5px margin between them; suppress margin for buttons in groups. +.btn-group .btn + margin-right: 0px + .modal-indented-list margin-left: 10px; padding-left: 10px; From f0ebd597b322c20590a4b859e9e4da827925baac Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 29 Jan 2014 16:44:12 +0100 Subject: [PATCH 002/159] refactor(dependencies): update dependencies for bootstrap 3 upgrade @lefnire --- bower.json | 19 +++++++++---------- public/css/index.styl | 2 -- public/manifest.json | 11 ++--------- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/bower.json b/bower.json index 74fea1a96d..7290b31c4c 100644 --- a/bower.json +++ b/bower.json @@ -14,20 +14,22 @@ "tests" ], "dependencies": { - "jquery": "~2.0.3", + "jquery": "~2.1.0", "jquery.cookie": "~1.4.0", "jquery-ui": "~1.10.3", "angular": "~1.2.1", "angular-sanitize": "~1.2.1", "angular-resource": "~1.2.1", - "angular-ui": "~0.4.0", - "angular-bootstrap": "~0.5.0", + "angular-ui-utils": "~0.1.0", + "angular-ui-select2": "https://github.com/angular-ui/ui-select2.git#4469fd7a32eba2e28d5e3dd319b49e1ad090b167", + "angular-bootstrap": "~0.10.0", "angular-ui-router": "ca3b4777a603df8f86cfd653c8f6c38b2ae05d89", - "angular-loading-bar": "~0.0.5", + "angular-loading-bar": "~0.3.0", "angular-bindonce": "~0.2.1", - "bootstrap": "v2.3.2", - "bootstrap-datepicker": "~1.2.0", + "bootstrap": "~3.0.3", + "bootstrap-datepicker": "1.3.0", "bootstrap-growl": "~1.1.0", + "bootstrap-tour": "~0.8.1", "habitrpg-shared": "git://github.com/HabitRPG/habitrpg-shared.git#develop", "BrowserQuest": "https://github.com/mozilla/BrowserQuest.git", "github-buttons": "git://github.com/mdo/github-buttons.git", @@ -37,11 +39,8 @@ "js-emoji": "git://github.com/snicker/js-emoji#master", "gemoji": "git://github.com/github/gemoji", "sticky": "*", - "bootstrap-tour": "~0.8.0", - "angular-ui-utils": "~0.1.0", "swagger-ui": "https://github.com/wordnik/swagger-ui.git#105c516f5f055b140e935e9cfe0c36f841921dff", - "ngInfiniteScroll": "~1.0.0", - "angular-ui-select2": "https://github.com/angular-ui/ui-select2.git#4469fd7a32eba2e28d5e3dd319b49e1ad090b167" + "ngInfiniteScroll": "~1.0.0" }, "devDependencies": { "angular-mocks": "~1.2.1" diff --git a/public/css/index.styl b/public/css/index.styl index fb2d74a615..748b6e2b24 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -4,8 +4,6 @@ // Vendor Includes - include first so we can override // Import only styles that do not have urls to images! Include them directly in the page! @import "../bower_components/bootstrap-datepicker/css/datepicker.css" -@import "../bower_components/angular-ui/build/angular-ui.min.css" -@import "../bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css" @import "../bower_components/bootstrap-tour/build/css/bootstrap-tour.min.css" @import "../bower_components/angular-loading-bar/build/loading-bar.css" @import "../bower_components/js-emoji/emoji.css" diff --git a/public/manifest.json b/public/manifest.json index 2d616d2a19..1fc977153f 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -10,7 +10,6 @@ "bower_components/marked/lib/marked.js", "bower_components/angular-ui-router/release/angular-ui-router.js", "bower_components/angular-resource/angular-resource.min.js", - "bower_components/angular-ui/build/angular-ui.js", "bower_components/angular-ui-utils/ui-utils.min.js", "bower_components/angular-loading-bar/build/loading-bar.js", "bower_components/Angular-At-Directive/src/at.js", @@ -22,7 +21,6 @@ "bower_components/select2/select2.js", "bower_components/angular-ui-select2/src/select2.js", - "bower_components/bootstrap/docs/assets/js/bootstrap.js", "bower_components/angular-bootstrap/ui-bootstrap.js", "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", @@ -63,7 +61,7 @@ "js/controllers/hallCtrl.js" ], "css": [ - "bower_components/bootstrap/docs/assets/css/bootstrap.css", + "bower_components/bootstrap/dist/css/bootstrap.css", "app.css", "bower_components/habitrpg-shared/dist/habitrpg-shared.css" ] @@ -74,9 +72,6 @@ "bower_components/habitrpg-shared/dist/habitrpg-shared.js", "bower_components/angular/angular.js", - "bower_components/bootstrap/docs/assets/js/bootstrap.js", - - "bower_components/angular-ui/build/angular-ui.js", "bower_components/angular-bootstrap/ui-bootstrap.js", "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", @@ -87,9 +82,7 @@ "js/controllers/authCtrl.js" ], "css": [ - "bower_components/bootstrap/docs/assets/css/bootstrap.css", - "bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css", - "bower_components/bootstrap/docs/assets/css/docs.css", + "bower_components/bootstrap/dist/css/bootstrap.css", "static.css" ] From 4c9da6883fe1149fa118292f87d309d1ce152889 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 29 Jan 2014 18:26:58 +0100 Subject: [PATCH 003/159] refactor(bs3): static pages works everything exeception made for the login modal, it opens but since this directive has had a lot of changes in angular-ui-bootstrap it will require more work (like all modals), @lefnire --- public/css/footer.styl | 85 +-------------- public/css/index.styl | 1 - public/css/shared.styl | 5 +- public/css/static-pages.css | 21 ---- public/css/static.styl | 20 +++- public/js/controllers/authCtrl.js | 8 +- src/routes/pages.js | 24 +++-- views/shared/footer.jade | 26 ++--- views/static/about.jade | 23 ++-- views/static/front.jade | 68 ++++++------ views/static/header.jade | 30 ------ views/static/layout.jade | 39 +++---- views/static/login-modal.jade | 122 +++++++++++---------- views/static/plans.jade | 172 +++++++++++++++--------------- views/static/privacy.jade | 6 +- views/static/terms.jade | 5 +- 16 files changed, 280 insertions(+), 375 deletions(-) delete mode 100644 public/css/static-pages.css delete mode 100644 views/static/header.jade diff --git a/public/css/footer.styl b/public/css/footer.styl index 0f39a09f1b..31cddc1e2e 100644 --- a/public/css/footer.styl +++ b/public/css/footer.styl @@ -1,83 +1,8 @@ -/* Sticky footer styles --------------------------------------------------- */ - -html, -body { - height: 100%; - /* The html and body elements cannot have any padding or margin. */ -} - -/* Wrapper for page content to push down footer */ -#wrap { - min-height: 100%; - height: auto !important; - height: 100%; - /* Negative indent footer by it's height */ - margin: 0 auto -60px; -} - -/* Set the fixed height of the footer here */ -#push, -#footer { - height: 60px; -} -#footer { - background-color: #f5f5f5; -} - -/* Lastly, apply responsive CSS fixes as necessary */ -@media (max-width: 767px) { - #footer { - margin-left: -20px; - margin-right: -20px; - padding-left: 20px; - padding-right: 20px; - } -} - - - -/* Custom page CSS --------------------------------------------------- */ -/* Not required for template or sticky footer method. */ - -#wrap > .container { - padding-top: 60px; -} -.container .credit { - margin: 20px 0; -} - -code { - font-size: 80%; -} - - - /* HabitRPG Custom CSS -------------------------------------------------- */ -.footer { - /*padding: 70px 0;*/ - border-top: 1px solid #e5e5e5; - background-color: #f5f5f5; -} - -.footer li { - text-align: left; -} - -.footer h4 { - text-align: left; -} - -.footer td { - align: left !important; -} - -.frontpage-play-button - //box-shadow: 0 0 40px #494141; - display:inline - font-size: 20px - width:100px - height:50px \ No newline at end of file +.footer + padding-top: 20px + margin-top: 40px + border-top: 1px solid #e5e5e5 + background-color: #f5f5f5 \ No newline at end of file diff --git a/public/css/index.styl b/public/css/index.styl index 748b6e2b24..f777bb5769 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -78,7 +78,6 @@ div.tooltip-inner { /* Customizations to make footer sticky */ /*html, body {height: 100%;}*/ #wrap - min-height: 100% z-index:-1 #main padding-bottom: 250px; /* don't know why this works, sticky footers are weird */ diff --git a/public/css/shared.styl b/public/css/shared.styl index 1766422a59..00dba37fe4 100644 --- a/public/css/shared.styl +++ b/public/css/shared.styl @@ -13,4 +13,7 @@ .dashed-underline border-bottom:1px dashed #000 text-decoration:none - cursor pointer \ No newline at end of file + cursor pointer + +img + max-width: 100% \ No newline at end of file diff --git a/public/css/static-pages.css b/public/css/static-pages.css deleted file mode 100644 index f617e486e2..0000000000 --- a/public/css/static-pages.css +++ /dev/null @@ -1,21 +0,0 @@ -.jumbotron { - background-color: #1b1b1b; - background-image: -moz-linear-gradient(top, #222222, #111111); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); - background-image: -webkit-linear-gradient(top, #222222, #111111); - background-image: -o-linear-gradient(top, #222222, #111111); - background-image: linear-gradient(to bottom, #222222, #111111); - background-repeat: repeat-x; - border-color: #252525; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); - background:none; - color:black; - -} -body { - padding-top:0px; -} - -a { - cursor: pointer; -} \ No newline at end of file diff --git a/public/css/static.styl b/public/css/static.styl index fe576834e7..02605f3960 100644 --- a/public/css/static.styl +++ b/public/css/static.styl @@ -4,9 +4,25 @@ // Import only styles that do not have urls to images! Include them directly in the page! @import "../bower_components/angular-loading-bar/build/loading-bar.css" -@import "./static-pages.css" @import "./shared.styl" @import "./footer" .muted i, i.muted - opacity:0.5 \ No newline at end of file + opacity:0.5 + +#header-play-button + margin-right: 15px + +#tagline + margin:10px 0 20px 0 + font-size:40px + +.marketing + text-align: center + +#frontpage-play-button + //box-shadow: 0 0 40px #494141; + display:inline + font-size: 20px + width:100px + height:50px \ No newline at end of file diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 1c50d56be9..26f502bec1 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -5,8 +5,8 @@ */ angular.module('authCtrl', []) - .controller("AuthCtrl", ['$scope', '$rootScope', 'User', '$http', '$location', '$window','API_URL', - function($scope, $rootScope, User, $http, $location, $window, API_URL) { + .controller("AuthCtrl", ['$scope', '$rootScope', 'User', '$http', '$location', '$window','API_URL', '$modal', + function($scope, $rootScope, User, $http, $location, $window, API_URL, $modal) { var runAuth; var showedFacebookMessage; @@ -80,7 +80,9 @@ angular.module('authCtrl', []) if (User.authenticated()) { window.location.href = '/#/tasks'; } else { - $('#login-modal').modal('show'); + $modal.open({ + templateUrl: 'modals/login.html' + }); } } diff --git a/src/routes/pages.js b/src/routes/pages.js index a5ef570e2c..1458a6f7ca 100644 --- a/src/routes/pages.js +++ b/src/routes/pages.js @@ -24,27 +24,39 @@ router.get('/static/front', middleware.locals, function(req, res) { }); router.get('/static/privacy', middleware.locals, function(req, res) { - res.render('static/privacy', {env: res.locals.habitrpg}); + var env = res.locals.habitrpg; + env.isFrontPage = true; + res.render('static/privacy', {env: env}); }); router.get('/static/terms', middleware.locals, function(req, res) { - res.render('static/terms', {env: res.locals.habitrpg}); + var env = res.locals.habitrpg; + env.isFrontPage = true; + res.render('static/terms', {env: env}); }); router.get('/static/api', middleware.locals, function(req, res) { - res.render('static/api', {env: res.locals.habitrpg}); + var env = res.locals.habitrpg; + env.isFrontPage = true; + res.render('static/api', {env: env}); }); router.get('/static/about', middleware.locals, function(req, res) { - res.render('static/about', {env: res.locals.habitrpg}); + var env = res.locals.habitrpg; + env.isFrontPage = true; + res.render('static/about', {env: env}); }); router.get('/static/contact', middleware.locals, function(req, res) { - res.render('static/contact', {env: res.locals.habitrpg}); + var env = res.locals.habitrpg; + env.isFrontPage = true; + res.render('static/contact', {env: env}); }); router.get('/static/plans', middleware.locals, function(req, res) { - res.render('static/plans', {env: res.locals.habitrpg}); + var env = res.locals.habitrpg; + env.isFrontPage = true; + res.render('static/plans', {env: env}); }); // --------- Redirects -------- diff --git a/views/shared/footer.jade b/views/shared/footer.jade index d85a8ce8f7..57c1d37f96 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -1,20 +1,20 @@ footer.footer(ng-controller='FooterCtrl') .container .row - .span3 + .col-md-3 h4=env.t('footerMobile') - ul.unstyled + ul.list-unstyled li a(href='https://itunes.apple.com/us/app/habitrpg/id689569235?mt=8', target='_blank')=env.t('mobileIOS') li a(href='https://play.google.com/store/apps/details?id=com.ocdevel.habitrpg', target='_blank')=env.t('mobileAndroid') - .span3 + .col-md-3 h4=env.t('footerCompany') - ul.unstyled + ul.list-unstyled.list-unstyled if (!env.isFrontPage) li .btn.btn-small.btn-success(ng-click='modals.buyGems = true') - i.icon-heart.icon-white + span.glyphicon.glyphicon-heart =env.t('companyDonate') li a(href='/static/about')=env.t('companyAbout') @@ -28,9 +28,9 @@ footer.footer(ng-controller='FooterCtrl') a(href='/static/privacy')=env.t('companyPrivacy') li a(href='/static/terms')=env.t('companyTerms') - .span3 + .col-md-3 h4=env.t('footerCommunity') - ul.unstyled + ul.list-unstyled li a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues')=env.t('communityBug') li @@ -47,7 +47,7 @@ footer.footer(ng-controller='FooterCtrl') a(target='_blank', href='https://www.facebook.com/Habitrpg')=env.t('communityFacebook') li a(target='_blank', href='http://www.reddit.com/r/habitrpg/')=env.t('communityReddit') - .span3 + .col-md-3 if (env.NODE_ENV=='production') h4=env.t('footerSocial') .addthis_toolbox.addthis_default_style(addthis:url='https://habitrpg.com', addthis:title=env.t('socialTitle')) @@ -66,14 +66,14 @@ footer.footer(ng-controller='FooterCtrl') a.addthis_button_google_plusone(g:plusone:size='medium') else h4 Debug - ul.unstyled + ul.list-unstyled li - a.btn(ng-click='addMissedDay()') +1 Missed Day + a.btn.btn-default(ng-click='addMissedDay()') +1 Missed Day li - a.btn(ng-click='addTenGems()') +10 Gems + a.btn.btn-default(ng-click='addTenGems()') +10 Gems li - a.btn(ng-click='addLevelsAndGold()') +Exp +GP + a.btn.btn-default(ng-click='addLevelsAndGold()') +Exp +GP li - a.btn(ng-click='addOneLevel()') +1 Level + a.btn.btn-default(ng-click='addOneLevel()') +1 Level div(ng-init='deferredScripts()') diff --git a/views/static/about.jade b/views/static/about.jade index 6340ef31af..1e635d1bc3 100644 --- a/views/static/about.jade +++ b/views/static/about.jade @@ -8,15 +8,16 @@ block title title About block content - .container - p(style='height:600;') - iframe(src='//player.vimeo.com/video/76557040', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/57654086', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/79172253', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/79172327', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/79172363', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + .row + .col-md-12 + p(style='height:600;') + iframe(src='//player.vimeo.com/video/76557040', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + p(style='height:600;') + iframe(src='//player.vimeo.com/video/57654086', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + p(style='height:600;') + iframe(src='//player.vimeo.com/video/79172253', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + p(style='height:600;') + iframe(src='//player.vimeo.com/video/79172327', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + p(style='height:600;') + iframe(src='//player.vimeo.com/video/79172363', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') diff --git a/views/static/front.jade b/views/static/front.jade index f669785860..379ce36a8f 100644 --- a/views/static/front.jade +++ b/views/static/front.jade @@ -8,38 +8,36 @@ block title title=env.t('titleFront') block content - #wrap - //-include ./header - .marketing - //we need to use something that's not jumbotron for this, but still keep it centered - //could someone write something else to make it pretty? - img(src='/bower_components/habitrpg-shared/img/logo/habitrpg_pixel.png', alt='HabitRPG logo') - //this image needs to be replaced by something more enticing, that shows off the features of hRPG - //while acting similarly to a logo - h1(style='margin:10px 0 20px 0;font-size:40px')=env.t('tagline') - p - button.btn.btn-primary.btn-large.frontpage-play-button(ng-click='playButtonClick()')=env.t('playButton') - hr - img(src='/marketing/devices.png') - //we'd want the tagline centered, for sure, and a bit more pop, but without using jumbotron - //it could also be part of the image, as long as the alt text included it - //in fact, I think I really want it on the image, rather than as text, but language issues - br - p=env.t('landingp1') - h2=env.t('landingp2header') - //images in these parts could be useful, too - //if there's a language workaround, image headers? people like pictures! - p=env.t('landingp2') - h2=env.t('landingp3header') - //I'm not sold on "Consquences as the title here. Anyone got a better idea? - p=env.t('landingp3') - h2=env.t('landingp4header') - p=env.t('landingp4') - //- TODO - h2=env.t('landingend') - p - =env.t('landingend2') - a(href="FEATURESPAGEHERE")=env.t('landingfeatureslink') - =env.t('landingend3') - a(href="ENTERPRISEPAGEHERE")=env.t('landingadminlink') - =env.t('landingend4') + .marketing + //we need to use something that's not jumbotron for this, but still keep it centered + //could someone write something else to make it pretty? + img(src='/bower_components/habitrpg-shared/img/logo/habitrpg_pixel.png', alt='HabitRPG logo') + //this image needs to be replaced by something more enticing, that shows off the features of hRPG + //while acting similarly to a logo + h1#tagline=env.t('tagline') + p.lead + button.btn.btn-primary.btn-large#frontpage-play-button(ng-click='playButtonClick()')=env.t('playButton') + hr + img(src='/marketing/devices.png') + //we'd want the tagline centered, for sure, and a bit more pop, but without using jumbotron + //it could also be part of the image, as long as the alt text included it + //in fact, I think I really want it on the image, rather than as text, but language issues + br + p.lead=env.t('landingp1') + h2=env.t('landingp2header') + //images in these parts could be useful, too + //if there's a language workaround, image headers? people like pictures! + p.lead=env.t('landingp2') + h2=env.t('landingp3header') + //I'm not sold on "Consquences as the title here. Anyone got a better idea? + p.lead=env.t('landingp3') + h2=env.t('landingp4header') + p.lead=env.t('landingp4') + //- TODO + h2=env.t('landingend') + p.lead + =env.t('landingend2') + a(href="FEATURESPAGEHERE")=env.t('landingfeatureslink') + =env.t('landingend3') + a(href="ENTERPRISEPAGEHERE")=env.t('landingadminlink') + =env.t('landingend4') diff --git a/views/static/header.jade b/views/static/header.jade deleted file mode 100644 index 6a9223a5e0..0000000000 --- a/views/static/header.jade +++ /dev/null @@ -1,30 +0,0 @@ -// - diff --git a/views/static/layout.jade b/views/static/layout.jade index fad18bac00..dea3788eed 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -7,35 +7,36 @@ html block title title=env.t('titleIndex') - link(rel='shortcut icon', href='#{env.getBuildUrl("favicon.ico")}?v=2') + link(rel='shortcut icon', href='#{env.getBuildUrl("favicon.ico")}?v=3') meta(charset='utf-8') meta(name='viewport', content='width=device-width, initial-scale=1.0') != env.getManifestFiles("static") - script(type='text/javascript'). - $.getScript("//s7.addthis.com/js/250/addthis_widget.js#pubid=lefnire"); - body div(ng-app='habitrpgStatic',ng-controller='AuthCtrl',style='margin-top:60px;') include ./login-modal - .navbar.navbar-inverse.navbar.navbar-inverse.navbar-fixed-top - .navbar-inner - .container - a.pull-right.btn.btn-primary(ng-click='playButtonClick()')=env.t('playButton') + nav.navbar.navbar-inverse.navbar-fixed-top + .navbar-header + button.navbar-toggle(type='button', ng-click='isNavbarCollapsed = !isNavbarCollapsed', ng-init='isNavbarCollapsed = true') + span.sr-only Toggle navigation + span.icon-bar + span.icon-bar + span.icon-bar + a.navbar-brand(href='/static/front') HabitRPG + .collapse.navbar-collapse(collapse="isNavbarCollapsed") + ul.nav.navbar-nav + li(class='#{menuItem=="about" ? "active" : ""}') + a(href='/static/about') Learn More + li + a(href='http://blog.habitrpg.com/') Blog + li(class='#{menuItem=="plans" ? "active" : ""}') + a(href='/static/plans') Plans + //li(class='#{menuItem=="contact" ? "active" : ""}') + a(href='/static/contact') Contact - ul.nav - li(class='#{menuItem=="home" ? "active" : ""}') - a(href='/static/front') Home - li(class='#{menuItem=="about" ? "active" : ""}') - a(href='/static/about') Learn More - li - a(href='http://blog.habitrpg.com/') Blog - li(class='#{menuItem=="plans" ? "active" : ""}') - a(href='/static/plans') Group Plans - //li(class='#{menuItem=="contact" ? "active" : ""}') - a(href='/static/contact') Contact + button#header-play-button.btn.btn-primary.navbar-btn.navbar-right(ng-click='playButtonClick()')=env.t('playButton') .container block content diff --git a/views/static/login-modal.jade b/views/static/login-modal.jade index c9710af000..5430301582 100644 --- a/views/static/login-modal.jade +++ b/views/static/login-modal.jade @@ -1,69 +1,67 @@ -.modal.fade#login-modal(style='display:none') - .modal-dialog - .modal-content - .modal-header - button.close(type='button', data-dismiss='modal', aria-hidden='true') × - h4.modal-title=env.t('loginAndReg') - .modal-body - a(href='/auth/facebook') - img(src='/bower_components/habitrpg-shared/img/facebook-login-register.jpeg', alt=env.t('loginFacebookAlt')) - //can we add in google auth? I like google auth - h3 Or - ul.nav.nav-tabs - li.active - a(data-toggle='tab',data-target='#login-tab')=env.t('login') - li - a(data-toggle='tab',data-target='#register-tab')=env.t('register') +script(id='modals/login.html', type="text/ng-template") + .modal-header + button.close(type='button') × + h4.modal-title=env.t('loginAndReg') + .modal-body + a(href='/auth/facebook') + img(src='/bower_components/habitrpg-shared/img/facebook-login-register.jpeg', alt=env.t('loginFacebookAlt')) + //can we add in google auth? I like google auth + h3 Or + ul.nav.nav-tabs + li.active + a(data-toggle='tab',data-target='#login-tab')=env.t('login') + li + a(data-toggle='tab',data-target='#register-tab')=env.t('register') - .tab-content - .tab-pane.active#login-tab - form(ng-submit='auth()', method='POST') - .control-group - input(type='text', ng-model='loginUsername', placeholder=env.t('username'), name='username') - .control-group - input(type='password', ng-model='loginPassword', placeholder=env.t('password'), name='password') - //-.control-group - label.checkbox - input(type='checkbox', ng-click='useUUID = !useUUID') - =env.t('useUUID') - .control-group - input.btn.btn-primary(type='submit', value=env.t('login')) + .tab-content + .tab-pane.active#login-tab + form(ng-submit='auth()', method='POST') + .control-group + input(type='text', ng-model='loginUsername', placeholder=env.t('username'), name='username') + .control-group + input(type='password', ng-model='loginPassword', placeholder=env.t('password'), name='password') + //-.control-group + label.checkbox + input(type='checkbox', ng-click='useUUID = !useUUID') + =env.t('useUUID') + .control-group + input.btn.btn-primary(type='submit', value=env.t('login')) - small=env.t('passMan') + small=env.t('passMan') - // good god accordions have html ceremony - #forgot-password-accordion.accordion - .accordion-group - .accordion-heading - a.accordion-toggle(data-toggle='collapse', data-parent='#forgot-password-accordion', href='#forgot-password-group')=env.t('forgotPass') - #forgot-password-group.accordion-body.collapse - .accordion-inner - form#derby-auth-password-reset(ng-submit='passwordReset(passwordResetEmail)') - h3=env.t('emailNewPass') - //.alert.alert-success {.success.passwordReset} - //.control-group.{#if..errors.passwordReset}error{/} - .control-group - input(type='text', name='email', placeholder=env.t('email') , ng-model='passwordResetEmail') - //span.help-inline {.errors.passwordReset} - input.btn(type='submit', value=env.t('submit')) + // good god accordions have html ceremony + #forgot-password-accordion.accordion + .accordion-group + .accordion-heading + a.accordion-toggle(data-toggle='collapse', data-parent='#forgot-password-accordion', href='#forgot-password-group')=env.t('forgotPass') + #forgot-password-group.accordion-body.collapse + .accordion-inner + form#derby-auth-password-reset(ng-submit='passwordReset(passwordResetEmail)') + h3=env.t('emailNewPass') + //.alert.alert-success {.success.passwordReset} + //.control-group.{#if..errors.passwordReset}error{/} + .control-group + input(type='text', name='email', placeholder=env.t('email') , ng-model='passwordResetEmail') + //span.help-inline {.errors.passwordReset} + input.btn(type='submit', value=env.t('submit')) - .tab-pane#register-tab - form(ng-submit='register()', name='registrationForm') - .control-group - input(type='text', ng-model='registerVals.username', placeholder=env.t('username'), required) - .control-group - input(type='email', ng-model='registerVals.email', placeholder=env.t('email'), required) - .control-group - input(type='password', ng-model='registerVals.password', placeholder=env.t('password'), required) - .control-group - input(type='password', ng-model='registerVals.confirmPassword', placeholder=env.t('passConfirm'), required) - .control-group - small=env.t('accept1Terms') - a(href='/static/terms' target='_blank')=env.t('terms') - =env.t('accept2Terms') - a(href='/static/privacy' target='_blank')=env.t('privacy') - | . - input.btn.btn-primary(type='submit', value=env.t('register')) + .tab-pane#register-tab + form(ng-submit='register()', name='registrationForm') + .control-group + input(type='text', ng-model='registerVals.username', placeholder=env.t('username'), required) + .control-group + input(type='email', ng-model='registerVals.email', placeholder=env.t('email'), required) + .control-group + input(type='password', ng-model='registerVals.password', placeholder=env.t('password'), required) + .control-group + input(type='password', ng-model='registerVals.confirmPassword', placeholder=env.t('passConfirm'), required) + .control-group + small=env.t('accept1Terms') + a(href='/static/terms' target='_blank')=env.t('terms') + =env.t('accept2Terms') + a(href='/static/privacy' target='_blank')=env.t('privacy') + | . + input.btn.btn-primary(type='submit', value=env.t('register')) diff --git a/views/static/plans.jade b/views/static/plans.jade index 1699d5a2b3..3fc613e1f0 100644 --- a/views/static/plans.jade +++ b/views/static/plans.jade @@ -8,89 +8,93 @@ block title title Group Plans block content - h2 Group Plans + .row + .col-md-12 + h2 Group Plans - p For individuals, HabitRPG is free to play. Even for small interest groups, free (or cheap) guilds and challenges can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more. - p But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of HabitRPG for your group or organization, secure and independent of Habitica. See below for additional plan perks, and contact us for more information! + p For individuals, HabitRPG is free to play. Even for small interest groups, free (or cheap) guilds and challenges can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more. + p But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of HabitRPG for your group or organization, secure and independent of Habitica. See below for additional plan perks, and contact us for more information! - .subscription-features - table.table.table-striped - tr - th.feature-name - th.feature-name.muted Family (Coming Soon) - th.feature-name.muted Group (Coming Soon) - th.feature-name Organization - tr - th - span.dashed-underline(popover="Members of the organization participate outside of HabitRPG proper, providing focus for your participants.",popover-trigger='mouseenter',popover-placement='right') - | Private Organization - td.muted - i.icon-ok - td.muted - i.icon-ok - td - i.icon-ok - tr - th - span.dashed-underline(popover="Dedicated Hosting: you get your own database and server hosted by HabitRPG, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as HabitRPG proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",popover-trigger='mouseenter',popover-placement='right') - | Dedicated Hosting - td - td - td - i.icon-ok - tr - th - span.dashed-underline(popover="We can optionally give you your own domain for the installation.",popover-trigger='mouseenter',popover-placement='right') - | Custom Domain - td - td - td - i.icon-ok - tr - th - span.dashed-underline(popover="The maximum number of players in your private organization.",popover-trigger='mouseenter',popover-placement='right') - | Max Participants - td.muted 10 - td.muted 75 - td Unlimited - tr - th - span.dashed-underline(popover="First to be provided for with support.",popover-trigger='mouseenter',popover-placement='right') - | Priority Support On Tickets & Hosting - td - td - td - i.icon-ok - tr - th - span.dashed-underline(popover="We will provide support for training, bugs, installation, and feature requests. Additional hours available at an hourly rate.",popover-trigger='mouseenter',popover-placement='right') - | Support Hours / Month - td.muted - - td.muted 5 - td 10 - tr - th - h5 Game features: - ul - li Ads disabled for members - li - span.dashed-underline(popover="Members will be able to purchase gems with gold, meaning none of your participants need to buy anything with real money.",popover-trigger='mouseenter',popover-placement='right') - | Gems purchasable with gold - li - span.dashed-underline(popover="We will provide the organization leaders with as many gems as they need, for things like challenge prizes, guild-creation, etc.",popover-trigger='mouseenter',popover-placement='right') - | Infinite leader gems - td.muted - i.icon-ok - td.muted - i.icon-ok - td - i.icon-ok - tr - th - //| Price - td - a.btn(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover="Plan not yet available, but click to contact us and we'll keep you updated.",popover-placement='right',popover-trigger='mouseenter') Contact Us - td - a.btn.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover="Plan not yet available, but click to contact us and we'll keep you updated.",popover-placement='right',popover-trigger='mouseenter') Contact Us - td - a.btn.btn-primary(href='https://docs.google.com/forms/d/12Jqj_8f3oQS0B3ZUHewHbK61uLjBdzBeB0zyEqB9lxM/viewform') Contact Us \ No newline at end of file + .subscription-features + table.table.table-striped + thead + tr + th.feature-name + th.feature-name.muted Family (Coming Soon) + th.feature-name.muted Group (Coming Soon) + th.feature-name Organization + tbody + tr + th + span.dashed-underline(popover="Members of the organization participate outside of HabitRPG proper, providing focus for your participants.",popover-trigger='mouseenter',popover-placement='right') + | Private Organization + td.muted + span.glyphicon.glyphicon-ok + td.muted + span.glyphicon.glyphicon-ok + td + span.glyphicon.glyphicon-ok + tr + th + span.dashed-underline(popover="Dedicated Hosting: you get your own database and server hosted by HabitRPG, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as HabitRPG proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",popover-trigger='mouseenter',popover-placement='right') + | Dedicated Hosting + td + td + td + span.glyphicon.glyphicon-ok + tr + th + span.dashed-underline(popover="We can optionally give you your own domain for the installation.",popover-trigger='mouseenter',popover-placement='right') + | Custom Domain + td + td + td + span.glyphicon.glyphicon-ok + tr + th + span.dashed-underline(popover="The maximum number of players in your private organization.",popover-trigger='mouseenter',popover-placement='right') + | Max Participants + td.muted 10 + td.muted 75 + td Unlimited + tr + th + span.dashed-underline(popover="First to be provided for with support.",popover-trigger='mouseenter',popover-placement='right') + | Priority Support On Tickets & Hosting + td + td + td + span.glyphicon.glyphicon-ok + tr + th + span.dashed-underline(popover="We will provide support for training, bugs, installation, and feature requests. Additional hours available at an hourly rate.",popover-trigger='mouseenter',popover-placement='right') + | Support Hours / Month + td.muted - + td.muted 5 + td 10 + tr + th + h5 Game features: + ul + li Ads disabled for members + li + span.dashed-underline(popover="Members will be able to purchase gems with gold, meaning none of your participants need to buy anything with real money.",popover-trigger='mouseenter',popover-placement='right') + | Gems purchasable with gold + li + span.dashed-underline(popover="We will provide the organization leaders with as many gems as they need, for things like challenge prizes, guild-creation, etc.",popover-trigger='mouseenter',popover-placement='right') + | Infinite leader gems + td.muted + span.glyphicon.glyphicon-ok + td.muted + span.glyphicon.glyphicon-ok + td + span.glyphicon.glyphicon-ok + tr + th + //| Price + td + a.btn(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover="Plan not yet available, but click to contact us and we'll keep you updated.",popover-placement='right',popover-trigger='mouseenter') Contact Us + td + a.btn.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover="Plan not yet available, but click to contact us and we'll keep you updated.",popover-placement='right',popover-trigger='mouseenter') Contact Us + td + a.btn.btn-primary(href='https://docs.google.com/forms/d/12Jqj_8f3oQS0B3ZUHewHbK61uLjBdzBeB0zyEqB9lxM/viewform') Contact Us \ No newline at end of file diff --git a/views/static/privacy.jade b/views/static/privacy.jade index f51601be32..5a6519dec9 100644 --- a/views/static/privacy.jade +++ b/views/static/privacy.jade @@ -7,9 +7,8 @@ block title title HabitRPG | Privacy block content - #wrap - //app:header:header - .container + .row + .col-md-12 .page-header h1 Privacy Policy p.pagemeta @@ -306,5 +305,4 @@ block content br | Telephone: 1-805-975-5236 p - #home_static_footer | © 2012 OCDevel \ No newline at end of file diff --git a/views/static/terms.jade b/views/static/terms.jade index 527b2589d5..4e3b0cb5e1 100644 --- a/views/static/terms.jade +++ b/views/static/terms.jade @@ -7,9 +7,8 @@ block title title HabitRPG | Terms block content - #wrap - //app:header:header - .container + .row + .col-md-12 .page-header h1 Terms of Use p From 3f3869ea28b6e6bc7c20e0cddb7f3afbf0897bdf Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 29 Jan 2014 18:37:51 +0100 Subject: [PATCH 004/159] refactor(bs3): working login modals, had to readd bootstrap origin javascript plugins --- public/js/controllers/authCtrl.js | 3 ++- public/manifest.json | 2 ++ views/static/login-modal.jade | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 26f502bec1..b72d8860a2 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -81,7 +81,8 @@ angular.module('authCtrl', []) window.location.href = '/#/tasks'; } else { $modal.open({ - templateUrl: 'modals/login.html' + templateUrl: 'modals/login.html', + scope: $scope }); } } diff --git a/public/manifest.json b/public/manifest.json index 1fc977153f..8784662bac 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -23,6 +23,7 @@ "bower_components/angular-bootstrap/ui-bootstrap.js", "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", + "bower_components/bootstrap/dist/js/bootstrap.js", "bower_components/jquery-ui/ui/minified/jquery.ui.core.min.js", "bower_components/jquery-ui/ui/minified/jquery.ui.widget.min.js", @@ -74,6 +75,7 @@ "bower_components/angular-bootstrap/ui-bootstrap.js", "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", + "bower_components/bootstrap/dist/js/bootstrap.js", "bower_components/angular-loading-bar/build/loading-bar.js", "js/static.js", diff --git a/views/static/login-modal.jade b/views/static/login-modal.jade index 5430301582..e490f03071 100644 --- a/views/static/login-modal.jade +++ b/views/static/login-modal.jade @@ -1,6 +1,6 @@ script(id='modals/login.html', type="text/ng-template") .modal-header - button.close(type='button') × + button.close(type='button', ng-click='$close()') × h4.modal-title=env.t('loginAndReg') .modal-body a(href='/auth/facebook') From 7354efc1d5f6f62b6d851a383f56434c37cd0d03 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 29 Jan 2014 21:28:11 +0100 Subject: [PATCH 005/159] refactor(bs3): working register & prettier login modal --- public/css/shared.styl | 7 ++++ public/js/controllers/authCtrl.js | 34 ++++++---------- views/static/login-modal.jade | 66 ++++++++++++++++--------------- 3 files changed, 54 insertions(+), 53 deletions(-) diff --git a/public/css/shared.styl b/public/css/shared.styl index 00dba37fe4..1d4b71b780 100644 --- a/public/css/shared.styl +++ b/public/css/shared.styl @@ -15,5 +15,12 @@ text-decoration:none cursor pointer +// Required by angular-ui-bootstrap +.nav, .pagination, .carousel, .panel-title a + cursor: pointer + +.nav-tabs + margin-bottom: 15px + img max-width: 100% \ No newline at end of file diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index b72d8860a2..381ed62e32 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -31,6 +31,16 @@ angular.module('authCtrl', []) }); }; + function errorAlert(data, status, headers, config) { + if (status === 0) { + $window.alert("Server not currently reachable, try again later"); + } else if (!!data && !!data.err) { + $window.alert(data.err); + } else { + $window.alert("ERROR: " + status); + } + }; + $scope.register = function() { /*TODO highlight invalid inputs we have this as a workaround for https://github.com/HabitRPG/habitrpg-mobile/issues/64 @@ -40,27 +50,9 @@ angular.module('authCtrl', []) } $http.post(API_URL + "/api/v2/register", $scope.registerVals).success(function(data, status, headers, config) { runAuth(data.id, data.apiToken); - }).error(function(data, status, headers, config) { - if (status === 0) { - $window.alert("Server not currently reachable, try again later"); - } else if (!!data && !!data.err) { - $window.alert(data.err); - } else { - $window.alert("ERROR: " + status); - } - }); + }).error(errorAlert); }; - function errorAlert(data, status, headers, config) { - if (status === 0) { - $window.alert("Server not currently reachable, try again later"); - } else if (!!data && !!data.err) { - $window.alert(data.err); - } else { - $window.alert("ERROR: " + status); - } - } - $scope.auth = function() { var data = { username: $scope.loginUsername || $('#login-tab input[name="username"]').val(), @@ -81,8 +73,8 @@ angular.module('authCtrl', []) window.location.href = '/#/tasks'; } else { $modal.open({ - templateUrl: 'modals/login.html', - scope: $scope + templateUrl: 'modals/login.html' + // Using controller: 'AuthCtrl' it causes problems }); } } diff --git a/views/static/login-modal.jade b/views/static/login-modal.jade index e490f03071..9949e316c0 100644 --- a/views/static/login-modal.jade +++ b/views/static/login-modal.jade @@ -2,9 +2,9 @@ script(id='modals/login.html', type="text/ng-template") .modal-header button.close(type='button', ng-click='$close()') × h4.modal-title=env.t('loginAndReg') - .modal-body + .modal-body(ng-controller='AuthCtrl') a(href='/auth/facebook') - img(src='/bower_components/habitrpg-shared/img/facebook-login-register.jpeg', alt=env.t('loginFacebookAlt')) + img(src='/bower_components/habitrpg-shared/img/facebook-login-register.jpeg', alt=env.t('loginFacebookAlt')) //can we add in google auth? I like google auth h3 Or ul.nav.nav-tabs @@ -16,52 +16,54 @@ script(id='modals/login.html', type="text/ng-template") .tab-content .tab-pane.active#login-tab form(ng-submit='auth()', method='POST') - .control-group - input(type='text', ng-model='loginUsername', placeholder=env.t('username'), name='username') - .control-group - input(type='password', ng-model='loginPassword', placeholder=env.t('password'), name='password') + .form-group + input.form-control(type='text', ng-model='loginUsername', placeholder=env.t('username'), name='username') + .form-group + input.form-control(type='password', ng-model='loginPassword', placeholder=env.t('password'), name='password') //-.control-group label.checkbox input(type='checkbox', ng-click='useUUID = !useUUID') =env.t('useUUID') - .control-group + .form-group input.btn.btn-primary(type='submit', value=env.t('login')) small=env.t('passMan') + br + br // good god accordions have html ceremony - #forgot-password-accordion.accordion - .accordion-group - .accordion-heading - a.accordion-toggle(data-toggle='collapse', data-parent='#forgot-password-accordion', href='#forgot-password-group')=env.t('forgotPass') - #forgot-password-group.accordion-body.collapse - .accordion-inner - form#derby-auth-password-reset(ng-submit='passwordReset(passwordResetEmail)') - h3=env.t('emailNewPass') - //.alert.alert-success {.success.passwordReset} - //.control-group.{#if..errors.passwordReset}error{/} - .control-group - input(type='text', name='email', placeholder=env.t('email') , ng-model='passwordResetEmail') - //span.help-inline {.errors.passwordReset} + .panel-group#forgot-password + .panel.panel-default + .panel-heading + h3.panel-title + a(data-toggle="collapse" data-parent="#forgot-password" href="#forgot-password-panel")=env.t('forgotPass') + + .panel-body.collapse#forgot-password-panel + form(ng-submit='passwordReset(passwordResetEmail)') + //.alert.alert-success {.success.passwordReset} + //.control-group.{#if..errors.passwordReset}error{/} + h3=env.t('emailNewPass') + .form-group + input.form-control(type='text', name='email', placeholder=env.t('email') , ng-model='passwordResetEmail') + //span.help-inline {.errors.passwordReset} + .form-group input.btn(type='submit', value=env.t('submit')) - - - .tab-pane#register-tab form(ng-submit='register()', name='registrationForm') - .control-group - input(type='text', ng-model='registerVals.username', placeholder=env.t('username'), required) - .control-group - input(type='email', ng-model='registerVals.email', placeholder=env.t('email'), required) - .control-group - input(type='password', ng-model='registerVals.password', placeholder=env.t('password'), required) - .control-group - input(type='password', ng-model='registerVals.confirmPassword', placeholder=env.t('passConfirm'), required) - .control-group + .form-group + input.form-control(type='text', ng-model='registerVals.username', placeholder=env.t('username'), required) + .form-group + input.form-control(type='email', ng-model='registerVals.email', placeholder=env.t('email'), required) + .form-group + input.form-control(type='password', ng-model='registerVals.password', placeholder=env.t('password'), required) + .form-group + input.form-control(type='password', ng-model='registerVals.confirmPassword', placeholder=env.t('passConfirm'), required) + .form-group small=env.t('accept1Terms') a(href='/static/terms' target='_blank')=env.t('terms') =env.t('accept2Terms') a(href='/static/privacy' target='_blank')=env.t('privacy') | . + .form-group input.btn.btn-primary(type='submit', value=env.t('register')) From c93bc469081502d27dda4afb03769da76d66037a Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 29 Jan 2014 22:18:13 +0100 Subject: [PATCH 006/159] refactor(bs3): use templates for modals --- views/shared/modals/achievements.jade | 11 +- views/shared/modals/buy-gems.jade | 5 +- views/shared/modals/classes.jade | 4 +- views/shared/modals/death.jade | 3 +- views/shared/modals/drops.jade | 6 +- views/shared/modals/index.jade | 1 - views/shared/modals/login.jade | 42 -------- views/shared/modals/members.jade | 52 +++++----- views/shared/modals/new-stuff.jade | 3 +- views/shared/modals/quests.jade | 12 ++- views/shared/modals/rebirth.jade | 6 +- views/shared/modals/reroll.jade | 3 +- views/shared/modals/settings.jade | 141 +++++++++++++------------- views/static/login-modal.jade | 2 +- 14 files changed, 134 insertions(+), 157 deletions(-) delete mode 100644 views/shared/modals/login.jade diff --git a/views/shared/modals/achievements.jade b/views/shared/modals/achievements.jade index 3526cb9dc4..b679a24c28 100644 --- a/views/shared/modals/achievements.jade +++ b/views/shared/modals/achievements.jade @@ -1,5 +1,5 @@ // Streak -div(modal='modals.achievements.streak') +script(id='modals/achievements/streak.html', type='text/ng-template') .modal-header h3=env.t('modalAchievement') .modal-body @@ -9,7 +9,7 @@ div(modal='modals.achievements.streak') button.btn.btn-default.cancel(ng-click='modals.achievements.streak = false')=env.t('ok') // Max Gear -div(modal='modals.achievements.ultimateGear') +script(id='modals/achievements/ultimateGear.html', type='text/ng-template') .modal-header h3=env.t('modalAchievement') .modal-body @@ -19,7 +19,7 @@ div(modal='modals.achievements.ultimateGear') button.btn.btn-default.cancel(ng-click='modals.achievements.ultimateGear = false')=env.t('ok') // Beast Master -div(modal='modals.achievements.beastMaster') +script(id='modals/achievements/ultimateGear.html', type='text/ng-template') .modal-header h3=env.t('modalAchievement') .modal-body @@ -30,7 +30,8 @@ div(modal='modals.achievements.beastMaster') button.btn.btn-default.cancel(ng-click='modals.achievements.beastMaster = false')=env.t('ok') // Contributor -div(modal='user.flags.contributor') +// activated by user.flags.contributor +script(id='modals/achievements/contributor.html', type='text/ng-template') .modal-header h3=env.t('modalContribAchievement') .modal-body @@ -45,7 +46,7 @@ div(modal='user.flags.contributor') button.btn.btn-default.cancel(ng-click='set({"flags.contributor":false})')=env.t('ok') //Rebirth -div(modal='modals.achievements.rebirth') +script(id='modals/achievements/rebirth.html', type='text/ng-template') .modal-header h3=env.t('modalAchievement') .modal-body diff --git a/views/shared/modals/buy-gems.jade b/views/shared/modals/buy-gems.jade index a7bd1375f8..2c9d42e268 100644 --- a/views/shared/modals/buy-gems.jade +++ b/views/shared/modals/buy-gems.jade @@ -1,4 +1,5 @@ -div(modal='modals.buyGems') +//Why is shown? Because of script here at line 24!!!!!!!!! +script(id='modals/buyGems.html', type='text/ng-template') .modal-body .buy-gems include ../gems @@ -20,7 +21,7 @@ div(modal='modals.buyGems') .btn.btn-primary(ng-click='showStripe()',style='margin-left:10px;')=env.t('payWithCard') div(style='float:left;') //-script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-env="#{env.NODE_ENV == 'production' ? '' : 'sandbox'}", data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') - script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') + //script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') p small.muted(style='line-height:10px;')=env.t('payNote') diff --git a/views/shared/modals/classes.jade b/views/shared/modals/classes.jade index 220b13c213..4a96a558c3 100644 --- a/views/shared/modals/classes.jade +++ b/views/shared/modals/classes.jade @@ -1,4 +1,6 @@ -.modal(ng-if='!user.flags.classSelected && user.stats.lvl >= 10', data-backdrop=true, ng-controller='UserCtrl') +//activated by +// ng-if='!user.flags.classSelected && user.stats.lvl >= 10', data-backdrop=true, ng-controller='UserCtrl') +script(type='text/ng-template', id='modals/chooseClass.html') .modal-header h3=env.t('chooseClass1') a(href='http://habitrpg.wikia.com/wiki/Class_System' target='_blank')=env.t('chooseClass2') diff --git a/views/shared/modals/death.jade b/views/shared/modals/death.jade index 2c346e11a8..c76322e935 100644 --- a/views/shared/modals/death.jade +++ b/views/shared/modals/death.jade @@ -1,4 +1,5 @@ -div(modal='user.stats.hp <= 0', options='{backdrop:true, keyboard:false, backdropClick:false}') +//div(modal='user.stats.hp <= 0', options='{backdrop:true, keyboard:false, backdropClick:false}') +script(type='text/ng-template', id='modals/death.html') .modal-body .row-fluid .span4 diff --git a/views/shared/modals/drops.jade b/views/shared/modals/drops.jade index e423e2d68a..de42dd85ac 100644 --- a/views/shared/modals/drops.jade +++ b/views/shared/modals/drops.jade @@ -1,4 +1,5 @@ -div(modal='modals.dropsEnabled') +//div(modal='modals.dropsEnabled') +script(type='text/ng-template', id='modals/dropsEnabled.html') .modal-header h3=env.t('dropsEnabled') .modal-body @@ -12,7 +13,8 @@ div(modal='modals.dropsEnabled') .modal-footer button.btn.btn-default.cancel(ng-click='modals.dropsEnabled = false')=env.t('close') -div(modal='modals.drop') +//div(modal='modals.drop') +script(type='text/ng-template', id='modals/drop.html') .modal-header h3=env.t('itemDrop') .modal-body diff --git a/views/shared/modals/index.jade b/views/shared/modals/index.jade index db481615bb..a8c0626e99 100644 --- a/views/shared/modals/index.jade +++ b/views/shared/modals/index.jade @@ -1,5 +1,4 @@ include ./achievements -include ./login include ./reroll include ./death include ./new-stuff diff --git a/views/shared/modals/login.jade b/views/shared/modals/login.jade deleted file mode 100644 index 9245d18535..0000000000 --- a/views/shared/modals/login.jade +++ /dev/null @@ -1,42 +0,0 @@ -// This file was moved to /views/static/front.jade, as we're requiring login / registration from front page now - keep this file around until we're sure of that decision - -//-div(modal='modals.login') - .modal-header - h3 Login / Register - .modal-body - //a(href='/auth/facebook') - img(src='/img/facebook-login-register.jpeg', alt='Login / Register With Facebook') - //h3 Or - tabset - tab(heading='Login') - form(ng-controller='AuthCtrl', ng-submit='auth()') - .control-group - input(type='text', ng-model='loginUsername', placeholder='{{useUUID ? \'UUID\' : \'Username\'}}') - .control-group - input(type='{{useUUID ? "text" : "password"}}', ng-model='loginPassword', placeholder='{{useUUID ? \'API Token\' : \'Password\'}}') - .control-group - label.checkbox - input(type='checkbox', ng-click='useUUID = !useUUID') - | Use UUID / API Token (For Facebook Users) - .control-group - input.btn.btn-primary(type='submit', value='Login') - - tab(heading='Register') - form(ng-controller='AuthCtrl', ng-submit='register()', name='registrationForm') - .control-group - input(type='text', ng-model='registerVals.username', placeholder='Username', required) - .control-group - input(type='email', ng-model='registerVals.email', placeholder='Email', required) - .control-group - input(type='password', ng-model='registerVals.password', placeholder='Password', required) - .control-group - input(type='password', ng-model='registerVals.confirmPassword', placeholder='Password Confirm', required) - .control-group - input.btn.btn-primary(type='submit', value='Register') - - - .modal-footer - button.btn.btn-warning.cancel(ng-click='modals.login = false') Cancel - - diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index c0b3b9388d..4816c817f2 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -1,26 +1,28 @@ -div(ng-controller='MemberModalCtrl') +//div(ng-controller='MemberModalCtrl') #memberModal(modal='modals.member') - .modal-header(bindonce='profile') - h3 - span {{profile.profile.name}} - span(ng-if='profile.contributor.level') - {{contribText(profile.contributor, profile.backer)}} - .modal-body(bindonce='profile') - .row-fluid - .span6 - img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') - markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') - ul.muted.unstyled(ng-if='profile.auth.timestamps', style='margin-top:10px;') - li {{profile._id}} - li(ng-show='profile.auth.timestamps.created')=env.t('memberSince') - | {{timestamp(profile.auth.timestamps.created)}} - - li(ng-show='profile.auth.timestamps.loggedin')=env.t('lastLoggedIn') - | {{timestamp(profile.auth.timestamps.loggedin)}} - - h3=env.t('stats') - .label.label-info {{profile.stats.class}} - include ../profiles/stats - .span6 - include ../header/avatar - h3 Achievements - include ../profiles/achievements - .modal-footer - button.btn.btn-default(ng-click='modals.member = false')=env.t('ok') + +script(type='text/ng-template', id='modals/member.html') + .modal-header(bindonce='profile') + h3 + span {{profile.profile.name}} + span(ng-if='profile.contributor.level') - {{contribText(profile.contributor, profile.backer)}} + .modal-body(bindonce='profile') + .row-fluid + .span6 + img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') + markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') + ul.muted.unstyled(ng-if='profile.auth.timestamps', style='margin-top:10px;') + li {{profile._id}} + li(ng-show='profile.auth.timestamps.created')=env.t('memberSince') + | {{timestamp(profile.auth.timestamps.created)}} - + li(ng-show='profile.auth.timestamps.loggedin')=env.t('lastLoggedIn') + | {{timestamp(profile.auth.timestamps.loggedin)}} - + h3=env.t('stats') + .label.label-info {{profile.stats.class}} + include ../profiles/stats + .span6 + include ../header/avatar + h3 Achievements + include ../profiles/achievements + .modal-footer + button.btn.btn-default(ng-click='modals.member = false')=env.t('ok') diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index 096590cbce..c5623d18b0 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -11,7 +11,8 @@ .modal-footer button.btn.btn-default.cancel(ng-click='User.set({"flags.mathUpdates":true})') Dismiss -div(modal='modals.newStuff') +//div(modal='modals.newStuff') +script(type='text/ng-template', id='modals/newStuff.html') .modal-header h3 New Stuff! .modal-body diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index 2849d230f2..f09a176117 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -11,7 +11,8 @@ 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') +//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}}" =env.t('completed') @@ -21,7 +22,8 @@ div(modal='user.party.quest.completed', ng-controller='InventoryCtrl') .modal-footer button.btn.btn-default.btn-primary(ng-click='set({"party.quest.completed":""})')=env.t('accept') -div(modal='modals.showQuest', ng-controller='InventoryCtrl') +//div(modal='modals.showQuest', ng-controller='InventoryCtrl') +script(type='text/ng-template', id='modals/showQuest.html') .modal-header h3 {{selectedQuest.text}} .modal-body @@ -36,7 +38,8 @@ div(modal='modals.showQuest', ng-controller='InventoryCtrl') 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') -div(modal='modals.buyQuest', ng-controller='InventoryCtrl') +//div(modal='modals.buyQuest', ng-controller='InventoryCtrl') +script(type='text/ng-template', id='modals/buyQuest.html') .modal-header h3 {{selectedQuest.text}} .modal-body @@ -47,7 +50,8 @@ div(modal='modals.buyQuest', ng-controller='InventoryCtrl') 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') -div(modal='party.quest.key && !party.quest.active && !questHold && party.quest.members[user._id] == undefined') +//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') | {{Content.quests[party.quest.key].text}} diff --git a/views/shared/modals/rebirth.jade b/views/shared/modals/rebirth.jade index bbc79630cf..9e7dc610d2 100644 --- a/views/shared/modals/rebirth.jade +++ b/views/shared/modals/rebirth.jade @@ -1,6 +1,7 @@ // Created by Sabe on 12/22/13. -div(modal='modals.rebirthEnabled') +//div(modal='modals.rebirthEnabled') +script(type='text/ng-template', id='modals/rebirthEnabled.html') .modal-header h3=env.t('rebirthNew') .modal-body @@ -10,7 +11,8 @@ div(modal='modals.rebirthEnabled') .modal-footer button.btn.btn-default.cancel(ng-click='modals.rebirthEnabled = false')=env.t('close') -div(modal='modals.rebirth') +//div(modal='modals.rebirth') +script(type='text/ng-template', id='modals/rebirth.html') .modal-header h3=env.t('rebirthBegin') .modal-body diff --git a/views/shared/modals/reroll.jade b/views/shared/modals/reroll.jade index 24dba8d7ff..09bbcc5bee 100644 --- a/views/shared/modals/reroll.jade +++ b/views/shared/modals/reroll.jade @@ -1,5 +1,6 @@ // Re-Roll modal -div(modal='modals.reroll') +//div(modal='modals.reroll') +script(type='text/ng-template', id='modals/reroll.html') .modal-header h3=env.t('fortify') .modal-body diff --git a/views/shared/modals/settings.jade b/views/shared/modals/settings.jade index 956b47a96d..1de8fac436 100644 --- a/views/shared/modals/settings.jade +++ b/views/shared/modals/settings.jade @@ -1,76 +1,79 @@ -div(ng-controller='SettingsCtrl') +//div(ng-controller='SettingsCtrl') div(modal='modals.reset') - .modal-header - h3=env.t('resetaccount') - .modal-body - p=env.t('resetText1') - p=env.t('resetText2') - .modal-footer - button.btn.btn-default.cancel(ng-click='modals.reset = false')=env.t('neverMind') - button.btn.btn-danger(data-dismiss='modal', ng-click='reset()')=env.t('resetDo') +script(type='text/ng-template', id='modals/reset.html') + .modal-header + h3=env.t('resetaccount') + .modal-body + p=env.t('resetText1') + p=env.t('resetText2') + .modal-footer + button.btn.btn-default.cancel(ng-click='modals.reset = false')=env.t('neverMind') + button.btn.btn-danger(data-dismiss='modal', ng-click='reset()')=env.t('resetDo') - div(modal='modals.restore') - .modal-header - h3=env.t('fixValues') - .modal-body - p=env.t('fixValuesText1') - p=env.t('fixValuesText2') - div.restore-options - form#restore-form.form-horizontal - h3=env.t('stats') +//div(modal='modals.restore') +script(type='text/ng-template', id='modals/restore.html') + .modal-header + h3=env.t('fixValues') + .modal-body + p=env.t('fixValuesText1') + p=env.t('fixValuesText2') + div.restore-options + 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') + 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') + span.input-suffix=env.t('experience') + .option-group.option-medium(ng-if='!user.purchased.plan.customerId') + //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='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') + span.input-suffix=env.t('mana') + .option-group.option-medium + input.option-content(type='number', data-for='stats.lvl', ng-model='restoreValues.stats.lvl') + span.input-suffix=env.t('level') + //- + //- Commenting out since it doesn't make sense to restore equipment with Armory anymore. They can just restore GP & buy + h3 Equipment .option-group.option-medium - input.option-content(type='number', step="any", data-for='stats.hp', ng-model='restoreValues.stats.hp') - span.input-suffix=env.t('health') + input.option-content(type='number', data-for='items.weapon', ng-model='restoreValues.items.weapon') + span.input-suffix Weapon .option-group.option-medium - input.option-content(type='number', step="any", data-for='stats.exp', ng-model='restoreValues.stats.exp') - span.input-suffix=env.t('experience') - .option-group.option-medium(ng-if='!user.purchased.plan.customerId') - //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='restoreValues.stats.gp',disabled) - span.input-suffix=env.t('gold') - p.alert - small=env.t('disabledWinterEvent') + input.option-content(type='number', data-for='items.armor', ng-model='restoreValues.items.armor') + span.input-suffix Armor .option-group.option-medium - input.option-content(type='number', step="any", data-for='stats.mp', ng-model='restoreValues.stats.mp') - span.input-suffix=env.t('mana') + input.option-content(type='number', data-for='items.head', ng-model='restoreValues.items.head') + span.input-suffix Helm .option-group.option-medium - input.option-content(type='number', data-for='stats.lvl', ng-model='restoreValues.stats.lvl') - span.input-suffix=env.t('level') - //- - //- Commenting out since it doesn't make sense to restore equipment with Armory anymore. They can just restore GP & buy - h3 Equipment - .option-group.option-medium - input.option-content(type='number', data-for='items.weapon', ng-model='restoreValues.items.weapon') - span.input-suffix Weapon - .option-group.option-medium - input.option-content(type='number', data-for='items.armor', ng-model='restoreValues.items.armor') - span.input-suffix Armor - .option-group.option-medium - input.option-content(type='number', data-for='items.head', ng-model='restoreValues.items.head') - span.input-suffix Helm - .option-group.option-medium - input.option-content(type='number', data-for='items.shield', ng-model='restoreValues.items.shield') - span.input-suffix Shield - h3=env.t('achievements') - .option-group.option-medium - input.option-content(type='number', data-for='achievements.streak', ng-model='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='modals.restore = false')=env.t('discardChanges') - button.btn.btn-primary(ng-click='restore()')=env.t('saveAndClose') + input.option-content(type='number', data-for='items.shield', ng-model='restoreValues.items.shield') + span.input-suffix Shield + h3=env.t('achievements') + .option-group.option-medium + input.option-content(type='number', data-for='achievements.streak', ng-model='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='modals.restore = false')=env.t('discardChanges') + button.btn.btn-primary(ng-click='restore()')=env.t('saveAndClose') - div(modal='modals.delete') - .modal-header - h3=env.t('deleteaccount') - .modal-body - p=env.t('deleteText1') - strong=env.t('deleteText2') - =env.t('deleteText3') - p - input(type='text', ng-model='_deleteAccount') - .modal-footer - button.btn.btn-default(ng-click='modals.delete = false')=env.t('neverMind') - button.btn.btn-danger.btn-small(ng-disabled='_deleteAccount != "DELETE"', ng-click='delete()')=env.t('deleteDo') +//div(modal='modals.delete') +script(type='text/ng-template', id='modals/delete.html') + .modal-header + h3=env.t('deleteaccount') + .modal-body + p=env.t('deleteText1') + strong=env.t('deleteText2') + =env.t('deleteText3') + p + input(type='text', ng-model='_deleteAccount') + .modal-footer + button.btn.btn-default(ng-click='modals.delete = false')=env.t('neverMind') + button.btn.btn-danger.btn-small(ng-disabled='_deleteAccount != "DELETE"', ng-click='delete()')=env.t('deleteDo') diff --git a/views/static/login-modal.jade b/views/static/login-modal.jade index 9949e316c0..b17d41d171 100644 --- a/views/static/login-modal.jade +++ b/views/static/login-modal.jade @@ -1,4 +1,4 @@ -script(id='modals/login.html', type="text/ng-template") +script(id='modals/login.html', type='text/ng-template') .modal-header button.close(type='button', ng-click='$close()') × h4.modal-title=env.t('loginAndReg') From 9481b32b0f508c84009504ffbbfe1b386abcfd23 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Thu, 30 Jan 2014 19:34:50 +0100 Subject: [PATCH 007/159] chore(bs3): upgrade to 3.1.0 --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index 7290b31c4c..feef1b4642 100644 --- a/bower.json +++ b/bower.json @@ -26,7 +26,7 @@ "angular-ui-router": "ca3b4777a603df8f86cfd653c8f6c38b2ae05d89", "angular-loading-bar": "~0.3.0", "angular-bindonce": "~0.2.1", - "bootstrap": "~3.0.3", + "bootstrap": "~3.1.0", "bootstrap-datepicker": "1.3.0", "bootstrap-growl": "~1.1.0", "bootstrap-tour": "~0.8.1", From 49ec9d2e5c8f22934f365d076246c8b20e5246ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Larivi=C3=A8re?= Date: Thu, 30 Jan 2014 19:57:50 -0500 Subject: [PATCH 008/159] Fixed inventory alignment. Issue #2158 --- views/options/inventory/inventory.jade | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index cc0c8d0d56..72214e59c5 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -1,17 +1,18 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') .row-fluid .span6.border-right - h3=env.t('battleGear') - small=env.t('battleGearText') + h3(style="display: inline-block; vertical-align: middle;")=env.t('battleGear') +   + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText'), style="display: inline-block;") li.customize-menu.inventory-gear menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Wizard", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') div(ng-repeat='item in gear[klass]') button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}') .span6 - h3=env.t('costume') - small=env.t('costumeText') - br - label.checkbox.inline + h3(style="display: inline-block; vertical-align: middle;")=env.t('costume') +   + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('costumeText')) + label.checkbox.inline(style="margin-left: 20px;") input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') =env.t('useCostume') li.customize-menu(ng-if='user.preferences.costume') From 2e64b03a638c7c84bcfe44fdef116d7eced98163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Larivi=C3=A8re?= Date: Thu, 30 Jan 2014 19:58:34 -0500 Subject: [PATCH 009/159] Fixed inventory alignment. Issue #2158 --- views/options/inventory/inventory.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 72214e59c5..706f2ce5e4 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -1,7 +1,7 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') .row-fluid .span6.border-right - h3(style="display: inline-block; vertical-align: middle;")=env.t('battleGear') + h3=env.t('battleGear')   i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText'), style="display: inline-block;") li.customize-menu.inventory-gear From 0764aa8c1764ed72a2ea0e9f1cbf16e59aa56614 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 31 Jan 2014 19:47:48 +0100 Subject: [PATCH 010/159] refactor(bs3): convert icons to new format --- bower.json | 4 ++++ views/main/filters.jade | 8 +++---- views/options/index.jade | 8 +++---- views/options/profile.jade | 12 +++++----- views/options/settings.jade | 12 +++++----- views/options/social/challenge-box.jade | 4 ++-- views/options/social/challenges.jade | 10 ++++----- views/options/social/chat-message.jade | 2 +- views/options/social/group.jade | 8 +++---- views/options/social/hall.jade | 2 +- views/options/social/index.jade | 10 ++++----- views/shared/header/avatar.jade | 4 ++-- views/shared/header/header.jade | 8 +++---- views/shared/header/menu.jade | 16 ++++++------- views/shared/profiles/stats.jade | 22 +++++++++--------- views/shared/tasks/lists.jade | 14 ++++++------ views/shared/tasks/task.jade | 30 ++++++++++++------------- 17 files changed, 89 insertions(+), 85 deletions(-) diff --git a/bower.json b/bower.json index feef1b4642..1dadcfef82 100644 --- a/bower.json +++ b/bower.json @@ -44,5 +44,9 @@ }, "devDependencies": { "angular-mocks": "~1.2.1" + }, + "resolutions": { + "jquery": ">=1.6.4", + "bootstrap": "~3.1.0" } } diff --git a/views/main/filters.jade b/views/main/filters.jade index 0a5de7e1db..c3a11240b1 100644 --- a/views/main/filters.jade +++ b/views/main/filters.jade @@ -5,15 +5,15 @@ ul.nav.nav-pills li a(rel='tooltip', title=env.t('editTags'), ng-click='saveOrEdit()') - i(ng-class='{"icon-ok": _editing, "icon-pencil": !_editing}') + span.glyphicon(ng-class='{"glyphicon-ok": _editing, "glyphicon-pencil": !_editing}') li(bindonce='user.tags', ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags', style='position: relative;') .input-append.option-group.tag-editing(ng-show='_editing') input.input.input-small.option-content.tag-editing-pill(type='text', ng-model='tag.name') span.add-on.tag-editing-pill a.pull-right(ng-click='user.ops.deleteTag({params:{id:tag.id}})') - i.icon-trash + span.glyphicon.glyphicon-trash a(ng-hide='_editing', ng-click='toggleFilter(tag)') - i.icon-bullhorn(bo-if="tag.challenge") + span.glyphicon.glyphicon-bullhorn(bo-if="tag.challenge") markdown(ng-model='tag.name',style='display: inline-block') li form.form-inline(ng-show='_editing', ng-submit='createTag(_newTag)') @@ -23,4 +23,4 @@ //
  • li a(rel='tooltip', title=env.t('clearFilters'), ng-click='user.filters = {}') - i.icon-remove-sign + span.glyphicon.glyphicon-remove-sign diff --git a/views/options/index.jade b/views/options/index.jade index aea6dedb26..496acde639 100644 --- a/views/options/index.jade +++ b/views/options/index.jade @@ -12,19 +12,19 @@ script(id='partials/options.html', type="text/ng-template") ul.nav.nav-tabs li(ng-class="{ active: $state.includes('options.profile') }") a(ui-sref='options.profile') - i.icon-user + span.glyphicon.glyphicon-user =env.t('profile') li(ng-class="{ active: $state.includes('options.social') }") a(ui-sref='options.social') - i.icon-heart + span.glyphicon.glyphicon-heart =env.t('social') li(ng-class="{ active: $state.includes('options.inventory') }", ng-if='user.flags.dropsEnabled') a(ui-sref='options.inventory') - i.icon-gift + span.glyphicon.glyphicon-gift =env.t('inventory') li(ng-class="{ active: $state.includes('options.settings') }") a(ui-sref='options.settings') - i.icon-wrench + span.glyphicon.glyphicon-wrench =env.t('settings') .tab-content diff --git a/views/options/profile.jade b/views/options/profile.jade index 36eec2f599..ed68f3e95d 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -41,7 +41,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') .label.label-info.pull-right(popover=env.t('limited31Jan'), popover-title=env.t('limitededition'), popover-placement='right', popover-trigger='mouseenter') =env.t('limitededition') | - i.icon.icon-question-sign + span.glyphicon.glyphicon.icon-question-sign menu(label=env.t('wintercolors')) each color in ['candycane','frost','winternight','holly'] button(type='button', ng-class='{locked: !user.purchased.hair.color.#{color}}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') @@ -129,7 +129,7 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') {{user.stats.points}}  =env.t('unallocated')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelpopover')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelpopover')) td tr td(colspan=2) @@ -138,23 +138,23 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') =env.t('automaticallocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('automaticallocationpopover')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('automaticallocationpopover')) form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') label.radio input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') =env.t('evenallocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenallocationpopover')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenallocationpopover')) label.radio input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') =env.t('classallocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classallocationpopover')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classallocationpopover')) label.radio input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') =env.t('taskallocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskallocationpopover')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskallocationpopover')) tr td= env.t('allocatestr') + ' {{user.stats.str}}' td diff --git a/views/options/settings.jade b/views/options/settings.jade index 5a330cda07..f6f6c393ef 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -38,27 +38,27 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') input(type='checkbox', ng-click='set({"preferences.hideHeader":user.preferences.hideHeader?false:true})', ng-checked='user.preferences.hideHeader!==true') =env.t('showHeader')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('showHeaderpop')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('showHeaderpop')) label.checkbox input(type='checkbox', ng-click='toggleStickyHeader()', ng-checked='user.preferences.stickyHeader!==false') =env.t('stickyHeader')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('stickyHeaderpop')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('stickyHeaderpop')) label.checkbox input(type='checkbox', ng-model='user.preferences.newTaskEdit', ng-change='set({"preferences.newTaskEdit": user.preferences.newTaskEdit?true: false})') =env.t('newtaskedit')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('newtaskeditpop')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('newtaskeditpop')) label.checkbox input(type='checkbox', ng-model='user.preferences.tagsCollapsed', ng-change='set({"preferences.tagsCollapsed": user.preferences.tagsCollapsed?true: false})') =env.t('startcollapsed')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startcollapsedpop')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startcollapsedpop')) label.checkbox input(type='checkbox', ng-model='user.preferences.advancedCollapsed', ng-change='set({"preferences.advancedCollapsed": user.preferences.advancedCollapsed?true: false})') =env.t('startacollapsed')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startacollapsedpop')) + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startacollapsedpop')) button.btn(ng-click='showTour()', popover-placement='right', popover-trigger='mouseenter', popover=env.t('showtourpop1'))= env.t('showtour') br button.btn(ng-click='showBailey()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('showtourpop'))= env.t('showtour2') @@ -156,7 +156,7 @@ script(id='partials/options.settings.subscription.html',type='text/ng-template') div(ng-if='user.purchased.plan.customerId') .well div(style='font-size:22px') - i.icon-ok + span.glyphicon.glyphicon-ok | Subscribed div(ng-include="'partials/options.settings.subscription.perks.html'") .btn.btn-small.btn-danger(ng-click='cancelSubscription()') Cancel Subscription \ No newline at end of file diff --git a/views/options/social/challenge-box.jade b/views/options/social/challenge-box.jade index 5b7254bbc7..683d5ba829 100644 --- a/views/options/social/challenge-box.jade +++ b/views/options/social/challenge-box.jade @@ -3,7 +3,7 @@ .modal-header h3=env.t('challenges') a.pull-right(target='_blank', href='https://trello.com/card/challenges-individual-party-guild-public/50e5d3684fe3a7266b0036d6/58') - i.icon-question-sign + span.glyphicon.glyphicon-question-sign .modal-body(bindonce='group.challenges') div(ng-if='group.challenges.length > 0') table.table.table-striped @@ -13,6 +13,6 @@ div(ng-if='group.challenges.length == 0') p=env.t('noChallenges') a(class='label' ui-sref='options.social.challenges') - i.icon-bullhorn + span.glyphicon.glyphicon-bullhorn =env.t('challenges') =env.t('toCreate') diff --git a/views/options/social/challenges.jade b/views/options/social/challenges.jade index fe2769b6a1..08cc85c531 100644 --- a/views/options/social/challenges.jade +++ b/views/options/social/challenges.jade @@ -39,7 +39,7 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.ht .well(bindonce='challenge', ng-if='challenge.description') markdown(ng-model='challenge.description') - i.icon-question-sign(popover=env.t('challengeDiscription'), popover-trigger='mouseenter', popover-placement='right') + span.glyphicon.glyphicon-question-sign(popover=env.t('challengeDiscription'), popover-trigger='mouseenter', popover-placement='right') habitrpg-tasks(obj='challenge', main=false) // Member List @@ -98,7 +98,7 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') .option-medium input.option-content(type='text', minlength="3", maxlength="16", ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required) a(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags') - i.icon-question-sign(popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right') + span.glyphicon.glyphicon-question-sign(popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right') textarea.option-content(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description') @@ -109,7 +109,7 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') .option-medium input.option-content(type='number', min="{{newChallenge.group=='habitrpg' ? 1 : 0}}", max="{{maxPrize}}", ng-model='newChallenge.prize', placeholder=env.t('prize')) span.input-suffix.Pet_Currency_Gem1x.inline-gems - i.icon-question-sign(popover=env.t('prizePop'), popover-trigger='mouseenter', popover-placement='right') + span.glyphicon.glyphicon-question-sign(popover=env.t('prizePop'), popover-trigger='mouseenter', popover-placement='right') span(ng-show='newChallenge.group=="habitrpg"') !=env.t('min1Gem') + ' ' + env.t('publicChallenges') + ' ' + env.t('helpsPrevent') @@ -144,10 +144,10 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') li // leave / join a.btn.btn-small.btn-danger(ng-show='challenge._isMember', ng-click='clickLeave(challenge, $event)') - i.icon-ban-circle + span.glyphicon.glyphicon-ban-circle =env.t('leave') a.btn.btn-small.btn-success(ng-hide='challenge._isMember', ng-click='join(challenge)') - i.icon-ok + span.glyphicon.glyphicon-ok =env.t('join') a.accordion-toggle(ng-click='toggle(challenge._id)') {{challenge.name}} .accordion-body(ng-class='{collapse: !$stateParams.cid == challenge._id}') diff --git a/views/options/social/chat-message.jade b/views/options/social/chat-message.jade index 6aab142028..bf8e731a66 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -9,6 +9,6 @@ li.chat-message(bindonce='group.chat', ng-repeat='message in group.chat', bo-cla a.label(ng-show='countExists(message.likes)',ng-class='{"label-success":message.likes[user._id]}',ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} a.chat-plus-one.muted(ng-show='!countExists(message.likes)',ng-click='likeChatMessage(group,message)',style='background-color:#eee;padding:3px 3px 0px 3px') +1 a(bo-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)',style='padding: 0px 3px') - i.icon-trash(tooltip=env.t('delete')) + span.glyphicon.glyphicon-trash(tooltip=env.t('delete')) a.label.chat-message(bo-show='message.user', class='float-label', bo-class='{"label-npc": message.backer.npc, "label-contributor-{{message.contributor.level}}":message.contributor.level}', ng-click='clickMember(message.uuid, true)') span(tooltip='{{contribText(message.contributor, message.backer)}}') {{message.user}}  diff --git a/views/options/social/group.jade b/views/options/social/group.jade index 95a9871e43..46ba51453e 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -33,13 +33,13 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild .progress(style="height:10px") .bar(style='width: {{Shared.percent(group.quest.hp, Content.quests[group.quest.key].hp)}}%;') span.meter-text - i.icon-heart + span.glyphicon.glyphicon-heart | {{group.quest.hp | number:0}} / {{Content.quests[group.quest.key].hp}} .hero-stats .meter.health(title=env.t('bossHP')) .bar(style='width: {{Shared.percent(group.quest.progress.hp, Content.quests[group.quest.key].boss.hp)}}%;') span.meter-text - i.icon-heart + span.glyphicon.glyphicon-heart | {{group.quest.progress.hp | number:0}} / {{Content.quests[group.quest.key].boss.hp}} div(ng-if='Content.quests[group.quest.key].collect') @@ -124,7 +124,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild // allow leaders to ban members div(ng-show='group.leader == user.id && user.id!=member._id') a(ng-click='removeMember(group, member, true)') - i.icon-ban-circle(tooltip=env.t('banTip')) + span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) a span(ng-class='{"badge badge-info": group.leader==member._id}', ng-click='clickMember(member._id, true)') | {{member.profile.name}} @@ -141,7 +141,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild // allow leaders to ban members div(ng-show='group.leader == user.id') a(ng-click='removeMember(group, invite, false)') - i.icon-ban-circle(tooltip=env.t('banTip')) + span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) a span(ng-click='clickMember(invite._id, true)') | {{invite.profile.name}} diff --git a/views/options/social/hall.jade b/views/options/social/hall.jade index cfda892f3e..780c64dd65 100644 --- a/views/options/social/hall.jade +++ b/views/options/social/hall.jade @@ -70,7 +70,7 @@ script(type='text/ng-template', id='partials/options.social.hall.heroes.html') span(ng-if='hero.contributor.admin',popover=env.t('gamemaster'),popover-trigger='mouseenter',popover-placement='right') a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') | {{hero.profile.name}}  - i.icon-star.icon-white + span.glyphicon.glyphicon-star.icon-white span(ng-if='!hero.contributor.admin') a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') {{hero.profile.name}} td(ng-if='user.contributor.admin') {{hero._id}} diff --git a/views/options/social/index.jade b/views/options/social/index.jade index ab38723f3b..4fbb2a03b0 100644 --- a/views/options/social/index.jade +++ b/views/options/social/index.jade @@ -40,10 +40,10 @@ script(type='text/ng-template', id='partials/options.social.guilds.public.html') li // join / leave a.btn.btn-small.btn-danger(ng-show='group._isMember', ng-click='clickLeave(group, $event)') - i.icon-ban-circle + span.glyphicon.glyphicon-ban-circle =env.t('leave') a.btn.btn-small.btn-success(ng-hide='group._isMember', ng-click='join(group)') - i.icon-ok + span.glyphicon.glyphicon-ok =env.t('join') h4 {{group.name}} p {{group.description}} @@ -74,7 +74,7 @@ script(type='text/ng-template', id='partials/options.social.html') ul.nav.nav-tabs li(ng-class="{ active: $state.includes('options.social.tavern') }") a(ui-sref='options.social.tavern') - i.icon-eye-close + span.glyphicon.glyphicon-eye-close =env.t('tavern') li(ng-class="{ active: $state.includes('options.social.party') }") a(ui-sref='options.social.party') @@ -84,11 +84,11 @@ script(type='text/ng-template', id='partials/options.social.html') =env.t('guilds') li(ng-class="{ active: $state.includes('options.social.challenges') }") a(ui-sref='options.social.challenges') - i.icon-bullhorn + span.glyphicon.glyphicon-bullhorn =env.t('challenges') li(ng-class="{ active: $state.includes('options.social.hall') }") a(ui-sref='options.social.hall') - i.icon-flag + span.glyphicon.glyphicon-flag =env.t('hall') .tab-content diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index 5491806c35..6acd65c1a8 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -44,7 +44,7 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( // FIXME handle @minimal, this might have to be a directive span.current-pet(class='Pet-{{profile.items.currentPet}}', ng-show='profile.items.currentPet && !minimal') .avatar-level(ng-class='userLevelStyle(profile,"label")') - i.icon-circle-arrow-up.icon-white(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') + span.glyphicon.glyphicon-circle-arrow-up.icon-white(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') =env.t('lvl') | {{profile.stats.lvl}} - i.icon-plus-sign.icon-white(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn') + '{{profile.achievements.rebirthLevel}}', style='margin-left:5px') + span.glyphicon.glyphicon-plus-sign.icon-white(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn') + '{{profile.achievements.rebirthLevel}}', style='margin-left:5px') diff --git a/views/shared/header/header.jade b/views/shared/header/header.jade index 63ea79962a..a43113558f 100644 --- a/views/shared/header/header.jade +++ b/views/shared/header/header.jade @@ -13,21 +13,21 @@ .meter.health(title=env.t('health')) .bar(style='width: {{Shared.percent(user.stats.hp, 50)}}%;') span.meter-text - i.icon-heart + span.glyphicon.glyphicon-heart | {{Math.ceil(user.stats.hp)}} / 50 .meter.experience(title=env.t('experience')) .bar(style='width: {{Shared.percent(user.stats.exp,Shared.tnl(user.stats.lvl))}}%;') span.meter-text - i.icon-star + span.glyphicon.glyphicon-star | {{Math.floor(user.stats.exp)}} / {{Shared.tnl(user.stats.lvl) | number:0}} // FIXME doesn't look great here, but the "Experience" CSS title rollover covers it where it was before span(ng-show='user.history.exp') a(ng-click='toggleChart("exp")', tooltip=env.t('progress')) - i.icon-signal + span.glyphicon.glyphicon-signal .meter.mana(title='Mana', ng-if='user.flags.classSelected && !user.preferences.disableClasses') .bar(style='width: {{user.stats.mp / user._statsComputed.maxMP * 100}}%;') span.meter-text - i.icon-fire + span.glyphicon.glyphicon-fire | {{Math.floor(user.stats.mp)}} / {{user._statsComputed.maxMP}} // party diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index 6933ffbe98..4810f0c69b 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -7,30 +7,30 @@ li a.task-action-btn.tile.solid span(ng-show='$state.includes("options")', ui-sref='tasks') - i.icon-ok + span.glyphicon.glyphicon-ok =env.t('tasks') span(ng-show='$state.includes("tasks")', ui-sref='options') - i.icon.icon-wrench + span.glyphicon.glyphicon.icon-wrench =env.t('options') li a.task-action-btn.tile.solid(href="http://habitrpg.wikia.com/wiki/FAQ", target='_blank') - i.icon.icon-book + span.glyphicon.glyphicon.icon-book =env.t('FAQ') li a.task-action-btn.tile.solid(href="https://vimeo.com/57654086", target='_blank') - i.icon.icon-film + span.glyphicon.glyphicon.icon-film =env.t('tutorials') li a.task-action-btn.tile.solid(ng-click='User.sync()') - i.icon.icon-refresh + span.glyphicon.glyphicon.icon-refresh =env.t('sync') li a.task-action-btn.tile.solid(ng-click='logout()') - i.icon-share-alt + span.glyphicon.glyphicon-share-alt =env.t('logout') // party invitation notification a(ng-show='user.party.invitation', style='cursor: pointer;', x-bind='click:gotoPartyChat') - i.icon-user + span.glyphicon.glyphicon-user // party chat notification a(ng-show='newChatMessages(_party.chat,user.party.lastMessageSeen)', style='cursor: pointer;', x-bind='click:gotoPartyChat') - i.icon-comment(tooltip=env.t('partyNotification')) + span.glyphicon.glyphicon-comment(tooltip=env.t('partyNotification')) diff --git a/views/shared/profiles/stats.jade b/views/shared/profiles/stats.jade index ea9a921c01..30b092e03d 100644 --- a/views/shared/profiles/stats.jade +++ b/views/shared/profiles/stats.jade @@ -29,35 +29,35 @@ h4=env.t('attributes') table.table.table-striped tr(ng-repeat='(k,v) in {str:"Strength (STR)",int:"Intelligence (INT)",con:"Constitution (CON)",per:"Perception (PER)"}') td - i.icon-question-sign(ng-show='k=="str"', popover-title=env.t('strength'), popover-placement='right', popover=env.t('strengthText'), popover-trigger='mouseenter', style='margin-right:3px') - i.icon-question-sign(ng-show='k=="con"', popover-title=env.t('constitution'), popover-placement='right', popover=env.t('conText') popover-trigger='mouseenter', style='margin-right:3px') - i.icon-question-sign(ng-show='k=="per"', popover-title=env.t('perception'), popover-placement='right', popover=env.t('perText'), popover-trigger='mouseenter', style='margin-right:3px') - i.icon-question-sign(ng-show='k=="int"', popover-title=env.t('intelligence'), popover-placement='right', popover=env.t('intText'), popover-trigger='mouseenter', style='margin-right:3px') + span.glyphicon.glyphicon-question-sign(ng-show='k=="str"', popover-title=env.t('strength'), popover-placement='right', popover=env.t('strengthText'), popover-trigger='mouseenter', style='margin-right:3px') + span.glyphicon.glyphicon-question-sign(ng-show='k=="con"', popover-title=env.t('constitution'), popover-placement='right', popover=env.t('conText') popover-trigger='mouseenter', style='margin-right:3px') + span.glyphicon.glyphicon-question-sign(ng-show='k=="per"', popover-title=env.t('perception'), popover-placement='right', popover=env.t('perText'), popover-trigger='mouseenter', style='margin-right:3px') + span.glyphicon.glyphicon-question-sign(ng-show='k=="int"', popover-title=env.t('intelligence'), popover-placement='right', popover=env.t('intText'), popover-trigger='mouseenter', style='margin-right:3px') strong {{v}}: {{profile._statsComputed[k]}} td ul(style='list-style-type:none') li(ng-show='profile.stats.lvl > 1') - i.icon-question-sign(popover-title=env.t('levelBonus'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('levelBonusText')) + span.glyphicon.glyphicon-question-sign(popover-title=env.t('levelBonus'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('levelBonusText')) | =env.t('level') |: {{(profile.stats.lvl - 1) / 2}}  li(ng-show='Content.gear.flat[profile.items.gear.equipped.weapon][k] + Content.gear.flat[profile.items.gear.equipped.armor][k] + Content.gear.flat[profile.items.gear.equipped.head][k] + Content.gear.flat[profile.items.gear.equipped.shield][k] > 0') - i.icon-question-sign(popover-title=env.t('equipment'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('equipmentBonusText')) + span.glyphicon.glyphicon-question-sign(popover-title=env.t('equipment'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('equipmentBonusText')) | =env.t('equipment') |: {{Content.gear.flat[profile.items.gear.equipped.weapon][k] + Content.gear.flat[profile.items.gear.equipped.armor][k] + Content.gear.flat[profile.items.gear.equipped.head][k] + Content.gear.flat[profile.items.gear.equipped.shield][k] || 0}}  li(ng-show='profile._statsComputed[k] - profile.stats.buffs[k] - ((profile.stats.lvl - 1) / 2) - Content.gear.flat[profile.items.gear.equipped.weapon][k] - Content.gear.flat[profile.items.gear.equipped.armor][k] - Content.gear.flat[profile.items.gear.equipped.head][k] - Content.gear.flat[profile.items.gear.equipped.shield][k] - profile.stats[k] > 0') - i.icon-question-sign(popover-title=env.t('classBonus'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('classBonusText')) + span.glyphicon.glyphicon-question-sign(popover-title=env.t('classBonus'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('classBonusText')) | =env.t('classEquipBonus') |: {{profile._statsComputed[k] - profile.stats.buffs[k] - ((profile.stats.lvl - 1) / 2) - Content.gear.flat[profile.items.gear.equipped.weapon][k] - Content.gear.flat[profile.items.gear.equipped.armor][k] - Content.gear.flat[profile.items.gear.equipped.head][k] - Content.gear.flat[profile.items.gear.equipped.shield][k] - profile.stats[k]}}  li(ng-show='profile.stats[k] > 0') - i.icon-question-sign(popover-title=env.t('allocatedPoints'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('allocatedPointsText')) + span.glyphicon.glyphicon-question-sign(popover-title=env.t('allocatedPoints'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('allocatedPointsText')) | =env.t('allocated') |: {{profile.stats[k] || 0}}  li(ng-show='profile.stats.buffs[k] > 0') - i.icon-question-sign(popover-title=env.t('buffs'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('buffsText')) + span.glyphicon.glyphicon-question-sign(popover-title=env.t('buffs'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('buffsText')) | =env.t('buffs') |: {{profile.stats.buffs[k] || 0}}  @@ -65,13 +65,13 @@ table.table.table-striped td strong=env.t('stealth') |: {{profile.stats.buffs.stealth}}  - i.icon-question-sign(popover-title=env.t('stealth'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('stealthNewDay')) + span.glyphicon.glyphicon-question-sign(popover-title=env.t('stealth'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('stealthNewDay')) td tr(ng-if='profile.stats.buffs.streaks') td strong=env.t('streaksFrozen') | - i.icon-question-sign(popover-title=env.t('streaksFrozen'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('streaksFrozenText')) + span.glyphicon.glyphicon-question-sign(popover-title=env.t('streaksFrozen'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('streaksFrozenText')) td h4(ng-show='user.flags.dropsEnabled')=env.t('pets') diff --git a/views/shared/tasks/lists.jade b/views/shared/tasks/lists.jade index bd50b3042a..752cb4b9cf 100644 --- a/views/shared/tasks/lists.jade +++ b/views/shared/tasks/lists.jade @@ -9,10 +9,10 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") // Todos export/graph options span.option-box.pull-right(bo-if='main && list.type=="todo"') a.option-action(ng-show='obj.history.todos', ng-click='toggleChart("todos")', tooltip=env.t('progress')) - i.icon-signal + span.glyphicon.glyphicon-signal //a.option-action(ng-href='/v1/users/{{user.id}}/calendar.ics?apiToken={{user.apiToken}}', tooltip='iCal') a.option-action(ng-click='notPorted()', tooltip='iCal', ng-show='false') - i.icon-calendar + span.glyphicon.glyphicon-calendar // // Gold & Gems @@ -47,7 +47,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") // right-hand side control buttons .task-meta-controls span.task-notes - i.icon-comment + span.glyphicon.glyphicon-comment //left-hand size commands .task-controls a.money.btn-buy.item-btn(ng-click='buy(item)') @@ -62,7 +62,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") li.task.reward-item(ng-if='user.items.special.snowball>0',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.snowball.notes}}') .task-meta-controls span.task-notes - i.icon-comment + span.glyphicon.glyphicon-comment //left-hand size commands .task-controls a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.snowball)') @@ -73,7 +73,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") li.task.reward-item(ng-if='user.stats.buffs.snowball',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.salt.notes}}') .task-meta-controls span.task-notes - i.icon-comment + span.glyphicon.glyphicon-comment //left-hand size commands .task-controls a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.salt)') @@ -88,7 +88,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") li.task.reward-item(ng-repeat='(k,spell) in Content.spells[user.stats.class]', ng-if='user.stats.lvl >= spell.lvl',popover-trigger='mouseenter', popover-placement='top', popover='{{spell.notes}}') .task-meta-controls span.task-notes - i.icon-comment + span.glyphicon.glyphicon-comment //left-hand size commands .task-controls a.money.btn-buy.item-btn(ng-click='castStart(spell)') @@ -105,7 +105,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") div(bo-if='main && !user.purchased.ads && !user.purchased.plan.customerId && list.type!="reward"') span.pull-right a(ui-sref='options.settings.subscription', popover=env.t('removeAds'), popover-trigger='mouseenter') - i.icon-remove + span.glyphicon.glyphicon-remove // Habit3 ins.adsbygoogle(ng-init='initAds()', style='display: inline-block; width: 234px; height: 60px;', data-ad-client='ca-pub-3242350243827794', data-ad-slot='9529624576') diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 1546e08faa..5ef7d8b3a5 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -8,39 +8,39 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s // Streak span(ng-show='task.streak') {{task.streak}} span(tooltip=env.t('streakCounter')) - i.icon-forward + span.glyphicon.glyphicon-forward // Icons only available if you own the tasks (aka, hidden from challenge stats) span(ng-if='!obj._locked') a.badge(ng-if='task.checklist[0]', ng-class='{"badge-success":checklistCompletion(task.checklist) == task.checklist.length}', ng-click='collapseChecklist(task)', style='margin:1px') {{checklistCompletion(task.checklist)}}/{{task.checklist.length}} - i.icon-tags(tooltip='{{appliedTags(user.tags, task.tags)}}', ng-hide='Shared.noTags(task.tags)') + span.glyphicon.glyphicon-tags(tooltip='{{appliedTags(user.tags, task.tags)}}', ng-hide='Shared.noTags(task.tags)') // edit a(ng-hide='task._editing', ng-click='editTask(task)', tooltip=env.t('edit')) - i.icon-pencil(ng-hide='task._editing') + span.glyphicon.glyphicon-pencil(ng-hide='task._editing') // cancel a(ng-hide='!task._editing', ng-click='editTask(task)', tooltip=env.t('cancel')) - i.icon-remove(ng-hide='!task._editing') + span.glyphicon.glyphicon-remove(ng-hide='!task._editing') // save a(ng-hide='!task._editing', ng-click='editTask(task);saveTask(task)', tooltip=env.t('save')) - i.icon-ok(ng-hide='!task._editing') + span.glyphicon.glyphicon-ok(ng-hide='!task._editing') //challenges span(ng-if='task.challenge.id') span(ng-if='task.challenge.broken') - i.icon-bullhorn(style='background-color:red;', ng-click='task._editing = true', tooltip=env.t('brokenChaLink') tooltip-placement='right') + span.glyphicon.glyphicon-bullhorn(style='background-color:red;', ng-click='task._editing = true', tooltip=env.t('brokenChaLink') tooltip-placement='right') span(ng-if='!task.challenge.broken') - i.icon-bullhorn(tooltip=env.t('challenge')) + span.glyphicon.glyphicon-bullhorn(tooltip=env.t('challenge')) // delete a(ng-if='!task.challenge.id', ng-click='removeTask(obj[list.type+"s"], $index)', tooltip=env.t('delete')) - i.icon-trash + span.glyphicon.glyphicon-trash // chart a(ng-show='task.history', ng-click='toggleChart(obj._id+task.id, task)', tooltip=env.t('progress')) - i.icon-signal + span.glyphicon.glyphicon-signal // notes span.task-notes(ng-show='task.notes && !task._editing') - i.icon-comment + span.glyphicon.glyphicon-comment // left-hand side checkbox .task-controls.task-primary @@ -110,18 +110,18 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s // Checklists div(ng-if='!$state.includes("options.social.challenges")') a.btn.btn-small(ng-if='!task.checklist[0] && (task.type=="daily" || task.type=="todo")',ng-click='addChecklist(task)') - i.icon-tasks + span.glyphicon.glyphicon-tasks =env.t('addChecklist') form.checklist-form(ng-if='task.checklist') fieldset.option-group.task-checklist(ng-if='!$state.includes("options.social.challenges")') legend.option-title =env.t('checklist') |   - i.icon.icon-question-sign(popover=env.t('checklistText'),popover-trigger='mouseenter',popover-placement='bottom') + span.glyphicon.glyphicon.icon-question-sign(popover=env.t('checklistText'),popover-trigger='mouseenter',popover-placement='bottom') ul.unstyled li(ng-repeat='item in task.checklist') a.pull-right.checklist-icons(ng-click='removeChecklistItem(task,$event,$index,true)') - i.icon-trash(tooltip=env.t('delete')) + span.glyphicon.glyphicon-trash(tooltip=env.t('delete')) input(type='checkbox',ng-model='item.completed',ng-change='saveTask(task,true)') input.inline-edit(type='text',ng-model='item.text',ui-keydown="{'8 46':'removeChecklistItem(task,$event,$index)'}",ui-keyup="{'13':'addChecklistItem(task,$event,$index)','38 40':'navigateChecklist(task,$index,$event)'}")//-,ng-blur='saveTask(task,true)') @@ -183,7 +183,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s fieldset.option-group.advanced-option(ng-class="{visuallyhidden: task._advanced}") legend.option-title a.priority-multiplier-help(href='https://trello.com/card/priority-multiplier/50e5d3684fe3a7266b0036d6/17', target='_blank', popover-title=env.t('difficultyHelpTitle'), popover-trigger='mouseenter', popover=env.t('difficultyHelpContent')) - i.icon-question-sign + span.glyphicon.glyphicon-question-sign =env.t('difficulty') .task-controls.tile-group.priority-multiplier button.task-action-btn.tile(type='button', ng-class='{active: task.priority==1 || !task.priority}', ng-click='task.challenge.id || (task.priority=1)')=env.t('easy') @@ -202,7 +202,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s button.task-action-btn.tile(type='button', ng-class='{active: task.attribute=="con"}', ng-click='task.attribute="con"')=env.t('social') button.task-action-btn.tile(type='button', ng-class='{active: task.attribute=="per"}', ng-click='task.attribute="per"', popover=env.t('otherExamples'), popover-trigger='mouseenter', popover-placement='top')=env.t('other') |  - i.icon-question-sign + span.glyphicon.glyphicon-question-sign button.task-action-btn.tile.spacious(type='submit')=env.t('saveAndClose') From f4c30390f577d2afc2e1131810d82df8223c858e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 31 Jan 2014 21:18:44 +0100 Subject: [PATCH 011/159] refactor(bs3): start porting app, general layout and filters --- public/css/filters.styl | 49 +++++++++++++--------------------------- public/css/index.styl | 9 ++++---- views/index.jade | 19 ++++++++-------- views/main/filters.jade | 19 ++++++++-------- views/static/layout.jade | 5 ++++ 5 files changed, 46 insertions(+), 55 deletions(-) diff --git a/public/css/filters.styl b/public/css/filters.styl index 1c68eb6470..b543b80feb 100644 --- a/public/css/filters.styl +++ b/public/css/filters.styl @@ -1,36 +1,19 @@ -/* Filters */ .filters - padding-left: 19px - padding-right: 19px -.filters .nav - margin-bottom: 0 - -.filter-description - margin-top: 7px - margin-right: 7px - -/* Filters applied to tasks */ -.task.filtered-out - display: none - -.tag-label:hover - background-color: #3a87ad - cursor: pointer - - .tag-editing - padding 2px 0 0 2px - - .tag-editing .tag-editing-pill - height:auto + margin-top: 5px + margin-bottom: 5px -.tag-list - overflow-y: auto - white-space: nowrap - - .nav-pills - height: 43px - - li - display: inline-block - float: none \ No newline at end of file + .filter-description + margin-top: 7px + margin-right: 7px + padding-left: 7px + + .input-group + float: left + width: 1px // Trick for proper alignment + margin-left: 3px + margin-right: 3px + margin-top: 5px + + .form-control + width: auto \ No newline at end of file diff --git a/public/css/index.styl b/public/css/index.styl index f777bb5769..37a687c6af 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -40,8 +40,7 @@ html,body,p,h1,ul,li,table,tr,th,td -webkit-box-sizing: border-box -moz-box-sizing: border-box box-sizing: border-box - -* { font-family: "Lato", sans-serif } + font-family: "Lato", sans-serif hr border-top: 0 @@ -79,8 +78,7 @@ div.tooltip-inner { /*html, body {height: 100%;}*/ #wrap z-index:-1 -#main - padding-bottom: 250px; /* don't know why this works, sticky footers are weird */ + padding: 0 15px // Required by Bootstrap 3 when using .container-fluid @media (max-width: 600px) { #wrap { @@ -172,6 +170,9 @@ div.tooltip-inner { a cursor: pointer +a span.glyphicon + color: #333 // Takes base color from bootstrap + #modalMember p word-wrap: break-word diff --git a/views/index.jade b/views/index.jade index 48fcae33aa..8cc51654a7 100644 --- a/views/index.jade +++ b/views/index.jade @@ -3,9 +3,12 @@ doctype 5 html(ng-app="habitrpg", ng-controller="RootCtrl", ng-class='{"applying-action":applyingAction}', ui-keyup="{27:'castCancel()'}") head title=env.t('titleIndex') - // ?v=1 needed to force refresh - link(rel='shortcut icon', href='#{env.getBuildUrl("favicon.ico")}?v=2') + link(rel='shortcut icon', href='#{env.getBuildUrl("favicon.ico")}?v=3') + + meta(charset='utf-8') + meta(name='viewport', content='width=device-width, initial-scale=1.0') + meta(name='apple-mobile-web-app-capable', content='yes') script(type='text/javascript'). window.env = !{JSON.stringify(env)}; @@ -19,8 +22,7 @@ html(ng-app="habitrpg", ng-controller="RootCtrl", ng-class='{"applying-action":a //webfonts link(href='//fonts.googleapis.com/css?family=Lato:300,400,700,400italic,700italic', rel='stylesheet', type='text/css') - meta(name='viewport', content='width=device-width') - meta(name='apple-mobile-web-app-capable', content='yes') + body(ng-cloak) div(ng-controller='GroupsCtrl') @@ -32,14 +34,13 @@ html(ng-app="habitrpg", ng-controller="RootCtrl", ng-class='{"applying-action":a include ./options/index #notification-area(ng-controller='NotificationCtrl') - #wrap - + #wrap.container-fluid //if they hide the header, we still need user-menu visible div(ng-if='user.preferences.hideHeader') include ./shared/header/menu - .exp-chart(ng-show='charts.exp') - - #main(ui-view) + .row + .col-md-12.exp-chart(ng-show='charts.exp') + #main(ui-view) include ./shared/footer \ No newline at end of file diff --git a/views/main/filters.jade b/views/main/filters.jade index c3a11240b1..1d8c262c86 100644 --- a/views/main/filters.jade +++ b/views/main/filters.jade @@ -1,4 +1,4 @@ -.filters.tag-list(ng-controller='FiltersCtrl') +.filters.col-md-12(ng-controller='FiltersCtrl') .pull-left.filter-description =env.t('tags') |: @@ -6,20 +6,21 @@ li a(rel='tooltip', title=env.t('editTags'), ng-click='saveOrEdit()') span.glyphicon(ng-class='{"glyphicon-ok": _editing, "glyphicon-pencil": !_editing}') - li(bindonce='user.tags', ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags', style='position: relative;') - .input-append.option-group.tag-editing(ng-show='_editing') - input.input.input-small.option-content.tag-editing-pill(type='text', ng-model='tag.name') - span.add-on.tag-editing-pill - a.pull-right(ng-click='user.ops.deleteTag({params:{id:tag.id}})') + li(bindonce='user.tags', ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags') + .input-group(ng-show='_editing') + input.form-control.input-sm(type='text', ng-model='tag.name') + span.input-group-addon + a(ng-click='user.ops.deleteTag({params:{id:tag.id}})') span.glyphicon.glyphicon-trash a(ng-hide='_editing', ng-click='toggleFilter(tag)') span.glyphicon.glyphicon-bullhorn(bo-if="tag.challenge") markdown(ng-model='tag.name',style='display: inline-block') li form.form-inline(ng-show='_editing', ng-submit='createTag(_newTag)') - .input-append.tag-editing - input.span2.tag-editing-pill(type='text', ng-model='_newTag', placeholder=env.t('newTag')) - button.add-on.tag-editing-pill(type='submit')=env.t('add') + .input-group + input.form-control.input-sm(type='text', ng-model='_newTag', placeholder=env.t('newTag')) + span.input-group-addon(type='submit') + =env.t('add') //
  • li a(rel='tooltip', title=env.t('clearFilters'), ng-click='user.filters = {}') diff --git a/views/static/layout.jade b/views/static/layout.jade index 5c5e04c2d3..f6b943283b 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -12,6 +12,11 @@ html meta(charset='utf-8') meta(name='viewport', content='width=device-width, initial-scale=1.0') + style. + [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { + display: none; + } + != env.getManifestFiles("static") body From 49e1bf1ba4c18824064c62e7864dc48c83a30899 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 31 Jan 2014 22:05:09 +0100 Subject: [PATCH 012/159] refactor(bs3): fix --- views/shared/modals/settings.jade | 51 +++---------------------------- 1 file changed, 5 insertions(+), 46 deletions(-) diff --git a/views/shared/modals/settings.jade b/views/shared/modals/settings.jade index b2b268ec7b..4aca070e2f 100644 --- a/views/shared/modals/settings.jade +++ b/views/shared/modals/settings.jade @@ -1,4 +1,4 @@ -//div(ng-controller='SettingsCtrl') +//div(ng-controller='SettingsCtrl') Above all div(modal='modals.reset') script(type='text/ng-template', id='modals/reset.html') .modal-header @@ -26,11 +26,11 @@ script(type='text/ng-template', id='modals/restore.html') .option-group.option-medium input.option-content(type='number', step="any", data-for='stats.exp', ng-model='restoreValues.stats.exp') span.input-suffix=env.t('experience') - .option-group.option-medium(ng-if='!user.purchased.plan.customerId') - //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='restoreValues.stats.gp',disabled) + .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='restoreValues.stats.gp',disabled) span.input-suffix=env.t('gold') - p.alert + //-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') @@ -38,33 +38,6 @@ script(type='text/ng-template', id='modals/restore.html') .option-group.option-medium input.option-content(type='number', data-for='stats.lvl', ng-model='restoreValues.stats.lvl') span.input-suffix=env.t('level') - //- - //- Commenting out since it doesn't make sense to restore equipment with Armory anymore. They can just restore GP & buy - h3 Equipment - .option-group.option-medium - input.option-content(type='number', data-for='items.weapon', ng-model='restoreValues.items.weapon') - span.input-suffix Weapon - .option-group.option-medium -<<<<<<< HEAD - input.option-content(type='number', data-for='items.armor', ng-model='restoreValues.items.armor') - span.input-suffix Armor -======= - input.option-content(type='number', step="any", data-for='stats.exp', ng-model='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='restoreValues.stats.gp',disabled) - span.input-suffix=env.t('gold') - //-p.alert - small=env.t('disabledWinterEvent') ->>>>>>> develop - .option-group.option-medium - input.option-content(type='number', data-for='items.head', ng-model='restoreValues.items.head') - span.input-suffix Helm - .option-group.option-medium -<<<<<<< HEAD - input.option-content(type='number', data-for='items.shield', ng-model='restoreValues.items.shield') - span.input-suffix Shield h3=env.t('achievements') .option-group.option-medium input.option-content(type='number', data-for='achievements.streak', ng-model='restoreValues.achievements.streak') @@ -75,20 +48,6 @@ script(type='text/ng-template', id='modals/restore.html') .modal-footer button.btn.btn-default.cancel(ng-click='modals.restore = false')=env.t('discardChanges') button.btn.btn-primary(ng-click='restore()')=env.t('saveAndClose') -======= - input.option-content(type='number', data-for='stats.lvl', ng-model='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') - 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='modals.restore = false')=env.t('discardChanges') - button.btn.btn-primary(ng-click='restore()')=env.t('saveAndClose') ->>>>>>> develop //div(modal='modals.delete') script(type='text/ng-template', id='modals/delete.html') From 2188b5a6c0ded29cf3d0a349bddbc56c5d5ad4c2 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Wed, 15 Jan 2014 23:26:18 -0600 Subject: [PATCH 013/159] chore(logging): add logging via Winston and wrapped it with a custom logging module --- .gitignore | 2 ++ package.json | 3 ++- src/logging.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/logging.js diff --git a/.gitignore b/.gitignore index bb5ec66ebf..4a6eb3925d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ newrelic_agent.log .bower-tmp .bower-registry .bower-cache + +*.log src/*/*.map src/*/*/*.map test/*.js diff --git a/package.json b/package.json index 338485de34..ac9ffa0831 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "passport": "~0.1.18", "passport-facebook": "~1.0.2", "newrelic": "~1.3.0", - "connect-ratelimit": "0.0.6" + "connect-ratelimit": "0.0.6", + "winston": "~0.7.2" }, "private": true, "subdomain": "habitrpg", diff --git a/src/logging.js b/src/logging.js new file mode 100644 index 0000000000..32ff5ef883 --- /dev/null +++ b/src/logging.js @@ -0,0 +1,34 @@ +var nconf = require('nconf'); +var winston = require('winston'); + +var logger; +if (logger == null) { + // We currently don't support logging on Heroku + if (nconf.get('NODE_ENV') != 'production') { + logger = new (winston.Logger)({ + transports: [ + new (winston.transports.Console)({colorize: true}), + new (winston.transports.File)({ filename: 'habitrpg.log' }) + // TODO: Add email, loggly, or mongodb transports + ] + }); + } +} + +// A custom log function that wraps Winston. Makes it easy to instrument code +// and still possible to replace Winston in the future. +module.exports.log = function(/* variable args */) { + logger.log.apply(logger, arguments); +}; + +module.exports.info = function(/* variable args */) { + logger.info.apply(logger, arguments); +}; + +module.exports.warn = function(/* variable args */) { + logger.warn.apply(logger, arguments); +}; + +module.exports.error = function(/* variable args */) { + winston.error(arguments); +}; From 441c3cf1d74ce990322998231acf339385f728b6 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sat, 1 Feb 2014 02:00:49 -0600 Subject: [PATCH 014/159] chore(logging): ignore *.log when running nodemon to avoid loop --- .nodemonignore | 1 + Gruntfile.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.nodemonignore b/.nodemonignore index f4e0b53926..d104457dfc 100644 --- a/.nodemonignore +++ b/.nodemonignore @@ -6,4 +6,5 @@ Gruntfile.js CHANGELOG.md .idea* .git* +*.log newrelic_agent.log diff --git a/Gruntfile.js b/Gruntfile.js index e5fa1ed3ed..0d7247aa83 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -78,7 +78,7 @@ module.exports = function(grunt) { nodemon: { dev: { - ignoredFiles: ['public/*', 'Gruntfile.js', 'CHANGELOG.md', 'views/*', 'build/*', '.idea*', '.git*'] + ignoredFiles: ['public/*', 'Gruntfile.js', 'CHANGELOG.md', 'views/*', 'build/*', '.idea*', '.git*', '*.log'] } }, From 4494600d92875a479426deb87ef40b5d33943271 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sat, 1 Feb 2014 02:01:19 -0600 Subject: [PATCH 015/159] chore(logging): replace console.* with new logging module --- src/controllers/challenges.js | 3 ++- src/controllers/user.js | 5 +++-- src/middleware.js | 21 +++++++++++---------- src/routes/apiv1.js | 5 +++-- src/seed.js | 5 +++-- src/server.js | 9 +++++---- src/utils.js | 11 ++++++----- 7 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/controllers/challenges.js b/src/controllers/challenges.js index bb1eff241d..4dd06e87ac 100644 --- a/src/controllers/challenges.js +++ b/src/controllers/challenges.js @@ -7,6 +7,7 @@ var shared = require('habitrpg-shared'); var User = require('./../models/user').model; var Group = require('./../models/group').model; var Challenge = require('./../models/challenge').model; +var logging = require('./../logging'); var csv = require('express-csv'); var api = module.exports; @@ -213,7 +214,7 @@ api.update = function(req, res){ // Compare whether any changes have been made to tasks. If so, we'll want to sync those changes to subscribers if (before.isOutdated(req.body)) { User.find({_id: {$in: saved.members}}, function(err, users){ - console.log('Challenge updated, sync to subscribers'); + logging.info('Challenge updated, sync to subscribers'); if (err) throw err; _.each(users, function(user){ saved.syncToUser(user); diff --git a/src/controllers/user.js b/src/controllers/user.js index f0f1f72cbe..a44f5937da 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -12,6 +12,7 @@ var sanitize = validator.sanitize; var User = require('./../models/user').model; var Group = require('./../models/group').model; var Challenge = require('./../models/challenge').model; +var logging = require('./../logging'); var acceptablePUTPaths; var api = module.exports; @@ -349,7 +350,7 @@ api.buyGemsPaypalIPN = function(req, res, next) { user.balance += 5; //user.purchased.ads = true; user.save(); - console.log('PayPal transaction completed and user updated'); + logging.info('PayPal transaction completed and user updated'); }); } }); @@ -518,4 +519,4 @@ api.batchUpdate = function(req, res, next) { res.json(200, {_v: response._v}); } }); -}; \ No newline at end of file +}; diff --git a/src/middleware.js b/src/middleware.js index 19ada70aaf..781b6f7202 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -4,6 +4,7 @@ var fs = require('fs'); var path = require('path'); var User = require('./models/user').model var limiter = require('connect-ratelimit'); +var logging = require('./logging'); module.exports.apiThrottle = function(app) { app.use(limiter({ @@ -16,7 +17,7 @@ module.exports.apiThrottle = function(app) { } } })).use(function(req,res,next){ - //console.log(res.ratelimit); + //logging.info(res.ratelimit); if (res.ratelimit.exceeded) return res.json(429,{err:'Rate limit exceeded'}); next(); }); @@ -92,15 +93,15 @@ var getManifestFiles = function(page){ var css = ''; _.each(files.css, function(file){ - css += ''; + css += ''; }); if(nconf.get('NODE_ENV') === 'production'){ - return css + ''; + return css + ''; }else{ var results = css; _.each(files.js, function(file){ - results += ''; + results += ''; }); return results; } @@ -184,16 +185,16 @@ var getUserLanguage = function(req, callback){ } }); }else{ - return callback(null, _.find(avalaibleLanguages, {code: getFromBrowser()})); + return callback(null, _.find(avalaibleLanguages, {code: getFromBrowser()})); } } module.exports.locals = function(req, res, next) { getUserLanguage(req, function(err, language){ - if(err) return res.json(500, {err: err}); + if(err) return res.json(500, {err: err}); language.momentLang = (momentLangs[language.code] || undefined); - + res.locals.habitrpg = { NODE_ENV: nconf.get('NODE_ENV'), BASE_URL: nconf.get('BASE_URL'), @@ -209,11 +210,11 @@ module.exports.locals = function(req, res, next) { var string = translations[language.code][stringName]; if(!string) return _.template(translations[language.code].stringNotFound, {string: stringName}); - return vars === undefined ? string : _.template(string, vars); + return vars === undefined ? string : _.template(string, vars); }, siteVersion: siteVersion } - next(); + next(); }); -} \ No newline at end of file +} diff --git a/src/routes/apiv1.js b/src/routes/apiv1.js index 53207631d2..ce09e8a24a 100644 --- a/src/routes/apiv1.js +++ b/src/routes/apiv1.js @@ -6,6 +6,7 @@ var icalendar = require('icalendar'); var api = require('./../controllers/user'); var auth = require('./../controllers/auth'); var middleware = require('../middleware'); +var logging = require('./../logging'); /* ---------- Deprecated API ------------*/ @@ -78,7 +79,7 @@ var batchUpdate = function(req, res, next) { req.body = action.data; res.send = res.json = function(code, data) { if (_.isNumber(code) && code >= 400) { - console.error({ + logging.error({ code: code, data: data }); @@ -168,4 +169,4 @@ router.get('*', deprecated); router.post('*', deprecated); router.put('*', deprecated); -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/src/seed.js b/src/seed.js index becd3cf94b..111dfee1df 100644 --- a/src/seed.js +++ b/src/seed.js @@ -1,6 +1,7 @@ require('coffee-script') // for habitrpg-shared var nconf = require('nconf'); var utils = require('./utils'); +var logging = require('./logging'); utils.setupConfig(); var async = require('async'); var mongoose = require('mongoose'); @@ -15,7 +16,7 @@ async.waterfall([ Group.findById('habitrpg', cb); }, function(tavern, cb){ - console.log({tavern:tavern,cb:cb}); + logging.info({tavern:tavern,cb:cb}); if (!tavern) { tavern = new Group({ _id: 'habitrpg', @@ -31,6 +32,6 @@ async.waterfall([ } ],function(err){ if (err) throw err; - console.log("Done initializing database"); + logging.info("Done initializing database"); mongoose.disconnect(); }) diff --git a/src/server.js b/src/server.js index 8d95852ad0..d428beae8f 100644 --- a/src/server.js +++ b/src/server.js @@ -3,6 +3,7 @@ var cluster = require("cluster"); var _ = require('lodash'); var nconf = require('nconf'); var utils = require('./utils'); +var logging = require('./logging'); utils.setupConfig(); var isProd = nconf.get('NODE_ENV') === 'production'; @@ -16,7 +17,7 @@ if (cluster.isMaster && (isDev || isProd)) { cluster.on('exit', function(worker, code, signal) { var w = cluster.fork(); // replace the dead worker - console.error('[%s] [master:%s] worker:%s disconnect! new worker:%s fork', new Date(), process.pid, worker.process.pid, w.process.pid); + logging.error('[%s] [master:%s] worker:%s disconnect! new worker:%s fork', new Date(), process.pid, worker.process.pid, w.process.pid); }); } else { @@ -40,7 +41,7 @@ if (cluster.isMaster && (isDev || isProd)) { require('./models/challenge'); mongoose.connect(nconf.get('NODE_DB_URI'), {auto_reconnect:true}, function(err) { if (err) throw err; - console.info('Connected with Mongoose'); + logging.info('Connected with Mongoose'); }); @@ -141,8 +142,8 @@ if (cluster.isMaster && (isDev || isProd)) { server.on('request', app); server.listen(app.get("port"), function() { - return console.log("Express server listening on port " + app.get("port")); + return logging.info("Express server listening on port " + app.get("port")); }); module.exports = server; -} \ No newline at end of file +} diff --git a/src/utils.js b/src/utils.js index eacb9e7c59..f4020694d6 100644 --- a/src/utils.js +++ b/src/utils.js @@ -2,6 +2,7 @@ var nodemailer = require('nodemailer'); var nconf = require('nconf'); var crypto = require('crypto'); var path = require("path"); +var logging = require('./logging'); module.exports.sendEmail = function(mailData) { var smtpTransport = nodemailer.createTransport("SMTP",{ @@ -12,8 +13,8 @@ module.exports.sendEmail = function(mailData) { } }); smtpTransport.sendMail(mailData, function(error, response){ - if(error) console.log(error); - else console.log("Message sent: " + response.message); + if(error) logging.error(error); + else logging.info("Message sent: " + response.message); smtpTransport.close(); // shut down the connection pool, no more messages }); } @@ -48,7 +49,7 @@ module.exports.setupConfig = function(){ // // * https://developers.google.com/chrome-developer-tools/docs/heap-profiling // // * https://developers.google.com/chrome-developer-tools/docs/memory-analysis-101 // agent = require('webkit-devtools-agent'); -// console.log("To debug memory leaks:" + +// logging.info("To debug memory leaks:" + // "\n\t(1) Run `kill -SIGUSR2 " + process.pid + "`" + // "\n\t(2) open http://c4milo.github.com/node-webkit-agent/21.0.1180.57/inspector.html?host=localhost:1337&page=0"); // } @@ -75,9 +76,9 @@ module.exports.errorHandler = function(err, req, res, next) { subject: "HabitRPG Error", text: stack }); - console.error(stack); + logging.error(stack); var message = err.message ? err.message : err; message = (message.length < 200) ? message : message.substring(0,100) + message.substring(message.length-100,message.length); res.json(500,{err:message}); //res.end(err.message); process.exit(0); -} \ No newline at end of file +} From ae847facda284658db0da87536f773d141e41a35 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sat, 1 Feb 2014 02:08:32 -0600 Subject: [PATCH 016/159] chore(logging): fix logging.error and make sure logger exists --- src/logging.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/logging.js b/src/logging.js index 32ff5ef883..9de74ebc72 100644 --- a/src/logging.js +++ b/src/logging.js @@ -18,17 +18,21 @@ if (logger == null) { // A custom log function that wraps Winston. Makes it easy to instrument code // and still possible to replace Winston in the future. module.exports.log = function(/* variable args */) { - logger.log.apply(logger, arguments); + if (logger) + logger.log.apply(logger, arguments); }; module.exports.info = function(/* variable args */) { - logger.info.apply(logger, arguments); + if (logger) + logger.info.apply(logger, arguments); }; module.exports.warn = function(/* variable args */) { - logger.warn.apply(logger, arguments); + if (logger) + logger.warn.apply(logger, arguments); }; module.exports.error = function(/* variable args */) { - winston.error(arguments); + if (logger) + logger.error.apply(logger, arguments); }; From 71f4371d9cf5170c110115f919dc51a7efbc51ac Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sat, 1 Feb 2014 02:46:22 -0600 Subject: [PATCH 017/159] chore(logging): add Newrelic and Email transports for Winston This will send an email on errors logged with winston and thus removes the old error emailing code. --- config.json.example | 3 +++ package.json | 4 +++- src/logging.js | 18 ++++++++++++++++-- src/server.js | 3 +-- src/utils.js | 16 ++++++---------- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/config.json.example b/config.json.example index 634d22c7a7..f63a71703e 100644 --- a/config.json.example +++ b/config.json.example @@ -11,6 +11,9 @@ "SMTP_USER":"user@domain.com", "SMTP_PASS":"password", "SMTP_SERVICE":"Gmail", + "SMTP_HOST":"smtp.gmail.com", + "SMTP_PORT": 587, + "SMTP_TLS": true, "STRIPE_API_KEY":"aaaabbbbccccddddeeeeffff00001111", "STRIPE_PUB_KEY":"22223333444455556666777788889999", "PAYPAL_MERCHANT":"paypal-merchant@gmail.com", diff --git a/package.json b/package.json index ac9ffa0831..172b6e48c9 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,9 @@ "passport-facebook": "~1.0.2", "newrelic": "~1.3.0", "connect-ratelimit": "0.0.6", - "winston": "~0.7.2" + "winston": "~0.7.2", + "winston-mail": "~0.2.7", + "winston-newrelic": "~0.1.4" }, "private": true, "subdomain": "habitrpg", diff --git a/src/logging.js b/src/logging.js index 9de74ebc72..d54bedfa3e 100644 --- a/src/logging.js +++ b/src/logging.js @@ -1,10 +1,11 @@ var nconf = require('nconf'); var winston = require('winston'); +require('winston-mail').Mail; +require('winston-newrelic'); var logger; + if (logger == null) { - // We currently don't support logging on Heroku - if (nconf.get('NODE_ENV') != 'production') { logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({colorize: true}), @@ -12,6 +13,19 @@ if (logger == null) { // TODO: Add email, loggly, or mongodb transports ] }); + if (nconf.get('NODE_ENV') == 'production') { + logger.add(winston.transport.newrelic, {}); + logger.add(winston.transports.Mail, { + to: nconf.get('ADMIN_EMAIL') || nconf.get('SMTP_USER'), + from: "HabitRPG <" + nconf.get('SMTP_USER') + ">", + subject: "HabitRPG Error", + host: nconf.get('SMTP_HOST'), + port: nconf.get('SMTP_PORT'), + tls: nconf.get('SMTP_TLS'), + username: nconf.get('SMTP_USER'), + password: nconf.get('SMTP_PASS'), + level: 'error' + }); } } diff --git a/src/server.js b/src/server.js index d428beae8f..728da524ed 100644 --- a/src/server.js +++ b/src/server.js @@ -3,9 +3,8 @@ var cluster = require("cluster"); var _ = require('lodash'); var nconf = require('nconf'); var utils = require('./utils'); -var logging = require('./logging'); utils.setupConfig(); - +var logging = require('./logging'); var isProd = nconf.get('NODE_ENV') === 'production'; var isDev = nconf.get('NODE_ENV') === 'development'; diff --git a/src/utils.js b/src/utils.js index f4020694d6..0fa0bcc68f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -2,17 +2,17 @@ var nodemailer = require('nodemailer'); var nconf = require('nconf'); var crypto = require('crypto'); var path = require("path"); -var logging = require('./logging'); module.exports.sendEmail = function(mailData) { var smtpTransport = nodemailer.createTransport("SMTP",{ - service: nconf.get('SMTP_SERVICE'), + service: nconf.get('SMTP_SERVICE'), auth: { - user: nconf.get('SMTP_USER'), - pass: nconf.get('SMTP_PASS') + user: nconf.get('SMTP_USER'), + pass: nconf.get('SMTP_PASS') } }); smtpTransport.sendMail(mailData, function(error, response){ + var logging = require('./logging'); if(error) logging.error(error); else logging.info("Message sent: " + response.message); smtpTransport.close(); // shut down the connection pool, no more messages @@ -49,6 +49,7 @@ module.exports.setupConfig = function(){ // // * https://developers.google.com/chrome-developer-tools/docs/heap-profiling // // * https://developers.google.com/chrome-developer-tools/docs/memory-analysis-101 // agent = require('webkit-devtools-agent'); +// var logging = require('./logging'); // logging.info("To debug memory leaks:" + // "\n\t(1) Run `kill -SIGUSR2 " + process.pid + "`" + // "\n\t(2) open http://c4milo.github.com/node-webkit-agent/21.0.1180.57/inspector.html?host=localhost:1337&page=0"); @@ -70,12 +71,7 @@ module.exports.errorHandler = function(err, req, res, next) { "\n\nheaders: " + JSON.stringify(req.headers) + "\n\nbody: " + JSON.stringify(req.body) + (res.locals.ops ? "\n\ncompleted ops: " + JSON.stringify(res.locals.ops) : ""); - module.exports.sendEmail({ - from: "HabitRPG <" + nconf.get('SMTP_USER') + ">", - to: nconf.get('ADMIN_EMAIL') || nconf.get('SMTP_USER'), - subject: "HabitRPG Error", - text: stack - }); + var logging = require('./logging'); logging.error(stack); var message = err.message ? err.message : err; message = (message.length < 200) ? message : message.substring(0,100) + message.substring(message.length-100,message.length); From ff4969563538d5599d98f0f123d34b4eb6842fb5 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 1 Feb 2014 16:46:48 +0100 Subject: [PATCH 018/159] refactor(bs3): misc fixes & port death modal --- bower.json | 4 ---- public/css/index.styl | 6 +++--- public/js/controllers/notificationCtrl.js | 10 +++++++++- views/shared/header/menu.jade | 2 +- views/shared/modals/death.jade | 14 +++++++------- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/bower.json b/bower.json index 1dadcfef82..feef1b4642 100644 --- a/bower.json +++ b/bower.json @@ -44,9 +44,5 @@ }, "devDependencies": { "angular-mocks": "~1.2.1" - }, - "resolutions": { - "jquery": ">=1.6.4", - "bootstrap": "~3.1.0" } } diff --git a/public/css/index.styl b/public/css/index.styl index 37a687c6af..7b6aff8235 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -134,16 +134,16 @@ div.tooltip-inner { .modal whitespace: normal +// notification-character used only by death modal's figure, move .notification-character - float:left + float: left + padding: 15px .notification-message display: inline-block; padding-right: 1em line-height: 3 -.notification-action - vertical-align: baseline #reset-modal z-index:1500 #notification-area diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index a93deb9b1a..ea551f8892 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -1,9 +1,17 @@ 'use strict'; habitrpg.controller('NotificationCtrl', - ['$scope', '$rootScope', 'Shared', 'User', 'Guide', 'Notification', function ($scope, $rootScope, Shared, User, Guide, Notification) { + ['$scope', '$rootScope', 'Shared', 'User', 'Guide', 'Notification', '$modal', + function ($scope, $rootScope, Shared, User, Guide, Notification, $modal) { $rootScope.$watch('user.stats.hp', function(after, before) { + if (after <= 0){ + $modal.open({ + templateUrl: 'modals/death.html', + keyboard: false, + backdrop: 'static' + }); + } if (after == before) return; if (User.user.stats.lvl == 0) return; Notification.hp(after - before, 'hp'); diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index d02a9fa8c2..fa7cf337d8 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -14,7 +14,7 @@ =env.t('options') li a.task-action-btn.tile.solid(href="http://habitrpg.wikia.com/wiki/FAQ", target='_blank') - span.glyphicon.glyphicon.-book + span.glyphicon.glyphicon-book =env.t('FAQ') li a.task-action-btn.tile.solid(href="https://vimeo.com/57654086", target='_blank') diff --git a/views/shared/modals/death.jade b/views/shared/modals/death.jade index c76322e935..ab10651370 100644 --- a/views/shared/modals/death.jade +++ b/views/shared/modals/death.jade @@ -1,15 +1,15 @@ //div(modal='user.stats.hp <= 0', options='{backdrop:true, keyboard:false, backdropClick:false}') script(type='text/ng-template', id='modals/death.html') .modal-body - .row-fluid - .span4 + .row + .col-md-3 figure.notification-character .GrimReaper - .span8 + .col-md-9 h2=env.t('youDied') - .row-fluid - .span4 + .row + .col-md-3 p - a.btn.btn-danger.btn-large.notification-action(ng-click='user.ops.revive({})')=env.t('continue') - .span8 + a.btn.btn-danger.btn-large(ng-click='user.ops.revive({}); $close()')=env.t('continue') + .col-md-9 p=env.t('dieText') From af42ec263e8a6ade741de05dcf9cc6a33df70884 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 1 Feb 2014 17:04:21 +0100 Subject: [PATCH 019/159] refactor(bs3): port several modals & css fixes --- public/css/index.styl | 29 ++++++++--------------- public/js/controllers/notificationCtrl.js | 23 ++++++++++++++---- public/js/controllers/rootCtrl.js | 2 -- views/shared/modals/achievements.jade | 12 +++++----- views/shared/modals/death.jade | 2 +- 5 files changed, 36 insertions(+), 32 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index 7b6aff8235..6dafe909b7 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -131,30 +131,21 @@ div.tooltip-inner { /* Misc -------------------------------------------------- */ -.modal - whitespace: normal - // notification-character used only by death modal's figure, move -.notification-character - float: left - padding: 15px - -.notification-message - display: inline-block; - padding-right: 1em - line-height: 3 +.death-modal // a .modal-body + margin: 10px + figure + float: left + padding: 15px + #reset-modal z-index:1500 #notification-area - position: fixed; - top: 0; - right: 0px; - z-index: 1061; - -.modal-body - margin: 10px - + position: fixed + top: 0 + right: 0px + z-index: 1061 // TODO this is supposed to go in avatar.styl, but stylus is breaking if I even touch that file .profile-modal-header diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index ea551f8892..f6adac2d55 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -69,24 +69,39 @@ habitrpg.controller('NotificationCtrl', $rootScope.$watch('user.achievements.streak', function(after, before){ if(before == undefined || after == before || after < before) return; - $rootScope.modals.achievements.streak = true; + $modal.open({ + templateUrl: 'modals/achievements/streak.html' + }); }); $rootScope.$watch('user.achievements.ultimateGear', function(after, before){ if (after === before || after !== true) return; - $rootScope.modals.achievements.ultimateGear = true; + $modal.open({ + templateUrl: 'modals/achievements/ultimateGear.html' + }); }); $rootScope.$watch('user.items.pets', function(after, before){ if(_.size(after) === _.size(before) || Shared.countPets(null, after) < 90) return; User.user.achievements.beastMaster = true; - $rootScope.modals.achievements.beastMaster = true; + $modal.open({ + templateUrl: 'modals/achievements/beastMaster.html' + }); }, true); $rootScope.$watch('user.achievements.rebirths', function(after, before){ if(after === before) return; - $rootScope.modals.achievements.rebirth = true; + $modal.open({ + templateUrl: 'modals/achievements/rebirth.html' + }); + }); + + $rootScope.$watch('user.flags.contributor', function(after, before){ + if (after === before || after !== true) return; + $modal.open({ + templateUrl: 'modals/achievements/contributor.html' + }); }); /*_.each(['weapon', 'head', 'chest', 'shield'], function(watched){ diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index e37a4a9662..3b119b561a 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -13,8 +13,6 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ }) $rootScope.$on('userUpdated',initSticky); - $rootScope.modals = {}; - $rootScope.modals.achievements = {}; $rootScope.User = User; $rootScope.user = user; $rootScope.moment = window.moment; diff --git a/views/shared/modals/achievements.jade b/views/shared/modals/achievements.jade index 9ea49bd5c9..6d1f1f4855 100644 --- a/views/shared/modals/achievements.jade +++ b/views/shared/modals/achievements.jade @@ -6,7 +6,7 @@ script(id='modals/achievements/streak.html', type='text/ng-template') .achievement.achievement-thermometer =env.t('streakerAchievement') .modal-footer - button.btn.btn-default.cancel(ng-click='modals.achievements.streak = false')=env.t('ok') + button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') // Max Gear script(id='modals/achievements/ultimateGear.html', type='text/ng-template') @@ -16,10 +16,10 @@ script(id='modals/achievements/ultimateGear.html', type='text/ng-template') .achievement.achievement-armor =env.t('gearAchievement') .modal-footer - button.btn.btn-default.cancel(ng-click='modals.achievements.ultimateGear = false')=env.t('ok') + button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') // Beast Master -script(id='modals/achievements/ultimateGear.html', type='text/ng-template') +script(id='modals/achievements/beastMaster.html', type='text/ng-template') .modal-header h3=env.t('modalAchievement') .modal-body @@ -27,7 +27,7 @@ script(id='modals/achievements/ultimateGear.html', type='text/ng-template') .achievement.achievement-rat =env.t('beastAchievement') .modal-footer - button.btn.btn-default.cancel(ng-click='modals.achievements.beastMaster = false')=env.t('ok') + button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') // Contributor // activated by user.flags.contributor @@ -40,7 +40,7 @@ script(id='modals/achievements/contributor.html', type='text/ng-template') !=env.t('contribModal', {name: "{{user.profile.name}}", level: "{{user.contributor.level}}"}) a(href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank')=env.t('contribLink') .modal-footer - button.btn.btn-default.cancel(ng-click='set({"flags.contributor":false})')=env.t('ok') + button.btn.btn-default.cancel(ng-click='set({"flags.contributor":false}); $close()')=env.t('ok') //Rebirth script(id='modals/achievements/rebirth.html', type='text/ng-template') @@ -50,4 +50,4 @@ script(id='modals/achievements/rebirth.html', type='text/ng-template') .achievement.achievement-sun =env.t('rebirthAchievement', {number: "{{user.achievements.rebirths}}", level: "{{user.achievements.rebirthLevel}}"}) .modal-footer - button.btn.btn-default.cancel(ng-click='modals.achievements.rebirth = false')=env.t('ok') + button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') diff --git a/views/shared/modals/death.jade b/views/shared/modals/death.jade index ab10651370..34f58cd776 100644 --- a/views/shared/modals/death.jade +++ b/views/shared/modals/death.jade @@ -1,6 +1,6 @@ //div(modal='user.stats.hp <= 0', options='{backdrop:true, keyboard:false, backdropClick:false}') script(type='text/ng-template', id='modals/death.html') - .modal-body + .modal-body.death-modal .row .col-md-3 figure.notification-character From 4dcf74a38af779aa3cbc2369cb908169c87302e7 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 1 Feb 2014 17:18:37 +0100 Subject: [PATCH 020/159] refactor(bs3): port avatar level label --- public/css/avatar.styl | 15 ++++++++++++++- public/css/index.styl | 13 +------------ views/shared/header/avatar.jade | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/public/css/avatar.styl b/public/css/avatar.styl index 3a774d4f65..e0cb66bc2a 100644 --- a/public/css/avatar.styl +++ b/public/css/avatar.styl @@ -9,6 +9,19 @@ Seeing as the sprites might change drastically in the future re: pets and whatnot, this is just temporary. ---------------------------------------------------- */ +.profile-modal-header + width:560px + margin: 0px auto + +.avatar-level + position absolute + bottom 0px + right 0px + padding 2px 3px 2px 3px + border-top-right-radius: 0px + border-bottom-right-radius: 0px + border-bottom-left-radius: 0px + // basic herobox styles .herobox height: 10.5em // higher to acct for the name area @@ -93,4 +106,4 @@ future re: pets and whatnot, this is just temporary. position: absolute .herobox.isLeader - background: $better + background: $better \ No newline at end of file diff --git a/public/css/index.styl b/public/css/index.styl index 6dafe909b7..62a14fd6ac 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -134,7 +134,7 @@ div.tooltip-inner { // notification-character used only by death modal's figure, move .death-modal // a .modal-body margin: 10px - + figure float: left padding: 15px @@ -147,17 +147,6 @@ div.tooltip-inner { right: 0px z-index: 1061 -// TODO this is supposed to go in avatar.styl, but stylus is breaking if I even touch that file -.profile-modal-header - width:560px - margin: 0px auto - -.avatar-level - position absolute - bottom 0px - right 0px - padding 1px 3px 1px 3px - a cursor: pointer diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index fa54dcc12a..9b368cfe09 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -43,7 +43,7 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( span(ng-class='{zzz:profile.preferences.sleep}') // FIXME handle @minimal, this might have to be a directive span.current-pet(class='Pet-{{profile.items.currentPet}}', ng-show='profile.items.currentPet && !minimal') - .avatar-level(ng-class='userLevelStyle(profile,"label")') + .avatar-level(ng-class='userLevelStyle(profile,"label label-default")') span.glyphicon.glyphicon-circle-arrow-up(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') =env.t('lvl') | {{profile.stats.lvl}} From 875698c111f6138e01c2e12a88a0be3f0187b547 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Larivi=C3=A8re?= Date: Sat, 1 Feb 2014 12:52:38 -0500 Subject: [PATCH 021/159] Created new CSS entry for equipment-title and modified inventory.jade accordingly --- public/css/inventory.styl | 4 ++++ views/options/inventory/inventory.jade | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/public/css/inventory.styl b/public/css/inventory.styl index 0dbf947dec..b18a3b2ed8 100644 --- a/public/css/inventory.styl +++ b/public/css/inventory.styl @@ -15,6 +15,10 @@ .modal-header .gem-wallet padding-top: 0px +.equipment-title + display: inline-block + vertical-align: middle + // pets (this will all change when pet system is overhauled) .pet-grid diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 706f2ce5e4..ea69911932 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -1,7 +1,7 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') .row-fluid .span6.border-right - h3=env.t('battleGear') + h3.equipment-title=env.t('battleGear')   i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText'), style="display: inline-block;") li.customize-menu.inventory-gear @@ -9,7 +9,7 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') div(ng-repeat='item in gear[klass]') button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}') .span6 - h3(style="display: inline-block; vertical-align: middle;")=env.t('costume') + h3.equipment-title=env.t('costume')   i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('costumeText')) label.checkbox.inline(style="margin-left: 20px;") From 0afaa69d7dd48d9d47261fa8eadb0e1ccd1727ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Larivi=C3=A8re?= Date: Sat, 1 Feb 2014 13:17:21 -0500 Subject: [PATCH 022/159] Created new CSS entry for equipment title and modified inventory.jade accordingly --- views/options/inventory/inventory.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index ea69911932..fccf266dff 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -3,7 +3,7 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') .span6.border-right h3.equipment-title=env.t('battleGear')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText'), style="display: inline-block;") + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText')) li.customize-menu.inventory-gear menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Wizard", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') div(ng-repeat='item in gear[klass]') From f6a8b9e4cb03d234eeb7119ed053888b03063a6c Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 1 Feb 2014 19:19:48 +0100 Subject: [PATCH 023/159] refactor(bs3): port some modals & css fixes --- public/css/tasks.styl | 12 ++++++++---- public/js/controllers/notificationCtrl.js | 9 +++++++++ public/js/controllers/rootCtrl.js | 12 ++++++++++-- views/shared/footer.jade | 2 +- views/shared/gems.jade | 2 +- views/shared/modals/buy-gems.jade | 2 +- views/shared/modals/classes.jade | 6 ++---- views/shared/modals/rebirth.jade | 2 +- views/shared/modals/reroll.jade | 2 +- views/shared/tasks/task.jade | 23 ++++++++++++++++++----- 10 files changed, 52 insertions(+), 20 deletions(-) diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 3e59280ac9..22a460525d 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -23,6 +23,8 @@ for $stage in $stages .completed background-color: $completed color: #999 + .glyphicon + color: #333 .task-checker label background-color: darken($completed, 30%) .task-action-btn @@ -112,6 +114,9 @@ for $stage in $stages &:last-child margin-bottom: 0 + label + font-weight: 400 + // task content .task-text display: block @@ -273,10 +278,9 @@ for $stage in $stages margin: 0.75em 0.5em 0 0.25em height: 1em opacity: 0.25 - a > i - margin-left: 0.125em - .task-notes - margin-left: 0.125em + + a + text-decoration: none .task:hover .task-meta-controls opacity: 1 diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index f6adac2d55..6089fcabe9 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -116,6 +116,15 @@ habitrpg.controller('NotificationCtrl', }) });*/ + $rootScope.$watch('!user.flags.classSelected && user.stats.lvl >= 10', function(after, before){ + if(after){ + $modal.open({ + templateUrl: 'modals/chooseClass.html', + controller: 'UserCtrl' + }); + } + }); + $rootScope.$watch('user.stats.lvl', function(after, before) { if (after == before) return; if (after > before) { diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index 3b119b561a..708a4b87c5 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -3,8 +3,8 @@ /* Make user and settings available for everyone through root scope. */ -habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', 'Groups', 'Shared', 'Content', - function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification, Groups, Shared, Content) { +habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', 'Groups', 'Shared', 'Content', '$modal', + function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification, Groups, Shared, Content, $modal) { var user = User.user; var initSticky = _.once(function(){ @@ -64,6 +64,14 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ $rootScope.set = User.set; $rootScope.authenticated = User.authenticated; + // Open a modal from a template expression (like ng-click,...) + // Otherwise use the proper $modal.open + $rootScope.openModal = function(modal){ + $modal.open({ + templateUrl: 'modals/' + modal + '.html' + }); + } + $rootScope.dismissAlert = function() { $rootScope.modals.newStuff = false; $rootScope.set({'flags.newStuff':false}); diff --git a/views/shared/footer.jade b/views/shared/footer.jade index 57c1d37f96..f5a1df5666 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -13,7 +13,7 @@ footer.footer(ng-controller='FooterCtrl') ul.list-unstyled.list-unstyled if (!env.isFrontPage) li - .btn.btn-small.btn-success(ng-click='modals.buyGems = true') + .btn.btn-small.btn-success(ng-click='openModal("buyGems")') span.glyphicon.glyphicon-heart =env.t('companyDonate') li diff --git a/views/shared/gems.jade b/views/shared/gems.jade index 71c3c8e411..ef3738ef91 100644 --- a/views/shared/gems.jade +++ b/views/shared/gems.jade @@ -1,4 +1,4 @@ -a.pull-right.gem-wallet(ng-click='modals.buyGems = true', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom') +a.pull-right.gem-wallet(ng-click='openModal("buyGems")', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom') span.task-action-btn.tile.flush.bright.add-gems-btn + span.task-action-btn.tile.flush.neutral .Pet_Currency_Gem2x.Gems diff --git a/views/shared/modals/buy-gems.jade b/views/shared/modals/buy-gems.jade index b43b1dc6ea..03a610de65 100644 --- a/views/shared/modals/buy-gems.jade +++ b/views/shared/modals/buy-gems.jade @@ -29,4 +29,4 @@ script(id='modals/buyGems.html', type='text/ng-template') div(ng-include="'partials/options.settings.subscription.html'") .modal-footer - button.btn.btn-default.cancel(ng-click='modals.buyGems = false')=env.t('cancel') + button.btn.btn-default.cancel(ng-click='$close()')=env.t('cancel') diff --git a/views/shared/modals/classes.jade b/views/shared/modals/classes.jade index 4a96a558c3..7fdad4bcd5 100644 --- a/views/shared/modals/classes.jade +++ b/views/shared/modals/classes.jade @@ -1,5 +1,3 @@ -//activated by -// ng-if='!user.flags.classSelected && user.stats.lvl >= 10', data-backdrop=true, ng-controller='UserCtrl') script(type='text/ng-template', id='modals/chooseClass.html') .modal-header h3=env.t('chooseClass1') @@ -73,5 +71,5 @@ script(type='text/ng-template', id='modals/chooseClass.html') .well(ng-show='selectedClass=="healer"')=env.t('healerText') .modal-footer - button.btn.btn-small.btn-danger.cancel(ng-click='user.ops.disableClasses({})', popover-placement='top', popover-trigger='mouseenter', popover=env.t('optOutText'))=env.t('optOut') - button.btn.btn-primary.cancel(ng-click='selectedClass && changeClass(selectedClass)')=env.t('select') \ No newline at end of file + button.btn.btn-small.btn-danger.cancel(ng-click='user.ops.disableClasses({}); $close()', popover-placement='top', popover-trigger='mouseenter', popover=env.t('optOutText'))=env.t('optOut') + button.btn.btn-primary.cancel(ng-click='selectedClass && changeClass(selectedClass); $close()')=env.t('select') \ No newline at end of file diff --git a/views/shared/modals/rebirth.jade b/views/shared/modals/rebirth.jade index 9e7dc610d2..9853aead02 100644 --- a/views/shared/modals/rebirth.jade +++ b/views/shared/modals/rebirth.jade @@ -39,7 +39,7 @@ script(type='text/ng-template', id='modals/rebirth.html') .modal-footer button.btn.btn-large.cancel(ng-click='modals.rebirth = false')=env.t('neverMind') span(ng-if='user.balance < 2') - a.btn.btn-success.btn-large(ng-click="modals.buyGems = true")=env.t('buyMoreGems') + a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 2', ng-controller='SettingsCtrl') a.btn.btn-danger.btn-large(ng-click='rebirth()')=env.t('beReborn') diff --git a/views/shared/modals/reroll.jade b/views/shared/modals/reroll.jade index 09bbcc5bee..8bc484eb62 100644 --- a/views/shared/modals/reroll.jade +++ b/views/shared/modals/reroll.jade @@ -10,7 +10,7 @@ script(type='text/ng-template', id='modals/reroll.html') .modal-footer button.btn.btn-large.cancel(ng-click='modals.reroll = false')=env.t('neverMind') span(ng-if='user.balance < 1') - a.btn.btn-success.btn-large(ng-click="modals.buyGems = true")=env.t('buyMoreGems') + a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 1', ng-controller='SettingsCtrl') a.btn.btn-danger.btn-large(ng-click='reroll()')=env.t('fortify') diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 16911930e7..e1fddad6d3 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -4,43 +4,54 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s // Due Date span.task-date(ng-if='task.type=="todo" && task.date', style='margin:1px') - span(ng-class='{"label label-important":moment(task.date).isBefore(_today, "days")}') {{moment(task.date).format('MM/DD')}} + span(ng-class='{"label label-danger":moment(task.date).isBefore(_today, "days")}') {{moment(task.date).format('MM/DD')}} // Streak span(ng-show='task.streak') {{task.streak}} span(tooltip=env.t('streakCounter')) + |   span.glyphicon.glyphicon-forward + |   // Icons only available if you own the tasks (aka, hidden from challenge stats) span(ng-if='!obj._locked') a.badge(ng-if='task.checklist[0]', ng-class='{"badge-success":checklistCompletion(task.checklist) == task.checklist.length}', ng-click='collapseChecklist(task)', style='margin:1px') {{checklistCompletion(task.checklist)}}/{{task.checklist.length}} - + |   span.glyphicon.glyphicon-tags(tooltip='{{appliedTags(user.tags, task.tags)}}', ng-hide='Shared.noTags(task.tags)') // edit a(ng-hide='task._editing', ng-click='editTask(task)', tooltip=env.t('edit')) + |   span.glyphicon.glyphicon-pencil(ng-hide='task._editing') + |   // cancel a(ng-hide='!task._editing', ng-click='editTask(task)', tooltip=env.t('cancel')) span.glyphicon.glyphicon-remove(ng-hide='!task._editing') + |   // save a(ng-hide='!task._editing', ng-click='editTask(task);saveTask(task)', tooltip=env.t('save')) span.glyphicon.glyphicon-ok(ng-hide='!task._editing') + |   //challenges span(ng-if='task.challenge.id') span(ng-if='task.challenge.broken') span.glyphicon.glyphicon-bullhorn(style='background-color:red;', ng-click='task._editing = true', tooltip=env.t('brokenChaLink') tooltip-placement='right') + |   span(ng-if='!task.challenge.broken') span.glyphicon.glyphicon-bullhorn(tooltip=env.t('challenge')) + |   // delete a(ng-if='!task.challenge.id', ng-click='removeTask(obj[list.type+"s"], $index)', tooltip=env.t('delete')) span.glyphicon.glyphicon-trash + |   // chart a(ng-show='task.history', ng-click='toggleChart(obj._id+task.id, task)', tooltip=env.t('progress')) span.glyphicon.glyphicon-signal + |   // notes span.task-notes(ng-show='task.notes && !task._editing') span.glyphicon.glyphicon-comment + |   // left-hand side checkbox .task-controls.task-primary @@ -107,16 +118,17 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s // Checklists div(ng-if='!$state.includes("options.social.challenges")') - a.btn.btn-small(ng-if='!task.checklist[0] && (task.type=="daily" || task.type=="todo")',ng-click='addChecklist(task)') + button.btn.btn-deafult.btn-small(ng-if='!task.checklist[0] && (task.type=="daily" || task.type=="todo")',ng-click='addChecklist(task)') span.glyphicon.glyphicon-tasks + |     =env.t('addChecklist') form.checklist-form(ng-if='task.checklist') fieldset.option-group.task-checklist(ng-if='!$state.includes("options.social.challenges")') legend.option-title =env.t('checklist') - |   + |     span.glyphicon.glyphicon-question-sign(popover=env.t('checklistText'),popover-trigger='mouseenter',popover-placement='bottom') - ul.unstyled + ul.list-unstyled li(ng-repeat='item in task.checklist') a.pull-right.checklist-icons(ng-click='removeChecklistItem(task,$event,$index,true)') span.glyphicon.glyphicon-trash(tooltip=env.t('delete')) @@ -182,6 +194,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s legend.option-title a.priority-multiplier-help(href='https://trello.com/card/priority-multiplier/50e5d3684fe3a7266b0036d6/17', target='_blank', popover-title=env.t('difficultyHelpTitle'), popover-trigger='mouseenter', popover=env.t('difficultyHelpContent')) span.glyphicon.glyphicon-question-sign + |   =env.t('difficulty') .task-controls.tile-group.priority-multiplier button.task-action-btn.tile(type='button', ng-class='{active: task.priority==1 || !task.priority}', ng-click='task.challenge.id || (task.priority=1)')=env.t('easy') From 8b29eb530aa0b7e99fd9161e2c9cf1c0d2bdd4c7 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 1 Feb 2014 19:39:05 +0100 Subject: [PATCH 024/159] refactor(bs3): port drops modals --- public/js/services/guideServices.js | 6 ++++-- views/shared/modals/drops.jade | 14 +------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/public/js/services/guideServices.js b/public/js/services/guideServices.js index 32df74a401..7c858b8d28 100644 --- a/public/js/services/guideServices.js +++ b/public/js/services/guideServices.js @@ -5,7 +5,7 @@ */ angular.module('guideServices', []). - factory('Guide', ['$rootScope', 'User', '$timeout', function($rootScope, User, $timeout) { + factory('Guide', ['$rootScope', 'User', '$timeout', '$modal', function($rootScope, User, $timeout, $modal) { /** * Init and show the welcome tour. Note we do it listening to a $rootScope broadcasted 'userLoaded' message, @@ -130,7 +130,9 @@ angular.module('guideServices', []). if (!eggs) { eggs['Wolf'] = 1; // This is also set on the server } - $rootScope.modals.dropsEnabled = true; + $modal.open({ + templateUrl: 'modals/dropsEnabled.html' + }); }); $rootScope.$watch('user.items.pets', function(after, before) { diff --git a/views/shared/modals/drops.jade b/views/shared/modals/drops.jade index de42dd85ac..9850d51252 100644 --- a/views/shared/modals/drops.jade +++ b/views/shared/modals/drops.jade @@ -1,4 +1,3 @@ -//div(modal='modals.dropsEnabled') script(type='text/ng-template', id='modals/dropsEnabled.html') .modal-header h3=env.t('dropsEnabled') @@ -11,15 +10,4 @@ script(type='text/ng-template', id='modals/dropsEnabled.html') span.item-drop-icon(class='Pet_Currency_Gem') span!=env.t('useGems') .modal-footer - button.btn.btn-default.cancel(ng-click='modals.dropsEnabled = false')=env.t('close') - -//div(modal='modals.drop') -script(type='text/ng-template', id='modals/drop.html') - .modal-header - h3=env.t('itemDrop') - .modal-body - p - span.item-drop-icon(class='Pet_{{user._tmp.drop.type}}_{{user._tmp.drop.key}}') - | {{user._tmp.drop.dialog}} - .modal-footer - button.btn.btn-default.cancel(ng-click='modals.drop = false')=env.t('close') \ No newline at end of file + button.btn.btn-default.cancel(ng-click='$close()')=env.t('close') \ No newline at end of file From d581986dd9fc041951c1f390f846eba278c8641c Mon Sep 17 00:00:00 2001 From: deilann Date: Sat, 1 Feb 2014 13:14:51 -0800 Subject: [PATCH 025/159] changing order of stats in character build --- views/options/profile.jade | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/views/options/profile.jade b/views/options/profile.jade index fb0ae74794..15986489a1 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -160,22 +160,23 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') i.icon-download.icon-white   =env.t('distributePoints') - tr - td= env.t('allocateStr') + ' {{user.stats.str}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateStrPop')) + tr td= env.t('allocateCon') + ' {{user.stats.con}}' td a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("con")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateConPop')) + + tr + td= env.t('allocateInt') + ' {{user.stats.int}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateIntPop')) + tr td= env.t('allocatePer') + ' {{user.stats.per}}' td a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("per")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocatePerPop')) + tr - td= env.t('allocateInt') + ' {{user.stats.int}}' + td= env.t('allocateStr') + ' {{user.stats.str}}' td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateIntPop')) + + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateStrPop')) + + div(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "span4" : "span6"') include ../shared/profiles/achievements From dc7a6175e35a479ea95c3de45973d4ebb207455c Mon Sep 17 00:00:00 2001 From: deilann Date: Sat, 1 Feb 2014 19:05:25 -0800 Subject: [PATCH 026/159] correcting quest abort message --- public/js/controllers/groupsCtrl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index ddb36c824f..6488ef6e90 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -383,7 +383,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' } $scope.questAbort = function(){ - if (!confirm("Are you sure you want to abort this mission? It will abort it for everyone in your party, and you'll lose your quest scroll.")) return; + if (!confirm("Are you sure you want to abort this mission? It will abort it for everyone in your party, all progress will be lost.")) return; if (!confirm("Are you double sure? Make sure they won't hate you forever!")) return; $rootScope.party.$questAbort(); } From dab9ddbda27f5e10e4545fea703deebfe2dd9975 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sun, 2 Feb 2014 01:51:51 -0600 Subject: [PATCH 027/159] fix(quests): quests with a level cap cannot be bought before that level. Users were buying the vice quest hoping to play it, not realizing it would drop at that level. Let's restrict buying the quest (at least in the short term) until you reach that level. Fixes #2707. --- public/js/controllers/inventoryCtrl.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 6d769ca47f..122295ddb9 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -142,6 +142,8 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', } $scope.buyQuest = function(quest) { var item = Content.quests[quest]; + if (item.lvl && item.lvl > user.stats.lvl) + return alert("You must be level " + item.lvl + ' to buy this quest!'); var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]); if (!completedPrevious) return $scope.purchase("quests", item); From 211be37cfc23dfeac2fa628dc83ea606a276ab30 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 2 Feb 2014 13:42:29 +0100 Subject: [PATCH 028/159] refactor(bs3): fix classes modal --- views/shared/modals/classes.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/shared/modals/classes.jade b/views/shared/modals/classes.jade index 7fdad4bcd5..870ea0e93d 100644 --- a/views/shared/modals/classes.jade +++ b/views/shared/modals/classes.jade @@ -72,4 +72,4 @@ script(type='text/ng-template', id='modals/chooseClass.html') .modal-footer button.btn.btn-small.btn-danger.cancel(ng-click='user.ops.disableClasses({}); $close()', popover-placement='top', popover-trigger='mouseenter', popover=env.t('optOutText'))=env.t('optOut') - button.btn.btn-primary.cancel(ng-click='selectedClass && changeClass(selectedClass); $close()')=env.t('select') \ No newline at end of file + button.btn.btn-primary.cancel(ng-disabled='!selectedClass' ng-click='changeClass(selectedClass); $close()')=env.t('select') \ No newline at end of file From 3e077fea6dc8d2d60d5573cd5a3c57a5f00d087d Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 2 Feb 2014 13:52:42 +0100 Subject: [PATCH 029/159] refactor(bs3): port rebirth and reroll modals, misc fixes --- public/js/controllers/settingsCtrl.js | 2 -- public/js/services/guideServices.js | 8 ++++++-- views/options/inventory/inventory.jade | 4 ++-- views/shared/modals/rebirth.jade | 8 +++----- views/shared/modals/reroll.jade | 5 ++--- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/public/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js index 8ad6419a14..89bf06a638 100644 --- a/public/js/controllers/settingsCtrl.js +++ b/public/js/controllers/settingsCtrl.js @@ -55,13 +55,11 @@ habitrpg.controller('SettingsCtrl', $scope.reroll = function(){ User.user.ops.reroll({}); - $rootScope.modals.reroll = false; $rootScope.$state.go('tasks'); } $scope.rebirth = function(){ User.user.ops.rebirth({}); - $rootScope.modals.rebirth = false; $rootScope.$state.go('tasks'); } diff --git a/public/js/services/guideServices.js b/public/js/services/guideServices.js index 7c858b8d28..1f860e6fa9 100644 --- a/public/js/services/guideServices.js +++ b/public/js/services/guideServices.js @@ -139,13 +139,17 @@ angular.module('guideServices', []). if (User.user.achievements && User.user.achievements.beastMaster) return; if (before >= 90) { User.set({'achievements.beastMaster': true}); - $('#beastmaster-achievement-modal').modal('show'); // FIXME + $modal.open({ + templateUrl: 'modals/achievements/beastMaster.html' + }); } }); $rootScope.$watch('user.flags.rebirthEnabled', function(after, before) { if (alreadyShown(before, after)) return; - $rootScope.modals.rebirthEnabled = true; + $modal.open({ + templateUrl: 'modals/rebirthEnabled.html' + }); }); diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 3fab6be8c2..751b57d897 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -123,7 +123,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') | {{Content.food.Saddle.value}} span.Pet_Currency_Gem1x.inline-gems div - button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='left', ng-click='modals.reroll = true', class='inventory_special_fortify') + button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("reroll")', class='inventory_special_fortify') p | 4 span.Pet_Currency_Gem1x.inline-gems @@ -133,7 +133,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') | {{Content.spells.special.snowball.value}} span.Pet_Currency_Gem1x.inline-gems div(ng-show='user.flags.rebirthEnabled') - button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='left', ng-click='modals.rebirth = true', class='rebirth_orb') + button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("rebirth")', class='rebirth_orb') p | 8 span.Pet_Currency_Gem1x.inline-gems diff --git a/views/shared/modals/rebirth.jade b/views/shared/modals/rebirth.jade index 9853aead02..270533dbec 100644 --- a/views/shared/modals/rebirth.jade +++ b/views/shared/modals/rebirth.jade @@ -1,6 +1,5 @@ // Created by Sabe on 12/22/13. -//div(modal='modals.rebirthEnabled') script(type='text/ng-template', id='modals/rebirthEnabled.html') .modal-header h3=env.t('rebirthNew') @@ -9,9 +8,8 @@ script(type='text/ng-template', id='modals/rebirthEnabled.html') p span=env.t('rebirthUnlock') .modal-footer - button.btn.btn-default.cancel(ng-click='modals.rebirthEnabled = false')=env.t('close') + button.btn.btn-default.cancel(ng-click='$close()')=env.t('close') -//div(modal='modals.rebirth') script(type='text/ng-template', id='modals/rebirth.html') .modal-header h3=env.t('rebirthBegin') @@ -37,12 +35,12 @@ script(type='text/ng-template', id='modals/rebirth.html') .achievement-sun.pull-left(style='margin-right: 5px') p=env.t('rebirthEarnAchievement') .modal-footer - button.btn.btn-large.cancel(ng-click='modals.rebirth = false')=env.t('neverMind') + button.btn.btn-large.cancel(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 2') a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 2', ng-controller='SettingsCtrl') - a.btn.btn-danger.btn-large(ng-click='rebirth()')=env.t('beReborn') + a.btn.btn-danger.btn-large(ng-click='$close(); rebirth()')=env.t('beReborn') span.gem-cost | 8  =env.t('gems') diff --git a/views/shared/modals/reroll.jade b/views/shared/modals/reroll.jade index 8bc484eb62..2840418ade 100644 --- a/views/shared/modals/reroll.jade +++ b/views/shared/modals/reroll.jade @@ -1,5 +1,4 @@ // Re-Roll modal -//div(modal='modals.reroll') script(type='text/ng-template', id='modals/reroll.html') .modal-header h3=env.t('fortify') @@ -8,12 +7,12 @@ script(type='text/ng-template', id='modals/reroll.html') p=env.t('fortifyText') .modal-footer - button.btn.btn-large.cancel(ng-click='modals.reroll = false')=env.t('neverMind') + button.btn.btn-large.cancel(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 1') a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 1', ng-controller='SettingsCtrl') - a.btn.btn-danger.btn-large(ng-click='reroll()')=env.t('fortify') + a.btn.btn-danger.btn-large(ng-click='$close(); reroll()')=env.t('fortify') span.gem-cost | 4  = env.t('gems') From 317a148760d4b319f4018d170ca3430d6d88ad15 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 2 Feb 2014 15:46:46 +0100 Subject: [PATCH 030/159] refactor(bs3): port newStuff and member modals, misc fixes --- public/css/index.styl | 3 --- public/js/controllers/groupsCtrl.js | 9 ++++++--- public/js/controllers/notificationCtrl.js | 8 ++++++++ public/js/controllers/rootCtrl.js | 1 - views/shared/header/header.jade | 2 +- views/shared/modals/members.jade | 5 +---- views/shared/modals/new-stuff.jade | 8 ++++---- 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index cf640817dd..96d9262163 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -153,9 +153,6 @@ a a span.glyphicon color: #333 // Takes base color from bootstrap -#modalMember p - word-wrap: break-word - .btn margin-right: 5px diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index ddb36c824f..c52b81da9a 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -1,7 +1,7 @@ "use strict"; -habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '$http', 'API_URL', '$q', 'User', 'Members', '$state', - function($scope, $rootScope, Shared, Groups, $http, API_URL, $q, User, Members, $state) { +habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '$http', 'API_URL', '$q', 'User', 'Members', '$state', '$modal', + function($scope, $rootScope, Shared, Groups, $http, API_URL, $q, User, Members, $state, $modal) { $scope.isMember = function(user, group){ return ~(group.members.indexOf(user._id)); @@ -29,7 +29,10 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' // We need the member information up top here, but then we pass it down to the modal controller // down below. Better way of handling this? Members.selectMember(uid); - $rootScope.modals.member = true; + $modal.open({ + templateUrl: 'modals/member.html', + controller: 'MemberModalCtrl' + }); } } diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index 6089fcabe9..c270558320 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -116,6 +116,7 @@ habitrpg.controller('NotificationCtrl', }) });*/ + // Classes modal $rootScope.$watch('!user.flags.classSelected && user.stats.lvl >= 10', function(after, before){ if(after){ $modal.open({ @@ -132,6 +133,13 @@ habitrpg.controller('NotificationCtrl', } }); + $rootScope.$watch('!user.flags.mathUpdates', function(after, before){ + if (after === before || after !== true) return; + $modal.open({ + templateUrl: 'modals/mathUpdates.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 708a4b87c5..14069e100a 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -73,7 +73,6 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ } $rootScope.dismissAlert = function() { - $rootScope.modals.newStuff = false; $rootScope.set({'flags.newStuff':false}); } diff --git a/views/shared/header/header.jade b/views/shared/header/header.jade index a43113558f..9875741ba4 100644 --- a/views/shared/header/header.jade +++ b/views/shared/header/header.jade @@ -35,5 +35,5 @@ .herobox-wrap(ng-repeat='profile in partyMinusSelf') include avatar - .npc_bailey.npc_bailey_head(ng-show='user.flags.newStuff', tooltip=env.t('psst'), tooltip-placement='top', ng-click='modals.newStuff=true') + .npc_bailey.npc_bailey_head(ng-show='user.flags.newStuff', tooltip=env.t('psst'), tooltip-placement='top', ng-click='openModal("newStuff")') diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index 47b3f0b03f..822a59b553 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -1,6 +1,3 @@ -//div(ng-controller='MemberModalCtrl') - #memberModal(modal='modals.member') - script(type='text/ng-template', id='modals/member.html') .modal-header(bindonce='profile') h3 @@ -25,4 +22,4 @@ script(type='text/ng-template', id='modals/member.html') h3 Achievements include ../profiles/achievements .modal-footer - button.btn.btn-default(ng-click='modals.member = false')=env.t('ok') + button.btn.btn-default(ng-click='$close()')=env.t('ok') diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index 0c51815132..5ecb98ba34 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -1,4 +1,5 @@ //-div(modal='!user.flags.mathUpdates') +script(type='text/ng-template', id='modals/mathUpdates.html') .modal-header h3 Math Updates .modal-body @@ -9,9 +10,8 @@ br p iOS users, iTunes is on vacation until 12/28. Until we can push the updated app, you'll need to sync periodically to get the corrected numbers (app has old math, server saves the correct numbers). Android goes out ASAP. More info on Trello. .modal-footer - button.btn.btn-default.cancel(ng-click='User.set({"flags.mathUpdates":true})') Dismiss + button.btn.btn-default.cancel(ng-click='User.set({"flags.mathUpdates":true}); $close()') Dismiss -//div(modal='modals.newStuff') script(type='text/ng-template', id='modals/newStuff.html') .modal-header h3 New Stuff! @@ -467,5 +467,5 @@ script(type='text/ng-template', id='modals/newStuff.html') a(href='https://trello.com/card/custom-day-start/50e5d3684fe3a7266b0036d6/15') Add custom day start .modal-footer - button.btn.btn-default.cancel(ng-click='modals.newStuff = false') Cool - button.btn.btn-warning.cancel(ng-click='dismissAlert()') Dismiss This Alert \ No newline at end of file + button.btn.btn-default.cancel(ng-click='$close()') Cool + button.btn.btn-warning.cancel(ng-click='dismissAlert(); $close()') Dismiss This Alert \ No newline at end of file From 571954b5cfcf79ff18c3127a516d7a55ddab7f37 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 2 Feb 2014 16:06:30 +0100 Subject: [PATCH 031/159] refactor(bs3): misc fixes, port restore, delete and reset modals --- public/css/index.styl | 5 +++++ public/js/controllers/rootCtrl.js | 6 ++++-- public/js/controllers/settingsCtrl.js | 2 -- views/options/index.jade | 4 ++++ views/options/settings.jade | 6 +++--- views/shared/header/header.jade | 4 ++++ views/shared/header/menu.jade | 6 ++++++ views/shared/modals/new-stuff.jade | 4 ++-- views/shared/modals/settings.jade | 16 ++++++---------- 9 files changed, 34 insertions(+), 19 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index 96d9262163..85f913b1f4 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -130,6 +130,11 @@ div.tooltip-inner { /* Misc -------------------------------------------------- */ +//move + +.new-stuff-modal // a .modal-body + overflow-y: auto + max-height: 400px // Taken from Bootstrap 2.3.2 css, may need to change // notification-character used only by death modal's figure, move .death-modal // a .modal-body diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index 14069e100a..8047127792 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -66,9 +66,11 @@ 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(modal){ + $rootScope.openModal = function(template, controller, scope){ $modal.open({ - templateUrl: 'modals/' + modal + '.html' + 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 89bf06a638..1f2bbebb67 100644 --- a/public/js/controllers/settingsCtrl.js +++ b/public/js/controllers/settingsCtrl.js @@ -96,12 +96,10 @@ habitrpg.controller('SettingsCtrl', "stats.mp": stats.mp, "achievements.streak": achievements.streak }); - $rootScope.modals.restore = false; } $scope.reset = function(){ User.user.ops.reset({}); - $rootScope.modals.reset = false; $rootScope.$state.go('tasks'); } diff --git a/views/options/index.jade b/views/options/index.jade index 496acde639..9ea9ad4fe2 100644 --- a/views/options/index.jade +++ b/views/options/index.jade @@ -13,18 +13,22 @@ script(id='partials/options.html', type="text/ng-template") li(ng-class="{ active: $state.includes('options.profile') }") a(ui-sref='options.profile') span.glyphicon.glyphicon-user + |   =env.t('profile') li(ng-class="{ active: $state.includes('options.social') }") a(ui-sref='options.social') span.glyphicon.glyphicon-heart + |   =env.t('social') li(ng-class="{ active: $state.includes('options.inventory') }", ng-if='user.flags.dropsEnabled') a(ui-sref='options.inventory') span.glyphicon.glyphicon-gift + |   =env.t('inventory') li(ng-class="{ active: $state.includes('options.settings') }") a(ui-sref='options.settings') span.glyphicon.glyphicon-wrench + |   =env.t('settings') .tab-content diff --git a/views/options/settings.jade b/views/options/settings.jade index d084c06390..a0bbb78714 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='modals.restore = true', popover-trigger='mouseenter', popover-placement='right', popover=env.t('fixValPop'))= env.t('fixVal') + button.btn(ng-click='openModal("restore", "SettingsCtrl")', 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') @@ -86,8 +86,8 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') hr h4=env.t('dangerZone') - a.btn.btn-danger(ng-click='modals.reset = true', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetAccPop'))= env.t('resetAccount') - a.btn.btn-danger(ng-click='modals.delete = true', popover-trigger='mouseenter', popover=env.t('deleteAccPop'))= env.t('deleteAccount') + a.btn.btn-danger(ng-click='openModal("reset", "SettingsCtrl")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetAccPop'))= env.t('resetAccount') + a.btn.btn-danger(ng-click='openModal("delete", "SettingsCtrl")', popover-trigger='mouseenter', popover=env.t('deleteAccPop'))= env.t('deleteAccount') script(type='text/ng-template', id='partials/options.settings.api.html') .row.fluid diff --git a/views/shared/header/header.jade b/views/shared/header/header.jade index 9875741ba4..8c85538495 100644 --- a/views/shared/header/header.jade +++ b/views/shared/header/header.jade @@ -14,20 +14,24 @@ .bar(style='width: {{Shared.percent(user.stats.hp, 50)}}%;') span.meter-text span.glyphicon.glyphicon-heart + |   | {{Math.ceil(user.stats.hp)}} / 50 .meter.experience(title=env.t('experience')) .bar(style='width: {{Shared.percent(user.stats.exp,Shared.tnl(user.stats.lvl))}}%;') span.meter-text span.glyphicon.glyphicon-star + |   | {{Math.floor(user.stats.exp)}} / {{Shared.tnl(user.stats.lvl) | number:0}} // FIXME doesn't look great here, but the "Experience" CSS title rollover covers it where it was before span(ng-show='user.history.exp') a(ng-click='toggleChart("exp")', tooltip=env.t('progress')) + |   span.glyphicon.glyphicon-signal .meter.mana(title='Mana', ng-if='user.flags.classSelected && !user.preferences.disableClasses') .bar(style='width: {{user.stats.mp / user._statsComputed.maxMP * 100}}%;') span.meter-text span.glyphicon.glyphicon-fire + |   | {{Math.floor(user.stats.mp)}} / {{user._statsComputed.maxMP}} // party diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index fa7cf337d8..38c409f1da 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -8,25 +8,31 @@ a.task-action-btn.tile.solid span(ng-show='$state.includes("options")', ui-sref='tasks') span.glyphicon.glyphicon-ok + |   =env.t('tasks') span(ng-show='$state.includes("tasks")', ui-sref='options') span.glyphicon.glyphicon-wrench + |   =env.t('options') li a.task-action-btn.tile.solid(href="http://habitrpg.wikia.com/wiki/FAQ", target='_blank') span.glyphicon.glyphicon-book + |   =env.t('FAQ') li a.task-action-btn.tile.solid(href="https://vimeo.com/57654086", target='_blank') span.glyphicon.glyphicon-film + //|   Tutorials is too long to stay in the menu if we add a space =env.t('tutorials') li a.task-action-btn.tile.solid(ng-click='User.sync()') span.glyphicon.glyphicon-refresh + |   =env.t('sync') li a.task-action-btn.tile.solid(ng-click='logout()') span.glyphicon.glyphicon-share-alt + |   =env.t('logout') // party invitation notification a(ng-show='user.party.invitation', style='cursor: pointer;', x-bind='click:gotoPartyChat') diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index 5ecb98ba34..d8bbbaf918 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -12,10 +12,10 @@ script(type='text/ng-template', id='modals/mathUpdates.html') .modal-footer button.btn.btn-default.cancel(ng-click='User.set({"flags.mathUpdates":true}); $close()') Dismiss -script(type='text/ng-template', id='modals/newStuff.html') +script(type='text/ng-template', id='modals/newStuff.html') .modal-header h3 New Stuff! - .modal-body + .modal-body.new-stuff-modal table tr td diff --git a/views/shared/modals/settings.jade b/views/shared/modals/settings.jade index 4aca070e2f..634fc92cc0 100644 --- a/views/shared/modals/settings.jade +++ b/views/shared/modals/settings.jade @@ -1,5 +1,3 @@ -//div(ng-controller='SettingsCtrl') Above all - div(modal='modals.reset') script(type='text/ng-template', id='modals/reset.html') .modal-header h3=env.t('resetAccount') @@ -7,10 +5,9 @@ script(type='text/ng-template', id='modals/reset.html') p=env.t('resetText1') p=env.t('resetText2') .modal-footer - button.btn.btn-default.cancel(ng-click='modals.reset = false')=env.t('neverMind') - button.btn.btn-danger(data-dismiss='modal', ng-click='reset()')=env.t('resetDo') + button.btn.btn-default.cancel(ng-click='$close();')=env.t('neverMind') + button.btn.btn-danger(ng-click='$close(); reset()')=env.t('resetDo') -//div(modal='modals.restore') script(type='text/ng-template', id='modals/restore.html') .modal-header h3=env.t('fixValues') @@ -46,10 +43,9 @@ script(type='text/ng-template', id='modals/restore.html') 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='modals.restore = false')=env.t('discardChanges') - button.btn.btn-primary(ng-click='restore()')=env.t('saveAndClose') + button.btn.btn-default.cancel(ng-click='$close()')=env.t('discardChanges') + button.btn.btn-primary(ng-click='$close(); restore()')=env.t('saveAndClose') -//div(modal='modals.delete') script(type='text/ng-template', id='modals/delete.html') .modal-header h3=env.t('deleteAccount') @@ -58,5 +54,5 @@ script(type='text/ng-template', id='modals/delete.html') p input(type='text', ng-model='_deleteAccount') .modal-footer - button.btn.btn-default(ng-click='modals.delete = false')=env.t('neverMind') - button.btn.btn-danger.btn-small(ng-disabled='_deleteAccount != "DELETE"', ng-click='delete()')=env.t('deleteDo') + button.btn.btn-default(ng-click='$close()')=env.t('neverMind') + button.btn.btn-danger.btn-small(ng-disabled='_deleteAccount != "DELETE"', ng-click='$close(); delete()')=env.t('deleteDo') From 07593dc1226e8ebc760625948dcfd1083e7cf480 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 2 Feb 2014 16:43:58 +0100 Subject: [PATCH 032/159] 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 From 2e3ee3f97cbc32dabe4329335a97c9efde09aeeb Mon Sep 17 00:00:00 2001 From: deilann Date: Sun, 2 Feb 2014 13:22:24 -0800 Subject: [PATCH 033/159] removes progress bar of unfeedable pets --- views/options/inventory/stable.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index 328be90ebb..d85fc484fc 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -54,7 +54,7 @@ script(type='text/ng-template', id='partials/options.inventory.pets.html') menu div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') - .progress(ng-class='{"progress-success": user.items.pets[pet]<50}') + .progress(ng-show='!user.items.mounts[pet]', ng-class='{"progress-success": user.items.pets[pet]<50}') .bar(style="width: {{user.items.pets[pet]/.5}}%;") button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') .PixelPaw From e99118b6a77aa9ea220967120e59d90ba82cb7f8 Mon Sep 17 00:00:00 2001 From: Lorian Date: Sun, 2 Feb 2014 16:35:36 -0800 Subject: [PATCH 034/159] Edited appliedTags call to actually call the correct function; now hovering over a task's tag icon displays a list of that task's tags. --- views/shared/tasks/task.jade | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 5fd8d64baa..23d0855cfd 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -15,7 +15,8 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s a.badge(ng-if='task.checklist[0]', ng-class='{"badge-success":checklistCompletion(task.checklist) == task.checklist.length}', ng-click='collapseChecklist(task)', style='margin:1px') {{checklistCompletion(task.checklist)}}/{{task.checklist.length}} - i.icon-tags(tooltip='{{appliedTags(user.tags, task.tags)}}', ng-hide='Shared.noTags(task.tags)') + // tags + i.icon-tags(tooltip='{{Shared.appliedTags(user.tags, task.tags)}}', ng-hide='Shared.noTags(task.tags)') // edit a(ng-hide='task._editing', ng-click='editTask(task)', tooltip=env.t('edit')) i.icon-pencil(ng-hide='task._editing') From 4f911a68d805742e6744383948eea6f224f2b0ea Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Sun, 2 Feb 2014 21:19:01 -0600 Subject: [PATCH 035/159] fix(buffs): Move help bubble to left of special buffs Corrects an issue where the popover text for Stealth and Chilling Frost inherited the "strong" formatting of the buff name label, and improves visual consistency with the attribute readout above them. --- views/shared/profiles/stats.jade | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/views/shared/profiles/stats.jade b/views/shared/profiles/stats.jade index ea9a921c01..51606f2cbb 100644 --- a/views/shared/profiles/stats.jade +++ b/views/shared/profiles/stats.jade @@ -63,15 +63,16 @@ table.table.table-striped |: {{profile.stats.buffs[k] || 0}}  tr(ng-if='profile.stats.buffs.stealth') td + i.icon-question-sign(popover-title=env.t('stealth'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('stealthNewDay')) +   strong=env.t('stealth') - |: {{profile.stats.buffs.stealth}}  - i.icon-question-sign(popover-title=env.t('stealth'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('stealthNewDay')) + |: {{profile.stats.buffs.stealth}} td tr(ng-if='profile.stats.buffs.streaks') td + i.icon-question-sign(popover-title=env.t('streaksFrozen'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('streaksFrozenText')) +   strong=env.t('streaksFrozen') - | - i.icon-question-sign(popover-title=env.t('streaksFrozen'), popover-trigger='mouseenter', popover-placement='right', popover=env.t('streaksFrozenText')) td h4(ng-show='user.flags.dropsEnabled')=env.t('pets') From 85eb0aa38a472633d32aa00bbe6202c0efa03faa Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Sun, 2 Feb 2014 17:41:29 -0600 Subject: [PATCH 036/159] chore(cluster): disconnect worker on error, then kill after 30 sec (cc @lefnire): This disconnects the process, sets up a kill timer, and then sends error emails and responses back to the client. This should stop new clients from connecting to the dead worker, allow connections already established to finish, and cause the master to fork a new worker to pick up the slack immediately. --- src/server.js | 7 ++++--- src/utils.js | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/server.js b/src/server.js index 8d95852ad0..54971e719e 100644 --- a/src/server.js +++ b/src/server.js @@ -12,9 +12,9 @@ if (cluster.isMaster && (isDev || isProd)) { // Fork workers. _.times(require('os').cpus().length, function(){ cluster.fork(); - }) + }); - cluster.on('exit', function(worker, code, signal) { + cluster.on('disconnect', function(worker, code, signal) { var w = cluster.fork(); // replace the dead worker console.error('[%s] [master:%s] worker:%s disconnect! new worker:%s fork', new Date(), process.pid, worker.process.pid, w.process.pid); }); @@ -135,6 +135,7 @@ if (cluster.isMaster && (isDev || isProd)) { app.use('/api/v1', require('./routes/apiv1').middleware); app.use('/export', require('./routes/dataexport').middleware); + app.use(utils.crashWorker(server)); app.use(utils.errorHandler); require('./routes/apiv2.coffee')(swagger, v2); @@ -145,4 +146,4 @@ if (cluster.isMaster && (isDev || isProd)) { }); module.exports = server; -} \ No newline at end of file +} diff --git a/src/utils.js b/src/utils.js index eacb9e7c59..dc99aafd23 100644 --- a/src/utils.js +++ b/src/utils.js @@ -2,6 +2,7 @@ var nodemailer = require('nodemailer'); var nconf = require('nconf'); var crypto = require('crypto'); var path = require("path"); +var cluster = require("cluster"); module.exports.sendEmail = function(mailData) { var smtpTransport = nodemailer.createTransport("SMTP",{ @@ -59,6 +60,23 @@ module.exports.setupConfig = function(){ if (nconf.get('NODE_ENV') === 'production') require('newrelic'); }; +module.exports.crashWorker = function(server) { + return function(err, req, res, next) { + if (!cluster.isMaster) { + // make sure we close down within 30 seconds + var killtimer = setTimeout(function() { + process.exit(1); + }, 30000); + // But don't keep the process open just for that! + killtimer.unref(); + // stop taking new requests. + server.close(); + cluster.worker.disconnect(); + } + next(err); + }; +} + module.exports.errorHandler = function(err, req, res, next) { // when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER) @@ -79,5 +97,4 @@ module.exports.errorHandler = function(err, req, res, next) { var message = err.message ? err.message : err; message = (message.length < 200) ? message : message.substring(0,100) + message.substring(message.length-100,message.length); res.json(500,{err:message}); //res.end(err.message); - process.exit(0); -} \ No newline at end of file +} From e966cc956a55955fec65ce639334c0728bad8702 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Mon, 3 Feb 2014 00:13:51 -0600 Subject: [PATCH 037/159] chore(logging): only log to console and file on dev (cc @lefnire) --- src/logging.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/logging.js b/src/logging.js index d54bedfa3e..f519370c07 100644 --- a/src/logging.js +++ b/src/logging.js @@ -6,15 +6,9 @@ require('winston-newrelic'); var logger; if (logger == null) { - logger = new (winston.Logger)({ - transports: [ - new (winston.transports.Console)({colorize: true}), - new (winston.transports.File)({ filename: 'habitrpg.log' }) - // TODO: Add email, loggly, or mongodb transports - ] - }); + logger = new (winston.Logger)({}); if (nconf.get('NODE_ENV') == 'production') { - logger.add(winston.transport.newrelic, {}); + logger.add(winston.transport.newrelic, {}); logger.add(winston.transports.Mail, { to: nconf.get('ADMIN_EMAIL') || nconf.get('SMTP_USER'), from: "HabitRPG <" + nconf.get('SMTP_USER') + ">", @@ -26,6 +20,9 @@ if (logger == null) { password: nconf.get('SMTP_PASS'), level: 'error' }); + } else { + logger.add(winston.transports.Console, {colorize:true}); + logger.add(winston.transports.File, {filename: 'habitrpg.log'}); } } From f8796e9028d4f4cd2b5c5ede1734d2876d174dc9 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 2 Feb 2014 23:17:30 -0700 Subject: [PATCH 038/159] feat(winter): remove purchasable winter hair colors, keep available if they purchased during event --- views/options/profile.jade | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/views/options/profile.jade b/views/options/profile.jade index 15986489a1..c238ea79ec 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -30,22 +30,15 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') | 2 / = ' ' + env.t('locked') menu(type='list') + // For special events code, see commit dfa27b3 + // Color li.customize-menu menu(label=env.t('color')) each v,k in {'c8c8c8':'white','903a00':'brown','cfb853':'blond','ec720f':'red','2e2e2e':'black'} button(type='button', class='customize-option', style='width: 40px; height: 40px; background-color:##{k};', ng-click='set({"preferences.hair.color": "#{v}"})') - - // Special Events - li.customize-menu.well.limited-edition - .label.label-info.pull-right(popover=env.t('limited31Jan'), popover-title=env.t('limitedEdition'), popover-placement='right', popover-trigger='mouseenter') - =env.t('limitedEdition') - | - i.icon.icon-question-sign - menu(label=env.t('winterColors')) each color in ['candycane','frost','winternight','holly'] - button(type='button', ng-class='{locked: !user.purchased.hair.color.#{color}}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.color.candycane && user.purchased.hair.color.frost && user.purchased.hair.color.winternight && user.purchased.hair.color.holly', ng-click='unlock("hair.color.candycane,hair.color.frost,hair.color.winternight,hair.color.holly")')!= env.t('unlockSet5') + ' ' + button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') h5=env.t('bodyHair') // Bangs From 83b3739f4671a08466e057242f936140d5c739ef Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 2 Feb 2014 23:25:00 -0700 Subject: [PATCH 039/159] fix(winston): typo --- src/logging.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logging.js b/src/logging.js index f519370c07..f8e56da7cf 100644 --- a/src/logging.js +++ b/src/logging.js @@ -8,7 +8,7 @@ var logger; if (logger == null) { logger = new (winston.Logger)({}); if (nconf.get('NODE_ENV') == 'production') { - logger.add(winston.transport.newrelic, {}); + logger.add(winston.transports.newrelic, {}); logger.add(winston.transports.Mail, { to: nconf.get('ADMIN_EMAIL') || nconf.get('SMTP_USER'), from: "HabitRPG <" + nconf.get('SMTP_USER') + ">", From e3b5a3978ab1eeeec1b73132ab9a220e9d1eee65 Mon Sep 17 00:00:00 2001 From: Cole Gleason Date: Mon, 3 Feb 2014 01:25:54 -0600 Subject: [PATCH 040/159] chore(logging): change disconnect message level from error to info --- src/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server.js b/src/server.js index 5afb0fd248..aa734c7d3a 100644 --- a/src/server.js +++ b/src/server.js @@ -16,7 +16,7 @@ if (cluster.isMaster && (isDev || isProd)) { cluster.on('disconnect', function(worker, code, signal) { var w = cluster.fork(); // replace the dead worker - logging.error('[%s] [master:%s] worker:%s disconnect! new worker:%s fork', new Date(), process.pid, worker.process.pid, w.process.pid); + logging.info('[%s] [master:%s] worker:%s disconnect! new worker:%s fork', new Date(), process.pid, worker.process.pid, w.process.pid); }); } else { From f95dac7d1d7589f04360b3444fc34abfe7b72d58 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 11:06:10 -0700 Subject: [PATCH 041/159] chore(analytics): upgrade GA to universal analytics (cc @deilann) --- public/js/controllers/footerCtrl.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/js/controllers/footerCtrl.js b/public/js/controllers/footerCtrl.js index 6541f6f70f..3a256b8fbf 100644 --- a/public/js/controllers/footerCtrl.js +++ b/public/js/controllers/footerCtrl.js @@ -22,8 +22,12 @@ habitrpg.controller("FooterCtrl", ['$scope', '$rootScope', 'User', '$http', 'Not // Google Analytics, only in production if (window.env.NODE_ENV === 'production') { - window._gaq = [["_setAccount", "UA-33510635-1"], ["_setDomainName", "habitrpg.com"], ["_trackPageview"]]; - $.getScript(("https:" === document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js"); + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-33510635-1', 'habitrpg.com'); + ga('send', 'pageview'); } // Scripts only for desktop From cdc13d2ffb93ac8fa0e69d52abe82a28e1e6fa45 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Mon, 3 Feb 2014 19:24:37 +0100 Subject: [PATCH 042/159] refactor(bs3): misc --- public/js/controllers/authCtrl.js | 10 ++--- public/js/controllers/groupsCtrl.js | 9 ++--- public/js/controllers/inventoryCtrl.js | 14 ++----- public/js/controllers/notificationCtrl.js | 48 ++++++----------------- public/js/controllers/rootCtrl.js | 6 ++- public/js/services/guideServices.js | 20 ++-------- 6 files changed, 30 insertions(+), 77 deletions(-) diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 1312b40d35..9c65ee3541 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -5,8 +5,8 @@ */ angular.module('authCtrl', []) - .controller("AuthCtrl", ['$scope', '$rootScope', 'User', '$http', '$location', '$window','API_URL', '$modal', - function($scope, $rootScope, User, $http, $location, $window, API_URL, $modal) { + .controller("AuthCtrl", ['$scope', '$rootScope', 'User', '$http', '$location', '$window','API_URL', + function($scope, $rootScope, User, $http, $location, $window, API_URL) { var runAuth; var showedFacebookMessage; @@ -71,10 +71,8 @@ angular.module('authCtrl', []) if (User.authenticated()) { window.location.href = '/#/tasks'; } else { - $modal.open({ - templateUrl: 'modals/login.html' - // Using controller: 'AuthCtrl' it causes problems - }); + // Using controller: 'AuthCtrl' it causes problems + $rootScope.openModal('login'); } } diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index d1f97a8a08..c3910a9030 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -1,7 +1,7 @@ "use strict"; -habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '$http', 'API_URL', '$q', 'User', 'Members', '$state', '$modal', - function($scope, $rootScope, Shared, Groups, $http, API_URL, $q, User, Members, $state, $modal) { +habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '$http', 'API_URL', '$q', 'User', 'Members', '$state', + function($scope, $rootScope, Shared, Groups, $http, API_URL, $q, User, Members, $state) { $scope.isMember = function(user, group){ return ~(group.members.indexOf(user._id)); @@ -29,10 +29,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' // We need the member information up top here, but then we pass it down to the modal controller // down below. Better way of handling this? Members.selectMember(uid); - $modal.open({ - templateUrl: 'modals/member.html', - controller: 'MemberModalCtrl' - }); + $rootScope.openModal('member', 'MemberModalCtrl'); } } diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 4710b3a9c7..96f81644aa 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', '$modal', - function($rootScope, $scope, $window, User, Content, $modal) { +habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', 'Content', + function($rootScope, $scope, $window, User, Content) { var user = User.user; @@ -127,10 +127,7 @@ 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; - $modal.open({ - templateUrl: 'modals/showQuest.html', - controller: 'InventoryCtrl' - }); + $rootScope.openModal('showQuest', 'InventoryCtrl'); } $scope.closeQuest = function(){ $rootScope.selectedQuest = undefined; @@ -149,10 +146,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', if (!completedPrevious) return $scope.purchase("quests", item); $rootScope.selectedQuest = item; - $modal.open({ - templateUrl: 'modals/buyQuest.html', - controller: 'InventoryCtrl' - }); + $rootScope.openModal('showQuest', 'buyQuest'); } } ]); diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index a8f4ece386..d72a11546f 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -1,16 +1,12 @@ 'use strict'; habitrpg.controller('NotificationCtrl', - ['$scope', '$rootScope', 'Shared', 'User', 'Guide', 'Notification', '$modal', - function ($scope, $rootScope, Shared, User, Guide, Notification, $modal) { + ['$scope', '$rootScope', 'Shared', 'User', 'Guide', 'Notification', + function ($scope, $rootScope, Shared, User, Guide, Notification) { $rootScope.$watch('user.stats.hp', function(after, before) { if (after <= 0){ - $modal.open({ - templateUrl: 'modals/death.html', - keyboard: false, - backdrop: 'static' - }); + $rootScope.openModal('death', undefined, undefined, false, 'static'); } if (after == before) return; if (User.user.stats.lvl == 0) return; @@ -69,39 +65,29 @@ habitrpg.controller('NotificationCtrl', $rootScope.$watch('user.achievements.streak', function(after, before){ if(before == undefined || after == before || after < before) return; - $modal.open({ - templateUrl: 'modals/achievements/streak.html' - }); + $rootScope.openModal('achievements/streak'); }); $rootScope.$watch('user.achievements.ultimateGear', function(after, before){ if (after === before || after !== true) return; - $modal.open({ - templateUrl: 'modals/achievements/ultimateGear.html' - }); + $rootScope.openModal('achievements/ultimateGear'); }); $rootScope.$watch('user.items.pets', function(after, before){ if(_.size(after) === _.size(before) || Shared.countPets(null, after) < 90) return; User.user.achievements.beastMaster = true; - $modal.open({ - templateUrl: 'modals/achievements/beastMaster.html' - }); + $rootScope.openModal('achievements/beastMaster'); }, true); $rootScope.$watch('user.achievements.rebirths', function(after, before){ if(after === before) return; - $modal.open({ - templateUrl: 'modals/achievements/rebirth.html' - }); + $rootScope.openModal('achievements/rebirth'); }); $rootScope.$watch('user.flags.contributor', function(after, before){ if (after === before || after !== true) return; - $modal.open({ - templateUrl: 'modals/achievements/contributor.html' - }); + $rootScope.openModal('achievements/contributor'); }); /*_.each(['weapon', 'head', 'chest', 'shield'], function(watched){ @@ -119,10 +105,7 @@ habitrpg.controller('NotificationCtrl', // Classes modal $rootScope.$watch('!user.flags.classSelected && user.stats.lvl >= 10', function(after, before){ if(after){ - $modal.open({ - templateUrl: 'modals/chooseClass.html', - controller: 'UserCtrl' - }); + $rootScope.openModal('chooseClass', 'UserCtrl'); } }); @@ -136,25 +119,18 @@ habitrpg.controller('NotificationCtrl', // Math updates modal $rootScope.$watch('!user.flags.mathUpdates', function(after, before){ if (after == before || after != true) return; - $modal.open({ - templateUrl: 'modals/mathUpdates.html' - }); + $rootScope.openModal('mathUpdates'); }); // 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.openModal('questCompleted', '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.openModal('questInvitation'); }); $rootScope.$on('responseError', function(ev, error){ diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index 35e001a95e..7cdc782ea1 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -66,11 +66,13 @@ 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){ + $rootScope.openModal = function(template, controller, scope, keyboard, backdrop){ return $modal.open({ templateUrl: 'modals/' + template + '.html', controller: controller, // optional - scope: scope // optional + scope: scope, // optional + keyboard: keyboard, // optional + backdrop: backdrop // optional }); } diff --git a/public/js/services/guideServices.js b/public/js/services/guideServices.js index 1f860e6fa9..c512c72e23 100644 --- a/public/js/services/guideServices.js +++ b/public/js/services/guideServices.js @@ -5,7 +5,7 @@ */ angular.module('guideServices', []). - factory('Guide', ['$rootScope', 'User', '$timeout', '$modal', function($rootScope, User, $timeout, $modal) { + factory('Guide', ['$rootScope', 'User', '$timeout', function($rootScope, User, $timeout) { /** * Init and show the welcome tour. Note we do it listening to a $rootScope broadcasted 'userLoaded' message, @@ -130,26 +130,12 @@ angular.module('guideServices', []). if (!eggs) { eggs['Wolf'] = 1; // This is also set on the server } - $modal.open({ - templateUrl: 'modals/dropsEnabled.html' - }); - }); - - $rootScope.$watch('user.items.pets', function(after, before) { - if (User.user.achievements && User.user.achievements.beastMaster) return; - if (before >= 90) { - User.set({'achievements.beastMaster': true}); - $modal.open({ - templateUrl: 'modals/achievements/beastMaster.html' - }); - } + $rootScope.openModal('dropsEnabled'); }); $rootScope.$watch('user.flags.rebirthEnabled', function(after, before) { if (alreadyShown(before, after)) return; - $modal.open({ - templateUrl: 'modals/rebirthEnabled.html' - }); + $rootScope.openModal('rebirthEnabled'); }); From 535fd4fe8229e197b727338eda6ddcc9ed889bb1 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 11:41:47 -0700 Subject: [PATCH 043/159] refactor(footer): remove amazon affiliate code --- public/js/controllers/footerCtrl.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/public/js/controllers/footerCtrl.js b/public/js/controllers/footerCtrl.js index 3a256b8fbf..825092053b 100644 --- a/public/js/controllers/footerCtrl.js +++ b/public/js/controllers/footerCtrl.js @@ -13,13 +13,6 @@ habitrpg.controller("FooterCtrl", ['$scope', '$rootScope', 'User', '$http', 'Not // Stripe $.getScript('//checkout.stripe.com/v2/checkout.js'); - // Amazon Affiliate -// if ($rootScope.authenticated() && !User.user.purchased.ads) { -// $.getScript('//wms.assoc-amazon.com/20070822/US/js/link-enhancer-common.js?tag=ha0d2-20').fail(function() { -// $('body').append(''); -// }); -// } - // Google Analytics, only in production if (window.env.NODE_ENV === 'production') { (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ From 43d05a54a310ddacd6094ff14cbf546f13b3cda3 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 11:42:23 -0700 Subject: [PATCH 044/159] refactor(footer): ensure debug buttons only show in development --- public/js/controllers/footerCtrl.js | 47 +++++++++++++++-------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/public/js/controllers/footerCtrl.js b/public/js/controllers/footerCtrl.js index 825092053b..30ccbd2c8b 100644 --- a/public/js/controllers/footerCtrl.js +++ b/public/js/controllers/footerCtrl.js @@ -41,27 +41,30 @@ habitrpg.controller("FooterCtrl", ['$scope', '$rootScope', 'User', '$http', 'Not /** * Debug functions. Note that the server route for gems is only available if process.env.DEBUG=true */ - $scope.addMissedDay = function(){ - if (!confirm("Are you sure you want to reset the day?")) return; - var dayBefore = moment(User.user.lastCron).subtract('days', 1).toDate(); - User.set({'lastCron': dayBefore}); - Notification.text('-1 day, remember to refresh'); - } - $scope.addTenGems = function(){ - $http.post(API_URL + '/api/v2/user/addTenGems').success(function(){ - User.log({}); - }) - } - $scope.addLevelsAndGold = function(){ - User.set({ - 'stats.exp': User.user.stats.exp + 10000, - 'stats.gp': User.user.stats.gp + 10000, - 'stats.mp': User.user.stats.mp + 10000 - }); - } - $scope.addOneLevel = function(){ - User.set({ - 'stats.exp': User.user.stats.exp + (Math.round(((Math.pow(User.user.stats.lvl, 2) * 0.25) + (10 * User.user.stats.lvl) + 139.75) / 10) * 10) - }); + if (window.env.NODE_ENV === 'development') { + $scope.addMissedDay = function(){ + if (!confirm("Are you sure you want to reset the day?")) return; + var dayBefore = moment(User.user.lastCron).subtract('days', 1).toDate(); + User.set({'lastCron': dayBefore}); + Notification.text('-1 day, remember to refresh'); + } + $scope.addTenGems = function(){ + $http.post(API_URL + '/api/v2/user/addTenGems').success(function(){ + User.log({}); + }) + } + $scope.addLevelsAndGold = function(){ + User.set({ + 'stats.exp': User.user.stats.exp + 10000, + 'stats.gp': User.user.stats.gp + 10000, + 'stats.mp': User.user.stats.mp + 10000 + }); + } + $scope.addOneLevel = function(){ + User.set({ + 'stats.exp': User.user.stats.exp + (Math.round(((Math.pow(User.user.stats.lvl, 2) * 0.25) + (10 * User.user.stats.lvl) + 139.75) / 10) * 10) + }); + } } + }]) \ No newline at end of file From 67ee011aa35969db93e2d7dc1cd1e1f587f146de Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 11:43:03 -0700 Subject: [PATCH 045/159] fix(footer): ensure window.env is accessible from static pages, so we can get deferred scripts on frontpage (esp google analytics) --- public/js/controllers/footerCtrl.js | 3 ++- public/manifest.json | 3 ++- views/static/layout.jade | 7 +++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/public/js/controllers/footerCtrl.js b/public/js/controllers/footerCtrl.js index 30ccbd2c8b..bcdd7ea6a5 100644 --- a/public/js/controllers/footerCtrl.js +++ b/public/js/controllers/footerCtrl.js @@ -1,6 +1,7 @@ "use strict"; -habitrpg.controller("FooterCtrl", ['$scope', '$rootScope', 'User', '$http', 'Notification', 'API_URL', +(typeof habitrpg !== 'undefined' ? habitrpg : habitrpgStatic) + .controller("FooterCtrl", ['$scope', '$rootScope', 'User', '$http', 'Notification', 'API_URL', function($scope, $rootScope, User, $http, Notification, API_URL) { /** diff --git a/public/manifest.json b/public/manifest.json index 2d616d2a19..416553e18e 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -84,7 +84,8 @@ "js/static.js", "js/services/notificationServices.js", "bower_components/habitrpg-shared/script/userServices.js", - "js/controllers/authCtrl.js" + "js/controllers/authCtrl.js", + "js/controllers/footerCtrl.js" ], "css": [ "bower_components/bootstrap/docs/assets/css/bootstrap.css", diff --git a/views/static/layout.jade b/views/static/layout.jade index 5492c2365f..081fbdb637 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -1,12 +1,15 @@ //Trick needed to pass 'env' to ./layout block vars doctype 5 -html +html(ng-app='habitrpgStatic') head block title title=env.t('titleIndex') + script(type='text/javascript'). + window.env = !{JSON.stringify(env)}; + link(rel='shortcut icon', href='#{env.getBuildUrl("favicon.ico")}?v=2') meta(charset='utf-8') @@ -18,7 +21,7 @@ html $.getScript("//s7.addthis.com/js/250/addthis_widget.js#pubid=lefnire"); body - div(ng-app='habitrpgStatic',ng-controller='AuthCtrl',style='margin-top:60px;') + div(ng-controller='AuthCtrl',style='margin-top:60px;') include ./login-modal .navbar.navbar-inverse.navbar.navbar-inverse.navbar-fixed-top .navbar-inner From 4d32092e8f403e1091cef7ec4aae5c2613cb4690 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 11:53:32 -0700 Subject: [PATCH 046/159] refactor(addthis): remove superfluous addthis inclusion --- views/static/layout.jade | 3 --- 1 file changed, 3 deletions(-) diff --git a/views/static/layout.jade b/views/static/layout.jade index 081fbdb637..c55193eb13 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -17,9 +17,6 @@ html(ng-app='habitrpgStatic') != env.getManifestFiles("static") - script(type='text/javascript'). - $.getScript("//s7.addthis.com/js/250/addthis_widget.js#pubid=lefnire"); - body div(ng-controller='AuthCtrl',style='margin-top:60px;') include ./login-modal From 2e2fcfcf464fbae21bff9e1be1ca915f071b976b Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 11:53:52 -0700 Subject: [PATCH 047/159] fix(swagger): fix jade script warning in swagger --- views/static/api.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/static/api.jade b/views/static/api.jade index 16b55d8277..276f3bee20 100644 --- a/views/static/api.jade +++ b/views/static/api.jade @@ -16,7 +16,7 @@ html script(src='/bower_components/swagger-ui/dist/lib/swagger.js', type='text/javascript') script(src='/bower_components/swagger-ui/dist/swagger-ui.js', type='text/javascript') script(src='/bower_components/swagger-ui/dist/lib/highlight.7.3.pack.js', type='text/javascript') - script(type='text/javascript') + script(type='text/javascript'). $(function () { window.swaggerUi = new SwaggerUi({ url: "/api/v2/api-docs", From 1a652eefd6640471ca747765acd92aeff5708ecf Mon Sep 17 00:00:00 2001 From: deilann Date: Mon, 3 Feb 2014 12:42:09 -0800 Subject: [PATCH 048/159] pull correct information for member modal class --- views/shared/modals/members.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index 925d9267df..508ecce4e1 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -16,7 +16,7 @@ div(ng-controller='MemberModalCtrl') li(ng-show='profile.auth.timestamps.loggedin')=env.t('lastLoggedIn') | {{timestamp(profile.auth.timestamps.loggedin)}} - h3=env.t('stats') - .label.label-info {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[user.stats.class] }} + .label.label-info {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[profile.stats.class] }} include ../profiles/stats .span6 include ../header/avatar From 6a86da316bc310f295d4af72ce1362bb0c78bef2 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 17:05:18 -0700 Subject: [PATCH 049/159] chore(mongoose): set some options per #2725 to address high number of open connections, replset connection timeout, and close mongoose connection on process death --- src/models/challenge.js | 1 - src/models/group.js | 3 --- src/server.js | 21 ++++++++++++--------- src/utils.js | 29 ++++++++--------------------- 4 files changed, 20 insertions(+), 34 deletions(-) diff --git a/src/models/challenge.js b/src/models/challenge.js index 2656bebe1b..a01cea9575 100644 --- a/src/models/challenge.js +++ b/src/models/challenge.js @@ -3,7 +3,6 @@ var Schema = mongoose.Schema; var shared = require('habitrpg-shared'); var _ = require('lodash'); var TaskSchemas = require('./task'); -var Group = require('./group').model; var ChallengeSchema = new Schema({ _id: {type: String, 'default': shared.uuid}, diff --git a/src/models/group.js b/src/models/group.js index fa901dad8f..f3b3cad8e5 100644 --- a/src/models/group.js +++ b/src/models/group.js @@ -3,7 +3,6 @@ var Schema = mongoose.Schema; var shared = require('habitrpg-shared'); var _ = require('lodash'); var async = require('async'); -var User = require('./user').model; var GroupSchema = new Schema({ _id: {type: String, 'default': shared.uuid}, @@ -161,8 +160,6 @@ GroupSchema.methods.finishQuest = function(quest, cb) { }) var members = _.keys(group.quest.members); group.quest = {};group.markModified('quest'); - // FIXME this is TERRIBLE practice. Looks like there are circular dependencies in the models, such that `var User` at - // this point is undefined. So we get around that by loading from mongoose only once we get to this point mongoose.models.User.update({_id:{$in:members}}, updates, {multi:true}, cb); } diff --git a/src/server.js b/src/server.js index aa734c7d3a..81ffb155d4 100644 --- a/src/server.js +++ b/src/server.js @@ -35,14 +35,18 @@ if (cluster.isMaster && (isDev || isProd)) { // ------------ MongoDB Configuration ------------ mongoose = require('mongoose'); - require('./models/user'); //load up the user schema - TODO is this necessary? - require('./models/group'); - require('./models/challenge'); - mongoose.connect(nconf.get('NODE_DB_URI'), {auto_reconnect:true}, function(err) { - if (err) throw err; - logging.info('Connected with Mongoose'); + var mongooseOptions = !isProd ? {} : { + replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }, + server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } } + }; + mongoose.connect(nconf.get('NODE_DB_URI'), mongooseOptions, function(err) { + if (err) throw err; + logging.info('Connected with Mongoose'); }); - + // load schemas & models + require('./challenge'); + require('./group'); + require('./user'); // ------------ Passport Configuration ------------ var passport = require('passport') @@ -63,7 +67,6 @@ if (cluster.isMaster && (isDev || isProd)) { done(null, obj); }); - // Use the FacebookStrategy within Passport. // Strategies in Passport require a `verify` function, which accept // credentials (in this case, an accessToken, refreshToken, and Facebook @@ -135,7 +138,7 @@ if (cluster.isMaster && (isDev || isProd)) { app.use('/api/v1', require('./routes/apiv1').middleware); app.use('/export', require('./routes/dataexport').middleware); - app.use(utils.crashWorker(server)); + app.use(utils.crashWorker(server,mongoose)); app.use(utils.errorHandler); require('./routes/apiv2.coffee')(swagger, v2); diff --git a/src/utils.js b/src/utils.js index 4ff8f2a895..1fb45587af 100644 --- a/src/utils.js +++ b/src/utils.js @@ -6,10 +6,10 @@ var cluster = require("cluster"); module.exports.sendEmail = function(mailData) { var smtpTransport = nodemailer.createTransport("SMTP",{ - service: nconf.get('SMTP_SERVICE'), + service: nconf.get('SMTP_SERVICE'), auth: { - user: nconf.get('SMTP_USER'), - pass: nconf.get('SMTP_PASS') + user: nconf.get('SMTP_USER'), + pass: nconf.get('SMTP_PASS') } }); smtpTransport.sendMail(mailData, function(error, response){ @@ -33,8 +33,6 @@ module.exports.makeSalt = function() { return crypto.randomBytes(Math.ceil(len / 2)).toString('hex').substring(0, len); } - - /** * Load nconf and define default configuration values if config.json or ENV vars are not found */ @@ -44,25 +42,13 @@ module.exports.setupConfig = function(){ //.file('defaults', path.join(path.resolve(__dirname, '../config.json.example'))) .file('user', path.join(path.resolve(__dirname, '../config.json'))); -// var agent; -// if (process.env.NODE_ENV === 'development') { -// // Follow these instructions for profiling / debugging leaks -// // * https://developers.google.com/chrome-developer-tools/docs/heap-profiling -// // * https://developers.google.com/chrome-developer-tools/docs/memory-analysis-101 -// agent = require('webkit-devtools-agent'); -// var logging = require('./logging'); -// logging.info("To debug memory leaks:" + -// "\n\t(1) Run `kill -SIGUSR2 " + process.pid + "`" + -// "\n\t(2) open http://c4milo.github.com/node-webkit-agent/21.0.1180.57/inspector.html?host=localhost:1337&page=0"); -// } - - if (nconf.get('NODE_ENV') === "development") { + if (nconf.get('NODE_ENV') === "development") Error.stackTraceLimit = Infinity; - } - if (nconf.get('NODE_ENV') === 'production') require('newrelic'); + if (nconf.get('NODE_ENV') === 'production') + require('newrelic'); }; -module.exports.crashWorker = function(server) { +module.exports.crashWorker = function(server,mongoose) { return function(err, req, res, next) { if (!cluster.isMaster) { // make sure we close down within 30 seconds @@ -73,6 +59,7 @@ module.exports.crashWorker = function(server) { killtimer.unref(); // stop taking new requests. server.close(); + mongoose.connection.close(); cluster.worker.disconnect(); } next(err); From 2786b362067efdd245c3efa3a4891021fcfaab2d Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 3 Feb 2014 18:14:17 -0700 Subject: [PATCH 050/159] fix(mongoose): typo --- src/server.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server.js b/src/server.js index 81ffb155d4..04981a8147 100644 --- a/src/server.js +++ b/src/server.js @@ -44,9 +44,9 @@ if (cluster.isMaster && (isDev || isProd)) { logging.info('Connected with Mongoose'); }); // load schemas & models - require('./challenge'); - require('./group'); - require('./user'); + require('./models/challenge'); + require('./models/group'); + require('./models/user'); // ------------ Passport Configuration ------------ var passport = require('passport') From 9b3814575e5c2191fd9452ba7fd4a9f47bba6141 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 4 Feb 2014 09:49:49 -0700 Subject: [PATCH 051/159] perf(hall): use $gt in contributors.level index instead of $ne:null for better performance --- src/controllers/hall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/hall.js b/src/controllers/hall.js index 068efdfc3e..0edbd9e867 100644 --- a/src/controllers/hall.js +++ b/src/controllers/hall.js @@ -13,7 +13,7 @@ api.ensureAdmin = function(req, res, next) { } api.getHeroes = function(req,res,next) { - User.find({'contributor.level':{$ne:null}})// {$exists:true} causes terrible performance http://goo.gl/GCxzC9 + User.find({'contributor.level':{$gt:0}}) .select('contributor backer balance profile.name') .sort('-contributor.level') .exec(function(err, users){ From b89081dd413330f80fa0d468677e44bb8ee6b90e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 4 Feb 2014 20:18:27 +0100 Subject: [PATCH 052/159] refactor(bs3): misc fixes --- views/options/inventory/inventory.jade | 2 +- views/options/social/chat-box.jade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 2fadfdb606..3c22068dc2 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -3,7 +3,7 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') .span6.border-right h3.equipment-title=env.t('battleGear')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText')) + .glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText')) li.customize-menu.inventory-gear menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') div(ng-repeat='item in gear[klass]') diff --git a/views/options/social/chat-box.jade b/views/options/social/chat-box.jade index e2abc37737..3a135fc502 100644 --- a/views/options/social/chat-box.jade +++ b/views/options/social/chat-box.jade @@ -13,4 +13,4 @@ form.chat-form(ng-submit='postChat(group,message.content)') input.btn.chat-btn(type='submit', value=env.t('sendChat'), ng-class='{disabled: _sending == true}') td button.btn(type="button", ng-click='sync(group)', tooltip=env.t('toolTipMsg')) - i(class='pull-right icon-refresh') + span.glyphicon.glyphicon-refresh.pull-right From 379da419825d60b9fdcae0ba3729b6dda4645f1e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 4 Feb 2014 20:53:09 +0100 Subject: [PATCH 053/159] refactor(bs3): port notifications --- bower.json | 2 +- public/css/alerts.styl | 17 +++++++++++++- public/css/index.styl | 5 ----- public/js/controllers/notificationCtrl.js | 3 ++- public/js/services/notificationServices.js | 26 +++++++++++----------- 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/bower.json b/bower.json index feef1b4642..b3aa4eddab 100644 --- a/bower.json +++ b/bower.json @@ -28,7 +28,7 @@ "angular-bindonce": "~0.2.1", "bootstrap": "~3.1.0", "bootstrap-datepicker": "1.3.0", - "bootstrap-growl": "~1.1.0", + "bootstrap-growl": "git://github.com/ifightcrime/bootstrap-growl.git#master", "bootstrap-tour": "~0.8.1", "habitrpg-shared": "git://github.com/HabitRPG/habitrpg-shared.git#develop", "BrowserQuest": "https://github.com/mozilla/BrowserQuest.git", diff --git a/public/css/alerts.styl b/public/css/alerts.styl index 4b765329b1..1893e93389 100644 --- a/public/css/alerts.styl +++ b/public/css/alerts.styl @@ -16,6 +16,16 @@ .wide-popover max-width: 400px +#notification-area + position: fixed + top: 0 + right: 0px + z-index: 1061 + + .alert + padding-top: 8px + padding-bottom: 8px + // variables gpColor = #FBEFC0 @@ -86,6 +96,8 @@ borderDarken = 20% background-size: 18px width: 14px height: 14px + display: inline-block + vertical-align: middle .icon-silver background: url("/bower_components/habitrpg-shared/img/coin_single_silver.png") no-repeat @@ -93,6 +105,8 @@ borderDarken = 20% background-size: 18px width: 14px height: 14px + display: inline-block + vertical-align: middle .icon-death background: url("/bower_components/habitrpg-shared/img/sprites/dead.png") no-repeat @@ -100,7 +114,8 @@ borderDarken = 20% background-size: 14px width: 14px height: 14px - + display: inline-block + vertical-align: middle .undo-button z-index: 3000 diff --git a/public/css/index.styl b/public/css/index.styl index 85f913b1f4..129b692a25 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -146,11 +146,6 @@ div.tooltip-inner { #reset-modal z-index:1500 -#notification-area - position: fixed - top: 0 - right: 0px - z-index: 1061 a cursor: pointer diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index d72a11546f..775ab060c7 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -128,7 +128,8 @@ habitrpg.controller('NotificationCtrl', $rootScope.openModal('questCompleted', 'InventoryCtrl'); }); - $rootScope.$watch('party.quest.key && !party.quest.active && !questHold && party.quest.members[user._id] == undefined', function(after, before){ + // Quest invitation modal + $rootScope.$watch('party.quest.key && !party.quest.active && party.quest.members[user._id] == undefined', function(after, before){ if (after == before || after != true) return; $rootScope.openModal('questInvitation'); }); diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 7b4a48c817..1ce793794e 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -6,11 +6,11 @@ angular.module("notificationServices", []) function growl(html, type) { $.bootstrapGrowl(html, { ele: '#notification-area', - type: type, //(null, 'text', 'error', 'success', 'gp', 'xp', 'hp', 'lvl', 'death', 'mp', 'crit') + type: type || 'warning', //('info', 'text', 'error', 'success', 'gp', 'xp', 'hp', 'lvl', 'death', 'mp', 'crit') top_offset: 20, align: 'right', //('left', 'right', or 'center') width: 250, //(integer, or 'auto') - delay: 7000, + delay: 700000000, allow_dismiss: true, stackup_spacing: 10 // spacing between consecutive stacecked growls. }); @@ -25,11 +25,11 @@ angular.module("notificationServices", []) gold = Math.floor(absolute); silver = Math.floor((absolute - gold) * 100); if (gold && silver > 0) { - return "" + gold + " " + silver + " "; + return "" + gold + " " + silver + " "; } else if (gold > 0) { - return "" + gold + " "; + return "" + gold + " "; } else if (silver > 0) { - return "" + silver + " "; + return "" + silver + " "; } }; @@ -45,11 +45,11 @@ angular.module("notificationServices", []) coins: coins, hp: function(val) { // don't show notifications if user dead - growl(" " + sign(val) + " " + round(val) + " HP", 'hp'); + growl("  " + sign(val) + " " + round(val) + " HP", 'hp'); }, exp: function(val) { if (val < -50) return; // don't show when they level up (resetting their exp) - growl(" " + sign(val) + " " + round(val) + " XP", 'xp'); + growl("  " + sign(val) + " " + round(val) + " XP", 'xp'); }, gp: function(val, bonus) { growl(sign(val) + " " + coins(val - bonus), 'gp'); @@ -58,22 +58,22 @@ angular.module("notificationServices", []) growl(val); }, lvl: function(){ - growl(' Level Up!', 'lvl'); + growl('  Level Up!', 'lvl'); }, death: function(){ - growl(" Respawn!", "death"); + growl("  Respawn!", "death"); }, error: function(error){ - growl(" " + error, "error"); + growl("  " + error, "error"); }, mp: function(val) { - growl(" " + sign(val) + " " + round(val) + " MP", 'mp'); + growl("  " + sign(val) + " " + round(val) + " MP", 'mp'); }, crit: function(val) { - growl(" Critical Hit! Bonus: " + Math.round(val) + "%", 'crit'); + growl("  Critical Hit! Bonus: " + Math.round(val) + "%", 'crit'); }, drop: function(val) { - growl(" " + val, 'drop'); + growl("  " + val, 'drop'); } }; } From c663221229c8fb55a4a2632605613a11aa7b91b1 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 4 Feb 2014 21:27:05 +0100 Subject: [PATCH 054/159] refactor(bs3): misc fixes, use bootstrap own grid for tasks lists --- public/css/index.styl | 1 - public/css/responsive.styl | 61 ------ public/css/tasks.styl | 6 + public/js/services/notificationServices.js | 2 +- views/main/filters.jade | 56 +++--- views/shared/tasks/lists.jade | 215 +++++++++++---------- 6 files changed, 144 insertions(+), 197 deletions(-) delete mode 100644 public/css/responsive.styl diff --git a/public/css/index.styl b/public/css/index.styl index 129b692a25..e79adff584 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -17,7 +17,6 @@ @import "./inventory.styl" @import "./alerts.styl" @import "./helpers.styl" -@import "./responsive.styl" @import "./header.styl" @import "./filters.styl" @import "./scrollbars.styl" diff --git a/public/css/responsive.styl b/public/css/responsive.styl deleted file mode 100644 index c7200751f8..0000000000 --- a/public/css/responsive.styl +++ /dev/null @@ -1,61 +0,0 @@ -// widths -.full - width: 100%; -.half - width: 50%; -.third - width: 33.3333%; -.two-thirds - width: 66.6666%; -.quarter - width: 25%; -.three-quarters - width: 75%; -.fifth - width: 20%; -.two-fifths - width: 40%; -.three-fifths - width: 60%; -.four-fifths - width: 80%; -.sixth - width: 16.6667%; -.eighth - width: 12.5%; -.tenth - width: 10%; -.twelfth - width: 8.3333%; - -.grid - padding: 0 1.5em 1.5em 0 - letter-spacing: -4px - -.module - display: inline-block - letter-spacing: normal - vertical-align: top - width: 25% - padding: 0 0 1.5em 1.5em - -moz-box-sizing: border-box - box-sizing: border-box - -// at 960px when 4 columns really starts to break -@media (max-width: 60em) - .module - width: 50% - .task-column - max-height: 18em - overflow-y: scroll - -// at 600px when 2col starts breaking -@media (max-width: 37.5em) - .grid - padding-right: 0 - .module - width: 100% - padding-left: 0 - .task-column - max-height: none - overflow: visible \ No newline at end of file diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 22a460525d..963a425ea4 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -38,6 +38,12 @@ for $stage in $stages // 2. Columns & Tasks // =================== +.tasks-lists + .col-md-3 + padding-left: 10px // Override Bootstrap 15px padding + padding-right: 10px // Override Bootstrap 15px padding + margin-bottom: 15px + // main columns // ------------ .task-column diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 1ce793794e..991145f971 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -10,7 +10,7 @@ angular.module("notificationServices", []) top_offset: 20, align: 'right', //('left', 'right', or 'center') width: 250, //(integer, or 'auto') - delay: 700000000, + delay: 7000, allow_dismiss: true, stackup_spacing: 10 // spacing between consecutive stacecked growls. }); diff --git a/views/main/filters.jade b/views/main/filters.jade index 1d8c262c86..ba20fcc753 100644 --- a/views/main/filters.jade +++ b/views/main/filters.jade @@ -1,27 +1,29 @@ -.filters.col-md-12(ng-controller='FiltersCtrl') - .pull-left.filter-description - =env.t('tags') - |: - ul.nav.nav-pills - li - a(rel='tooltip', title=env.t('editTags'), ng-click='saveOrEdit()') - span.glyphicon(ng-class='{"glyphicon-ok": _editing, "glyphicon-pencil": !_editing}') - li(bindonce='user.tags', ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags') - .input-group(ng-show='_editing') - input.form-control.input-sm(type='text', ng-model='tag.name') - span.input-group-addon - a(ng-click='user.ops.deleteTag({params:{id:tag.id}})') - span.glyphicon.glyphicon-trash - a(ng-hide='_editing', ng-click='toggleFilter(tag)') - span.glyphicon.glyphicon-bullhorn(bo-if="tag.challenge") - markdown(ng-model='tag.name',style='display: inline-block') - li - form.form-inline(ng-show='_editing', ng-submit='createTag(_newTag)') - .input-group - input.form-control.input-sm(type='text', ng-model='_newTag', placeholder=env.t('newTag')) - span.input-group-addon(type='submit') - =env.t('add') - //
  • - li - a(rel='tooltip', title=env.t('clearFilters'), ng-click='user.filters = {}') - span.glyphicon.glyphicon-remove-sign +.container-fluid + .row + .filters.col-md-12(ng-controller='FiltersCtrl') + .pull-left.filter-description + =env.t('tags') + |: + ul.nav.nav-pills + li + a(rel='tooltip', title=env.t('editTags'), ng-click='saveOrEdit()') + span.glyphicon(ng-class='{"glyphicon-ok": _editing, "glyphicon-pencil": !_editing}') + li(bindonce='user.tags', ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags') + .input-group(ng-show='_editing') + input.form-control.input-sm(type='text', ng-model='tag.name') + span.input-group-addon + a(ng-click='user.ops.deleteTag({params:{id:tag.id}})') + span.glyphicon.glyphicon-trash + a(ng-hide='_editing', ng-click='toggleFilter(tag)') + span.glyphicon.glyphicon-bullhorn(bo-if="tag.challenge") + markdown(ng-model='tag.name',style='display: inline-block') + li + form.form-inline(ng-show='_editing', ng-submit='createTag(_newTag)') + .input-group + input.form-control.input-sm(type='text', ng-model='_newTag', placeholder=env.t('newTag')) + span.input-group-addon(type='submit') + =env.t('add') + //
  • + li + a(rel='tooltip', title=env.t('clearFilters'), ng-click='user.filters = {}') + span.glyphicon.glyphicon-remove-sign diff --git a/views/shared/tasks/lists.jade b/views/shared/tasks/lists.jade index 752cb4b9cf..b9a767ea41 100644 --- a/views/shared/tasks/lists.jade +++ b/views/shared/tasks/lists.jade @@ -2,122 +2,123 @@ // parts of the app. The alternative would be to create new scopes for different containing sections, but that // started to get unwieldy script(id='templates/habitrpg-tasks.html', type="text/ng-template") - .grid - .module(bindonce='lists', ng-repeat='list in lists', bo-class='{"rewards-module": list.type==="reward"}') - .task-column(class='{{list.type}}s') + .tasks-lists.container-fluid + .row + .col-md-3(bindonce='lists', ng-repeat='list in lists', bo-class='{"rewards-module": list.type==="reward"}') + .task-column(class='{{list.type}}s') - // Todos export/graph options - span.option-box.pull-right(bo-if='main && list.type=="todo"') - a.option-action(ng-show='obj.history.todos', ng-click='toggleChart("todos")', tooltip=env.t('progress')) - span.glyphicon.glyphicon-signal - //a.option-action(ng-href='/v1/users/{{user.id}}/calendar.ics?apiToken={{user.apiToken}}', tooltip='iCal') - a.option-action(ng-click='notPorted()', tooltip='iCal', ng-show='false') - span.glyphicon.glyphicon-calendar - // + // Todos export/graph options + span.option-box.pull-right(bo-if='main && list.type=="todo"') + a.option-action(ng-show='obj.history.todos', ng-click='toggleChart("todos")', tooltip=env.t('progress')) + span.glyphicon.glyphicon-signal + //a.option-action(ng-href='/v1/users/{{user.id}}/calendar.ics?apiToken={{user.apiToken}}', tooltip='iCal') + a.option-action(ng-click='notPorted()', tooltip='iCal', ng-show='false') + span.glyphicon.glyphicon-calendar + // - // Gold & Gems - span.option-box.pull-right.wallet(bo-if='main && list.type=="reward"') - .money - | {{Shared.gold(user.stats.gp)}} - span.shop_gold(tooltip=env.t('gold')) - .money - | {{Shared.silver(user.stats.gp)}} - span.shop_silver(tooltip=env.t('silver')) + // Gold & Gems + span.option-box.pull-right.wallet(bo-if='main && list.type=="reward"') + .money + | {{Shared.gold(user.stats.gp)}} + span.shop_gold(tooltip=env.t('gold')) + .money + | {{Shared.silver(user.stats.gp)}} + span.shop_silver(tooltip=env.t('silver')) - // Header - h2.task-column_title {{list.header}} + // Header + h2.task-column_title {{list.header}} - // Todo Chart - .todos-chart(bo-if='list.type == "todo"', ng-show='charts.todos') + // Todo Chart + .todos-chart(bo-if='list.type == "todo"', ng-show='charts.todos') - // Add New - form.addtask-form.form-inline.new-task-form(name='new{{list.type}}form', ng-hide='obj._locked || (list.showCompleted && list.type=="todo")', ng-submit='addTask(obj[list.type+"s"],list)') - span.addtask-field - input(type='text', ng-model='list.newTask', placeholder='{{list.placeHolder}}', required) - input.addtask-btn(type='submit', value='+', ng-disabled='new{{list.type}}form.$invalid') - hr + // Add New + form.addtask-form.form-inline.new-task-form(name='new{{list.type}}form', ng-hide='obj._locked || (list.showCompleted && list.type=="todo")', ng-submit='addTask(obj[list.type+"s"],list)') + span.addtask-field + input(type='text', ng-model='list.newTask', placeholder='{{list.placeHolder}}', required) + input.addtask-btn(type='submit', value='+', ng-disabled='new{{list.type}}form.$invalid') + hr - // Actual List - ul(class='{{list.type}}s main-list', ng-show='obj[list.type + "s"].length > 0', habitrpg-sortable) - include ./task + // Actual List + ul(class='{{list.type}}s main-list', ng-show='obj[list.type + "s"].length > 0', habitrpg-sortable) + include ./task - // Static Rewards - ul.items.rewards(ng-if='main && list.type=="reward" && user.flags.itemsEnabled') - li.task.reward-item(ng-repeat='item in itemStore',popover-trigger='mouseenter', popover-placement='top', popover='{{item.notes}}') - // right-hand side control buttons - .task-meta-controls - span.task-notes - span.glyphicon.glyphicon-comment - //left-hand size commands - .task-controls - a.money.btn-buy.item-btn(ng-click='buy(item)') - span.reward-cost {{item.value}} - span.shop_gold - // main content - span(bo-class='{"shop_{{item.key}} shop-sprite item-img": true}') - p.task-text {{item.text}} + // Static Rewards + ul.items.rewards(ng-if='main && list.type=="reward" && user.flags.itemsEnabled') + li.task.reward-item(ng-repeat='item in itemStore',popover-trigger='mouseenter', popover-placement='top', popover='{{item.notes}}') + // right-hand side control buttons + .task-meta-controls + span.task-notes + span.glyphicon.glyphicon-comment + //left-hand size commands + .task-controls + a.money.btn-buy.item-btn(ng-click='buy(item)') + span.reward-cost {{item.value}} + span.shop_gold + // main content + span(bo-class='{"shop_{{item.key}} shop-sprite item-img": true}') + p.task-text {{item.text}} - // Winter Event - ul.items.rewards(ng-if='main && list.type=="reward" && (user.items.special.snowball>0 || user.stats.buffs.snowball)') - li.task.reward-item(ng-if='user.items.special.snowball>0',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.snowball.notes}}') - .task-meta-controls - span.task-notes - span.glyphicon.glyphicon-comment - //left-hand size commands - .task-controls - a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.snowball)') - span.reward-cost {{user.items.special.snowball}} - span.shop_snowball(style='display:inline-block;vertical-align:top;') - // main content - p.task-text {{Content.spells.special.snowball.text}} - li.task.reward-item(ng-if='user.stats.buffs.snowball',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.salt.notes}}') - .task-meta-controls - span.task-notes - span.glyphicon.glyphicon-comment - //left-hand size commands - .task-controls - a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.salt)') - span.reward-cost {{Content.spells.special.salt.value}} - span.shop_gold - // main content - span.shop_salt.shop-sprite.item-img - p.task-text {{Content.spells.special.salt.text}} + // Winter Event + ul.items.rewards(ng-if='main && list.type=="reward" && (user.items.special.snowball>0 || user.stats.buffs.snowball)') + li.task.reward-item(ng-if='user.items.special.snowball>0',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.snowball.notes}}') + .task-meta-controls + span.task-notes + span.glyphicon.glyphicon-comment + //left-hand size commands + .task-controls + a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.snowball)') + span.reward-cost {{user.items.special.snowball}} + span.shop_snowball(style='display:inline-block;vertical-align:top;') + // main content + p.task-text {{Content.spells.special.snowball.text}} + li.task.reward-item(ng-if='user.stats.buffs.snowball',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.salt.notes}}') + .task-meta-controls + span.task-notes + span.glyphicon.glyphicon-comment + //left-hand size commands + .task-controls + a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.salt)') + span.reward-cost {{Content.spells.special.salt.value}} + span.shop_gold + // main content + span.shop_salt.shop-sprite.item-img + p.task-text {{Content.spells.special.salt.text}} - // Spells - ul.items(ng-if='main && list.type=="reward" && user.stats.class && !user.preferences.disableClasses') - li.task.reward-item(ng-repeat='(k,spell) in Content.spells[user.stats.class]', ng-if='user.stats.lvl >= spell.lvl',popover-trigger='mouseenter', popover-placement='top', popover='{{spell.notes}}') - .task-meta-controls - span.task-notes - span.glyphicon.glyphicon-comment - //left-hand size commands - .task-controls - a.money.btn-buy.item-btn(ng-click='castStart(spell)') - span.reward-cost - strong {{spell.mana}} - =env.t('mp') - // main content - span(ng-class='{"shop_{{spell.key}} shop-sprite item-img": true}') - p.task-text {{spell.text}} + // Spells + ul.items(ng-if='main && list.type=="reward" && user.stats.class && !user.preferences.disableClasses') + li.task.reward-item(ng-repeat='(k,spell) in Content.spells[user.stats.class]', ng-if='user.stats.lvl >= spell.lvl',popover-trigger='mouseenter', popover-placement='top', popover='{{spell.notes}}') + .task-meta-controls + span.task-notes + span.glyphicon.glyphicon-comment + //left-hand size commands + .task-controls + a.money.btn-buy.item-btn(ng-click='castStart(spell)') + span.reward-cost + strong {{spell.mana}} + =env.t('mp') + // main content + span(ng-class='{"shop_{{spell.key}} shop-sprite item-img": true}') + p.task-text {{spell.text}} - br + br - // Ads - div(bo-if='main && !user.purchased.ads && !user.purchased.plan.customerId && list.type!="reward"') - span.pull-right - a(ui-sref='options.settings.subscription', popover=env.t('removeAds'), popover-trigger='mouseenter') - span.glyphicon.glyphicon-remove - // Habit3 - ins.adsbygoogle(ng-init='initAds()', style='display: inline-block; width: 234px; height: 60px;', data-ad-client='ca-pub-3242350243827794', data-ad-slot='9529624576') + // Ads + div(bo-if='main && !user.purchased.ads && !user.purchased.plan.customerId && list.type!="reward"') + span.pull-right + a(ui-sref='options.settings.subscription', popover=env.t('removeAds'), popover-trigger='mouseenter') + span.glyphicon.glyphicon-remove + // Habit3 + ins.adsbygoogle(ng-init='initAds()', style='display: inline-block; width: 234px; height: 60px;', data-ad-client='ca-pub-3242350243827794', data-ad-slot='9529624576') - // Todo Tabs - div(bo-if='main && list.type=="todo"', bo-class='{"tabbable tabs-below": list.type=="todo"}') - div(ng-show='list.showCompleted') - .alert - =env.t('lotOfToDos') - button.task-action-btn.tile.spacious.bright(ng-click='user.ops.clearCompleted({})')=env.t('clearCompleted') - // remaining/completed tabs - ul.nav.nav-tabs - li(ng-class='{active: !list.showCompleted}') - a(ng-click='list.showCompleted = false')=env.t('remaining') - li(ng-class='{active: list.showCompleted}') - a(ng-click='list.showCompleted= true')=env.t('complete') \ No newline at end of file + // Todo Tabs + div(bo-if='main && list.type=="todo"', bo-class='{"tabbable tabs-below": list.type=="todo"}') + div(ng-show='list.showCompleted') + .alert + =env.t('lotOfToDos') + button.task-action-btn.tile.spacious.bright(ng-click='user.ops.clearCompleted({})')=env.t('clearCompleted') + // remaining/completed tabs + ul.nav.nav-tabs + li(ng-class='{active: !list.showCompleted}') + a(ng-click='list.showCompleted = false')=env.t('remaining') + li(ng-class='{active: list.showCompleted}') + a(ng-click='list.showCompleted= true')=env.t('complete') \ No newline at end of file From d711d61a1fd5918be30c41ee2ceb1fea56a49a6b Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 4 Feb 2014 21:53:23 +0100 Subject: [PATCH 055/159] refactor(bs3): re-enable two columns views for tablets --- public/css/tasks.styl | 18 ++++++++++++++---- views/shared/tasks/lists.jade | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 963a425ea4..bde1603316 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -39,10 +39,15 @@ for $stage in $stages // =================== .tasks-lists - .col-md-3 - padding-left: 10px // Override Bootstrap 15px padding - padding-right: 10px // Override Bootstrap 15px padding - margin-bottom: 15px + + .row + margin-left: -5px + margin-right: -5px + + .col-md-3 + padding-left: 10px // Override Bootstrap 15px padding + padding-right: 10px // Override Bootstrap 15px padding + margin-bottom: 15px // main columns // ------------ @@ -56,6 +61,11 @@ for $stage in $stages margin: 0 0 0.5em padding: 0 +// 50% width columns with scrollbars +@media (max-width: 960px) + .task-column + max-height: 18.6em + overflow-y: scroll // add new task form // ----------------- diff --git a/views/shared/tasks/lists.jade b/views/shared/tasks/lists.jade index b9a767ea41..be5f5d1d0f 100644 --- a/views/shared/tasks/lists.jade +++ b/views/shared/tasks/lists.jade @@ -4,7 +4,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") .tasks-lists.container-fluid .row - .col-md-3(bindonce='lists', ng-repeat='list in lists', bo-class='{"rewards-module": list.type==="reward"}') + .col-md-3.col-sm-6(bindonce='lists', ng-repeat='list in lists', bo-class='{"rewards-module": list.type==="reward"}') .task-column(class='{{list.type}}s') // Todos export/graph options From ccc1230828337c6c44c9ebe23dac6c92291b9b4d Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 4 Feb 2014 22:21:12 +0100 Subject: [PATCH 056/159] refactor(bs3): misc --- public/css/tasks.styl | 4 ++-- public/js/controllers/authCtrl.js | 10 ++++++---- views/shared/footer.jade | 10 +++++----- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/public/css/tasks.styl b/public/css/tasks.styl index bde1603316..35daa3e10a 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -61,8 +61,8 @@ for $stage in $stages margin: 0 0 0.5em padding: 0 -// 50% width columns with scrollbars -@media (max-width: 960px) +// 50% width columns with scrollbars for tablets +@media (min-width: 768px) and (max-width: 970px) .task-column max-height: 18.6em overflow-y: scroll diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 9c65ee3541..1312b40d35 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -5,8 +5,8 @@ */ angular.module('authCtrl', []) - .controller("AuthCtrl", ['$scope', '$rootScope', 'User', '$http', '$location', '$window','API_URL', - function($scope, $rootScope, User, $http, $location, $window, API_URL) { + .controller("AuthCtrl", ['$scope', '$rootScope', 'User', '$http', '$location', '$window','API_URL', '$modal', + function($scope, $rootScope, User, $http, $location, $window, API_URL, $modal) { var runAuth; var showedFacebookMessage; @@ -71,8 +71,10 @@ angular.module('authCtrl', []) if (User.authenticated()) { window.location.href = '/#/tasks'; } else { - // Using controller: 'AuthCtrl' it causes problems - $rootScope.openModal('login'); + $modal.open({ + templateUrl: 'modals/login.html' + // Using controller: 'AuthCtrl' it causes problems + }); } } diff --git a/views/shared/footer.jade b/views/shared/footer.jade index f5a1df5666..231ab211e0 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -1,14 +1,14 @@ footer.footer(ng-controller='FooterCtrl') .container .row - .col-md-3 + .col-sm-3 h4=env.t('footerMobile') ul.list-unstyled li a(href='https://itunes.apple.com/us/app/habitrpg/id689569235?mt=8', target='_blank')=env.t('mobileIOS') li a(href='https://play.google.com/store/apps/details?id=com.ocdevel.habitrpg', target='_blank')=env.t('mobileAndroid') - .col-md-3 + .col-sm-3 h4=env.t('footerCompany') ul.list-unstyled.list-unstyled if (!env.isFrontPage) @@ -28,7 +28,7 @@ footer.footer(ng-controller='FooterCtrl') a(href='/static/privacy')=env.t('companyPrivacy') li a(href='/static/terms')=env.t('companyTerms') - .col-md-3 + .col-sm-3 h4=env.t('footerCommunity') ul.list-unstyled li @@ -47,7 +47,7 @@ footer.footer(ng-controller='FooterCtrl') a(target='_blank', href='https://www.facebook.com/Habitrpg')=env.t('communityFacebook') li a(target='_blank', href='http://www.reddit.com/r/habitrpg/')=env.t('communityReddit') - .col-md-3 + .col-sm-3 if (env.NODE_ENV=='production') h4=env.t('footerSocial') .addthis_toolbox.addthis_default_style(addthis:url='https://habitrpg.com', addthis:title=env.t('socialTitle')) @@ -64,7 +64,7 @@ footer.footer(ng-controller='FooterCtrl') tr td a.addthis_button_google_plusone(g:plusone:size='medium') - else + else if(!env.isFrontPage) h4 Debug ul.list-unstyled li From 3fda08c366793c8fbcbf701a9594ae3b2fd8bbea Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 4 Feb 2014 22:39:08 -0600 Subject: [PATCH 057/159] fix(nodemon): Add another ignore for weirdsauce Windoze dev environments --- .nodemonignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.nodemonignore b/.nodemonignore index d104457dfc..5cfae9cb6a 100644 --- a/.nodemonignore +++ b/.nodemonignore @@ -8,3 +8,4 @@ CHANGELOG.md .git* *.log newrelic_agent.log +.bower-cache* From ce5edbee58376ab7376f231e7fb0100950d5e09c Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 5 Feb 2014 16:51:35 +0100 Subject: [PATCH 058/159] refactor(bs3): consistent style for modals --- public/css/index.styl | 70 +++++------ public/js/controllers/notificationCtrl.js | 2 +- public/js/controllers/rootCtrl.js | 4 +- views/shared/modals/achievements.jade | 10 +- views/shared/modals/buy-gems.jade | 4 +- views/shared/modals/classes.jade | 135 +++++++++++----------- views/shared/modals/death.jade | 25 ++-- views/shared/modals/drops.jade | 4 +- views/shared/modals/members.jade | 37 +++--- views/shared/modals/new-stuff.jade | 4 +- views/shared/modals/quests.jade | 8 +- views/shared/modals/rebirth.jade | 82 ++++++------- views/shared/modals/reroll.jade | 4 +- views/shared/modals/settings.jade | 73 ++++++------ 14 files changed, 237 insertions(+), 225 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index e79adff584..4cc2e94b8d 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -51,27 +51,25 @@ hr -------------------------------------------------- */ /* Bootstrap website boilerplate */ -.footer { - padding: 70px 0; - border-top: 1px solid #e5e5e5; - background-color: #f5f5f5; -} -.footer p { - margin-bottom: 0; - color: #777; -} -.footer-links { - margin: 10px 0; -} -.footer-links li { - display: inline; - margin-right: 10px; -} +.footer + padding: 70px 0 + border-top: 1px solid #e5e5e5 + background-color: #f5f5f5 + +.footer p + margin-bottom: 0 + color: #777 + +.footer-links + margin: 10px 0 + +.footer-links li + display: inline + margin-right: 10px /* Bootstrap overrides */ -div.tooltip-inner { - max-width: 300px; -} +div.tooltip-inner + max-width: 300px /* Customizations to make footer sticky */ /*html, body {height: 100%;}*/ @@ -79,11 +77,9 @@ div.tooltip-inner { z-index:-1 padding: 0 15px // Required by Bootstrap 3 when using .container-fluid -@media (max-width: 600px) { - #wrap { +@media (max-width: 600px) + #wrap margin-top: 0 - } -} /* Gems -------------------------------------------------- */ @@ -102,17 +98,17 @@ div.tooltip-inner { position: relative; .gem-cost::before - content: ""; - display: block; - width: 0; - height: 0; - border: 6px solid #D4D4D4; - border-color: transparent #D4D4D4 transparent transparent; - position: absolute; - right: 100%; - margin-right: 0; - top: 50%; - margin-top: -6px; + content: "" + display: block + width: 0 + height: 0 + border: 6px solid #D4D4D4 + border-color: transparent #D4D4D4 transparent transparent + position: absolute + right: 100% + margin-right: 0 + top: 50% + margin-top: -6px .gem-cost::after content: ""; @@ -135,6 +131,9 @@ div.tooltip-inner { overflow-y: auto max-height: 400px // Taken from Bootstrap 2.3.2 css, may need to change + h5 + font-weight: 700 + // notification-character used only by death modal's figure, move .death-modal // a .modal-body margin: 10px @@ -152,6 +151,9 @@ a a span.glyphicon color: #333 // Takes base color from bootstrap +.muted + color: #999 + .btn margin-right: 5px diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index 775ab060c7..8e568206e4 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -105,7 +105,7 @@ habitrpg.controller('NotificationCtrl', // Classes modal $rootScope.$watch('!user.flags.classSelected && user.stats.lvl >= 10', function(after, before){ if(after){ - $rootScope.openModal('chooseClass', 'UserCtrl'); + $rootScope.openModal('chooseClass', 'UserCtrl', undefined, false, 'static'); } }); diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index 7cdc782ea1..8bd97d6270 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -71,8 +71,8 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ templateUrl: 'modals/' + template + '.html', controller: controller, // optional scope: scope, // optional - keyboard: keyboard, // optional - backdrop: backdrop // optional + keyboard: (keyboard === undefined ? true : keyboard), // optional + backdrop: (backdrop === undefined ? true : backdrop) // optional }); } diff --git a/views/shared/modals/achievements.jade b/views/shared/modals/achievements.jade index 6d1f1f4855..3693a22d43 100644 --- a/views/shared/modals/achievements.jade +++ b/views/shared/modals/achievements.jade @@ -1,7 +1,7 @@ // Streak script(id='modals/achievements/streak.html', type='text/ng-template') .modal-header - h3=env.t('modalAchievement') + h4=env.t('modalAchievement') .modal-body .achievement.achievement-thermometer =env.t('streakerAchievement') @@ -11,7 +11,7 @@ script(id='modals/achievements/streak.html', type='text/ng-template') // Max Gear script(id='modals/achievements/ultimateGear.html', type='text/ng-template') .modal-header - h3=env.t('modalAchievement') + h4=env.t('modalAchievement') .modal-body .achievement.achievement-armor =env.t('gearAchievement') @@ -21,7 +21,7 @@ script(id='modals/achievements/ultimateGear.html', type='text/ng-template') // Beast Master script(id='modals/achievements/beastMaster.html', type='text/ng-template') .modal-header - h3=env.t('modalAchievement') + h4=env.t('modalAchievement') .modal-body p .achievement.achievement-rat @@ -33,7 +33,7 @@ script(id='modals/achievements/beastMaster.html', type='text/ng-template') // activated by user.flags.contributor script(id='modals/achievements/contributor.html', type='text/ng-template') .modal-header - h3=env.t('modalContribAchievement') + h4=env.t('modalContribAchievement') .modal-body .npc_justin.float-left p @@ -45,7 +45,7 @@ script(id='modals/achievements/contributor.html', type='text/ng-template') //Rebirth script(id='modals/achievements/rebirth.html', type='text/ng-template') .modal-header - h3=env.t('modalAchievement') + h4=env.t('modalAchievement') .modal-body .achievement.achievement-sun =env.t('rebirthAchievement', {number: "{{user.achievements.rebirths}}", level: "{{user.achievements.rebirthLevel}}"}) diff --git a/views/shared/modals/buy-gems.jade b/views/shared/modals/buy-gems.jade index 03a610de65..fface7fe89 100644 --- a/views/shared/modals/buy-gems.jade +++ b/views/shared/modals/buy-gems.jade @@ -19,12 +19,12 @@ script(id='modals/buyGems.html', type='text/ng-template') =env.t('USD') tr td - .btn.btn-primary(ng-click='showStripe()',style='margin-left:10px;')=env.t('payWithCard') + .btn.btn-primary(ng-click='showStripe()')=env.t('payWithCard') div(style='float:left;') //-script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-env="#{env.NODE_ENV == 'production' ? '' : 'sandbox'}", data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') //script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') p - small.muted(style='line-height:10px;')=env.t('payNote') + small.muted=env.t('payNote') div(ng-include="'partials/options.settings.subscription.html'") diff --git a/views/shared/modals/classes.jade b/views/shared/modals/classes.jade index 870ea0e93d..089eaf7e34 100644 --- a/views/shared/modals/classes.jade +++ b/views/shared/modals/classes.jade @@ -1,74 +1,75 @@ script(type='text/ng-template', id='modals/chooseClass.html') .modal-header - h3=env.t('chooseClass1') + h4=env.t('chooseClass1') a(href='http://habitrpg.wikia.com/wiki/Class_System' target='_blank')=env.t('chooseClass2') .modal-body.select-class - .row-fluid - .span3(ng-click='selectedClass = "warrior"') - h5 - a(href='http://habitrpg.wikia.com/wiki/Warrior' target='_blank')=env.t('warrior') - figure.herobox(ng-class='{"selected-class": selectedClass=="warrior"}') - .character-sprites - span(class='skin_{{user.preferences.skin}}') - span(class='{{user.preferences.size}}_armor_warrior_5') - span(class='head_0') - span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') - span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') - span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') - span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') - span(class='head_warrior_5') - span(class='shield_warrior_5') - span(class='weapon_warrior_6') - .span3(ng-click='selectedClass = "wizard"') - h5 - a(href='http://habitrpg.wikia.com/wiki/Mage' target='_blank')=env.t('mage') - figure.herobox(ng-class='{"selected-class": selectedClass=="wizard"}') - .character-sprites - span(class='skin_{{user.preferences.skin}}') - span(class='{{user.preferences.size}}_armor_wizard_5') - span(class='head_0') - span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') - span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') - span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') - span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') - span(class='head_wizard_5') - span(class='shield_wizard_5') - span(class='weapon_wizard_6') - .span3(ng-click='selectedClass = "rogue"') - h5 - a(href='http://habitrpg.wikia.com/wiki/Rogue' target='_blank')=env.t('rogue') - figure.herobox(ng-class='{"selected-class": selectedClass=="rogue"}') - .character-sprites - span(class='skin_{{user.preferences.skin}}') - span(class='{{user.preferences.size}}_armor_rogue_5') - span(class='head_0') - span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') - span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') - span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') - span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') - span(class='head_rogue_5') - span(class='shield_rogue_6') - span(class='weapon_rogue_6') - .span3(ng-click='selectedClass = "healer"') - h5 - a(href='http://habitrpg.wikia.com/wiki/Healer' target='_blank')=env.t('healer') - figure.herobox(ng-class='{"selected-class": selectedClass=="healer"}') - .character-sprites - span(class='skin_{{user.preferences.skin}}') - span(class='{{user.preferences.size}}_armor_healer_5') - span(class='head_0') - span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') - span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') - span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') - span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') - span(class='head_healer_5') - span(class='shield_healer_5') - span(class='weapon_healer_6') - br - .well(ng-show='selectedClass=="warrior"')=env.t('warriorText') - .well(ng-show='selectedClass=="wizard"')=env.t('mageText') - .well(ng-show='selectedClass=="rogue"')=env.t('rogueText') - .well(ng-show='selectedClass=="healer"')=env.t('healerText') + .container-fluid + .row + .col-md-3(ng-click='selectedClass = "warrior"') + h5 + a(href='http://habitrpg.wikia.com/wiki/Warrior' target='_blank')=env.t('warrior') + figure.herobox(ng-class='{"selected-class": selectedClass=="warrior"}') + .character-sprites + span(class='skin_{{user.preferences.skin}}') + span(class='{{user.preferences.size}}_armor_warrior_5') + span(class='head_0') + span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') + span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') + span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') + span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') + span(class='head_warrior_5') + span(class='shield_warrior_5') + span(class='weapon_warrior_6') + .col-md-3(ng-click='selectedClass = "wizard"') + h5 + a(href='http://habitrpg.wikia.com/wiki/Mage' target='_blank')=env.t('mage') + figure.herobox(ng-class='{"selected-class": selectedClass=="wizard"}') + .character-sprites + span(class='skin_{{user.preferences.skin}}') + span(class='{{user.preferences.size}}_armor_wizard_5') + span(class='head_0') + span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') + span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') + span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') + span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') + span(class='head_wizard_5') + span(class='shield_wizard_5') + span(class='weapon_wizard_6') + .col-md-3(ng-click='selectedClass = "rogue"') + h5 + a(href='http://habitrpg.wikia.com/wiki/Rogue' target='_blank')=env.t('rogue') + figure.herobox(ng-class='{"selected-class": selectedClass=="rogue"}') + .character-sprites + span(class='skin_{{user.preferences.skin}}') + span(class='{{user.preferences.size}}_armor_rogue_5') + span(class='head_0') + span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') + span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') + span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') + span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') + span(class='head_rogue_5') + span(class='shield_rogue_6') + span(class='weapon_rogue_6') + .col-md-3(ng-click='selectedClass = "healer"') + h5 + a(href='http://habitrpg.wikia.com/wiki/Healer' target='_blank')=env.t('healer') + figure.herobox(ng-class='{"selected-class": selectedClass=="healer"}') + .character-sprites + span(class='skin_{{user.preferences.skin}}') + span(class='{{user.preferences.size}}_armor_healer_5') + span(class='head_0') + span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}') + span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}') + span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}') + span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}') + span(class='head_healer_5') + span(class='shield_healer_5') + span(class='weapon_healer_6') + br + .well(ng-show='selectedClass=="warrior"')=env.t('warriorText') + .well(ng-show='selectedClass=="wizard"')=env.t('mageText') + .well(ng-show='selectedClass=="rogue"')=env.t('rogueText') + .well(ng-show='selectedClass=="healer"')=env.t('healerText') .modal-footer button.btn.btn-small.btn-danger.cancel(ng-click='user.ops.disableClasses({}); $close()', popover-placement='top', popover-trigger='mouseenter', popover=env.t('optOutText'))=env.t('optOut') diff --git a/views/shared/modals/death.jade b/views/shared/modals/death.jade index 34f58cd776..4c756524d7 100644 --- a/views/shared/modals/death.jade +++ b/views/shared/modals/death.jade @@ -1,15 +1,16 @@ //div(modal='user.stats.hp <= 0', options='{backdrop:true, keyboard:false, backdropClick:false}') script(type='text/ng-template', id='modals/death.html') .modal-body.death-modal - .row - .col-md-3 - figure.notification-character - .GrimReaper - .col-md-9 - h2=env.t('youDied') - .row - .col-md-3 - p - a.btn.btn-danger.btn-large(ng-click='user.ops.revive({}); $close()')=env.t('continue') - .col-md-9 - p=env.t('dieText') + .container-fluid + .row + .col-md-3 + figure.notification-character + .GrimReaper + .col-md-9 + h2=env.t('youDied') + .row + .col-md-3 + p + a.btn.btn-danger.btn-large(ng-click='user.ops.revive({}); $close()')=env.t('continue') + .col-md-9 + p=env.t('dieText') diff --git a/views/shared/modals/drops.jade b/views/shared/modals/drops.jade index 9850d51252..a7904187a0 100644 --- a/views/shared/modals/drops.jade +++ b/views/shared/modals/drops.jade @@ -1,9 +1,9 @@ script(type='text/ng-template', id='modals/dropsEnabled.html') .modal-header - h3=env.t('dropsEnabled') + h4=env.t('dropsEnabled') .modal-body p - span.item-drop-icon(class='Pet_Egg_Wolf', style='margin-left: 0px') + span.item-drop-icon(class='Pet_Egg_Wolf') span!=env.t('firstDrop', {eggText: "{{Content.eggs.Wolf.text}}", eggNotes: "{{Content.eggs.Wolf.notes}}"}) br p diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index 964776aaad..da90f985d5 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -1,25 +1,26 @@ script(type='text/ng-template', id='modals/member.html') .modal-header(bindonce='profile') - h3 + h4 span {{profile.profile.name}} span(ng-if='profile.contributor.level') - {{contribText(profile.contributor, profile.backer)}} .modal-body(bindonce='profile') - .row-fluid - .span6 - img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') - markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') - ul.muted.unstyled(ng-if='profile.auth.timestamps', style='margin-top:10px;') - li {{profile._id}} - li(ng-show='profile.auth.timestamps.created')=env.t('memberSince') - | {{timestamp(profile.auth.timestamps.created)}} - - li(ng-show='profile.auth.timestamps.loggedin')=env.t('lastLoggedIn') - | {{timestamp(profile.auth.timestamps.loggedin)}} - - h3=env.t('stats') - .label.label-info {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[profile.stats.class] }} - include ../profiles/stats - .span6 - include ../header/avatar - h3 Achievements - include ../profiles/achievements + .container-fluid + .row + .col-md-6 + img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') + markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') + ul.muted.list-unstyled(ng-if='profile.auth.timestamps', style='margin-top:10px;') + li {{profile._id}} + li(ng-show='profile.auth.timestamps.created')=env.t('memberSince') + | {{timestamp(profile.auth.timestamps.created)}} - + li(ng-show='profile.auth.timestamps.loggedin')=env.t('lastLoggedIn') + | {{timestamp(profile.auth.timestamps.loggedin)}} - + h3=env.t('stats') + .label.label-info {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[profile.stats.class] }} + include ../profiles/stats + .col-md-6 + include ../header/avatar + h3 Achievements + include ../profiles/achievements .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('ok') \ No newline at end of file diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index d8bbbaf918..083cd7eac0 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -1,7 +1,7 @@ //-div(modal='!user.flags.mathUpdates') script(type='text/ng-template', id='modals/mathUpdates.html') .modal-header - h3 Math Updates + h4 Math Updates .modal-body .npc_tyler.pull-left(style='margin-right:10px') p Hey all, Tyler here. Sorry for the rocky numbers (Exp, GP, etc) with the Class System roll-out! We're tweaking the math today, and things should be mostly finalized by tomorrow. Follow our progress here, and please do chime in! @@ -14,7 +14,7 @@ script(type='text/ng-template', id='modals/mathUpdates.html') script(type='text/ng-template', id='modals/newStuff.html') .modal-header - h3 New Stuff! + h4 New Stuff! .modal-body.new-stuff-modal table tr diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index 0efc6be7f3..a7e2e5e451 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -13,7 +13,7 @@ script(id='partials/options.social.party.quest-rewards.html', type='text/ng-temp script(type='text/ng-template', id='modals/questCompleted.html') .modal-header - h3 "{{Content.quests[user.party.quest.completed].text}}" + h4 "{{Content.quests[user.party.quest.completed].text}}" =env.t('completed') .modal-body p {{Content.quests[user.party.quest.completed].completion}} @@ -23,7 +23,7 @@ script(type='text/ng-template', id='modals/questCompleted.html') script(type='text/ng-template', id='modals/showQuest.html') .modal-header - h3 {{selectedQuest.text}} + h4 {{selectedQuest.text}} .modal-body .pull-right(class='quest_{{selectedQuest.key}}') div(ng-bind-html='selectedQuest.notes') @@ -38,7 +38,7 @@ script(type='text/ng-template', id='modals/showQuest.html') script(type='text/ng-template', id='modals/buyQuest.html') .modal-header - h3 {{selectedQuest.text}} + h4 {{selectedQuest.text}} .modal-body .pull-right(class='quest_{{selectedQuest.key}}') div(ng-bind-html='selectedQuest.notes') @@ -49,7 +49,7 @@ script(type='text/ng-template', id='modals/buyQuest.html') script(type='text/ng-template', id='modals/questInvitation.html') .modal-header - h3=env.t('questInvitation') + h4=env.t('questInvitation') | {{Content.quests[party.quest.key].text}} .modal-body div(ng-bind-html='Content.quests[party.quest.key].notes') diff --git a/views/shared/modals/rebirth.jade b/views/shared/modals/rebirth.jade index 270533dbec..4eeb07f7df 100644 --- a/views/shared/modals/rebirth.jade +++ b/views/shared/modals/rebirth.jade @@ -1,46 +1,46 @@ // Created by Sabe on 12/22/13. script(type='text/ng-template', id='modals/rebirthEnabled.html') - .modal-header - h3=env.t('rebirthNew') - .modal-body - .rebirth_orb.pull-left(style='margin-right: 5px') - p - span=env.t('rebirthUnlock') - .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('close') + .modal-header + h4=env.t('rebirthNew') + .modal-body + .rebirth_orb.pull-left(style='margin-right: 5px') + p + span=env.t('rebirthUnlock') + .modal-footer + button.btn.btn-default.cancel(ng-click='$close()')=env.t('close') script(type='text/ng-template', id='modals/rebirth.html') - .modal-header - h3=env.t('rebirthBegin') - .modal-body - include ../gems - .rebirth_orb.pull-left(style='margin-right: 5px') - p=env.t('rebirthStartOver') - br - .unordered - li=env.t('rebirthAdvList1') - li=env.t('rebirthAdvList2') - li=env.t('rebirthAdvList3') - li=env.t('rebirthAdvList4') - br - p=env.t('rebirthInherit') - .unordered - li=env.t('rebirthInList1') - li=env.t('rebirthInList2') - li=env.t('rebirthInList3') - li=env.t('rebirthInList4') - li=env.t('rebirthInList5') - br - .achievement-sun.pull-left(style='margin-right: 5px') - p=env.t('rebirthEarnAchievement') - .modal-footer - button.btn.btn-large.cancel(ng-click='$close()')=env.t('neverMind') - span(ng-if='user.balance < 2') - a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') - span.gem-cost=env.t('notEnoughGems') - span(ng-if='user.balance >= 2', ng-controller='SettingsCtrl') - a.btn.btn-danger.btn-large(ng-click='$close(); rebirth()')=env.t('beReborn') - span.gem-cost - | 8  - =env.t('gems') + .modal-header + h4=env.t('rebirthBegin') + .modal-body + include ../gems + .rebirth_orb.pull-left(style='margin-right: 5px') + p=env.t('rebirthStartOver') + br + ul.list-unstyled + li=env.t('rebirthAdvList1') + li=env.t('rebirthAdvList2') + li=env.t('rebirthAdvList3') + li=env.t('rebirthAdvList4') + br + p=env.t('rebirthInherit') + ul.list-unstyled + li=env.t('rebirthInList1') + li=env.t('rebirthInList2') + li=env.t('rebirthInList3') + li=env.t('rebirthInList4') + li=env.t('rebirthInList5') + br + .achievement-sun.pull-left(style='margin-right: 5px') + p=env.t('rebirthEarnAchievement') + .modal-footer + button.btn.btn-default.btn-large.cancel(ng-click='$close()')=env.t('neverMind') + span(ng-if='user.balance < 2') + a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') + span.gem-cost=env.t('notEnoughGems') + span(ng-if='user.balance >= 2', ng-controller='SettingsCtrl') + a.btn.btn-danger.btn-large(ng-click='$close(); rebirth()')=env.t('beReborn') + span.gem-cost + | 8  + =env.t('gems') diff --git a/views/shared/modals/reroll.jade b/views/shared/modals/reroll.jade index 2840418ade..f01d53e4ea 100644 --- a/views/shared/modals/reroll.jade +++ b/views/shared/modals/reroll.jade @@ -1,13 +1,13 @@ // Re-Roll modal script(type='text/ng-template', id='modals/reroll.html') .modal-header - h3=env.t('fortify') + h4=env.t('fortify') .modal-body include ../gems p=env.t('fortifyText') .modal-footer - button.btn.btn-large.cancel(ng-click='$close()')=env.t('neverMind') + button.btn.btn-default.btn-large.cancel(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 1') a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') diff --git a/views/shared/modals/settings.jade b/views/shared/modals/settings.jade index 644c0a60e3..149d39d6cf 100644 --- a/views/shared/modals/settings.jade +++ b/views/shared/modals/settings.jade @@ -1,6 +1,6 @@ script(type='text/ng-template', id='modals/reset.html') .modal-header - h3=env.t('resetAccount') + h4=env.t('resetAccount') .modal-body p=env.t('resetText1') p=env.t('resetText2') @@ -10,49 +10,56 @@ script(type='text/ng-template', id='modals/reset.html') script(type='text/ng-template', id='modals/restore.html') .modal-header - h3=env.t('fixValues') + h4=env.t('fixValues') .modal-body p=env.t('fixValuesText1') p=env.t('fixValuesText2') - div.restore-options - 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='$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='$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='$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='$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='$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='$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') + form.form-horizontal + h3=env.t('stats') + .form-group + .col-md-6 + input.form-control(type='number', step="any", data-for='stats.hp', ng-model='$parent.restoreValues.stats.hp') + label.control-label=env.t('health') + .form-group + .col-md-6 + input.form-control(type='number', step="any", data-for='stats.exp', ng-model='$parent.restoreValues.stats.exp') + label.control-label=env.t('experience') + .form-group + .col-md-6 + input.form-control(type='number', step="any", data-for='stats.gp', ng-model='$parent.restoreValues.stats.gp') + //input.form-control(type='number', step="any", data-for='stats.gp', ng-model='restoreValues.stats.gp',disabled) + label.control-label=env.t('gold') + //-p.alert + small=env.t('disabledWinterEvent') + .form-group + .col-md-6 + input.form-control(type='number', step="any", data-for='stats.mp', ng-model='$parent.restoreValues.stats.mp') + label.control-label=env.t('mana') + .form-group + .col-md-6 + input.form-control(type='number', data-for='stats.lvl', ng-model='$parent.restoreValues.stats.lvl') + label.control-label=env.t('level') + h3=env.t('achievements') + .form-group + .col-md-6 + input.form-control(type='number', data-for='achievements.streak', ng-model='$parent.restoreValues.achievements.streak') + label.control-label=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='restore(); $close();')=env.t('saveAndClose') script(type='text/ng-template', id='modals/delete.html') .modal-header - h3=env.t('deleteAccount') + h4=env.t('deleteAccount') .modal-body p!=env.t('deleteText') - p - input(type='text', ng-model='_deleteAccount') + br + .row + .col-md-6 + input.form-control(type='text', ng-model='_deleteAccount') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('neverMind') button.btn.btn-danger.btn-small(ng-disabled='_deleteAccount != "DELETE"', ng-click='$close(); delete()')=env.t('deleteDo') From 5d4d82ad51ab1d416fe78cf60e83b48c27e22e71 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 5 Feb 2014 19:05:42 +0100 Subject: [PATCH 059/159] refactor(bs3): port options (profile, inventory, social (groups and hall)) and misc --- public/css/game-pane.styl | 15 +- public/css/index.styl | 16 +- public/css/tasks.styl | 6 - public/js/services/notificationServices.js | 4 +- views/options/index.jade | 57 ++-- views/options/inventory/inventory.jade | 264 ++++++++--------- views/options/inventory/stable.jade | 158 +++++----- views/options/profile.jade | 206 ++++++------- views/options/social/chat-box.jade | 28 +- views/options/social/chat-message.jade | 6 +- views/options/social/create-group.jade | 48 ++-- views/options/social/group.jade | 317 +++++++++++---------- views/options/social/hall.jade | 116 ++++---- views/options/social/index.jade | 5 +- views/options/social/tavern.jade | 244 ++++++++-------- views/shared/profiles/achievements.jade | 245 ++++++++-------- views/shared/tasks/task.jade | 4 +- 17 files changed, 865 insertions(+), 874 deletions(-) diff --git a/public/css/game-pane.styl b/public/css/game-pane.styl index 346e86f44c..b345f20a99 100644 --- a/public/css/game-pane.styl +++ b/public/css/game-pane.styl @@ -8,21 +8,22 @@ color #fff background-color #51a351 -.tavern-pane - position relative - height 250px - .chat-form - position: relative - z-index: 10 + margin-bottom: 10px + + textarea + margin-bottom: 5px .chat-message .chat-plus-one opacity: 0 + background-color: #eee + padding: 3px 3px 0px 3px .chat-message:hover .chat-plus-one opacity: 1 + color: #999 .tavern-chat, .party-chat - + li padding-top:15px padding-bottom:15px diff --git a/public/css/index.styl b/public/css/index.styl index 4cc2e94b8d..f0ae049a29 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -67,10 +67,6 @@ hr display: inline margin-right: 10px -/* Bootstrap overrides */ -div.tooltip-inner - max-width: 300px - /* Customizations to make footer sticky */ /*html, body {height: 100%;}*/ #wrap @@ -151,6 +147,9 @@ a a span.glyphicon color: #333 // Takes base color from bootstrap +a.label + color: #fff + .muted color: #999 @@ -165,15 +164,6 @@ a span.glyphicon margin-left: 10px; padding-left: 10px; -.inline-modal - position: relative - top: auto; - left: auto - right: auto - margin: 0 auto 20px - z-index: 1 - max-width: 100% - .buy-gems .nav-tabs margin-top: 0.5em diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 35daa3e10a..5175732a56 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -33,8 +33,6 @@ for $stage in $stages .reward background-color: white - - // 2. Columns & Tasks // =================== @@ -145,10 +143,6 @@ for $stage in $stages height:1.5em background-size:1.5em -// task due date (for to-dos) -.task-date - font-size: 70% - .habit-wide .task-text padding-left: 7em diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 991145f971..3b6cb82284 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -6,7 +6,7 @@ angular.module("notificationServices", []) function growl(html, type) { $.bootstrapGrowl(html, { ele: '#notification-area', - type: type || 'warning', //('info', 'text', 'error', 'success', 'gp', 'xp', 'hp', 'lvl', 'death', 'mp', 'crit') + type: type || 'warning', //('info', 'text', 'warning', 'success', 'gp', 'xp', 'hp', 'lvl', 'death', 'mp', 'crit') top_offset: 20, align: 'right', //('left', 'right', or 'center') width: 250, //(integer, or 'auto') @@ -64,7 +64,7 @@ angular.module("notificationServices", []) growl("  Respawn!", "death"); }, error: function(error){ - growl("  " + error, "error"); + growl("  " + error, "danger"); }, mp: function(val) { growl("  " + sign(val) + " " + round(val) + " MP", 'mp'); diff --git a/views/options/index.jade b/views/options/index.jade index 9ea9ad4fe2..421f0adfe9 100644 --- a/views/options/index.jade +++ b/views/options/index.jade @@ -4,33 +4,34 @@ include ./inventory/index include ./settings script(id='partials/options.html', type="text/ng-template") - .grid - .module.full-width - span.option-box.pull-right.wallet - include ../shared/gems + .container-fluid + .row + .col-md-12 + span.option-box.pull-right.wallet + include ../shared/gems - ul.nav.nav-tabs - li(ng-class="{ active: $state.includes('options.profile') }") - a(ui-sref='options.profile') - span.glyphicon.glyphicon-user - |   - =env.t('profile') - li(ng-class="{ active: $state.includes('options.social') }") - a(ui-sref='options.social') - span.glyphicon.glyphicon-heart - |   - =env.t('social') - li(ng-class="{ active: $state.includes('options.inventory') }", ng-if='user.flags.dropsEnabled') - a(ui-sref='options.inventory') - span.glyphicon.glyphicon-gift - |   - =env.t('inventory') - li(ng-class="{ active: $state.includes('options.settings') }") - a(ui-sref='options.settings') - span.glyphicon.glyphicon-wrench - |   - =env.t('settings') + ul.nav.nav-tabs + li(ng-class="{ active: $state.includes('options.profile') }") + a(ui-sref='options.profile') + span.glyphicon.glyphicon-user + |   + =env.t('profile') + li(ng-class="{ active: $state.includes('options.social') }") + a(ui-sref='options.social') + span.glyphicon.glyphicon-heart + |   + =env.t('social') + li(ng-class="{ active: $state.includes('options.inventory') }", ng-if='user.flags.dropsEnabled') + a(ui-sref='options.inventory') + span.glyphicon.glyphicon-gift + |   + =env.t('inventory') + li(ng-class="{ active: $state.includes('options.settings') }") + a(ui-sref='options.settings') + span.glyphicon.glyphicon-wrench + |   + =env.t('settings') - .tab-content - .tab-pane.active - div(ui-view) + .tab-content + .tab-pane.active + div(ui-view) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 3c22068dc2..8e2237857f 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -1,146 +1,148 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') - .row-fluid - .span6.border-right - h3.equipment-title=env.t('battleGear') -   - .glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText')) - li.customize-menu.inventory-gear - menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') - div(ng-repeat='item in gear[klass]') - button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}') - .span6 - h3.equipment-title=env.t('costume') -   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('costumeText')) - label.checkbox.inline(style="margin-left: 20px;") - input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') - =env.t('useCostume') - li.customize-menu(ng-if='user.preferences.costume') - menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') - div(ng-repeat='item in gear[klass]') - button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{type:"costume", key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.costume[item.type] == item.key}') + .container-fluid + .row + .col-md-6.border-right + h3.equipment-title=env.t('battleGear') +   + .glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('battleGearText')) + li.customize-menu.inventory-gear + menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') + div(ng-repeat='item in gear[klass]') + button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}') + .col-md-6 + h3.equipment-title=env.t('costume') +   + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('costumeText')) + label.checkbox.inline(style="margin-left: 20px;") + input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') + =env.t('useCostume') + li.customize-menu(ng-if='user.preferences.costume') + menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') + div(ng-repeat='item in gear[klass]') + button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({params:{type:"costume", key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.costume[item.type] == item.key}') script(type='text/ng-template', id='partials/options.inventory.drops.html') - .row-fluid - .span6.border-right - h2=env.t('inventory') - p.well=env.t('inventoryText') - menu.inventory-list(type='list') - - li.customize-menu - menu.pets-menu(label=(env.t('eggs') + ' ({{eggCount}})')) - p.muted(ng-show='eggCount < 1')=env.t('noEggs') - div(ng-repeat='(egg,points) in ownedItems(user.items.eggs)') - //TODO move positioning this styling to css - button.customize-option(popover='{{Content.eggs[egg].notes}}', popover-title='{{Content.eggs[egg].text}} Egg', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseEgg(egg)', class='Pet_Egg_{{egg}}', ng-class='{selectableInventory: selectedPotion && !(user.items.pets[egg+"-"+selectedPotion.key]>0)}') - .badge.badge-info.stack-count {{points}} - //-p {{Content.eggs[egg].text}} - - li.customize-menu - menu.hatchingPotion-menu(label=(env.t('hatchingPotions') + ' ({{potCount}})')) - p.muted(ng-show='potCount < 1')=env.t('noHatchingPotions') - div(ng-repeat='(pot,points) in ownedItems(user.items.hatchingPotions)') - button.customize-option(popover='{{Content.hatchingPotions[pot].notes}}', popover-title='{{Content.hatchingPotions[pot].text}} Potion', popover-trigger='mouseenter', popover-placement='right', ng-click='choosePotion(pot)', class='Pet_HatchingPotion_{{pot}}', ng-class='{selectableInventory: selectedEgg && !(user.items.pets[selectedEgg.key+"-"+pot]>0)}') - .badge.badge-info.stack-count {{points}} - - li.customize-menu - menu.pets-menu(label=(env.t('scrolls') + ' ({{questCount}})')) - p.muted(ng-show='questCount < 1')=env.t('noScrolls') - p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' - div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') - button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') - .badge.badge-info.stack-count {{points}} - - li.customize-menu - menu.pets-menu(label=env.t('food') + ' ({{foodCount}})') - p(ng-show='foodCount < 1')=env.t('noFood') - div(ng-repeat='(food,points) in ownedItems(user.items.food)') - button.customize-option(popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') - .badge.badge-info.stack-count {{points}} - - li.customize-menu(ng-if='user.items.special.snowball') - menu.pets-menu(label=env.t('special')) - div - button.customize-option(popover='{{Content.special.snowball.notes}}', popover-title='{{Content.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.snowball)', class='inventory_special_snowball') - .badge.badge-info.stack-count {{user.items.special.snowball}} - - .span6 - h2=env.t('market') - .row-fluid - table.npc_alex_container - tr - td - .npc_alex.pull-left - td - .popover.static-popover.fade.right.in - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/523661924')=env.t('alexander') - .popover-content - p=env.t('welcomeMarket') - p - button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedEgg.text}}", gold: "{{selectedEgg.value}}"}) - button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedPotion.text}}", gold: "{{selectedPotion.value}}"}) - button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedFood.text}}", gold: "{{selectedFood.value}}"}) + .container-fluid + .row + .col-md-6.border-right + h2=env.t('inventory') + p.well=env.t('inventoryText') menu.inventory-list(type='list') - li.customize-menu - menu.pets-menu(label=env.t('eggs')) - div(ng-repeat='egg in Content.eggs', ng-if='egg.canBuy') - button.customize-option(popover='{{egg.notes}}', popover-title='{{egg.text}} Egg', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("eggs", egg)', class='Pet_Egg_{{egg.key}}') - p - | {{egg.value}} - span.Pet_Currency_Gem1x.inline-gems li.customize-menu - menu.pets-menu(label=env.t('hatchingPotions')) - div(ng-repeat='pot in Content.hatchingPotions') - button.customize-option(popover='{{pot.notes}}', popover-title='{{pot.text}} Potion', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("hatchingPotions", pot)', class='Pet_HatchingPotion_{{pot.key}}') - p - | {{pot.value}} - span.Pet_Currency_Gem1x.inline-gems + menu.pets-menu(label=(env.t('eggs') + ' ({{eggCount}})')) + p.muted(ng-show='eggCount < 1')=env.t('noEggs') + div(ng-repeat='(egg,points) in ownedItems(user.items.eggs)') + //TODO move positioning this styling to css + button.customize-option(popover='{{Content.eggs[egg].notes}}', popover-title='{{Content.eggs[egg].text}} Egg', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseEgg(egg)', class='Pet_Egg_{{egg}}', ng-class='{selectableInventory: selectedPotion && !(user.items.pets[egg+"-"+selectedPotion.key]>0)}') + .badge.badge-info.stack-count {{points}} + //-p {{Content.eggs[egg].text}} li.customize-menu - menu.pets-menu(label=env.t('food')) - div(ng-repeat='food in Content.food', ng-if='food.key !== "Saddle" && food.canBuy') - button.customize-option(popover='{{food.notes}}', popover-title='{{food.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", food)', class='Pet_Food_{{food.key}}') - p - | {{food.value}} - span.Pet_Currency_Gem1x.inline-gems + menu.hatchingPotion-menu(label=(env.t('hatchingPotions') + ' ({{potCount}})')) + p.muted(ng-show='potCount < 1')=env.t('noHatchingPotions') + div(ng-repeat='(pot,points) in ownedItems(user.items.hatchingPotions)') + button.customize-option(popover='{{Content.hatchingPotions[pot].notes}}', popover-title='{{Content.hatchingPotions[pot].text}} Potion', popover-trigger='mouseenter', popover-placement='right', ng-click='choosePotion(pot)', class='Pet_HatchingPotion_{{pot}}', ng-class='{selectableInventory: selectedEgg && !(user.items.pets[selectedEgg.key+"-"+pot]>0)}') + .badge.badge-info.stack-count {{points}} li.customize-menu - menu.pets-menu(label=env.t('quests')) + menu.pets-menu(label=(env.t('scrolls') + ' ({{questCount}})')) + p.muted(ng-show='questCount < 1')=env.t('noScrolls') p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' - div(ng-repeat='quest in Content.quests', ng-if='quest.canBuy') - button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') - p - | {{quest.value}} - span.Pet_Currency_Gem1x.inline-gems + div(ng-repeat='(quest_key,points) in ownedItems(user.items.quests)', ng-init='quest = Content.quests[quest_key]') + button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='showQuest(quest_key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + .badge.badge-info.stack-count {{points}} li.customize-menu + menu.pets-menu(label=env.t('food') + ' ({{foodCount}})') + p(ng-show='foodCount < 1')=env.t('noFood') + div(ng-repeat='(food,points) in ownedItems(user.items.food)') + button.customize-option(popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') + .badge.badge-info.stack-count {{points}} + + li.customize-menu(ng-if='user.items.special.snowball') menu.pets-menu(label=env.t('special')) div - button.customize-option(popover='{{Content.food.Saddle.notes}}', popover-title='{{Content.food.Saddle.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", Content.food.Saddle)', class='Pet_Food_{{Content.food.Saddle.key}}') - p - | {{Content.food.Saddle.value}} - span.Pet_Currency_Gem1x.inline-gems - div - button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("reroll")', class='inventory_special_fortify') - p - | 4 - span.Pet_Currency_Gem1x.inline-gems - //-div - button.customize-option(popover='{{Content.spells.special.snowball.notes}}', popover-title='{{Content.spells.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("special", Content.spells.special.snowball)', class='inventory_special_snowball') - p - | {{Content.spells.special.snowball.value}} - span.Pet_Currency_Gem1x.inline-gems - div(ng-show='user.flags.rebirthEnabled') - button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("rebirth")', class='rebirth_orb') - p - | 8 - span.Pet_Currency_Gem1x.inline-gems - div(ng-if='user.purchased.plan.planId') - button.customize-option(ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})') - span.Pet_Currency_Gem.inline-gems - p - | 20 - span.shop_gold + button.customize-option(popover='{{Content.special.snowball.notes}}', popover-title='{{Content.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.snowball)', class='inventory_special_snowball') + .badge.badge-info.stack-count {{user.items.special.snowball}} + + .col-md-6 + h2=env.t('market') + .row-fluid + table.npc_alex_container + tr + td + .npc_alex.pull-left + td + .popover.static-popover.fade.right.in + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/523661924')=env.t('alexander') + .popover-content + p=env.t('welcomeMarket') + p + button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedEgg.text}}", gold: "{{selectedEgg.value}}"}) + button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedPotion.text}}", gold: "{{selectedPotion.value}}"}) + button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedFood.text}}", gold: "{{selectedFood.value}}"}) + menu.inventory-list(type='list') + li.customize-menu + menu.pets-menu(label=env.t('eggs')) + div(ng-repeat='egg in Content.eggs', ng-if='egg.canBuy') + button.customize-option(popover='{{egg.notes}}', popover-title='{{egg.text}} Egg', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("eggs", egg)', class='Pet_Egg_{{egg.key}}') + p + | {{egg.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('hatchingPotions')) + div(ng-repeat='pot in Content.hatchingPotions') + button.customize-option(popover='{{pot.notes}}', popover-title='{{pot.text}} Potion', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("hatchingPotions", pot)', class='Pet_HatchingPotion_{{pot.key}}') + p + | {{pot.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('food')) + div(ng-repeat='food in Content.food', ng-if='food.key !== "Saddle" && food.canBuy') + button.customize-option(popover='{{food.notes}}', popover-title='{{food.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", food)', class='Pet_Food_{{food.key}}') + p + | {{food.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('quests')) + p.muted!=env.t('scrollsText1') + ' ' + env.t('scrollsText2') + '' + div(ng-repeat='quest in Content.quests', ng-if='quest.canBuy') + button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes | htmlDecode}}", popover-title='{{quest.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='{locked: quest.previous && !user.achievements.quests[quest.previous]}') + p + | {{quest.value}} + span.Pet_Currency_Gem1x.inline-gems + + li.customize-menu + menu.pets-menu(label=env.t('special')) + div + button.customize-option(popover='{{Content.food.Saddle.notes}}', popover-title='{{Content.food.Saddle.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("food", Content.food.Saddle)', class='Pet_Food_{{Content.food.Saddle.key}}') + p + | {{Content.food.Saddle.value}} + span.Pet_Currency_Gem1x.inline-gems + div + button.customize-option(popover=env.t('fortifyPop'), popover-title=env.t('fortifyName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("reroll")', class='inventory_special_fortify') + p + | 4 + span.Pet_Currency_Gem1x.inline-gems + //-div + button.customize-option(popover='{{Content.spells.special.snowball.notes}}', popover-title='{{Content.spells.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='purchase("special", Content.spells.special.snowball)', class='inventory_special_snowball') + p + | {{Content.spells.special.snowball.value}} + span.Pet_Currency_Gem1x.inline-gems + div(ng-show='user.flags.rebirthEnabled') + button.customize-option(popover=env.t('rebirthPop'), popover-title=env.t('rebirthName'), popover-trigger='mouseenter', popover-placement='left', ng-click='openModal("rebirth")', class='rebirth_orb') + p + | 8 + span.Pet_Currency_Gem1x.inline-gems + div(ng-if='user.purchased.plan.planId') + button.customize-option(ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})') + span.Pet_Currency_Gem.inline-gems + p + | 20 + span.shop_gold diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index d85fc484fc..d9e1ce8130 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -1,85 +1,87 @@ script(type='text/ng-template', id='partials/options.inventory.mounts.html') - .stable - table(style='width:100%') - tr - td(style='width:144px') - .npc_matt - td - .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') - .popover-content - p=env.t('mattShall', {name: "{{user.profile.name}}"}) - h4= '{{mountCount}} / {{totalPets}} ' + env.t('mountsTamed') - menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.eggs') - menu - div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.mountText}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key') - button(class="pet-button Mount_Head_{{mount}}", ng-show='user.items.mounts[mount]', ng-class='{active: user.items.currentMount == mount}', ng-click='chooseMount(egg.key, potion.key)') - //div(class='Mount_Head_{{mount}}') - button(class="pet-button pet-not-owned", ng-hide='user.items.mounts[mount]') - .PixelPaw + .container-fluid + .stable.row + table + tr + td(style='width:144px') + .npc_matt + td + .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') + .popover-content + p=env.t('mattShall', {name: "{{user.profile.name}}"}) + h4= '{{mountCount}} / {{totalPets}} ' + env.t('mountsTamed') + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.eggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.mountText}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key') + button(class="pet-button Mount_Head_{{mount}}", ng-show='user.items.mounts[mount]', ng-class='{active: user.items.currentMount == mount}', ng-click='chooseMount(egg.key, potion.key)') + //div(class='Mount_Head_{{mount}}') + button(class="pet-button pet-not-owned", ng-hide='user.items.mounts[mount]') + .PixelPaw - h4=env.t('rareMounts') - menu - div - button(ng-if='user.items.mounts["BearCub-Polar"]', class="pet-button Mount_Head_BearCub-Polar", ng-class='{active: user.items.currentMount == "BearCub-Polar"}', ng-click='chooseMount("BearCub", "Polar")', popover=env.t('polarBear'), popover-trigger='mouseenter', popover-placement='bottom') - //.Mount_Head_BearCub-Polar - button(ng-if='user.items.mounts["LionCub-Ethereal"]', class="pet-button Mount_Head_LionCub-Ethereal", ng-class='{active: user.items.currentMount == "LionCub-Ethereal"}', ng-click='chooseMount("LionCub", "Ethereal")', popover=env.t('etherealLion'), popover-trigger='mouseenter', popover-placement='bottom') - //.Mount_Head_LionCub-Ethereal + h4=env.t('rareMounts') + menu + div + button(ng-if='user.items.mounts["BearCub-Polar"]', class="pet-button Mount_Head_BearCub-Polar", ng-class='{active: user.items.currentMount == "BearCub-Polar"}', ng-click='chooseMount("BearCub", "Polar")', popover=env.t('polarBear'), popover-trigger='mouseenter', popover-placement='bottom') + //.Mount_Head_BearCub-Polar + button(ng-if='user.items.mounts["LionCub-Ethereal"]', class="pet-button Mount_Head_LionCub-Ethereal", ng-class='{active: user.items.currentMount == "LionCub-Ethereal"}', ng-click='chooseMount("LionCub", "Ethereal")', popover=env.t('etherealLion'), popover-trigger='mouseenter', popover-placement='bottom') + //.Mount_Head_LionCub-Ethereal script(type='text/ng-template', id='partials/options.inventory.pets.html') - .stable - table(style='width:100%') - tr - td(style='width:144px') - .npc_matt - td - .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') - .popover-content - p - =env.t('mattBochText1') + ' ' - | - =env.t('mattBochText2') - | - = ' ' + env.t('mattBochText3') - h4= '{{petCount}} / {{totalPets}} ' + env.t('petsFound') + .container-fluid + .stable.row + table + tr + td(style='width:144px') + .npc_matt + td + .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') + .popover-content + p + =env.t('mattBochText1') + ' ' + | + =env.t('mattBochText2') + | + = ' ' + env.t('mattBochText3') + h4= '{{petCount}} / {{totalPets}} ' + env.t('petsFound') - menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.eggs') - menu - div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') - button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') - .progress(ng-show='!user.items.mounts[pet]', ng-class='{"progress-success": user.items.pets[pet]<50}') - .bar(style="width: {{user.items.pets[pet]/.5}}%;") - button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') - .PixelPaw - button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') - //if this could be changed to the opacity talked about? can't figure it out + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.eggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') + button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') + .progress(ng-show='!user.items.mounts[pet]', ng-class='{"progress-success": user.items.pets[pet]<50}') + .bar(style="width: {{user.items.pets[pet]/.5}}%;") + button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') + .PixelPaw + button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') + //if this could be changed to the opacity talked about? can't figure it out - h4=env.t('rarePets') - menu - div - button(ng-if='user.items.pets["Wolf-Veteran"]', class="pet-button Pet-Wolf-Veteran", ng-class='{active: user.items.currentPet == "Wolf-Veteran"}', ng-click='choosePet("Wolf", "Veteran")', popover=env.t('veteranWolf'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Wolf-Cerberus"]', class="pet-button Pet-Wolf-Cerberus", ng-class='{active: user.items.currentPet == "Wolf-Cerberus"}', ng-click='choosePet("Wolf", "Cerberus")', popover=env.t('cerberusPup'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Turkey-Base"]', class="pet-button Pet-Turkey-Base", ng-class='{active: user.items.currentPet == "Turkey-Base"}', ng-click='choosePet("Turkey", "Base")', popover=env.t('turkey'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["BearCub-Polar"]', class="pet-button Pet-BearCub-Polar", ng-class='{active: user.items.currentPet == "BearCub-Polar"}', ng-click='choosePet("BearCub", "Polar")', popover=env.t('polarBearPup'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover=env.t('hydra'), popover-trigger='mouseenter', popover-placement='bottom') - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG') - button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2')) - .PixelPaw-Gold + h4=env.t('rarePets') + menu + div + button(ng-if='user.items.pets["Wolf-Veteran"]', class="pet-button Pet-Wolf-Veteran", ng-class='{active: user.items.currentPet == "Wolf-Veteran"}', ng-click='choosePet("Wolf", "Veteran")', popover=env.t('veteranWolf'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Wolf-Cerberus"]', class="pet-button Pet-Wolf-Cerberus", ng-class='{active: user.items.currentPet == "Wolf-Cerberus"}', ng-click='choosePet("Wolf", "Cerberus")', popover=env.t('cerberusPup'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Turkey-Base"]', class="pet-button Pet-Turkey-Base", ng-class='{active: user.items.currentPet == "Turkey-Base"}', ng-click='choosePet("Turkey", "Base")', popover=env.t('turkey'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["BearCub-Polar"]', class="pet-button Pet-BearCub-Polar", ng-class='{active: user.items.currentPet == "BearCub-Polar"}', ng-click='choosePet("BearCub", "Polar")', popover=env.t('polarBearPup'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover=env.t('hydra'), popover-trigger='mouseenter', popover-placement='bottom') + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG') + button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2')) + .PixelPaw-Gold - .well.food-tray - p(ng-show='foodCount < 1')=env.t('noFood') - menu.inventory-list(type='list', ng-if='foodCount > 0') - li.customize-menu - menu.pets-menu(label=env.t('food')) - div(ng-repeat='(food,points) in ownedItems(user.items.food)') - button.customize-option(popover-append-to-body='true', popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') - .badge.badge-info.stack-count {{points}} - // Remove this once we have images in - p {{Content.food[food].text}} + .well.food-tray + p(ng-show='foodCount < 1')=env.t('noFood') + menu.inventory-list(type='list', ng-if='foodCount > 0') + li.customize-menu + menu.pets-menu(label=env.t('food')) + div(ng-repeat='(food,points) in ownedItems(user.items.food)') + button.customize-option(popover-append-to-body='true', popover='{{Content.food[food].notes}}', popover-title='{{Content.food[food].text}}', popover-trigger='mouseenter', popover-placement='left', ng-click='chooseFood(food)', class='Pet_Food_{{food}}') + .badge.badge-info.stack-count {{points}} + // Remove this once we have images in + p {{Content.food[food].text}} diff --git a/views/options/profile.jade b/views/options/profile.jade index e72ef230a9..831796b3f5 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -1,6 +1,6 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') - .row-fluid - .span4 + .row + .col-md-4 h3=env.t('bodyBody') small | 2 / @@ -24,7 +24,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') button.btn.btn-small.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")')!= env.t('unlockSet5') + ' ' - .span4 + .col-md-4 h3=env.t('bodyHead') small | 2 / @@ -77,7 +77,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.mustache.1 && user.purchased.hair.mustache.2 && user.purchased.hair.beard.1 && user.purchased.hair.beard.2 && user.purchased.hair.beard.3', ng-click='unlock("hair.mustache.1,hair.mustache.2,hair.beard.1,hair.beard.2,hair.beard.3")')!= env.t('unlockSet5') + ' ' - .span4 + .col-md-4 h3=env.t('bodySkin') small | 2 / @@ -105,109 +105,113 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') button.customize-option(type='button', class='skin_#{color}', ng-if='user.purchased.skin.#{color}', ng-click='unlock("skin.#{color}")') script(id='partials/options.profile.stats.html', type='text/ng-template') - .row-fluid - .border-right(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "span4" : "span6"') - include ../shared/profiles/stats - .span4.border-right.allocate-stats(ng-if='user.flags.classSelected && !user.preferences.disableClasses') - h3=env.t('characterBuild') - h4 - =env.t('class') + ': ' - span {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[user.stats.class] }}  - a.btn.btn-danger.btn-mini(ng-click='changeClass(null)')=env.t('changeClass') - small 3 - table.table.table-striped - tr - td - strong - {{user.stats.points}}  - =env.t('unallocated') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelPopover')) - td - tr - td(colspan=2) - fieldset.auto-allocate - label.checkbox - input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') - =env.t('autoAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) - form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') - label.radio - input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') - =env.t('evenAllocation') + .container-fluid + .row + .border-right(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "col-md-4" : "col-md-6"') + include ../shared/profiles/stats + .col-md-4.border-right.allocate-stats(ng-if='user.flags.classSelected && !user.preferences.disableClasses') + h3=env.t('characterBuild') + h4 + =env.t('class') + ': ' + span {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[user.stats.class] }}  + a.btn.btn-danger.btn-mini(ng-click='changeClass(null)')=env.t('changeClass') + small 3 + table.table.table-striped + tr + td + strong + {{user.stats.points}}  + =env.t('unallocated') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelPopover')) + td + tr + td(colspan=2) + fieldset.auto-allocate + label.checkbox + input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') + =env.t('autoAllocation')   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) - label.radio - input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') - =env.t('classAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) - label.radio - input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') - =env.t('taskAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) - div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') - a.btn.btn-primary.btn-mini(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) - span.glyphicon.glyphicon-download -   - =env.t('distributePoints') - tr - td= env.t('allocateCon') + ' {{user.stats.con}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("con")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateConPop')) + - tr - td= env.t('allocateInt') + ' {{user.stats.int}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateIntPop')) + - tr - td= env.t('allocatePer') + ' {{user.stats.per}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("per")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocatePerPop')) + - tr - td= env.t('allocateStr') + ' {{user.stats.str}}' - td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateStrPop')) + - - div(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "span4" : "span6"') - include ../shared/profiles/achievements + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) + form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') + label.radio + input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') + =env.t('evenAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) + label.radio + input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') + =env.t('classAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) + label.radio + input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') + =env.t('taskAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) + div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') + a.btn.btn-primary.btn-mini(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) + span.glyphicon.glyphicon-download +   + =env.t('distributePoints') + tr + td= env.t('allocateCon') + ' {{user.stats.con}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("con")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateConPop')) + + tr + td= env.t('allocateInt') + ' {{user.stats.int}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateIntPop')) + + tr + td= env.t('allocatePer') + ' {{user.stats.per}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("per")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocatePerPop')) + + tr + td= env.t('allocateStr') + ' {{user.stats.str}}' + td + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateStrPop')) + + + div(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "col-md-4" : "col-md-6"') + include ../shared/profiles/achievements script(id='partials/options.profile.profile.html', type='text/ng-template') - button.btn.btn-default(ng-click='_editing.profile = true', ng-show='!_editing.profile')= env.t('edit') - button.btn.btn-primary(ng-click='save()', ng-show='_editing.profile')= env.t('save') - div(ng-show='!_editing.profile') - h4=env.t('displayName') - span(ng-show='profile.profile.name') {{profile.profile.name}} - span.muted(ng-hide='profile.profile.name') -  - =env.t('none') - |  - + .container-fluid + .row + .col-md-12(ng-show='!_editing.profile') + button.btn.btn-default(ng-click='_editing.profile = true', ng-show='!_editing.profile')= env.t('edit') + h4=env.t('displayName') + span(ng-show='profile.profile.name') {{profile.profile.name}} + span.muted(ng-hide='profile.profile.name') -  + =env.t('none') + |  - - h4=env.t('displayPhoto') - img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') - span.muted(ng-hide='profile.profile.imageUrl') -  - =env.t('none') - |  - + h4=env.t('displayPhoto') + img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') + span.muted(ng-hide='profile.profile.imageUrl') -  + =env.t('none') + |  - - h4=env.t('displayBlurb') - markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') - span.muted(ng-hide='profile.profile.blurb') -  - =env.t('none') - |  - - //{{profile.profile.blurb | linky:'_blank'}} + h4=env.t('displayBlurb') + markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') + span.muted(ng-hide='profile.profile.blurb') -  + =env.t('none') + |  - + //{{profile.profile.blurb | linky:'_blank'}} - div.whatever-options(ng-show='_editing.profile') - // TODO use photo-upload instead: https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/xMmADvxBOak - .control-group.option-large - label.control-label=env.t('displayName') - input.option-content(type='text', placeholder=env.t('fullName'), ng-model='editingProfile.name') - .control-group.option-large - label.control-label=env.t('photoUrl') - input.option-content(type='url', ng-model='editingProfile.imageUrl', placeholder=env.t('imageUrl')) - .control-group.option-large - label.control-label=env.t('displayBlurb') - textarea.option-content(style='height:15em;', placeholder=env.t('displayBlurb'), ng-model='editingProfile.blurb') - include ../shared/formatting-help + form.col-md-4(ng-show='_editing.profile', ng-submit='save()') + input.btn.btn-primary(type='submit', value=env.t('save')) + + // TODO use photo-upload instead: https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/xMmADvxBOak + .form-group + label=env.t('displayName') + input.form-control(type='text', placeholder=env.t('fullName'), ng-model='editingProfile.name') + .form-group + label=env.t('photoUrl') + input.form-control(type='url', ng-model='editingProfile.imageUrl', placeholder=env.t('imageUrl')) + .form-group + label=env.t('displayBlurb') + textarea.form-control(rows=5, placeholder=env.t('displayBlurb'), ng-model='editingProfile.blurb') + include ../shared/formatting-help script(id='partials/options.profile.html', type="text/ng-template") ul.nav.nav-tabs diff --git a/views/options/social/chat-box.jade b/views/options/social/chat-box.jade index 3a135fc502..77e8f5470d 100644 --- a/views/options/social/chat-box.jade +++ b/views/options/social/chat-box.jade @@ -1,16 +1,14 @@ form.chat-form(ng-submit='postChat(group,message.content)') - .-options - //FIXME ng-model makes this painfully slow! using jquery for now, which is really non-angular-like - .control-group.option-large(ng-controller='AutocompleteCtrl') - textarea.chat-textarea.option-content(style='height:6em;', ui-keypress='{13:"postChat(group,message.content)"}', ng-model='message.content', updateinterval='250', flag='@', at-user, auto-complete) - span.user-list(ng-show='!isAtListHidden') - ul.list-at-user - li(bindonce='response', ng-repeat='user in response | filter:query.text | limitTo: 5', ng-click='autoComplete(user)') - span.username.label(class='label-contributor-{{user.contributor.level}}', ng-class='{"label-npc": user.backer.npc}') {{user.user}} - table.pull-right - tr - td - input.btn.chat-btn(type='submit', value=env.t('sendChat'), ng-class='{disabled: _sending == true}') - td - button.btn(type="button", ng-click='sync(group)', tooltip=env.t('toolTipMsg')) - span.glyphicon.glyphicon-refresh.pull-right + div(ng-controller='AutocompleteCtrl') + textarea.form-control(rows=4, ui-keypress='{13:"postChat(group,message.content)"}', ng-model='message.content', updateinterval='250', flag='@', at-user, auto-complete) + span.user-list(ng-show='!isAtListHidden') + ul.list-at-user + li(bindonce='response', ng-repeat='user in response | filter:query.text | limitTo: 5', ng-click='autoComplete(user)') + span.username.label(class='label-contributor-{{user.contributor.level}}', ng-class='{"label-npc": user.backer.npc}') {{user.user}} + .row + .col-md-9 + include ../../shared/formatting-help + .col-md-3 + input.btn.btn-default.chat-btn(type='submit', value=env.t('sendChat'), ng-class='{disabled: _sending == true}') + button.btn.btn-default(type="button", ng-click='sync(group)', tooltip=env.t('toolTipMsg')) + span.glyphicon.glyphicon-refresh.pull-right \ No newline at end of file diff --git a/views/options/social/chat-message.jade b/views/options/social/chat-message.jade index bf8e731a66..5d48818b8c 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -1,14 +1,14 @@ li.chat-message(bindonce='group.chat', ng-repeat='message in group.chat', bo-class='{highlight: isUserMentioned(user,message), "own-message": user._id == message.uuid}') div(class='scrollable-message') - a.label.chat-message(class='hidden-label') + a.label.label-default.chat-message(class='hidden-label') span {{message.user}}  markdown(ng-model='message.text', style='padding:0px 3px') | - span.muted.time(from-now='message.timestamp',style='padding:0px 3px') span(style='padding:0px 3px') a.label(ng-show='countExists(message.likes)',ng-class='{"label-success":message.likes[user._id]}',ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} - a.chat-plus-one.muted(ng-show='!countExists(message.likes)',ng-click='likeChatMessage(group,message)',style='background-color:#eee;padding:3px 3px 0px 3px') +1 + a.chat-plus-one.muted(ng-show='!countExists(message.likes)',ng-click='likeChatMessage(group,message)') +1 a(bo-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)',style='padding: 0px 3px') span.glyphicon.glyphicon-trash(tooltip=env.t('delete')) - a.label.chat-message(bo-show='message.user', class='float-label', bo-class='{"label-npc": message.backer.npc, "label-contributor-{{message.contributor.level}}":message.contributor.level}', ng-click='clickMember(message.uuid, true)') + a.label.label-default.chat-message(bo-show='message.user', class='float-label', bo-class='{"label-npc": message.backer.npc, "label-contributor-{{message.contributor.level}}":message.contributor.level}', ng-click='clickMember(message.uuid, true)') span(tooltip='{{contribText(message.contributor, message.backer)}}') {{message.user}}  diff --git a/views/options/social/create-group.jade b/views/options/social/create-group.jade index edf985d1a4..53c8879a02 100644 --- a/views/options/social/create-group.jade +++ b/views/options/social/create-group.jade @@ -1,27 +1,27 @@ -form.form-horizontal(ng-submit='create(newGroup)') - .control-group.whatever-options - .control-group - label.control-label(for='new-group-name') - | {{text}}  - =env.t('name') - .controls - input#new-group-name.input-medium.option-content(required, type='text', placeholder='{{text}} Name', ng-model='newGroup.name') - .control-group - label.control-label(for='new-group-description')=env.t('description') - .controls - textarea#new-group-description.option-content(cols='3', placeholder=env.t('description'), ng-model='newGroup.description') - .control-group(ng-show='type=="guild"') - .controls - label.radio - input(type='radio', name='new-group-privacy', value='public', ng-model='newGroup.privacy') - =env.t('public') - label.radio - input(type='radio', name='new-group-privacy', value='private', ng-model='newGroup.privacy') - =env.t('inviteOnly') - input.btn(type='submit', ng-disabled='!newGroup.privacy && !newGroup.name', value=env.t('create')) +.container-fluid + .row + form.col-md-12.form-horizontal(ng-submit='create(newGroup)') + .form-group + label.control-label(for='new-group-name') + | {{text}}  + =env.t('name') + input.form-control#new-group-name.input-medium.option-content(required, type='text', placeholder='{{text}} Name', ng-model='newGroup.name') + .form-group + label(for='new-group-description')=env.t('description') + textarea.form-control#new-group-description.option-content(cols='3', placeholder=env.t('description'), ng-model='newGroup.description') + .form-group(ng-show='type=="guild"') + .radio + label + input(type='radio', name='new-group-privacy', value='public', ng-model='newGroup.privacy') + =env.t('public') + .radio + label + input(type='radio', name='new-group-privacy', value='private', ng-model='newGroup.privacy') + =env.t('inviteOnly') + br + input.btn.btn-default(type='submit', ng-disabled='!newGroup.privacy && !newGroup.name', value=env.t('create')) span.gem-cost= '4 ' + env.t('gems') p small=env.t('gemCost') - .control-group(ng-show='type=="party"') - .controls - input.btn(type='submit', value=env.t('create')) + .form-group(ng-show='type=="party"') + input.btn.btn-default.form-control(type='submit', value=env.t('create')) diff --git a/views/options/social/group.jade b/views/options/social/group.jade index caa9d3469e..44c33c4da9 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -4,174 +4,177 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild .Pet_Currency_Gem2x.Gems | {{group.balance * 4 | number:0 }} =env.t('guildGems') -.row-fluid - .span4 +.container-fluid + .row + .col-md-4 - // ------ Bosses ------- - .modal.inline-modal(bindonce='group', ng-if='group.type==="party" && group.quest.key') - .modal-header - h3(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' - h3(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} - .modal-body - div(ng-if='group.quest.active==false') - table.table.table-striped - tr(ng-repeat='member in group.members') - td {{member.profile.name}} - td {{group.quest.members[member._id] === true ? env.t('accepted') : group.quest.members[member._id] === false ? env.t('rejected') : env.t('pending')}} - hr - .npc_ian.pull-left - p=env.t('questStart') - button.btn.btn-small.btn-warning(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='party.$questAccept({"force":true})')=env.t('begin') - //-TODO Cancel button - //-TODO Both force-start & cancel should only be available to quest-initiator + // ------ Bosses ------- + .panle.panel-default(bindonce='group', ng-if='group.type==="party" && group.quest.key') + .panel-heading + h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' + h3.panel-title(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} + .panel-body + div(ng-if='group.quest.active==false') + table.table.table-striped + tr(ng-repeat='member in group.members') + td {{member.profile.name}} + td {{group.quest.members[member._id] === true ? env.t('accepted') : group.quest.members[member._id] === false ? env.t('rejected') : env.t('pending')}} + hr + .npc_ian.pull-left + p=env.t('questStart') + button.btn.btn-small.btn-warning(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='party.$questAccept({"force":true})')=env.t('begin') + //-TODO Cancel button + //-TODO Both force-start & cancel should only be available to quest-initiator - div(ng-if='group.quest.active==true') - div(ng-if='Content.quests[group.quest.key].boss') - div(class="quest_{{group.quest.key}}") - //- - .progress(style="height:10px") - .bar(style='width: {{Shared.percent(group.quest.hp, Content.quests[group.quest.key].hp)}}%;') - span.meter-text - span.glyphicon.glyphicon-heart - | {{group.quest.hp | number:0}} / {{Content.quests[group.quest.key].hp}} - .hero-stats - .meter.health(title=env.t('bossHP')) - .bar(style='width: {{Shared.percent(group.quest.progress.hp, Content.quests[group.quest.key].boss.hp)}}%;') + div(ng-if='group.quest.active==true') + div(ng-if='Content.quests[group.quest.key].boss') + div(class="quest_{{group.quest.key}}") + //- + .progress(style="height:10px") + .bar(style='width: {{Shared.percent(group.quest.hp, Content.quests[group.quest.key].hp)}}%;') span.meter-text span.glyphicon.glyphicon-heart - | {{group.quest.progress.hp | number:0}} / {{Content.quests[group.quest.key].boss.hp}} + | {{group.quest.hp | number:0}} / {{Content.quests[group.quest.key].hp}} + .hero-stats + .meter.health(title=env.t('bossHP')) + .bar(style='width: {{Shared.percent(group.quest.progress.hp, Content.quests[group.quest.key].boss.hp)}}%;') + span.meter-text + span.glyphicon.glyphicon-heart + | {{group.quest.progress.hp | number:0}} / {{Content.quests[group.quest.key].boss.hp}} - div(ng-if='Content.quests[group.quest.key].collect') - h4=env.t('collected') + ':' + div(ng-if='Content.quests[group.quest.key].collect') + h4=env.t('collected') + ':' + table.table.table-striped + tr(ng-repeat='(k,v) in group.quest.progress.collect', class='quest_collected_{{v >= Content.quests[group.quest.key].collect[k].count}}') + td + div.pull-left(class='quest_{{group.quest.key}}_{{k}}') + | {{Content.quests[group.quest.key].collect[k].text}} + td + {{v}} / {{Content.quests[group.quest.key].collect[k].count}} + + div(ng-bind-html='Content.quests[group.quest.key].notes') + hr + h5=env.t('participants') table.table.table-striped - tr(ng-repeat='(k,v) in group.quest.progress.collect', class='quest_collected_{{v >= Content.quests[group.quest.key].collect[k].count}}') - td - div.pull-left(class='quest_{{group.quest.key}}_{{k}}') - | {{Content.quests[group.quest.key].collect[k].text}} - td - {{v}} / {{Content.quests[group.quest.key].collect[k].count}} + tr(ng-repeat='(k,v) in group.members', ng-show='group.quest.members[v._id]') + td {{v.profile.name}} + quest-rewards(key='{{group.quest.key}}') - div(ng-bind-html='Content.quests[group.quest.key].notes') + div(ng-if='Content.quests[group.quest.key].boss') + .npc_ian.pull-left + p!=env.t('bossDmg1') + br + p=env.t('bossDmg2') + + div(ng-if='Content.quests[group.quest.key].collect') + .npc_ian.pull-left + p=env.t('bossColl1') + br + p=env.t('bossColl2') + + + button.btn.btn-mini.btn-danger(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort') + + // ------ Information ------- + .panel.panel-default + .panel-heading(bindonce='group') + h3.panel-title + | {{group.name}} + span(ng-if='group.leader == user.id') + button.btn.btn-primary.pull-right(ng-click='save(group)', ng-show='group._editing')=env.t('save') + button.btn.btn-default.pull-right(ng-click='group._editing = true', ng-hide='group._editing')=env.t('editGroup') + + .panel-body + form(ng-show='group._editing') + .form-group + label=env.t('groupName') + input.form-control(type='text', ng-model='group.name', placeholder=env.t('groupName')) + .form-group + label=env.t('description') + textarea.form-control(rows=6, ng-model='group.description') + include ../../shared/formatting-help + .form-group + label=env.t('logoUrl') + input.form-control(type='url', placeholder=env.t('logoUrl'), ng-model='group.logo') + + h4=env.t('assignLeader') + select#group-leader-selection(ng-model='group._newLeader', ng-options='member.profile.name for member in group.members') + + div(ng-show='!group._editing') + img.pull-right(ng-show='group.logo', style='max-width:150px', ng-src='{{group.logo}}') + markdown(ng-model='group.description') hr - h5=env.t('participants') + small.muted Group ID: {{group._id}} + + include ./challenge-box + + // ------ Members ------- + .panel.panel-default + .panel-heading + h3.panel-title=env.t('members') + .panel-body + span + =env.t('partyList') + select#partyOrder( + style='width:140px', + ng-model='user.party.order', + ng-controller='ChatCtrl', + ng-options='k as v for (k , v) in partyOrderChoices', + ng-change='set({"party.order": user.party.order})' + ) + table.table.table-striped(bindonce='group') + tr(ng-repeat='member in group.members') + td + // allow leaders to ban members + div(ng-show='group.leader == user.id && user.id!=member._id') + a(ng-click='removeMember(group, member, true)') + span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) + a + span(ng-class='{"badge badge-info": group.leader==member._id}', ng-click='clickMember(member._id, true)') + | {{member.profile.name}} + tr(ng-if='group.memberCount > group.members.length') + td + |{{group.memberCount - group.members.length}} + = ' ' + env.t('moreMembers') + | + + h4(ng-show='group.invites.length > 0')=env.t('invited') table.table.table-striped - tr(ng-repeat='(k,v) in group.members', ng-show='group.quest.members[v._id]') - td {{v.profile.name}} - quest-rewards(key='{{group.quest.key}}') - - div(ng-if='Content.quests[group.quest.key].boss') - .npc_ian.pull-left - p!=env.t('bossDmg1') - br - p=env.t('bossDmg2') - - div(ng-if='Content.quests[group.quest.key].collect') - .npc_ian.pull-left - p=env.t('bossColl1') - br - p=env.t('bossColl2') + tr(ng-repeat='invite in group.invites') + td + // allow leaders to ban members + div(ng-show='group.leader == user.id') + a(ng-click='removeMember(group, invite, false)') + span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) + a + span(ng-click='clickMember(invite._id, true)') + | {{invite.profile.name}} + .panel-footer + form.form-inline(ng-submit='invite(group)') + //.alert.alert-danger(ng-show='_groupError') {{_groupError}} + .form-group + input.form-control(type='text', placeholder=env.t('userId'), ng-model='group.invitee') +   + input.btn.btn-default(type='submit', value=env.t('invite')) - button.btn.btn-mini.btn-danger(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort') + a.btn.btn-danger(data-id='{{group.id}}', ng-click='clickLeave(group, $event)')=env.t('leave') - // ------ Information ------- - .modal.inline-modal - .modal-header(bindonce='group') - span(ng-if='group.leader == user.id') - button.btn.btn-primary.pull-right(ng-click='save(group)', ng-show='group._editing')=env.t('save') - button.btn.btn-default.pull-right(ng-click='group._editing = true', ng-hide='group._editing')=env.t('editGroup') - h3 {{group.name}} - .modal-body - div.whatever-options(ng-show='group._editing') - .control-group.option-large - label.control-labe=env.t('groupName') - input.option-content(type='text', ng-model='group.name', placeholder=env.t('groupName')) - .control-group.option-large - label.control-label=env.t('description') - textarea.option-content(style='height:15em;', placeholder=env.t('groupDescr'), ng-model='group.description') - .control-group.option-large - label.control-label=env.t('logoUrl') - input.option-content(type='url', placeholder=env.t('logoUrl'), ng-model='group.logo') + .col-md-8 + div() + textarea.form-control(ng-show='group._editing', rows=6, placeholder=env.t('leaderMsg'), ng-model='group.leaderMessage') + table(ng-show='group.leaderMessage') + tr + td + .popover.static-popover.fade.right.in.wide-popover + .arrow + h3.popover-title {{Members.members[group.leader].profile.name}} + .popover-content + markdown(ng-model='group.leaderMessage') + div(ng-controller='ChatCtrl') + h3=env.t('chat') + include ./chat-box - h4=env.t('assignLeader') - select#group-leader-selection(ng-model='group._newLeader', ng-options='member.profile.name for member in group.members') - - div(ng-show='!group._editing') - img.pull-right(ng-show='group.logo', style='max-width:150px', ng-src='{{group.logo}}') - markdown(ng-model='group.description') - hr - small.muted Group ID: {{group._id}} - - include ./challenge-box - - // ------ Members ------- - .modal.inline-modal - .modal-header - h3=env.t('members') - .modal-body - span - =env.t('partyList') - select#partyOrder( - style='width:140px', - ng-model='user.party.order', - ng-controller='ChatCtrl', - ng-options='k as v for (k , v) in partyOrderChoices', - ng-change='set({"party.order": user.party.order})' - ) - table.table.table-striped(bindonce='group') - tr(ng-repeat='member in group.members') - td - // allow leaders to ban members - div(ng-show='group.leader == user.id && user.id!=member._id') - a(ng-click='removeMember(group, member, true)') - span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) - a - span(ng-class='{"badge badge-info": group.leader==member._id}', ng-click='clickMember(member._id, true)') - | {{member.profile.name}} - tr(ng-if='group.memberCount > group.members.length') - td - |{{group.memberCount - group.members.length}} - = ' ' + env.t('moreMembers') - | - - h4(ng-show='group.invites.length > 0')=env.t('invited') - table.table.table-striped - tr(ng-repeat='invite in group.invites') - td - // allow leaders to ban members - div(ng-show='group.leader == user.id') - a(ng-click='removeMember(group, invite, false)') - span.glyphicon.glyphicon-ban-circle(tooltip=env.t('banTip')) - a - span(ng-click='clickMember(invite._id, true)') - | {{invite.profile.name}} - .modal-footer.whatever-options - form.form-inline(ng-submit='invite(group)') - //.alert.alert-danger(ng-show='_groupError') {{_groupError}} - .control-group.option-large - input.option-content(type='text', placeholder=env.t('userId'), ng-model='group.invitee') - input.btn(type='submit', value=env.t('invite')) - - - a.btn.btn-danger(data-id='{{group.id}}', ng-click='clickLeave(group, $event)')=env.t('leave') - - .span8 - div.blah-options(ng-show='group._editing') - .option-large - textarea.option-content(style='height:15em;', placeholder=env.t('leaderMsg'), ng-model='group.leaderMessage') - table(ng-show='group.leaderMessage') - tr - td - .popover.static-popover.fade.right.in.wide-popover - .arrow - h3.popover-title {{Members.members[group.leader].profile.name}} - .popover-content - markdown(ng-model='group.leaderMessage') - div(ng-controller='ChatCtrl') - h3=env.t('chat') - include ./chat-box - include ../../shared/formatting-help - - ul.unstyled.tavern-chat - include ./chat-message + ul.list-unstyled.tavern-chat + include ./chat-message diff --git a/views/options/social/hall.jade b/views/options/social/hall.jade index f494892d2c..2a648ee94c 100644 --- a/views/options/social/hall.jade +++ b/views/options/social/hall.jade @@ -12,83 +12,83 @@ script(type='text/ng-template', id='partials/options.social.hall.html') div(ui-view) script(type='text/ng-template', id='partials/options.social.hall.heroes.html') - div.well(ng-if='user.contributor.admin') + .well(ng-if='user.contributor.admin') h2=env.t('rewardUser') form.form-horizontal(ng-submit='loadHero(_heroID)') - .-options - .option-group.option-large - input.option-content(type='text', ng-model='_heroID', placeholder=env.t('UUID')) - button.btn(type='submit')=env.t('loadUser') + .form-group + input.form-control(type='text', ng-model='_heroID', placeholder=env.t('UUID')) + input.btn.btn-default(type='submit')=env.t('loadUser') form.form-horizontal(ng-show='hero', ng-submit='saveHero(hero)') h3 {{hero.profile.name}} - .-options - .control-group.option-large - input.option-content(type='text', ng-model='hero.contributor.text', placeholder=env.t('contribTitle')) - .control-group.option-medium - input.option-content(type='number', step="any", ng-model='hero.contributor.level') - span.input-suffix=env.t('contribLevel') - br - small=env.t('contribHallText') - a(target='_blank', href='https://trello.com/c/wkFzONhE/277-contributor-gear')=env.t('moreDetails') - .control-group.option-large - textarea.option-content(style='height:15em;', placeholder=env.t('contributions'), ng-model='hero.contributor.contributions') - //-include ../../shared/formatting-help - .control-group.option-medium - label.checkbox + .form-group + input.form-control(type='text', ng-model='hero.contributor.text', placeholder=env.t('contribTitle')) + .form-group + input.form-control(type='number', step="any", ng-model='hero.contributor.level') + span.input-suffix=env.t('contribLevel') + br + small=env.t('contribHallText') + a(target='_blank', href='https://trello.com/c/wkFzONhE/277-contributor-gear')=env.t('moreDetails') + .form-group + textarea.form-control(style='height:15em;', placeholder=env.t('contributions'), ng-model='hero.contributor.contributions') + //-include ../../shared/formatting-help + .form-group + .checkbox + label input(type='checkbox', ng-model='hero.contributor.admin') =env.t('admin') hr - .control-group.option-medium - input.option-content(type='number', step="any", ng-model='hero.balance') + .form-group + input.form-control(type='number', step="any", ng-model='hero.balance') span.input-suffix=env.t('balance') p small!= '`user.balance`' + env.t('notGems') - .control-group.option-medium - label.checkbox - input(type='checkbox', ng-model='hero.purchased.ads') - =env.t('hideAds') + .form-group + .checkbox + label + input(type='checkbox', ng-model='hero.purchased.ads') + =env.t('hideAds') // h4 Backer Status // Add backer stuff like tier, disable adds, etcs - button.btn-primary(type='submit')=env.t('save') + input.btn.btn-primary(type='submit')=env.t('save') table.table.table-striped - tr - thead - tr - th=env.t('name') - th(ng-if='user.contributor.admin')=env.t('UUID') - th=env.t('contribLevel') - th=env.t('title') - th=env.t('contributions') - tr(ng-repeat='hero in heroes') - td - span(ng-if='hero.contributor.admin',popover=env.t('gamemaster'),popover-trigger='mouseenter',popover-placement='right') - a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') - | {{hero.profile.name}}  - span.glyphicon.glyphicon-star - span(ng-if='!hero.contributor.admin') - a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') {{hero.profile.name}} - td(ng-if='user.contributor.admin') {{hero._id}} - td {{hero.contributor.level}} - td {{hero.contributor.text}} - td - markdown(ng-model='hero.contributor.contributions', target='_blank') + thead + tr + th=env.t('name') + th(ng-if='user.contributor.admin')=env.t('UUID') + th=env.t('contribLevel') + th=env.t('title') + th=env.t('contributions') + tbody + tr(ng-repeat='hero in heroes') + td + span(ng-if='hero.contributor.admin',popover=env.t('gamemaster'),popover-trigger='mouseenter',popover-placement='right') + a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') + | {{hero.profile.name}}  + span.glyphicon.glyphicon-star + span(ng-if='!hero.contributor.admin') + a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') {{hero.profile.name}} + td(ng-if='user.contributor.admin') {{hero._id}} + td {{hero.contributor.level}} + td {{hero.contributor.text}} + td + markdown(ng-model='hero.contributor.contributions', target='_blank') script(type='text/ng-template', id='partials/options.social.hall.patrons.html') table.table.table-striped(infinite-scroll="loadMore()") - tr - thead - tr - th=env.t('name') - th(ng-if='user.contributor.admin')=env.t('UUID') - th=env.t('backerTier') - tr(ng-repeat='patron in patrons') - td - a.label(class='label-contributor-{{patron.contributor.level}}', ng-class='{"label-npc": patron.backer.npc}', ng-click='clickMember(patron._id, true)') {{patron.profile.name}} - td(ng-if='user.contributor.admin') {{patron._id}} - td {{patron.backer.tier}} + thead + tr + th=env.t('name') + th(ng-if='user.contributor.admin')=env.t('UUID') + th=env.t('backerTier') + tbody + tr(ng-repeat='patron in patrons') + td + a.label(class='label-contributor-{{patron.contributor.level}}', ng-class='{"label-npc": patron.backer.npc}', ng-click='clickMember(patron._id, true)') {{patron.profile.name}} + td(ng-if='user.contributor.admin') {{patron._id}} + td {{patron.backer.tier}} diff --git a/views/options/social/index.jade b/views/options/social/index.jade index 4fbb2a03b0..3f3303b0d3 100644 --- a/views/options/social/index.jade +++ b/views/options/social/index.jade @@ -7,7 +7,6 @@ include ./hall.jade script(type='text/ng-template', id='partials/options.social.tavern.html') include ./tavern - script(type='text/ng-template', id='partials/options.social.party.html') div(ng-show='group._id') include ./group @@ -30,8 +29,8 @@ script(type='text/ng-template', id='partials/options.social.guilds.public.html') a.btn.btn-success(data-type='guild', ng-click='join(invitation)')=env.t('accept') a.btn.btn-danger(ng-click='reject(invitation)')=env.t('reject') // Public Groups - .options-group.option-large.whatever-options - input.option-content(type='text',ng-model='guildSearch', placeholder=env.t('search')) + .col-md-3 + input.form-control(type='text',ng-model='guildSearch', placeholder=env.t('search')) table.table.table-striped tr(ng-repeat='group in groups.public | filter:guildSearch') td diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 349065f739..13d67e04a9 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -1,127 +1,125 @@ -.row-fluid - .span4 - .tavern-pane - table - tr - td - .npc_daniel - td - .popover.static-popover.fade.right.in - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/2014640723')=env.t('daniel') - .popover-content - =env.t('danielText') - div - button.btn.btn-large.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') - span(ng-show='user.preferences.sleep')=env.t('innCheckOut') - span(ng-hide='user.preferences.sleep')=env.t('innCheckIn') - .alert.alert-info(ng-show='user.preferences.sleep') - =env.t('innText') +.container-fluid + .row + .col-md-4 + .tavern-pane + table + tr + td + .npc_daniel + td + .popover.static-popover.fade.right.in + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/2014640723')=env.t('daniel') + .popover-content + =env.t('danielText') + div + button.btn.btn-large.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') + span(ng-show='user.preferences.sleep')=env.t('innCheckOut') + span(ng-hide='user.preferences.sleep')=env.t('innCheckIn') + .alert.alert-info(ng-show='user.preferences.sleep') + =env.t('innText') - // Resources - .modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;') - .modal-header - h3=env.t('resources') - .modal-body - table.table.table-striped - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Board:Looking_for_a_Group_(LFG)')=env.t('lfgPosts') - tr - td - a(target='_blank', href='https://vimeo.com/57654086')=env.t('tutorial') - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/FAQ')=env.t('FAQ') - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Glossary')=env.t('glossary') - tr - td - a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues')=env.t('reportAP') - tr - td - a(target='_blank', href='https://trello.com/c/8gzGlle8')=env.t('requestAF') - tr - td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Special:Forum')=env.t('community') + // Resources + .panel.panel-default + .panel-heading + h3.panel-title=env.t('resources') + .panel-body + table.table.table-striped + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Board:Looking_for_a_Group_(LFG)')=env.t('lfgPosts') + tr + td + a(target='_blank', href='https://vimeo.com/57654086')=env.t('tutorial') + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/FAQ')=env.t('FAQ') + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Glossary')=env.t('glossary') + tr + td + a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues')=env.t('reportAP') + tr + td + a(target='_blank', href='https://trello.com/c/8gzGlle8')=env.t('requestAF') + tr + td + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Special:Forum')=env.t('community') - // Player Tiers - .modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;', popover=env.t('tierPop'), popover-trigger="mouseenter", popover-placement="right") - .modal-header - h3=env.t('playerTiers') - .modal-body - small - | - =env.t('visitHeroes') - |
    - | - =env.t('conLearn') - |
    - | - =env.t('conLearnHow') - | - table.table.table-striped - tr - td - a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friendBadge') - div(style='display:none;') - p - span.achievement.achievement-firefox - !=env.t('friendFirst') - hr - p - span.shop-sprite.item-img(class='shop_armor_special_1') - !=env.t('friendSecond') - tr - td - a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('eliteBadge') - div(style='display:none;') - p - span.shop-sprite.item-img(class='shop_head_special_1') - !=env.t('eliteThird') - hr - p - span.shop-sprite.item-img(class='shop_weapon_special_1') - !=env.t('eliteFourth') - tr - td - a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('championBadge') - div(style='display:none;') - p - span.shop-sprite.item-img(class='shop_shield_special_1') - !=env.t('championFifth') - hr - p - div(class='Pet-Dragon-Hydra pull-left') - !=env.t('championSixth') - tr - td - a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendaryBadge') - div(style='display:none;') - p - !=env.t('legSeventh') - tr - td - a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroicBadge') - div(style='display:none;') - p=env.t('heroicText') - tr - td - a.label.label-npc(ng-click='toggleUserTier($event)')=env.t('npc') - div(style='display:none;') - p=env.t('npcText') + // Player Tiers + .panel.panel-default(popover=env.t('tierPop'), popover-trigger="mouseenter", popover-placement="right") + .panel-heading + h3.panel-title=env.t('playerTiers') + .panel-body + small + | + =env.t('visitHeroes') + |
    + | + =env.t('conLearn') + |
    + | + =env.t('conLearnHow') + | + table.table.table-striped + tr + td + a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friendBadge') + div(style='display:none;') + p + span.achievement.achievement-firefox + !=env.t('friendFirst') + hr + p + span.shop-sprite.item-img(class='shop_armor_special_1') + !=env.t('friendSecond') + tr + td + a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('eliteBadge') + div(style='display:none;') + p + span.shop-sprite.item-img(class='shop_head_special_1') + !=env.t('eliteThird') + hr + p + span.shop-sprite.item-img(class='shop_weapon_special_1') + !=env.t('eliteFourth') + tr + td + a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('championBadge') + div(style='display:none;') + p + span.shop-sprite.item-img(class='shop_shield_special_1') + !=env.t('championFifth') + hr + p + div(class='Pet-Dragon-Hydra pull-left') + !=env.t('championSixth') + tr + td + a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendaryBadge') + div(style='display:none;') + p + !=env.t('legSeventh') + tr + td + a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroicBadge') + div(style='display:none;') + p=env.t('heroicText') + tr + td + a.label.label-npc(ng-click='toggleUserTier($event)')=env.t('npc') + div(style='display:none;') + p=env.t('npcText') - include ./challenge-box + include ./challenge-box - .span8(ng-controller='ChatCtrl') - h3=env.t('tavernTalk') - include ./chat-box - small(style='position: relative; top: -20px; left: 25px;') - include ../../shared/formatting-help - small(style='position: relative; top: 18px; left: 0px') - alert.alert-info - !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' - ul.unstyled.tavern-chat - include ./chat-message + .col-md-8.tavern(ng-controller='ChatCtrl') + h3=env.t('tavernTalk') + include ./chat-box + .alert.alert-info + !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' + ul.list-unstyled.tavern-chat + include ./chat-message diff --git a/views/shared/profiles/achievements.jade b/views/shared/profiles/achievements.jade index 2ef6789a86..64cb816b10 100644 --- a/views/shared/profiles/achievements.jade +++ b/views/shared/profiles/achievements.jade @@ -1,133 +1,132 @@ -.achievements-container - //
    - //
    - //
    - //
    - //
    - //
    - //
    - //
    - //
    - //
    - //
    - //
    +//
    +//
    +//
    +//
    +//
    +//
    +//
    +//
    +//
    +//
    +//
    +//
    - div(ng-if='profile.backer.npc') - .achievement.achievement-helm +div(ng-if='profile.backer.npc') + .achievement.achievement-helm + h5 + span.label.label-npc + | {{profile.backer.npc}} + =env.t('npc') + small=env.t('npcText') + hr + +div(ng-if='profile.contributor.level || user._id == profile._id') + .achievement.achievement-firefox(ng-if='profile.contributor.level') + div(ng-class='{muted: !profile.contributor.level}') h5 - span.label.label-npc - | {{profile.backer.npc}} - =env.t('npc') - small=env.t('npcText') - hr - - div(ng-if='profile.contributor.level || user._id == profile._id') - .achievement.achievement-firefox(ng-if='profile.contributor.level') - div(ng-class='{muted: !profile.contributor.level}') - h5 - span.label(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}} - span.label(ng-if='!profile.contributor.level')=env.t('contribName') - small - =env.t('contribText') - a(href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG', target='_blank')=env.t('readMore') - | . - hr - - div(ng-if='profile.backer.tier') - .achievement.achievement-heart - h5=env.t('kickstartName', {tier: "{{profile.backer.tier}}"}) - small=env.t('kickstartText') - hr - - div(ng-if='profile.achievements.streak || user._id == profile._id') - .achievement.achievement-thermometer(ng-show='profile.achievements.streak') - div(ng-class='{muted: !profile.achievements.streak}') - h5 {{profile.achievements.streak || 0 }} - =env.t('streakName') - small=env.t('streakText', {streaks: "{{profile.achievements.streak || 0 }}"}) - hr - - div(ng-if='profile.achievements.perfect || user._id == profile._id') - .achievement.achievement-perfect(ng-show='profile.achievements.perfect') - div(ng-class='{muted: !profile.achievements.perfect}') - h5 {{profile.achievements.perfect || 0 }} - =env.t('perfectName') - small=env.t('perfectText', {perfects: "{{profile.achievements.perfect || 0 }}"}) - hr - - div(ng-if='profile.achievements.ultimateGear || user._id == profile._id') - .achievement.achievement-armor(ng-show='profile.achievements.ultimateGear') - div(ng-class='{muted: !profile.achievements.ultimateGear}') - h5=env.t('ultimGearName') - small=env.t('ultimGearText') - hr - - div(ng-if='profile.achievements.beastMaster || user._id == profile._id') - .achievement.achievement-rat(ng-show='profile.achievements.beastMaster') - div(ng-class='{muted: !profile.achievements.beastMaster}') - h5=env.t('beastMastName') - small=env.t('beastMastText') - hr - - div(ng-if='profile.achievements.rebirths') - .achievement.achievement-sun - h5(ng-if='profile.achievements.rebirths == 1')=env.t('rebirthBegan') - h5(ng-if='profile.achievements.rebirths > 1') - =env.t('rebirthText', {rebirths: "{{profile.achievements.rebirths}}"}) + span.label(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}} + span.label(ng-if='!profile.contributor.level')=env.t('contribName') small - =env.t('rebirthOrb') - | {{profile.achievements.rebirthLevel}}. - hr + =env.t('contribText') + a(href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG', target='_blank')=env.t('readMore') + | . + hr - div(ng-if='profile.achievements.helpedHabit') - .achievement.achievement-tree - h5=env.t('helped') - small - =env.t('helpedText1') - a(href='http://community.habitrpg.com/node/290', target='_blank')=env.t('helpedText2') - hr +div(ng-if='profile.backer.tier') + .achievement.achievement-heart + h5=env.t('kickstartName', {tier: "{{profile.backer.tier}}"}) + small=env.t('kickstartText') + hr - div(ng-if='profile.achievements.originalUser || profile.achievements.veteran') - .achievement.achievement-cake - div(ng-if='profile.achievements.veteran') - h5=env.t('veteran') - small=env.t('veteranText') - div(ng-if='profile.achievements.originalUser') - h5=env.t('originalUser') - small!=env.t('originalUserText') - hr +div(ng-if='profile.achievements.streak || user._id == profile._id') + .achievement.achievement-thermometer(ng-show='profile.achievements.streak') + div(ng-class='{muted: !profile.achievements.streak}') + h5 {{profile.achievements.streak || 0 }} + =env.t('streakName') + small=env.t('streakText', {streaks: "{{profile.achievements.streak || 0 }}"}) + hr - div(ng-if='profile.achievements.challenges || user._id == profile._id') - // This is a very strange icon to use. revisit - .achievement.achievement-karaoke(ng-show='profile.achievements.challenges') - div(ng-class='{muted: !profile.achievements.challenges}') - h5=env.t('challengeWinner') - table.table.table-striped - tr(ng-repeat='chal in profile.achievements.challenges') - td {{chal}} - hr +div(ng-if='profile.achievements.perfect || user._id == profile._id') + .achievement.achievement-perfect(ng-show='profile.achievements.perfect') + div(ng-class='{muted: !profile.achievements.perfect}') + h5 {{profile.achievements.perfect || 0 }} + =env.t('perfectName') + small=env.t('perfectText', {perfects: "{{profile.achievements.perfect || 0 }}"}) + hr - div(ng-if='profile.achievements.quests || user._id == profile._id') - .achievement.achievement-alien(ng-show='profile.achievements.quests') - div(ng-class='{muted: !profile.achievements.quests}') - h5=env.t('completedQuests') - table.table.table-striped - tr(ng-repeat='(k,v) in profile.achievements.quests') - td {{Content.quests[k].text}} - td x{{v}} - hr +div(ng-if='profile.achievements.ultimateGear || user._id == profile._id') + .achievement.achievement-armor(ng-show='profile.achievements.ultimateGear') + div(ng-class='{muted: !profile.achievements.ultimateGear}') + h5=env.t('ultimGearName') + small=env.t('ultimGearText') + hr - div(ng-if='profile.achievements.snowball') - .achievement.achievement-snowball - h5=env.t('annoyingFriends') - small - =env.t('annoyingFriendsText', {snowballs: "{{profile.achievements.snowball}}"}) - hr +div(ng-if='profile.achievements.beastMaster || user._id == profile._id') + .achievement.achievement-rat(ng-show='profile.achievements.beastMaster') + div(ng-class='{muted: !profile.achievements.beastMaster}') + h5=env.t('beastMastName') + small=env.t('beastMastText') + hr - div(ng-if='profile.achievements.habitBirthday') - .achievement.achievement-habitBirthday - h5=env.t('habitBirthday') - small - =env.t('habitBirthdayText') - hr +div(ng-if='profile.achievements.rebirths') + .achievement.achievement-sun + h5(ng-if='profile.achievements.rebirths == 1')=env.t('rebirthBegan') + h5(ng-if='profile.achievements.rebirths > 1') + =env.t('rebirthText', {rebirths: "{{profile.achievements.rebirths}}"}) + small + =env.t('rebirthOrb') + | {{profile.achievements.rebirthLevel}}. + hr + +div(ng-if='profile.achievements.helpedHabit') + .achievement.achievement-tree + h5=env.t('helped') + small + =env.t('helpedText1') + a(href='http://community.habitrpg.com/node/290', target='_blank')=env.t('helpedText2') + hr + +div(ng-if='profile.achievements.originalUser || profile.achievements.veteran') + .achievement.achievement-cake + div(ng-if='profile.achievements.veteran') + h5=env.t('veteran') + small=env.t('veteranText') + div(ng-if='profile.achievements.originalUser') + h5=env.t('originalUser') + small!=env.t('originalUserText') + hr + +div(ng-if='profile.achievements.challenges || user._id == profile._id') + // This is a very strange icon to use. revisit + .achievement.achievement-karaoke(ng-show='profile.achievements.challenges') + div(ng-class='{muted: !profile.achievements.challenges}') + h5=env.t('challengeWinner') + table.table.table-striped + tr(ng-repeat='chal in profile.achievements.challenges') + td {{chal}} + hr + +div(ng-if='profile.achievements.quests || user._id == profile._id') + .achievement.achievement-alien(ng-show='profile.achievements.quests') + div(ng-class='{muted: !profile.achievements.quests}') + h5=env.t('completedQuests') + table.table.table-striped + tr(ng-repeat='(k,v) in profile.achievements.quests') + td {{Content.quests[k].text}} + td x{{v}} + hr + +div(ng-if='profile.achievements.snowball') + .achievement.achievement-snowball + h5=env.t('annoyingFriends') + small + =env.t('annoyingFriendsText', {snowballs: "{{profile.achievements.snowball}}"}) + hr + +div(ng-if='profile.achievements.habitBirthday') + .achievement.achievement-habitBirthday + h5=env.t('habitBirthday') + small + =env.t('habitBirthdayText') + hr diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 7fbf934489..633eb414bc 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -3,12 +3,12 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s .task-meta-controls // Due Date - span.task-date(ng-if='task.type=="todo" && task.date', style='margin:1px') + span(ng-if='task.type=="todo" && task.date') span(ng-class='{"label label-danger":moment(task.date).isBefore(_today, "days")}') {{moment(task.date).format('MM/DD')}} // Streak + |   span(ng-show='task.streak') {{task.streak}} span(tooltip=env.t('streakCounter')) - |   span.glyphicon.glyphicon-forward |   From 0cc31465ed437329f839804f5700019b6afd81eb Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 5 Feb 2014 19:39:26 +0100 Subject: [PATCH 060/159] refactor(bs3): challenges --- public/css/challenges.styl | 10 +- views/options/social/challenge-box.jade | 8 +- views/options/social/challenges.jade | 219 +++++++++++++----------- 3 files changed, 120 insertions(+), 117 deletions(-) diff --git a/public/css/challenges.styl b/public/css/challenges.styl index 98d12edb17..d3a39eaca1 100644 --- a/public/css/challenges.styl +++ b/public/css/challenges.styl @@ -10,12 +10,4 @@ ul.challenge-accordion-header-specs margin-bottom: 10px #challenges-filters h3 - margin-top: 0px; - -// for things like challenges, member profiles, etc -@media (min-width: 767px) - .wide-modal - /* new custom width */ - width: 1020px; - /* must be half of the width, minus scrollbar on the left (30px) */ - margin-left: -480px; \ No newline at end of file + margin-top: 0px; \ No newline at end of file diff --git a/views/options/social/challenge-box.jade b/views/options/social/challenge-box.jade index 683d5ba829..2dae335b30 100644 --- a/views/options/social/challenge-box.jade +++ b/views/options/social/challenge-box.jade @@ -1,10 +1,10 @@ // ------ Challenges ------- -.modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;') - .modal-header - h3=env.t('challenges') +.panel.panel-default + .panel-heading + h3.panel-title=env.t('challenges') a.pull-right(target='_blank', href='https://trello.com/card/challenges-individual-party-guild-public/50e5d3684fe3a7266b0036d6/58') span.glyphicon.glyphicon-question-sign - .modal-body(bindonce='group.challenges') + .panel-body(bindonce='group.challenges') div(ng-if='group.challenges.length > 0') table.table.table-striped tr(ng-repeat='challenge in group.challenges') diff --git a/views/options/social/challenges.jade b/views/options/social/challenges.jade index 37b31ff9f4..e361f11493 100644 --- a/views/options/social/challenges.jade +++ b/views/options/social/challenges.jade @@ -9,32 +9,34 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.cl a(ng-click='cancelClosing(closingChal)')=env.t('cancel') script(type='text/ng-template', id='partials/options.social.challenges.detail.member.html') - .modal.wide-modal - .modal-header - button.close(type='button', ng-click='$state.go("^")', aria-hidden='true') × - h3 {{obj.profile.name}} - .modal-body - habitrpg-tasks(main=false) - .modal-footer - a.btn(ng-click='$state.go("^")')=env.t('close') + .modal.bs-modal-lg(style='display: block') + .modal-dialog.modal-lg + .modal-content + .modal-header + button.close(type='button', ng-click='$state.go("^")', aria-hidden='true') × + h3 {{obj.profile.name}} + .modal-body + habitrpg-tasks(main=false) + .modal-footer + a.btn(ng-click='$state.go("^")')=env.t('close') script(type='text/ng-template', id='partials/options.social.challenges.detail.html') // Edit button div(bindonce='challenge', ng-if='challenge.leader==user._id') - ul.unstyled - li(ng-hide='challenge._locked==false') - button.btn.btn-small.btn-default(ng-click='challenge._locked = false')=env.t('edit') - button.btn.btn-small.btn-warning(ng-click='close(challenge, $event)', tooltip=env.t('deleteOrSelect'))=env.t('endChallenge') - li(ng-show='challenge._locked==false') + div(ng-hide='challenge._locked==false') + button.btn.btn-small.btn-default(ng-click='challenge._locked = false')=env.t('edit') + button.btn.btn-small.btn-warning(ng-click='close(challenge, $event)', tooltip=env.t('deleteOrSelect'))=env.t('endChallenge') + + form(ng-show='challenge._locked==false') + .form-group(ng-show='challenge._locked==false') button.btn.btn-small.btn-primary(ng-click='save(challenge)')=env.t('save') button.btn.btn-small.btn-default(ng-click='challenge._locked=true')=env.t('cancel') - - div(ng-show='challenge._locked==false') - .-options - input.option-content(type='text', ng-model='challenge.name') - .option-medium - input.option-content(type='text', minlength="3", maxlength="16", ng-model='challenge.shortName', placeholder=env.t('challengeTag'), required) - textarea.option-content(cols='3', placeholder=env.t('challengeDescr'), ng-model='challenge.description') + .form-group + input.form-control(type='text', ng-model='challenge.name') + .form-group + input.form-control(type='text', minlength="3", maxlength="16", ng-model='challenge.shortName', placeholder=env.t('challengeTag'), required) + .form-group + textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='challenge.description') hr .well(bindonce='challenge', ng-if='challenge.description') @@ -62,94 +64,103 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.ht div(ui-view) script(type='text/ng-template', id='partials/options.social.challenges.html') - .row-fluid - .span2.well#challenges-filters - h3=env.t('filter') + ':' - h4=env.t('groups') - ul.unstyled - a.btn.btn-mini.pull-left(ng-click='selectAll()')=env.t('all') - a.btn.btn-mini(ng-click='selectNone()')=env.t('none') - br - label.checkbox(ng-repeat='group in groupsFilter') - input(type='checkbox', ng-model='search.group[group._id]') - | {{group.name}} - h4=env.t('membership') - label.radio - input(type='radio', name='search-participation-radio', ng-click='search._isMember = true') - =env.t('participating') - label.radio - input(type='radio', name='search-participation-radio', ng-click='search._isMember = false') - =env.t('notParticipating') - label.radio - input(type='radio', name='search-participation-radio', ng-click='search._isMember = undefined', checked='checked') - =env.t('either') - .span10 - // Creation form - button.btn.btn-success#create-challenge-btn(ng-click='create()', ng-hide='newChallenge')=env.t('createChallenge') - .create-challenge-from.well(ng-if='newChallenge') - form(ng-submit='save(newChallenge)') - div - input.btn.btn-success(type='submit', value=env.t('save')) - input.btn.btn-danger(type='button', ng-click='discard()', value=env.t('discard')) - select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups') - .challenge-options - input.option-content(type='text', ng-model='newChallenge.name', placeholder=env.t('challengeTitle'), required='required') + .container-fluid + .row + .col-md-2.well#challenges-filters + h3=env.t('filter') + ':' + h4=env.t('groups') + ul.list-unstyled + a.btn.btn-mini.pull-left(ng-click='selectAll()')=env.t('all') + a.btn.btn-mini(ng-click='selectNone()')=env.t('none') + br + .checkbox(ng-repeat='group in groupsFilter') + label + input(type='checkbox', ng-model='search.group[group._id]') + | {{group.name}} + h4=env.t('membership') + .radio + label + input(type='radio', name='search-participation-radio', ng-click='search._isMember = true') + =env.t('participating') + .radio + label + input(type='radio', name='search-participation-radio', ng-click='search._isMember = false') + =env.t('notParticipating') + .radio + label + input(type='radio', name='search-participation-radio', ng-click='search._isMember = undefined', checked='checked') + =env.t('either') + .col-md-10 + // Creation form + button.btn.btn-success#create-challenge-btn(ng-click='create()', ng-hide='newChallenge')=env.t('createChallenge') + .create-challenge-from.well(ng-if='newChallenge') + form(ng-submit='save(newChallenge)') + div + input.btn.btn-success(type='submit', value=env.t('save')) + input.btn.btn-danger(type='button', ng-click='discard()', value=env.t('discard')) + select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups') + .challenge-options + .form-group + input.form-control(type='text', ng-model='newChallenge.name', placeholder=env.t('challengeTitle'), required='required') - .option-medium - input.option-content(type='text', minlength="3", maxlength="16", ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required) - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags') - span.glyphicon.glyphicon-question-sign(popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right') + .form-group + input.form-control(type='text', minlength="3", maxlength="16", ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required) + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags') + span.glyphicon.glyphicon-question-sign(popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right') - textarea.option-content(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description') + .form-group + textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description') - //- what's going on here? - br - br + //- what's going on here? + br + br - .option-medium - input.option-content(type='number', min="{{newChallenge.group=='habitrpg' ? 1 : 0}}", max="{{maxPrize}}", ng-model='newChallenge.prize', placeholder=env.t('prize')) - span.input-suffix.Pet_Currency_Gem1x.inline-gems - span.glyphicon.glyphicon-question-sign(popover=env.t('prizePop'), popover-trigger='mouseenter', popover-placement='right') - span(ng-show='newChallenge.group=="habitrpg"') - !=env.t('publicChallenges') + .form-group + input.form-control(type='number', min="{{newChallenge.group=='habitrpg' ? 1 : 0}}", max="{{maxPrize}}", ng-model='newChallenge.prize', placeholder=env.t('prize')) + span.input-suffix.Pet_Currency_Gem1x.inline-gems + span.glyphicon.glyphicon-question-sign(popover=env.t('prizePop'), popover-trigger='mouseenter', popover-placement='right') + span(ng-show='newChallenge.group=="habitrpg"') + !=env.t('publicChallenges') - .option-medium(ng-if='user.contributor.admin') - label.checkbox - input(type='checkbox', ng-model='newChallenge.official') - =env.t('officialChallenge') + .form-group(ng-if='user.contributor.admin') + .checkbox + label + input(type='checkbox', ng-model='newChallenge.official') + =env.t('officialChallenge') - habitrpg-tasks(main=false, obj='newChallenge') + habitrpg-tasks(main=false, obj='newChallenge') - // Challenges list - .accordion-group(ng-repeat='challenge in challenges|filter:filterChallenges') - .accordion-heading - ul.pull-right.challenge-accordion-header-specs - li(ng-if='challenge.official') - span.label.label-success=env.t('officialChallenge') - li {{challenge.group.name}} - li - =env.t('by') - strong {{challenge.leader.profile.name}} - li - | {{challenge.memberCount}} - = ' ' + env.t('participants') - li(ng-show='challenge.prize') - // prize - table(ng-show='challenge.prize') - tr - td {{challenge.prize}} - td - .Pet_Currency_Gem1x(style='margin-left:0px') - td=env.t('prize') - li - // leave / join - a.btn.btn-small.btn-danger(ng-show='challenge._isMember', ng-click='clickLeave(challenge, $event)') - span.glyphicon.glyphicon-ban-circle - =env.t('leave') - a.btn.btn-small.btn-success(ng-hide='challenge._isMember', ng-click='join(challenge)') - span.glyphicon.glyphicon-ok - =env.t('join') - a.accordion-toggle(ng-click='toggle(challenge._id)') {{challenge.name}} - .accordion-body(ng-class='{collapse: !$stateParams.cid == challenge._id}') - .accordion-inner(ng-if='$stateParams.cid == challenge._id') - div(ui-view) + // Challenges list + .panel-group + .panel.panel-default(ng-repeat='challenge in challenges|filter:filterChallenges') + .panel-heading + ul.pull-right.challenge-accordion-header-specs + li(ng-if='challenge.official') + span.label.label-success=env.t('officialChallenge') + li {{challenge.group.name}} + li + =env.t('by') + strong {{challenge.leader.profile.name}} + li + | {{challenge.memberCount}} + = ' ' + env.t('participants') + li(ng-show='challenge.prize') + // prize + table(ng-show='challenge.prize') + tr + td {{challenge.prize}} + td + .Pet_Currency_Gem1x(style='margin-left:0px') + td=env.t('prize') + li + // leave / join + a.btn.btn-small.btn-danger(ng-show='challenge._isMember', ng-click='clickLeave(challenge, $event)') + span.glyphicon.glyphicon-ban-circle + =env.t('leave') + a.btn.btn-small.btn-success(ng-hide='challenge._isMember', ng-click='join(challenge)') + span.glyphicon.glyphicon-ok + =env.t('join') + a.accordion-toggle(ng-click='toggle(challenge._id)') {{challenge.name}} + .panel-body(ng-class='{collapse: !$stateParams.cid == challenge._id}') + .accordion-inner(ng-if='$stateParams.cid == challenge._id') + div(ui-view) From 5b9bbb9729acccd9ac64b6897e4a37c7bd84477f Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 5 Feb 2014 19:54:50 +0100 Subject: [PATCH 061/159] refactor(bs3): settings --- views/options/settings.jade | 184 ++++++++++++++++++------------------ 1 file changed, 94 insertions(+), 90 deletions(-) diff --git a/views/options/settings.jade b/views/options/settings.jade index c6e6fc88aa..8499188cb4 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -17,102 +17,106 @@ script(id='partials/options.settings.html', type="text/ng-template") div(ui-view) script(type='text/ng-template', id='partials/options.settings.settings.html') - .row-fluid - .personal-options.span6 - h2=env.t('settings') - h4=env.t('customDayStart') - .option-group.option-short - input.option-content.option-time(type='number', min='0', max='24', ng-model='user.preferences.dayStart', ng-change='saveDayStart()') - span.input-suffix= ':00 (' + env.t('24HrClock') + ')' - div - small - div=env.t('clockInfo') - .alert.alert-danger - =env.t('subWarning1') - a(href='https://github.com/HabitRPG/habitrpg/issues/1057' target='_blank')=env.t('subWarning2') - =env.t('subWarning3') - hr - h4=env.t('language') - select(ng-model='language.code', ng-options='lang.code as lang.name for lang in avalaibleLanguages', ng-change='changeLanguage()') - hr - h4=env.t('misc') - label.checkbox - input(type='checkbox', ng-click='set({"preferences.hideHeader":user.preferences.hideHeader?false:true})', ng-checked='user.preferences.hideHeader!==true') - =env.t('showHeader') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('showHeaderPop')) - label.checkbox - input(type='checkbox', ng-click='toggleStickyHeader()', ng-checked='user.preferences.stickyHeader!==false') - =env.t('stickyHeader') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('stickyHeaderPop')) - label.checkbox - input(type='checkbox', ng-model='user.preferences.newTaskEdit', ng-change='set({"preferences.newTaskEdit": user.preferences.newTaskEdit?true: false})') - =env.t('newTaskEdit') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('newTaskEditPop')) - label.checkbox - input(type='checkbox', ng-model='user.preferences.tagsCollapsed', ng-change='set({"preferences.tagsCollapsed": user.preferences.tagsCollapsed?true: false})') - =env.t('startCollapsed') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startCollapsedPop')) - label.checkbox - input(type='checkbox', ng-model='user.preferences.advancedCollapsed', ng-change='set({"preferences.advancedCollapsed": user.preferences.advancedCollapsed?true: false})') - =env.t('startAdvCollapsed') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startAdvCollapsedPop')) - button.btn(ng-click='showTour()', popover-placement='right', popover-trigger='mouseenter', popover=env.t('restartTour'))= env.t('showTour') - br - button.btn(ng-click='showBailey()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('showBaileyPop'))= env.t('showBailey') - br - 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') - button.btn(ng-click='showClassesTour()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('classTourPop'))= env.t('showClass') - - //- Why is ng-if='user.auth.local' validating for users *without* user.auth.local (facebook users)? adding .username here for extra - div(ng-if='user.auth.local.username') + .containter-fluid + .row + .personal-options.col-md-6 + h2=env.t('settings') + h4=env.t('customDayStart') + .form-group + input.form-control(type='number', min='0', max='24', ng-model='user.preferences.dayStart', ng-change='saveDayStart()') + span.input-suffix= ':00 (' + env.t('24HrClock') + ')' + div + small + div=env.t('clockInfo') + .alert.alert-danger.alert-sm + =env.t('subWarning1') + a(href='https://github.com/HabitRPG/habitrpg/issues/1057' target='_blank')=env.t('subWarning2') + =env.t('subWarning3') hr - h4=env.t('changePass') - form(ng-submit='changePassword(changePass)', ng-show='user.auth.local') - .control-group - input(type='password', placeholder=env.t('oldPass'), ng-model='changePass.oldPassword', required) - .control-group - input(type='password', placeholder=env.t('newPass'), ng-model='changePass.newPassword', required) - .control-group - input(type='password', placeholder=env.t('confirmPass'), ng-model='changePass.confirmNewPassword', required) - input.btn(type='submit', value=env.t('submit')) + h4=env.t('language') + select(ng-model='language.code', ng-options='lang.code as lang.name for lang in avalaibleLanguages', ng-change='changeLanguage()') + hr + h4=env.t('misc') + .checkbox + label + input(type='checkbox', ng-click='set({"preferences.hideHeader":user.preferences.hideHeader?false:true})', ng-checked='user.preferences.hideHeader!==true') + =env.t('showHeader') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('showHeaderPop')) + .checkbox + label + input(type='checkbox', ng-click='toggleStickyHeader()', ng-checked='user.preferences.stickyHeader!==false') + =env.t('stickyHeader') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('stickyHeaderPop')) + .checkbox + label + input(type='checkbox', ng-model='user.preferences.newTaskEdit', ng-change='set({"preferences.newTaskEdit": user.preferences.newTaskEdit?true: false})') + =env.t('newTaskEdit') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('newTaskEditPop')) + .checkbox + label + input(type='checkbox', ng-model='user.preferences.tagsCollapsed', ng-change='set({"preferences.tagsCollapsed": user.preferences.tagsCollapsed?true: false})') + =env.t('startCollapsed') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startCollapsedPop')) + .checkbox + label + input(type='checkbox', ng-model='user.preferences.advancedCollapsed', ng-change='set({"preferences.advancedCollapsed": user.preferences.advancedCollapsed?true: false})') + =env.t('startAdvCollapsed') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startAdvCollapsedPop')) + button.btn.btn-default(ng-click='showTour()', popover-placement='right', popover-trigger='mouseenter', popover=env.t('restartTour'))= env.t('showTour') + button.btn.btn-default(ng-click='showBailey()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('showBaileyPop'))= env.t('showBailey') + button.btn.btn-default(ng-click='openRestoreModal()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('fixValPop'))= env.t('fixVal') + button.btn.btn-default(ng-if='user.preferences.disableClasses==true', ng-click='user.ops.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableClassPop'))= env.t('enableClass') + button.btn.btn-default(ng-if='!user.preferences.disableClasses && user.flags.classSelected', ng-click='showClassesTour()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('classTourPop'))= env.t('showClass') - hr - h4=env.t('dangerZone') - a.btn.btn-danger(ng-click='openModal("reset", "SettingsCtrl")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetAccPop'))= env.t('resetAccount') - a.btn.btn-danger(ng-click='openModal("delete", "SettingsCtrl")', popover-trigger='mouseenter', popover=env.t('deleteAccPop'))= env.t('deleteAccount') + //- Why is ng-if='user.auth.local' validating for users *without* user.auth.local (facebook users)? adding .username here for extra + div(ng-if='user.auth.local.username') + hr + h4=env.t('changePass') + form(ng-submit='changePassword(changePass)', ng-show='user.auth.local') + .form-group + input.form-control(type='password', placeholder=env.t('oldPass'), ng-model='changePass.oldPassword', required) + .form-group + input.form-control(type='password', placeholder=env.t('newPass'), ng-model='changePass.newPassword', required) + .form-group + input.form-control(type='password', placeholder=env.t('confirmPass'), ng-model='changePass.confirmNewPassword', required) + input.btn.btn-default(type='submit', value=env.t('submit')) + + hr + h4=env.t('dangerZone') + a.btn.btn-danger(ng-click='openModal("reset", "SettingsCtrl")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetAccPop'))= env.t('resetAccount') + a.btn.btn-danger(ng-click='openModal("delete", "SettingsCtrl")', popover-trigger='mouseenter', popover=env.t('deleteAccPop'))= env.t('deleteAccount') script(type='text/ng-template', id='partials/options.settings.api.html') - .row.fluid - .span6 - h2=env.t('API') - small=env.t('APIText') - h6=env.t('userId') - pre.prettyprint {{user.id}} - h6=env.t('APIToken') - pre.prettyprint {{user.apiToken}} - h6=env.t('qrCode') - img(src='https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=%7B%22address%22%3A%22https%3A%2F%2Fhabitrpg.com%22%2C%22user%22%3A%22{{user.id}}%22%2C%22key%22%3A%22{{user.apiToken}}%22%7D&choe=UTF-8&chld=L', alt='qrcode') + .containter-fluid + .row + .col-md-6 + h2=env.t('API') + small=env.t('APIText') + h6=env.t('userId') + pre.prettyprint {{user.id}} + h6=env.t('APIToken') + pre.prettyprint {{user.apiToken}} + h6=env.t('qrCode') + img(src='https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=%7B%22address%22%3A%22https%3A%2F%2Fhabitrpg.com%22%2C%22user%22%3A%22{{user.id}}%22%2C%22key%22%3A%22{{user.apiToken}}%22%7D&choe=UTF-8&chld=L', alt='qrcode') script(id='partials/options.settings.export.html', type="text/ng-template") - .row.fluid - .span6 - h2=env.t('dataExport') - small=env.t('saveData') - h4=env.t('habitHistory') - =env.t('exportHistory') - a(href="/export/history.csv")= ' ' + env.t('csv') - h4=env.t('userData') - =env.t('exportUserData') - a(href="/export/userdata.xml")= ' ' + env.t('xml') + ' ' - a(href="/export/userdata.json")= env.t('json') + .containter-fluid + .row + .col-md-6 + h2=env.t('dataExport') + small=env.t('saveData') + h4=env.t('habitHistory') + =env.t('exportHistory') + a(href="/export/history.csv")= ' ' + env.t('csv') + h4=env.t('userData') + =env.t('exportUserData') + a(href="/export/userdata.xml")= ' ' + env.t('xml') + ' ' + a(href="/export/userdata.json")= env.t('json') script(id='partials/options.settings.subscription.perks.html',type='text/ng-template') table.table.table-striped From 3d1ee318566d44095ae2dfce14a95c7d4c3faf4e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 5 Feb 2014 20:19:09 +0100 Subject: [PATCH 062/159] refactor(bs3): remove unused bootstrap-datepicker from bower --- bower.json | 1 - 1 file changed, 1 deletion(-) diff --git a/bower.json b/bower.json index b3aa4eddab..9958494676 100644 --- a/bower.json +++ b/bower.json @@ -27,7 +27,6 @@ "angular-loading-bar": "~0.3.0", "angular-bindonce": "~0.2.1", "bootstrap": "~3.1.0", - "bootstrap-datepicker": "1.3.0", "bootstrap-growl": "git://github.com/ifightcrime/bootstrap-growl.git#master", "bootstrap-tour": "~0.8.1", "habitrpg-shared": "git://github.com/HabitRPG/habitrpg-shared.git#develop", From 4ce2dfd60da67944a3d437a40b2222df4b1eb97e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 5 Feb 2014 20:23:10 +0100 Subject: [PATCH 063/159] refactor(bs3): remove unused bootstrap-datepicker from bower --- public/css/index.styl | 1 - 1 file changed, 1 deletion(-) diff --git a/public/css/index.styl b/public/css/index.styl index f0ae049a29..89f7b90743 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -3,7 +3,6 @@ // Vendor Includes - include first so we can override // Import only styles that do not have urls to images! Include them directly in the page! -@import "../bower_components/bootstrap-datepicker/css/datepicker.css" @import "../bower_components/bootstrap-tour/build/css/bootstrap-tour.min.css" @import "../bower_components/angular-loading-bar/build/loading-bar.css" @import "../bower_components/js-emoji/emoji.css" From 908a5a2408b96e60986ecc48c42c0d6037cab489 Mon Sep 17 00:00:00 2001 From: deilann Date: Wed, 5 Feb 2014 13:07:56 -0800 Subject: [PATCH 064/159] updating tavern link to new issue ticket Explains how Github works. Should reduce number of dupe tickets. --- views/options/social/tavern.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 349065f739..c619c1205d 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -122,6 +122,6 @@ include ../../shared/formatting-help small(style='position: relative; top: 18px; left: 0px') alert.alert-info - !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' + !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' ul.unstyled.tavern-chat include ./chat-message From 386d108c3c74d43f8bef5337a2fa76de8385b869 Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Wed, 5 Feb 2014 20:43:49 -0200 Subject: [PATCH 065/159] Replace hard-coded strings for window.env.t on js files --- public/js/app.js | 6 +- public/js/controllers/authCtrl.js | 12 ++-- public/js/controllers/challengesCtrl.js | 16 ++--- public/js/controllers/groupsCtrl.js | 34 ++++----- public/js/controllers/inventoryCtrl.js | 16 ++--- public/js/controllers/notificationCtrl.js | 2 +- public/js/controllers/rootCtrl.js | 28 ++++---- public/js/controllers/settingsCtrl.js | 6 +- public/js/controllers/tasksCtrl.js | 2 +- public/js/controllers/userCtrl.js | 6 +- public/js/directives/directives.js | 18 ++--- public/js/services/authServices.js | 2 +- public/js/services/guideServices.js | 80 +++++++++++----------- public/js/services/notificationServices.js | 12 ++-- views/options/social/tavern.jade | 10 +-- 15 files changed, 125 insertions(+), 125 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 914f0437f0..01e307245c 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -225,10 +225,10 @@ window.habitrpg = angular.module('habitrpg', function error(response) { //var status = response.status; response.data = (response.data.err) ? response.data.err : response.data; - if (response.status == 0) response.data = 'Server currently unreachable.'; - if (response.status == 500) response.data += ' (see Chrome console for more details).'; + if (response.status == 0) response.data = window.env.t('serverUnreach'); + if (response.status == 500) response.data += window.env.t('seeConsole'); - var error = response.status == 0 ? response.data : ('Error ' + response.status + ': ' + response.data); + var error = response.status == 0 ? response.data : (window.env.t('error') + ' ' + response.status + ': ' + response.data); $rootScope.$broadcast('responseError', error); console.log(arguments); return $q.reject(response); diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 1c50d56be9..2a65f4a558 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -13,7 +13,7 @@ angular.module('authCtrl', []) $scope.useUUID = false; $scope.toggleUUID = function() { if (showedFacebookMessage === false) { - alert("Until we add Facebook, use your UUID and API Token to log in (found at https://habitrpg.com > Options > Settings)."); + alert(window.env.t('untilNoFace')); showedFacebookMessage = true; } $scope.useUUID = !$scope.useUUID; @@ -42,22 +42,22 @@ angular.module('authCtrl', []) runAuth(data.id, data.apiToken); }).error(function(data, status, headers, config) { if (status === 0) { - $window.alert("Server not currently reachable, try again later"); + $window.alert(window.env.t('noReachServer')); } else if (!!data && !!data.err) { $window.alert(data.err); } else { - $window.alert("ERROR: " + status); + $window.alert(window.env.t('errorUpCase') + status); } }); }; function errorAlert(data, status, headers, config) { if (status === 0) { - $window.alert("Server not currently reachable, try again later"); + $window.alert(window.env.t('noReachServer')); } else if (!!data && !!data.err) { $window.alert(data.err); } else { - $window.alert("ERROR: " + status); + $window.alert(window.env.t('errorUpCase') + status); } } @@ -87,7 +87,7 @@ angular.module('authCtrl', []) $scope.passwordReset = function(email){ $http.post(API_URL + '/api/v2/user/reset-password', {email:email}) .success(function(){ - alert('New password sent.'); + alert(window.env.t('newPassSent')); }) .error(function(data){ alert(data.err); diff --git a/public/js/controllers/challengesCtrl.js b/public/js/controllers/challengesCtrl.js index 8c1cd05a57..979fa0e3a6 100644 --- a/public/js/controllers/challengesCtrl.js +++ b/public/js/controllers/challengesCtrl.js @@ -44,11 +44,11 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', * Save */ $scope.save = function(challenge) { - if (!challenge.group) return alert('Please select group'); + if (!challenge.group) return alert(window.env.t('selectGroup')); var isNew = !challenge._id; challenge.$save(function(_challenge){ if (isNew) { - Notification.text('Challenge Created'); + Notification.text(window.env.t('challengeCreated')); $state.go('options.social.challenges.detail', {cid: _challenge._id}); $scope.discard(); $scope.challenges = Challenges.Challenge.query(); @@ -85,14 +85,14 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', $scope.closingChal = undefined; } $scope["delete"] = function(challenge) { - if (!confirm("Delete challenge, are you sure?")) return; + if (!confirm(window.env.t('sureDelCha'))) return; challenge.$delete(function(){ $scope.popoverEl.popover('destroy'); backToChallenges(); }); }; $scope.selectWinner = function(challenge) { - if (!confirm("Are you sure?")) return; + if (!confirm(window.env.t('youSure'))) return; challenge.$close({uid:challenge.winner}, function(){ $scope.popoverEl.popover('destroy'); backToChallenges(); @@ -106,7 +106,7 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', html: true, placement: 'right', trigger: 'manual', - title: 'Close challenge and...', + title: window.env.t('closeCha'), content: html }).popover('show'); @@ -140,7 +140,7 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', }; $scope.removeTask = function(list, $index) { - if (!confirm("Are you sure you want to delete this task?")) return; + if (!confirm(window.env.t('sureDelete'))) return; //TODO persist // User.log({op: "delTask", data: task}); list.splice($index, 1); @@ -185,13 +185,13 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', $scope.selectedChal = chal; $scope.popoverEl = $($event.target); var html = $compile( - 'Remove Tasks
    \nKeep Tasks
    \nCancel
    ' + '' + window.env.t('removeTasks') + '
    \n' + window.env.t('keepTasks') + '
    \n' + window.env.t('cancel') + '
    ' )($scope); $scope.popoverEl.popover('destroy').popover({ html: true, placement: 'top', trigger: 'manual', - title: 'Leave challenge and...', + title: window.env.t('leaveCha'), content: html }).popover('show'); } diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 6488ef6e90..a2211b6e63 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -34,7 +34,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' } $scope.removeMember = function(group, member, isMember){ - var yes = confirm("Do you really want to remove this member from the party?") + var yes = confirm(window.env.t('sureKick')) if(yes){ Groups.Group.removeMember({gid: group._id, uuid: member._id }, undefined, function(){ if(isMember){ @@ -180,7 +180,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' $scope.likeChatMessage = function(group,message) { if (message.uuid == User.user._id) - return Notification.text("Can't like your own message. Don't be that person."); + return Notification.text(window.env.t('foreverAlone')); if (!message.likes) message.likes = {}; if (message.likes[User.user._id]) { delete message.likes[User.user._id]; @@ -198,10 +198,10 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' // List of Ordering options for the party members list $scope.partyOrderChoices = { - 'level': 'Sort by Level', - 'random': 'Sort randomly', - 'pets': 'Sort by number of pets', - 'party_date_joined': 'Sort by Party date joined', + 'level': window.env.t('sortLevel'), + 'random': window.env.t('sortRandom'), + 'pets': window.env.t('sortPets'), + 'party_date_joined': window.env.t('sortJoined'), }; }]) @@ -221,7 +221,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' $scope.create = function(group){ if (User.user.balance < 1) return $rootScope.modals.buyGems = true; - if (confirm("Create Guild for 4 Gems?")) { + if (confirm(window.env.t('confirmGuild'))) { group.$save(function(saved){ User.user.balance--; $scope.groups.guilds.push(saved); @@ -284,14 +284,14 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' }), '_id'); if (_.intersection(challenges, User.user.challenges).length > 0) { html = $compile( - 'Remove Tasks
    \nKeep Tasks
    \nCancel
    ' + '' + window.env.t('removeTasks') + '
    \n' + window.env.t('keepTasks') + '
    \n' + window.env.t('cancel') + '
    ' )($scope); - title = "Leave group challenges and..."; + title = window.env.t('leaveGroupCha'); } else { html = $compile( - 'Confirm
    \nCancel
    ' + '' + window.env.t('confirm') + '
    \n' + window.env.t('cancel') + '
    ' )($scope); - title = "Leave group?" + title = window.env.t('leaveGroup') } $scope.popoverEl.popover('destroy').popover({ html: true, @@ -358,14 +358,14 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' }), '_id'); if (_.intersection(challenges, User.user.challenges).length > 0) { html = $compile( - 'Remove Tasks
    \nKeep Tasks
    \nCancel
    ' + '' + window.env.t('removeTasks') + '
    \n' + window.env.t('keepTasks') + '
    \n' + window.env.t('cancel') + '
    ' )($scope); - title = "Leave party challenges and..."; + title = window.env.t('leavePartyCha'); } else { html = $compile( - 'Confirm
    \nCancel
    ' + '' + window.env.t('confirm') + '
    \n' + window.env.t('cancel') + '
    ' )($scope); - title = "Leave party?"; + title = window.env.t('leaveParty'); } $scope.popoverEl.popover('destroy').popover({ html: true, @@ -383,8 +383,8 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' } $scope.questAbort = function(){ - if (!confirm("Are you sure you want to abort this mission? It will abort it for everyone in your party, all progress will be lost.")) return; - if (!confirm("Are you double sure? Make sure they won't hate you forever!")) return; + if (!confirm(window.env.t('sureAbort'))) return; + if (!confirm(window.env.t('doubleSureAbort'))) return; $rootScope.party.$questAbort(); } } diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 122295ddb9..0e49df61e4 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -79,7 +79,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', } $scope.hatch = function(egg, potion){ - if (!$window.confirm('Hatch a ' + potion.key + ' ' + egg.key + '?')) return; + if (!$window.confirm(window.env.t('hatchAPot', {potion: potion.key, egg: egg.key}))) return; user.ops.hatch({params:{egg:egg.key, hatchingPotion:potion.key}}); $scope.selectedEgg = null; $scope.selectedPotion = null; @@ -88,8 +88,8 @@ 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; - var string = (type == 'hatchingPotion') ? 'hatching potion' : type; // give hatchingPotion a space - var message = "Buy this " + string + " with " + item.value + " of your " + gems + " Gems?" + var string = (type == 'hatchingPotions') ? 'hatching potion' : (type == 'eggs') ? 'egg' : (type == 'quests') ? 'quest' : (item.key == 'Saddle') ? 'saddle' : (type == 'special') ? item.key : type; // this is ugly but temporary, once the purchase modal is done this will be removed + var message = window.env.t('buyThis', {text: string, price: item.value, gems: gems}) if($window.confirm(message)) User.user.ops.purchase({params:{type:type,key:item.key}}); } @@ -102,8 +102,8 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', if ($scope.selectedFood) { var food = $scope.selectedFood if (food.key == 'Saddle') { - if (!$window.confirm('Saddle ' + pet + '?')) return; - } else if (!$window.confirm('Feed ' + petDisplayName + ' '+ food.article + food.text + '?')) { + if (!$window.confirm(window.env.t('useSaddle', {pet: pet}))) return; + } else if (!$window.confirm(window.env.t('feedPet', {name: petDisplayName, article: food.article, text: food.text}))) { return; } User.user.ops.feed({params:{pet: pet, food: food.key}}); @@ -123,9 +123,9 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', var item = Content.quests[quest]; var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]); if (!completedPrevious) - return alert("You must first complete " + $rootScope.Content.quests[item.previous].text + '.'); + return alert(window.env.t('mustComplete', {quest: $rootScope.Content.quests[item.previous].text})); if (item.lvl && item.lvl > user.stats.lvl) - return alert("You must be level " + item.lvl + '.'); + return alert(window.env.t('mustLevel', {level: item.lvl})); $rootScope.selectedQuest = item; $rootScope.modals.showQuest = true; } @@ -143,7 +143,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', $scope.buyQuest = function(quest) { var item = Content.quests[quest]; if (item.lvl && item.lvl > user.stats.lvl) - return alert("You must be level " + item.lvl + ' to buy this quest!'); + return alert(window.env.t('mustLvlQuest', {level: item.lvl})); var completedPrevious = !item.previous || (User.user.achievements.quests && User.user.achievements.quests[item.previous]); if (!completedPrevious) return $scope.purchase("quests", item); diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index a93deb9b1a..dec5dde0be 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -26,7 +26,7 @@ habitrpg.controller('NotificationCtrl', if ((money > 0) && !!bonus) { if (bonus < 0.01) bonus = 0.01; - Notification.text("+ " + Notification.coins(bonus) + " Streak Bonus!"); + Notification.text("+ " + Notification.coins(bonus) + window.env.t('streakCoins')); delete User.user._tmp.streakBonus; } }); diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index e37a4a9662..b0c32c1d16 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -72,7 +72,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ } $rootScope.notPorted = function(){ - alert("This feature is not yet ported from the original site."); + alert(window.env.t('notPorted')); } $rootScope.dismissErrorOrWarning = function(type, $index){ @@ -84,11 +84,11 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ key: window.env.STRIPE_PUB_KEY, address: false, amount: 500, - name: subscription ? "Subscribe" : "Checkout", + name: subscription ? window.env.t('subscribe') : window.env.t('checkout'), description: subscription ? - "Buy gems with Gold, No Ads, Support the Devs" : - "20 Gems, No Ads, Support the Devs", - panelLabel: subscription ? "Subscribe" : "Checkout", + window.env.t('buySubsText') : + window.env.t('buyCheckText'), + panelLabel: subscription ? window.env.t('subscribe') : window.env.t('checkout'), token: function(data) { var url = '/api/v2/user/buy-gems'; if (subscription) url += '?plan=basic_earned'; @@ -105,7 +105,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ } $scope.cancelSubscription = function(){ - if (!confirm("Are you sure you want to cancel your subscription?")) return; + if (!confirm(window.env.t('sureCancelSub'))) return; //TODO use Stripe API to keep subscription till end of their month $http.post('/api/v2/user/cancel-subscription').success(function(){ window.location.reload(true); @@ -117,7 +117,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ if (backer && backer.npc) return backer.npc; var l = contrib && contrib.level; if (l && l > 0) { - var level = (l < 3) ? 'Friend' : (l < 5) ? 'Elite' : (l < 7) ? 'Champion' : (l < 8) ? 'Legendary' : 'Heroic'; + var level = (l < 3) ? window.env.t('friend') : (l < 5) ? window.env.t('elite') : (l < 7) ? window.env.t('champion') : (l < 8) ? window.env.t('legendary') : window.env.t('heroic'); return level + ' ' + contrib.text; } } @@ -145,7 +145,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ }); data = google.visualization.arrayToDataTable(matrix); options = { - title: 'History', + title: window.env.t('history'), backgroundColor: { fill: 'transparent' }, @@ -163,7 +163,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ ------------------------ */ $scope.castStart = function(spell) { - if (User.user.stats.mp < spell.mana) return Notification.text("Not enough mana."); + if (User.user.stats.mp < spell.mana) return Notification.text(window.env.t('notEnoughMana')); $rootScope.applyingAction = true; $scope.spell = spell; if (spell.target == 'self') { @@ -178,7 +178,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ $scope.castEnd = function(target, type, $event){ if (!$rootScope.applyingAction) return; $event && ($event.stopPropagation(),$event.preventDefault()); - if ($scope.spell.target != type) return Notification.text("Invalid target"); + if ($scope.spell.target != type) return Notification.text(window.env.t('invalidTarget')); $scope.spell.cast(User.user, target); User.save(); @@ -189,11 +189,11 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ $http.post('/api/v2/user/class/cast/'+spell.key+'?targetType='+type+'&targetId='+targetId) .success(function(){ - var msg = "You cast " + spell.text; + var msg = window.env.t('youCast', {spell: spell.text}); switch (type) { - case 'task': msg += ' on ' + target.text + '.';break; - case 'user': msg += ' on ' + target.profile.name + '.';break; - case 'party': msg += ' for the Party.';break; + case 'task': msg = window.env.t('youCastTarget', {spell: spell.text, target: target.text});break; + case 'user': msg = window.env.t('youCastTarget', {spell: spell.text, target: target.profile.name});break; + case 'party': msg = window.env.t('youCastParty', {spell: spell.text});break; } Notification.text(msg); }); diff --git a/public/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js index 8ad6419a14..7f8fd843de 100644 --- a/public/js/controllers/settingsCtrl.js +++ b/public/js/controllers/settingsCtrl.js @@ -38,7 +38,7 @@ habitrpg.controller('SettingsCtrl', var dayStart = +User.user.preferences.dayStart; if (_.isNaN(dayStart) || dayStart < 0 || dayStart > 24) { dayStart = 0; - return alert('Please enter a number between 0 and 24'); + return alert(window.env.t('enterNumber')); } User.set({'preferences.dayStart': dayStart}); } @@ -67,11 +67,11 @@ habitrpg.controller('SettingsCtrl', $scope.changePassword = function(changePass){ if (!changePass.oldPassword || !changePass.newPassword || !changePass.confirmNewPassword) { - return alert("Please fill out all fields"); + return alert(window.env.t('fillAll')); } $http.post(API_URL + '/api/v2/user/change-password', changePass) .success(function(){ - alert("Password successfully changed"); + alert(window.env.t('passSuccess')); $scope.changePass = {}; }) .error(function(data){ diff --git a/public/js/controllers/tasksCtrl.js b/public/js/controllers/tasksCtrl.js index 5dd8fc9369..1bde5c0bed 100644 --- a/public/js/controllers/tasksCtrl.js +++ b/public/js/controllers/tasksCtrl.js @@ -38,7 +38,7 @@ habitrpg.controller("TasksCtrl", ['$scope', '$location', 'User','Notification', }; $scope.removeTask = function(list, $index) { - if (!confirm("Are you sure you want to delete this task?")) return; + if (!confirm(window.env.t('sureDelete'))) return; User.user.ops.deleteTask({params:{id:list[$index].id}}) }; diff --git a/public/js/controllers/userCtrl.js b/public/js/controllers/userCtrl.js index ce3c629d82..ecaf7bd292 100644 --- a/public/js/controllers/userCtrl.js +++ b/public/js/controllers/userCtrl.js @@ -18,7 +18,7 @@ habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$ $scope.changeClass = function(klass){ if (!klass) { - if (!confirm("Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 gems")) + if (!confirm(window.env.t('sureReset'))) return; return User.user.ops.changeClass({}); } @@ -52,10 +52,10 @@ habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$ var cost = fullSet ? 1.25 : 0.5; // 5G per set, 2G per individual if (fullSet) { - if (confirm("Purchase for 5 Gems?") !== true) return; + if (confirm(window.env.t('purchaseFor5')) !== true) return; if (User.user.balance < cost) return $rootScope.modals.buyGems = true; } else if (!User.user.fns.dotGet('purchased.' + path)) { - if (confirm("Purchase for 2 Gems?") !== true) return; + if (confirm(window.env.t('purchaseFor2')) !== true) return; if (User.user.balance < cost) return $rootScope.modals.buyGems = true; } User.user.ops.unlock({query:{path:path}}) diff --git a/public/js/directives/directives.js b/public/js/directives/directives.js index 2d36fea375..879c3c603d 100644 --- a/public/js/directives/directives.js +++ b/public/js/directives/directives.js @@ -9,7 +9,7 @@ habitrpg.directive('taskFocus', return function(scope, elem, attrs) { scope.$watch(attrs.taskFocus, function(newval) { if ( newval ) { - $timeout(function() { + $timeounvt(function() { elem[0].focus(); }, 0, false); } @@ -85,21 +85,21 @@ habitrpg scope.main = attrs.main; $rootScope.lists = [ { - header: env.t('habits'), + header: window.env.t('habits'), type: 'habit', - placeHolder: env.t('newHabit') + placeHolder: window.env.t('newHabit') }, { - header: env.t('dailies'), + header: window.env.t('dailies'), type: 'daily', - placeHolder: env.t('newDaily') + placeHolder: window.env.t('newDaily') }, { - header: env.t('todos'), + header: window.env.t('todos'), type: 'todo', - placeHolder: env.t('newTodo') + placeHolder: window.env.t('newTodo') }, { - header: env.t('rewards'), + header: window.env.t('rewards'), type: 'reward', - placeHolder: env.t('newReward') + placeHolder: window.env.t('newReward') } ]; diff --git a/public/js/services/authServices.js b/public/js/services/authServices.js index d1667c959a..9e55d7af32 100644 --- a/public/js/services/authServices.js +++ b/public/js/services/authServices.js @@ -32,7 +32,7 @@ factory('Facebook', $http.post(API_URL + '/api/v2/user/auth/facebook', data).success(function(data, status, headers, config) { User.authenticate(data.id, data.token, function(err) { if (!err) { - alert('Login successful!'); + alert(window.env.t('loginSuccess')); $location.path("/habit"); } }); diff --git a/public/js/services/guideServices.js b/public/js/services/guideServices.js index 32df74a401..8f7a2cea6d 100644 --- a/public/js/services/guideServices.js +++ b/public/js/services/guideServices.js @@ -18,58 +18,58 @@ angular.module('guideServices', []). var tourSteps = [ { element: ".main-herobox", - title: "Welcome to HabitRPG", - content: "Welcome to HabitRPG, a habit-tracker which treats your goals like a Role Playing Game. I'm Justin, your guide!", + title: window.env.t('welcomeHabit'), + content: window.env.t('welcomeHabitT1') + "Justin," + window.env.t('welcomeHabitT2'), }, { element: ".main-herobox", - title: "Your Avatar", - content: "This is your avatar. It represents you in the world of Habitica. As you accomplish goals, your avatar will gain levels, earn gold, and equip itself for further challenges ahead.", + title: window.env.t('yourAvatar'), + content: window.env.t('yourAvatarText'), }, { element: ".main-herobox", - title: "Avatar Customization", - content: "You can customize your avatar by clicking anywhere in this box. Change your body type, hair color, skin color, and more from this menu. You can also find a number of HabitRPG's exciting social features by clicking through tabs on the customization page.", + title: window.env.t('avatarCustom'), + content: window.env.t('avatarCustomText'), }, { element: "#bars", - title: "Hit Points", - content: "The red bar tracks your avatar's health points. Whenever you fail to meet a goal, you take damage and lose health. If your health bar reaches zero, you die. Dying results in the loss of one level, all your gold, and a piece of equipment.", + title: window.env.t('hitPoints'), + content: window.env.t('hitPointsText'), }, { element: "#bars", - title: "Experience Points", - content: "The yellow bar tracks your avatar's experience points. Whenever you succeed in achieving a goal, you gain both gold and experience. When your experience bar maxes out, you gain a level. Gaining levels is how you unlock new and exciting features on HabitRPG.", + title: window.env.t('expPoints'), + content: window.env.t('expPointsText'), }, { element: "ul.habits", - title: "Types of Goals", - content: "HabitRPG allows you to track your goals in three different ways. These goals are categorized in columns as Habits, Dailies, or To-Dos.", + title: window.env.t('typeGoals'), + content: window.env.t('typeGoalsText'), placement: "top" }, { element: "ul.habits", - title: "Habits", - content: "Habits are goals that you constantly track. They can be given plus or minus values, allowing you to gain experience and gold for good habits or lose health for bad ones.", + title: window.env.t('habits'), + content: window.env.t('tourHabits'), placement: "top" }, { element: "ul.dailys", - title: "Dailies", - content: "Dailies are goals that you want to complete once a day. Checking off a daily reaps experience and gold. Failing to check off your daily before the day resets results in a loss of health. You can change your day start settings from the options menu.", + title: window.env.t('dailies'), + content: window.env.t('tourDailies'), placement: "top" }, { element: "ul.todos", - title: "To-Dos", - content: "To-Dos are one-off goals that you can get to eventually. While it is possible to set a deadline on a to-do, they are not required. To-Dos make for a quick and easy way to gain experience.", + title: window.env.t('todos'), + content: window.env.t('tourTodos'), placement: "top" }, { element: "ul.main-list.rewards", - title: "Rewards", - content: "All that gold you earned will allow you to reward yourself with either custom or in-game prizes. Buy them liberally – rewarding yourself is integral in forming good habits.", + title: window.env.t('rewards'), + content: window.env.t('tourRewards'), placement: "top" }, { element: "ul.habits li:first-child", - title: "Hover over comments", - content: "You can add comments to your tasks by clicking the edit icon. Hover over each task's comment for more details about how HabitRPG works. When you're ready to get started, you can delete the existing tasks and add your own.", + title: window.env.t('hoverOver'), + content: window.env.t('hoverOverText'), placement: "right" }, { element: "ul.habits li:first-child", - title: "Unlock New Features", - content: "That's all you need to know for now, but I'll be back as you level up to let you know about new features you've unlocked. Each new feature will give you more incentives to accomplish your goals. Find out more at the HabitRPG Wiki or let yourself be surprised. Good luck!", + title: window.env.t('unlockFeatures'), + content: window.env.t('unlockFeaturesT1') + "" + window.env.t('habitWiki') + "" + window.env.t('unlockFeaturesT2'), placement: "right" } ]; @@ -96,7 +96,7 @@ angular.module('guideServices', []). var showPopover = function(selector, title, html, placement) { if (!placement) placement = 'bottom'; $(selector).popover('destroy'); - var button = ""; + var button = ""; html = "
    " + html + '
    ' + button + '
    '; $(selector).popover({ title: title, @@ -109,19 +109,19 @@ angular.module('guideServices', []). $rootScope.$watch('user.flags.customizationsNotification', function(after, before) { if (alreadyShown(before, after)) return; - showPopover('.main-herobox', 'Customize Your Avatar', "Click your avatar to customize your appearance.", 'bottom'); + showPopover('.main-herobox', window.env.t('customAvatar'), window.env.t('customAvatarText'), 'bottom'); }); $rootScope.$watch('user.flags.itemsEnabled', function(after, before) { if (alreadyShown(before, after)) return; - var html = "Congratulations, you have unlocked the Item Store! You can now buy weapons, armor, potions, etc. Read each item's comment for more information."; - showPopover('div.rewards', 'Item Store Unlocked', html, 'left'); + var html = window.env.t('storeUnlockedText'); + showPopover('div.rewards', window.env.t('storeUnlocked'), html, 'left'); }); $rootScope.$watch('user.flags.partyEnabled', function(after, before) { if (alreadyShown(before, after)) return; - var html = "Be social, join a party and play Habit with your friends! You'll be better at your habits with accountability partners. Click User -> Options -> Party, and follow the instructions. LFG anyone?"; - showPopover('.user-menu', 'Party System', html, 'bottom'); + var html = window.env.t('partySysText'); + showPopover('.user-menu', window.env.t('partySys'), html, 'bottom'); }); $rootScope.$watch('user.flags.dropsEnabled', function(after, before) { @@ -160,8 +160,8 @@ angular.module('guideServices', []). $timeout(function(){tour.goTo(0)}); }), element: '.equipment-tab', - title: "Class Gear", - content: "First: don't panic! Your old gear is in your inventory, and you're now wearing your apprentice " + User.user.stats.class + " equipment. Wearing your class's gear grants you a 50% bonus to stats. However, feel free to switch back to your old gear." + title: window.env.t('classGear'), + content: window.env.t('classGearText', {klass: User.user.stats.class}) }, { path: '/#/options/profile/stats', @@ -169,21 +169,21 @@ angular.module('guideServices', []). $timeout(function(){tour.goTo(1)}); }), element: ".allocate-stats", - title: "Stats", - content: "These are your class's stats, they affect the game-play. Each time you level up, you get one point to allocate to particular stat. Hover over each stat for more information.", + title: window.env.t('stats'), + content: window.env.t('classStats'), }, { element: ".auto-allocate", - title: "Auto Allocate", + title: window.env.t('autoAllocate'), placement: 'left', - content: "If 'automatic allocation' is checked, your avatar gains stats automatically based on your tasks' attributes, which you can find in TASK > Edit > Advanced > Attributes. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Physical', you'll gain STR automatically.", + content: window.env.t('autoAllocateText'), }, { element: ".meter.mana", - title: "Spells", - content: "You can now unlock class-specific spells. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed To-Do." + title: window.env.t('spells'), + content: window.env.t('spellsText') + "" + window.env.t('toDo') + "." }, { orphan: true, - title: "Read More", - content: "For more information on the class-system, see Wikia." + title: window.env.t('readMore'), + content: window.env.t('moreClass') + "Wikia." } ]; _.each(tourSteps, function(step){ diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 7b4a48c817..98411901b8 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -45,11 +45,11 @@ angular.module("notificationServices", []) coins: coins, hp: function(val) { // don't show notifications if user dead - growl(" " + sign(val) + " " + round(val) + " HP", 'hp'); + growl(" " + sign(val) + " " + round(val) + " " + window.env.t('hp'), 'hp'); }, exp: function(val) { if (val < -50) return; // don't show when they level up (resetting their exp) - growl(" " + sign(val) + " " + round(val) + " XP", 'xp'); + growl(" " + sign(val) + " " + round(val) + " " + window.env.t('xp'), 'xp'); }, gp: function(val, bonus) { growl(sign(val) + " " + coins(val - bonus), 'gp'); @@ -58,19 +58,19 @@ angular.module("notificationServices", []) growl(val); }, lvl: function(){ - growl(' Level Up!', 'lvl'); + growl(' ' + window.env.t('levelUp'), 'lvl'); }, death: function(){ - growl(" Respawn!", "death"); + growl(" " + window.env.t('respawn'), "death"); }, error: function(error){ growl(" " + error, "error"); }, mp: function(val) { - growl(" " + sign(val) + " " + round(val) + " MP", 'mp'); + growl(" " + sign(val) + " " + round(val) + " " + window.env.t('mp'), 'mp'); }, crit: function(val) { - growl(" Critical Hit! Bonus: " + Math.round(val) + "%", 'crit'); + growl("" + window.env.t('critBonus') + Math.round(val) + "%", 'crit'); }, drop: function(val) { growl(" " + val, 'drop'); diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index c619c1205d..78a2e5a136 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -65,7 +65,7 @@ table.table.table-striped tr td - a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friendBadge') + a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friend') + ' (1-2)' div(style='display:none;') p span.achievement.achievement-firefox @@ -76,7 +76,7 @@ !=env.t('friendSecond') tr td - a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('eliteBadge') + a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('elite') + ' (3-4)' div(style='display:none;') p span.shop-sprite.item-img(class='shop_head_special_1') @@ -87,7 +87,7 @@ !=env.t('eliteFourth') tr td - a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('championBadge') + a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('champion') + ' (5-6)' div(style='display:none;') p span.shop-sprite.item-img(class='shop_shield_special_1') @@ -98,13 +98,13 @@ !=env.t('championSixth') tr td - a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendaryBadge') + a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendary') + ' (7)' div(style='display:none;') p !=env.t('legSeventh') tr td - a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroicBadge') + a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroic') div(style='display:none;') p=env.t('heroicText') tr From bf5e9016a4cb7889b3a9e39b90eb35cb8f7f9ec8 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 5 Feb 2014 17:26:09 -0700 Subject: [PATCH 066/159] fix(errors): `return next(err)` when experiencing errors, instead of res.json(500,{err:err}). Let the top-level error handler handle this (needed for upcoming versionerror discarding) --- src/controllers/user.js | 14 +++++++------- src/utils.js | 30 +++++++++++++++--------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index a44f5937da..45b093e85e 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -81,7 +81,7 @@ api.score = function(req, res, next) { var delta = user.ops.score({params:{id:task.id, direction:direction}}); user.save(function(err,saved){ - if (err) return res.json(500, {err: err}); + if (err) return next(err); // TODO this should be return {_v,task,stats,_tmp}, instead of merging everything togther at top-level response // However, this is the most commonly used API route, and changing it will mess with all 3rd party consumers. Bad idea :( res.json(200, _.extend({ @@ -193,7 +193,7 @@ api.update = function(req, res, next) { }); user.save(function(err) { if (!_.isEmpty(errors)) return res.json(401, {err: errors}); - if (err) return res.json(500, {err: err}); + if (err) return next(err); res.json(200, user); }); }; @@ -235,7 +235,7 @@ api.cron = function(req, res, next) { api['delete'] = function(req, res) { res.locals.user.remove(function(err){ - if (err) return res.json(500,{err:err}); + if (err) return next(err); res.send(200); }) } @@ -258,7 +258,7 @@ api.addTenGems = function(req, res) { var user = res.locals.user; user.balance += 2.5; user.save(function(err){ - if (err) return res.json(500,{err:err}); + if (err) return next(err); res.send(204); }) } @@ -381,7 +381,7 @@ api.cast = function(req, res) { var done = function(){ var err = arguments[0]; var saved = _.size(arguments == 3) ? arguments[2] : arguments[1]; - if (err) return res.json(500, {err:err}); + if (err) return next(err); res.json(saved); } @@ -445,12 +445,12 @@ _.each(shared.wrap({}).ops, function(op,k){ res.locals.user.ops[k](req,function(err, response){ // If we want to send something other than 500, pass err as {code: 200, message: "Not enough GP"} if (err) { - if (!err.code) return res.json(500,{err:err}); + if (!err.code) return next(err); if (err.code >= 400) return res.json(err.code,{err:err.message}); // In the case of 200s, they're friendly alert messages like "You're pet has hatched!" - still send the op } res.locals.user.save(function(err){ - if (err) return res.json(500,{err:err}); + if (err) return next(err); res.json(200,response); }) }) diff --git a/src/utils.js b/src/utils.js index 1fb45587af..a4a44d52c2 100644 --- a/src/utils.js +++ b/src/utils.js @@ -49,21 +49,21 @@ module.exports.setupConfig = function(){ }; module.exports.crashWorker = function(server,mongoose) { - return function(err, req, res, next) { - if (!cluster.isMaster) { - // make sure we close down within 30 seconds - var killtimer = setTimeout(function() { - process.exit(1); - }, 30000); - // But don't keep the process open just for that! - killtimer.unref(); - // stop taking new requests. - server.close(); - mongoose.connection.close(); - cluster.worker.disconnect(); - } - next(err); - }; + return function(err, req, res, next) { + if (!cluster.isMaster) { + // make sure we close down within 30 seconds + var killtimer = setTimeout(function() { + process.exit(1); + }, 30000); + // But don't keep the process open just for that! + killtimer.unref(); + // stop taking new requests. + server.close(); + mongoose.connection.close(); + cluster.worker.disconnect(); + } + next(err); + }; } From 4c3c4b2ae788db0a301ce84c617e201d7d1c065e Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 5 Feb 2014 17:31:37 -0700 Subject: [PATCH 067/159] perf(user): save user.save till very end of ops queue --- src/controllers/user.js | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index 45b093e85e..6780e50620 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -473,28 +473,33 @@ api.batchUpdate = function(req, res, next) { var oldSend = res.send; var oldJson = res.json; - var callOp = function(_req, cb) { - res.send = res.json = function(code, data) { - if (_.isNumber(code) && code >= 500) - return cb(code+": "+ (data.message ? data.message : data.err ? data.err : JSON.stringify(data))); - return cb(); - }; - api[_req.op](_req, res); - }; + // Stash user.save, we'll queue the save op till the end (so we don't overload the server) + var oldSave = user.save; + user.save = function(cb){cb(null,user)} - res.locals.ops = []; // Setup the array of functions we're going to call in parallel with async - var ops = _.transform(req.body, function(result, _req) { - if (!_.isEmpty(_req)) { - result.push(function(cb) { - res.locals.ops.push(_req); - callOp(_req, cb); - }); - } + res.locals.ops = []; + var ops = _.transform(req.body, function(m,_req){ + if (_.isEmpty(_req)) return; + m.push(function() { + var cb = arguments[arguments.length-1]; + res.locals.ops.push(_req); + res.send = res.json = function(code, data) { + if (_.isNumber(code) && code >= 500) + return cb(code+": "+ (data.message ? data.message : data.err ? data.err : JSON.stringify(data))); + return cb(); + }; + api[_req.op](_req, res); + }); + }) + // Finally, save user at the end + .concat(function(){ + user.save = oldSave; + user.save(arguments[arguments.length-1]); }); // call all the operations, then return the user object to the requester - async.series(ops, function(err) { + async.waterfall(ops, function(err,user) { res.json = oldJson; res.send = oldSend; if (err) return next(err); From 0c21f54c67b52b07c417fd8216c6b04bce59d0ab Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 5 Feb 2014 21:28:46 -0700 Subject: [PATCH 068/159] fix(user): make sure next is passed to all routes, and is available in err-back of batch updates --- src/controllers/user.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index 6780e50620..f580f0f360 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -34,7 +34,7 @@ api.getContent = function(req, res, next) { --------------- */ -findTask = function(req, res) { +findTask = function(req, res, next) { return task = res.locals.user.tasks[req.params.id]; }; @@ -233,7 +233,7 @@ api.cron = function(req, res, next) { // api.reroll // Shared.ops // api.reset // Shared.ops -api['delete'] = function(req, res) { +api['delete'] = function(req, res, next) { res.locals.user.remove(function(err){ if (err) return next(err); res.send(200); @@ -254,7 +254,7 @@ api['delete'] = function(req, res) { ------------------------------------------------------------------------ */ -api.addTenGems = function(req, res) { +api.addTenGems = function(req, res, next) { var user = res.locals.user; user.balance += 2.5; user.save(function(err){ @@ -268,7 +268,7 @@ api.addTenGems = function(req, res) { /* Setup Stripe response when posting payment */ -api.buyGems = function(req, res) { +api.buyGems = function(req, res, next) { var api_key = nconf.get('STRIPE_API_KEY'); var stripe = require("stripe")(api_key); var token = req.body.id; @@ -312,7 +312,7 @@ api.buyGems = function(req, res) { }); }; -api.cancelSubscription = function(req, res) { +api.cancelSubscription = function(req, res, next) { var api_key = nconf.get('STRIPE_API_KEY'); var stripe = require("stripe")(api_key); var user = res.locals.user; @@ -370,7 +370,7 @@ api.buyGemsPaypalIPN = function(req, res, next) { Spells ------------------------------------------------------------------------ */ -api.cast = function(req, res) { +api.cast = function(req, res, next) { var user = res.locals.user; var targetType = req.query.targetType; var targetId = req.query.targetId; @@ -489,7 +489,7 @@ api.batchUpdate = function(req, res, next) { return cb(code+": "+ (data.message ? data.message : data.err ? data.err : JSON.stringify(data))); return cb(); }; - api[_req.op](_req, res); + api[_req.op](_req, res, cb); }); }) // Finally, save user at the end From e268839bcb87580b6eec2742081f3ffed43ddd83 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 5 Feb 2014 21:33:24 -0700 Subject: [PATCH 069/159] chore(throttling): lower api limit a tad, just to test --- src/middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/middleware.js b/src/middleware.js index 781b6f7202..4450133f01 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -12,7 +12,7 @@ module.exports.apiThrottle = function(app) { catagories:{ normal: { // 2 req/s, but split as minutes - totalRequests: 120, + totalRequests: 80, every: 60000 } } From 90e9a1aeaa2dfd4a6dbd2a2c54766c788f8d8527 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Thu, 6 Feb 2014 17:17:21 +0100 Subject: [PATCH 070/159] i18n(refactor): load all files in a locale, not the ones defined in app.json, move env.t client code to own file, add env.isStaticPage (from isFrontPage) --- public/js/app.js | 18 ------------------ public/js/directives/directives.js | 4 ++-- public/js/env.js | 20 ++++++++++++++++++++ public/manifest.json | 3 +++ src/middleware.js | 11 ++++++++--- src/routes/pages.js | 4 +--- views/shared/footer.jade | 2 +- 7 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 public/js/env.js diff --git a/public/js/app.js b/public/js/app.js index 01e307245c..c642aea407 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,23 +1,5 @@ "use strict"; -window.env = window.env || {}; //FIX tests - -if(window.env.language && window.env.language.momentLang && window.env.language.momentLangCode){ - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.text = window.env.language.momentLang; - head.appendChild(script); - moment.lang(window.env.language.momentLangCode); -} - -window.env.t = function(stringName, vars){ - var string = window.env.translations[stringName]; - if(!string) return window._.template(window.env.translations.stringNotFound, {string: stringName}); - - return vars === undefined ? string : window._.template(string, vars); -} - window.habitrpg = angular.module('habitrpg', ['ngResource', 'ngSanitize', 'userServices', 'groupServices', 'memberServices', 'challengeServices', 'authServices', 'notificationServices', 'guideServices', 'authCtrl', diff --git a/public/js/directives/directives.js b/public/js/directives/directives.js index 879c3c603d..7a8e9d71fd 100644 --- a/public/js/directives/directives.js +++ b/public/js/directives/directives.js @@ -9,7 +9,7 @@ habitrpg.directive('taskFocus', return function(scope, elem, attrs) { scope.$watch(attrs.taskFocus, function(newval) { if ( newval ) { - $timeounvt(function() { + $timeout(function() { elem[0].focus(); }, 0, false); } @@ -26,7 +26,7 @@ habitrpg.directive('habitrpgAdsense', function() { template: '
    ', link: function ($scope, element, attrs) {} } -}) +}); habitrpg.directive('whenScrolled', function() { return function(scope, elm, attr) { diff --git a/public/js/env.js b/public/js/env.js new file mode 100644 index 0000000000..8a6611cd90 --- /dev/null +++ b/public/js/env.js @@ -0,0 +1,20 @@ +"use strict"; + +window.env = window.env || {}; //FIX tests + +// If Moment.js is loaded, +if(window.moment && window.env.language && window.env.language.momentLang && window.env.language.momentLangCode){ + var head = document.getElementsByTagName('head')[0]; + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.text = window.env.language.momentLang; + head.appendChild(script); + window.moment.lang(window.env.language.momentLangCode); +} + +window.env.t = function(stringName, vars){ + var string = window.env.translations[stringName]; + if(!string) return window._.template(window.env.translations.stringNotFound, {string: stringName}); + + return vars === undefined ? string : window._.template(string, vars); +} \ No newline at end of file diff --git a/public/manifest.json b/public/manifest.json index 416553e18e..61bed2cdae 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -33,6 +33,8 @@ "bower_components/habitrpg-shared/dist/habitrpg-shared.js", + "js/env.js", + "js/app.js", "js/services/sharedServices.js", "js/services/authServices.js", @@ -81,6 +83,7 @@ "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", "bower_components/angular-loading-bar/build/loading-bar.js", + "js/env.js", "js/static.js", "js/services/notificationServices.js", "bower_components/habitrpg-shared/script/userServices.js", diff --git a/src/middleware.js b/src/middleware.js index 4450133f01..edda3917a5 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -113,12 +113,12 @@ var getManifestFiles = function(page){ var translations = {}; var loadTranslations = function(locale){ - var files = require(path.join(__dirname, "/../node_modules/habitrpg-shared/locales/", locale, 'app.json')).files; + var files = fs.readdirSync(path.join(__dirname, "/../node_modules/habitrpg-shared/locales/", locale)); translations[locale] = {}; _.each(files, function(file){ _.merge(translations[locale], require(path.join(__dirname, "/../node_modules/habitrpg-shared/locales/", locale, file))); }); -} +}; // First fetch english so we can merge with missing strings in other languages loadTranslations('en'); @@ -193,7 +193,11 @@ module.exports.locals = function(req, res, next) { getUserLanguage(req, function(err, language){ if(err) return res.json(500, {err: err}); - language.momentLang = (momentLangs[language.code] || undefined); + var isStaticPage = req.url.split('/')[1] === 'static'; // If url contains '/static/' + console.log(isStaticPage) + + // Load moment.js language file only when not on static pages + language.momentLang = ((!isStaticPage && momentLangs[language.code])|| undefined); res.locals.habitrpg = { NODE_ENV: nconf.get('NODE_ENV'), @@ -205,6 +209,7 @@ module.exports.locals = function(req, res, next) { getBuildUrl: getBuildUrl, avalaibleLanguages: avalaibleLanguages, language: language, + isStaticPage: isStaticPage, translations: translations[language.code], t: function(stringName, vars){ var string = translations[language.code][stringName]; diff --git a/src/routes/pages.js b/src/routes/pages.js index a5ef570e2c..1c8dae8dc0 100644 --- a/src/routes/pages.js +++ b/src/routes/pages.js @@ -18,9 +18,7 @@ router.get('/', middleware.locals, function(req, res) { // -------- Marketing -------- router.get('/static/front', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/front', {env: env}); + res.render('static/front', {env: res.locals.habitrpg}); }); router.get('/static/privacy', middleware.locals, function(req, res) { diff --git a/views/shared/footer.jade b/views/shared/footer.jade index d85a8ce8f7..099fc27065 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -11,7 +11,7 @@ footer.footer(ng-controller='FooterCtrl') .span3 h4=env.t('footerCompany') ul.unstyled - if (!env.isFrontPage) + if (!env.isStaticPage) li .btn.btn-small.btn-success(ng-click='modals.buyGems = true') i.icon-heart.icon-white From d6b3279e5c64f52822b695626140a2cf56684ef3 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Thu, 6 Feb 2014 18:35:12 +0100 Subject: [PATCH 071/159] refactor(bs3): misc fixes --- public/css/footer.styl | 1 + public/css/index.styl | 28 ++-------------------------- public/css/tasks.styl | 4 +--- public/js/controllers/groupsCtrl.js | 4 ++-- 4 files changed, 6 insertions(+), 31 deletions(-) diff --git a/public/css/footer.styl b/public/css/footer.styl index 31cddc1e2e..ad03be3f23 100644 --- a/public/css/footer.styl +++ b/public/css/footer.styl @@ -4,5 +4,6 @@ .footer padding-top: 20px margin-top: 40px + padding-bottom: 20px border-top: 1px solid #e5e5e5 background-color: #f5f5f5 \ No newline at end of file diff --git a/public/css/index.styl b/public/css/index.styl index 89f7b90743..edfc5ed750 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -25,10 +25,7 @@ @import "./classes.styl" @import "./quests.styl" @import "./shared.styl" - -// fix exploding to very wide for some reason -.datepicker - width: 210px +@import "./footer.styl" html,body,p,h1,ul,li,table,tr,th,td margin: 0 @@ -45,29 +42,8 @@ hr border-bottom: 1px solid #ddd border-color: rgba(0,0,0,0.1) - -/* Footer --------------------------------------------------- */ - -/* Bootstrap website boilerplate */ -.footer - padding: 70px 0 - border-top: 1px solid #e5e5e5 - background-color: #f5f5f5 - -.footer p - margin-bottom: 0 - color: #777 - -.footer-links - margin: 10px 0 - -.footer-links li - display: inline - margin-right: 10px - /* Customizations to make footer sticky */ -/*html, body {height: 100%;}*/ + #wrap z-index:-1 padding: 0 15px // Required by Bootstrap 3 when using .container-fluid diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 5175732a56..ed44a187ad 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -147,11 +147,10 @@ for $stage in $stages padding-left: 7em // when a task is being dragged -.task.ui-sortable-helper { +.task.ui-sortable-helper box-shadow: 0 0 3px rgba(0,0,0,0.15), 0 0 5px rgba(0,0,0,0.1) transform: scale(1.05) outline: 1px solid rgba(0,0,0,0.2) -} // primary task commands // ---------------------- @@ -310,7 +309,6 @@ form [class$="-options"] padding: 1em 1em 0 color: #333 - z-index: 0 position: relative //background-color: diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 3b259c3019..9a97d9b1c3 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -99,8 +99,8 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' $scope.$watch('group.chat',$scope.chatChanged); $scope.caretChanged = function(newCaretPos) { - var relativeelement = $('.-options'); - var textarea = $('.chat-textarea'); + var relativeelement = $('.chat-form div:first'); + var textarea = $('.chat-form textarea'); var userlist = $('.list-at-user'); var offset = { x: textarea.offset().left - relativeelement.offset().left, From d313a4629901f277738393c3e8bb816795cad846 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Thu, 6 Feb 2014 18:46:43 +0100 Subject: [PATCH 072/159] refactor(bs3): push footer down --- public/css/index.styl | 5 +++++ views/index.jade | 31 +++++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index edfc5ed750..d15a95ff32 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -44,9 +44,14 @@ hr /* Customizations to make footer sticky */ +html, body + height: 100% + #wrap z-index:-1 padding: 0 15px // Required by Bootstrap 3 when using .container-fluid + min-height: 100% + height: auto !important @media (max-width: 600px) #wrap diff --git a/views/index.jade b/views/index.jade index 8cc51654a7..28aedc5728 100644 --- a/views/index.jade +++ b/views/index.jade @@ -24,23 +24,22 @@ html(ng-app="habitrpg", ng-controller="RootCtrl", ng-class='{"applying-action":a link(href='//fonts.googleapis.com/css?family=Lato:300,400,700,400italic,700italic', rel='stylesheet', type='text/css') - body(ng-cloak) - div(ng-controller='GroupsCtrl') - include ./shared/modals/index - include ./shared/header/header + body(ng-cloak, ng-controller='GroupsCtrl') + include ./shared/modals/index + include ./shared/header/header - include ./shared/tasks/lists - include ./main/index - include ./options/index + include ./shared/tasks/lists + include ./main/index + include ./options/index - #notification-area(ng-controller='NotificationCtrl') - #wrap.container-fluid - //if they hide the header, we still need user-menu visible - div(ng-if='user.preferences.hideHeader') - include ./shared/header/menu + #notification-area(ng-controller='NotificationCtrl') + #wrap.container-fluid + //if they hide the header, we still need user-menu visible + div(ng-if='user.preferences.hideHeader') + include ./shared/header/menu - .row - .col-md-12.exp-chart(ng-show='charts.exp') - #main(ui-view) + .row + .col-md-12.exp-chart(ng-show='charts.exp') + #main(ui-view) - include ./shared/footer \ No newline at end of file + include ./shared/footer \ No newline at end of file From 2837edd51f5873b4b8838e7ca1d1f88c9a196778 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 6 Feb 2014 01:34:22 -0700 Subject: [PATCH 073/159] chore(cluster): use domain-middleware properly, so domains are used to restart cluster workers --- package.json | 2 +- src/middleware.js | 32 ++++++++++++++++++++++++++++++++ src/server.js | 18 ++---------------- src/utils.js | 38 +------------------------------------- 4 files changed, 36 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index 172b6e48c9..b39c0cf754 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "pretty-data": "git://github.com/vkiryukhin/pretty-data#master", "js2xmlparser": "~0.1.2", "mongoose": "~3.8.1", - "domain-middleware": "~0.1.0", + "domain-middleware": "git://github.com/HabitRPG/domain-middleware#master", "swagger-node-express": "git://github.com/lefnire/swagger-node-express#habitrpg", "passport": "~0.1.18", "passport-facebook": "~1.0.2", diff --git a/src/middleware.js b/src/middleware.js index edda3917a5..78c754114b 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -5,8 +5,11 @@ var path = require('path'); var User = require('./models/user').model var limiter = require('connect-ratelimit'); var logging = require('./logging'); +var domainMiddleware = require('domain-middleware'); +var cluster = require('cluster'); module.exports.apiThrottle = function(app) { + if (nconf.get('NODE_ENV') !== 'production') return; app.use(limiter({ end:false, catagories:{ @@ -23,6 +26,35 @@ module.exports.apiThrottle = function(app) { }); } +module.exports.domainMiddleware = function(server,mongoose) { + return domainMiddleware({ + server: { + close:function(){ + server.close(); + mongoose.connection.close(); + } + }, + killTimeout: 10000 + }); +} + +module.exports.errorHandler = function(err, req, res, next) { + //res.locals.domain.emit('error', err); + // when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER) + var stack = (err.stack ? err.stack : err.message ? err.message : err) + + "\n ----------------------------\n" + + "\n\noriginalUrl: " + req.originalUrl + + "\n\nauth: " + req.headers['x-api-user'] + ' | ' + req.headers['x-api-key'] + + "\n\nheaders: " + JSON.stringify(req.headers) + + "\n\nbody: " + JSON.stringify(req.body) + + (res.locals.ops ? "\n\ncompleted ops: " + JSON.stringify(res.locals.ops) : ""); + logging.error(stack); + var message = err.message ? err.message : err; + message = (message.length < 200) ? message : message.substring(0,100) + message.substring(message.length-100,message.length); + res.json(500,{err:message}); //res.end(err.message); +} + + module.exports.forceSSL = function(req, res, next){ var baseUrl = nconf.get("BASE_URL"); // Note x-forwarded-proto is used by Heroku & nginx, you'll have to do something different if you're not using those diff --git a/src/server.js b/src/server.js index 04981a8147..c585c3a95f 100644 --- a/src/server.js +++ b/src/server.js @@ -24,7 +24,6 @@ if (cluster.isMaster && (isDev || isProd)) { var express = require("express"); var http = require("http"); var path = require("path"); - var domainMiddleware = require('domain-middleware'); var swagger = require("swagger-node-express"); var middleware = require('./middleware'); @@ -91,14 +90,9 @@ if (cluster.isMaster && (isDev || isProd)) { // ------------ Server Configuration ------------ - domainMiddleware({ - server: server, - killTimeout: 3000 - }), - app.set("port", nconf.get('PORT')); - middleware.apiThrottle(app); + app.use(middleware.domainMiddleware(server,mongoose)); if (!isProd) app.use(express.logger("dev")); app.use(express.compress()); app.set("views", __dirname + "/../views"); @@ -125,11 +119,6 @@ if (cluster.isMaster && (isDev || isProd)) { app.use(express['static'](path.join(__dirname, "/../build"), { maxAge: maxAge })); app.use(express['static'](path.join(__dirname, "/../public"))); - // development only - //if ("development" === app.get("env")) { - // app.use(express.errorHandler()); - //} - // Custom Directives app.use(require('./routes/pages').middleware); app.use(require('./routes/auth').middleware); @@ -137,11 +126,8 @@ if (cluster.isMaster && (isDev || isProd)) { app.use('/api/v2', v2); app.use('/api/v1', require('./routes/apiv1').middleware); app.use('/export', require('./routes/dataexport').middleware); - - app.use(utils.crashWorker(server,mongoose)); - app.use(utils.errorHandler); - require('./routes/apiv2.coffee')(swagger, v2); + app.use(middleware.errorHandler); server.on('request', app); server.listen(app.get("port"), function() { diff --git a/src/utils.js b/src/utils.js index a4a44d52c2..fd29e8f4e8 100644 --- a/src/utils.js +++ b/src/utils.js @@ -2,7 +2,6 @@ var nodemailer = require('nodemailer'); var nconf = require('nconf'); var crypto = require('crypto'); var path = require("path"); -var cluster = require("cluster"); module.exports.sendEmail = function(mailData) { var smtpTransport = nodemailer.createTransport("SMTP",{ @@ -46,39 +45,4 @@ module.exports.setupConfig = function(){ Error.stackTraceLimit = Infinity; if (nconf.get('NODE_ENV') === 'production') require('newrelic'); -}; - -module.exports.crashWorker = function(server,mongoose) { - return function(err, req, res, next) { - if (!cluster.isMaster) { - // make sure we close down within 30 seconds - var killtimer = setTimeout(function() { - process.exit(1); - }, 30000); - // But don't keep the process open just for that! - killtimer.unref(); - // stop taking new requests. - server.close(); - mongoose.connection.close(); - cluster.worker.disconnect(); - } - next(err); - }; -} - - -module.exports.errorHandler = function(err, req, res, next) { - // when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER) - var stack = (err.stack ? err.stack : err.message ? err.message : err) + - "\n ----------------------------\n" + - "\n\noriginalUrl: " + req.originalUrl + - "\n\nauth: " + req.headers['x-api-user'] + ' | ' + req.headers['x-api-key'] + - "\n\nheaders: " + JSON.stringify(req.headers) + - "\n\nbody: " + JSON.stringify(req.body) + - (res.locals.ops ? "\n\ncompleted ops: " + JSON.stringify(res.locals.ops) : ""); - var logging = require('./logging'); - logging.error(stack); - var message = err.message ? err.message : err; - message = (message.length < 200) ? message : message.substring(0,100) + message.substring(message.length-100,message.length); - res.json(500,{err:message}); //res.end(err.message); -} +}; \ No newline at end of file From 55c28cbe523fb41dc905b13931234780aa80e78b Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 6 Feb 2014 11:01:38 -0700 Subject: [PATCH 074/159] chore(domain-middleware): back to real module version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b39c0cf754..a529116deb 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "pretty-data": "git://github.com/vkiryukhin/pretty-data#master", "js2xmlparser": "~0.1.2", "mongoose": "~3.8.1", - "domain-middleware": "git://github.com/HabitRPG/domain-middleware#master", "swagger-node-express": "git://github.com/lefnire/swagger-node-express#habitrpg", "passport": "~0.1.18", "passport-facebook": "~1.0.2", @@ -48,7 +47,8 @@ "connect-ratelimit": "0.0.6", "winston": "~0.7.2", "winston-mail": "~0.2.7", - "winston-newrelic": "~0.1.4" + "winston-newrelic": "~0.1.4", + "domain-middleware": "~0.1.0" }, "private": true, "subdomain": "habitrpg", From 66c7f48e2bde48eb4b13908d953c4faae74fe7e0 Mon Sep 17 00:00:00 2001 From: deilann Date: Thu, 6 Feb 2014 11:37:35 -0800 Subject: [PATCH 075/159] updating LFG Updating Looking for Group to the proper (not dead) link. --- views/options/social/tavern.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 78a2e5a136..1221da51b4 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -27,7 +27,7 @@ table.table.table-striped tr td - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Board:Looking_for_a_Group_(LFG)')=env.t('lfgPosts') + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Board:The_Archery_-_LFG')=env.t('lfgPosts') tr td a(target='_blank', href='https://vimeo.com/57654086')=env.t('tutorial') From f7ded9d6908623c9abf544eb9519e0741ca634ce Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 6 Feb 2014 13:27:57 -0700 Subject: [PATCH 076/159] chore(logging): remove console.log(isStaticPage) --- src/middleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/middleware.js b/src/middleware.js index 78c754114b..236b6807ff 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -226,7 +226,7 @@ module.exports.locals = function(req, res, next) { if(err) return res.json(500, {err: err}); var isStaticPage = req.url.split('/')[1] === 'static'; // If url contains '/static/' - console.log(isStaticPage) + //console.log(isStaticPage) // Load moment.js language file only when not on static pages language.momentLang = ((!isStaticPage && momentLangs[language.code])|| undefined); From e36d3264bed5a015888f834c967d92f953365e51 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 6 Feb 2014 20:08:50 -0700 Subject: [PATCH 077/159] chore(cluster): temporarily disable cluster (revert here) --- src/middleware.js | 14 -------------- src/server.js | 17 +---------------- 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/src/middleware.js b/src/middleware.js index 236b6807ff..311995fe3f 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -5,8 +5,6 @@ var path = require('path'); var User = require('./models/user').model var limiter = require('connect-ratelimit'); var logging = require('./logging'); -var domainMiddleware = require('domain-middleware'); -var cluster = require('cluster'); module.exports.apiThrottle = function(app) { if (nconf.get('NODE_ENV') !== 'production') return; @@ -26,18 +24,6 @@ module.exports.apiThrottle = function(app) { }); } -module.exports.domainMiddleware = function(server,mongoose) { - return domainMiddleware({ - server: { - close:function(){ - server.close(); - mongoose.connection.close(); - } - }, - killTimeout: 10000 - }); -} - module.exports.errorHandler = function(err, req, res, next) { //res.locals.domain.emit('error', err); // when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER) diff --git a/src/server.js b/src/server.js index c585c3a95f..3f2cb65f3e 100644 --- a/src/server.js +++ b/src/server.js @@ -1,5 +1,4 @@ // Only do the minimal amount of work before forking just in case of a dyno restart -var cluster = require("cluster"); var _ = require('lodash'); var nconf = require('nconf'); var utils = require('./utils'); @@ -8,18 +7,6 @@ var logging = require('./logging'); var isProd = nconf.get('NODE_ENV') === 'production'; var isDev = nconf.get('NODE_ENV') === 'development'; -if (cluster.isMaster && (isDev || isProd)) { - // Fork workers. - _.times(require('os').cpus().length, function(){ - cluster.fork(); - }); - - cluster.on('disconnect', function(worker, code, signal) { - var w = cluster.fork(); // replace the dead worker - logging.info('[%s] [master:%s] worker:%s disconnect! new worker:%s fork', new Date(), process.pid, worker.process.pid, w.process.pid); - }); - -} else { require('coffee-script'); // remove this once we've fully converted over var express = require("express"); var http = require("http"); @@ -92,7 +79,6 @@ if (cluster.isMaster && (isDev || isProd)) { app.set("port", nconf.get('PORT')); middleware.apiThrottle(app); - app.use(middleware.domainMiddleware(server,mongoose)); if (!isProd) app.use(express.logger("dev")); app.use(express.compress()); app.set("views", __dirname + "/../views"); @@ -134,5 +120,4 @@ if (cluster.isMaster && (isDev || isProd)) { return logging.info("Express server listening on port " + app.get("port")); }); - module.exports = server; -} + module.exports = server; \ No newline at end of file From 106a7fa4752ca152c1354a67debd121b48867f15 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 6 Feb 2014 12:12:44 -0700 Subject: [PATCH 078/159] refactor(errors): refactor the way errors, offline, & queued ops are handled --- public/js/app.js | 38 +++++++++++++++------- public/js/controllers/notificationCtrl.js | 3 ++ public/js/services/notificationServices.js | 2 +- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index c642aea407..fdffa58ad6 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -200,24 +200,40 @@ window.habitrpg = angular.module('habitrpg', } // Handle errors - var interceptor = ['$rootScope', '$q', function ($rootScope, $q) { + $httpProvider.responseInterceptors.push(['$rootScope', '$q', function ($rootScope, $q) { function success(response) { return response; } function error(response) { - //var status = response.status; - response.data = (response.data.err) ? response.data.err : response.data; - if (response.status == 0) response.data = window.env.t('serverUnreach'); - if (response.status == 500) response.data += window.env.t('seeConsole'); + debugger; + // Offline + if (response.status == 0 || + // don't know why we're getting 404 here, should be 0 + (response.status == 404 && _.isEmpty(response.data))) { + $rootScope.$broadcast('responseText', window.env.t('serverUnreach')); - var error = response.status == 0 ? response.data : (window.env.t('error') + ' ' + response.status + ': ' + response.data); - $rootScope.$broadcast('responseError', error); - console.log(arguments); - return $q.reject(response); + // Needs refresh + } else if (response.needRefresh) { + $rootScope.$broadcast('responseError', "The site has been updated and the page needs to refresh. The last action has not been recorded, please refresh and try again."); + + // 400 range? + } else if (response < 500) { + $rootScope.$broadcast('responseText', response.data.err || response.data); + + // Error + } else { + var error = 'Please reload, ' + + '"'+window.env.t('error')+' '+(response.data.err || response.data || 'something went wrong')+'"' + + window.env.t('seeConsole'); + $rootScope.$broadcast('responseError', error); + console.error(response); + } + + //return $q.reject(response); // this completely halts the chain, meaning we can't queue offline actions + return response; } return function (promise) { return promise.then(success, error); } - }]; - $httpProvider.responseInterceptors.push(interceptor); + }]); }]) diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index dec5dde0be..5bbdac834f 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -103,5 +103,8 @@ habitrpg.controller('NotificationCtrl', $rootScope.$on('responseError', function(ev, error){ Notification.error(error); }); + $rootScope.$on('responseText', function(ev, error){ + Notification.text(error); + }); } ]); diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 98411901b8..c381976423 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -10,7 +10,7 @@ angular.module("notificationServices", []) top_offset: 20, align: 'right', //('left', 'right', or 'center') width: 250, //(integer, or 'auto') - delay: 7000, + delay: (type=='error') ? 0 : 7000, allow_dismiss: true, stackup_spacing: 10 // spacing between consecutive stacecked growls. }); From e24d7476e8043c39234f65b13b22eb6d37f0a7cd Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 09:20:28 -0700 Subject: [PATCH 079/159] refactor(errors): remove more `res.json(500)` in favor of `next(err)` --- src/controllers/auth.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/controllers/auth.js b/src/controllers/auth.js index ab141c268e..25bc4d78bb 100644 --- a/src/controllers/auth.js +++ b/src/controllers/auth.js @@ -39,7 +39,7 @@ api.authWithSession = function(req, res, next) { //[todo] there is probably a mo if (!(req.session && req.session.userId)) return res.json(401, NO_SESSION_FOUND); User.findOne({_id: uid}, function(err, user) { - if (err) return res.json(500, {err: err}); + if (err) return next(err); if (_.isEmpty(user)) return res.json(401, NO_USER_FOUND); res.locals.user = user; next(); @@ -107,14 +107,14 @@ api.loginLocal = function(req, res, next) { var password = req.body.password; if (!(username && password)) return res.json(401, {err:'Missing :username or :password in request body, please provide both'}); User.findOne({'auth.local.username': username}, function(err, user){ - if (err) return res.json(500,{err:err}); + if (err) return next(err); if (!user) return res.json(401, {err:"Username '" + username + "' not found. Usernames are case-sensitive, click 'Forgot Password' if you can't remember the capitalization."}); // We needed the whole user object first so we can get his salt to encrypt password comparison User.findOne({ 'auth.local.username': username, 'auth.local.hashed_password': utils.encryptPassword(password, user.auth.local.salt) }, function(err, user){ - if (err) return res.json(500,{err:err}); + if (err) return next(err); if (!user) return res.json(401,{err:'Incorrect password'}); res.json({id: user._id,token: user.apiToken}); }); @@ -164,7 +164,7 @@ api.resetPassword = function(req, res, next){ hashed_password = utils.encryptPassword(newPassword, salt); User.findOne({'auth.local.email':email}, function(err, user){ - if (err) return res.json(500,{err:err}); + if (err) return next(err); if (!user) return res.send(500, {err:"Couldn't find a user registered for email " + email}); user.auth.local.salt = salt; user.auth.local.hashed_password = hashed_password; @@ -187,18 +187,18 @@ api.changePassword = function(req, res, next) { confirmNewPassword = req.body.confirmNewPassword; if (newPassword != confirmNewPassword) - return res.json(500, {err: "Password & Confirm don't match"}); + return res.json(401, {err: "Password & Confirm don't match"}); var salt = user.auth.local.salt, hashed_old_password = utils.encryptPassword(oldPassword, salt), hashed_new_password = utils.encryptPassword(newPassword, salt); if (hashed_old_password !== user.auth.local.hashed_password) - return res.json(500, {err:"Old password doesn't match"}); + return res.json(401, {err:"Old password doesn't match"}); user.auth.local.hashed_password = hashed_new_password; user.save(function(err, saved){ - if (err) res.json(500,{err:err}); + if (err) next(err); res.send(200); }) } From 82d9233d99167d6704c878884dcc49a55cc7d884 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 10:01:31 -0700 Subject: [PATCH 080/159] feat(rainbow-hair): add rainbow hair colors --- views/options/profile.jade | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/views/options/profile.jade b/views/options/profile.jade index c238ea79ec..5078c9dccd 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -40,6 +40,12 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') each color in ['candycane','frost','winternight','holly'] button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') + li.customize-menu + menu(label=env.t('rainbowColors')) + each color in ['rainbow','yellow','green','purple','blue','TRUred'] + button(type='button', ng-class='{locked: !user.purchased.hair.color.#{color}}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') + button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.color.rainbow && user.purchased.hair.color.yellow && user.purchased.hair.color.green && user.purchased.hair.color.purple && user.purchased.hair.color.blue && user.purchased.hair.color.TRUred', ng-click='unlock("hair.color.rainbow,hair.color.yellow,hair.color.green,hair.color.purple,hair.color.blue,hair.color.TRUred")')!= env.t('unlockSet5') + ' ' + h5=env.t('bodyHair') // Bangs li.customize-menu From d0342628340ce7dce95fa20177ccbcfe1ebf93e6 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 11:40:34 -0700 Subject: [PATCH 081/159] feat(premium): subscriber mystery item (doesn't yet do anything) --- views/options/inventory/inventory.jade | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index e123c665ab..d85855ff78 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -64,6 +64,11 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') button.customize-option(popover='{{Content.special.snowball.notes}}', popover-title='{{Content.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.snowball)', class='inventory_special_snowball') .badge.badge-info.stack-count {{user.items.special.snowball}} + li.customize-menu(ng-if='user.purchased.plan.customerId') + menu.pets-menu(label=env.t('subscriberItem')) + div + button.customize-option(popover=env.t('subscriberItemText'), popover-trigger='mouseenter', popover-placement='right', class='inventory_present') + .span6 h2=env.t('market') .row-fluid From 00af5f7d0258b0f7dddef8ede40bd825b057748a Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 11:41:50 -0700 Subject: [PATCH 082/159] feat(bug-crushing): add the critical hammer of bug-crushing --- src/models/user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/models/user.js b/src/models/user.js index b442980d0b..38dd2409b4 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -68,7 +68,8 @@ var UserSchema = new Schema({ level: Number, // 1-7, see https://trello.com/c/wkFzONhE/277-contributor-gear admin: Boolean, text: String, // Artisan, Friend, Blacksmith, etc - contributions: String // a markdown textarea to list their contributions + links + contributions: String, // a markdown textarea to list their contributions + links + critical: String }, balance: {type: Number, 'default':0}, From 82241634b3c832ddae714979fd0aa3d406e609dd Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 11:42:05 -0700 Subject: [PATCH 083/159] chore(bailey): bailey re: rainbow hair, critical hammer, mystery item --- views/shared/modals/new-stuff.jade | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index f6601c3bb6..9e34f32778 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -25,14 +25,34 @@ div(modal='modals.newStuff') h3.popover-title a(target='_blank', href='https://twitter.com/Mihakuu') Bailey .popover-content - h5 Vice - p You awaken after the Winter Wonderland festivities and birthday celebrations with a smile. It's been a snowy, cheerful couple months, and the NPCs have finally returned to their normal attire. But today something is very wrong. Shadowy whisps cover the ground of Habitica, the sky has darkened. At the tavern you hear @DanielTheBard struming dark tales on his lute, and @Baconsaur peering into a mug, grumbling about her mounts swallowed in the shadows. They speak of the same thing: Vice, a dark an terrible foe. This new boss arc is a 3-part quest that requires level 30 to begin. Bring your strongest party members, and don't miss your dailies - there's a powerful weapon at the end! + table.table.table-striped + tr + td + h5 February Mystery Item + p We're excited to announce a new feature a s a big thank-you to the awesome people who subscribe to HabitRPG! Every month, all subscribers will now receive a limited-edition mystery item! The mystery item will be a stats-free costume piece (like the Absurd Party Robes) that will only be available to the people who are subscribers each month. The February 2014 item will be revealed on the 23rd to everyone, but all people who are subscribers during the month of February will receive it. Get excited - and thank you so much for helping to support HabitRPG! We love you. + tr + td + h5 Critical Hammer Of Bug-Crushing + p Some of you may have noticed that we periodically have some bugs that are nastier than the norm - the dreaded critical bugs. These monstrous apparitions have been snapping at the heels of many a player. For updates on what we're currently working on to improve site stability, read this link - and then jump in to help! Not only will programming assistance reward you with the usual contributor levels, but if you actually manage to fix a bug marked "critical," you will now receive the Critical Hammer of Bug-Crushing as your reward! + tr + td + + h5 Rainbow Hair Colors + p Want to spruce up your avatar? Rainbow hair colors are now available! Dye your luscious locks purple, green, or even rainbow-striped, and passersby will look at you with envy. p - small.muted by @baconsaur & @DanielTheBard - p - small.muted 02/01/2014 + small.muted By Lemoness, mariahm, crystalphoenix, aiseant, and zoebeagle + hr + h5 02/01/2014 + table.table.table-striped + tr + td + h5 Vice + p You awaken after the Winter Wonderland festivities and birthday celebrations with a smile. It's been a snowy, cheerful couple months, and the NPCs have finally returned to their normal attire. But today something is very wrong. Shadowy whisps cover the ground of Habitica, the sky has darkened. At the tavern you hear @DanielTheBard struming dark tales on his lute, and @Baconsaur peering into a mug, grumbling about her mounts swallowed in the shadows. They speak of the same thing: Vice, a dark an terrible foe. This new boss arc is a 3-part quest that requires level 30 to begin. Bring your strongest party members, and don't miss your dailies - there's a powerful weapon at the end! + p + small.muted by @baconsaur & @DanielTheBard + h5 01/30/2014 table.table.table-striped tr From 677d23939d3b114b24c8520ee339fcf0569bd944 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 11:53:01 -0700 Subject: [PATCH 084/159] chore(bailey): add images for previous commit --- views/shared/modals/new-stuff.jade | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index 9e34f32778..6edf896590 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -29,16 +29,22 @@ div(modal='modals.newStuff') tr td h5 February Mystery Item - p We're excited to announce a new feature a s a big thank-you to the awesome people who subscribe to HabitRPG! Every month, all subscribers will now receive a limited-edition mystery item! The mystery item will be a stats-free costume piece (like the Absurd Party Robes) that will only be available to the people who are subscribers each month. The February 2014 item will be revealed on the 23rd to everyone, but all people who are subscribers during the month of February will receive it. Get excited - and thank you so much for helping to support HabitRPG! We love you. + p + .pull-right.inventory_present + | We're excited to announce a new feature a s a big thank-you to the awesome people who subscribe to HabitRPG! Every month, all subscribers will now receive a limited-edition mystery item! The mystery item will be a stats-free costume piece (like the Absurd Party Robes) that will only be available to the people who are subscribers each month. The February 2014 item will be revealed on the 23rd to everyone, but all people who are subscribers during the month of February will receive it. Get excited - and thank you so much for helping to support HabitRPG! We love you. tr td h5 Critical Hammer Of Bug-Crushing - p Some of you may have noticed that we periodically have some bugs that are nastier than the norm - the dreaded critical bugs. These monstrous apparitions have been snapping at the heels of many a player. For updates on what we're currently working on to improve site stability, read this link - and then jump in to help! Not only will programming assistance reward you with the usual contributor levels, but if you actually manage to fix a bug marked "critical," you will now receive the Critical Hammer of Bug-Crushing as your reward! + p + .pull-right.weapon_special_critical + | Some of you may have noticed that we periodically have some bugs that are nastier than the norm - the dreaded critical bugs. These monstrous apparitions have been snapping at the heels of many a player. For updates on what we're currently working on to improve site stability, read this link - and then jump in to help! Not only will programming assistance reward you with the usual contributor levels, but if you actually manage to fix a bug marked "critical," you will now receive the Critical Hammer of Bug-Crushing as your reward! tr td h5 Rainbow Hair Colors - p Want to spruce up your avatar? Rainbow hair colors are now available! Dye your luscious locks purple, green, or even rainbow-striped, and passersby will look at you with envy. + p + .pull-right.customize-option.hair_bangs_1_rainbow + | Want to spruce up your avatar? Rainbow hair colors are now available! Dye your luscious locks purple, green, or even rainbow-striped, and passersby will look at you with envy. p small.muted By Lemoness, mariahm, crystalphoenix, aiseant, and zoebeagle From 2807b3f87dec6de6daebf9742f016353a54e7805 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 7 Feb 2014 21:08:46 +0100 Subject: [PATCH 085/159] chore(logging): remove console.log --- src/middleware.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/middleware.js b/src/middleware.js index 311995fe3f..66536a006b 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -212,7 +212,6 @@ module.exports.locals = function(req, res, next) { if(err) return res.json(500, {err: err}); var isStaticPage = req.url.split('/')[1] === 'static'; // If url contains '/static/' - //console.log(isStaticPage) // Load moment.js language file only when not on static pages language.momentLang = ((!isStaticPage && momentLangs[language.code])|| undefined); From 5d0ef5542993aab4e1f5230f1603d6fdc5100435 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 13:43:41 -0700 Subject: [PATCH 086/159] chore(bailey): update with stability info & subscriber links --- views/shared/modals/new-stuff.jade | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index 6edf896590..fc911dd637 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -31,7 +31,7 @@ div(modal='modals.newStuff') h5 February Mystery Item p .pull-right.inventory_present - | We're excited to announce a new feature a s a big thank-you to the awesome people who subscribe to HabitRPG! Every month, all subscribers will now receive a limited-edition mystery item! The mystery item will be a stats-free costume piece (like the Absurd Party Robes) that will only be available to the people who are subscribers each month. The February 2014 item will be revealed on the 23rd to everyone, but all people who are subscribers during the month of February will receive it. Get excited - and thank you so much for helping to support HabitRPG! We love you. + | We're excited to announce a new feature a s a big thank-you to the awesome people who subscribe to HabitRPG! Every month, all subscribers will now receive a limited-edition mystery item! The mystery item will be a stats-free costume piece (like the Absurd Party Robes) that will only be available to the people who are subscribers each month. The February 2014 item will be revealed on the 23rd to everyone, but all people who are subscribers during the month of February will receive it. Subscribe now, get excited, and thank you so much for helping to support HabitRPG! We love you. tr td h5 Critical Hammer Of Bug-Crushing @@ -45,8 +45,16 @@ div(modal='modals.newStuff') p .pull-right.customize-option.hair_bangs_1_rainbow | Want to spruce up your avatar? Rainbow hair colors are now available! Dye your luscious locks purple, green, or even rainbow-striped, and passersby will look at you with envy. + tr + td + h5 Stability Update + p We've stabilized the site a lot (we're still working out kinks, but we're way better now). Follow the progress here, but here are some workarounds for now: + ul + li Click slower. VersionError is caused by clicking things off too fast (we're working on a fix). + li If you see an error, refresh before proceeding. + p - small.muted By Lemoness, mariahm, crystalphoenix, aiseant, and zoebeagle + small.muted By Lemoness, mariahm, crystalphoenix, aiseant, zoebeagle, cole, lefnire hr From ef3e1396cb3f36e06ae18f64c60dad785c14f046 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 13:55:39 -0700 Subject: [PATCH 087/159] Revert "chore(bower): strange temporary fix. Can't remember where I picked this" This reverts commit 2d4d103ca6104d7d60ac355f42269db2b5a7db74. --- .bowerrc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.bowerrc b/.bowerrc index 20772d5d24..9c9ea40600 100644 --- a/.bowerrc +++ b/.bowerrc @@ -1,8 +1,3 @@ { - "directory": "public/bower_components", - "storage": { - "packages": ".bower-cache", - "registry": ".bower-registry" - }, - "tmp": ".bower-tmp" + "directory": "public/bower_components" } \ No newline at end of file From e404f357056063c3671fe1832c000f630a31df83 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 14:17:48 -0700 Subject: [PATCH 088/159] Revert "chore(cluster): temporarily disable cluster (revert here)" This reverts commit e36d3264bed5a015888f834c967d92f953365e51. --- src/middleware.js | 14 ++++++++++++++ src/server.js | 17 ++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/middleware.js b/src/middleware.js index 311995fe3f..236b6807ff 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -5,6 +5,8 @@ var path = require('path'); var User = require('./models/user').model var limiter = require('connect-ratelimit'); var logging = require('./logging'); +var domainMiddleware = require('domain-middleware'); +var cluster = require('cluster'); module.exports.apiThrottle = function(app) { if (nconf.get('NODE_ENV') !== 'production') return; @@ -24,6 +26,18 @@ module.exports.apiThrottle = function(app) { }); } +module.exports.domainMiddleware = function(server,mongoose) { + return domainMiddleware({ + server: { + close:function(){ + server.close(); + mongoose.connection.close(); + } + }, + killTimeout: 10000 + }); +} + module.exports.errorHandler = function(err, req, res, next) { //res.locals.domain.emit('error', err); // when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER) diff --git a/src/server.js b/src/server.js index 3f2cb65f3e..c585c3a95f 100644 --- a/src/server.js +++ b/src/server.js @@ -1,4 +1,5 @@ // Only do the minimal amount of work before forking just in case of a dyno restart +var cluster = require("cluster"); var _ = require('lodash'); var nconf = require('nconf'); var utils = require('./utils'); @@ -7,6 +8,18 @@ var logging = require('./logging'); var isProd = nconf.get('NODE_ENV') === 'production'; var isDev = nconf.get('NODE_ENV') === 'development'; +if (cluster.isMaster && (isDev || isProd)) { + // Fork workers. + _.times(require('os').cpus().length, function(){ + cluster.fork(); + }); + + cluster.on('disconnect', function(worker, code, signal) { + var w = cluster.fork(); // replace the dead worker + logging.info('[%s] [master:%s] worker:%s disconnect! new worker:%s fork', new Date(), process.pid, worker.process.pid, w.process.pid); + }); + +} else { require('coffee-script'); // remove this once we've fully converted over var express = require("express"); var http = require("http"); @@ -79,6 +92,7 @@ var isDev = nconf.get('NODE_ENV') === 'development'; app.set("port", nconf.get('PORT')); middleware.apiThrottle(app); + app.use(middleware.domainMiddleware(server,mongoose)); if (!isProd) app.use(express.logger("dev")); app.use(express.compress()); app.set("views", __dirname + "/../views"); @@ -120,4 +134,5 @@ var isDev = nconf.get('NODE_ENV') === 'development'; return logging.info("Express server listening on port " + app.get("port")); }); - module.exports = server; \ No newline at end of file + module.exports = server; +} From 00c8a7f757512ba09ad0fd52a3d7f2de1e491272 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 14:18:04 -0700 Subject: [PATCH 089/159] chore(cluster): max 2-core --- src/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server.js b/src/server.js index c585c3a95f..6cefab8db0 100644 --- a/src/server.js +++ b/src/server.js @@ -10,7 +10,7 @@ var isDev = nconf.get('NODE_ENV') === 'development'; if (cluster.isMaster && (isDev || isProd)) { // Fork workers. - _.times(require('os').cpus().length, function(){ + _.times(_.min([require('os').cpus().length,2]), function(){ cluster.fork(); }); From 25941623b19730204f09ef484b22bbd2ad658b49 Mon Sep 17 00:00:00 2001 From: deilann Date: Fri, 7 Feb 2014 17:44:56 -0800 Subject: [PATCH 090/159] putting in issue ticket correctly putting in issue ticket for "report a bug" --- views/options/social/tavern.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 1221da51b4..ac08376161 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -39,7 +39,7 @@ a(target='_blank', href='http://habitrpg.wikia.com/wiki/Glossary')=env.t('glossary') tr td - a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues')=env.t('reportAP') + a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues/2760')=env.t('reportAP') tr td a(target='_blank', href='https://trello.com/c/8gzGlle8')=env.t('requestAF') From 37340d23180da02d3742dc9be40a5fb780ecb13b Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 21:47:50 -0700 Subject: [PATCH 091/159] fix(mounts): fix pets & mounts css to position the user based on pet/mount equip --- public/css/avatar.styl | 31 ++++++++++--------------------- views/shared/header/avatar.jade | 2 +- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/public/css/avatar.styl b/public/css/avatar.styl index e0cb66bc2a..ddb676ef84 100644 --- a/public/css/avatar.styl +++ b/public/css/avatar.styl @@ -53,7 +53,7 @@ future re: pets and whatnot, this is just temporary. // always visible on the user's own avatar .herobox:after opacity: 0 -.herobox.isUser:after +.herobox.isUser:not(.hasMount):after opacity: 1 // make it a bit special background darken($better, 15%) @@ -65,21 +65,17 @@ future re: pets and whatnot, this is just temporary. .active border 1px solid black -// vertically center avatar sprite -// depending on if they have a pet -.herobox.hasPet - padding-top: 2em -.herobox:not(.hasPet) - padding-top: 1.75em - -// if it is the user's avatar, check if -// they have a pet and pad accordingly -.herobox.hasPet.isUser - padding-top: 3.25em - // if not user's avatar, remove lines for party unity .herobox:not(.isUser) - outline: 0 + outline: 0 + +// vertically center avatar sprite depending on if they have a pet +.herobox.hasPet + padding-top: 1.75em +.herobox:not(.hasPet) + padding-top: 2em +.herobox.hasMount + padding-top:0em // expose hero info on hover, taking // into account the extra pet space @@ -87,13 +83,6 @@ future re: pets and whatnot, this is just temporary. background: desaturate(lighten($better, 30%), 10%) &:after opacity: 1 -/* .herobox.hasPet - &:hover, &:focus - padding-top: 3.25em -.herobox:not(.hasPet) - &:hover, &:focus - padding-top: 2.5em */ - // positioning the sprites, etc .herobox diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index 9b368cfe09..cb4923357a 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -3,7 +3,7 @@ Removing it will remove the user's name, but will allow more room for mounts & helms. IMO this is the lesser of two evils, revisit //-figure.herobox(ng-click='clickMember(profile._id)', data-name='{{profile.profile.name}}', ng-class='{isUser: profile.id==user.id, hasPet: profile.items.currentPet}', data-level='{{profile.stats.lvl}}', data-uid='{{profile.id}}', rel='popover', data-placement='bottom', data-trigger='hover', data-html='true', data-content="
    Level: {{profile.stats.lvl}}
    GP: {{profile.stats.gp | number:0}}
    {{count(profile.items.pets)}} / 90 Pets Found
    ") -figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(profile._id)', data-name='{{profile.profile.name}}', ng-class='{isUser: (user._id==profile._id && !user.items.currentMount), hasPet: profile.items.currentMount, "cast-target": applyingAction, isLeader: party.leader==profile._id}') +figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(profile._id)', data-name='{{profile.profile.name}}', ng-class='{isUser: user._id==profile._id, hasPet:profile.items.currentPet, hasMount:profile.items.currentMount, "cast-target": applyingAction, isLeader: party.leader==profile._id}') .character-sprites // Mount Body span(ng-if='profile.items.currentMount', class='Mount_Body_{{profile.items.currentMount}}') From 5db96ebca2fbd5b64f49af03a5137ea80f6b1673 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 21:57:26 -0700 Subject: [PATCH 092/159] fix(bs3): port pet feeding bar --- views/options/inventory/stable.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index d9e1ce8130..e38114cf7f 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -56,8 +56,8 @@ script(type='text/ng-template', id='partials/options.inventory.pets.html') menu div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') - .progress(ng-show='!user.items.mounts[pet]', ng-class='{"progress-success": user.items.pets[pet]<50}') - .bar(style="width: {{user.items.pets[pet]/.5}}%;") + .progress(ng-show='!user.items.mounts[pet]') + .progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%") button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') .PixelPaw button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') From 8d03cfc6b59b82900badbc9b4397f079e11ee2e1 Mon Sep 17 00:00:00 2001 From: Lorian Date: Fri, 7 Feb 2014 21:08:13 -0800 Subject: [PATCH 093/159] Made incorrect username and password show the same error, for security purposes. --- src/controllers/auth.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/auth.js b/src/controllers/auth.js index 25bc4d78bb..47c3b19c24 100644 --- a/src/controllers/auth.js +++ b/src/controllers/auth.js @@ -108,14 +108,14 @@ api.loginLocal = function(req, res, next) { if (!(username && password)) return res.json(401, {err:'Missing :username or :password in request body, please provide both'}); User.findOne({'auth.local.username': username}, function(err, user){ if (err) return next(err); - if (!user) return res.json(401, {err:"Username '" + username + "' not found. Usernames are case-sensitive, click 'Forgot Password' if you can't remember the capitalization."}); + if (!user) return res.json(401, {err:"Username or password incorrect. Click 'Forgot Password' for help with either. (Note: usernames are case-sensitive)"}); // We needed the whole user object first so we can get his salt to encrypt password comparison User.findOne({ 'auth.local.username': username, 'auth.local.hashed_password': utils.encryptPassword(password, user.auth.local.salt) }, function(err, user){ if (err) return next(err); - if (!user) return res.json(401,{err:'Incorrect password'}); + if (!user) return res.json(401,{err:"Username or password incorrect. Click 'Forgot Password' for help with either. (Note: usernames are case-sensitive)"}); res.json({id: user._id,token: user.apiToken}); }); }); From 7fbd84afd943adfb84beb3af7cec6fbdcc3343fe Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 7 Feb 2014 22:20:26 -0700 Subject: [PATCH 094/159] chore(angular): upgrade 1.2.1 => 1.2.11 --- bower.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 9958494676..843fb7e786 100644 --- a/bower.json +++ b/bower.json @@ -17,9 +17,9 @@ "jquery": "~2.1.0", "jquery.cookie": "~1.4.0", "jquery-ui": "~1.10.3", - "angular": "~1.2.1", - "angular-sanitize": "~1.2.1", - "angular-resource": "~1.2.1", + "angular": "~1.2.11", + "angular-sanitize": "~1.2.11", + "angular-resource": "~1.2.11", "angular-ui-utils": "~0.1.0", "angular-ui-select2": "https://github.com/angular-ui/ui-select2.git#4469fd7a32eba2e28d5e3dd319b49e1ad090b167", "angular-bootstrap": "~0.10.0", @@ -42,6 +42,9 @@ "ngInfiniteScroll": "~1.0.0" }, "devDependencies": { - "angular-mocks": "~1.2.1" + "angular-mocks": "~1.2.11" + }, + "resolutions": { + "angular": "~1.2.11" } } From 0fe0cb4f2d97be42dc0dd6c3a1b670f5765973be Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 16:27:34 +0100 Subject: [PATCH 095/159] refactor(bs3): labels style and text, buttons classes --- public/css/index.styl | 3 +++ views/options/profile.jade | 18 +++++++++--------- views/options/settings.jade | 2 +- views/options/social/challenges.jade | 22 +++++++++++----------- views/options/social/chat-box.jade | 2 +- views/options/social/chat-message.jade | 2 +- views/options/social/group.jade | 4 ++-- views/options/social/hall.jade | 6 +++--- views/options/social/index.jade | 4 ++-- views/options/social/tavern.jade | 2 +- views/shared/footer.jade | 2 +- views/shared/header/avatar.jade | 2 +- views/shared/header/header.jade | 2 +- views/shared/modals/achievements.jade | 10 +++++----- views/shared/modals/buy-gems.jade | 2 +- views/shared/modals/classes.jade | 4 ++-- views/shared/modals/death.jade | 2 +- views/shared/modals/drops.jade | 2 +- views/shared/modals/new-stuff.jade | 6 +++--- views/shared/modals/quests.jade | 16 ++++++++-------- views/shared/modals/rebirth.jade | 8 ++++---- views/shared/modals/reroll.jade | 6 +++--- views/shared/modals/settings.jade | 8 ++++---- views/shared/profiles/achievements.jade | 4 ++-- views/shared/tasks/task.jade | 2 +- views/static/front.jade | 2 +- views/static/login-modal.jade | 2 +- views/static/plans.jade | 4 ++-- 28 files changed, 76 insertions(+), 73 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index d15a95ff32..ebf37c54d6 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -130,6 +130,9 @@ a span.glyphicon a.label color: #fff +.label .glyphicon + color: #fff + .muted color: #999 diff --git a/views/options/profile.jade b/views/options/profile.jade index c78226b5b8..bcc3d2101a 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -8,8 +8,8 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') h5=env.t('bodySize') .btn-group - button.btn.btn-small(ng-class='{active: user.preferences.size=="slim"}', ng-click='set({"preferences.size":"slim"})')=env.t('bodySlim') - button.btn.btn-small(ng-class='{active: user.preferences.size=="broad"}', ng-click='set({"preferences.size":"broad"})')=env.t('bodyBroad') + button.btn.btn-sm.btn-default(ng-class='{active: user.preferences.size=="slim"}', ng-click='set({"preferences.size":"slim"})')=env.t('bodySlim') + button.btn.btn-sm.btn-default(ng-class='{active: user.preferences.size=="broad"}', ng-click='set({"preferences.size":"broad"})')=env.t('bodyBroad') menu(type='list') li.customize-menu @@ -21,7 +21,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') each shirt in ['convict', 'cross', 'fire', 'horizon', 'ocean', 'purple', 'rainbow', 'redblue', 'thunder', 'tropical', 'zombie'] button.customize-option(type='button', class='{{user.preferences.size}}_shirt_'+shirt, ng-class='{locked: !user.purchased.shirt.'+shirt+'}', ng-click='unlock("shirt.'+shirt+'")') menu - button.btn.btn-small.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")')!= env.t('unlockSet5') + ' ' + button.btn.btn-sm.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")')!= env.t('unlockSet5') + ' ' .col-md-4 @@ -44,7 +44,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') menu(label=env.t('rainbowColors')) each color in ['rainbow','yellow','green','purple','blue','TRUred'] button(type='button', ng-class='{locked: !user.purchased.hair.color.#{color}}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.color.rainbow && user.purchased.hair.color.yellow && user.purchased.hair.color.green && user.purchased.hair.color.purple && user.purchased.hair.color.blue && user.purchased.hair.color.TRUred', ng-click='unlock("hair.color.rainbow,hair.color.yellow,hair.color.green,hair.color.purple,hair.color.blue,hair.color.TRUred")')!= env.t('unlockSet5') + ' ' + button.btn.btn-sm.btn-primary(ng-hide='user.purchased.hair.color.rainbow && user.purchased.hair.color.yellow && user.purchased.hair.color.green && user.purchased.hair.color.purple && user.purchased.hair.color.blue && user.purchased.hair.color.TRUred', ng-click='unlock("hair.color.rainbow,hair.color.yellow,hair.color.green,hair.color.purple,hair.color.blue,hair.color.TRUred")')!= env.t('unlockSet5') + ' ' h5=env.t('bodyHair') // Bangs @@ -63,7 +63,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') when true: button(class='hair_base_#{k}_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.base":#{k}})') when false: button(class='hair_base_#{k}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.base.#{k}}', ng-click='unlock("hair.base.#{k}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.base.2 && user.purchased.hair.base.4 && user.purchased.hair.base.5 && user.purchased.hair.base.6 && user.purchased.hair.base.7 && user.purchased.hair.base.8', ng-click='unlock("hair.base.2,hair.base.4,hair.base.5,hair.base.6,hair.base.7,hair.base.8")')!= env.t('unlockSet5') + ' ' + button.btn.btn-sm.btn-primary(ng-hide='user.purchased.hair.base.2 && user.purchased.hair.base.4 && user.purchased.hair.base.5 && user.purchased.hair.base.6 && user.purchased.hair.base.7 && user.purchased.hair.base.8', ng-click='unlock("hair.base.2,hair.base.4,hair.base.5,hair.base.6,hair.base.7,hair.base.8")')!= env.t('unlockSet5') + ' ' h5=env.t('bodyFacialHair') @@ -81,7 +81,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') each num in [1,2] button(class='hair_mustache_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.mustache.#{num}}', ng-click='unlock("hair.mustache.#{num}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.mustache.1 && user.purchased.hair.mustache.2 && user.purchased.hair.beard.1 && user.purchased.hair.beard.2 && user.purchased.hair.beard.3', ng-click='unlock("hair.mustache.1,hair.mustache.2,hair.beard.1,hair.beard.2,hair.beard.3")')!= env.t('unlockSet5') + ' ' + button.btn.btn-sm.btn-primary(ng-hide='user.purchased.hair.mustache.1 && user.purchased.hair.mustache.2 && user.purchased.hair.beard.1 && user.purchased.hair.beard.2 && user.purchased.hair.beard.3', ng-click='unlock("hair.mustache.1,hair.mustache.2,hair.beard.1,hair.beard.2,hair.beard.3")')!= env.t('unlockSet5') + ' ' .col-md-4 h3=env.t('bodySkin') @@ -100,7 +100,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') menu each color in ['eb052b','f69922','f5d70f','0ff591','2b43f6','d7a9f7','800ed0','rainbow'] button.customize-option(type='button', class='skin_#{color}', ng-class='{locked: !user.purchased.skin.#{color}}', ng-click='unlock("skin.#{color}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.skin.eb052b && user.purchased.skin.f69922 && user.purchased.skin.f5d70f && user.purchased.skin.0ff591 && user.purchased.skin.2b43f6 && user.purchased.skin.d7a9f7 && user.purchased.skin.800ed0 && user.purchased.skin.rainbow', ng-click='unlock("skin.eb052b,skin.f69922,skin.f5d70f,skin.0ff591,skin.2b43f6,skin.d7a9f7,skin.800ed0,skin.rainbow")')!= env.t('unlockSet5') + ' ' + button.btn.btn-sm.btn-primary(ng-hide='user.purchased.skin.eb052b && user.purchased.skin.f69922 && user.purchased.skin.f5d70f && user.purchased.skin.0ff591 && user.purchased.skin.2b43f6 && user.purchased.skin.d7a9f7 && user.purchased.skin.800ed0 && user.purchased.skin.rainbow', ng-click='unlock("skin.eb052b,skin.f69922,skin.f5d70f,skin.0ff591,skin.2b43f6,skin.d7a9f7,skin.800ed0,skin.rainbow")')!= env.t('unlockSet5') + ' ' // Special Events // restore to d4df481 to see purchasing + "limited edition" code @@ -120,7 +120,7 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') h4 =env.t('class') + ': ' span {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[user.stats.class] }}  - a.btn.btn-danger.btn-mini(ng-click='changeClass(null)')=env.t('changeClass') + a.btn.btn-danger.btn-xs(ng-click='changeClass(null)')=env.t('changeClass') small 3 table.table.table-striped tr @@ -156,7 +156,7 @@ script(id='partials/options.profile.stats.html', type='text/ng-template')   span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') - a.btn.btn-primary.btn-mini(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) + a.btn.btn-primary.btn-xs(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) span.glyphicon.glyphicon-download   =env.t('distributePoints') diff --git a/views/options/settings.jade b/views/options/settings.jade index 8499188cb4..5a4d9ed51e 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -160,4 +160,4 @@ script(id='partials/options.settings.subscription.html',type='text/ng-template') div(style='font-size:22px') span.glyphicon.glyphicon-ok=env.t('subscribed') div(ng-include="'partials/options.settings.subscription.perks.html'") - .btn.btn-small.btn-danger(ng-click='cancelSubscription()')=env.t('cancelSub') + .btn.btn-sm.btn-danger(ng-click='cancelSubscription()')=env.t('cancelSub') diff --git a/views/options/social/challenges.jade b/views/options/social/challenges.jade index e361f11493..857888c3dd 100644 --- a/views/options/social/challenges.jade +++ b/views/options/social/challenges.jade @@ -1,5 +1,5 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.close.html') - a.btn.btn-small.btn-danger(ng-click="delete(closingChal)")=env.t('delete') + a.btn.btn-sm.btn-danger(ng-click="delete(closingChal)")=env.t('delete') h5= '- ' + env.t('or') + ' -' select(ui-select2, ng-required=true, ng-model='closingChal.winner', data-placeholder=env.t('selectWinner'), ng-change='selectWinner(closingChal)', ) option(value='') @@ -18,19 +18,19 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.me .modal-body habitrpg-tasks(main=false) .modal-footer - a.btn(ng-click='$state.go("^")')=env.t('close') + a.btn.btn-default(ng-click='$state.go("^")')=env.t('close') script(type='text/ng-template', id='partials/options.social.challenges.detail.html') // Edit button div(bindonce='challenge', ng-if='challenge.leader==user._id') div(ng-hide='challenge._locked==false') - button.btn.btn-small.btn-default(ng-click='challenge._locked = false')=env.t('edit') - button.btn.btn-small.btn-warning(ng-click='close(challenge, $event)', tooltip=env.t('deleteOrSelect'))=env.t('endChallenge') + button.btn.btn-sm.btn-default(ng-click='challenge._locked = false')=env.t('edit') + button.btn.btn-sm.btn-warning(ng-click='close(challenge, $event)', tooltip=env.t('deleteOrSelect'))=env.t('endChallenge') form(ng-show='challenge._locked==false') .form-group(ng-show='challenge._locked==false') - button.btn.btn-small.btn-primary(ng-click='save(challenge)')=env.t('save') - button.btn.btn-small.btn-default(ng-click='challenge._locked=true')=env.t('cancel') + button.btn.btn-sm.btn-primary(ng-click='save(challenge)')=env.t('save') + button.btn.btn-sm.btn-default(ng-click='challenge._locked=true')=env.t('cancel') .form-group input.form-control(type='text', ng-model='challenge.name') .form-group @@ -46,7 +46,7 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.ht // Member List div(bindonce='challenge', ng-if='challenge.members.length > 0') - a.btn.btn-primary.btn-small.pull-right(href='/api/v2/challenges/{{challenge._id}}/csv') + a.btn.btn-primary.btn-sm.pull-right(href='/api/v2/challenges/{{challenge._id}}/csv') =env.t('exportChallengeCSV') h3=env.t('hows') menu @@ -70,8 +70,8 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') h3=env.t('filter') + ':' h4=env.t('groups') ul.list-unstyled - a.btn.btn-mini.pull-left(ng-click='selectAll()')=env.t('all') - a.btn.btn-mini(ng-click='selectNone()')=env.t('none') + a.btn.btn-xs.btn-default.pull-left(ng-click='selectAll()')=env.t('all') + a.btn.btn-xs.btn-default(ng-click='selectNone()')=env.t('none') br .checkbox(ng-repeat='group in groupsFilter') label @@ -154,10 +154,10 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') td=env.t('prize') li // leave / join - a.btn.btn-small.btn-danger(ng-show='challenge._isMember', ng-click='clickLeave(challenge, $event)') + a.btn.btn-sm.btn-danger(ng-show='challenge._isMember', ng-click='clickLeave(challenge, $event)') span.glyphicon.glyphicon-ban-circle =env.t('leave') - a.btn.btn-small.btn-success(ng-hide='challenge._isMember', ng-click='join(challenge)') + a.btn.btn-sm.btn-success(ng-hide='challenge._isMember', ng-click='join(challenge)') span.glyphicon.glyphicon-ok =env.t('join') a.accordion-toggle(ng-click='toggle(challenge._id)') {{challenge.name}} diff --git a/views/options/social/chat-box.jade b/views/options/social/chat-box.jade index 77e8f5470d..e1831531de 100644 --- a/views/options/social/chat-box.jade +++ b/views/options/social/chat-box.jade @@ -4,7 +4,7 @@ form.chat-form(ng-submit='postChat(group,message.content)') span.user-list(ng-show='!isAtListHidden') ul.list-at-user li(bindonce='response', ng-repeat='user in response | filter:query.text | limitTo: 5', ng-click='autoComplete(user)') - span.username.label(class='label-contributor-{{user.contributor.level}}', ng-class='{"label-npc": user.backer.npc}') {{user.user}} + span.username.label.label-default(ng-class='userLevelStyle(user)') {{user.user}} .row .col-md-9 include ../../shared/formatting-help diff --git a/views/options/social/chat-message.jade b/views/options/social/chat-message.jade index 5d48818b8c..d88faa1c7f 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -6,7 +6,7 @@ li.chat-message(bindonce='group.chat', ng-repeat='message in group.chat', bo-cla | - span.muted.time(from-now='message.timestamp',style='padding:0px 3px') span(style='padding:0px 3px') - a.label(ng-show='countExists(message.likes)',ng-class='{"label-success":message.likes[user._id]}',ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} + a.label.label-default(ng-show='countExists(message.likes)',ng-class='{"label-success":message.likes[user._id]}',ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} a.chat-plus-one.muted(ng-show='!countExists(message.likes)',ng-click='likeChatMessage(group,message)') +1 a(bo-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)',style='padding: 0px 3px') span.glyphicon.glyphicon-trash(tooltip=env.t('delete')) diff --git a/views/options/social/group.jade b/views/options/social/group.jade index 44c33c4da9..7fcef0f7b9 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -23,7 +23,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild hr .npc_ian.pull-left p=env.t('questStart') - button.btn.btn-small.btn-warning(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='party.$questAccept({"force":true})')=env.t('begin') + button.btn.btn-sm.btn-warning(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='party.$questAccept({"force":true})')=env.t('begin') //-TODO Cancel button //-TODO Both force-start & cancel should only be available to quest-initiator @@ -74,7 +74,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild p=env.t('bossColl2') - button.btn.btn-mini.btn-danger(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort') + button.btn.btn-xs.btn-danger(ng-if='!group.quest.leader || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort') // ------ Information ------- .panel.panel-default diff --git a/views/options/social/hall.jade b/views/options/social/hall.jade index 2a648ee94c..2027521bfd 100644 --- a/views/options/social/hall.jade +++ b/views/options/social/hall.jade @@ -68,11 +68,11 @@ script(type='text/ng-template', id='partials/options.social.hall.heroes.html') tr(ng-repeat='hero in heroes') td span(ng-if='hero.contributor.admin',popover=env.t('gamemaster'),popover-trigger='mouseenter',popover-placement='right') - a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') + a.label.label-default(ng-class='userLevelStyle(hero)', ng-click='clickMember(hero._id, true)') | {{hero.profile.name}}  span.glyphicon.glyphicon-star span(ng-if='!hero.contributor.admin') - a.label(class='label-contributor-{{hero.contributor.level}}', ng-class='{"label-npc": hero.backer.npc}', ng-click='clickMember(hero._id, true)') {{hero.profile.name}} + a.label.label-default(ng-class='userLevelStyle(hero)', ng-click='clickMember(hero._id, true)') {{hero.profile.name}} td(ng-if='user.contributor.admin') {{hero._id}} td {{hero.contributor.level}} td {{hero.contributor.text}} @@ -89,6 +89,6 @@ script(type='text/ng-template', id='partials/options.social.hall.patrons.html') tbody tr(ng-repeat='patron in patrons') td - a.label(class='label-contributor-{{patron.contributor.level}}', ng-class='{"label-npc": patron.backer.npc}', ng-click='clickMember(patron._id, true)') {{patron.profile.name}} + a.label.label-default(ng-class='userLevelStyle(patron)', ng-click='clickMember(patron._id, true)') {{patron.profile.name}} td(ng-if='user.contributor.admin') {{patron._id}} td {{patron.backer.tier}} diff --git a/views/options/social/index.jade b/views/options/social/index.jade index 3f3303b0d3..0c17467641 100644 --- a/views/options/social/index.jade +++ b/views/options/social/index.jade @@ -38,10 +38,10 @@ script(type='text/ng-template', id='partials/options.social.guilds.public.html') li='{{group.memberCount}} ' + env.t('members') li // join / leave - a.btn.btn-small.btn-danger(ng-show='group._isMember', ng-click='clickLeave(group, $event)') + a.btn.btn-sm.btn-danger(ng-show='group._isMember', ng-click='clickLeave(group, $event)') span.glyphicon.glyphicon-ban-circle =env.t('leave') - a.btn.btn-small.btn-success(ng-hide='group._isMember', ng-click='join(group)') + a.btn.btn-sm.btn-success(ng-hide='group._isMember', ng-click='join(group)') span.glyphicon.glyphicon-ok =env.t('join') h4 {{group.name}} diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 175c4abab6..503dc52e8a 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -14,7 +14,7 @@ .popover-content =env.t('danielText') div - button.btn.btn-large.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') + button.btn.btn-lg.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') span(ng-show='user.preferences.sleep')=env.t('innCheckOut') span(ng-hide='user.preferences.sleep')=env.t('innCheckIn') .alert.alert-info(ng-show='user.preferences.sleep') diff --git a/views/shared/footer.jade b/views/shared/footer.jade index c7a9644470..768ebe2628 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -13,7 +13,7 @@ footer.footer(ng-controller='FooterCtrl') ul.list-unstyled if (!env.isStaticPage) li - .btn.btn-small.btn-success(ng-click='openModal("buyGems")') + .btn.btn-sm.btn-success(ng-click='openModal("buyGems")') span.glyphicon.glyphicon-heart =env.t('companyDonate') li diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index cb4923357a..cc9a3d986b 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -43,7 +43,7 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( span(ng-class='{zzz:profile.preferences.sleep}') // FIXME handle @minimal, this might have to be a directive span.current-pet(class='Pet-{{profile.items.currentPet}}', ng-show='profile.items.currentPet && !minimal') - .avatar-level(ng-class='userLevelStyle(profile,"label label-default")') + .avatar-level.label.label-default(ng-class='userLevelStyle(profile)') span.glyphicon.glyphicon-circle-arrow-up(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') =env.t('lvl') | {{profile.stats.lvl}} diff --git a/views/shared/header/header.jade b/views/shared/header/header.jade index 8c85538495..d62920ab4c 100644 --- a/views/shared/header/header.jade +++ b/views/shared/header/header.jade @@ -1,5 +1,5 @@ .header-wrap(ng-controller='HeaderCtrl') - a.label.undo-button(x-bind='click:undo', ng-show='_undo')=env.t('undo') + a.label.label-default.undo-button(x-bind='click:undo', ng-show='_undo')=env.t('undo') div(ng-if='!user.preferences.hideHeader') include menu diff --git a/views/shared/modals/achievements.jade b/views/shared/modals/achievements.jade index 3693a22d43..ca884290f7 100644 --- a/views/shared/modals/achievements.jade +++ b/views/shared/modals/achievements.jade @@ -6,7 +6,7 @@ script(id='modals/achievements/streak.html', type='text/ng-template') .achievement.achievement-thermometer =env.t('streakerAchievement') .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') + button.btn.btn-default(ng-click='$close()')=env.t('ok') // Max Gear script(id='modals/achievements/ultimateGear.html', type='text/ng-template') @@ -16,7 +16,7 @@ script(id='modals/achievements/ultimateGear.html', type='text/ng-template') .achievement.achievement-armor =env.t('gearAchievement') .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') + button.btn.btn-default(ng-click='$close()')=env.t('ok') // Beast Master script(id='modals/achievements/beastMaster.html', type='text/ng-template') @@ -27,7 +27,7 @@ script(id='modals/achievements/beastMaster.html', type='text/ng-template') .achievement.achievement-rat =env.t('beastAchievement') .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') + button.btn.btn-default(ng-click='$close()')=env.t('ok') // Contributor // activated by user.flags.contributor @@ -40,7 +40,7 @@ script(id='modals/achievements/contributor.html', type='text/ng-template') !=env.t('contribModal', {name: "{{user.profile.name}}", level: "{{user.contributor.level}}"}) a(href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank')=env.t('contribLink') .modal-footer - button.btn.btn-default.cancel(ng-click='set({"flags.contributor":false}); $close()')=env.t('ok') + button.btn.btn-default(ng-click='set({"flags.contributor":false}); $close()')=env.t('ok') //Rebirth script(id='modals/achievements/rebirth.html', type='text/ng-template') @@ -50,4 +50,4 @@ script(id='modals/achievements/rebirth.html', type='text/ng-template') .achievement.achievement-sun =env.t('rebirthAchievement', {number: "{{user.achievements.rebirths}}", level: "{{user.achievements.rebirthLevel}}"}) .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('ok') + button.btn.btn-default(ng-click='$close()')=env.t('ok') diff --git a/views/shared/modals/buy-gems.jade b/views/shared/modals/buy-gems.jade index fface7fe89..8c3f0faa52 100644 --- a/views/shared/modals/buy-gems.jade +++ b/views/shared/modals/buy-gems.jade @@ -29,4 +29,4 @@ script(id='modals/buyGems.html', type='text/ng-template') div(ng-include="'partials/options.settings.subscription.html'") .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('cancel') + button.btn.btn-default(ng-click='$close()')=env.t('cancel') diff --git a/views/shared/modals/classes.jade b/views/shared/modals/classes.jade index 089eaf7e34..097b8ee927 100644 --- a/views/shared/modals/classes.jade +++ b/views/shared/modals/classes.jade @@ -72,5 +72,5 @@ script(type='text/ng-template', id='modals/chooseClass.html') .well(ng-show='selectedClass=="healer"')=env.t('healerText') .modal-footer - button.btn.btn-small.btn-danger.cancel(ng-click='user.ops.disableClasses({}); $close()', popover-placement='top', popover-trigger='mouseenter', popover=env.t('optOutText'))=env.t('optOut') - button.btn.btn-primary.cancel(ng-disabled='!selectedClass' ng-click='changeClass(selectedClass); $close()')=env.t('select') \ No newline at end of file + button.btn.btn-sm.btn-danger(ng-click='user.ops.disableClasses({}); $close()', popover-placement='top', popover-trigger='mouseenter', popover=env.t('optOutText'))=env.t('optOut') + button.btn.btn-primary(ng-disabled='!selectedClass' ng-click='changeClass(selectedClass); $close()')=env.t('select') \ No newline at end of file diff --git a/views/shared/modals/death.jade b/views/shared/modals/death.jade index 4c756524d7..842564835a 100644 --- a/views/shared/modals/death.jade +++ b/views/shared/modals/death.jade @@ -11,6 +11,6 @@ script(type='text/ng-template', id='modals/death.html') .row .col-md-3 p - a.btn.btn-danger.btn-large(ng-click='user.ops.revive({}); $close()')=env.t('continue') + a.btn.btn-danger.btn-lg(ng-click='user.ops.revive({}); $close()')=env.t('continue') .col-md-9 p=env.t('dieText') diff --git a/views/shared/modals/drops.jade b/views/shared/modals/drops.jade index a7904187a0..c2dbac24af 100644 --- a/views/shared/modals/drops.jade +++ b/views/shared/modals/drops.jade @@ -10,4 +10,4 @@ script(type='text/ng-template', id='modals/dropsEnabled.html') span.item-drop-icon(class='Pet_Currency_Gem') span!=env.t('useGems') .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('close') \ No newline at end of file + button.btn.btn-default(ng-click='$close()')=env.t('close') \ No newline at end of file diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index a838aa32ea..b198fdb3ca 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -10,7 +10,7 @@ script(type='text/ng-template', id='modals/mathUpdates.html') br p iOS users, iTunes is on vacation until 12/28. Until we can push the updated app, you'll need to sync periodically to get the corrected numbers (app has old math, server saves the correct numbers). Android goes out ASAP. More info on Trello. .modal-footer - button.btn.btn-default.cancel(ng-click='User.set({"flags.mathUpdates":true}); $close()') Dismiss + button.btn.btn-default(ng-click='User.set({"flags.mathUpdates":true}); $close()') Dismiss script(type='text/ng-template', id='modals/newStuff.html') .modal-header @@ -501,5 +501,5 @@ script(type='text/ng-template', id='modals/newStuff.html') a(href='https://trello.com/card/custom-day-start/50e5d3684fe3a7266b0036d6/15') Add custom day start .modal-footer - button.btn.btn-default.cancel(ng-click='$close()') Cool - button.btn.btn-warning.cancel(ng-click='dismissAlert(); $close()') Dismiss This Alert + button.btn.btn-default(ng-click='$close()') Cool + button.btn.btn-warning(ng-click='dismissAlert(); $close()') Dismiss This Alert diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index a7e2e5e451..8635b192ad 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -19,7 +19,7 @@ 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":""}); $close()')=env.t('accept') + button.btn.btn-primary(ng-click='set({"party.quest.completed":""}); $close()')=env.t('accept') script(type='text/ng-template', id='modals/showQuest.html') .modal-header @@ -33,8 +33,8 @@ 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(); $close()')=env.t('cancel') - button.btn.btn-default.btn-primary(ng-click='questInit(); $close()')=env.t('inviteParty') + button.btn.btn-default(ng-click='closeQuest(); $close()')=env.t('cancel') + button.btn.btn-primary(ng-click='questInit(); $close()')=env.t('inviteParty') script(type='text/ng-template', id='modals/buyQuest.html') .modal-header @@ -44,8 +44,8 @@ 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(); $close()')=env.t('neverMind') - button.btn.btn-default.btn-large.btn-primary(ng-click='purchase("quests", quest); closeQuest(); $close()')=env.t('buyQuest') + button.btn.btn-default(ng-click='closeQuest(); $close()')=env.t('neverMind') + button.btn.btn-primary(ng-click='purchase("quests", quest); closeQuest(); $close()')=env.t('buyQuest') script(type='text/ng-template', id='modals/questInvitation.html') .modal-header @@ -55,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; $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') + button.btn.btn-default(ng-click='questHold = true; $close()')=env.t('askLater') + button.btn.btn-default(ng-click='party.$questReject(); $close()')=env.t('reject') + button.btn.btn-primary(ng-click='party.$questAccept(); $close()')=env.t('accept') diff --git a/views/shared/modals/rebirth.jade b/views/shared/modals/rebirth.jade index 4eeb07f7df..495eccdaab 100644 --- a/views/shared/modals/rebirth.jade +++ b/views/shared/modals/rebirth.jade @@ -8,7 +8,7 @@ script(type='text/ng-template', id='modals/rebirthEnabled.html') p span=env.t('rebirthUnlock') .modal-footer - button.btn.btn-default.cancel(ng-click='$close()')=env.t('close') + button.btn.btn-default(ng-click='$close()')=env.t('close') script(type='text/ng-template', id='modals/rebirth.html') .modal-header @@ -35,12 +35,12 @@ script(type='text/ng-template', id='modals/rebirth.html') .achievement-sun.pull-left(style='margin-right: 5px') p=env.t('rebirthEarnAchievement') .modal-footer - button.btn.btn-default.btn-large.cancel(ng-click='$close()')=env.t('neverMind') + button.btn.btn-default(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 2') - a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') + a.btn.btn-success(ng-click='openModal("buyGems")')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 2', ng-controller='SettingsCtrl') - a.btn.btn-danger.btn-large(ng-click='$close(); rebirth()')=env.t('beReborn') + a.btn.btn-danger(ng-click='$close(); rebirth()')=env.t('beReborn') span.gem-cost | 8  =env.t('gems') diff --git a/views/shared/modals/reroll.jade b/views/shared/modals/reroll.jade index f01d53e4ea..ae7460b44d 100644 --- a/views/shared/modals/reroll.jade +++ b/views/shared/modals/reroll.jade @@ -7,12 +7,12 @@ script(type='text/ng-template', id='modals/reroll.html') p=env.t('fortifyText') .modal-footer - button.btn.btn-default.btn-large.cancel(ng-click='$close()')=env.t('neverMind') + button.btn.btn-default(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 1') - a.btn.btn-success.btn-large(ng-click='openModal("buyGems")')=env.t('buyMoreGems') + a.btn.btn-success(ng-click='openModal("buyGems")')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 1', ng-controller='SettingsCtrl') - a.btn.btn-danger.btn-large(ng-click='$close(); reroll()')=env.t('fortify') + a.btn.btn-danger(ng-click='$close(); reroll()')=env.t('fortify') span.gem-cost | 4  = env.t('gems') diff --git a/views/shared/modals/settings.jade b/views/shared/modals/settings.jade index 149d39d6cf..15db914df2 100644 --- a/views/shared/modals/settings.jade +++ b/views/shared/modals/settings.jade @@ -5,7 +5,7 @@ script(type='text/ng-template', id='modals/reset.html') p=env.t('resetText1') p=env.t('resetText2') .modal-footer - button.btn.btn-default.cancel(ng-click='$close();')=env.t('neverMind') + button.btn.btn-default(ng-click='$close();')=env.t('neverMind') button.btn.btn-danger(ng-click='$close(); reset()')=env.t('resetDo') script(type='text/ng-template', id='modals/restore.html') @@ -46,9 +46,9 @@ script(type='text/ng-template', id='modals/restore.html') label.control-label=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') + a.btn.btn-sm.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-default(ng-click='$close()')=env.t('discardChanges') button.btn.btn-primary(ng-click='restore(); $close();')=env.t('saveAndClose') script(type='text/ng-template', id='modals/delete.html') @@ -62,4 +62,4 @@ script(type='text/ng-template', id='modals/delete.html') input.form-control(type='text', ng-model='_deleteAccount') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('neverMind') - button.btn.btn-danger.btn-small(ng-disabled='_deleteAccount != "DELETE"', ng-click='$close(); delete()')=env.t('deleteDo') + button.btn.btn-danger(ng-disabled='_deleteAccount != "DELETE"', ng-click='$close(); delete()')=env.t('deleteDo') diff --git a/views/shared/profiles/achievements.jade b/views/shared/profiles/achievements.jade index 64cb816b10..ccf0468a4f 100644 --- a/views/shared/profiles/achievements.jade +++ b/views/shared/profiles/achievements.jade @@ -24,8 +24,8 @@ div(ng-if='profile.contributor.level || user._id == profile._id') .achievement.achievement-firefox(ng-if='profile.contributor.level') div(ng-class='{muted: !profile.contributor.level}') h5 - span.label(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}} - span.label(ng-if='!profile.contributor.level')=env.t('contribName') + span.label.label-default(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}} + span.label.label-default(ng-if='!profile.contributor.level')=env.t('contribName') small =env.t('contribText') a(href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG', target='_blank')=env.t('readMore') diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 633eb414bc..cfda0f99b3 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -118,7 +118,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s // Checklists div(ng-if='!$state.includes("options.social.challenges")') - button.btn.btn-deafult.btn-small(ng-if='!task.checklist[0] && (task.type=="daily" || task.type=="todo")',ng-click='addChecklist(task)') + button.btn.btn-deafult.btn-sm(ng-if='!task.checklist[0] && (task.type=="daily" || task.type=="todo")',ng-click='addChecklist(task)') span.glyphicon.glyphicon-tasks |     =env.t('addChecklist') diff --git a/views/static/front.jade b/views/static/front.jade index 379ce36a8f..abd69a049b 100644 --- a/views/static/front.jade +++ b/views/static/front.jade @@ -16,7 +16,7 @@ block content //while acting similarly to a logo h1#tagline=env.t('tagline') p.lead - button.btn.btn-primary.btn-large#frontpage-play-button(ng-click='playButtonClick()')=env.t('playButton') + button.btn.btn-primary.btn-lg#frontpage-play-button(ng-click='playButtonClick()')=env.t('playButton') hr img(src='/marketing/devices.png') //we'd want the tagline centered, for sure, and a bit more pop, but without using jumbotron diff --git a/views/static/login-modal.jade b/views/static/login-modal.jade index b17d41d171..5d5a5b917f 100644 --- a/views/static/login-modal.jade +++ b/views/static/login-modal.jade @@ -47,7 +47,7 @@ script(id='modals/login.html', type='text/ng-template') input.form-control(type='text', name='email', placeholder=env.t('email') , ng-model='passwordResetEmail') //span.help-inline {.errors.passwordReset} .form-group - input.btn(type='submit', value=env.t('submit')) + input.btn.btn-default(type='submit', value=env.t('submit')) .tab-pane#register-tab form(ng-submit='register()', name='registrationForm') diff --git a/views/static/plans.jade b/views/static/plans.jade index e062d398e2..c8446edd8f 100644 --- a/views/static/plans.jade +++ b/views/static/plans.jade @@ -94,8 +94,8 @@ block content th //| Price td - a.btn.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') + a.btn.btn-default.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') td - a.btn.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') + a.btn.btn-default.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') td a.btn.btn-primary(href='https://docs.google.com/forms/d/12Jqj_8f3oQS0B3ZUHewHbK61uLjBdzBeB0zyEqB9lxM/viewform')=env.t('contactUs') \ No newline at end of file From ee871ccb016ff0184072490f0aa4d2052b23b721 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 16:58:41 +0100 Subject: [PATCH 096/159] refactor(bs3): fixes --- public/css/alerts.styl | 11 +++++++++-- views/options/social/challenge-box.jade | 3 ++- views/options/social/tavern.jade | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/public/css/alerts.styl b/public/css/alerts.styl index 1893e93389..1520f695f8 100644 --- a/public/css/alerts.styl +++ b/public/css/alerts.styl @@ -16,6 +16,14 @@ .wide-popover max-width: 400px +// Small alerts +alert-sm-mixin() + padding-top: 8px + padding-bottom: 8px + +.alert-sm + alert-sm-mixin() + #notification-area position: fixed top: 0 @@ -23,8 +31,7 @@ z-index: 1061 .alert - padding-top: 8px - padding-bottom: 8px + alert-sm-mixin() // variables diff --git a/views/options/social/challenge-box.jade b/views/options/social/challenge-box.jade index 2dae335b30..a2634b9728 100644 --- a/views/options/social/challenge-box.jade +++ b/views/options/social/challenge-box.jade @@ -12,7 +12,8 @@ a(ui-sref='options.social.challenges.detail({cid:challenge._id})') {{challenge.name}} div(ng-if='group.challenges.length == 0') p=env.t('noChallenges') - a(class='label' ui-sref='options.social.challenges') + a.label.label-default(ui-sref='options.social.challenges') +   span.glyphicon.glyphicon-bullhorn =env.t('challenges') =env.t('toCreate') diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 503dc52e8a..cadfbcf197 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -119,7 +119,7 @@ .col-md-8.tavern(ng-controller='ChatCtrl') h3=env.t('tavernTalk') include ./chat-box - .alert.alert-info + .alert.alert-info.alert-sm !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' ul.list-unstyled.tavern-chat include ./chat-message From 9ea9ed841d0558107497a7b34b3ae54006d779f1 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 19:20:10 +0100 Subject: [PATCH 097/159] refactor(bs3): buyQuest fix, add back badges colors, minor fixes --- bower.json | 3 --- public/css/index.styl | 5 +++++ public/js/controllers/inventoryCtrl.js | 2 +- views/options/social/challenge-box.jade | 3 ++- views/options/social/group.jade | 2 +- views/shared/tasks/task.jade | 3 +-- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/bower.json b/bower.json index 843fb7e786..0665f44874 100644 --- a/bower.json +++ b/bower.json @@ -43,8 +43,5 @@ }, "devDependencies": { "angular-mocks": "~1.2.11" - }, - "resolutions": { - "angular": "~1.2.11" } } diff --git a/public/css/index.styl b/public/css/index.styl index ebf37c54d6..bc9b54abed 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -153,3 +153,8 @@ a.label .gem-wallet padding-top: 2px +// Add badges' classes +.badge-info + background-color: #428bca +.badge-success + background-color: #47a447 diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 24b97a3cba..618dd9b72d 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -148,7 +148,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', if (!completedPrevious) return $scope.purchase("quests", item); $rootScope.selectedQuest = item; - $rootScope.openModal('showQuest', 'buyQuest'); + $rootScope.openModal('buyQuest', 'InventoryCtrl'); } } ]); diff --git a/views/options/social/challenge-box.jade b/views/options/social/challenge-box.jade index a2634b9728..0c13c672e6 100644 --- a/views/options/social/challenge-box.jade +++ b/views/options/social/challenge-box.jade @@ -12,8 +12,9 @@ a(ui-sref='options.social.challenges.detail({cid:challenge._id})') {{challenge.name}} div(ng-if='group.challenges.length == 0') p=env.t('noChallenges') - a.label.label-default(ui-sref='options.social.challenges') + a.label.label-primary(ui-sref='options.social.challenges')   span.glyphicon.glyphicon-bullhorn +   =env.t('challenges') =env.t('toCreate') diff --git a/views/options/social/group.jade b/views/options/social/group.jade index 7fcef0f7b9..85ccb8e52d 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -10,7 +10,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild .col-md-4 // ------ Bosses ------- - .panle.panel-default(bindonce='group', ng-if='group.type==="party" && group.quest.key') + .panel.panel-default(bindonce='group', ng-if='group.type==="party" && group.quest.key') .panel-heading h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' h3.panel-title(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index cfda0f99b3..285133e00a 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -7,7 +7,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s span(ng-class='{"label label-danger":moment(task.date).isBefore(_today, "days")}') {{moment(task.date).format('MM/DD')}} // Streak |   - span(ng-show='task.streak') {{task.streak}} + span(ng-show='task.streak') {{task.streak}}  span(tooltip=env.t('streakCounter')) span.glyphicon.glyphicon-forward |   @@ -16,7 +16,6 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s span(ng-if='!obj._locked') a.badge(ng-if='task.checklist[0]', ng-class='{"badge-success":checklistCompletion(task.checklist) == task.checklist.length}', ng-click='collapseChecklist(task)', style='margin:1px') {{checklistCompletion(task.checklist)}}/{{task.checklist.length}} - |   span.glyphicon.glyphicon-tags(tooltip='{{Shared.appliedTags(user.tags, task.tags)}}', ng-hide='Shared.noTags(task.tags)') // edit a(ng-hide='task._editing', ng-click='editTask(task)', tooltip=env.t('edit')) From b4be88f4e067a2e2c90a3217db19e5034426801e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 19:49:47 +0100 Subject: [PATCH 098/159] refactor(bs3): misc --- public/css/avatar.styl | 3 --- views/options/social/index.jade | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/css/avatar.styl b/public/css/avatar.styl index ddb676ef84..5afe496a29 100644 --- a/public/css/avatar.styl +++ b/public/css/avatar.styl @@ -18,9 +18,6 @@ future re: pets and whatnot, this is just temporary. bottom 0px right 0px padding 2px 3px 2px 3px - border-top-right-radius: 0px - border-bottom-right-radius: 0px - border-bottom-left-radius: 0px // basic herobox styles .herobox diff --git a/views/options/social/index.jade b/views/options/social/index.jade index 0c17467641..70d695fe65 100644 --- a/views/options/social/index.jade +++ b/views/options/social/index.jade @@ -74,6 +74,7 @@ script(type='text/ng-template', id='partials/options.social.html') li(ng-class="{ active: $state.includes('options.social.tavern') }") a(ui-sref='options.social.tavern') span.glyphicon.glyphicon-eye-close + |   =env.t('tavern') li(ng-class="{ active: $state.includes('options.social.party') }") a(ui-sref='options.social.party') @@ -84,10 +85,12 @@ script(type='text/ng-template', id='partials/options.social.html') li(ng-class="{ active: $state.includes('options.social.challenges') }") a(ui-sref='options.social.challenges') span.glyphicon.glyphicon-bullhorn + |   =env.t('challenges') li(ng-class="{ active: $state.includes('options.social.hall') }") a(ui-sref='options.social.hall') span.glyphicon.glyphicon-flag + |   =env.t('hall') .tab-content From 5e98fa013d6bf02a5f92db0b58876914b667a59f Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 19:56:31 +0100 Subject: [PATCH 099/159] refactor(bs3): typo --- views/shared/tasks/task.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 285133e00a..af06d85f05 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -117,7 +117,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s // Checklists div(ng-if='!$state.includes("options.social.challenges")') - button.btn.btn-deafult.btn-sm(ng-if='!task.checklist[0] && (task.type=="daily" || task.type=="todo")',ng-click='addChecklist(task)') + button.btn.btn-default.btn-sm(ng-if='!task.checklist[0] && (task.type=="daily" || task.type=="todo")',ng-click='addChecklist(task)') span.glyphicon.glyphicon-tasks |     =env.t('addChecklist') From f3c42f19abb13e79e9e3b7a7d8c1749bca9861cd Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 20:07:37 +0100 Subject: [PATCH 100/159] refactor(bs3): hall form --- views/options/social/hall.jade | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/views/options/social/hall.jade b/views/options/social/hall.jade index 2027521bfd..708a972da2 100644 --- a/views/options/social/hall.jade +++ b/views/options/social/hall.jade @@ -14,23 +14,23 @@ script(type='text/ng-template', id='partials/options.social.hall.html') script(type='text/ng-template', id='partials/options.social.hall.heroes.html') .well(ng-if='user.contributor.admin') h2=env.t('rewardUser') - form.form-horizontal(ng-submit='loadHero(_heroID)') + form(ng-submit='loadHero(_heroID)') .form-group input.form-control(type='text', ng-model='_heroID', placeholder=env.t('UUID')) + .form-group input.btn.btn-default(type='submit')=env.t('loadUser') - form.form-horizontal(ng-show='hero', ng-submit='saveHero(hero)') + form(ng-show='hero', ng-submit='saveHero(hero)') h3 {{hero.profile.name}} .form-group input.form-control(type='text', ng-model='hero.contributor.text', placeholder=env.t('contribTitle')) .form-group - input.form-control(type='number', step="any", ng-model='hero.contributor.level') - span.input-suffix=env.t('contribLevel') - br + label=env.t('contribLevel') + input.form-control(type='number', step="any", ng-model='hero.contributor.level') small=env.t('contribHallText') a(target='_blank', href='https://trello.com/c/wkFzONhE/277-contributor-gear')=env.t('moreDetails') .form-group - textarea.form-control(style='height:15em;', placeholder=env.t('contributions'), ng-model='hero.contributor.contributions') - //-include ../../shared/formatting-help + textarea.form-control(cols=5, placeholder=env.t('contributions'), ng-model='hero.contributor.contributions') + include ../../shared/formatting-help .form-group .checkbox label @@ -40,10 +40,9 @@ script(type='text/ng-template', id='partials/options.social.hall.heroes.html') hr .form-group + label=env.t('balance') input.form-control(type='number', step="any", ng-model='hero.balance') - span.input-suffix=env.t('balance') - p - small!= '`user.balance`' + env.t('notGems') + small!= '`user.balance`' + env.t('notGems') .form-group .checkbox @@ -51,9 +50,10 @@ script(type='text/ng-template', id='partials/options.social.hall.heroes.html') input(type='checkbox', ng-model='hero.purchased.ads') =env.t('hideAds') - // h4 Backer Status - // Add backer stuff like tier, disable adds, etcs - input.btn.btn-primary(type='submit')=env.t('save') + // h4 Backer Status + // Add backer stuff like tier, disable adds, etcs + .form-group + input.form-control.btn.btn-primary(type='submit')=env.t('save') table.table.table-striped From 46053cc520f100fa60e25f5ce56a908124b36ee8 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 20:10:37 +0100 Subject: [PATCH 101/159] refactor(bs3): spaces --- views/shared/tasks/task.jade | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index af06d85f05..04c52659d4 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -21,15 +21,14 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s a(ng-hide='task._editing', ng-click='editTask(task)', tooltip=env.t('edit')) |   span.glyphicon.glyphicon-pencil(ng-hide='task._editing') - |   - // cancel + |   a(ng-hide='!task._editing', ng-click='editTask(task)', tooltip=env.t('cancel')) span.glyphicon.glyphicon-remove(ng-hide='!task._editing') |   // save a(ng-hide='!task._editing', ng-click='editTask(task);saveTask(task)', tooltip=env.t('save')) span.glyphicon.glyphicon-ok(ng-hide='!task._editing') - |   + |   //challenges span(ng-if='task.challenge.id') span(ng-if='task.challenge.broken') From 1e3042a4b60a3ea42b5300c25b5e8475f4cd910e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sat, 8 Feb 2014 20:23:50 +0100 Subject: [PATCH 102/159] refactor(bs3): maybe fix for chat suggestions --- public/js/controllers/groupsCtrl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 9a97d9b1c3..b01fe886d5 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -99,7 +99,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' $scope.$watch('group.chat',$scope.chatChanged); $scope.caretChanged = function(newCaretPos) { - var relativeelement = $('.chat-form div:first'); + var relativeelement = $('.chat-form:first-child'); var textarea = $('.chat-form textarea'); var userlist = $('.list-at-user'); var offset = { From e1240dde1d3dcaca4235fad384fea5c07a3706bf Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sat, 8 Feb 2014 10:38:42 -0700 Subject: [PATCH 103/159] fix(missing-gems): remove ad-removal from script, since ads are part of subscription --- migrations/missing_gems.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/missing_gems.js b/migrations/missing_gems.js index ca9f674b9a..78ff37ed1d 100644 --- a/migrations/missing_gems.js +++ b/migrations/missing_gems.js @@ -1 +1 @@ -db.users.update({_id:''},{$set:{'purchased.ads':true},$inc:{balance:5}}); \ No newline at end of file +db.users.update({_id:''},{$inc:{balance:5}}); \ No newline at end of file From 3447524d41d79a368899672629ddd80221d6c7eb Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 9 Feb 2014 00:44:39 +0100 Subject: [PATCH 104/159] refactor(bs3): chat suggestions, revert --- public/js/controllers/groupsCtrl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index b01fe886d5..9a97d9b1c3 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -99,7 +99,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' $scope.$watch('group.chat',$scope.chatChanged); $scope.caretChanged = function(newCaretPos) { - var relativeelement = $('.chat-form:first-child'); + var relativeelement = $('.chat-form div:first'); var textarea = $('.chat-form textarea'); var userlist = $('.list-at-user'); var offset = { From 322b257b72ee94a4f3b97f42f8c8eac8e1745141 Mon Sep 17 00:00:00 2001 From: Lorian Date: Sat, 8 Feb 2014 16:57:28 -0800 Subject: [PATCH 105/159] Separated stable into dropped pets, quest pets, and rare pets, and made countPets only count the former. Made countMounts only count dropped and quest-hatched mounts, not rare mounts. --- public/js/controllers/inventoryCtrl.js | 3 ++- src/models/user.js | 4 +++- views/options/inventory/stable.jade | 23 ++++++++++++++++++----- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 618dd9b72d..81c7437d1e 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -7,7 +7,8 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', $scope.selectedEgg = null; // {index: 1, name: "Tiger", value: 5} $scope.selectedPotion = null; // {index: 5, name: "Red", value: 3} - $scope.totalPets = _.size(Content.eggs) * _.size(Content.hatchingPotions); + $scope.totalPets = _.size(Content.dropEggs) * _.size(Content.hatchingPotions); + $scope.totalMounts = _.size(Content.eggs) * _.size(Content.hatchingPotions); // count egg, food, hatchingPotion stack totals var countStacks = function(items) { return _.reduce(items,function(m,v){return m+v;},0);} diff --git a/src/models/user.js b/src/models/user.js index 38dd2409b4..9dcdc73869 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -139,7 +139,7 @@ var UserSchema = new Schema({ snowball: {type: Number, 'default': 0} }, - // -------------- Animals ------------------- + // -------------- Animals ------------------- // Complex bit here. The result looks like: // pets: { // 'Wolf-Desert': 0, // 0 means does not own @@ -150,6 +150,8 @@ var UserSchema = new Schema({ _.defaults( // First transform to a 1D eggs/potions mapping _.transform(shared.content.pets, function(m,v,k){ m[k] = Number; }), + // Then add quest pets + _.transform(shared.content.questPets, function(m,v,k){ m[k] = Number; }), // Then add additional pets (backer, contributor) _.transform(shared.content.specialPets, function(m,v,k){ m[k] = Number; }) ), diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index e38114cf7f..ad5f9c8a11 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -12,7 +12,8 @@ script(type='text/ng-template', id='partials/options.inventory.mounts.html') a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') .popover-content p=env.t('mattShall', {name: "{{user.profile.name}}"}) - h4= '{{mountCount}} / {{totalPets}} ' + env.t('mountsTamed') + h4= '{{Shared.countMounts(null,User.user.items.mounts)}} / {{totalMounts}} ' + env.t('mountsTamed') + menu.pets(type='list') li.customize-menu(ng-repeat='egg in Content.eggs') menu @@ -46,13 +47,13 @@ script(type='text/ng-template', id='partials/options.inventory.pets.html') p =env.t('mattBochText1') + ' ' | - =env.t('mattBochText2') - | + =env.t('mattBochText2') + | = ' ' + env.t('mattBochText3') - h4= '{{petCount}} / {{totalPets}} ' + env.t('petsFound') + h4= env.t('beastmasterProgress') + ': {{petCount}} / {{totalPets}} ' + env.t('petsFound') menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.eggs') + li.customize-menu(ng-repeat='egg in Content.dropEggs') menu div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') @@ -63,6 +64,18 @@ script(type='text/ng-template', id='partials/options.inventory.pets.html') button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') //if this could be changed to the opacity talked about? can't figure it out + h4=env.t('questPets') + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.questEggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') + button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') + .progress(ng-show='!user.items.mounts[pet]') + .progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%") + button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') + .PixelPaw + button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') + h4=env.t('rarePets') menu div From 5874941b94a548438ee68eeffc9e74caabf8a985 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 9 Feb 2014 12:32:12 +0100 Subject: [PATCH 106/159] refactor(bs3): inventory & misc --- public/css/inventory.styl | 25 +--- views/index.jade | 5 - views/main/filters.jade | 2 +- views/options/inventory/inventory.jade | 7 +- views/options/inventory/stable.jade | 158 ++++++++++++------------- views/shared/footer.jade | 18 ++- views/static/layout.jade | 5 - 7 files changed, 92 insertions(+), 128 deletions(-) diff --git a/public/css/inventory.styl b/public/css/inventory.styl index b18a3b2ed8..256db84ddf 100644 --- a/public/css/inventory.styl +++ b/public/css/inventory.styl @@ -19,29 +19,8 @@ display: inline-block vertical-align: middle - -// pets (this will all change when pet system is overhauled) -.pet-grid - padding-top: 1.5em - border-top: rgba(0,0,0,0.1) - table - width: 100% - td - padding: 0.5em - //width: 25% - &.active-pet - background-color: $bad - outline: 1px solid rgba(0,0,0,0.1) - outline-offset: -1px - &:hover, &:focus - background-color: darken($better, 10%) - > div - margin:auto - margin-bottom:.5em - p - text-align:center - width:6.5em - height:2.5em +.stable .static-popover + max-width: 550px menu.pets div display: inline-block diff --git a/views/index.jade b/views/index.jade index 28aedc5728..aedb605b44 100644 --- a/views/index.jade +++ b/views/index.jade @@ -13,11 +13,6 @@ html(ng-app="habitrpg", ng-controller="RootCtrl", ng-class='{"applying-action":a script(type='text/javascript'). window.env = !{JSON.stringify(env)}; - style. - [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { - display: none; - } - != env.getManifestFiles("app") //webfonts diff --git a/views/main/filters.jade b/views/main/filters.jade index ba20fcc753..923d61e2a6 100644 --- a/views/main/filters.jade +++ b/views/main/filters.jade @@ -16,7 +16,7 @@ span.glyphicon.glyphicon-trash a(ng-hide='_editing', ng-click='toggleFilter(tag)') span.glyphicon.glyphicon-bullhorn(bo-if="tag.challenge") - markdown(ng-model='tag.name',style='display: inline-block') + markdown(ng-model='tag.name') li form.form-inline(ng-show='_editing', ng-submit='createTag(_newTag)') .input-group diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 5fb94b945c..7f64aad232 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -13,9 +13,10 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') h3.equipment-title=env.t('costume')   i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('costumeText')) - label.checkbox.inline(style="margin-left: 20px;") - input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') - =env.t('useCostume') + .checkbox + label + input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') + =env.t('useCostume') li.customize-menu(ng-if='user.preferences.costume') menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') div(ng-repeat='item in gear[klass]') diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index ad5f9c8a11..a042d73083 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -1,92 +1,90 @@ script(type='text/ng-template', id='partials/options.inventory.mounts.html') .container-fluid .stable.row - table - tr - td(style='width:144px') - .npc_matt - td - .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') - .popover-content - p=env.t('mattShall', {name: "{{user.profile.name}}"}) - h4= '{{Shared.countMounts(null,User.user.items.mounts)}} / {{totalMounts}} ' + env.t('mountsTamed') - - menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.eggs') - menu - div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.mountText}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key') - button(class="pet-button Mount_Head_{{mount}}", ng-show='user.items.mounts[mount]', ng-class='{active: user.items.currentMount == mount}', ng-click='chooseMount(egg.key, potion.key)') - //div(class='Mount_Head_{{mount}}') - button(class="pet-button pet-not-owned", ng-hide='user.items.mounts[mount]') - .PixelPaw - - h4=env.t('rareMounts') - menu - div - button(ng-if='user.items.mounts["BearCub-Polar"]', class="pet-button Mount_Head_BearCub-Polar", ng-class='{active: user.items.currentMount == "BearCub-Polar"}', ng-click='chooseMount("BearCub", "Polar")', popover=env.t('polarBear'), popover-trigger='mouseenter', popover-placement='bottom') - //.Mount_Head_BearCub-Polar - button(ng-if='user.items.mounts["LionCub-Ethereal"]', class="pet-button Mount_Head_LionCub-Ethereal", ng-class='{active: user.items.currentMount == "LionCub-Ethereal"}', ng-click='chooseMount("LionCub", "Ethereal")', popover=env.t('etherealLion'), popover-trigger='mouseenter', popover-placement='bottom') - //.Mount_Head_LionCub-Ethereal + .col-md-2 + .npc_matt + .col-md-10 + .popover.static-popover.fade.right.in + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') + .popover-content + p=env.t('mattShall', {name: "{{user.profile.name}}"}) + h4= '{{Shared.countMounts(null,User.user.items.mounts) || 0}} / {{totalMounts}} ' + env.t('mountsTamed') + .col-md-12 + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.eggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.mountText}}', popover-placement='bottom', ng-init='mount = egg.key+"-"+potion.key') + button(class="pet-button Mount_Head_{{mount}}", ng-show='user.items.mounts[mount]', ng-class='{active: user.items.currentMount == mount}', ng-click='chooseMount(egg.key, potion.key)') + //div(class='Mount_Head_{{mount}}') + button(class="pet-button pet-not-owned", ng-hide='user.items.mounts[mount]') + .PixelPaw + .col-md-12 + h4=env.t('rareMounts') + menu + div + button(ng-if='user.items.mounts["BearCub-Polar"]', class="pet-button Mount_Head_BearCub-Polar", ng-class='{active: user.items.currentMount == "BearCub-Polar"}', ng-click='chooseMount("BearCub", "Polar")', popover=env.t('polarBear'), popover-trigger='mouseenter', popover-placement='bottom') + //.Mount_Head_BearCub-Polar + button(ng-if='user.items.mounts["LionCub-Ethereal"]', class="pet-button Mount_Head_LionCub-Ethereal", ng-class='{active: user.items.currentMount == "LionCub-Ethereal"}', ng-click='chooseMount("LionCub", "Ethereal")', popover=env.t('etherealLion'), popover-trigger='mouseenter', popover-placement='bottom') + //.Mount_Head_LionCub-Ethereal script(type='text/ng-template', id='partials/options.inventory.pets.html') .container-fluid .stable.row - table - tr - td(style='width:144px') - .npc_matt - td - .popover.static-popover.fade.right.in(style='max-width: 550px; margin-left: 10px;') - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') - .popover-content - p - =env.t('mattBochText1') + ' ' - | - =env.t('mattBochText2') - | - = ' ' + env.t('mattBochText3') - h4= env.t('beastmasterProgress') + ': {{petCount}} / {{totalPets}} ' + env.t('petsFound') + .col-md-2 + .npc_matt + .col-md-10 + .popover.static-popover.fade.right.in + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') + .popover-content + p + =env.t('mattBochText1') + ' ' + | + =env.t('mattBochText2') + | + = ' ' + env.t('mattBochText3') + h4= env.t('beastmasterProgress') + ': {{petCount}} / {{totalPets}} ' + env.t('petsFound') - menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.dropEggs') - menu - div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') - button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') - .progress(ng-show='!user.items.mounts[pet]') - .progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%") - button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') - .PixelPaw - button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') - //if this could be changed to the opacity talked about? can't figure it out + .col-md-12 + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.dropEggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') + button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') + .progress(ng-show='!user.items.mounts[pet]') + .progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%") + button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') + .PixelPaw + button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') + //if this could be changed to the opacity talked about? can't figure it out + .col-md-12 + h4=env.t('questPets') + menu.pets(type='list') + li.customize-menu(ng-repeat='egg in Content.questEggs') + menu + div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') + button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') + .progress(ng-show='!user.items.mounts[pet]') + .progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%") + button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') + .PixelPaw + button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') - h4=env.t('questPets') - menu.pets(type='list') - li.customize-menu(ng-repeat='egg in Content.questEggs') - menu - div(ng-repeat='potion in Content.hatchingPotions', popover-trigger='mouseenter', popover='{{potion.text}} {{egg.text}}', popover-placement='bottom', ng-init='pet = egg.key+"-"+potion.key') - button(class="pet-button Pet-{{pet}}", ng-if='user.items.pets[pet]>0', ng-class='{active: user.items.currentPet == pet, selectableInventory: selectedFood}', ng-click='choosePet(egg.key, potion.key)') - .progress(ng-show='!user.items.mounts[pet]') - .progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%") - button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') - .PixelPaw - button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') - - h4=env.t('rarePets') - menu - div - button(ng-if='user.items.pets["Wolf-Veteran"]', class="pet-button Pet-Wolf-Veteran", ng-class='{active: user.items.currentPet == "Wolf-Veteran"}', ng-click='choosePet("Wolf", "Veteran")', popover=env.t('veteranWolf'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Wolf-Cerberus"]', class="pet-button Pet-Wolf-Cerberus", ng-class='{active: user.items.currentPet == "Wolf-Cerberus"}', ng-click='choosePet("Wolf", "Cerberus")', popover=env.t('cerberusPup'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Turkey-Base"]', class="pet-button Pet-Turkey-Base", ng-class='{active: user.items.currentPet == "Turkey-Base"}', ng-click='choosePet("Turkey", "Base")', popover=env.t('turkey'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["BearCub-Polar"]', class="pet-button Pet-BearCub-Polar", ng-class='{active: user.items.currentPet == "BearCub-Polar"}', ng-click='choosePet("BearCub", "Polar")', popover=env.t('polarBearPup'), popover-trigger='mouseenter', popover-placement='bottom') - button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover=env.t('hydra'), popover-trigger='mouseenter', popover-placement='bottom') - a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG') - button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2')) - .PixelPaw-Gold + .col-md-12 + h4=env.t('rarePets') + menu + div + button(ng-if='user.items.pets["Wolf-Veteran"]', class="pet-button Pet-Wolf-Veteran", ng-class='{active: user.items.currentPet == "Wolf-Veteran"}', ng-click='choosePet("Wolf", "Veteran")', popover=env.t('veteranWolf'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Wolf-Cerberus"]', class="pet-button Pet-Wolf-Cerberus", ng-class='{active: user.items.currentPet == "Wolf-Cerberus"}', ng-click='choosePet("Wolf", "Cerberus")', popover=env.t('cerberusPup'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Turkey-Base"]', class="pet-button Pet-Turkey-Base", ng-class='{active: user.items.currentPet == "Turkey-Base"}', ng-click='choosePet("Turkey", "Base")', popover=env.t('turkey'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["BearCub-Polar"]', class="pet-button Pet-BearCub-Polar", ng-class='{active: user.items.currentPet == "BearCub-Polar"}', ng-click='choosePet("BearCub", "Polar")', popover=env.t('polarBearPup'), popover-trigger='mouseenter', popover-placement='bottom') + button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover=env.t('hydra'), popover-trigger='mouseenter', popover-placement='bottom') + a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG') + button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover=env.t('rarePetPop1'), popover-title=env.t('rarePetPop2')) + .PixelPaw-Gold .well.food-tray p(ng-show='foodCount < 1')=env.t('noFood') diff --git a/views/shared/footer.jade b/views/shared/footer.jade index 768ebe2628..9f1482763d 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -48,7 +48,7 @@ footer.footer(ng-controller='FooterCtrl') li a(target='_blank', href='http://www.reddit.com/r/habitrpg/')=env.t('communityReddit') .col-sm-3 - if (env.NODE_ENV=='production') + if (env.NODE_ENV=='production' && !env.IS_MOBILE) h4=env.t('footerSocial') .addthis_toolbox.addthis_default_style(addthis:url='https://habitrpg.com', addthis:title=env.t('socialTitle')) table @@ -59,21 +59,17 @@ footer.footer(ng-controller='FooterCtrl') td a.addthis_button_tweet(tw:via='habitrpg') tr - td(align='left') + td iframe(src='/bower_components/github-buttons/github-btn.html?user=lefnire&repo=habitrpg&type=watch&count=true', allowtransparency='true', frameborder='0', scrolling='0', width='85px', height='20px') tr td a.addthis_button_google_plusone(g:plusone:size='medium') else if(!env.isFrontPage) h4 Debug - ul.list-unstyled - li - a.btn.btn-default(ng-click='addMissedDay()') +1 Missed Day - li - a.btn.btn-default(ng-click='addTenGems()') +10 Gems - li - a.btn.btn-default(ng-click='addLevelsAndGold()') +Exp +GP - li - a.btn.btn-default(ng-click='addOneLevel()') +1 Level + .btn-group-vertical + a.btn.btn-default(ng-click='addMissedDay()') +1 Missed Day + a.btn.btn-default(ng-click='addTenGems()') +10 Gems + a.btn.btn-default(ng-click='addLevelsAndGold()') +Exp +GP + a.btn.btn-default(ng-click='addOneLevel()') +1 Level div(ng-init='deferredScripts()') diff --git a/views/static/layout.jade b/views/static/layout.jade index 7a6e15c631..8c517310d7 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -15,11 +15,6 @@ html(ng-app='habitrpgStatic') meta(charset='utf-8') meta(name='viewport', content='width=device-width, initial-scale=1.0') - style. - [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { - display: none; - } - != env.getManifestFiles("static") body From 1a44c3cf0c4b6eb1b36a0db8e03478b12ae13991 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 9 Feb 2014 16:16:43 +0100 Subject: [PATCH 107/159] refactor(bs3): css --- public/css/customizer.styl | 9 ++- public/css/filters.styl | 6 ++ public/css/game-pane.styl | 79 ++++++++++++++------------ public/css/index.styl | 12 ++-- public/css/static.styl | 7 +++ public/css/tasks.styl | 5 +- views/options/inventory/stable.jade | 1 + views/options/profile.jade | 50 ++++++++-------- views/options/settings.jade | 6 +- views/options/social/challenges.jade | 13 ++--- views/options/social/chat-message.jade | 16 +++--- views/options/social/group.jade | 5 +- views/options/social/tavern.jade | 45 +++++++-------- views/shared/header/avatar.jade | 4 +- views/shared/header/menu.jade | 4 +- views/shared/modals/buy-gems.jade | 2 +- views/shared/modals/death.jade | 2 +- views/shared/modals/drops.jade | 6 +- views/shared/modals/members.jade | 2 +- views/shared/modals/new-stuff.jade | 2 +- views/shared/modals/quests.jade | 7 +-- views/shared/modals/rebirth.jade | 13 +++-- views/shared/profiles/stats.jade | 14 +++-- views/shared/tasks/task.jade | 4 +- views/static/about.jade | 17 ++---- views/static/layout.jade | 2 +- 26 files changed, 187 insertions(+), 146 deletions(-) diff --git a/public/css/customizer.styl b/public/css/customizer.styl index fd3ad1add1..f4317afe2e 100644 --- a/public/css/customizer.styl +++ b/public/css/customizer.styl @@ -22,15 +22,18 @@ menu line-height: 2 .customize-option - border: 0px solid grey; - background-color: hsl(0, 0%, 93%); + border: 0px solid grey + background-color: hsl(0, 0%, 93%) margin-bottom: 10px - cursor: pointer; -webkit-transition: background-color 0.5s ease-out -moz-transition: background-color 0.5s ease-out transition: background-color 0.5s ease-out + &.hair + width: 40px !important + height: 40px !important + .customize-option:active background-color: rgb(255, 242, 204); -webkit-transition: none diff --git a/public/css/filters.styl b/public/css/filters.styl index b543b80feb..7bc6884638 100644 --- a/public/css/filters.styl +++ b/public/css/filters.styl @@ -8,6 +8,12 @@ margin-right: 7px padding-left: 7px + markdown + display: inline-block + + .glyphicon-bullhorn + margin-left: 5px + .input-group float: left width: 1px // Trick for proper alignment diff --git a/public/css/game-pane.styl b/public/css/game-pane.styl index b345f20a99..a3aaf0151e 100644 --- a/public/css/game-pane.styl +++ b/public/css/game-pane.styl @@ -1,6 +1,3 @@ -.full-width - width 100% - .border-right border-right 1px solid #ddd @@ -14,13 +11,18 @@ textarea margin-bottom: 5px -.chat-message .chat-plus-one - opacity: 0 - background-color: #eee - padding: 3px 3px 0px 3px -.chat-message:hover .chat-plus-one - opacity: 1 - color: #999 +.chat-message + markdown, span.time + padding: 0 3px + + .chat-plus-one + opacity: 0 + background-color: #eee + padding: 3px 3px 0px 3px + + &:hover .chat-plus-one + opacity: 1 + color: #999 .tavern-chat, .party-chat @@ -79,6 +81,11 @@ padding-top:0px padding-bottom:0px +.panel-tiers + div + display: none + margin-top: 10px + // Name tags .label-contributor-1, .label-contributor-2 background-color: #333; @@ -109,33 +116,33 @@ padding: 0px 5px // Autocomplete [TODO] make this nicer -.list-at-user { - width: 100%; - max-width: 120px; - position: absolute; - background: white; - border: 1px solid #a4a4a4; - z-index: 10; -} +.list-at-user + width: 100% + max-width: 120px + position: absolute + background: white + border: 1px solid #a4a4a4 + z-index: 10 -.list-at-user li { - line-height:14px; - border-bottom: 1px solid #a4a4a4; - list-style-type: none; -} -.list-at-user li:hover { - cursor: pointer; - background: #b9dff4; -} +.list-at-user li + line-height:14px + border-bottom: 1px solid #a4a4a4 + list-style-type: none -.list-at-user li span { - margin: 2px; - font-size: 11.844px; - margin-left: 5px; - display: inline-block; -} -.list-cur { - background: #b9dff4; -} +.list-at-user li:hover + cursor: pointer + background: #b9dff4 + + +.list-at-user li span + margin: 2px + font-size: 11.844px + margin-left: 5px + display: inline-block + + +.list-cur + background: #b9dff4 + diff --git a/public/css/index.styl b/public/css/index.styl index bc9b54abed..1c889d042d 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -111,15 +111,14 @@ html, body font-weight: 700 // notification-character used only by death modal's figure, move -.death-modal // a .modal-body - margin: 10px +.modal-body figure float: left padding: 15px -#reset-modal - z-index:1500 +.death-modal // a .modal-body + margin: 10px a cursor: pointer @@ -139,6 +138,11 @@ a.label .btn margin-right: 5px +.vertical-align + vertical-align: middle +.inline-block + display: inline-block + // Buttons in groups should not have a 5px margin between them; suppress margin for buttons in groups. .btn-group .btn margin-right: 0px diff --git a/public/css/static.styl b/public/css/static.styl index 02605f3960..2a13070352 100644 --- a/public/css/static.styl +++ b/public/css/static.styl @@ -7,6 +7,13 @@ @import "./shared.styl" @import "./footer" +body + margin-top: 60px + +#aboutPage + iframe + margin-bottom: 20px + .muted i, i.muted opacity:0.5 diff --git a/public/css/tasks.styl b/public/css/tasks.styl index ed44a187ad..35d43afeb7 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -372,13 +372,16 @@ form text-align: center margin: 0 + &.task-attributes + text-align: left + .task-action-btn.tile border: 0 font-size: 1.15em font-weight: 300 outline: 1px solid rgba(0,0,0,0.2) outline-offset: -1px - margin: 0 0 0 3px + margin: 3px 3px font-family: 'Lato', sans-serif text-align: inherit opacity: 0.5 diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index a042d73083..d228ece0f2 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -58,6 +58,7 @@ script(type='text/ng-template', id='partials/options.inventory.pets.html') .progress-bar.progress-bar-success(style="width:{{user.items.pets[pet]/.5}}%") button(class="pet-button pet-not-owned", ng-if='!user.items.pets[pet]') .PixelPaw + // How to apply this style in stylus files? button(class="pet-button Pet-{{pet}}" ng-if='user.items.pets[pet]<0',style='opacity:0.1;filter:alpha(opacity=10)') //if this could be changed to the opacity talked about? can't figure it out .col-md-12 diff --git a/views/options/profile.jade b/views/options/profile.jade index bcc3d2101a..48539acbfc 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -36,14 +36,14 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') li.customize-menu menu(label=env.t('color')) each v,k in {'c8c8c8':'white','903a00':'brown','cfb853':'blond','ec720f':'red','2e2e2e':'black'} - button(type='button', class='customize-option', style='width: 40px; height: 40px; background-color:##{k};', ng-click='set({"preferences.hair.color": "#{v}"})') + button(type='button', class='customize-option hair', style='background-color:##{k};', ng-click='set({"preferences.hair.color": "#{v}"})') each color in ['candycane','frost','winternight','holly'] - button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') + button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') li.customize-menu menu(label=env.t('rainbowColors')) each color in ['rainbow','yellow','green','purple','blue','TRUred'] - button(type='button', ng-class='{locked: !user.purchased.hair.color.#{color}}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') + button(type='button', ng-class='{locked: !user.purchased.hair.color.#{color}}', class='customize-option hair hair_bangs_1_#{color}', ng-click='unlock("hair.color.#{color}")') button.btn.btn-sm.btn-primary(ng-hide='user.purchased.hair.color.rainbow && user.purchased.hair.color.yellow && user.purchased.hair.color.green && user.purchased.hair.color.purple && user.purchased.hair.color.blue && user.purchased.hair.color.TRUred', ng-click='unlock("hair.color.rainbow,hair.color.yellow,hair.color.green,hair.color.purple,hair.color.blue,hair.color.TRUred")')!= env.t('unlockSet5') + ' ' h5=env.t('bodyHair') @@ -134,27 +134,31 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') tr td(colspan=2) fieldset.auto-allocate - label.checkbox - input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') - =env.t('autoAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) + .checkbox + label + input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') + =env.t('autoAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') - label.radio - input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') - =env.t('evenAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) - label.radio - input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') - =env.t('classAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) - label.radio - input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') - =env.t('taskAllocation') -   - span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) + .radio + label + input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') + =env.t('evenAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) + .radio + label + input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') + =env.t('classAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) + .radio + label + input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') + =env.t('taskAllocation') +   + span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') a.btn.btn-primary.btn-xs(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) span.glyphicon.glyphicon-download diff --git a/views/options/settings.jade b/views/options/settings.jade index 5a4d9ed51e..284d24c785 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -157,7 +157,9 @@ script(id='partials/options.settings.subscription.html',type='text/ng-template') div(ng-if='user.purchased.plan.customerId') .well - div(style='font-size:22px') - span.glyphicon.glyphicon-ok=env.t('subscribed') + p.lead + =env.t('subscribed') + |   + span.glyphicon.glyphicon-ok div(ng-include="'partials/options.settings.subscription.perks.html'") .btn.btn-sm.btn-danger(ng-click='cancelSubscription()')=env.t('cancelSub') diff --git a/views/options/social/challenges.jade b/views/options/social/challenges.jade index 857888c3dd..748349de64 100644 --- a/views/options/social/challenges.jade +++ b/views/options/social/challenges.jade @@ -145,13 +145,12 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') | {{challenge.memberCount}} = ' ' + env.t('participants') li(ng-show='challenge.prize') - // prize - table(ng-show='challenge.prize') - tr - td {{challenge.prize}} - td - .Pet_Currency_Gem1x(style='margin-left:0px') - td=env.t('prize') + p + // prize + | {{challenge.prize}}  + span.inline-block.Pet_Currency_Gem1x + |   + =env.t('prize') li // leave / join a.btn.btn-sm.btn-danger(ng-show='challenge._isMember', ng-click='clickLeave(challenge, $event)') diff --git a/views/options/social/chat-message.jade b/views/options/social/chat-message.jade index d88faa1c7f..6377032d6f 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -1,14 +1,16 @@ li.chat-message(bindonce='group.chat', ng-repeat='message in group.chat', bo-class='{highlight: isUserMentioned(user,message), "own-message": user._id == message.uuid}') div(class='scrollable-message') a.label.label-default.chat-message(class='hidden-label') - span {{message.user}}  - markdown(ng-model='message.text', style='padding:0px 3px') + span {{message.user}} + |   + markdown(ng-model='message.text') | - - span.muted.time(from-now='message.timestamp',style='padding:0px 3px') - span(style='padding:0px 3px') - a.label.label-default(ng-show='countExists(message.likes)',ng-class='{"label-success":message.likes[user._id]}',ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} - a.chat-plus-one.muted(ng-show='!countExists(message.likes)',ng-click='likeChatMessage(group,message)') +1 - a(bo-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)',style='padding: 0px 3px') + span.muted.time(from-now='message.timestamp') + span + a.label.label-default(ng-show='countExists(message.likes)', ng-class='{"label-success":message.likes[user._id]}', ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} + a.chat-plus-one.muted(ng-show='!countExists(message.likes)', ng-click='likeChatMessage(group,message)') +1 + |   + a(bo-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)') span.glyphicon.glyphicon-trash(tooltip=env.t('delete')) a.label.label-default.chat-message(bo-show='message.user', class='float-label', bo-class='{"label-npc": message.backer.npc, "label-contributor-{{message.contributor.level}}":message.contributor.level}', ng-click='clickMember(message.uuid, true)') span(tooltip='{{contribText(message.contributor, message.backer)}}') {{message.user}}  diff --git a/views/options/social/group.jade b/views/options/social/group.jade index 85ccb8e52d..a0088fcfae 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -31,7 +31,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild div(ng-if='Content.quests[group.quest.key].boss') div(class="quest_{{group.quest.key}}") //- - .progress(style="height:10px") + .progress .bar(style='width: {{Shared.percent(group.quest.hp, Content.quests[group.quest.key].hp)}}%;') span.meter-text span.glyphicon.glyphicon-heart @@ -102,7 +102,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild select#group-leader-selection(ng-model='group._newLeader', ng-options='member.profile.name for member in group.members') div(ng-show='!group._editing') - img.pull-right(ng-show='group.logo', style='max-width:150px', ng-src='{{group.logo}}') + img.pull-right(ng-show='group.logo', ng-src='{{group.logo}}') markdown(ng-model='group.description') hr small.muted Group ID: {{group._id}} @@ -117,7 +117,6 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild span =env.t('partyList') select#partyOrder( - style='width:140px', ng-model='user.party.order', ng-controller='ChatCtrl', ng-options='k as v for (k , v) in partyOrderChoices', diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index cadfbcf197..0f682dbbb8 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -1,22 +1,21 @@ .container-fluid .row .col-md-4 - .tavern-pane - table - tr - td - .npc_daniel - td - .popover.static-popover.fade.right.in - .arrow - h3.popover-title - a(target='_blank', href='http://www.kickstarter.com/profile/2014640723')=env.t('daniel') - .popover-content - =env.t('danielText') - div - button.btn.btn-lg.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') - span(ng-show='user.preferences.sleep')=env.t('innCheckOut') - span(ng-hide='user.preferences.sleep')=env.t('innCheckIn') + table + tr + td + .npc_daniel + td + .popover.static-popover.fade.right.in + .arrow + h3.popover-title + a(target='_blank', href='http://www.kickstarter.com/profile/2014640723')=env.t('daniel') + .popover-content + =env.t('danielText') + div + button.btn.btn-lg.btn-success(ng-class='{active: user.preferences.sleep}', ng-click='User.user.ops.sleep({})') + span(ng-show='user.preferences.sleep')=env.t('innCheckOut') + span(ng-hide='user.preferences.sleep')=env.t('innCheckIn') .alert.alert-info(ng-show='user.preferences.sleep') =env.t('innText') @@ -63,11 +62,11 @@ | =env.t('conLearnHow') | - table.table.table-striped + table.table.table-striped.panel-tiers tr td a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friend') + ' (1-2)' - div(style='display:none;') + div p span.achievement.achievement-firefox !=env.t('friendFirst') @@ -78,7 +77,7 @@ tr td a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('elite') + ' (3-4)' - div(style='display:none;') + div p span.shop-sprite.item-img(class='shop_head_special_1') !=env.t('eliteThird') @@ -89,7 +88,7 @@ tr td a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('champion') + ' (5-6)' - div(style='display:none;') + div p span.shop-sprite.item-img(class='shop_shield_special_1') !=env.t('championFifth') @@ -100,18 +99,18 @@ tr td a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendary') + ' (7)' - div(style='display:none;') + div p !=env.t('legSeventh') tr td a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroic') - div(style='display:none;') + div p=env.t('heroicText') tr td a.label.label-npc(ng-click='toggleUserTier($event)')=env.t('npc') - div(style='display:none;') + div p=env.t('npcText') include ./challenge-box diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index cc9a3d986b..23635363ec 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -46,5 +46,5 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( .avatar-level.label.label-default(ng-class='userLevelStyle(profile)') span.glyphicon.glyphicon-circle-arrow-up(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') =env.t('lvl') - | {{profile.stats.lvl}} - span.glyphicon.glyphicon-plus-sign(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn', {reLevel: "{{profile.achievements.rebirthLevel}}"}), style='margin-left:5px') + | {{profile.stats.lvl}}  + span.glyphicon.glyphicon-plus-sign(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn', {reLevel: "{{profile.achievements.rebirthLevel}}"})) diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index d812ded929..eea952c974 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -34,8 +34,8 @@ |   =env.t('logout') // party invitation notification - a(ng-show='user.party.invitation', style='cursor: pointer;', x-bind='click:gotoPartyChat') + a(ng-show='user.party.invitation', x-bind='click:gotoPartyChat') span.glyphicon.glyphicon-user // party chat notification - a(ng-show='newChatMessages(_party.chat,user.party.lastMessageSeen)', style='cursor: pointer;', x-bind='click:gotoPartyChat') + a(ng-show='newChatMessages(_party.chat,user.party.lastMessageSeen)', x-bind='click:gotoPartyChat') span.glyphicon.glyphicon-comment(tooltip=env.t('partyNotification')) diff --git a/views/shared/modals/buy-gems.jade b/views/shared/modals/buy-gems.jade index 8c3f0faa52..1753b96853 100644 --- a/views/shared/modals/buy-gems.jade +++ b/views/shared/modals/buy-gems.jade @@ -20,7 +20,7 @@ script(id='modals/buyGems.html', type='text/ng-template') tr td .btn.btn-primary(ng-click='showStripe()')=env.t('payWithCard') - div(style='float:left;') + div //-script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-env="#{env.NODE_ENV == 'production' ? '' : 'sandbox'}", data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') //script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') p diff --git a/views/shared/modals/death.jade b/views/shared/modals/death.jade index 842564835a..4ab50771a3 100644 --- a/views/shared/modals/death.jade +++ b/views/shared/modals/death.jade @@ -4,7 +4,7 @@ script(type='text/ng-template', id='modals/death.html') .container-fluid .row .col-md-3 - figure.notification-character + figure .GrimReaper .col-md-9 h2=env.t('youDied') diff --git a/views/shared/modals/drops.jade b/views/shared/modals/drops.jade index c2dbac24af..fcb91e808a 100644 --- a/views/shared/modals/drops.jade +++ b/views/shared/modals/drops.jade @@ -3,11 +3,13 @@ script(type='text/ng-template', id='modals/dropsEnabled.html') h4=env.t('dropsEnabled') .modal-body p - span.item-drop-icon(class='Pet_Egg_Wolf') + figure + .item-drop-icon(class='Pet_Egg_Wolf') span!=env.t('firstDrop', {eggText: "{{Content.eggs.Wolf.text}}", eggNotes: "{{Content.eggs.Wolf.notes}}"}) br p - span.item-drop-icon(class='Pet_Currency_Gem') + figure + .item-drop-icon(class='Pet_Currency_Gem') span!=env.t('useGems') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('close') \ No newline at end of file diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index da90f985d5..4c702f8071 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -9,7 +9,7 @@ script(type='text/ng-template', id='modals/member.html') .col-md-6 img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') - ul.muted.list-unstyled(ng-if='profile.auth.timestamps', style='margin-top:10px;') + ul.muted.list-unstyled(ng-if='profile.auth.timestamps') li {{profile._id}} li(ng-show='profile.auth.timestamps.created')=env.t('memberSince') | {{timestamp(profile.auth.timestamps.created)}} - diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index b198fdb3ca..5b33275165 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -3,7 +3,7 @@ script(type='text/ng-template', id='modals/mathUpdates.html') .modal-header h4 Math Updates .modal-body - .npc_tyler.pull-left(style='margin-right:10px') + .npc_tyler.pull-left p Hey all, Tyler here. Sorry for the rocky numbers (Exp, GP, etc) with the Class System roll-out! We're tweaking the math today, and things should be mostly finalized by tomorrow. Follow our progress here, and please do chime in! br p We've also changed classes to unlock at lvl 10 instead of 5, to prevent overwhelming our new users. And since users have expressed confusion, we'll be improving UI and clarifification. Stay tuned. diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index 8635b192ad..aac7952d10 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -28,10 +28,9 @@ script(type='text/ng-template', id='modals/showQuest.html') .pull-right(class='quest_{{selectedQuest.key}}') div(ng-bind-html='selectedQuest.notes') quest-rewards(key='{{selectedQuest.key}}') - hr - div(style='clear:left;clear:right') - .npc_ian.pull-left - p=env.t('questSend') + hr + .npc_ian.pull-left + p=env.t('questSend') .modal-footer button.btn.btn-default(ng-click='closeQuest(); $close()')=env.t('cancel') button.btn.btn-primary(ng-click='questInit(); $close()')=env.t('inviteParty') diff --git a/views/shared/modals/rebirth.jade b/views/shared/modals/rebirth.jade index 495eccdaab..786b2e84d2 100644 --- a/views/shared/modals/rebirth.jade +++ b/views/shared/modals/rebirth.jade @@ -4,7 +4,8 @@ script(type='text/ng-template', id='modals/rebirthEnabled.html') .modal-header h4=env.t('rebirthNew') .modal-body - .rebirth_orb.pull-left(style='margin-right: 5px') + figure + .rebirth_orb p span=env.t('rebirthUnlock') .modal-footer @@ -15,7 +16,8 @@ script(type='text/ng-template', id='modals/rebirth.html') h4=env.t('rebirthBegin') .modal-body include ../gems - .rebirth_orb.pull-left(style='margin-right: 5px') + figure + .rebirth_orb p=env.t('rebirthStartOver') br ul.list-unstyled @@ -32,8 +34,11 @@ script(type='text/ng-template', id='modals/rebirth.html') li=env.t('rebirthInList4') li=env.t('rebirthInList5') br - .achievement-sun.pull-left(style='margin-right: 5px') - p=env.t('rebirthEarnAchievement') + + p + span.vertical-align.inline-block.achievement-sun + |  + =env.t('rebirthEarnAchievement') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 2') diff --git a/views/shared/profiles/stats.jade b/views/shared/profiles/stats.jade index 11ffcb9316..4f3addef0d 100644 --- a/views/shared/profiles/stats.jade +++ b/views/shared/profiles/stats.jade @@ -29,13 +29,17 @@ h4=env.t('attributes') table.table.table-striped tr(ng-repeat='(k,v) in {str:"Strength (STR)",int:"Intelligence (INT)",con:"Constitution (CON)",per:"Perception (PER)"}') td - span.glyphicon.glyphicon-question-sign(ng-show='k=="str"', popover-title=env.t('strength'), popover-placement='right', popover=env.t('strengthText'), popover-trigger='mouseenter', style='margin-right:3px') - span.glyphicon.glyphicon-question-sign(ng-show='k=="con"', popover-title=env.t('constitution'), popover-placement='right', popover=env.t('conText') popover-trigger='mouseenter', style='margin-right:3px') - span.glyphicon.glyphicon-question-sign(ng-show='k=="per"', popover-title=env.t('perception'), popover-placement='right', popover=env.t('perText'), popover-trigger='mouseenter', style='margin-right:3px') - span.glyphicon.glyphicon-question-sign(ng-show='k=="int"', popover-title=env.t('intelligence'), popover-placement='right', popover=env.t('intText'), popover-trigger='mouseenter', style='margin-right:3px') + span.glyphicon.glyphicon-question-sign(ng-show='k=="str"', popover-title=env.t('strength'), popover-placement='right', popover=env.t('strengthText'), popover-trigger='mouseenter') + |   + span.glyphicon.glyphicon-question-sign(ng-show='k=="con"', popover-title=env.t('constitution'), popover-placement='right', popover=env.t('conText') popover-trigger='mouseenter') + |   + span.glyphicon.glyphicon-question-sign(ng-show='k=="per"', popover-title=env.t('perception'), popover-placement='right', popover=env.t('perText'), popover-trigger='mouseenter') + |   + span.glyphicon.glyphicon-question-sign(ng-show='k=="int"', popover-title=env.t('intelligence'), popover-placement='right', popover=env.t('intText'), popover-trigger='mouseenter') + |   strong {{v}}: {{profile._statsComputed[k]}} td - ul(style='list-style-type:none') + ul.list-unstyled li(ng-show='profile.stats.lvl > 1') span.glyphicon.glyphicon-question-sign(popover-title=env.t('levelBonus'), popover-trigger='mouseenter', popover-placement='top', popover=env.t('levelBonusText')) | diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 04c52659d4..8d70ac5360 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -14,7 +14,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s // Icons only available if you own the tasks (aka, hidden from challenge stats) span(ng-if='!obj._locked') - a.badge(ng-if='task.checklist[0]', ng-class='{"badge-success":checklistCompletion(task.checklist) == task.checklist.length}', ng-click='collapseChecklist(task)', style='margin:1px') + a.badge(ng-if='task.checklist[0]', ng-class='{"badge-success":checklistCompletion(task.checklist) == task.checklist.length}', ng-click='collapseChecklist(task)') {{checklistCompletion(task.checklist)}}/{{task.checklist.length}} span.glyphicon.glyphicon-tags(tooltip='{{Shared.appliedTags(user.tags, task.tags)}}', ng-hide='Shared.noTags(task.tags)') // edit @@ -205,7 +205,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s div(ng-if='(user.preferences.allocationMode == "taskbased" && user.preferences.automaticAllocation) || $state.is("options.social.challenges")') legend.option-title.pull-left=env.t('attributes') - .task-controls.tile-group(style='text-align:left') + .task-controls.tile-group.task-attributes button.task-action-btn.tile(type='button', ng-class='{active: task.attribute=="str"}', ng-click='task.attribute="str"')=env.t('physical') button.task-action-btn.tile(type='button', ng-class='{active: task.attribute=="int"}', ng-click='task.attribute="int"')=env.t('mental') button.task-action-btn.tile(type='button', ng-class='{active: task.attribute=="con"}', ng-click='task.attribute="con"')=env.t('social') diff --git a/views/static/about.jade b/views/static/about.jade index f5748b182b..6b4d161f09 100644 --- a/views/static/about.jade +++ b/views/static/about.jade @@ -9,15 +9,10 @@ block title block content .row - .col-md-12 - p(style='height:600;') - iframe(src='//player.vimeo.com/video/76557040', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/57654086', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/79172253', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/79172327', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') - p(style='height:600;') - iframe(src='//player.vimeo.com/video/79172363', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + .col-md-12#aboutPage + iframe(src='//player.vimeo.com/video/76557040', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/57654086', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/79172253', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/79172327', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/79172363', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') diff --git a/views/static/layout.jade b/views/static/layout.jade index 8c517310d7..0400a3b3d0 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -18,7 +18,7 @@ html(ng-app='habitrpgStatic') != env.getManifestFiles("static") body - div(ng-controller='AuthCtrl',style='margin-top:60px;') + div(ng-controller='AuthCtrl') include ./login-modal nav.navbar.navbar-inverse.navbar-fixed-top .navbar-header From 3f28d16478dec0399edeb049095928bc8ecc757d Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 9 Feb 2014 16:25:10 +0100 Subject: [PATCH 108/159] refactor(bs3): add fixed height modals & panels --- public/css/index.styl | 7 ++++--- views/options/social/challenge-box.jade | 2 +- views/shared/modals/new-stuff.jade | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index 1c889d042d..6d00b3e041 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -104,12 +104,13 @@ html, body //move .new-stuff-modal // a .modal-body - overflow-y: auto - max-height: 400px // Taken from Bootstrap 2.3.2 css, may need to change - h5 font-weight: 700 +.modal-fixed-height + overflow-y: auto + max-height: 400px // Taken from Bootstrap 2.3.2 css, may need to change + // notification-character used only by death modal's figure, move .modal-body diff --git a/views/options/social/challenge-box.jade b/views/options/social/challenge-box.jade index 0c13c672e6..983cd182d2 100644 --- a/views/options/social/challenge-box.jade +++ b/views/options/social/challenge-box.jade @@ -4,7 +4,7 @@ h3.panel-title=env.t('challenges') a.pull-right(target='_blank', href='https://trello.com/card/challenges-individual-party-guild-public/50e5d3684fe3a7266b0036d6/58') span.glyphicon.glyphicon-question-sign - .panel-body(bindonce='group.challenges') + .panel-body.modal-fixed-height(bindonce='group.challenges') div(ng-if='group.challenges.length > 0') table.table.table-striped tr(ng-repeat='challenge in group.challenges') diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index 5b33275165..ebdf889759 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -15,7 +15,7 @@ script(type='text/ng-template', id='modals/mathUpdates.html') script(type='text/ng-template', id='modals/newStuff.html') .modal-header h4 New Stuff! - .modal-body.new-stuff-modal + .modal-body.new-stuff-modal.modal-fixed-height table tr td From a7e3e76daa8a6b579737a3ba65ad5698872b8fee Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 9 Feb 2014 16:29:16 +0100 Subject: [PATCH 109/159] refactor(bs3): add fixed height modals & panels for quests & group members --- views/options/social/group.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/options/social/group.jade b/views/options/social/group.jade index a0088fcfae..b0820b1ed6 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -14,7 +14,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild .panel-heading h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' h3.panel-title(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} - .panel-body + .panel-body.modal-fixed-height div(ng-if='group.quest.active==false') table.table.table-striped tr(ng-repeat='member in group.members') @@ -113,7 +113,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild .panel.panel-default .panel-heading h3.panel-title=env.t('members') - .panel-body + .panel-body.modal-fixed-height span =env.t('partyList') select#partyOrder( From 18f922c756fb5f3f25ba20d69cb6ee0ea4169e88 Mon Sep 17 00:00:00 2001 From: benmanley Date: Mon, 10 Feb 2014 13:30:54 +0000 Subject: [PATCH 110/159] Fix food tray z-index --- public/css/inventory.styl | 1 + 1 file changed, 1 insertion(+) diff --git a/public/css/inventory.styl b/public/css/inventory.styl index 256db84ddf..78a0962ba1 100644 --- a/public/css/inventory.styl +++ b/public/css/inventory.styl @@ -46,6 +46,7 @@ menu.pets div width:30% height: 50% overflow-y: scroll + z-index: 1 .inventory-list p From 1c41c4ddb9a5b04297a371bc4d6aba013ce33f17 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Mon, 10 Feb 2014 18:38:58 +0100 Subject: [PATCH 111/159] fix(css): better food tray --- public/css/inventory.styl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/css/inventory.styl b/public/css/inventory.styl index 78a0962ba1..44c4819343 100644 --- a/public/css/inventory.styl +++ b/public/css/inventory.styl @@ -40,12 +40,12 @@ menu.pets div // display:block .food-tray - position:fixed - right:0px - bottom:0px - width:30% + position: fixed + right: 15px + bottom: 0px + width: 30% height: 50% - overflow-y: scroll + overflow-y: auto z-index: 1 .inventory-list From a22e28143f74302c8340c3d33b01af9714875523 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Mon, 10 Feb 2014 19:04:57 +0100 Subject: [PATCH 112/159] fix(css): lighter columns title --- public/css/tasks.styl | 1 + 1 file changed, 1 insertion(+) diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 35d43afeb7..1effe2ae3d 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -58,6 +58,7 @@ for $stage in $stages .task-column_title margin: 0 0 0.5em padding: 0 + font-weight: 300 // 50% width columns with scrollbars for tablets @media (min-width: 768px) and (max-width: 970px) From ffb42906e1d7c6bd8f01e715d98d96426bc6d0de Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 10 Feb 2014 10:39:01 -0700 Subject: [PATCH 113/159] feat(event-tracking): start adding some client-side GA event-tracking --- public/js/app.js | 5 ++++- public/js/controllers/authCtrl.js | 1 + public/js/controllers/groupsCtrl.js | 2 +- public/js/controllers/inventoryCtrl.js | 4 ++-- public/js/controllers/notificationCtrl.js | 6 +++--- public/js/controllers/rootCtrl.js | 16 +++++++++------- public/js/controllers/settingsCtrl.js | 2 +- public/js/static.js | 14 ++++++++++++++ views/options/settings.jade | 4 ++-- views/shared/footer.jade | 2 +- views/shared/gems.jade | 2 +- views/shared/modals/rebirth.jade | 4 ++-- views/shared/modals/reroll.jade | 2 +- views/static/plans.jade | 8 ++++---- 14 files changed, 46 insertions(+), 26 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index fdffa58ad6..8b3cbdb26f 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -189,7 +189,10 @@ window.habitrpg = angular.module('habitrpg', }) .state('options.settings.subscription', { url: "/subscription", - templateUrl: "partials/options.settings.subscription.html" + templateUrl: "partials/options.settings.subscription.html", + onEnter: function(){ + window.ga && ga('send', 'event', 'page', 'view', 'Basic Subscription'); + } }) var settings = JSON.parse(localStorage.getItem(STORAGE_SETTINGS_ID)); diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 77a297ebb2..55ee72b98e 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -68,6 +68,7 @@ angular.module('authCtrl', []) }; $scope.playButtonClick = function(){ + window.ga && ga('send', 'event', 'button', 'click', 'Play'); if (User.authenticated()) { window.location.href = '/#/tasks'; } else { diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 9a97d9b1c3..6aadf0b502 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -219,7 +219,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' } $scope.newGroup = newGroup() $scope.create = function(group){ - if (User.user.balance < 1) return $rootScope.openModal('buyGems'); + if (User.user.balance < 1) return $rootScope.openModal('buyGems', {track:"Gems > Create Group"}); if (confirm(window.env.t('confirmGuild'))) { group.$save(function(saved){ diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 81c7437d1e..8b3b084903 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -130,7 +130,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', if (item.lvl && item.lvl > user.stats.lvl) return alert(window.env.t('mustLevel', {level: item.lvl})); $rootScope.selectedQuest = item; - $rootScope.openModal('showQuest', 'InventoryCtrl'); + $rootScope.openModal('showQuest', {controller:'InventoryCtrl'}); } $scope.closeQuest = function(){ $rootScope.selectedQuest = undefined; @@ -149,7 +149,7 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', if (!completedPrevious) return $scope.purchase("quests", item); $rootScope.selectedQuest = item; - $rootScope.openModal('buyQuest', 'InventoryCtrl'); + $rootScope.openModal('buyQuest', {controller:'InventoryCtrl'}); } } ]); diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index a04474e879..b669c470a0 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -6,7 +6,7 @@ habitrpg.controller('NotificationCtrl', $rootScope.$watch('user.stats.hp', function(after, before) { if (after <= 0){ - $rootScope.openModal('death', undefined, undefined, false, 'static'); + $rootScope.openModal('death', {keyboard:false, backdrop:'static'}); } if (after == before) return; if (User.user.stats.lvl == 0) return; @@ -105,7 +105,7 @@ habitrpg.controller('NotificationCtrl', // Classes modal $rootScope.$watch('!user.flags.classSelected && user.stats.lvl >= 10', function(after, before){ if(after){ - $rootScope.openModal('chooseClass', 'UserCtrl', undefined, false, 'static'); + $rootScope.openModal('chooseClass', {controller:'UserCtrl', keyboard:false, backdrop:'static'}); } }); @@ -125,7 +125,7 @@ habitrpg.controller('NotificationCtrl', // Completed quest modal $rootScope.$watch('user.party.quest.completed', function(after, before){ if (after == before || after != true) return; - $rootScope.openModal('questCompleted', 'InventoryCtrl'); + $rootScope.openModal('questCompleted', {controller:'InventoryCtrl'}); }); // Quest invitation modal diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index f950545e92..c68e9aac8a 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -3,8 +3,8 @@ /* Make user and settings available for everyone through root scope. */ -habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', 'Groups', 'Shared', 'Content', '$modal', - function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification, Groups, Shared, Content, $modal) { +habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', 'Groups', 'Shared', 'Content', '$modal', '$timeout', + function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification, Groups, Shared, Content, $modal, $timeout) { var user = User.user; var initSticky = _.once(function(){ @@ -66,13 +66,15 @@ 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, keyboard, backdrop){ + $rootScope.openModal = function(template, options){//controller, scope, keyboard, backdrop){ + if (!options) options = {}; + if (options.track) window.ga && ga('send', 'event', 'button', 'click', options.track); return $modal.open({ templateUrl: 'modals/' + template + '.html', - controller: controller, // optional - scope: scope, // optional - keyboard: (keyboard === undefined ? true : keyboard), // optional - backdrop: (backdrop === undefined ? true : backdrop) // optional + controller: options.controller, // optional + scope: options.scope, // optional + keyboard: (options.keyboard === undefined ? true : options.keyboard), // optional + backdrop: (options.backdrop === undefined ? true : options.backdrop) // optional }); } diff --git a/public/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js index 1bce807c7a..98752e50be 100644 --- a/public/js/controllers/settingsCtrl.js +++ b/public/js/controllers/settingsCtrl.js @@ -81,7 +81,7 @@ habitrpg.controller('SettingsCtrl', $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); + $rootScope.openModal('restore', {scope:$scope}); }; $scope.restore = function(){ diff --git a/public/js/static.js b/public/js/static.js index d0b5683b76..0ef77be42a 100644 --- a/public/js/static.js +++ b/public/js/static.js @@ -5,3 +5,17 @@ window.habitrpgStatic = angular.module('habitrpgStatic', ['notificationServices' .constant("STORAGE_USER_ID", 'habitrpg-user') .constant("STORAGE_SETTINGS_ID", 'habit-mobile-settings') .constant("MOBILE_APP", false) + +habitrpgStatic.controller("PlansCtrl", ['$rootScope', '$location', '$timeout', + function($rootScope, $location, $timeout) { + + // GA goal-tracking + $timeout(function(){ + window.ga && ga('send', 'event', 'page', 'view', 'Plans'); + }); + + $rootScope.clickContact = function(){ + window.ga && ga('send', 'event', 'button', 'click', 'Contact Us (Plans)'); + } + } +]); diff --git a/views/options/settings.jade b/views/options/settings.jade index 284d24c785..c1d133d00e 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -88,8 +88,8 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') hr h4=env.t('dangerZone') - a.btn.btn-danger(ng-click='openModal("reset", "SettingsCtrl")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetAccPop'))= env.t('resetAccount') - a.btn.btn-danger(ng-click='openModal("delete", "SettingsCtrl")', popover-trigger='mouseenter', popover=env.t('deleteAccPop'))= env.t('deleteAccount') + a.btn.btn-danger(ng-click='openModal("reset", {controller:"SettingsCtrl"})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetAccPop'))= env.t('resetAccount') + a.btn.btn-danger(ng-click='openModal("delete", {controller:"SettingsCtrl"})', popover-trigger='mouseenter', popover=env.t('deleteAccPop'))= env.t('deleteAccount') script(type='text/ng-template', id='partials/options.settings.api.html') .containter-fluid diff --git a/views/shared/footer.jade b/views/shared/footer.jade index 9f1482763d..8cd492ea45 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -13,7 +13,7 @@ footer.footer(ng-controller='FooterCtrl') ul.list-unstyled if (!env.isStaticPage) li - .btn.btn-sm.btn-success(ng-click='openModal("buyGems")') + .btn.btn-sm.btn-success(ng-click='openModal("buyGems",{track:"Gems > Donate"})') span.glyphicon.glyphicon-heart =env.t('companyDonate') li diff --git a/views/shared/gems.jade b/views/shared/gems.jade index ef3738ef91..9b78852cb8 100644 --- a/views/shared/gems.jade +++ b/views/shared/gems.jade @@ -1,4 +1,4 @@ -a.pull-right.gem-wallet(ng-click='openModal("buyGems")', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom') +a.pull-right.gem-wallet(ng-click='openModal("buyGems",{track:"Gems > Wallet"})', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom') span.task-action-btn.tile.flush.bright.add-gems-btn + span.task-action-btn.tile.flush.neutral .Pet_Currency_Gem2x.Gems diff --git a/views/shared/modals/rebirth.jade b/views/shared/modals/rebirth.jade index 786b2e84d2..bb11a3ec48 100644 --- a/views/shared/modals/rebirth.jade +++ b/views/shared/modals/rebirth.jade @@ -11,7 +11,7 @@ script(type='text/ng-template', id='modals/rebirthEnabled.html') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('close') -script(type='text/ng-template', id='modals/rebirth.html') +script(type='text/ng-template', id='modals/rebirth.html') .modal-header h4=env.t('rebirthBegin') .modal-body @@ -42,7 +42,7 @@ script(type='text/ng-template', id='modals/rebirth.html') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 2') - a.btn.btn-success(ng-click='openModal("buyGems")')=env.t('buyMoreGems') + a.btn.btn-success(ng-click='openModal("buyGems",{track:"Gems > Rebirth"})')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 2', ng-controller='SettingsCtrl') a.btn.btn-danger(ng-click='$close(); rebirth()')=env.t('beReborn') diff --git a/views/shared/modals/reroll.jade b/views/shared/modals/reroll.jade index ae7460b44d..5bfa2dacd5 100644 --- a/views/shared/modals/reroll.jade +++ b/views/shared/modals/reroll.jade @@ -9,7 +9,7 @@ script(type='text/ng-template', id='modals/reroll.html') .modal-footer button.btn.btn-default(ng-click='$close()')=env.t('neverMind') span(ng-if='user.balance < 1') - a.btn.btn-success(ng-click='openModal("buyGems")')=env.t('buyMoreGems') + a.btn.btn-success(ng-click='openModal("buyGems",{track:{"Gems > Reroll"}})')=env.t('buyMoreGems') span.gem-cost=env.t('notEnoughGems') span(ng-if='user.balance >= 1', ng-controller='SettingsCtrl') a.btn.btn-danger(ng-click='$close(); reroll()')=env.t('fortify') diff --git a/views/static/plans.jade b/views/static/plans.jade index c8446edd8f..0619040c04 100644 --- a/views/static/plans.jade +++ b/views/static/plans.jade @@ -8,7 +8,7 @@ block title title=env.t('groupPlans') block content - .row + .row(ng-controller='PlansCtrl') .col-md-12 h2=env.t('groupPlans') @@ -94,8 +94,8 @@ block content th //| Price td - a.btn.btn-default.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') + a.btn.btn-default.muted(ng-click='clickContact()', href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') td - a.btn.btn-default.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') + a.btn.btn-default.muted(ng-click='clickContact()', href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') td - a.btn.btn-primary(href='https://docs.google.com/forms/d/12Jqj_8f3oQS0B3ZUHewHbK61uLjBdzBeB0zyEqB9lxM/viewform')=env.t('contactUs') \ No newline at end of file + a.btn.btn-primary(ng-click='clickContact()', href='https://docs.google.com/forms/d/12Jqj_8f3oQS0B3ZUHewHbK61uLjBdzBeB0zyEqB9lxM/viewform')=env.t('contactUs') From f7b4a04a590ade26871abc726ade2c666176488e Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 10 Feb 2014 11:35:33 -0700 Subject: [PATCH 114/159] feat(event-tracking): add server-side GA tracking for ecommerce events --- config.json.example | 3 ++- package.json | 3 ++- public/js/controllers/footerCtrl.js | 2 +- src/controllers/user.js | 5 +++++ src/middleware.js | 1 + src/utils.js | 4 ++++ 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/config.json.example b/config.json.example index f63a71703e..da9b3bb238 100644 --- a/config.json.example +++ b/config.json.example @@ -17,5 +17,6 @@ "STRIPE_API_KEY":"aaaabbbbccccddddeeeeffff00001111", "STRIPE_PUB_KEY":"22223333444455556666777788889999", "PAYPAL_MERCHANT":"paypal-merchant@gmail.com", - "NEW_RELIC_LICENSE_KEY":"NEW_RELIC_LICENSE_KEY" + "NEW_RELIC_LICENSE_KEY":"NEW_RELIC_LICENSE_KEY", + "GA_ID": "GA_ID" } diff --git a/package.json b/package.json index a529116deb..b3a788169d 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,8 @@ "winston": "~0.7.2", "winston-mail": "~0.2.7", "winston-newrelic": "~0.1.4", - "domain-middleware": "~0.1.0" + "domain-middleware": "~0.1.0", + "universal-analytics": "~0.3.2" }, "private": true, "subdomain": "habitrpg", diff --git a/public/js/controllers/footerCtrl.js b/public/js/controllers/footerCtrl.js index bcdd7ea6a5..5d2fa238e6 100644 --- a/public/js/controllers/footerCtrl.js +++ b/public/js/controllers/footerCtrl.js @@ -20,7 +20,7 @@ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', 'UA-33510635-1', 'habitrpg.com'); + ga('create', window.env.GA_ID, 'habitrpg.com'); ga('send', 'pageview'); } diff --git a/src/controllers/user.js b/src/controllers/user.js index f580f0f360..9ca65c1056 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -10,6 +10,7 @@ var validator = require('validator'); var check = validator.check; var sanitize = validator.sanitize; var User = require('./../models/user').model; +var ga = require('./../utils').ga; var Group = require('./../models/group').model; var Challenge = require('./../models/challenge').model; var logging = require('./../logging'); @@ -294,6 +295,7 @@ api.buyGems = function(req, res, next) { function(response, cb) { //user.purchased.ads = true; if (req.query.plan) { + ga.event('subscribe', 'Stripe').send() user.purchased.plan = { planId:'basic_earned', customerId: response.id, @@ -302,6 +304,7 @@ api.buyGems = function(req, res, next) { gemsBought: 0 }; } else { + ga.event('checkout', 'Stripe').send() user.balance += 5; } user.save(cb); @@ -331,6 +334,7 @@ api.cancelSubscription = function(req, res, next) { ], function(err, saved){ if (err) return res.send(500, err.toString()); // don't json this, let toString() handle errors res.send(200, saved); + ga.event('unsubscribe', 'Stripe').send() }); } @@ -351,6 +355,7 @@ api.buyGemsPaypalIPN = function(req, res, next) { //user.purchased.ads = true; user.save(); logging.info('PayPal transaction completed and user updated'); + ga.event('checkout', 'PayPal').send() }); } }); diff --git a/src/middleware.js b/src/middleware.js index e4e871b887..cce035bc14 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -234,6 +234,7 @@ module.exports.locals = function(req, res, next) { NODE_ENV: nconf.get('NODE_ENV'), BASE_URL: nconf.get('BASE_URL'), PAYPAL_MERCHANT: nconf.get('PAYPAL_MERCHANT'), + GA_ID: nconf.get("GA_ID"), IS_MOBILE: /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')), STRIPE_PUB_KEY: nconf.get('STRIPE_PUB_KEY'), getManifestFiles: getManifestFiles, diff --git a/src/utils.js b/src/utils.js index fd29e8f4e8..b5f51ccb91 100644 --- a/src/utils.js +++ b/src/utils.js @@ -3,6 +3,8 @@ var nconf = require('nconf'); var crypto = require('crypto'); var path = require("path"); +module.exports.ga = undefined; // set Google Analytics on nconf init + module.exports.sendEmail = function(mailData) { var smtpTransport = nodemailer.createTransport("SMTP",{ service: nconf.get('SMTP_SERVICE'), @@ -45,4 +47,6 @@ module.exports.setupConfig = function(){ Error.stackTraceLimit = Infinity; if (nconf.get('NODE_ENV') === 'production') require('newrelic'); + + module.exports.ga = require('universal-analytics')(nconf.get('GA_ID')); }; \ No newline at end of file From 2480591444ec19c16d4fb6d2b552137905c3e366 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 10 Feb 2014 13:28:16 -0700 Subject: [PATCH 115/159] refactor(bs3): put paypal button back in, use javascript API to construct button on `ng-init` (since you can't nest script tags) --- public/js/controllers/rootCtrl.js | 18 ++++++++++++++++++ public/manifest.json | 1 + views/shared/modals/buy-gems.jade | 15 +++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index c68e9aac8a..e0c3355093 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -90,6 +90,24 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ $rootScope.flash[type].splice($index, 1); } + $rootScope.initPayPalButton = function($event){ + //debugger + var data = { + name:env.t('paypalText'), + //env:window.env.NODE_ENV == 'production' ? '' : 'sandbox', + quantity:1, + amount:5, + currency:'USD', + tax:0, + callback:window.env.BASE_URL + '/api/v2/user/buy-gems/paypal-ipn', + custom:'?uid='+User.user._id + '&apiToken=' + User.user.apiToken, + 'return':window.env.BASE_URL, + rm:1, + no_shipping:1 + }; + PAYPAL.apps.ButtonFactory.create(window.env.PAYPAL_MERCHANT, data, 'buynow', document.getElementById('custom-paypal-button')); + } + $rootScope.showStripe = function(subscription) { StripeCheckout.open({ key: window.env.STRIPE_PUB_KEY, diff --git a/public/manifest.json b/public/manifest.json index 142fc83361..eed591c38c 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -20,6 +20,7 @@ "bower_components/ngInfiniteScroll/ng-infinite-scroll.js", "bower_components/select2/select2.js", "bower_components/angular-ui-select2/src/select2.js", + "bower_components/JavaScriptButtons/dist/paypal-button.min.js", "bower_components/angular-bootstrap/ui-bootstrap.js", "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", diff --git a/views/shared/modals/buy-gems.jade b/views/shared/modals/buy-gems.jade index 1753b96853..6b7aa884c5 100644 --- a/views/shared/modals/buy-gems.jade +++ b/views/shared/modals/buy-gems.jade @@ -19,12 +19,15 @@ script(id='modals/buyGems.html', type='text/ng-template') =env.t('USD') tr td - .btn.btn-primary(ng-click='showStripe()')=env.t('payWithCard') - div - //-script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-env="#{env.NODE_ENV == 'production' ? '' : 'sandbox'}", data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') - //script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') - p - small.muted=env.t('payNote') + .row + .col-md-6 + .btn.btn-primary(ng-click='showStripe()')=env.t('payWithCard') + .col-md-6 + //-script(src='/bower_components/JavaScriptButtons/dist/paypal-button.min.js?merchant=#{env.PAYPAL_MERCHANT}', data-button='buynow', data-name=env.t('paypalText'), data-quantity='1', data-amount='5', data-currency='USD', data-tax='0', data-callback='#{env.BASE_URL}/api/v2/user/buy-gems/paypal-ipn', data-custom='?uid={{user._id}}&apiToken={{user.apiToken}}', data-return='#{env.BASE_URL}', data-rm='1', data-no_shipping='1') + div#custom-paypal-button.paypal-button(ng-init='initPayPalButton()') + .row + .col-md-12 + small.muted=env.t('payNote') div(ng-include="'partials/options.settings.subscription.html'") From ebd1df932e28263e5cc01e8a35f545ab26f1e8bd Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 10 Feb 2014 13:48:34 -0700 Subject: [PATCH 116/159] fix(bs3): fix to MemberModalCtrl parameter --- public/js/controllers/groupsCtrl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 6aadf0b502..1c5bd00958 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -29,7 +29,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' // We need the member information up top here, but then we pass it down to the modal controller // down below. Better way of handling this? Members.selectMember(uid); - $rootScope.openModal('member', 'MemberModalCtrl'); + $rootScope.openModal('member', {controller:'MemberModalCtrl'}); } } From d89fb17b03b2e2c0fb1da77fb13cc660a5b6c9d1 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 10 Feb 2014 14:14:45 -0700 Subject: [PATCH 117/159] feat(event-tracking): track ecommerce events --- src/controllers/user.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index 9ca65c1056..eed05a6b9f 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -295,7 +295,6 @@ api.buyGems = function(req, res, next) { function(response, cb) { //user.purchased.ads = true; if (req.query.plan) { - ga.event('subscribe', 'Stripe').send() user.purchased.plan = { planId:'basic_earned', customerId: response.id, @@ -303,9 +302,12 @@ api.buyGems = function(req, res, next) { dateUpdated: new Date, gemsBought: 0 }; + ga.event('subscribe', 'Stripe').send() + ga.transaction(response.id, 5).item(5, 1, "stripe-subscription", "Subscription > PayPal").send() } else { - ga.event('checkout', 'Stripe').send() user.balance += 5; + ga.event('checkout', 'Stripe').send() + ga.transaction(response.id, 5).item(5, 1, "stripe-checkout", "Gems > Stripe").send() } user.save(cb); } @@ -356,6 +358,7 @@ api.buyGemsPaypalIPN = function(req, res, next) { user.save(); logging.info('PayPal transaction completed and user updated'); ga.event('checkout', 'PayPal').send() + ga.transaction(req.body.txn_id, 5).item(5, 1, "paypal-checkout", "Gems > PayPal").send() }); } }); From 39ec10232643dc3e8d9873861c8a61ae68391390 Mon Sep 17 00:00:00 2001 From: benmanley Date: Mon, 10 Feb 2014 22:22:54 +0000 Subject: [PATCH 118/159] Fix alignment of task meta icons (glyphicons) --- public/css/tasks.styl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 1effe2ae3d..42118589ea 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -285,12 +285,23 @@ for $stage in $stages // ----------------------- .task-meta-controls float: right - margin: 0.75em 0.5em 0 0.25em + margin: 0.75em 0.5em 0 0.5em height: 1em opacity: 0.25 a text-decoration: none + + // improve alignment of task icons + .glyphicon-signal + margin-left: 0.25em + .glyphicon-remove, .glyphicon-ok, a.badge + margin-right: 0.25em + .glyphicon-tags + margin-left: 0.1em + margin-right: 0.4em + a.badge + position: relative; top:-2px; .task:hover .task-meta-controls opacity: 1 From 0c99976bf5a3c7f04f031d62a8b07c862c85a0a9 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 10 Feb 2014 18:54:29 -0700 Subject: [PATCH 119/159] fix(event-tracking): stripe sub, not pp --- src/controllers/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index eed05a6b9f..9247ddafa7 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -303,7 +303,7 @@ api.buyGems = function(req, res, next) { gemsBought: 0 }; ga.event('subscribe', 'Stripe').send() - ga.transaction(response.id, 5).item(5, 1, "stripe-subscription", "Subscription > PayPal").send() + ga.transaction(response.id, 5).item(5, 1, "stripe-subscription", "Subscription > Stripe").send() } else { user.balance += 5; ga.event('checkout', 'Stripe').send() From 42766125d5c8870f25c3a0a001473f700b8f6cc1 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 10 Feb 2014 19:51:53 -0700 Subject: [PATCH 120/159] fix(pets): add questPets to UserSchema.items.mounts too fixes #2814 --- src/models/user.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/models/user.js b/src/models/user.js index 9dcdc73869..2d81658e0f 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -183,6 +183,8 @@ var UserSchema = new Schema({ mounts: _.defaults( // First transform to a 1D eggs/potions mapping _.transform(shared.content.pets, function(m,v,k){ m[k] = Boolean; }), + // Then add quest pets + _.transform(shared.content.questPets, function(m,v,k){ m[k] = Boolean; }), // Then add additional pets (backer, contributor) { 'LionCub-Ethereal': Boolean, From cb079977e6f35f9308ab28158373dd3e1de9f798 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 11 Feb 2014 00:51:29 -0700 Subject: [PATCH 121/159] feat(marketing): start fleshing out the about page with images, content, etc. Create separate videos page --- bower.json | 3 +- public/css/static.styl | 9 ++- public/js/static.js | 12 +++- public/manifest.json | 5 +- public/marketing/animals.png | Bin 0 -> 2439 bytes public/marketing/challenge.png | Bin 0 -> 154590 bytes public/marketing/drops.png | Bin 0 -> 169001 bytes public/marketing/education.png | Bin 0 -> 1477 bytes public/marketing/gear.png | Bin 0 -> 6776 bytes public/marketing/guild.png | Bin 0 -> 413048 bytes public/marketing/guild_small.png | Bin 0 -> 134673 bytes public/marketing/iphone_android_habit.jpg | Bin 0 -> 52094 bytes public/marketing/lefnire.png | Bin 0 -> 66682 bytes public/marketing/social_competitve.png | Bin 0 -> 169562 bytes public/marketing/wellness.png | Bin 0 -> 1397 bytes src/routes/pages.js | 6 ++ views/static/about.jade | 70 ++++++++++++++++++++-- views/static/layout.jade | 5 +- views/static/videos.jade | 18 ++++++ 19 files changed, 115 insertions(+), 13 deletions(-) create mode 100644 public/marketing/animals.png create mode 100644 public/marketing/challenge.png create mode 100644 public/marketing/drops.png create mode 100644 public/marketing/education.png create mode 100644 public/marketing/gear.png create mode 100644 public/marketing/guild.png create mode 100644 public/marketing/guild_small.png create mode 100644 public/marketing/iphone_android_habit.jpg create mode 100644 public/marketing/lefnire.png create mode 100644 public/marketing/social_competitve.png create mode 100644 public/marketing/wellness.png create mode 100644 views/static/videos.jade diff --git a/bower.json b/bower.json index 0665f44874..e9f2e6ae37 100644 --- a/bower.json +++ b/bower.json @@ -39,7 +39,8 @@ "gemoji": "git://github.com/github/gemoji", "sticky": "*", "swagger-ui": "https://github.com/wordnik/swagger-ui.git#105c516f5f055b140e935e9cfe0c36f841921dff", - "ngInfiniteScroll": "~1.0.0" + "ngInfiniteScroll": "~1.0.0", + "jquery-colorbox": "~1.4.36" }, "devDependencies": { "angular-mocks": "~1.2.11" diff --git a/public/css/static.styl b/public/css/static.styl index 2a13070352..ff01b7f125 100644 --- a/public/css/static.styl +++ b/public/css/static.styl @@ -3,7 +3,6 @@ // Vendor Includes - include first so we can override // Import only styles that do not have urls to images! Include them directly in the page! @import "../bower_components/angular-loading-bar/build/loading-bar.css" - @import "./shared.styl" @import "./footer" @@ -32,4 +31,10 @@ body display:inline font-size: 20px width:100px - height:50px \ No newline at end of file + height:50px + +#about-page + img + box-shadow 0px 0px 10px 5px #888 + margin 10px + max-width 500px \ No newline at end of file diff --git a/public/js/static.js b/public/js/static.js index 0ef77be42a..752495c70f 100644 --- a/public/js/static.js +++ b/public/js/static.js @@ -18,4 +18,14 @@ habitrpgStatic.controller("PlansCtrl", ['$rootScope', '$location', '$timeout', window.ga && ga('send', 'event', 'button', 'click', 'Contact Us (Plans)'); } } -]); +]) +.controller('AboutCtrl',[function(){ + $(document).ready(function(){ + $('a.gallery').colorbox({ + maxWidth: '90%', + maxHeight: '80%', + transition: 'none' + //maxHeight: '70%' + }); + }); +}]) diff --git a/public/manifest.json b/public/manifest.json index eed591c38c..ce7e2b6e8c 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -75,10 +75,11 @@ "bower_components/jquery/jquery.js", "bower_components/habitrpg-shared/dist/habitrpg-shared.js", "bower_components/angular/angular.js", - + "bower_components/angular-ui/build/angular-ui.js", "bower_components/angular-bootstrap/ui-bootstrap.js", "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", "bower_components/bootstrap/dist/js/bootstrap.js", + "bower_components/jquery-colorbox/jquery.colorbox-min.js", "bower_components/angular-loading-bar/build/loading-bar.js", "js/env.js", @@ -90,7 +91,7 @@ ], "css": [ "bower_components/bootstrap/dist/css/bootstrap.css", - + "bower_components/jquery-colorbox/example1/colorbox.css", "static.css" ] } diff --git a/public/marketing/animals.png b/public/marketing/animals.png new file mode 100644 index 0000000000000000000000000000000000000000..ecae556c6e6532b0389d57e5afbb64c731635733 GIT binary patch literal 2439 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 *f~8B)f^H6S~EX$Cuum=4Hy%h<;&C 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 HDCj=`5rHz3 literal 0 HcmV?d00001 diff --git a/public/marketing/drops.png b/public/marketing/drops.png new file mode 100644 index 0000000000000000000000000000000000000000..2324e26eacdf03d6e5eaf3a64a44c8ad08e29e76 GIT binary patch literal 169001 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 z
      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

      -W92y6# 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%0AJ_|OUesDJ%z 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 Il&s$UKV#GdegFUf literal 0 HcmV?d00001 diff --git a/public/marketing/guild.png b/public/marketing/guild.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd66b3020a18d303754212fbb93787ea6f36a21 GIT binary patch literal 413048 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≦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 z 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

      0A?2QPRY3OMf2zg)$2ne|B4UIVzghc+y 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 z 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 literal 0 HcmV?d00001 diff --git a/public/marketing/lefnire.png b/public/marketing/lefnire.png new file mode 100644 index 0000000000000000000000000000000000000000..657dc1eaf5a60261f2044eb32f1eb06a7006ce74 GIT binary patch literal 66682 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

      6AQU;SILvd~6p+yRhq`Xh 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 literal 0 HcmV?d00001 diff --git a/public/marketing/social_competitve.png b/public/marketing/social_competitve.png new file mode 100644 index 0000000000000000000000000000000000000000..3243a9d7628094647ad57c2cebfcf15c5ed0b345 GIT binary patch literal 169562 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ɢpW?q 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%0AP=a2VGk1_)(w$OM$oK(fUh=miL z^MVeFmQ3w@wIR?(lHf-5noT;s{ZmQ3=pzHV*0TYeT_BPn3N-Ml<9$P|oDpo8D*tub zV9pAP0is637$n(O{7vvieam2=|KL}m8%hF%z9ESQZwHU4=Q}g*b)Ax57hYSG#u0V(>Jt}6a<&Q%QzmPjM%+O~_jR)04f3GB zD96ucFjd1NK>b=jO4G(%Z4LLvp;o-iavlgrZ@zH>K^UkX?5{M>jXUW|NZopv}AG&?K63F zC5*sMo8O8*eP3g&(5s@0y!zh59w#%}Hd}TW212Ch$V%dO$*-U(+Cu*pClJb}S$BHv zpBT%K8Cch(e326B#mDDxY+r%QNsh|Ug_is3Kcybms*^t0{9O<>P;@Eb(gS$r}kK?yC#?{E+g?r@cOimruYn1emAax?8f;J*~)`WIaTQfiF4!+=u?YakuP)Q z66AiYj@8TerI_VP#}43#4~iQ(7{0I%0h#pi_7r*htoRngK`t} z;!Uyvq##c)o3<3g^^jMH(-GiUT;B)B1g=8%fu-wY!yKzj$qYshn%2b# zO9mjiZ^Q=IXMG&sk@tVyaOTGa(>ZQBJ(38snZQ);0u78gr6R=xj@Qcu-+ zTKu+J-zngfV2bC^z!Z>n2n3Nes0^bV1dxyu%=j|{?7dVgMhUYUyUySn(QGv_i%|Wf zzMQ`jJ#at+G+XcTOL1&*YP=*z^Z+n0m`F*=|l9_)U`b^DHc9_{cQB9!uZS0{OE`mO+@&V z9@~*JKyzAz=)|k=mt+;m6vDK$2{p;$M*SnHcH2mq%Ksoo?X8Gg2RJXLH|-|>3QL5Y z!qrjs;~nG6Y1+^~VJ_zcON_oXYO_pfwgr2R+{t~3A#0+?UHH(~ieg%-!lo#i+s4}i z4bb9@;3|3&MIP>tIs}K4Qw{^8$#mR+f`Rt`=;CeltqAD~zOE|hZn`k%{=ykhKgwLH z-pcjCK2p+82{8BV8_*$YiQilQ+%KVf!TXF!OugT#sNdj40{n;vd#|W%&cC;yapl~& zP$Y=c2$)bi;;iYy0!AmmOZ*S~?oCBix6PeSX0eH8`37h634eV<`sEj?fyu>6cYLY$3+)B4;Egmo%s0QBel>Go!Pck~2BtC5Cq*a%^~>Zb=L6qA7Nl z7RSX6_X?t?_0^~RzcwJh$0bCwJmJkaH8S6`AbtCy2%);QOd30#1U&oW%zqjhn0Sui zhz(isk|@6GJdfj(D-u@J-)xEnDm??2u^!G`oBTQz>rQ`6_cw4YqwEV7byt5Hlh%@M zo-iESNAt?{)i!v`nJrk&t}PyY7yCCp$$-I7h}`*Hn7h{PV(>>0m%@!_HPc$URQh1jvIswA4fiF9U5IxONWxAH78`3&roP zbu`cCmLB+#xQEmDXHzT!i}12Ixa$KF5kg89Q*mc_Vgg$MKq6$ncCK7O;<8jb#p;(; zmJ84w)c^?C=2UaLXgy~~qO+duH-yc5JU9SNAmiXBX=yc}60U#m4q&*`bivu1WDKmn z@b`bWTB{^qIsiaHC7{3z1pr0=^i|H5GtDaixS>!LIqqT-Kg_}wzkAzSh-^QR*L7&z zF8B=GYJ-qf3y0xwuS^&^M?F>iAG5m^B70E5*Spyf_3m+CL~2cLKLe0TPyJnm-+9T< zqA-%>o}gA0J)aOHYD1Q>*UbRYuCw6c?iE)D0TyLy{_77)gf+6mb+fg9Eh1&`d`qP>r8=i?emy>SzdiymmzTY$A7`$cq#c3NHO}PEjwT|ru}VG zzhBuHlZ`yfpie3=e;tYORQ1T5Tq6titj=PvL=>J+KXYN1uX_9GWdv(^m}UI%^;oPQ z0f0hMc5QNbU^Twf$X~0d9)5S6OW8y2ZahCy^BUdib+k-NTGG6k|NZ$gfT}roaCk8q z11Vk0NDzaYz0C;c<6#cLvwuF8(R8vF>eS)$6cgNsF9mwV0K_#KWf{=oOjnIANp;`-uJ!+Q{6hortz>D66VZLD=$H@SqjW7r}Oh}QpYIP@!55H zu3WQWU_ZX)`N_xSvyXYnh1VHeSsyWSg206Sc~zt4%Q(gC)7vC+dv50qK0H;{J@&310?i3cFo7##{wgUZB=gVz<3kK2yLWR_E30t z?R6tfu{(j-Br+swbTs7X=kg}@b$B`3d=k-VjNnR`JjMO@uTk-w4TX*Uapp5uTTPpl zevEpGmLc_@qt|xQ`(?pQS6~LLCS!^;V*k}=8>q3k$pX_hRwr0Re4Fs^!P}%uSF(3T z@fA5%Xla#ThQM-Fu%USKcvKtL*sDY4^WBuvKagoN^pp)Yk~Ge6V`|;mc$i8C&#;!m z8^{)t?ZcByEj7gw zB)UZjP0$pAI&4k~P61ArehX0!xAo{b{ z3`6$$T?K@yX zJ~sZ<$XGN*#PYEgcZsuw*Qrs>%xSeL*P#SmbaM32ZL}h%ZBd{v-v+F z)%xh70tO2>#8a^V`pcF`2{X?lj-?s!P>q1H((*C>RgerEXsdne z7lHmEtRGljraCW;51Aj4*xa21wF;@I7L;>emMwv8BAfPH|`XF2EL+f;4k)9aFCW90wEVFC^tyvN<@y5j>0ln+HZ*RQ1VdIWol{T z5s2y|+9d680iyeQj+r^)whBEV6zR|9=Q;ha2mZc1G^z*Ms8)Poomj$M$IFIx#-2M{ zyUU@J6iaOfT)uY;hkis$C2JOJ(cj*|lbX+rNY-2c!F{)P{j8)ddo20o7SMV^T($#} z!Ldgt>x-W8Fp|D#)jRlxEk+CpuTQt#h-%f2Y_Y@g6cPmPX`Km;+XiWleP1Z<@Txt` z%bE@vkLk^#va8W{>01EK4nZWrMG>U=;mhp6Ec&DpW}GafVDiK;Xk^FTDQT&=$|Dg8 z7beTJ%R_)R)0(@7EDa9d11rT%pfPP?%_8JVy_|Xc;_q5AU{}~n9V-0-M;I7b0=YrY$f)XQ19ZDaAnGvnFMRc<`L^y2w9P z=)%&U{twEO{16Zg?^_Bp(LiM+ou-nS?7li^I*j4Yccq1h-z{TX?(x~?$_U$Yn96~G zmuy(`q>9FiBQo4_Ov>#nNtgwF7>T-OAIqbpc`#DNtuWxOAy*3&Wy$~X{&*qaYn(7T z{fV4dZ{1Ry+F`iYX`*tR-y&_8c;Jt{HIPv>6^j;mSi!ZGPcQZ|PaBS?%XVq?aK!!# zmpwoS?&tI9vu|r=OYdo`hWZ}1e!qrJABVjSVmrYC2 zr_W}bN1#7%2Za~!>fW9vWZ$jv9E_g7&)P_|#TMSH{6!n*pZ@r;(KvAP9b{00nkM4` zh2+f;C*t?=1^(Z`lrR6m+pZbuPI8>}Vmx86D091--9(i6Zx}u+!MchCWF`=kRe@Mw!DKM4}aCuPA3YJZL;NX3!<^aaR3iUuAK zIHZ`%*{6eZJ*KM2X{!$V1Ph}PxcQk0i)7*65%HA>Vw)liujHrIeoeWX|8P`a8CDCd zE5zLnpnPCVk=T1G1pD0WGD@CVbB+=vGOzuy>OZLy4fiE?-_8wFdEy)Kx5ur ziAM@xFBBAG)`)~5Z2{!B68MA`NQaeNG{`rys-B<5_w*w>$$Cb7H2H0_#b6e1jP9Sh z5MG;WoC-8hX&?|U(BpeS*RXEuST}|Nkn>1~oUVxe1ZJ;KF{y&$=hkb>@@vu}H{S?x zS2bcabetQ7hwc|eFYU+tx@LPsKecXGaD51<{$$>cXedqU{g7TE-*T-#d}FZN&>3$R zfVlr|tj!)m<;FZ-+mOh;YN)LtMnYX!dKE)m(@opZ`td((bs(p#mP%bV#v8a|{E|7F zMJEsgk@u5Ewk7$3QO16h(l{o5n4(AHBI4{CSt_MW)B@pvQ1fuooTHqh$atSc2YD6H^kpEUa`cF5pN~?cLJkWjLhQL`-CEXC^yBtND^rX0HK;iK;1A%z&a~vtRQu7 z9DF*er`!K@)nvP6WR>nG#UM;`si5|L=`_Z1?ZPS=DU_4}S^-(Qkt^G3F335r>W%W$ z`J&!1Uu+zi%PVtr3ZV?n(h9`xIGMW$;%|P{XN*31j>H&JOJA+lM*Sc7nM$CIf>p?X z^Q>;~7kTuOtXeet4?ivM6>mr1Rn#wp90CWn8m!d0iB9+wcNvTdHaRm{>YFEXu88yG za+O?)Q$JyJp-Vz9Z^&;em-zbK3PV%G!qDeKL)k^mg!%ZT8D6tQ)m_%wjSJsM6?LXN!aK zd6UC^Doy)-h2Mq4T_`RQ(w}{em*!XKO44?F<3w;d?H9obDl|}u(i*srV_xtGFGYB1 zno+;P{`rDuzcOfs28UzXrerrFd5QoQXN+s02G!*F0Upi?mnZ!O_LUY%N~vXMSsIxQ z)Q|L+ZZ!ym`dhNS#9y|&=Fw%g{MfIYev>kr@Hz=aiY+mmt@s-RhlImyuJ<%I3@pJB zV>xS@_vVjS!o2vsQ6^8Bgz4-sASsJOsW99*OJ?!#tUdvX*NiLp*@MIW1xJ}RsS>`V zWkofZFNe;BmO!dUQG%r469bW=F776kXyROA7acBhzk^0Vo}fz^fu62wl~TWeO#PiV zjb6Emlb=O?P0B5uQp_rIE^R&^!cOClL2-Qr{iX0GEH2NjD24Eabz-y3W8CX|c`l6$ zTB)yHA_@i2?yiO#eauqjd5VTU-$U=E$SL`AD)U(+@6QWOrm2|;HEu|c7hVa@q^@HN zLHMdM@0X?|eokiW5;h2aZx#tAjw)((7S6xArSdA(Vk?wKAe|?8;+-dHBk4F#XrE8p zQl50@!-!MlIOMUMyZ80TXz=J?Mq%{L^PyV19MS2msm#m<^u|N|2$mYa|K5F}iV1@Y z6**WA-;br*wjJ|QCg$7q^l?Eyt|dn4%Npbj@oc84b^l^&<2{&MnVOIjE3NBoy$vR0 zN8~dom7JUv%1=a`hEEP&HE}=;AZ5~9T6lguv3t zCQ*^Y;r%hhBxlWF#;Qz$fhixaUj8+`=gVMIBizmv*%jue($Dg>eTdhSatvyUh3e$N z5kE#5))VlejWt7nDC@IdIFW@Go=Q`ULDCFTX*iQoW2#*K%-ae!MD*GDl9X|BRffHW zT&zrb{Nd_!h0CUWe+nqllLHHQr>%sJv*=ZNAg_yRh79D{p#AV(#zM%vuN#^xU_}$H-_a+v-PZ6^Ayf0@waq! zaxQK4(E+;yQ{HX)r4_Z8acA;v`f2v|3b{A=Dgool=Xen3XRjr@cugG(iTc*)Idd((g z??iQ!Q10Q$sH8BNxOg=M2nkg1TgUE9N_>F2PXfJ66RxCm`_wa;I;9cCelAVz`EMNX z0Ge1kCOvX+k!fB8jbf3iqR5M-hWOsk)Y7WsQ>ex=-%IR=&zst`8g`BaBC`(r?nj8J zq&gGZm5o=n|}i;@K8$YaOtEP5beFub8a?WSknfKrQO z)~=jh&&=LR$GvT<>D^GQ^ce)fn{^=I>;9OBBDulEorYJGcu0PkcoN}I#;oN&n~N=! z!X!s(5Rp{GFjnC0Gx9tcFM=AuW=|cLxLAvl!jbka zzq)YE$`yl(rBr-gZU|R;D9cGc^w@4YXO#%Ew@QeUBJm5F=WQ~BaboyPGyQ${IBD;PEVMPmr5^E*bi zh(DZH$5CeVyQteTK2}Z@Fx*9XmZ7MB;Ez=lrs+Hr@%|D!>wJxT$=2em-3C z#l)NLwn#v(7zlQ}W+$mTA^Q{yrk|Xh)ikI%dvFp#?9>z-7^421ebc|bsN+U7n0nnF ztgcCt5f&-48Zs@fI}yeFuaW6vQe z)@WqgWcA7fjr)*+U3&H2L~&s0L`-ztJtS!7E{SJ`bHViqGKogVW);7RqWvw<{ zxl{TA+=aWi>(1newt-c3C9Lgvnz2&3zqYs|UTp#}Vhvl7lA$UaOM_ND&FuN{gZ-&` z*WoZE+XDO`QL)}nPiIQQyN z#gv`73BGDrk>zz#K3#4@SEDOBgga;GQk6eFVMy>P=o9bC#hmfNIant)lb>6Ron+1? zl91inz3iP<#OYLgOKs{nz|j0pZ(W0HSdy3@l@0vjnk0U88+e?LGHW%iNDe3K-=uRD zpy2B5rF;AT=>aU|i-_I`13-su%T-iObHI87*i`f!@(Tlg5j`2L?yi3whbS!e zmko{qGZX}har8lpps2@sl3oW=LneT5z^o?|f4n<&GHwfV=*;#xQSboD{0{%e+och* z1lPWY`UiX4R7xJ3m_#m*qkr}0UP>ELE~41IeIm#ANND54y05tpNs8olvRKJHOI@`C zo_qFGh$r{x;r1{Tz^eJ;Q9S_kW5s>#M{c|9#f4#RCc_<|`N2X;csh}t`X-P$Jc*fX zzZ>fWi#w!5m<*6$It>I}bOWL>5&`q+m?=EjjJijldM`=iwUhmZ0maK}ZZQ|5^t)Py zo+TXv3bqi+`z^WUqQWej@prhr_^N``!_blQkUvn~gp{6D#e2Eui<4TA%t0=f`G02wh8%O0w2X_f4qeD~zyTaI2++szPrR3sQ(|7v0I z1dEii}d|h?T3rHHq6ctOxsJb zY8zVbgX3h5%qViVcG_>iZlcGA`(< z%cR@2Ab%24(NdImVqwv$W6B9qYm>lNOF;oDLR$Ulpg;A>PP4-k~X-gnAvn}x!->m ziSeKcW90b)EolXOwX=KoX4u(sZpRts|C^GFtFNvV(X);ZysE*1P>ql)A7D+Q{q1jaCLLe)K=|FQ{FEM=U(dN0ka3^p`rDXr?@u&xQ!1o07HLiYsLZO+U76b zMSvXAXb|7}@h#`i$o=QG`-@0j`X5`5S3Tk}C~H7IuCA6S@RwFK6yyLP-e2;!L|m)=;nHGvN1e-mEn}ni zAAx7VQw5s289G=^w}BOkwFFG=TnnEm11p3xF3!nvyxdcymy^ZJ4ImEQ?P&$5E|V&i z9SII-3IG8!;u$&TZ`s}g%mWd`1t~|%Um_NqZj&SbqW#yddPpo+eF@OyR++rU=9cX4 z%{gUym{rh4N{_W4I2+dDD_0^|LjXxNFAy_CUS+oi>YGDiwD(9kYKJVTJ;4;93Y32h z4~1o0;6j6FV@0^*-<*u=L1;C$i94V_Vvr38%fPM~y&AxlFa+SNLrk%Np%pux>EZLCdrOgeWf}Jvq7En>H@AtO~$^c49NGRPU9TL(* zcXzjxh)5}dbPNngcQ;5464D*gjkL71^#7i7&hNY4*Tr&;vtW39;*NcN_P)~SyAw{Hb7sRR8;LM%siS6z_2y=zx%M%_3@BX6h_pN9-W_%l z$pqdaOJ6k0NJWu`yaW$f=c19p_uRB2l^=2KXC?A8R|Qn5S5{j%89!04LOr-8s1agC zID&guy~@6LN`hNCASH~i!%a6W`bmxzr~*ZX3atdPTt*Z1W0|$vxgwSB_Z&3-DL90i z)M<6|uJYBAH^0zCgS99EGI!;Ed!JIX^;yuG70On6bg7HtR7LPD^7o-r%6Fg(NUPz< zzA5PATf(tfn^+3oMpEu`#ol`sls90OAlnSo5#6NTqECBorUN3z@)DVY`DZ9JA!ugE zf^65JSP?ATqEK#63#orkuesWX>#(vuU`RhLgLDMPDU_@M6AIx~p7#;26{Msy>>s+6 zEg+Z{D_VC|CK8&_aDt#cPvsyOwwmv`Z|f#3-n|EV9NvP^H82osBtz?9VXdx!CvJA( zZSfk1p>pdck?)p6AF-|Iq={r1shU=Ta(0U^V9ae3c6a>|Ph<|A$CB>JJsm#fWE zuOq&4l+}K9kca)lMd<1xmpEZi^|&ItwW88G>kNx3$o+@WZ9PnF+h2mYFNLxnH^fgc zAWBp(ak;gy$~^DDT)l#TPXO-Vh89SNJ@4FP5no1SYrtHTdKU>6>R!)GtevEEEghrTH?UR4)Vg z*;Hd1;Yeo_TT7`ILP1T~gNGM_uYRUWsGAfT?M#o$xt|Mt{vZ+(i{dYq*Jnam4f)tX z=h{Z~wNWS9VydcvxSfiOi>^!<7(-T^prkw50+nDE?Gg-Q3*3m}Eg)5uz^NH-q*&s- zj`y|R8^sEMcygZWpbw&15;I#sbftGk4NQ4Z-AO$5-kkVKRQHe(OP74=j7S05as~ns z_Wth@<$KNKAKmh%ZE$f~8_aWUDB;fba864mF-_fo;FfToT8h>xXc>!(NoJ@2ClShq zjW2;;*ET{5?CfVg6b?dI_@!&RMvs5|)$r1)Iq`&}Bb%TE(RkFD{jG`vb3aHyj3^Qo zot@2%RqLJzcV}b_g*&a47nJZ;WyG0Psv+QW7P%SYRE`xO%te~kAk|mmgN|L%X~arO z*(u*jLW%5l)^95RS3l1OKL zF={|W7_Dba(1+N#e4#Rn*qE7$HcE=Fdxx(bP6)QvT!U>WY;2qP(;t@1KkC5QlA(ed zzoS19K5gf>)h|V*vv^ZdZ<$xG8n57^{>U}1?j=Pf)g=3%Lh76)4?>}s%{nB5$f zk!F@+vaRlR?pZ`VsOre_RK(J zR1Ha-z48>dy+(Sh%)J07pKn93>fhz60=La}6z7czOKV{a2~nWcRSjj#F43Rg?XV4D zm#8iJWR}!-!j7kMUG^fBuOCah+DxCJ$6$RF5ghFnwuxUkB)B6fkL#f>DG^R-_8PG% z60%ltL}|ZLtEMI6BOg%8UmjC+;DK6|@Wyz6L`sOZ^QSU+J7WIYFrE)j`X_sB(`r~>U;<@5!w0bO>H1b8_7E}>>g3>QS zZ0KSVdY~7+WwpOE_6$6A({!YCsZTY1wid^Y+$mg}>D6)!H%weuaAdFqO9%E;VM zWtn42R#N_WRNicu)i|=NUCb6VZAcRD$4XY{()C6&za=5E#P60D-XhL5WPDeR=p;o= z3S-$}38NOE{OE|-bVkxbJ-RWs5*FG8}6x#Xzg5|cnNA<*S+^G zU7hGFohY-jteXh+5cbscYOW?=2rKb|YiW_h^Oc3*&y0(9t8Kq)(cLSL?^|#hQrydS zzDx_2b){Aa73n8FYBOtfEKf2k_vw66?xXEjB$3$jjE{%ybIf}cfAtmg01DmTk2lD$|cFrVz6RG@5Jq<(6tiER#})Zw>Gx$UP+8^ByOZF+asjRHG$c&I(PS zj1aM9so~Of8J#BR7Jzw>ADWpBYZ-a2{~jtBTHz;_-){noWb^RP8rXGO<|`!e^r%sq zN{yKU`J(eiVHPPV*H(?y!uJog*f1H1bSBkZ73WZF{3?ZI>4K^H8H!URd65WCSxaqWn zO)9$e^MA{6RetvzFCk5;S5U{HZmFl0>QR4n0Q;paOMSnfR_$xoJN$ClGD6d8B3PNG zat&gV>>uw*wnSFJN6V_OutQxHB?cn+7v1$2vKCP>J>nxV@9Va7RqW(vD7ktFcZPw@ z5?2reUaQBNsMHIB+4{(4~F6q;0Jm1a&gX5ku4)yP}L zSJA?*{0x8NqGWKza2yjDy#C+B`E?h2%Cp^hz?CBOcE9MwFsipF826DR$pzY2qE;qjF~tx;5oiW zB8Pg3iAG-jS-z06&S|vH-s=wxTWeZ00)-+iFvklW!ANiDhy)u;+{&{~TVBSKxE%-2 zPtn1Zl0C3Tu6W4>WC1Ewa0zT-?uITZ!p;&HlrpOg!@)OnPGLXR>`o^b7dl1#Yt2E4 zU{ld^k&3=+sPW~JE*h)r@6VNG?ss`dp}*3YFCs5!=rmo4*M4S+x&9=OVRVTWp$@)G z;QT>o8P_*Sh)J>XLig)n{@QHF@7O{~mL8I$KZ5W(RDJ^&P#zko~hIqLUCt@K<< z=qh?`Rwk(`Fv8{$(d0B@23m5PX``L=6=oH0RrG|f7=GgEtGs1AD3j``M{&I~Z-V`K zAP_57L83#V6U1E_5jCNqo>40R^KCR)O3cT8rh+*Y(orr>*ByCouORGWo+qDX4E7N&e&2PQd~9 zcmhqo@ZvRw4eBZNRmqL*qgT%)IGsfhcEz3n`S9&aMk1UCH}&eAOWx z?I)cbEE9O;<8r@7=XpBK*O&SonbMQ-K2Qe2bulWaq`T1=>&WSKWMVL9Vh z%?KK;@69BK3bH(EU;1h(yd$bJsoSZ3fIaFuuiK}=o&@3_ic|Fe;^E^1+E+Km*XCdA!~WC+T^HR5GvgrRn*Q}=3BuL%qfo6Zyj4|c zyn6AbQg*CZ`T9Pz#1R=5A>Q+zH{oiJ#)Cd{@AJmpJ|kP|{EG;iKVqz&fPYiCfbz;3(?77jaR-61rRvQ#pE-Y&amUhzrdVQZ{)YEHR8eQ`N z^tib3XF*ZxQesgFn zxV_aLR;;5stOx}jHEp9`wmVnC-`xOjGho+)+lZ7Q@oMmxEx-_e5Mpci{KoL@0gE+4 zasa0pP*Xf9?^i-#CB17squPs;nZKE~>y<09*7?uArQfg^eAvqUIchCo?qxY6-g^Gl zv2wswU|mGR-pebxN^ie7@vkB#sncA>BHftf^!Qbp*M7)abFOo#VvD_@y}2E!hrZBn z=!nrxRiP&%iWH`iZXagZAT6+7OMq@t ziQT#Cc;isG&Y5;7+6Y3^T@Jnhqs(6}npLpxg%BCORec6pIEM8%fsQThz#BAG6fktn zzgIoBLN|BNa_2ji(gdun)Rl>eVn0QJMzGp-Ug!i65La+o>5~Xwfki@`Ge{1Wnc?+F z7rp(vYMSnI7DDp?$HHQ|DgIa8tNnUv10Vou9z5mz_RP*Gj1D|>M9j8@OgW`YteyH zVRh{Tq6aXMi4HWMOK<>_=cX~jXbj{}nZ`7;z9iFiFCar>0sYsL=97V3SU~aOqK_rj zwAL_umv%&G0QNImM%lcO74HeBLKq6GSQSaWfR1nTLG_rD%Mi%=&kx}?^u1VLF366= zKzZ~y!FHVoXoEpWLlO&6q!h0xszh`RIPTP!Ivd}C#zr$9Ge`vyOZ56r#QZv z<0p`&e6HPax8T9v{MT%P6UVhfRX5}h<^28@u$FMv-dFVmE_T5+;mo_szn%^6;tZ052T%}_<#y>@VU%|dPEPrbR~pLjei+Xv5);g3_}}I_j`mz z_N-+I2wclC@@(jU%f(&-PVRP)MX_3eMDUKEn=hCKF24w+P zw`=%sf>tf>pA>f?MJOm9PKfK3T_<&I_l=Q#?B80{3)QZx^8<2O7a;q#(Iq?J^`54B zEE2P(A(_ML^BL>(2#ohj%|6LxejvS~4MbJrp-bY|*yhHW3FW!)5Pqz00Tq`>S;wA78{1K*6Qd0Og~?s%(3VD#itYKN!p=orQV#CaeE+K&;Wwlg-?ykH);&V) zHkaLpvF~SnEQfg4lhKtxK`mX&I65^Anwo8HKlM2n-yYp}cr^p!kM6xn9dRp0Bdvwr z2O_|`*Y)A_x$MPx%iZ(2idnnjKtS|fa~-RDH6O*5cewVd2(vf-5qDtU!Mo6ZEf&6D zJpswNtQH<*ULzJj3Z~`@WfG04U)S=n;+Z!SM28BcXYT;EF0GsJc@3>gHo0d5K=C1t zd}*&=l>Ph)^gWioiIu3!9?hGLI6of`Z_qKsahoVh2oyx7Ukn$~(BDjn4inKRdzUJYDx*PY1gZu1<3 zBbIveA?ANh#+18{_~xD4i!jMcrM?0O{RQf|j;|CLg5Oq8ydq~eVt*vphbPaXdfJ%= z7HAIwe>RDU*+rJnh_5$i_Nemes51Bio4mV*oidQiDnN#uj1=L01G~apD&l1&=^4{h z^&ud#k;Y{rEd}5gJ*hO9axq;MdDn(cFWCuAp|IRU!h-Iqi=9`MS_SRGsWG+Obxs*x z=~)wm=S>aOaVz{w-p5k8VXkQgs&k{CKXQh=q;3%@NyV4Eqw+4{NwdYDLjwJ(Avxjx z^-MWQRfyI{q}*|`A%J}Jd)A*OgQZ?=>x->j*N-hy114$q>cOV1&JO-Zv)YYBXibdhUNXNfra z4n#(C#D;^5X}b&gu?#7TigTU$!clppm~XY%b>YQF8lug69#9NH%v6B_HuFFeDrZ7A z;M*tfylhMca5ZjLTg}*w1Y2;S=a&)+@$GTGwJQK`Mr=|ubv6tVtlP%!u+{(auXi>f z>m70m#%xm*0U;C%)*IzgXvYIhzuiDYyJSr9<8|u%Sx2mxbdF6|J0TXbir?j+ax$h< zI`FEBt7U-vxYO*5SMq7JSAqQ?&+xOdr8Pffs35|>fZ8gUt;*{94#-Izu84fQa*-`& zsuD+&wAh*tc&1#+H%fW4a%CH$0)NCu-kdKY0|nB(x?*0rY}Z|6I@<16_6SaK^>rI~ zkTcB*bOv&+Q&et5+k1-HeB={l5j)KB{M(nm&CmAKThAb zP)upoFzI(Y1Anu!;z=!UByINF}&FP~?jq^js*SAqsL{rNy94Oytnu4y}!A@_Mpvjq3+6M8s)h}?bQ)j4^u zk{;IKF9m#52{-J%Yyjfkm!<0skXmFiA+^SkV}M?__+f`%Yr<^rdZRt&sOi9moeU&@ zFN1N#M`LXa8Rs9lJis*^{-zm%+V-$3EoL0d?+g(-jg~oKydRD zD`)U#Khb2-=d{?^F^L@+GH!5B5X_d;s(jkG%^=`ecu4l{L)YIyZ%(ux!Paj9;W&t@ zlpYyB9P!iNLDmU@QR+$pv@iIE2(#jiK5YGE9}PRv{dnm8U`=HShfn3p!G_#VJZqTb ztMKoh!PS&s8Bvaq=}+s{E-OF@HuNS08IR>@D9C3rn`QpW_ERqFzl#jP5;Og4qqjQ) zJ%6d#1Mp*$;8Af0FuVP*&V$Z+kVAZw5KOop!)a%k<}V4$-lgf}S;&WLE$N~#7C4clhM9C7AEDfh>)b+Z+!dNNScM6_ zPo>4m5mspkj5yRVj(8R_7GGJHjmc!V3(d!s9b=WWz<{@`RX>U(D6IsnO3e>ne%0|f ziIURt(rJauBCI0h_Pr*0crVoVVKjTR%&rtqCGRcE9lETbz{Cm1ErcITDmrHWMZsfI zikd$`5i<#t+t2EebG?!{!C~_G)quwGDj3Bzwgl0IV#~t*hC;7b^QkEZ+rE^0r5c@X z649l0)Cr}*tmOdQ^bNs+&xBasMnQAs2iI$)m1MKyY z(uhoYwROILL#B8-?o>6!@-w_LA1IOhA!QI5UN`2E~-8x0!_f>^y`-*TTIiXSLQO%EEFWxr$!b%0U z1%6+?#YRls{RtA~wsfArPSjf{W?7ysGv1%$cKXkY!c_O~CaL*%L3~9nG{erZ%ZP># z{tSa!iq$dyS1g>Ad5VPvZWNE(aSs8VY|_Z%G*Di)6nkyP&|e}1r%2CPQ?XE&{-Nhs z9B*6Ax_?EyMXLf=R11bB;%~;sOz{t?eZ+Tm&$*|Lg^cM}T$Pil#fO%;vf%ew@2&WM zfl@&G7^!sapUyCm%LI3jsyb&v--VkB^J&varsF*G8L6{)qDGHN8b*vKhLHI<OqOIa6w_T z>||nlOOdm|sy&s}8GcPBf$Ed;4Xl+rFLlqOADzq0j#aTR9{~uPCBo}x#0*c5V-0^9 z_xTtCT5>hi$Qb$QHf|N$p4EndIuHsMd%@CPRbD0JN-zBP*XLDX1G2Dc9hDtV&}dd1 z*CO(7u!LmB`+Ft8W1-j$gKF8Qb4Qkh5sF3gt;t_SkJ$Mz)60p$2c-g{;wI~96YL3z z2Nc7oH)1cgZYhV6Wl$?JX>Zo}_m7g;E%}$~sT`p;N#CTx3OM+hefj)Y?gVq`MPinXzcKDQlYjQcXzh@$=kH`nY9}P~W~bC~Q4R z8r`hMoHA=f<(c7E1K7ACC1HQyZ`C%&_q`;YF|@q$3ixIP&rkQ)j~?wgx*upC0>aLn-d(fOd0D=WPBTsUBd2 zV04MLtn)3^&Fp#|cpfZtfB(uS?dm$bU|EXjTeObk+0ZKM{EK9 zS}i1a29_sAyLA&I@kJiC{PggK%LNB&x4-@r311`kXuADPbe}_rhrCGNG%wz@vz-|Vp~O!gLPD*fl#rn!P3e|miM8w; z`n&eN4tHz ziT-)UA?7&ozc1SSU#s~?<1c5W7`cV9Xtga%k<_r#PhE3wB|8O-gtNxCXIjhqWxUos zWtLQdQV>9Ad&tll%A}@G(A-w1k(I$(=OMimX~EHhbEjoj@g=zK>?5247kvJkit)Aw zuW&+=_?Wndy`^g*QsYiAoON#Pf!6`P#+iveHkhbT28MN&S;BnPC`jP_h;0d|qTf*V z-AqPAfaCTRPsV6@KS!tHhsbj@2o8}OF5{0;_i|Ts`4Z1B5^9{)=ogb+6U7ekCEfNKF##&AEV-jBz)kdSiZ?* zdGv+B`7&c??Um-m<&BgNLFS19@$SoK83)gBeopQe-+weL6Ii5nRbAd9{w4R-WBa|Q z?zJBt)yO`{Io)ZP)fa4&VT?;-zM1Jh&J(r9GR8q|#e3K1Zz2-Ye7m%KUf6?1-*Ziv zsU{wM?bP}>k~647h9N#$46E{Zl!qjO%z0d3DutuF&^PiT-A(z)%Os_r9C%LSY2UhR z-Agtu@mqDrU5B-9BASe?!ZhT9+Cy>R?Imdfh*Q783#L=FGAG;~E!=-IBcJe3JYYPh;P6>=!to++#hN`PQwJ z+05hj6jy3(Mul<^B24=HAn5biryrC<+dbdbbxplmZf5eIFgwiI^+3|^2N$ugH5eO* zoh~AZ$Cj)p*hOQ-a0ZAp7~nsvFnEq)xW#6%<$8=OSU#idAb$NgZU1tKLM(!atgZ0j` znfLpQI9eO4DwEq;WMY=-iUg`nDzEt)7jTC~kOu1zlhQXh-7H($f zcVwk_9Y_}6x)i`XJXIV|uzfyf&(jml{_xxzhLz^-V3N7gq^|b;^k}*y7HsNUUN9(D zx6|&1Vx}%f$vQw|LTb3`SYWVc+l^F0k*enQT z#Ru#wGnZdQG(oj$(i=|ZJ@bkj9*K`9i`YBc@uR_>4B2KEN$eFzgsx$?S`CK^9*6HF z_Z>J5V&~=+Icf${q5Oh8`?a9xro+cG*5z#*BAw>+W6E2_Kvx zrS@*$`BF4F{eY=mN~3E7f5M=KQnh&JYBT6KOiFJb2!ih8B&qFcibn1^{IHMlQ zZ9Lvums63#5;tz<7{8unl2Hd?9*1k`sn2lL^0dG0a5fE@m?p%L_t#-_NS@4M9TR(> z7^i0cDY9|`<@4RpDyQGD0gD_i!IV(B$?aFN1K--6AT7H$qAOFH#i(I*kO zt+!gZ-%fXxbNwHQ;UEtLX8_mQL(q}}5>KE4KBRaSU9-4pAx}ToE&NY7thDl29oDX= zV@bEd8{eIvcxu=nQuE;Vw2^a|{}yjPwm$`A8PlIa2V<@5?(S`-nOFsjFzH5}PE%R@ zDN*et_HjzUpT}rQRv7LnwpRf&AK2_?yyTPgixy%wZb~0o#r}Vcv+#CIF@j8yC`;h!a(cHs5X2MIAi3?t5-LgFY*_lV2y=? zTI#8R5mlS`W%VnelUiqpQpNVKk0OEop0_P}ju=j@kGaYqtR?;fPlta&>Oe8b~Pn;Zx~A z`dy6Y<-Ltm()QngT-P@sCm@lajege$loD)~T8>i>s+)+32!Kv0aSmv{hMAz( zRC&lqlj3hPSOVDKW-v*leUJVf!=IK9hjT%kU4Hbe@aQ{V8()4BbtB6v&{l2bCb3@a zzQkQF{y?g}Nd_P^#gV{`vz;4o8g1^7;N`)arqjuXG^+se-3Q-Vu^*!By`okg#$oB1 zCs1`xx8Ha?Bpp3Iv4Yo(cq!W4!gS!kI+|nLykmG^w}ga&JE^9S+PQi*Qsm(cx$|^ z378V~5*f%w-;Za%m}tYDY4wbo1RYFg7xQ`R-YwpwOanHx`a3|%lb`k{#?^LyDtIeC zWAwL;=p8^f-+jx)-(W6ptSa;veSa8cJl{v@cRt5e!7HqN)=biN3%GcMVS5=!clibm z`M#mdVeB0MW$QkoGCY;>0$Gzf84nuHK@`c}q@I0go>r=J8@i%R4MUF9fT-Sp$Q z;(D3LIY^qRtw|O{Qn-5hKLAEKy)FJiV^kD~=%otV{!eD1i0Oie8TGK|sy4VDrb|Hc zG^7@3!#zy~?arHPN<{+e@q0;%G-k)TYc8jmic4JiR*DC4DcnB*a=O+PJ$d}ykuFeM z^n(k0i^#^+&hF`-@Z3~f;_(j?o-#b)ZTc<6uJ_XT0(2y{J6%O^zN`Q-y|scU7gZ9* zTqdnXd%0{mg^D?1s#B?xYoeM^*K`BS)T!E86b7%pu6Tt1-3%yMc#LTu#}cBp zdQ-it+0OV{`VvD_BPAVyCxVOGdQDwBPK(7Ggp-Jqrg=p&M0Y3=vv{-b!Dqd6wFBZz z-*~E<7wDz`?VxW!dJkBgltj^zK2Ve#0nFdo1Edge2N8H8Koi>Ju?SS}Unu0iBL%k$ zHpr5#>3ljKsR{rNJL#!C7W^%v74qlj+V~*!qi3zyz7;S*TXfY|pf*S{V==cWat;*g zWNVqd<7TOxMc~lqrP>ma^uG)mpnQI`_P61-hdRo^G>yz$se$ubocYkQ)eh3qAdMOw zaRBU|jxRD?<-r2)%>KZ0sQz5Y>>M~OTH?xkDmeX?F^z3_iO|I!Ad5s=)*9>=ROGut z0O9_QyqO~;sb370f>;{XCS{*(b=F<{`5=}0s8Yy7*VanyueUNUuJ1rJbS})@?P*wt zH@Hn5a_|bv&3h1>KFExL3u;=>YrX41%n>NAG`|8x%{dPmJX0|Sxctlvt3&JpG_^MO zHzm0-km&XGATKxzZYK7SdGOL~ejpl$+boyeCK=gjY@xixUSdtJi7M%`=o)rGprw;} z1*!?tdjO~|o!=edo2c^&yNB*Mp^R&IGhiTKyRCltxjDj{QkNXS?fQsNmMygX1(*%DCa|(koEQ!uteMK z)2HIE6D7#o$0Mcg#mVT`tV?oHuacIZaG6mkGG614K+ zadJTA1OtugA}iSuZRty@CuBB5O!*`~U)LLf|1sZY!ttOiIIromguG%{{AnpJo1#}U z!@MzHyeTn<+>~&ufeYe$p)LgDK@ffu2nKP&AZyb(P&#+%5on-b4UkKqHIp#(28Q0b zn-!v#-$sX_+T4}_Pp_-KHkIHiV6n~NXs>;FQYO>DKmKT~F}d*Nt&H3v2@ua~d)+(bU=CW2v)k>fxz-pBWhvA-P+%lHn z%V&D;XP;5%e6)x>4Y^cQv!a2u1$a~WK?-kkjEc()qf&}xBpWuORS`LvgE)^ZhJ?4V zw(`s>#fag?qOS|43(IDryj3r+2{G&m7BRMQRVCW&UgW$R%byO%`SeFQvk_l>Ytn@2 z`!u6)PIxK%`&LZpO${b;yvX@azB%a>KZ0>MgBmf-HQ7)j_AaB|iA7%ZC7e7~_&s;| z^e?kwht^er9|~R18$VSdl!qVRQ=9jx?-ium@7!{IdaqT_?gewod51@lTc)i&+uUaM z&kBq1{*CG{*T>g5iQi1Php{apNYKD_LRG5r2pthqnvIEk_WDQkgJnxH6PnMleT7mF z>?vbK8pl%Dt0vHbrmX8nK^5MUnZSzfNG~Us%sZfXoOH{%@rIScN&K0>$nHwDTN^Vg zmN%=F8fvT_4mFwx7jLX9GHk>>;B~v7O!cx z)a|-lh_=4$*lFKSW5g7X$jvRC;^`;IwwqMic#BYh9h9ynQBB4LIp}&}PpAv-o5mja z98oV+J?DsNsh9>8_exj=$;dPD+X?#dh$@Ec6T7>g%NS{C9DM~lxlXUmMm0t3F%x9V zWX^C*KTAVS4AjoWk>cHX2X8}0YRin z>W&T~wTFM-USQ986xm;$3TwVF=Y4XJY-@fhdnqqEcqvlS zo=CQrn6^_X^6dxi<S*A^Q*#fT=lVt}uqg&i#HQgL>hNN>sHH%wi;qE{| zYnM1mJL9%n0i|Xs2L6#AX@NT_41?jBgRiP-Qh)8z-rf-xUwzD~1HO~m%cs&dzC`(T zghd5s#n)tfOU32Fdt>0{cdi=kUg$2SD=93!Z zC7&zruSzXW_wh=bST@Xm-IJXKl{OhPo-YUYaD~NR4tAC-T~WojM+kB`srFP>D4&`{ zXNlUpbm*@9uq&!=KKI6k-t>E)#Pjv20UqS$?ysJ0i>!fFQS4p&vQ-V<|Ly?Fkh=hJ#U6(*cEGeql)BzFJ- zGGN{*bW(ruC|+7Rpa}gYTZf;XdxY~Cc)sJU-ozqQ@rnC_J?%G25@Xj$A_dh{my3fL zWa<~c?ymI^_NtNxKUy!=V91Fg>9FO?#|V-75&CR49V-!!#QIH&^8_f<<)&);ZfX1G znoQmW%icBC{`%FABAZ9kr>~PQ^}6vmFb8W+PJn-;;UmAAsP5hRQ`YUv|N!C}1b288?cGNZ?J zi_!$E7(!PsOMK_iUVU+#xih{~wYDrLkj51mzIVibmdx%KHVr|W7$W>$_%Li*mX`cY z`46LE-aybRI?!lbcKv5LS8d@K#uDqR=c~rhZXvnhL{HemO~!!@5t4yFCENLZ%-4y1 zBKoAAK}Zo{08f-WAc|`xa6hpBQ`LvBqn@Yl z>n7y*DY-AG)Fk)C%U)e)oeXYi$SCDt2kF?5Z`Lo;%lq$YrfJ;U{;bIv*iD&qB-K2S zo0Z^FGI;Fz_`V6X%!DwUAd;D?`{LwlXvbEKc-9D~<@;f;#W6zK`))lrm|?yN*#Q9w zqMA%NRLeSyuKPrG+CxJ07{kOCJ4c8U5Ym(lzU{pOzN0BdYqyj+?BtGf9*yhPx$=EX4@z(C z?NN`1ryYM{(L~4C3?*=fGF%w>ptPDhwUk#V&sEtwu#00x*~m*OH8JEj&IG3Hplm0J z=eAH?Z7jtx(eJ6fTHiTWevaa<)MCgsfJS0&Sjw}v70%J-gcm<$T2GHg z+2sgohCS1*4!IR7|q$Lc75 zL|omjlWxFtJ8GEvn|IjIpc_bKPp|Kh_%N$k!%L-geae5DPlX5SC?$2b4RPtt+tWWG zHAvYB>L#qY&8H$#kFzyx)3yFKL^P3>xc#o-UBX^7mtp^gOvsH#_2ctw{~}j zQQU^8m~-V$QXO!#Y%^n$hI7i`QRZ@nheKqn4`ySZ!QwPHew9( zw(FGH9IyFM5~#nO;@c|Xo;wt$Dge)HLqEkn|7@P?Z@Xlwll5WBDW~`iEPtCX($-_| zSHeNxP8t<=yN7X&;~t{m@gCuy}?cUQqMq?id!=2B4nqH5Y zre5Y~8};RpGie8&Rv8M8z8lsNRek5KWvf;%oP8tpNp7&jd8D}|a~S*F&;X#&%0wtU=ny4t3D*hE+I$~e6+Wtv0AhpyA4pie=H&RT7~D|k#{OVMLk!!jYDMA7Y}ui0uQ%XS)f{t)rz0;Xk} zb=~=^tEtI0>>supKdzkrhVHsJZ;JD4y~J9RfaEy)+ATQWhvzlm9wsg zBqgo&Osq_g6SrmqOP99#2GPqEC+zLNQu*GNU$n}9P;NHi5Sp2Da-#GloW(8U*M42| z?RCV+%yMJZul<6DE)3SS^AO}ALXcl3efK{iJ}zSvw_e+~|D!Yh`#uFy2m0^jKN=?T zU-4q&20ODD*?werFNjf*>w8r2)hg7Hqn~6^rv0yAihS!B=PdJEccRZIOTY2jP_xY$ z|2N7r=Yx6*2pzrm&z{f!eDJ<`g}_w^ecE)-xWN~nX)M9t8E-&7h~<1gxKSTYBKIzN3l$ZRuyf23ZaEa%oq&n`Bu5yQkVs z*C2dwarFIw`HQj9Mvwv90FJaa_Z#qkzXN{zK4Av}LI8<>eTQ_LHURx9TOY8e`biGW zz{cHxRKnIz>$`=^2Ag8zhmnetgW9Bw$PsKoaHnKU_|GS7GTJO46H0i14c%KbGUwOK zn;?^T37Ip!cM052z6(~#j+1);PGgOrfDk@OY$rlqL@{UfPkQcv=j3U7h_t?Y07mdF zvi;CGko9t(bNK-gM#+8?rv`8lRk$VKG?d*4pG}+3nb9GEW)Fbjy#;;0G^wG`NdVVP zK}f1l!HK^4jtrVz05Mq$H=tjW(^RTU7x4m8L@UF+Wc1rQbpfF5J7gmTYSSTE?Mr9S zxw`J+(`d}sYM*E&nnQpD?;x|4tquTkKJnarTs5KuORPo$#{(D+-yrv_9oU(Yb~E8D zR9?{ZYM{PzOa6E9>c4)Zq2z?K1Yl)~|G}Z}M!L(SlNhY=Us(*a(fy;ui9?q`NXQa| znpTBm2-$Nd!a~5~V*M+hf50xKURiFfBanUf_}duwtc7=U_k3wi?qk3Iv9RmiLH**V zFpwzTFk1^oS*R^C1i*!hUQl(tVM6xZ8WDj~>8Bm1Y*tsPJzWT65!tg<{;vPR=kzC2 zDqMmW>qoCmeG}M+{UAcEoAuD?21b##aX6+Tq*4vpwpoBo<_}m zBhk9{$|v6!@hDovj^b$T6%W>ZiSe8WhgKjW&xlJF+Cb+3kH3V}Wm#J=CU(t1vn@MR zrCVsB_kBil_6Lm0IRhS)=|}lTjvy3xL4y2pS#q&JK#olpp1eLu2`l$ zuX;r4P$8zi5FjrYR846CN$~tgC@eN!VA-tx5GLyE0C;>y-h}iZ9IE8;=3Ajxk_rio zq-&qv&R`x;VtYdCfK13&WkaBNCfiT;9VvkCU8-%}gPn-tZR-6lA7#8At9`sJap~~w zU~wxyeGx86^M1+a+%abyLGizVZi73T)HGF`HBj^o=%l6SlWj*S7^(XEW0Ew_vEQIM zv*qAvPi950+E6qjjl535aT{CU`!w&PURD}>1YC49m?0?&JOi6G7a!y314qb2B^7n@ ztNj2oSYwZ)xQ2Tu!FEINg^7KN(vgPjh5eBZz()7#Q%@W1!3zv; zlNme~nooZOJW52P}%QGWHG!8j&&R7#z++2!)dcGL*x~{gCu#EJ`T<4 zjbc5k-wD!4a-)ADDW5iK$xN%vP!z4QoZZ|Xq!u!c=&lLQd|Ma*Ss4SOXdW+?*dUiN zPGZePgQssZb4!&v`O@DmzS@`57Zrn&I0GCIOr8C^8(=Cy?3J-&EBX90NZ`!B%E-C_ zElg|!Fc?vC9*fNaai661K5CyCBQj_Kb4$`6r=H5Dhwx~f?BSEGtVPwo(V%1FY!OVz z?Y6)hnia^8fpjCT~{mFkjxo&oX1TGPRJt P2mZ)PDM^-zoB01fS^wHf literal 0 HcmV?d00001 diff --git a/public/marketing/wellness.png b/public/marketing/wellness.png new file mode 100644 index 0000000000000000000000000000000000000000..c91d295fc2a606aa4e82140adc807e70b9de9474 GIT binary patch literal 1397 zcmYjReKeF=7@zVrUPOBaQBy>kiJfSu6o&B*4f&=WAB$-)+O`qnYbwUpdAF7A0~3;A zrojx6k11BNz7D$%8Y9JwmPH34LXwZN@6sY9G40b`rU-Wc^EqHj1a7)APgF%_@D>1rzV<=?5d+7^P~N@R2{spp$=c!8>mA`2aF1Ellr8AQAu)8D~v`D26Y9SPjxp zln1a|<4H|TAE8x+1n#Z`t6ANLc2O4(ds~o(h{&8pwdfPOQ_Oy6hK!IqlNPuqnG){8 zMB38)>w68$wo_adtF`spod`rY{!wyaWlH(Z2B9`)ZX3qB^9KFRIgw@6z$HA#HHUO3 zl5D${&(nc06;Z#1rKgsK}v-c5=UN&RJ zJhz`c{sE+R!PHBXOI4|xi=KF_yjG+48gZFd?L5#e!dPnqz4%NbAjP%g6l;a0&rU%% zo+>dx{GaHh1&`4r#u9ZXB&)N5jy4zusA+9`!+pnOf@R!1s}RFTexrNNqJAp%*6}=l z$rK3`J02;I`&=B1fcY^Iu*};S~r6Yc@``zN|uW~@Y zo-MVSRE31e@On>+9PgtGTX^cnZ7+9_nuZ%6 z>X<1*C0VsPcfG(VyQg)U1EOD!_Vd5krqXA+T!ZGw|&tf#h_7>(&6WAw^K%vEr~Q>=8+I^W>1AN+4a|=eKyNK>q1=l&T;Z z9o52VE7MZ7`r%5`Ln$W~l15vx*Trj<5SM0r!K|yOpR#J=Oz9DoCK~^&3bbbP_G{^g ze3TBZrxq+K9>h4=x73JBGY=>ZEX_9(994lZAU~Fw&B@3gduyP-bYr0Csm{xr=F&ij zgP(NbvrY&vCM;yvB(JQEQ>Ghnz0a6dTdVCgcih);|A_ZCeLl!=n?ex-V5L&?{uJRz zjBfMZR7<_M!FLmlA=7TYVf~+#RXw~jk6L(qO^7m3Vw`Q-@A#9JDLJLAU&qup8jZ@Q z2ba9+CG=%<&yVW84hwBEV3Uv`Giq~+q_&iscg_S9tM88_$*ZkN#(>X|6NEijNf@3p z#DK;C^IF@0)%rq`zKnjAh!TIb64As~zek?Q3zSvdSfn9<6`k505S z<5ELru=YNbBXDXgpb8te>`et9xg%H$ZPds7xdRDYXNcg=VTv57LM5of{PFbCa~X}6 znc`;K%ZCg0G{5g7fBe;&2`+SGvmIiXGet Sweet Gear. Improve your habits to build up your avatar. Show off the sweet gear you've earned + + a.gallery(href='/marketing/drops.png', title='Find Random Prizes') + img(src='/marketing/drops.png',style='max-height:200px') + p.lead Find Random Prizes. For some, it's the gamble which motivates them, a system called "stochastic rewarding". HabitRPG accomodates all reinforcement styles: positive, negative, predictable, and random. + + // TODO achievements + + hr.clearfix + + h1 Compete With Friends, Join Interest Groups + .row + .col-md-6 + a.gallery(href='/marketing/guild.png', title='Compete With Friends, Join Interest Groups') + img(src='/marketing/guild.png') + p.lead While you can solo-play HabitRPG, the lights really turn on when you start collaborating, competing, and holding eachother accountable. The most effective part of any self-improvement program is social accountability, and what better an environment for accountability and competition than a video game? + + a.gallery(href='/bower_components/habitrpg-shared/img/sprites/spritesmith/quests/quest_vice3.png', title='Bosses') + img(src='/bower_components/habitrpg-shared/img/sprites/spritesmith/quests/quest_vice3.png') + p.lead Fight Bosses. What's a Role Playing Game without battles? Fight bosses with your party. Bosses are "super accountability mode" - a day you miss the gym is a day the boss hurts everyone. + .col-md-6 + a.gallery(href='/marketing/challenge.png', title='Challenges') + img(src='/marketing/challenge.png') + p.lead Challenges let you compete with friends and strangers. Whoever does the best at the end of a challenge wins special prizes. + + hr.clearfix + + h1 Organizational Use + .row + .col-md-6 + h3 Gamification in Education + img.pull-left(src='/marketing/education.png') + p.lead Education is one of the best sectors for gamification. We all know how glued to phones and games students are these days, harness that power! Pit your students against eachother in friendly competition. Reward good behavior with rare prizes. Watch their grades and behavior soar. + .col-md-6 + h3 Gamification in Wellness + img.pull-left(src='/marketing/wellness.png') + p.lead Health care costs are on the rise, and something's gotta give. Hundreds of programs are built to reduce costs and improve wellness. We believe HabitRPG can pave a substantial path towards healthy lifestyles. + .row + .col-md-6.col-md-offset-3 + h3 Gamify Everything + img(src='/marketing/lefnire.png') + p.lead Interested in gamifying your life? Click 'Play' at the top. Interested in running a group in education, wellness, and more? Contact us here. Want to learn more? Watch some videos! + + + //-hr + + h1 Mobile apps + img(src='') + p + + h1 3rd Party Integration + img(src='') + p \ No newline at end of file diff --git a/views/static/layout.jade b/views/static/layout.jade index 0400a3b3d0..1d4593760f 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -31,7 +31,10 @@ html(ng-app='habitrpgStatic') .collapse.navbar-collapse(collapse="isNavbarCollapsed") ul.nav.navbar-nav li(class='#{menuItem=="about" ? "active" : ""}') - a(href='/static/about')=env.t('learnMore') + //a(href='/static/about')=env.t('learnMore') + a(href='/static/about') About + li(class='#{menuItem=="videos" ? "active" : ""}') + a(href='/static/videos') Videos li a(href='http://blog.habitrpg.com/')=env.t('companyBlog') li(class='#{menuItem=="plans" ? "active" : ""}') diff --git a/views/static/videos.jade b/views/static/videos.jade new file mode 100644 index 0000000000..6b4d161f09 --- /dev/null +++ b/views/static/videos.jade @@ -0,0 +1,18 @@ +extends ./layout + +block vars + - var layoutEnv = env + - var menuItem = 'about' + +block title + title=env.t('companyAbout') + +block content + .row + .col-md-12#aboutPage + iframe(src='//player.vimeo.com/video/76557040', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/57654086', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/79172253', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/79172327', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + iframe(src='//player.vimeo.com/video/79172363', width='100%', height='539', frameborder='0', webkitallowfullscreen='', mozallowfullscreen='', allowfullscreen='') + From cbb448478edfd0003c43d20ed216bab20d25dadd Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 11 Feb 2014 01:34:42 -0700 Subject: [PATCH 122/159] feat(marketing): more copy for mobile --- public/js/static.js | 3 +- public/marketing/android_iphone.png | Bin 0 -> 224063 bytes public/marketing/integration.png | Bin 0 -> 20307 bytes public/marketing/iphone_android_habit.jpg | Bin 52094 -> 0 bytes views/static/about.jade | 34 ++++++++++++++-------- 5 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 public/marketing/android_iphone.png create mode 100644 public/marketing/integration.png delete mode 100644 public/marketing/iphone_android_habit.jpg diff --git a/public/js/static.js b/public/js/static.js index 752495c70f..c939c2a931 100644 --- a/public/js/static.js +++ b/public/js/static.js @@ -24,7 +24,8 @@ habitrpgStatic.controller("PlansCtrl", ['$rootScope', '$location', '$timeout', $('a.gallery').colorbox({ maxWidth: '90%', maxHeight: '80%', - transition: 'none' + transition: 'none', + scalePhotos:true //maxHeight: '70%' }); }); diff --git a/public/marketing/android_iphone.png b/public/marketing/android_iphone.png new file mode 100644 index 0000000000000000000000000000000000000000..3256b4a668c6a0786fd16e34be19daaf97ec7163 GIT binary patch literal 224063 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 z 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 S>C2;`HZvnj!+#ABQU3vg1MJrT literal 0 HcmV?d00001 diff --git a/public/marketing/iphone_android_habit.jpg b/public/marketing/iphone_android_habit.jpg deleted file mode 100644 index 5a0bf14a5ff421a76b107c1f2b4840104bf0b152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52094 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 z 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 diff --git a/views/static/about.jade b/views/static/about.jade index f165b7526a..b86dd503ef 100644 --- a/views/static/about.jade +++ b/views/static/about.jade @@ -48,29 +48,39 @@ block content hr.clearfix + h1 Apps + .row + .col-md-6 + a.gallery(href='/marketing/android_iphone.png', title='iPhone & Android') + img(src='/marketing/android_iphone.png',style='box-shadow:none;') + p.lead The iPhone & Android apps let you take care of business on the go. We realize that logging into the website to click buttons can be a drag. + .col-md-6 + a.gallery(href='/marketing/integration.png', title='iPhone & Android') + img(src='/marketing/integration.png') + p.lead Other 3rd Party Tools tie HabitRPG into various aspects of your life. Our API provides easy integration for things like the Chrome Extension, for which you lose points when browsing unproductive websites, and gain points when on productive ones. See more here + + hr.clearfix + h1 Organizational Use .row .col-md-6 - h3 Gamification in Education + h3 Gamification In Education img.pull-left(src='/marketing/education.png') p.lead Education is one of the best sectors for gamification. We all know how glued to phones and games students are these days, harness that power! Pit your students against eachother in friendly competition. Reward good behavior with rare prizes. Watch their grades and behavior soar. .col-md-6 - h3 Gamification in Wellness + h3 Gamification In Health and Wellness img.pull-left(src='/marketing/wellness.png') p.lead Health care costs are on the rise, and something's gotta give. Hundreds of programs are built to reduce costs and improve wellness. We believe HabitRPG can pave a substantial path towards healthy lifestyles. .row .col-md-6.col-md-offset-3 h3 Gamify Everything img(src='/marketing/lefnire.png') - p.lead Interested in gamifying your life? Click 'Play' at the top. Interested in running a group in education, wellness, and more? Contact us here. Want to learn more? Watch some videos! + p.lead + | Want to gamify your life?  + a.btn.btn-primary(ng-click='playButtonClick()') Play + | Interested in running a group in education, wellness, and more?  + a.btn.btn-primary(href='/static/plans',target='_blank') Contact Us + | Want to learn more?  + a.btn.btn-primary(href='/static/videos') Watch Videos - //-hr - - h1 Mobile apps - img(src='') - p - - h1 3rd Party Integration - img(src='') - p \ No newline at end of file From 975b5165730477310aa64bac27ddc07a34ea6c1d Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 11 Feb 2014 18:37:20 +0100 Subject: [PATCH 123/159] fix(css): menu and gems wallet margin --- public/css/tasks.styl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/public/css/tasks.styl b/public/css/tasks.styl index 42118589ea..1391af1ecf 100644 --- a/public/css/tasks.styl +++ b/public/css/tasks.styl @@ -301,7 +301,7 @@ for $stage in $stages margin-left: 0.1em margin-right: 0.4em a.badge - position: relative; top:-2px; + position: relative; top:-2px .task:hover .task-meta-controls opacity: 1 @@ -393,7 +393,7 @@ form font-weight: 300 outline: 1px solid rgba(0,0,0,0.2) outline-offset: -1px - margin: 3px 3px + margin: 0 0 0 3px font-family: 'Lato', sans-serif text-align: inherit opacity: 0.5 @@ -420,6 +420,9 @@ form &:first-child border-right: 0 +.task-options + .task-action-btn.tile + margin: 3px // todos ui // -------- From 19139f562b8e68ed43f4cab748920f1e0634e86e Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 11 Feb 2014 18:44:22 +0100 Subject: [PATCH 124/159] fix(misc): isStaticPage and debug buttons --- src/routes/pages.js | 28 +++++++--------------------- views/shared/footer.jade | 4 ++-- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/src/routes/pages.js b/src/routes/pages.js index 5c330ff783..20902b09a3 100644 --- a/src/routes/pages.js +++ b/src/routes/pages.js @@ -22,45 +22,31 @@ router.get('/static/front', middleware.locals, function(req, res) { }); router.get('/static/privacy', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/privacy', {env: env}); + res.render('static/privacy', {env: res.locals.habitrpg}); }); router.get('/static/terms', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/terms', {env: env}); + res.render('static/terms', {env: res.locals.habitrpg}); }); router.get('/static/api', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/api', {env: env}); + res.render('static/api', {env: res.locals.habitrpg}); }); router.get('/static/about', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/about', {env: env}); + res.render('static/about', {env: res.locals.habitrpg}); }); router.get('/static/videos', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/videos', {env: env}); + res.render('static/videos', {env: res.locals.habitrpg}); }); router.get('/static/contact', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/contact', {env: env}); + res.render('static/contact', {env: res.locals.habitrpg}); }); router.get('/static/plans', middleware.locals, function(req, res) { - var env = res.locals.habitrpg; - env.isFrontPage = true; - res.render('static/plans', {env: env}); + res.render('static/plans', {env: res.locals.habitrpg}); }); // --------- Redirects -------- diff --git a/views/shared/footer.jade b/views/shared/footer.jade index 8cd492ea45..4e3312e8cb 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -48,7 +48,7 @@ footer.footer(ng-controller='FooterCtrl') li a(target='_blank', href='http://www.reddit.com/r/habitrpg/')=env.t('communityReddit') .col-sm-3 - if (env.NODE_ENV=='production' && !env.IS_MOBILE) + if (env.NODE_ENV == 'production' && !env.IS_MOBILE) h4=env.t('footerSocial') .addthis_toolbox.addthis_default_style(addthis:url='https://habitrpg.com', addthis:title=env.t('socialTitle')) table @@ -64,7 +64,7 @@ footer.footer(ng-controller='FooterCtrl') tr td a.addthis_button_google_plusone(g:plusone:size='medium') - else if(!env.isFrontPage) + else if(env.NODE_ENV != 'production' && !env.isStaticPage) h4 Debug .btn-group-vertical a.btn.btn-default(ng-click='addMissedDay()') +1 Missed Day From fa2c64d2d8ebb4c5a28c0fce4bce324b6d0d79ad Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 11 Feb 2014 19:30:55 +0100 Subject: [PATCH 125/159] chore(i18n): prepare english for transifex: remove ending or starting space & _comment strings --- public/js/app.js | 2 +- public/js/controllers/authCtrl.js | 2 +- public/js/controllers/notificationCtrl.js | 2 +- public/js/services/guideServices.js | 8 ++++---- views/options/inventory/inventory.jade | 1 + views/options/profile.jade | 8 ++++---- views/options/settings.jade | 2 ++ views/options/social/challenge-box.jade | 9 ++++++--- views/options/social/group.jade | 3 ++- views/options/social/index.jade | 4 ++-- views/options/social/tavern.jade | 4 ++-- views/shared/footer.jade | 1 + views/shared/header/avatar.jade | 1 + views/shared/modals/classes.jade | 4 +++- views/shared/modals/members.jade | 8 ++++++-- views/shared/modals/quests.jade | 2 +- views/shared/profiles/achievements.jade | 9 ++++++--- views/shared/tasks/task.jade | 6 ++++-- views/static/front.jade | 9 +++++++-- views/static/login-modal.jade | 6 +++++- views/static/plans.jade | 3 +++ 21 files changed, 63 insertions(+), 31 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 8b3cbdb26f..011b1500f5 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -226,7 +226,7 @@ window.habitrpg = angular.module('habitrpg', // Error } else { var error = 'Please reload, ' + - '"'+window.env.t('error')+' '+(response.data.err || response.data || 'something went wrong')+'"' + + '"'+window.env.t('error')+' '+(response.data.err || response.data || 'something went wrong')+'" ' + window.env.t('seeConsole'); $rootScope.$broadcast('responseError', error); console.error(response); diff --git a/public/js/controllers/authCtrl.js b/public/js/controllers/authCtrl.js index 55ee72b98e..ab4b89eece 100644 --- a/public/js/controllers/authCtrl.js +++ b/public/js/controllers/authCtrl.js @@ -36,7 +36,7 @@ angular.module('authCtrl', []) } else if (!!data && !!data.err) { $window.alert(data.err); } else { - $window.alert(window.env.t('errorUpCase') + status); + $window.alert(window.env.t('errorUpCase') + ' ' + status); } }; diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index b669c470a0..8633c16fc5 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -30,7 +30,7 @@ habitrpg.controller('NotificationCtrl', if ((money > 0) && !!bonus) { if (bonus < 0.01) bonus = 0.01; - Notification.text("+ " + Notification.coins(bonus) + window.env.t('streakCoins')); + Notification.text("+ " + Notification.coins(bonus) + ' ' + window.env.t('streakCoins')); delete User.user._tmp.streakBonus; } }); diff --git a/public/js/services/guideServices.js b/public/js/services/guideServices.js index 40c4dd9131..98879e040b 100644 --- a/public/js/services/guideServices.js +++ b/public/js/services/guideServices.js @@ -19,7 +19,7 @@ angular.module('guideServices', []). { element: ".main-herobox", title: window.env.t('welcomeHabit'), - content: window.env.t('welcomeHabitT1') + "Justin," + window.env.t('welcomeHabitT2'), + content: window.env.t('welcomeHabitT1') + " Justin, " + window.env.t('welcomeHabitT2'), }, { element: ".main-herobox", title: window.env.t('yourAvatar'), @@ -69,7 +69,7 @@ angular.module('guideServices', []). }, { element: "ul.habits li:first-child", title: window.env.t('unlockFeatures'), - content: window.env.t('unlockFeaturesT1') + "" + window.env.t('habitWiki') + "" + window.env.t('unlockFeaturesT2'), + content: window.env.t('unlockFeaturesT1') + " " + window.env.t('habitWiki') + " " + window.env.t('unlockFeaturesT2'), placement: "right" } ]; @@ -171,11 +171,11 @@ angular.module('guideServices', []). }, { element: ".meter.mana", title: window.env.t('spells'), - content: window.env.t('spellsText') + "" + window.env.t('toDo') + "." + content: window.env.t('spellsText') + " " + window.env.t('toDo') + "." }, { orphan: true, title: window.env.t('readMore'), - content: window.env.t('moreClass') + "Wikia." + content: window.env.t('moreClass') + " Wikia." } ]; _.each(tourSteps, function(step){ diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 7f64aad232..86171c082d 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -16,6 +16,7 @@ script(type='text/ng-template', id='partials/options.inventory.equipment.html') .checkbox label input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') + |  =env.t('useCostume') li.customize-menu(ng-if='user.preferences.costume') menu.pets-menu(label='{{label}}', ng-repeat='(klass,label) in {base:"Base", warrior:"Warrior", wizard:"Mage", rogue:"Rogue", healer:"Healer", special:"Special"}', ng-show='gear[klass]') diff --git a/views/options/profile.jade b/views/options/profile.jade index 48539acbfc..c9dc5b4575 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -138,26 +138,26 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') label input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') =env.t('autoAllocation') -   + |  span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') .radio label input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') =env.t('evenAllocation') -   + |  span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) .radio label input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') =env.t('classAllocation') -   + |  span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) .radio label input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') =env.t('taskAllocation') -   + |  span.glyphicon.glyphicon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') a.btn.btn-primary.btn-xs(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop')) diff --git a/views/options/settings.jade b/views/options/settings.jade index c1d133d00e..1befe51f21 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -30,7 +30,9 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') div=env.t('clockInfo') .alert.alert-danger.alert-sm =env.t('subWarning1') + |  a(href='https://github.com/HabitRPG/habitrpg/issues/1057' target='_blank')=env.t('subWarning2') + |  =env.t('subWarning3') hr h4=env.t('language') diff --git a/views/options/social/challenge-box.jade b/views/options/social/challenge-box.jade index 983cd182d2..ff7cb21926 100644 --- a/views/options/social/challenge-box.jade +++ b/views/options/social/challenge-box.jade @@ -11,10 +11,13 @@ td a(ui-sref='options.social.challenges.detail({cid:challenge._id})') {{challenge.name}} div(ng-if='group.challenges.length == 0') - p=env.t('noChallenges') + p + |  + =env.t('noChallenges') a.label.label-primary(ui-sref='options.social.challenges') -   + |  span.glyphicon.glyphicon-bullhorn -   + |  =env.t('challenges') + |  =env.t('toCreate') diff --git a/views/options/social/group.jade b/views/options/social/group.jade index b0820b1ed6..918c25732e 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -12,7 +12,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild // ------ Bosses ------- .panel.panel-default(bindonce='group', ng-if='group.type==="party" && group.quest.key') .panel-heading - h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' + h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + ' {{Content.quests[group.quest.key].text}}' h3.panel-title(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} .panel-body.modal-fixed-height div(ng-if='group.quest.active==false') @@ -116,6 +116,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild .panel-body.modal-fixed-height span =env.t('partyList') + |  select#partyOrder( ng-model='user.party.order', ng-controller='ChatCtrl', diff --git a/views/options/social/index.jade b/views/options/social/index.jade index 70d695fe65..a47ca1331a 100644 --- a/views/options/social/index.jade +++ b/views/options/social/index.jade @@ -12,7 +12,7 @@ script(type='text/ng-template', id='partials/options.social.party.html') include ./group div(ng-hide='group._id') div(ng-show='user.invitations.party.id') - h2=env.t('invitedTo') + '{{user.invitations.party.name}}' + h2=env.t('invitedTo') + ' {{user.invitations.party.name}}' a.btn.btn-success(data-type='party', ng-click='join(user.invitations.party)')=env.t('accept') a.btn.btn-danger(ng-click='reject()')=env.t('reject') div(ng-hide='user.invitations.party.id') @@ -25,7 +25,7 @@ script(type='text/ng-template', id='partials/options.social.party.html') script(type='text/ng-template', id='partials/options.social.guilds.public.html') div(ng-repeat='invitation in user.invitations.guilds') - h3=env.t('invitedTo') + '{{invitation.name}}' + h3=env.t('invitedTo') + ' {{invitation.name}}' a.btn.btn-success(data-type='guild', ng-click='join(invitation)')=env.t('accept') a.btn.btn-danger(ng-click='reject(invitation)')=env.t('reject') // Public Groups diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 0f682dbbb8..8fe0cf317b 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -42,7 +42,7 @@ a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues/2760')=env.t('reportAP') tr td - a(target='_blank', href='https://trello.com/c/8gzGlle8')=env.t('requestAF') + a(target='_blank', href='https://trello.com/c/8gzGlle8')= ' ' + env.t('requestAF') tr td a(target='_blank', href='http://habitrpg.wikia.com/wiki/Special:Forum')=env.t('community') @@ -119,6 +119,6 @@ h3=env.t('tavernTalk') include ./chat-box .alert.alert-info.alert-sm - !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' + != ' ' + env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' ul.list-unstyled.tavern-chat include ./chat-message diff --git a/views/shared/footer.jade b/views/shared/footer.jade index 4e3312e8cb..216b641b13 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -15,6 +15,7 @@ footer.footer(ng-controller='FooterCtrl') li .btn.btn-sm.btn-success(ng-click='openModal("buyGems",{track:"Gems > Donate"})') span.glyphicon.glyphicon-heart + |  =env.t('companyDonate') li a(href='/static/about')=env.t('companyAbout') diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index 23635363ec..1528a8254b 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -45,6 +45,7 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( span.current-pet(class='Pet-{{profile.items.currentPet}}', ng-show='profile.items.currentPet && !minimal') .avatar-level.label.label-default(ng-class='userLevelStyle(profile)') span.glyphicon.glyphicon-circle-arrow-up(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') + |  =env.t('lvl') | {{profile.stats.lvl}}  span.glyphicon.glyphicon-plus-sign(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn', {reLevel: "{{profile.achievements.rebirthLevel}}"})) diff --git a/views/shared/modals/classes.jade b/views/shared/modals/classes.jade index 097b8ee927..e6ccdb5a10 100644 --- a/views/shared/modals/classes.jade +++ b/views/shared/modals/classes.jade @@ -1,6 +1,8 @@ script(type='text/ng-template', id='modals/chooseClass.html') .modal-header - h4=env.t('chooseClass1') + h4 + |  + =env.t('chooseClass1') a(href='http://habitrpg.wikia.com/wiki/Class_System' target='_blank')=env.t('chooseClass2') .modal-body.select-class .container-fluid diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index 4c702f8071..3937fd1fd5 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -11,9 +11,13 @@ script(type='text/ng-template', id='modals/member.html') markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') ul.muted.list-unstyled(ng-if='profile.auth.timestamps') li {{profile._id}} - li(ng-show='profile.auth.timestamps.created')=env.t('memberSince') + li(ng-show='profile.auth.timestamps.created') + |  + =env.t('memberSince') | {{timestamp(profile.auth.timestamps.created)}} - - li(ng-show='profile.auth.timestamps.loggedin')=env.t('lastLoggedIn') + li(ng-show='profile.auth.timestamps.loggedin') + |  + =env.t('lastLoggedIn') | {{timestamp(profile.auth.timestamps.loggedin)}} - h3=env.t('stats') .label.label-info {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[profile.stats.class] }} diff --git a/views/shared/modals/quests.jade b/views/shared/modals/quests.jade index aac7952d10..8c0838feca 100644 --- a/views/shared/modals/quests.jade +++ b/views/shared/modals/quests.jade @@ -49,7 +49,7 @@ script(type='text/ng-template', id='modals/buyQuest.html') script(type='text/ng-template', id='modals/questInvitation.html') .modal-header h4=env.t('questInvitation') - | {{Content.quests[party.quest.key].text}} + | {{Content.quests[party.quest.key].text}} .modal-body div(ng-bind-html='Content.quests[party.quest.key].notes') quest-rewards(key='{{party.quest.key}}') diff --git a/views/shared/profiles/achievements.jade b/views/shared/profiles/achievements.jade index ccf0468a4f..a7261a8c37 100644 --- a/views/shared/profiles/achievements.jade +++ b/views/shared/profiles/achievements.jade @@ -41,7 +41,8 @@ div(ng-if='profile.backer.tier') div(ng-if='profile.achievements.streak || user._id == profile._id') .achievement.achievement-thermometer(ng-show='profile.achievements.streak') div(ng-class='{muted: !profile.achievements.streak}') - h5 {{profile.achievements.streak || 0 }} + h5 + |{{profile.achievements.streak || 0 }}  =env.t('streakName') small=env.t('streakText', {streaks: "{{profile.achievements.streak || 0 }}"}) hr @@ -49,7 +50,8 @@ div(ng-if='profile.achievements.streak || user._id == profile._id') div(ng-if='profile.achievements.perfect || user._id == profile._id') .achievement.achievement-perfect(ng-show='profile.achievements.perfect') div(ng-class='{muted: !profile.achievements.perfect}') - h5 {{profile.achievements.perfect || 0 }} + h5 + |{{profile.achievements.perfect || 0 }}  =env.t('perfectName') small=env.t('perfectText', {perfects: "{{profile.achievements.perfect || 0 }}"}) hr @@ -75,7 +77,7 @@ div(ng-if='profile.achievements.rebirths') =env.t('rebirthText', {rebirths: "{{profile.achievements.rebirths}}"}) small =env.t('rebirthOrb') - | {{profile.achievements.rebirthLevel}}. + | {{profile.achievements.rebirthLevel}}. hr div(ng-if='profile.achievements.helpedHabit') @@ -83,6 +85,7 @@ div(ng-if='profile.achievements.helpedHabit') h5=env.t('helped') small =env.t('helpedText1') + |  a(href='http://community.habitrpg.com/node/290', target='_blank')=env.t('helpedText2') hr diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 8d70ac5360..6d0e515648 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -92,10 +92,12 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s p=env.t('brokenTask') p a(ng-click='unlink(task, "keep")')=env.t('keepIt') - |  |  + |    a(ng-click="removeTask(obj[list.type+'s'], $index)")=env.t('removeIt') div(ng-if='task.challenge.broken=="CHALLENGE_DELETED"') - p=env.t('brokenChallenge') + p + |  + =env.t('brokenChallenge') p a(ng-click='unlink(task, "keep-all")')=env.t('keepThem') |  |  diff --git a/views/static/front.jade b/views/static/front.jade index abd69a049b..9674899373 100644 --- a/views/static/front.jade +++ b/views/static/front.jade @@ -27,10 +27,14 @@ block content h2=env.t('landingp2header') //images in these parts could be useful, too //if there's a language workaround, image headers? people like pictures! - p.lead=env.t('landingp2') + p.lead + =env.t('landingp2') + |  h2=env.t('landingp3header') //I'm not sold on "Consquences as the title here. Anyone got a better idea? - p.lead=env.t('landingp3') + p.lead + =env.t('landingp3') + |  h2=env.t('landingp4header') p.lead=env.t('landingp4') //- TODO @@ -40,4 +44,5 @@ block content a(href="FEATURESPAGEHERE")=env.t('landingfeatureslink') =env.t('landingend3') a(href="ENTERPRISEPAGEHERE")=env.t('landingadminlink') + |  =env.t('landingend4') diff --git a/views/static/login-modal.jade b/views/static/login-modal.jade index 5d5a5b917f..0201b35504 100644 --- a/views/static/login-modal.jade +++ b/views/static/login-modal.jade @@ -60,9 +60,13 @@ script(id='modals/login.html', type='text/ng-template') .form-group input.form-control(type='password', ng-model='registerVals.confirmPassword', placeholder=env.t('passConfirm'), required) .form-group - small=env.t('accept1Terms') + small + =env.t('accept1Terms') + |  a(href='/static/terms' target='_blank')=env.t('terms') + |  =env.t('accept2Terms') + |  a(href='/static/privacy' target='_blank')=env.t('privacy') | . .form-group diff --git a/views/static/plans.jade b/views/static/plans.jade index 0619040c04..a7971fd3ab 100644 --- a/views/static/plans.jade +++ b/views/static/plans.jade @@ -14,12 +14,15 @@ block content p =env.t('indivPlan1') + |  a(href='http://habitrpg.wikia.com/wiki/Guilds' target='_blank')=env.t('guilds') = ' ' + env.t('and') + ' ' a(href='http://habitrpg.wikia.com/wiki/Challenges' target='_blank')=env.t('challenges') + |  =env.t('indivPlan2') p =env.t('groupText1') + |  a(href='http://habitrpg.wikia.com/wiki/Habitica' target='_blank')=env.t('habitica') |.  =env.t('groupText2') From c4244bc3b6d4685e1d05273c2a65cdc2b41b265a Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 11 Feb 2014 21:43:17 +0100 Subject: [PATCH 126/159] fix(misc) --- public/css/filters.styl | 2 +- views/shared/header/avatar.jade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/css/filters.styl b/public/css/filters.styl index 7bc6884638..6512c3e0b3 100644 --- a/public/css/filters.styl +++ b/public/css/filters.styl @@ -12,7 +12,7 @@ display: inline-block .glyphicon-bullhorn - margin-left: 5px + margin-right: 5px .input-group float: left diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index 1528a8254b..abc1c2fff8 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -47,5 +47,5 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( span.glyphicon.glyphicon-circle-arrow-up(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') |  =env.t('lvl') - | {{profile.stats.lvl}}  + | {{profile.stats.lvl}} span.glyphicon.glyphicon-plus-sign(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn', {reLevel: "{{profile.achievements.rebirthLevel}}"})) From 9217b5174ab9ab4754269263b214f6bfe45d4f1d Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 11 Feb 2014 17:49:19 -0700 Subject: [PATCH 127/159] feat(event-tracking): pass ga to server user.ops --- src/controllers/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index 9247ddafa7..5556a25093 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -461,7 +461,7 @@ _.each(shared.wrap({}).ops, function(op,k){ if (err) return next(err); res.json(200,response); }) - }) + }, ga); } } }) From 72b6c9bc9189275909804f9ecab18e9fe1f69d27 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 11 Feb 2014 17:53:12 -0700 Subject: [PATCH 128/159] feat(event-tracking): track registration count --- src/controllers/auth.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/controllers/auth.js b/src/controllers/auth.js index 47c3b19c24..c4d1541eaa 100644 --- a/src/controllers/auth.js +++ b/src/controllers/auth.js @@ -8,6 +8,7 @@ var async = require('async'); var utils = require('../utils'); var nconf = require('nconf'); var User = require('../models/user').model; +var ga = require('./../utils').ga; var api = module.exports; @@ -88,6 +89,7 @@ api.registerUser = function(req, res, next) { }; user = new User(newUser); user.save(cb); + ga.event('register', 'Local').send() } ], function(err, saved) { if (err) { @@ -250,8 +252,7 @@ api.setupPassport = function(router) { } }); user.save(cb); - - + ga.event('register', 'Facebook').send() } ], function(err, saved){ if (err) return res.redirect('/static/front?err=' + err); From b093717b8d54b61e5d4b44b0d56a1f43308f078c Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 11 Feb 2014 18:11:21 -0700 Subject: [PATCH 129/159] feat(event-tracking): better page-view tracking via ui-router --- public/js/app.js | 5 +---- public/js/controllers/rootCtrl.js | 5 +++++ public/js/static.js | 10 ++-------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 011b1500f5..57fb7a25f3 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -189,10 +189,7 @@ window.habitrpg = angular.module('habitrpg', }) .state('options.settings.subscription', { url: "/subscription", - templateUrl: "partials/options.settings.subscription.html", - onEnter: function(){ - window.ga && ga('send', 'event', 'page', 'view', 'Basic Subscription'); - } + templateUrl: "partials/options.settings.subscription.html" }) var settings = JSON.parse(localStorage.getItem(STORAGE_SETTINGS_ID)); diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index e0c3355093..09885cf546 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -13,6 +13,11 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ }) $rootScope.$on('userUpdated',initSticky); + $rootScope.$on('$stateChangeSuccess', + function(event, toState, toParams, fromState, fromParams){ + if (!!fromState.name) window.ga && ga('send', 'pageview', {'page': '/#'+toState.url}); + }); + $rootScope.User = User; $rootScope.user = user; $rootScope.moment = window.moment; diff --git a/public/js/static.js b/public/js/static.js index c939c2a931..84894ec5ab 100644 --- a/public/js/static.js +++ b/public/js/static.js @@ -6,14 +6,8 @@ window.habitrpgStatic = angular.module('habitrpgStatic', ['notificationServices' .constant("STORAGE_SETTINGS_ID", 'habit-mobile-settings') .constant("MOBILE_APP", false) -habitrpgStatic.controller("PlansCtrl", ['$rootScope', '$location', '$timeout', - function($rootScope, $location, $timeout) { - - // GA goal-tracking - $timeout(function(){ - window.ga && ga('send', 'event', 'page', 'view', 'Plans'); - }); - +habitrpgStatic.controller("PlansCtrl", ['$rootScope', + function($rootScope) { $rootScope.clickContact = function(){ window.ga && ga('send', 'event', 'button', 'click', 'Contact Us (Plans)'); } From ff9d4b886ef7a98da0514975441a8bb845496c31 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 11 Feb 2014 19:02:20 -0700 Subject: [PATCH 130/159] fix(event-tracking): typo --- public/js/controllers/rootCtrl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index 09885cf546..d9d56efe9e 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -15,7 +15,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ - if (!!fromState.name) window.ga && ga('send', 'pageview', {'page': '/#'+toState.url}); + if (!!fromState.name) window.ga && ga('send', 'pageview', {page: '/#/'+toState.name}); }); $rootScope.User = User; From 094a4be0015f0f0deaaf94a0734193eb40a8beae Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 12 Feb 2014 10:49:10 +0100 Subject: [PATCH 131/159] fix(i18n): do not save user language for now --- src/middleware.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/middleware.js b/src/middleware.js index cce035bc14..30e95ca5c6 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -197,7 +197,6 @@ var getUserLanguage = function(req, callback){ var acceptable = _(req.acceptedLanguages).map(function(lang){ return lang.slice(0, 2); }).uniq().value(); - var matches = _.intersection(acceptable, langCodes); return matches.length > 0 ? matches[0] : 'en'; }; @@ -209,10 +208,13 @@ var getUserLanguage = function(req, callback){ return callback(null, _.find(avalaibleLanguages, {code: user.preferences.language})); }else{ var langCode = getFromBrowser(); - if(user && translations[langCode]){ - user.preferences.language = langCode; - user.save(); //callback? - } + // Because english is usually always avalaible as an acceptable language for the browser, + // if the user visit the page when his own language is not avalaible yet + // he'll have english set in his preferences, which is not good. + //if(user && translations[langCode]){ + //user.preferences.language = langCode; + //user.save(); //callback? + //} return callback(null, _.find(avalaibleLanguages, {code: langCode})) } }); From fbe3ecc0334a845551f93d7becd8b839ea33c009 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 12 Feb 2014 13:59:13 +0100 Subject: [PATCH 132/159] refactor(grunt): simplify run:dev task --- Gruntfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index 0d7247aa83..ae064377ef 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -126,7 +126,7 @@ module.exports = function(grunt) { // Register tasks. grunt.registerTask('build:prod', ['loadManifestFiles', 'clean:build', 'uglify', 'stylus', 'cssmin', 'copy:build', 'hashres']); - grunt.registerTask('build:dev', ['loadManifestFiles', 'clean:build', 'stylus', 'cssmin', 'copy:build']); + grunt.registerTask('build:dev', ['stylus']); grunt.registerTask('run:dev', [ 'build:dev', 'concurrent' ]); From fb496de42f508bae86ee063f4eb1fe4906486015 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 12 Feb 2014 14:34:50 +0100 Subject: [PATCH 133/159] refactor(caching): only 1 css file, use grunt-contrib-cssmin to rewrite urls --- Gruntfile.js | 20 ++++++++++++++------ src/middleware.js | 21 ++++++++++----------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ae064377ef..ea26d68449 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -106,22 +106,30 @@ module.exports = function(grunt) { var files = grunt.file.readJSON('./public/manifest.json'); var uglify = {}; var cssmin = {}; + _.each(files, function(val, key){ + var js = uglify['build/' + key + '.js'] = []; + _.each(files[key]['js'], function(val){ js.push('public/' + val); }); + + var css = cssmin['build/' + key + '.css'] = []; + _.each(files[key]['css'], function(val){ - if(val == 'app.css' || val == 'static.css'){ - cssmin['build/' + val] = ['build/' + val] - }else{ - cssmin['build/' + val] = ['public/' + val] - } + var path = (val == 'app.css' || val == 'static.css') ? 'build/' : 'public/'; + css.push(path + val) }); + }); + grunt.config.set('uglify.build.files', uglify); - grunt.config.set('uglify.build.options', {compress: false}) + grunt.config.set('uglify.build.options', {compress: false}); + grunt.config.set('cssmin.build.files', cssmin); + // Rewrite urls to relative path + grunt.config.set('cssmin.build.options', {'target': 'public/css/whatever-css.css'}); }); // Register tasks. diff --git a/src/middleware.js b/src/middleware.js index 30e95ca5c6..4894b586d1 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -122,22 +122,21 @@ var getManifestFiles = function(page){ if(!files) throw new Error("Page not found!"); - var css = ''; - - _.each(files.css, function(file){ - css += ''; - }); + var code = ''; if(nconf.get('NODE_ENV') === 'production'){ - return css + ''; + code += ''; + code += ''; }else{ - var results = css; - _.each(files.js, function(file){ - results += ''; + _.each(files.css, function(file){ + code += ''; + }); + _.each(files.js, function(file){ + code += ''; }); - return results; } - + + return code; } // Translations From 8fdc5327e9cdde345a47a68710b5d98b71442adc Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 12 Feb 2014 15:10:22 +0100 Subject: [PATCH 134/159] refactor(grunt and caching): cache icon fonts, spritesmith and use icons from spritesmith for coins notification --- Gruntfile.js | 15 ++++------ public/css/alerts.styl | 33 +++------------------- public/js/controllers/notificationCtrl.js | 1 - public/js/services/notificationServices.js | 11 +++----- 4 files changed, 14 insertions(+), 46 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index ea26d68449..9186a9e800 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -56,7 +56,8 @@ module.exports = function(grunt) { build: { files: [ {expand: true, cwd: 'public/', src: 'favicon.ico', dest: 'build/'}, - {expand: true, cwd: 'public/', src: 'bower_components/habitrpg-shared/dist/spritesmith-*.png', dest: 'build/'} + {expand: true, cwd: 'public/', src: 'bower_components/habitrpg-shared/dist/spritesmith.png', dest: 'build/'}, + {expand: true, cwd: 'public/', src: 'bower_components/bootstrap/dist/fonts/*', dest: 'build/'} ] } }, @@ -69,18 +70,14 @@ module.exports = function(grunt) { }, src: [ 'build/*.js', 'build/*.css', 'build/favicon.ico', - 'build/bower_components/bootstrap/docs/assets/css/*.css', - 'build/bower_components/habitrpg-shared/dist/*.css' + 'build/bower_components/habitrpg-shared/dist/*.png', + 'build/bower_components/bootstrap/dist/fonts/*' ], - dest: 'make-sure-i-do-not-exist' + dest: 'build/*.css' } }, - nodemon: { - dev: { - ignoredFiles: ['public/*', 'Gruntfile.js', 'CHANGELOG.md', 'views/*', 'build/*', '.idea*', '.git*', '*.log'] - } - }, + nodemon: { dev: {} }, watch: { dev: { diff --git a/public/css/alerts.styl b/public/css/alerts.styl index 1520f695f8..40a7b8910b 100644 --- a/public/css/alerts.styl +++ b/public/css/alerts.styl @@ -33,6 +33,10 @@ alert-sm-mixin() .alert alert-sm-mixin() + .notification-icon + transform: scale(0.8) + + // variables gpColor = #FBEFC0 @@ -95,35 +99,6 @@ borderDarken = 20% border-color: darken(dropColor,borderDarken) color: dropText -// alert icons - -.icon-gold - background: url("/bower_components/habitrpg-shared/img/coin_single_gold.png") no-repeat - background-position: center center - background-size: 18px - width: 14px - height: 14px - display: inline-block - vertical-align: middle - -.icon-silver - background: url("/bower_components/habitrpg-shared/img/coin_single_silver.png") no-repeat - background-position: center center - background-size: 18px - width: 14px - height: 14px - display: inline-block - vertical-align: middle - -.icon-death - background: url("/bower_components/habitrpg-shared/img/sprites/dead.png") no-repeat - background-position: center center - background-size: 14px - width: 14px - height: 14px - display: inline-block - vertical-align: middle - .undo-button z-index: 3000 position:absolute diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index 8633c16fc5..1650a36f25 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -94,7 +94,6 @@ habitrpg.controller('NotificationCtrl', $rootScope.$watch('user.items.' + watched, function(before, after){ if (after == before) return; if (+after < +before) { - Notification.death(); //don't want to day "lost a head" if (watched === 'head') watched = 'helm'; Notification.text('Lost GP, 1 LVL, ' + watched); diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 02f92bbc83..21cb09a306 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -10,7 +10,7 @@ angular.module("notificationServices", []) top_offset: 20, align: 'right', //('left', 'right', or 'center') width: 250, //(integer, or 'auto') - delay: (type=='error') ? 0 : 7000, + delay: (type=='error') ? 0 : 0, allow_dismiss: true, stackup_spacing: 10 // spacing between consecutive stacecked growls. }); @@ -25,11 +25,11 @@ angular.module("notificationServices", []) gold = Math.floor(absolute); silver = Math.floor((absolute - gold) * 100); if (gold && silver > 0) { - return "" + gold + " " + silver + " "; + return "" + gold + " " + silver + " "; } else if (gold > 0) { - return "" + gold + " "; + return "" + gold + " "; } else if (silver > 0) { - return "" + silver + " "; + return "" + silver + " "; } }; @@ -60,9 +60,6 @@ angular.module("notificationServices", []) lvl: function(){ growl(' ' + window.env.t('levelUp'), 'lvl'); }, - death: function(){ - growl(" " + window.env.t('respawn'), "death"); - }, error: function(error){ growl("  " + error, "danger"); }, From fef858d5556cc65396e9d6f3c1f4f18218ca7fef Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 12 Feb 2014 15:21:40 +0100 Subject: [PATCH 135/159] refactor(caching): cache emojis and remove gemoji from bower --- bower.json | 1 - src/server.js | 2 ++ views/options/social/challenge-box.jade | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index e9f2e6ae37..4af780151c 100644 --- a/bower.json +++ b/bower.json @@ -36,7 +36,6 @@ "JavaScriptButtons": "git://github.com/paypal/JavaScriptButtons.git#master", "Angular-At-Directive": "git://github.com/snicker/Angular-At-Directive#master", "js-emoji": "git://github.com/snicker/js-emoji#master", - "gemoji": "git://github.com/github/gemoji", "sticky": "*", "swagger-ui": "https://github.com/wordnik/swagger-ui.git#105c516f5f055b140e935e9cfe0c36f841921dff", "ngInfiniteScroll": "~1.0.0", diff --git a/src/server.js b/src/server.js index 6cefab8db0..bef7642207 100644 --- a/src/server.js +++ b/src/server.js @@ -116,7 +116,9 @@ if (cluster.isMaster && (isDev || isProd)) { app.use(app.router); var maxAge = isProd ? 31536000000 : 0; + // Cache emojis without copying them to build, they are too many app.use(express['static'](path.join(__dirname, "/../build"), { maxAge: maxAge })); + app.use('/bower_components/habitrpg-shared/img/emoji/unicode', express['static'](path.join(__dirname, "/../public/bower_components/habitrpg-shared/img/emoji/unicode"), { maxAge: maxAge })); app.use(express['static'](path.join(__dirname, "/../public"))); // Custom Directives diff --git a/views/options/social/challenge-box.jade b/views/options/social/challenge-box.jade index ff7cb21926..758a28ece3 100644 --- a/views/options/social/challenge-box.jade +++ b/views/options/social/challenge-box.jade @@ -14,8 +14,8 @@ p |  =env.t('noChallenges') + |  a.label.label-primary(ui-sref='options.social.challenges') - |  span.glyphicon.glyphicon-bullhorn |  =env.t('challenges') From bb6931fe83d91df771b29c5bd0bd11fff7773294 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 12 Feb 2014 18:08:17 +0100 Subject: [PATCH 136/159] refactor(grunt): cache gifs --- Gruntfile.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Gruntfile.js b/Gruntfile.js index 9186a9e800..05979dbbe5 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -57,6 +57,8 @@ module.exports = function(grunt) { files: [ {expand: true, cwd: 'public/', src: 'favicon.ico', dest: 'build/'}, {expand: true, cwd: 'public/', src: 'bower_components/habitrpg-shared/dist/spritesmith.png', dest: 'build/'}, + {expand: true, cwd: 'public/', src: 'bower_components/habitrpg-shared/img/sprites/backer-only/*.gif', dest: 'build/'}, + {expand: true, cwd: 'public/', src: 'bower_components/habitrpg-shared/img/sprites/npc_ian.gif', dest: 'build/'}, {expand: true, cwd: 'public/', src: 'bower_components/bootstrap/dist/fonts/*', dest: 'build/'} ] } @@ -71,6 +73,8 @@ module.exports = function(grunt) { src: [ 'build/*.js', 'build/*.css', 'build/favicon.ico', 'build/bower_components/habitrpg-shared/dist/*.png', + 'build/bower_components/habitrpg-shared/img/sprites/backer-only/*.gif', + 'build/bower_components/habitrpg-shared/img/sprites/npc_ian.gif', 'build/bower_components/bootstrap/dist/fonts/*' ], dest: 'build/*.css' From 99474729aa3a26e401e0fed627d18273fc9b6662 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 12 Feb 2014 19:10:45 +0100 Subject: [PATCH 137/159] fix(typo) --- public/js/services/notificationServices.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/services/notificationServices.js b/public/js/services/notificationServices.js index 21cb09a306..c67770e8f0 100644 --- a/public/js/services/notificationServices.js +++ b/public/js/services/notificationServices.js @@ -10,7 +10,7 @@ angular.module("notificationServices", []) top_offset: 20, align: 'right', //('left', 'right', or 'center') width: 250, //(integer, or 'auto') - delay: (type=='error') ? 0 : 0, + delay: (type=='error') ? 0 : 7000, allow_dismiss: true, stackup_spacing: 10 // spacing between consecutive stacecked growls. }); From ce82be637d1d707e899aeee5f315da69367fa367 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 21:20:42 -0700 Subject: [PATCH 138/159] feat(groups): add group chat notifications --- public/js/app.js | 8 ++++++-- public/js/controllers/groupsCtrl.js | 3 +++ public/js/services/groupServices.js | 10 ++++++++-- src/controllers/groups.js | 8 ++++++++ src/models/group.js | 11 +++++++++++ src/models/user.js | 7 +++++-- src/routes/apiv2.coffee | 11 +++++++++++ 7 files changed, 52 insertions(+), 6 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 57fb7a25f3..ef55bb10d4 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -114,8 +114,12 @@ window.habitrpg = angular.module('habitrpg', .state('options.social.guilds.detail', { url: '/:gid', templateUrl: 'partials/options.social.guilds.detail.html', - controller: ['$scope', 'Groups', '$stateParams', function($scope, Groups, $stateParams){ - $scope.group = Groups.Group.get({gid:$stateParams.gid}); + controller: ['$scope', 'Groups', '$stateParams', + function($scope, Groups, $stateParams){ + Groups.Group.get({gid:$stateParams.gid}, function(group){ + $scope.group = group; + Groups.seenMessage(group._id); + }); }] }) diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 1c5bd00958..c0ba02c5a1 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -319,6 +319,9 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' $scope.text = 'Party'; $scope.group = $rootScope.party = Groups.party(); $scope.newGroup = new Groups.Group({type:'party'}); + + Groups.seenMessage($scope.group._id); + $scope.create = function(group){ group.$save(function(newGroup){ $scope.group = newGroup; diff --git a/public/js/services/groupServices.js b/public/js/services/groupServices.js index 1f72b4a648..eb0060c24c 100644 --- a/public/js/services/groupServices.js +++ b/public/js/services/groupServices.js @@ -5,8 +5,8 @@ */ angular.module('groupServices', ['ngResource']). - factory('Groups', ['API_URL', '$resource', '$q', - function(API_URL, $resource, $q) { + factory('Groups', ['API_URL', '$resource', '$q', '$http', 'User', + function(API_URL, $resource, $q, $http, User) { var Group = $resource(API_URL + '/api/v2/groups/:gid', {gid:'@_id', messageId: '@_messageId'}, { @@ -44,6 +44,12 @@ angular.module('groupServices', ['ngResource']). return tavern; }, + // On enter, set chat message to "seen" + seenMessage: function(gid){ + $http.post('/api/v2/groups/'+gid+'/chat/seen'); + User.user.newMessages[gid] = false; + }, + Group: Group } } diff --git a/src/controllers/groups.js b/src/controllers/groups.js index cfdaa2d179..4bdde2b83a 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -249,6 +249,14 @@ api.deleteChatMessage = function(req, res){ }); } +api.seenMessage = function(req,res,next){ + // Skip the auth step, we want this to be fast. If !found with uuid/token, then it just doesn't save + var update = {$set:{}}; + update['$set']['newMessages.'+req.params.gid+'.value'] = false; + User.update({_id:req.headers['x-api-user'], apiToken:req.headers['x-api-key']},update).exec(); + res.send(200); +} + api.likeChatMessage = function(req, res, next) { var user = res.locals.user; var group = res.locals.group; diff --git a/src/models/group.js b/src/models/group.js index f3b3cad8e5..0ecc16221e 100644 --- a/src/models/group.js +++ b/src/models/group.js @@ -106,6 +106,17 @@ GroupSchema.methods.sendChat = function(message, user){ } group.chat.unshift(message); group.chat.splice(200); + + // Kick off chat notifications in the background. + var lastSeenUpdate = {$set:{}, $inc:{_v:1}}; + lastSeenUpdate['$set']['newMessages.'+group._id] = {name:group.name,value:true}; + if (group._id == 'habitrpg') { + // TODO For Tavern, only notify them if their name was mentioned + // var profileNames = [] // get usernames from regex of @xyz. how to handle space-delimited profile names? + // User.update({'profile.name':{$in:profileNames}},lastSeenUpdate,{multi:true}).exec(); + } else { + mongoose.model('User').update({_id:{$in:group.members, $ne: user ? user._id : ''}},lastSeenUpdate,{multi:true}).exec(); + } } var cleanQuestProgress = function(merge){ diff --git a/src/models/user.js b/src/models/user.js index 2d81658e0f..2614606e91 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -207,9 +207,11 @@ var UserSchema = new Schema({ lastCron: {type: Date, 'default': Date.now}, + // {GROUP_ID: Boolean}, represents whether they have unseen chat messages + newMessages: {type: Schema.Types.Mixed, 'default': {}}, + party: { // id // FIXME can we use a populated doc instead of fetching party separate from user? - lastMessageSeen: String, order: {type:String, 'default':'level'}, quest: { key: String, @@ -245,7 +247,8 @@ var UserSchema = new Schema({ disableClasses: {type: Boolean, 'default': false}, newTaskEdit: {type: Boolean, 'default': false}, tagsCollapsed: {type: Boolean, 'default': false}, - advancedCollapsed: {type: Boolean, 'default': false} + advancedCollapsed: {type: Boolean, 'default': false}, + toolbarCollapsed: {type:Boolean, 'default':false} }, profile: { blurb: String, diff --git a/src/routes/apiv2.coffee b/src/routes/apiv2.coffee index 513fb7e312..db5a0010f0 100644 --- a/src/routes/apiv2.coffee +++ b/src/routes/apiv2.coffee @@ -488,6 +488,17 @@ module.exports = (swagger, v2) -> middleware: [auth.auth, groups.attachGroup] action: groups.postChat + # placing before route below, so that if !=='seen' it goes to next() + "/groups/{gid}/chat/seen": + spec: + method: 'POST' + description: "Flag chat messages for a particular group as seen" + parameters: [ + path 'gid','Group id','string' + ] + middleware: [] + action: groups.seenMessage + "/groups/{gid}/chat/{messageId}": spec: method: 'DELETE' From f72cb21300c078b439b3334bfa3e205ba04dc949 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 21:21:06 -0700 Subject: [PATCH 139/159] feat(toolbar): add toolbar featuring navigation, gems / subs, bailey, & chat / invite notifications --- public/css/index.styl | 16 +++ public/css/npcs.styl | 9 +- views/index.jade | 6 +- views/shared/header/header.jade | 5 - views/shared/header/menu.jade | 167 ++++++++++++++++++++++++-------- 5 files changed, 149 insertions(+), 54 deletions(-) diff --git a/public/css/index.styl b/public/css/index.styl index 6d00b3e041..7ecb15ca2b 100644 --- a/public/css/index.styl +++ b/public/css/index.styl @@ -163,3 +163,19 @@ a.label background-color: #428bca .badge-success background-color: #47a447 + +.white, .white a + color: #fff !important + +.collapse-toolbar + position:absolute + right:0px + top:0px + width:30px + height:25px + background-color:#222 + z-index:999 + .glyphicon + color:white + padding-left:7px + padding-top:5px diff --git a/public/css/npcs.styl b/public/css/npcs.styl index 48493536b3..c0c6aff155 100644 --- a/public/css/npcs.styl +++ b/public/css/npcs.styl @@ -4,15 +4,14 @@ .npc_matt margin-bottom: 20px +.toolbar-bailey-container + width:55px + position:relative .npc_bailey float:left .npc_bailey_head - //height: 30px !important - height: 50px !important position: absolute - //top: 117px // 147 (header-height) - 30 (bailey height) - top: 97px - right: 50px + top: 4px cursor: pointer // Tour (Justin) diff --git a/views/index.jade b/views/index.jade index aedb605b44..85f6c5d642 100644 --- a/views/index.jade +++ b/views/index.jade @@ -20,19 +20,15 @@ html(ng-app="habitrpg", ng-controller="RootCtrl", ng-class='{"applying-action":a body(ng-cloak, ng-controller='GroupsCtrl') + include ./shared/header/menu include ./shared/modals/index include ./shared/header/header - include ./shared/tasks/lists include ./main/index include ./options/index #notification-area(ng-controller='NotificationCtrl') #wrap.container-fluid - //if they hide the header, we still need user-menu visible - div(ng-if='user.preferences.hideHeader') - include ./shared/header/menu - .row .col-md-12.exp-chart(ng-show='charts.exp') #main(ui-view) diff --git a/views/shared/header/header.jade b/views/shared/header/header.jade index d62920ab4c..6481d1a5e6 100644 --- a/views/shared/header/header.jade +++ b/views/shared/header/header.jade @@ -1,7 +1,5 @@ .header-wrap(ng-controller='HeaderCtrl') a.label.label-default.undo-button(x-bind='click:undo', ng-show='_undo')=env.t('undo') - div(ng-if='!user.preferences.hideHeader') - include menu header.site-header(ng-hide='user.preferences.hideHeader', role='banner', data-partysize='{{party.members.length>1 ? truarr(party.members.length) : 0}}') // avatar @@ -38,6 +36,3 @@ span(ng-controller='PartyCtrl') .herobox-wrap(ng-repeat='profile in partyMinusSelf') include avatar - - .npc_bailey.npc_bailey_head(ng-show='user.flags.newStuff', tooltip=env.t('psst'), tooltip-placement='top', ng-click='openModal("newStuff")') - diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index eea952c974..8b5ecbb338 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -1,41 +1,130 @@ -.user-menu(ng-controller='AuthCtrl') - ul.nav.site-nav(ng-show='authenticated()') - li.flyout - h1.task-action-btn.tile.solid.user-reporter {{user.profile.name}} - ul.flyout-content.nav.stacked - li - a.task-action-btn.tile.solid - span(ng-show='$state.includes("options")', ui-sref='tasks') - span.glyphicon.glyphicon-ok +a.collapse-toolbar(popover='Expand Toolbar',popover-placement='left',popover-trigger='mouseenter',ng-if='user.preferences.toolbarCollapsed',ng-click='set({"preferences.toolbarCollapsed":false})') + span.glyphicon.glyphicon-chevron-down + +nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin-bottom:0px;border:0;border-radius:0px',ng-if='!user.preferences.toolbarCollapsed') + + ul.nav.navbar-nav.pull-right + li + a(popover='Collapse Toolbar',popover-placement='left',popover-trigger='mouseenter',,ng-if='!user.preferences.toolbarCollapsed',ng-click='set({"preferences.toolbarCollapsed":true})') + span.glyphicon.glyphicon-chevron-up.white + + .navbar-header + button.navbar-toggle(type='button', ng-click='isNavbarCollapsed = !isNavbarCollapsed', ng-init='isNavbarCollapsed = true') + span.sr-only Toggle navigation + span.icon-bar + span.icon-bar + span.icon-bar + .collapse.navbar-collapse(collapse="isNavbarCollapsed") + ul.nav.navbar-nav + + li(ui-sref='tasks') + a=env.t('tasks') + li.dropdown + a.dropdown-toggle + | Profile + span.caret + ul.dropdown-menu + li + a(ui-sref='options.profile.avatar') Avatar + li + a(ui-sref='options.profile.stats') Stats + li + a(ui-sref='options.profile.profile') Profile + li.dropdown + a.dropdown-toggle + | Social + span.caret + ul.dropdown-menu + li + a(ui-sref='options.social.tavern') Tavern + li + a(ui-sref='options.social.party') Party + li + a(ui-sref='options.social.guilds') Guilds + li + a(ui-sref='options.social.challenges') Challenges + li + a(ui-sref='options.social.hall') Hall + li.dropdown + a.dropdown-toggle + | Market + span.caret + ul.dropdown-menu + li + a(ui-sref='options.inventory.drops') Market + li + a(ui-sref='options.inventory.pets') Pets + li + a(ui-sref='options.inventory.mounts') Mounts + li + a(ui-sref='options.inventory.equipment') Equipment + li.dropdown + a.dropdown-toggle + | Settings + span.caret + ul.dropdown-menu + li + a(ui-sref='options.settings.settings') Settings + li + a(ui-sref='options.settings.api') API + li + a(ui-sref='options.settings.export') Export + li + a(ui-sref='options.settings.subscription') Subscription + li + a(ng-click='logout()') + span.glyphicon.glyphicon-share-alt |   - =env.t('tasks') - span(ng-show='$state.includes("tasks")', ui-sref='options') - span.glyphicon.glyphicon-wrench + =env.t('logout') + li.dropdown + a.dropdown-toggle + | Help + span.caret + ul.dropdown-menu + li + a(href="http://habitrpg.wikia.com/wiki/FAQ", target='_blank') + span.glyphicon.glyphicon-book |   - =env.t('options') - li - a.task-action-btn.tile.solid(href="http://habitrpg.wikia.com/wiki/FAQ", target='_blank') - span.glyphicon.glyphicon-book - |   - =env.t('FAQ') - li - a.task-action-btn.tile.solid(href="https://vimeo.com/57654086", target='_blank') - span.glyphicon.glyphicon-film - //|   Tutorials is too long to stay in the menu if we add a space - =env.t('tutorials') - li - a.task-action-btn.tile.solid(ng-click='User.sync()') - span.glyphicon.glyphicon-refresh - |   - =env.t('sync') - li - a.task-action-btn.tile.solid(ng-click='logout()') - span.glyphicon.glyphicon-share-alt - |   - =env.t('logout') - // party invitation notification - a(ng-show='user.party.invitation', x-bind='click:gotoPartyChat') - span.glyphicon.glyphicon-user - // party chat notification - a(ng-show='newChatMessages(_party.chat,user.party.lastMessageSeen)', x-bind='click:gotoPartyChat') - span.glyphicon.glyphicon-comment(tooltip=env.t('partyNotification')) + =env.t('FAQ') + li + a(href="https://vimeo.com/57654086", target='_blank') + span.glyphicon.glyphicon-film + //|   Tutorials is too long to stay in the menu if we add a space + =env.t('tutorials') + li + a(ng-click='User.sync()',popover=env.t('sync'),popover-placement='bottom',popover-trigger='mouseenter') + span.glyphicon.glyphicon-refresh.white + //-|   + //-=env.t('sync') + + li(style='border-right:1px solid #999;height:50px;display:block;') + span   + + li + a.pull-right.gem-wallet(style='padding-top:8px;padding-bottom:0px;',ng-click='openModal("buyGems",{track:"Gems > Wallet"})', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom',popover-append-to-body='true') + //span.task-action-btn.tile.flush.bright.add-gems-btn + + span.task-action-btn.tile.flush.neutral + .Pet_Currency_Gem2x.Gems + | {{user.balance * 4 | number:0}} + li + button.btn.btn-primary(style='margin-top:8px;margin-bottom:0px',ng-if='!user.purchased.plan.customerId',ui-sref='options.settings.subscription',popover-trigger='mouseenter',popover-placement='bottom',popover-title='Subscriptions',popover='Disable ads, buy gems with gold, monthly mystery item, retain progress history, double daily drop-caps, supports the devs. Click for more info.',popover-append-to-body='true') Subscribe + button.btn.btn-default(style='margin-top:8px;margin-bottom:0px',ng-if='user.purchased.plan.customerId',ui-sref='options.settings.subscription',popover-trigger='mouseenter',popover-placement='bottom',popover='Click to manage subscription',popover-append-to-body='true') Subscribed + + li(ng-if='user.flags.newStuff') + div.toolbar-bailey-container + |  + .npc_bailey.npc_bailey_head(popover=env.t('psst'), popover-trigger='mouseenter', popover-placement='bottom', popover-placement='bottom', ng-click='openModal("newStuff")') + + // Invitations + li(ng-if='user.invitations.party.id') + a(ui-sref='options.social.party') + span.glyphicon.glyphicon-user.white(popover='Invited to {{user.invitations.party.name}}',popover-placement='bottom',popover-trigger='mouseenter',popover-append-to-body='true') + li(ng-repeat='guild in user.invitations.guilds') + a(ui-sref='options.social.guilds') + span.glyphicon.glyphicon-user.white(popover='Invited to {{guid.name}}',popover-placement='bottom',popover-trigger='mouseenter',popover-append-to-body='true') + // Chat notifs + li(ng-repeat='(k,v) in user.newMessages', ng-if='v.value') + a(ng-click='k==party._id ? $state.go("options.social.party") : $state.go("options.social.guilds.detail",{gid:k})') + span.glyphicon.glyphicon-comment.white(popover='New message in "{{v.name}}"',popover-placement='bottom',popover-trigger='mouseenter',popover-append-to-body='true') + + From c95c6a4c3b3fb3de1f5edff7c866f20ecc75b959 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 21:24:50 -0700 Subject: [PATCH 140/159] chore(modals): remove mathUpdates modal (no longer in use). reference this commit for any future emergency updates --- public/js/controllers/notificationCtrl.js | 6 ------ views/shared/modals/new-stuff.jade | 14 -------------- 2 files changed, 20 deletions(-) diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index 1650a36f25..82c42af8a7 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -115,12 +115,6 @@ habitrpg.controller('NotificationCtrl', } }); - // Math updates modal - $rootScope.$watch('!user.flags.mathUpdates', function(after, before){ - if (after == before || after != true) return; - $rootScope.openModal('mathUpdates'); - }); - // Completed quest modal $rootScope.$watch('user.party.quest.completed', function(after, before){ if (after == before || after != true) return; diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index ebdf889759..ddab4fbd92 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -1,17 +1,3 @@ -//-div(modal='!user.flags.mathUpdates') -script(type='text/ng-template', id='modals/mathUpdates.html') - .modal-header - h4 Math Updates - .modal-body - .npc_tyler.pull-left - p Hey all, Tyler here. Sorry for the rocky numbers (Exp, GP, etc) with the Class System roll-out! We're tweaking the math today, and things should be mostly finalized by tomorrow. Follow our progress here, and please do chime in! - br - p We've also changed classes to unlock at lvl 10 instead of 5, to prevent overwhelming our new users. And since users have expressed confusion, we'll be improving UI and clarifification. Stay tuned. - br - p iOS users, iTunes is on vacation until 12/28. Until we can push the updated app, you'll need to sync periodically to get the corrected numbers (app has old math, server saves the correct numbers). Android goes out ASAP. More info on Trello. - .modal-footer - button.btn.btn-default(ng-click='User.set({"flags.mathUpdates":true}); $close()') Dismiss - script(type='text/ng-template', id='modals/newStuff.html') .modal-header h4 New Stuff! From 2750548d359c9253a02b708be007bc439419958e Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 21:37:14 -0700 Subject: [PATCH 141/159] chore(bailey): bailey for chat notifs & toolbar --- views/shared/modals/new-stuff.jade | 65 +++++++++++++++++++----------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index ddab4fbd92..af699aac98 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -12,38 +12,54 @@ script(type='text/ng-template', id='modals/newStuff.html') h3.popover-title a(target='_blank', href='https://twitter.com/Mihakuu') Bailey .popover-content + + table.table.table-striped tr td - h5 February Mystery Item - p - .pull-right.inventory_present - | We're excited to announce a new feature a s a big thank-you to the awesome people who subscribe to HabitRPG! Every month, all subscribers will now receive a limited-edition mystery item! The mystery item will be a stats-free costume piece (like the Absurd Party Robes) that will only be available to the people who are subscribers each month. The February 2014 item will be revealed on the 23rd to everyone, but all people who are subscribers during the month of February will receive it. Subscribe now, get excited, and thank you so much for helping to support HabitRPG! We love you. + h5 Chat & Invite Notifications + p Chat & group-invitation notifications are back! Miss them? They currently work for all chat updates in parties & guilds. Any devs willing to jump into @tagging in Tavern, see here. tr td - h5 Critical Hammer Of Bug-Crushing - p - .pull-right.weapon_special_critical - | Some of you may have noticed that we periodically have some bugs that are nastier than the norm - the dreaded critical bugs. These monstrous apparitions have been snapping at the heels of many a player. For updates on what we're currently working on to improve site stability, read this link - and then jump in to help! Not only will programming assistance reward you with the usual contributor levels, but if you actually manage to fix a bug marked "critical," you will now receive the Critical Hammer of Bug-Crushing as your reward! - tr - td - - h5 Rainbow Hair Colors - p - .pull-right.customize-option.hair_bangs_1_rainbow - | Want to spruce up your avatar? Rainbow hair colors are now available! Dye your luscious locks purple, green, or even rainbow-striped, and passersby will look at you with envy. - tr - td - h5 Stability Update - p We've stabilized the site a lot (we're still working out kinks, but we're way better now). Follow the progress here, but here are some workarounds for now: - ul - li Click slower. VersionError is caused by clicking things off too fast (we're working on a fix). - li If you see an error, refresh before proceeding. - + h5 Toolbar + p In order to make room for these notifs, we added a toolbar above the header. You can collapse the toolbar (far-right icon), but take care as Bailey notifs are inside the toolbar! p - small.muted By Lemoness, mariahm, crystalphoenix, aiseant, zoebeagle, cole, lefnire + small.muted 02/12/2014 + hr + h5 02/07/2014 + table.table.table-striped + tr + td + h5 February Mystery Item + p + .pull-right.inventory_present + | We're excited to announce a new feature a s a big thank-you to the awesome people who subscribe to HabitRPG! Every month, all subscribers will now receive a limited-edition mystery item! The mystery item will be a stats-free costume piece (like the Absurd Party Robes) that will only be available to the people who are subscribers each month. The February 2014 item will be revealed on the 23rd to everyone, but all people who are subscribers during the month of February will receive it. Subscribe now, get excited, and thank you so much for helping to support HabitRPG! We love you. + tr + td + h5 Critical Hammer Of Bug-Crushing + p + .pull-right.weapon_special_critical + | Some of you may have noticed that we periodically have some bugs that are nastier than the norm - the dreaded critical bugs. These monstrous apparitions have been snapping at the heels of many a player. For updates on what we're currently working on to improve site stability, read this link - and then jump in to help! Not only will programming assistance reward you with the usual contributor levels, but if you actually manage to fix a bug marked "critical," you will now receive the Critical Hammer of Bug-Crushing as your reward! + tr + td + + h5 Rainbow Hair Colors + p + .pull-right.customize-option.hair_bangs_1_rainbow + | Want to spruce up your avatar? Rainbow hair colors are now available! Dye your luscious locks purple, green, or even rainbow-striped, and passersby will look at you with envy. + tr + td + h5 Stability Update + p We've stabilized the site a lot (we're still working out kinks, but we're way better now). Follow the progress here, but here are some workarounds for now: + ul + li Click slower. VersionError is caused by clicking things off too fast (we're working on a fix). + li If you see an error, refresh before proceeding. + + p + small.muted By Lemoness, mariahm, crystalphoenix, aiseant, zoebeagle, cole, lefnire + hr h5 02/01/2014 table.table.table-striped @@ -54,6 +70,7 @@ script(type='text/ng-template', id='modals/newStuff.html') p small.muted by @baconsaur & @DanielTheBard + hr h5 01/30/2014 table.table.table-striped tr From f6abfc67b31808c0e2d325c235747260855338c9 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 21:44:27 -0700 Subject: [PATCH 142/159] feat(tracking): gems > toolbar separately from wallet --- views/shared/header/menu.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index 8b5ecbb338..1b0d1f00a9 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -101,7 +101,7 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- span   li - a.pull-right.gem-wallet(style='padding-top:8px;padding-bottom:0px;',ng-click='openModal("buyGems",{track:"Gems > Wallet"})', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom',popover-append-to-body='true') + a.pull-right.gem-wallet(style='padding-top:8px;padding-bottom:0px;',ng-click='openModal("buyGems",{track:"Gems > Toolbar"})', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom',popover-append-to-body='true') //span.task-action-btn.tile.flush.bright.add-gems-btn + span.task-action-btn.tile.flush.neutral .Pet_Currency_Gem2x.Gems From 5501d57e107c0bc7085847b0c808f027360fa405 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 21:51:35 -0700 Subject: [PATCH 143/159] fix(toolbar): tweaks --- public/js/services/groupServices.js | 2 +- views/shared/header/menu.jade | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/public/js/services/groupServices.js b/public/js/services/groupServices.js index eb0060c24c..db33d73de9 100644 --- a/public/js/services/groupServices.js +++ b/public/js/services/groupServices.js @@ -47,7 +47,7 @@ angular.module('groupServices', ['ngResource']). // On enter, set chat message to "seen" seenMessage: function(gid){ $http.post('/api/v2/groups/'+gid+'/chat/seen'); - User.user.newMessages[gid] = false; + if (User.user.newMessages) User.user.newMessages[gid] = false; }, Group: Group diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index 1b0d1f00a9..64aed67d5a 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -97,8 +97,9 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- //-|   //-=env.t('sync') - li(style='border-right:1px solid #999;height:50px;display:block;') - span   + // Separator + li + a(style='border-right:1px solid #999;cursor:default;padding-left:0px;padding-right:0px')   li a.pull-right.gem-wallet(style='padding-top:8px;padding-bottom:0px;',ng-click='openModal("buyGems",{track:"Gems > Toolbar"})', popover-trigger='mouseenter', popover-title=env.t('gems'), popover=env.t('gemsWhatFor'), popover-placement='bottom',popover-append-to-body='true') From 7456f00dc6122ad293652b7a32fb4ce671f75241 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 22:17:26 -0700 Subject: [PATCH 144/159] feat(toolbar): try with icons instead of text, test against prod / beta & get a vote. --- views/shared/header/menu.jade | 39 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index 64aed67d5a..db2bfb1c40 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -17,11 +17,12 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- .collapse.navbar-collapse(collapse="isNavbarCollapsed") ul.nav.navbar-nav - li(ui-sref='tasks') - a=env.t('tasks') + li + a(ui-sref='tasks',popover=env.t('tasks'),popover-placement='right',popover-trigger='mouseenter') + span.glyphicon.glyphicon-check.white li.dropdown - a.dropdown-toggle - | Profile + a.dropdown-toggle(popover='Profile',popover-placement='right',popover-trigger='mouseenter') + span.glyphicon.glyphicon-user.white span.caret ul.dropdown-menu li @@ -30,9 +31,14 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- a(ui-sref='options.profile.stats') Stats li a(ui-sref='options.profile.profile') Profile + li + a(ng-click='logout()') + span.glyphicon.glyphicon-share-alt + |   + =env.t('logout') li.dropdown - a.dropdown-toggle - | Social + a.dropdown-toggle(popover='Social',popover-placement='right',popover-trigger='mouseenter') + span.glyphicon.glyphicon-heart.white span.caret ul.dropdown-menu li @@ -46,8 +52,8 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- li a(ui-sref='options.social.hall') Hall li.dropdown - a.dropdown-toggle - | Market + a.dropdown-toggle(popover='Market',popover-placement='right',popover-trigger='mouseenter') + span.glyphicon.glyphicon-gift.white span.caret ul.dropdown-menu li @@ -59,8 +65,8 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- li a(ui-sref='options.inventory.equipment') Equipment li.dropdown - a.dropdown-toggle - | Settings + a.dropdown-toggle(popover='Settings',popover-placement='right',popover-trigger='mouseenter') + span.glyphicon.glyphicon-wrench.white span.caret ul.dropdown-menu li @@ -71,14 +77,9 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- a(ui-sref='options.settings.export') Export li a(ui-sref='options.settings.subscription') Subscription - li - a(ng-click='logout()') - span.glyphicon.glyphicon-share-alt - |   - =env.t('logout') li.dropdown - a.dropdown-toggle - | Help + a.dropdown-toggle(popover='Help',popover-placement='right',popover-trigger='mouseenter') + span.glyphicon.glyphicon-question-sign.white span.caret ul.dropdown-menu li @@ -92,7 +93,7 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- //|   Tutorials is too long to stay in the menu if we add a space =env.t('tutorials') li - a(ng-click='User.sync()',popover=env.t('sync'),popover-placement='bottom',popover-trigger='mouseenter') + a(ng-click='User.sync()',popover=env.t('sync'),popover-placement='right',popover-trigger='mouseenter') span.glyphicon.glyphicon-refresh.white //-|   //-=env.t('sync') @@ -114,7 +115,7 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- li(ng-if='user.flags.newStuff') div.toolbar-bailey-container |  - .npc_bailey.npc_bailey_head(popover=env.t('psst'), popover-trigger='mouseenter', popover-placement='bottom', popover-placement='bottom', ng-click='openModal("newStuff")') + .npc_bailey.npc_bailey_head(popover=env.t('psst'), popover-trigger='mouseenter', popover-placement='right', ng-click='openModal("newStuff")') // Invitations li(ng-if='user.invitations.party.id') From c8faffcc7289090990c3a17ab8c07a00069f5ce4 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 12 Feb 2014 22:31:32 -0700 Subject: [PATCH 145/159] fix(css): temp fix for bailey height --- public/css/npcs.styl | 1 + 1 file changed, 1 insertion(+) diff --git a/public/css/npcs.styl b/public/css/npcs.styl index c0c6aff155..4f55489d5c 100644 --- a/public/css/npcs.styl +++ b/public/css/npcs.styl @@ -12,6 +12,7 @@ .npc_bailey_head position: absolute top: 4px + height:45px !important cursor: pointer // Tour (Justin) From 8ba12ef39287754bab130bb7635703809abf5f4e Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 13 Feb 2014 11:54:45 -0700 Subject: [PATCH 146/159] chore(contribs_plan): add migration so contribl.lvl >= 7 gets free plan4life --- migrations/contribs_plan.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 migrations/contribs_plan.js diff --git a/migrations/contribs_plan.js b/migrations/contribs_plan.js new file mode 100644 index 0000000000..a08bd93f76 --- /dev/null +++ b/migrations/contribs_plan.js @@ -0,0 +1,23 @@ +// Give contrib.level 7+ free subscription for life +db.users.update( + + { + 'contributor.level':{$gte:7}, + 'purchased.plan.customerId':null + }, + + { + $set: { + 'purchased.plan':{ + planId: 'basic', + customerId: 'habitrpg', + dateCreated: new Date, + dateUpdated: new Date, + gemsBought: 0 + } + } + }, + + {multi:true} + +) \ No newline at end of file From fd6eb8724eae38d02849ffccb09f1f9c7d8e490d Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 13 Feb 2014 17:57:00 -0700 Subject: [PATCH 147/159] feat(valentine): valentine event --- public/js/controllers/rootCtrl.js | 6 +++++ src/controllers/user.js | 2 +- src/models/user.js | 7 ++++-- views/options/inventory/inventory.jade | 6 +++++ views/shared/modals/index.jade | 3 ++- views/shared/modals/limited.jade | 30 +++++++++++++++++++++++++ views/shared/profiles/achievements.jade | 6 +++++ views/shared/tasks/lists.jade | 18 +++++++++++++-- 8 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 views/shared/modals/limited.jade diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index d9d56efe9e..508afbdf33 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -26,6 +26,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ $rootScope.Shared = Shared; $rootScope.Content = Content; $rootScope.env = window.env; + $rootScope.Math = Math; // Angular UI Router $rootScope.$state = $state; @@ -198,6 +199,11 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ */ $scope.castStart = function(spell) { if (User.user.stats.mp < spell.mana) return Notification.text(window.env.t('notEnoughMana')); + + // Temporary for valentine's day, remove after event + if (spell.key == 'valentine' && User.user.stats.gp < spell.value) + return Notification.text('Not enough gold.'); + $rootScope.applyingAction = true; $scope.spell = spell; if (spell.target == 'self') { diff --git a/src/controllers/user.js b/src/controllers/user.js index 5556a25093..caaab30546 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -409,7 +409,7 @@ api.cast = function(req, res, next) { case 'user': async.waterfall([ function(cb){ - Group.findOne({type: 'party', members: {'$in': [user._id]}}).populate('members', 'profile.name stats achievements').exec(cb); + Group.findOne({type: 'party', members: {'$in': [user._id]}}).populate('members', 'profile.name stats achievements items.special').exec(cb); }, function(group, cb) { // Solo player? let's just create a faux group for simpler code diff --git a/src/models/user.js b/src/models/user.js index 2614606e91..93800629bf 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -42,7 +42,8 @@ var UserSchema = new Schema({ rebirths: Number, rebirthLevel: Number, perfect: Number, - habitBirthday: Boolean + habitBirthday: Boolean, + valentine: Number }, auth: { facebook: Schema.Types.Mixed, @@ -136,7 +137,9 @@ var UserSchema = new Schema({ }, special:{ - snowball: {type: Number, 'default': 0} + snowball: {type: Number, 'default': 0}, + valentine: Number, + valentineReceived: Array // array of strings, by sender name }, // -------------- Animals ------------------- diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 86171c082d..94264834df 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -68,6 +68,12 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') button.customize-option(popover='{{Content.special.snowball.notes}}', popover-title='{{Content.special.snowball.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='castStart(Content.special.snowball)', class='inventory_special_snowball') .badge.badge-info.stack-count {{user.items.special.snowball}} + li.customize-menu(ng-if='user.items.special.valentineReceived[0]') + menu.pets-menu(label=env.t('valentineCard')) + div + button.customize-option(popover="Valentine's Day Card from {{User.user.items.special.valentineReceived[0]}}", popover-trigger='mouseenter', popover-placement='right', ng-click='openModal("valentine")', class='inventory_special_valentine') + .badge.badge-info.stack-count {{user.items.special.valentineReceived.length}} + li.customize-menu(ng-if='user.purchased.plan.customerId') menu.pets-menu(label=env.t('subscriberItem')) div diff --git a/views/shared/modals/index.jade b/views/shared/modals/index.jade index a8c0626e99..c16838f72e 100644 --- a/views/shared/modals/index.jade +++ b/views/shared/modals/index.jade @@ -8,4 +8,5 @@ include ./settings include ./drops include ./classes include ./quests -include ./rebirth \ No newline at end of file +include ./rebirth +include ./limited \ No newline at end of file diff --git a/views/shared/modals/limited.jade b/views/shared/modals/limited.jade new file mode 100644 index 0000000000..8d2d31ce90 --- /dev/null +++ b/views/shared/modals/limited.jade @@ -0,0 +1,30 @@ +//Valentine +script(id='modals/valentine.html', type='text/ng-template') + .modal-header + h4 + .inventory_special_valentine.pull-right + =env.t('valentineCard') + .modal-body + .bg-info(style='padding:10px') + p To: {{user.profile.name}}, From: {{user.items.special.valentineReceived[0]}} + hr + div(ng-switch='Math.floor(Math.random()*3)') + ul.list-unstyled(ng-switch-when='0') + li "Roses are red + li My Dailies are blue + li I'm happy that I'm + li In a Party with you!" + ul.list-unstyled(ng-switch-when='1') + li "Roses are red + li Violets are nice + li Let's get together + li And fight against Vice!" + ul.list-unstyled(ng-switch-default) + li "Roses are red + li This poem style is old + li I hope that you like this + li Cuz it cost ten gold." + p + small For enduring such a saccharine poem, you both receive the "Adoring Friends" badge! + .modal-footer + button.btn.btn-default(ng-click='user.ops.readValentine({});$close()')=env.t('ok') \ No newline at end of file diff --git a/views/shared/profiles/achievements.jade b/views/shared/profiles/achievements.jade index a7261a8c37..d18e0c739f 100644 --- a/views/shared/profiles/achievements.jade +++ b/views/shared/profiles/achievements.jade @@ -133,3 +133,9 @@ div(ng-if='profile.achievements.habitBirthday') =env.t('habitBirthdayText') hr +div(ng-if='profile.achievements.valentine') + .achievement.achievement-valentine + h5=env.t('adoringFriends') + small + =env.t('adoringFriendsText', {cards: "{{profile.achievements.valentine}}"}) + hr diff --git a/views/shared/tasks/lists.jade b/views/shared/tasks/lists.jade index be5f5d1d0f..dc9010d279 100644 --- a/views/shared/tasks/lists.jade +++ b/views/shared/tasks/lists.jade @@ -58,8 +58,9 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") span(bo-class='{"shop_{{item.key}} shop-sprite item-img": true}') p.task-text {{item.text}} - // Winter Event - ul.items.rewards(ng-if='main && list.type=="reward" && (user.items.special.snowball>0 || user.stats.buffs.snowball)') + // Events + ul.items.rewards(ng-if='main && list.type=="reward"') + li.task.reward-item(ng-if='user.items.special.snowball>0',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.snowball.notes}}') .task-meta-controls span.task-notes @@ -71,6 +72,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") span.shop_snowball(style='display:inline-block;vertical-align:top;') // main content p.task-text {{Content.spells.special.snowball.text}} + li.task.reward-item(ng-if='user.stats.buffs.snowball',popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.salt.notes}}') .task-meta-controls span.task-notes @@ -84,6 +86,18 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") span.shop_salt.shop-sprite.item-img p.task-text {{Content.spells.special.salt.text}} + li.task.reward-item(popover-trigger='mouseenter', popover-placement='top', popover='{{Content.spells.special.valentine.notes}}') + .task-meta-controls + span.task-notes + span.glyphicon.glyphicon-comment + //left-hand size commands + .task-controls + a.money.btn-buy.item-btn(ng-click='castStart(Content.spells.special.valentine)') + span.reward-cost {{Content.spells.special.valentine.value}} + span.shop_gold + span.inventory_special_valentine.shop-sprite.item-img + p.task-text {{Content.spells.special.valentine.text}} + // Spells ul.items(ng-if='main && list.type=="reward" && user.stats.class && !user.preferences.disableClasses') li.task.reward-item(ng-repeat='(k,spell) in Content.spells[user.stats.class]', ng-if='user.stats.lvl >= spell.lvl',popover-trigger='mouseenter', popover-placement='top', popover='{{spell.notes}}') From 677c83c592b48ce4bfd1b1e8797461d15ed3b752 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 13 Feb 2014 18:45:36 -0700 Subject: [PATCH 148/159] chore(bailey): valentine --- views/shared/modals/new-stuff.jade | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/views/shared/modals/new-stuff.jade b/views/shared/modals/new-stuff.jade index af699aac98..4e9d44abe9 100644 --- a/views/shared/modals/new-stuff.jade +++ b/views/shared/modals/new-stuff.jade @@ -13,21 +13,26 @@ script(type='text/ng-template', id='modals/newStuff.html') a(target='_blank', href='https://twitter.com/Mihakuu') Bailey .popover-content - - table.table.table-striped - tr - td - h5 Chat & Invite Notifications - p Chat & group-invitation notifications are back! Miss them? They currently work for all chat updates in parties & guilds. Any devs willing to jump into @tagging in Tavern, see here. - tr - td - h5 Toolbar - p In order to make room for these notifs, we added a toolbar above the header. You can collapse the toolbar (far-right icon), but take care as Bailey notifs are inside the toolbar! + h5 Happy Valentine's Day! + p Help motivate all of the lovely people in your life by sending them a caring valentine. Valentines can be purchased for 10 gold from the Item Store. For spreading love and joy throughout the community, both the giver AND the receiver get a coveted "adoring friends" badge. Hooray! p - small.muted 02/12/2014 - + small.muted By Lemoness and zoebeagle + hr + p + small.muted 02/13/2014 hr + h5 02/12/2014 + table.table.table-striped + tr + td + h5 Chat & Invite Notifications + p Chat & group-invitation notifications are back! Miss them? They currently work for all chat updates in parties & guilds. Any devs willing to jump into @tagging in Tavern, see here. + tr + td + h5 Toolbar + p In order to make room for these notifs, we added a toolbar above the header. You can collapse the toolbar (far-right icon), but take care as Bailey notifs are inside the toolbar! + hr h5 02/07/2014 table.table.table-striped tr From 4454204f47f80e64119f7896bf246259173d115b Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 13 Feb 2014 20:39:22 -0600 Subject: [PATCH 149/159] fix(toolbar): Tweak icon popovers Changed "Profile" toolbar icon popover to "User" and "Market" icon popover to "Inventory". Straightens out weird paths, so you don't go "Market > Market" or "Profile > Profile". --- views/shared/header/menu.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index db2bfb1c40..fc0244b7da 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -21,7 +21,7 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- a(ui-sref='tasks',popover=env.t('tasks'),popover-placement='right',popover-trigger='mouseenter') span.glyphicon.glyphicon-check.white li.dropdown - a.dropdown-toggle(popover='Profile',popover-placement='right',popover-trigger='mouseenter') + a.dropdown-toggle(popover='User',popover-placement='right',popover-trigger='mouseenter') span.glyphicon.glyphicon-user.white span.caret ul.dropdown-menu @@ -52,7 +52,7 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- li a(ui-sref='options.social.hall') Hall li.dropdown - a.dropdown-toggle(popover='Market',popover-placement='right',popover-trigger='mouseenter') + a.dropdown-toggle(popover='Inventory',popover-placement='right',popover-trigger='mouseenter') span.glyphicon.glyphicon-gift.white span.caret ul.dropdown-menu From 844dc93316477f1856918ebf61981e791733bc7d Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 13 Feb 2014 21:59:00 -0700 Subject: [PATCH 150/159] chore(jquery): use updated jquery directory location --- public/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/manifest.json b/public/manifest.json index ce7e2b6e8c..85e39cd970 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "app": { "js": [ - "bower_components/jquery/jquery.js", + "bower_components/jquery/dist/jquery.min.js", "bower_components/jquery.cookie/jquery.cookie.js", "bower_components/bootstrap-growl/jquery.bootstrap-growl.js", "bower_components/bootstrap-tour/build/js/bootstrap-tour.js", @@ -72,7 +72,7 @@ }, "static": { "js": [ - "bower_components/jquery/jquery.js", + "bower_components/jquery/dist/jquery.min.js", "bower_components/habitrpg-shared/dist/habitrpg-shared.js", "bower_components/angular/angular.js", "bower_components/angular-ui/build/angular-ui.js", From a33eabf20bdf856a8f7e80a8716c889086b21ff3 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Thu, 13 Feb 2014 22:50:13 -0700 Subject: [PATCH 151/159] chore(bower): angular upgrade => 1.2.12 --- bower.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 4af780151c..a6de245fda 100644 --- a/bower.json +++ b/bower.json @@ -17,9 +17,9 @@ "jquery": "~2.1.0", "jquery.cookie": "~1.4.0", "jquery-ui": "~1.10.3", - "angular": "~1.2.11", - "angular-sanitize": "~1.2.11", - "angular-resource": "~1.2.11", + "angular": "~1.2.12", + "angular-sanitize": "~1.2.12", + "angular-resource": "~1.2.12", "angular-ui-utils": "~0.1.0", "angular-ui-select2": "https://github.com/angular-ui/ui-select2.git#4469fd7a32eba2e28d5e3dd319b49e1ad090b167", "angular-bootstrap": "~0.10.0", @@ -42,6 +42,6 @@ "jquery-colorbox": "~1.4.36" }, "devDependencies": { - "angular-mocks": "~1.2.11" + "angular-mocks": "~1.2.12" } } From e241429cc3d2eca18d2f5a9726f6caa6270a1b02 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Fri, 14 Feb 2014 08:14:02 -0600 Subject: [PATCH 152/159] fix(toolbar): Tweak Settings drop-down "Site" was the best I could come up with for all the miscellany in Settings > Settings. --- views/shared/header/menu.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index fc0244b7da..060cfd1f41 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -70,7 +70,7 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- span.caret ul.dropdown-menu li - a(ui-sref='options.settings.settings') Settings + a(ui-sref='options.settings.settings') Site li a(ui-sref='options.settings.api') API li From 850c4fda9ab93367454071343b3be1dce064ed63 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 14 Feb 2014 10:33:10 -0700 Subject: [PATCH 153/159] fix(tags): span(type='submit') is invalid. But since you can't theme input-groups with input.input-group-addon, let's just make this an ng-click. fixes #2818 --- views/main/filters.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/main/filters.jade b/views/main/filters.jade index 923d61e2a6..e356e552e5 100644 --- a/views/main/filters.jade +++ b/views/main/filters.jade @@ -21,7 +21,7 @@ form.form-inline(ng-show='_editing', ng-submit='createTag(_newTag)') .input-group input.form-control.input-sm(type='text', ng-model='_newTag', placeholder=env.t('newTag')) - span.input-group-addon(type='submit') + span.input-group-addon(ng-click='createTag(_newTag)') =env.t('add') //

    1. li From 8f19f225f104960b3cf27e229a5571e014be697c Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 14 Feb 2014 18:35:21 +0100 Subject: [PATCH 154/159] fix(misc): some styles & translations --- Gruntfile.js | 8 ++++++- bower.json | 3 +++ views/options/profile.jade | 6 ++--- views/options/social/create-group.jade | 2 +- views/shared/header/avatar.jade | 1 + views/shared/header/menu.jade | 32 +++++++++++++------------- 6 files changed, 31 insertions(+), 21 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 05979dbbe5..d778230751 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -4,6 +4,8 @@ module.exports = function(grunt) { // Project configuration. grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + git_changelog: { minimal: { options: { @@ -81,7 +83,11 @@ module.exports = function(grunt) { } }, - nodemon: { dev: {} }, + nodemon: { + dev: { + script: '<%= pkg.main %>' + } + }, watch: { dev: { diff --git a/bower.json b/bower.json index a6de245fda..9bfab6d8d3 100644 --- a/bower.json +++ b/bower.json @@ -43,5 +43,8 @@ }, "devDependencies": { "angular-mocks": "~1.2.12" + }, + "resolutions": { + "angular": ">=1.2.0" } } diff --git a/views/options/profile.jade b/views/options/profile.jade index c9dc5b4575..18c0d72ef8 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -3,7 +3,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') .col-md-4 h3=env.t('bodyBody') small - | 2 / + | 2 / = ' ' + env.t('locked') h5=env.t('bodySize') @@ -27,7 +27,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') .col-md-4 h3=env.t('bodyHead') small - | 2 / + | 2 / = ' ' + env.t('locked') menu(type='list') // For special events code, see commit dfa27b3 @@ -86,7 +86,7 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') .col-md-4 h3=env.t('bodySkin') small - | 2 / + | 2 / = ' ' + env.t('locked') // skin li.customize-menu diff --git a/views/options/social/create-group.jade b/views/options/social/create-group.jade index 53c8879a02..bd2563cd76 100644 --- a/views/options/social/create-group.jade +++ b/views/options/social/create-group.jade @@ -5,7 +5,7 @@ label.control-label(for='new-group-name') | {{text}}  =env.t('name') - input.form-control#new-group-name.input-medium.option-content(required, type='text', placeholder='{{text}} Name', ng-model='newGroup.name') + input.form-control#new-group-name.input-medium.option-content(required, type='text', placeholder=('{{text}} ' + env.t('name')), ng-model='newGroup.name') .form-group label(for='new-group-description')=env.t('description') textarea.form-control#new-group-description.option-content(cols='3', placeholder=env.t('description'), ng-model='newGroup.description') diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index abc1c2fff8..971560d5af 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -48,4 +48,5 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( |  =env.t('lvl') | {{profile.stats.lvl}} + |  span.glyphicon.glyphicon-plus-sign(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn', {reLevel: "{{profile.achievements.rebirthLevel}}"})) diff --git a/views/shared/header/menu.jade b/views/shared/header/menu.jade index 060cfd1f41..ff9cbbc285 100644 --- a/views/shared/header/menu.jade +++ b/views/shared/header/menu.jade @@ -26,11 +26,11 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- span.caret ul.dropdown-menu li - a(ui-sref='options.profile.avatar') Avatar + a(ui-sref='options.profile.avatar')=env.t('avatar') li - a(ui-sref='options.profile.stats') Stats + a(ui-sref='options.profile.stats')=env.t('stats') li - a(ui-sref='options.profile.profile') Profile + a(ui-sref='options.profile.profile')=env.t('profile') li a(ng-click='logout()') span.glyphicon.glyphicon-share-alt @@ -42,41 +42,41 @@ nav.navbar.navbar-inverse(ng-controller='AuthCtrl',style='min-height:0px;margin- span.caret ul.dropdown-menu li - a(ui-sref='options.social.tavern') Tavern + a(ui-sref='options.social.tavern')=env.t('tavern') li - a(ui-sref='options.social.party') Party + a(ui-sref='options.social.party')=env.t('party') li - a(ui-sref='options.social.guilds') Guilds + a(ui-sref='options.social.guilds')=env.t('guilds') li - a(ui-sref='options.social.challenges') Challenges + a(ui-sref='options.social.challenges')=env.t('challenges') li - a(ui-sref='options.social.hall') Hall + a(ui-sref='options.social.hall')=env.t('hall') li.dropdown a.dropdown-toggle(popover='Inventory',popover-placement='right',popover-trigger='mouseenter') span.glyphicon.glyphicon-gift.white span.caret ul.dropdown-menu li - a(ui-sref='options.inventory.drops') Market + a(ui-sref='options.inventory.drops')=env.t('market') li - a(ui-sref='options.inventory.pets') Pets + a(ui-sref='options.inventory.pets')=env.t('mounts') li - a(ui-sref='options.inventory.mounts') Mounts + a(ui-sref='options.inventory.mounts')=env.t('mounts') li - a(ui-sref='options.inventory.equipment') Equipment + a(ui-sref='options.inventory.equipment')=env.t('equipment') li.dropdown a.dropdown-toggle(popover='Settings',popover-placement='right',popover-trigger='mouseenter') span.glyphicon.glyphicon-wrench.white span.caret ul.dropdown-menu li - a(ui-sref='options.settings.settings') Site + a(ui-sref='options.settings.settings')=env.t('site') li - a(ui-sref='options.settings.api') API + a(ui-sref='options.settings.api')=env.t('API') li - a(ui-sref='options.settings.export') Export + a(ui-sref='options.settings.export')=env.t('export') li - a(ui-sref='options.settings.subscription') Subscription + a(ui-sref='options.settings.subscription')=env.t('subscription') li.dropdown a.dropdown-toggle(popover='Help',popover-placement='right',popover-trigger='mouseenter') span.glyphicon.glyphicon-question-sign.white From e0193e36c3784242dcb93c3febfd5a7b98ab98a1 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 14 Feb 2014 18:43:18 +0100 Subject: [PATCH 155/159] chore(dependencies): update jquery parh --- bower.json | 3 --- public/manifest.json | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 9bfab6d8d3..a6de245fda 100644 --- a/bower.json +++ b/bower.json @@ -43,8 +43,5 @@ }, "devDependencies": { "angular-mocks": "~1.2.12" - }, - "resolutions": { - "angular": ">=1.2.0" } } diff --git a/public/manifest.json b/public/manifest.json index 85e39cd970..47ad0ed181 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "app": { "js": [ - "bower_components/jquery/dist/jquery.min.js", + "bower_components/jquery/query.min.js", "bower_components/jquery.cookie/jquery.cookie.js", "bower_components/bootstrap-growl/jquery.bootstrap-growl.js", "bower_components/bootstrap-tour/build/js/bootstrap-tour.js", From 00bece28d4dea85fb17907dc244b082ce403666f Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 14 Feb 2014 18:46:32 +0100 Subject: [PATCH 156/159] chore(dependencies): update jquery path --- public/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/manifest.json b/public/manifest.json index 47ad0ed181..b9cedef609 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "app": { "js": [ - "bower_components/jquery/query.min.js", + "bower_components/jquery/jquery.min.js", "bower_components/jquery.cookie/jquery.cookie.js", "bower_components/bootstrap-growl/jquery.bootstrap-growl.js", "bower_components/bootstrap-tour/build/js/bootstrap-tour.js", From 33b326b59685ea6e50f9950094d009460ce80094 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 14 Feb 2014 19:44:12 -0700 Subject: [PATCH 157/159] fix(challenges): better handling of deleted challenges. If !chal, break the task.challenge. Move the function into userController#score so we have access to next, etc. fixes #1883 --- src/controllers/user.js | 22 +++++++++++++++++++--- src/models/user.js | 16 ---------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index caaab30546..bd3011619e 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -89,10 +89,26 @@ api.score = function(req, res, next) { delta: delta, _tmp: user._tmp }, saved.toJSON().stats)); - }); - // if it's a challenge task, sync the score - user.syncScoreToChallenge(task, delta); + // If it's a challenge task, sync the score. Do it in the background, we've already sent down a response + // and the user doesn't care what happens back there + if (!task.challenge || !task.challenge.id || task.challenge.broken) return; + if (task.type == 'reward') return; // we don't want to update the reward GP cost + Challenge.findById(task.challenge.id, 'habits dailys todos rewards', function(err, chal){ + if (err) return next(err); + if (!chal) { + task.challenge.broken = 'CHALLENGE_DELETED'; + user.markModified('tasks'); + return user.save(); + } + var t = chal.tasks[task.id]; + if (!t) return chal.syncToUser(user); // this task was removed from the challenge, notify user + t.value += delta; + if (t.type == 'habit' || t.type == 'daily') + t.history.push({value: t.value, date: +new Date}); + chal.save(); + }); + }); }; /** diff --git a/src/models/user.js b/src/models/user.js index 93800629bf..9c1c5ba0cc 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -373,22 +373,6 @@ UserSchema.pre('save', function(next) { next(); }); -UserSchema.methods.syncScoreToChallenge = function(task, delta){ - if (!task.challenge || !task.challenge.id || task.challenge.broken) return; - if (task.type == 'reward') return; // we don't want to update the reward GP cost - var self = this; - Challenge.findById(task.challenge.id, function(err, chal){ - if (err) throw err; - var t = chal.tasks[task.id]; - if (!t) return chal.syncToUser(self); // this task was removed from the challenge, notify user - t.value += delta; - if (t.type == 'habit' || t.type == 'daily') { - t.history.push({value: t.value, date: +new Date}); - } - chal.save(); - }); -} - UserSchema.methods.unlink = function(options, cb) { var cid = options.cid, keep = options.keep, tid = options.tid; var self = this; From 191b789d760a7bdc7d1b53727f6127b677c78c94 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 14 Feb 2014 20:04:59 -0700 Subject: [PATCH 158/159] fix(bower): updated jquery directory --- public/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/manifest.json b/public/manifest.json index b9cedef609..85e39cd970 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "app": { "js": [ - "bower_components/jquery/jquery.min.js", + "bower_components/jquery/dist/jquery.min.js", "bower_components/jquery.cookie/jquery.cookie.js", "bower_components/bootstrap-growl/jquery.bootstrap-growl.js", "bower_components/bootstrap-tour/build/js/bootstrap-tour.js", From 78fcdd20c9ab676f9353751659e91aa6bc53980a Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 14 Feb 2014 20:37:16 -0700 Subject: [PATCH 159/159] chore(tests): tests to go along with #1883 challenges fix --- src/controllers/user.js | 1 - test/api.mocha.js | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/controllers/user.js b/src/controllers/user.js index bd3011619e..b8979639c4 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -98,7 +98,6 @@ api.score = function(req, res, next) { if (err) return next(err); if (!chal) { task.challenge.broken = 'CHALLENGE_DELETED'; - user.markModified('tasks'); return user.save(); } var t = chal.tasks[task.id]; diff --git a/test/api.mocha.js b/test/api.mocha.js index 9b69fd461e..3f4f20d6f2 100644 --- a/test/api.mocha.js +++ b/test/api.mocha.js @@ -253,6 +253,33 @@ describe('API', function () { }); }); + it('Challenge deleted, breaks task link', function (done) { + var itThis = this; + request.del(baseURL + "/challenges/" + challenge._id).end(function (res) { + User.findById(user._id, function(err,user){ + var len = user.dailys.length- 1, + daily = user.dailys[user.dailys.length-1]; + expect(daily.challenge.broken).to.be('CHALLENGE_DELETED'); + + // Now let's handle if challenge was deleted, but didn't get to update all the users (an error) + var unset = {$unset:{}}; + unset['$unset']['dailys.' + len + '.challenge.broken'] = 1; + User.findByIdAndUpdate(user._id,unset,function(err,user){ + expect(err).to.not.be.ok(); + expect(user.dailys[len].challenge.broken).to.not.be.ok(); + request.post(baseURL + "/user/tasks/" + daily.id + "/up").end(function (res) { + setTimeout(function(){ + User.findById(user._id,function(err,user){ + expect(user.dailys[len].challenge.broken).to.be('CHALLENGE_DELETED'); + done() + }) + }, 100); // we need to wait for challenge to update user, it's a background job for perf reasons + }) + }) + }) + }) + }); + it('Admin creates a challenge', function (done) { User.findByIdAndUpdate(_id, {$set:{'contributor.admin':true}}, function (err,_user) { expect(err).to.not.be.ok();