Merge branch 'develop' into sabrecat/party-page
Conflicts: common/dist/sprites/habitrpg-shared.css common/dist/sprites/spritesmith0.png common/dist/sprites/spritesmith2.png common/dist/sprites/spritesmith3.css common/dist/sprites/spritesmith3.png common/dist/sprites/spritesmith4.css common/dist/sprites/spritesmith4.png
This commit is contained in:
@@ -11,7 +11,10 @@
|
||||
restrict: 'A',
|
||||
link: function($scope, element, attrs) {
|
||||
element.on('click', function(event) {
|
||||
$scope._expandedMenu = null;
|
||||
if ($scope.$parent._expandedMenu) {
|
||||
$scope.$parent._expandedMenu.menu = null;
|
||||
}
|
||||
$scope._expandedMenu.menu = null;
|
||||
$scope.$apply()
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
restrict: 'A',
|
||||
link: function($scope, element, attrs) {
|
||||
element.on('click', function(event) {
|
||||
$scope._expandedMenu = ($scope._expandedMenu === attrs.menu) ? null : attrs.menu;
|
||||
$scope._expandedMenu = $scope._expandedMenu || {};
|
||||
$scope._expandedMenu.menu = ($scope._expandedMenu.menu === attrs.menu) ? null : attrs.menu;
|
||||
$scope.$apply()
|
||||
});
|
||||
}
|
||||
|
||||
+4
-4
@@ -3,18 +3,18 @@
|
||||
(function(){
|
||||
angular
|
||||
.module('habitrpg')
|
||||
.directive('taskFocus', taskFocus);
|
||||
.directive('focusElement', focusElement);
|
||||
|
||||
taskFocus.$inject = ['$timeout'];
|
||||
focusElement.$inject = ['$timeout'];
|
||||
|
||||
/**
|
||||
* Directive that places focus on the element it is applied to when the
|
||||
* expression it binds to evaluates to true.
|
||||
*/
|
||||
|
||||
function taskFocus($timeout) {
|
||||
function focusElement($timeout) {
|
||||
return function($scope, elem, attrs) {
|
||||
$scope.$watch(attrs.taskFocus, function(newVal) {
|
||||
$scope.$watch(attrs.focusElement, function(newVal) {
|
||||
if (newVal) {
|
||||
$timeout(function() {
|
||||
elem[0].focus();
|
||||
@@ -1,25 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
(function(){
|
||||
angular
|
||||
.module('habitrpg')
|
||||
.directive('focusMe', focusMe);
|
||||
|
||||
focusMe.$inject = [
|
||||
'$timeout',
|
||||
'$parse'
|
||||
];
|
||||
|
||||
function focusMe($timeout, $parse) {
|
||||
return {
|
||||
link: function($scope, element, attrs) {
|
||||
var model = $parse(attrs.focusMe);
|
||||
$scope.$watch(model, function(value) {
|
||||
$timeout(function() {
|
||||
element[0].focus();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}());
|
||||
@@ -60,7 +60,6 @@
|
||||
|
||||
"js/directives/close-menu.directive.js",
|
||||
"js/directives/expand-menu.directive.js",
|
||||
"js/directives/focus-me.directive.js",
|
||||
"js/directives/from-now.directive.js",
|
||||
"js/directives/habitrpg-tasks.directive.js",
|
||||
"js/directives/hrpg-sort-checklist.directive.js",
|
||||
@@ -68,7 +67,7 @@
|
||||
"js/directives/hrpg-sort-tasks.directive.js",
|
||||
"js/directives/popover-html-popup.directive.js",
|
||||
"js/directives/popover-html.directive.js",
|
||||
"js/directives/task-focus.directive.js",
|
||||
"js/directives/focus-element.directive.js",
|
||||
"js/directives/when-scrolled.directive.js",
|
||||
|
||||
"js/controllers/authCtrl.js",
|
||||
|
||||
@@ -35,7 +35,7 @@ function nonApiUrl(req) {
|
||||
|
||||
module.exports.forceHabitica = function(req, res, next) {
|
||||
if (IS_PROD && !ignoreRedirect && !isProxied(req) && nonApiUrl(req)) {
|
||||
return res.redirect(BASE_URL + req.url);
|
||||
return res.redirect(301, BASE_URL + req.url);
|
||||
}
|
||||
next();
|
||||
};
|
||||
|
||||
@@ -251,7 +251,7 @@ script(id='partials/options.profile.profile.html', type='text/ng-template')
|
||||
| -
|
||||
|
||||
h4=env.t('displayPhoto')
|
||||
img.image-rendering-auto(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}')
|
||||
img.img-rendering-auto(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}')
|
||||
span.muted(ng-hide='profile.profile.imageUrl') -
|
||||
=env.t('none')
|
||||
| -
|
||||
|
||||
@@ -191,7 +191,7 @@ script(type='text/ng-template', id='partials/options.settings.api.html')
|
||||
h6=env.t('APIToken')
|
||||
pre.prettyprint {{user.apiToken}}
|
||||
h6=env.t('qrCode')
|
||||
img.image-rendering-auto(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')
|
||||
img.img-rendering-auto(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')
|
||||
|
||||
hr
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter
|
||||
select#group-leader-selection(ng-model='group._newLeader', ng-options='member.profile.name for member in group.members')
|
||||
|
||||
div(ng-show='!group._editing')
|
||||
img.image-rendering-auto.pull-right(ng-show='group.logo', ng-src='{{group.logo}}')
|
||||
img.img-rendering-auto.pull-right(ng-show='group.logo', ng-src='{{group.logo}}')
|
||||
markdown(text='group.description')
|
||||
br
|
||||
p=env.t('groupLeader')
|
||||
|
||||
@@ -111,7 +111,7 @@ script(type='text/ng-template', id='modals/copyChatToDo.html')
|
||||
.form-group
|
||||
input.form-control(type='text',ng-model='text', ng-model-options="{debounce: 1000}")
|
||||
.form-group
|
||||
textarea.form-control(rows='5',ng-model='notes', ng-model-options="{debounce: 1000}", focus-me)
|
||||
textarea.form-control(rows='5',ng-model='notes', ng-model-options="{debounce: 1000}", focus-element='true')
|
||||
|
||||
hr
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
.toolbar-container
|
||||
ul.toolbar-mobile-nav
|
||||
li.toolbar-mobile
|
||||
a(data-expand-menu, menu="mobile", ng-class='{active: _expandedMenu=="mobile"}')
|
||||
a(data-expand-menu, menu='mobile', ng-class='{active: _expandedMenu.menu === "mobile"}')
|
||||
span.glyphicon.glyphicon-align-justify
|
||||
div(ng-show='_expandedMenu=="mobile"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "mobile"', data-close-menu)
|
||||
h4=env.t('menu')
|
||||
div
|
||||
ul.toolbar-submenu
|
||||
@@ -23,7 +23,7 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
li
|
||||
a(ui-sref='options.social.inbox')
|
||||
span.badge.badge-danger(ng-if='user.inbox.newMessages') {{user.inbox.newMessages}}
|
||||
=env.t("inbox")
|
||||
=env.t('inbox')
|
||||
li
|
||||
a(ui-sref='options.social.tavern')=env.t('tavern')
|
||||
li
|
||||
@@ -51,22 +51,22 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
a(ui-sref='options.inventory.seasonalshop')=env.t('seasonalShop')
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(target="_blank" ng-href='http://data.habitrpg.com?uuid={{user._id}}')=env.t('dataTool')
|
||||
a(target='_blank' ng-href='http://data.habitrpg.com?uuid={{user._id}}')=env.t('dataTool')
|
||||
li
|
||||
a(ui-sref='options.settings.export')=env.t('exportData')
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(target="_blank" href='http://habitica.wikia.com/wiki/')=env.t('overview')
|
||||
a(target='_blank' href='http://habitica.wikia.com/wiki/')=env.t('overview')
|
||||
li
|
||||
a(target="_blank" href='https://github.com/HabitRPG/habitrpg/issues/2760')=env.t('reportBug')
|
||||
a(target='_blank' href='https://github.com/HabitRPG/habitrpg/issues/2760')=env.t('reportBug')
|
||||
li
|
||||
a(target="_blank" href='https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a')=env.t('askQuestion')
|
||||
a(target='_blank' href='https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a')=env.t('askQuestion')
|
||||
li
|
||||
a(target="_blank" href='https://trello.com/c/odmhIqyW/440-read-first-table-of-contents')=env.t('requestAF')
|
||||
a(target='_blank' href='https://trello.com/c/odmhIqyW/440-read-first-table-of-contents')=env.t('requestAF')
|
||||
li
|
||||
a(target="_blank" href='http://habitica.wikia.com/wiki/Contributing_to_Habitica')=env.t('contributeToHRPG')
|
||||
a(target='_blank' href='http://habitica.wikia.com/wiki/Contributing_to_Habitica')=env.t('contributeToHRPG')
|
||||
li
|
||||
a(target="_blank" href='http://habitica.wikia.com/wiki/FAQ')=env.t('FAQ')
|
||||
a(target='_blank' href='http://habitica.wikia.com/wiki/FAQ')=env.t('FAQ')
|
||||
ul.toolbar-controls
|
||||
li.toolbar-subscribe-button
|
||||
button(ng-if='!user.purchased.plan.customerId',ui-sref='options.settings.subscription',popover-trigger='mouseenter',popover-placement='bottom',popover-title=env.t('subscriptions'),popover=env.t('subDescription'),popover-append-to-body='true')=env.t('subscribe')
|
||||
@@ -79,9 +79,9 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
li.toolbar-button-dropdown
|
||||
a(ui-sref='options.profile.avatar', data-close-menu)
|
||||
span=env.t('user')
|
||||
a(ng-class='{active: _expandedMenu == "avatar"}', data-expand-menu, menu='avatar')
|
||||
a(ng-class='{active: _expandedMenu.menu === "avatar"}', data-expand-menu, menu='avatar')
|
||||
span ☰
|
||||
div(ng-show='_expandedMenu == "avatar"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "avatar"', data-close-menu)
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(ui-sref='options.profile.avatar')=env.t('avatar')
|
||||
@@ -96,9 +96,9 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
span.badge.badge-danger {{user.inbox.newMessages}}
|
||||
a(ui-sref='options.social.tavern', data-close-menu)
|
||||
span=env.t('social')
|
||||
a(ng-class='{active: _expandedMenu == "social"}', data-expand-menu, menu='social')
|
||||
a(ng-class='{active: _expandedMenu.menu === "social"}', data-expand-menu, menu='social')
|
||||
span ☰
|
||||
div(ng-show='_expandedMenu == "social"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "social"', data-close-menu)
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(ui-sref='options.social.inbox')
|
||||
@@ -117,9 +117,9 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
li.toolbar-button-dropdown
|
||||
a(ui-sref='options.inventory.drops', data-close-menu)
|
||||
span=env.t('inventory')
|
||||
a(ng-class='{active: _expandedMenu == "inventory"}' data-expand-menu, menu='inventory')
|
||||
a(ng-class='{active: _expandedMenu.menu === "inventory"}' data-expand-menu, menu='inventory')
|
||||
span ☰
|
||||
div(ng-show='_expandedMenu == "inventory"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "inventory"', data-close-menu)
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(ui-sref='options.inventory.drops')=env.t('market')
|
||||
@@ -136,36 +136,36 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
li
|
||||
a(ui-sref='options.inventory.seasonalshop')=env.t('seasonalShop')
|
||||
li.toolbar-button-dropdown
|
||||
a(target="_blank" ng-href='http://data.habitrpg.com?uuid={{user._id}}', data-close-menu)
|
||||
a(target='_blank' ng-href='http://data.habitrpg.com?uuid={{user._id}}', data-close-menu)
|
||||
span=env.t('data')
|
||||
a(ng-class='{active: _expandedMenu == "data"}', data-expand-menu, menu='data')
|
||||
a(ng-class='{active: _expandedMenu.menu === "data"}', data-expand-menu, menu='data')
|
||||
span ☰
|
||||
div(ng-show='_expandedMenu == "data"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "data"', data-close-menu)
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(target="_blank" ng-href='http://data.habitrpg.com?uuid={{user._id}}')=env.t('dataTool')
|
||||
a(target='_blank' ng-href='http://data.habitrpg.com?uuid={{user._id}}')=env.t('dataTool')
|
||||
li
|
||||
a(ui-sref='options.settings.export')=env.t('exportData')
|
||||
li.toolbar-button-dropdown.highlight
|
||||
a(target="_blank" href='http://habitica.wikia.com/wiki/')
|
||||
a(target='_blank' href='http://habitica.wikia.com/wiki/')
|
||||
span.glyphicon.glyphicon-question-sign
|
||||
span=env.t('help')
|
||||
a(ng-class='{active: _expandedMenu == "help"}', data-expand-menu, menu='help')
|
||||
a(ng-class='{active: _expandedMenu.menu === "help"}', data-expand-menu, menu='help')
|
||||
span ☰
|
||||
div(ng-show='_expandedMenu == "help"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "help"', data-close-menu)
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(target="_blank" href='http://habitica.wikia.com/wiki/')=env.t('overview')
|
||||
a(target='_blank' href='http://habitica.wikia.com/wiki/')=env.t('overview')
|
||||
li
|
||||
a(target="_blank" href='https://github.com/HabitRPG/habitrpg/issues/2760')=env.t('reportBug')
|
||||
a(target='_blank' href='https://github.com/HabitRPG/habitrpg/issues/2760')=env.t('reportBug')
|
||||
li
|
||||
a(target="_blank" href='https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a')=env.t('askQuestion')
|
||||
a(target='_blank' href='https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a')=env.t('askQuestion')
|
||||
li
|
||||
a(target="_blank" href='https://trello.com/c/odmhIqyW/440-read-first-table-of-contents')=env.t('requestAF')
|
||||
a(target='_blank' href='https://trello.com/c/odmhIqyW/440-read-first-table-of-contents')=env.t('requestAF')
|
||||
li
|
||||
a(target="_blank" href='http://habitica.wikia.com/wiki/Contributing_to_Habitica')=env.t('contributeToHRPG')
|
||||
a(target='_blank' href='http://habitica.wikia.com/wiki/Contributing_to_Habitica')=env.t('contributeToHRPG')
|
||||
li
|
||||
a(target="_blank" href='http://habitica.wikia.com/wiki/FAQ')=env.t('FAQ')
|
||||
a(target='_blank' href='http://habitica.wikia.com/wiki/FAQ')=env.t('FAQ')
|
||||
ul.toolbar-subscribe(ng-if='!user.purchased.plan.customerId')
|
||||
li.toolbar-subscribe-button
|
||||
button.highlight(ui-sref='options.settings.subscription',popover-trigger='mouseenter',popover-placement='bottom',popover-title=env.t('subscriptions'),popover=env.t('subDescription'),popover-append-to-body='true')=env.t('subscribe')
|
||||
@@ -173,35 +173,35 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
li.toolbar-notifs
|
||||
a(data-expand-menu, menu='notifs')
|
||||
span.glyphicon(ng-class='iconClasses()')
|
||||
div(ng-show='_expandedMenu=="notifs"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "notifs"')
|
||||
h4=env.t('notifications')
|
||||
div
|
||||
ul.toolbar-notifs-notifs
|
||||
li.toolbar-notifs-no-messages(ng-if='hasNoNotifications()')=env.t('noNotifications')
|
||||
li(ng-if='user.purchased.plan.mysteryItems.length')
|
||||
a(ng-click='$state.go("options.inventory.drops"); expandMenu(null)')
|
||||
a(ng-click='$state.go("options.inventory.drops"); ', data-close-menu)
|
||||
span.glyphicon.glyphicon-gift
|
||||
span=env.t('newSubscriberItem')
|
||||
li(ng-if='user.invitations.party.id')
|
||||
a(ui-sref='options.social.party')
|
||||
a(ui-sref='options.social.party', data-close-menu)
|
||||
span.glyphicon.glyphicon-user
|
||||
span=env.t('invitedTo', {name: '{{user.invitations.party.name}}'})
|
||||
li(ng-if='user.flags.cardReceived')
|
||||
a(ng-click='$state.go("options.inventory.drops"); expandMenu(null)')
|
||||
a(ng-click='$state.go("options.inventory.drops"); ', data-close-menu)
|
||||
span.glyphicon.glyphicon-envelope
|
||||
span=env.t('cardReceived')
|
||||
a(ng-click='clearCards()', popover=env.t('clear'),popover-placement='right',popover-trigger='mouseenter',popover-append-to-body='true')
|
||||
span.glyphicon.glyphicon-remove-circle
|
||||
li(ng-repeat='guild in user.invitations.guilds')
|
||||
a(ui-sref='options.social.guilds.public')
|
||||
a(ui-sref='options.social.guilds.public', data-close-menu)
|
||||
span.glyphicon.glyphicon-user
|
||||
span=env.t('invitedTo', {name: '{{guild.name}}'})
|
||||
li(ng-if='user.flags.classSelected && !user.preferences.disableClasses && user.stats.points')
|
||||
a(ui-sref='options.profile.stats')
|
||||
a(ui-sref='options.profile.stats', data-close-menu)
|
||||
span.glyphicon.glyphicon-plus-sign
|
||||
span=env.t('haveUnallocated', {points: '{{user.stats.points}}'})
|
||||
li(ng-repeat='(k,v) in user.newMessages', ng-if='v.value')
|
||||
a(ng-click='k==party._id ? $state.go("options.social.party") : $state.go("options.social.guilds.detail",{gid:k}); expandMenu(null)')
|
||||
a(ng-click='k === party._id ? $state.go("options.social.party") : $state.go("options.social.guilds.detail",{gid:k}); ', data-close-menu)
|
||||
span.glyphicon.glyphicon-comment
|
||||
span {{v.name}}
|
||||
a(ng-click='clearMessages(k)', popover=env.t('clear'),popover-placement='right',popover-trigger='mouseenter',popover-append-to-body='true')
|
||||
@@ -211,16 +211,16 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
li.toolbar-controls-button
|
||||
a(data-close-menu)=env.t('close')
|
||||
li.toolbar-audio
|
||||
a(data-expand-menu, menu="audio")
|
||||
span.glyphicon(ng-class="{'glyphicon-volume-off':user.preferences.sound=='off', 'glyphicon-volume-up':user.preferences.sound!='off'}")
|
||||
div(ng-show='_expandedMenu=="audio"',style='min-width:150px', data-close-menu)
|
||||
a(data-expand-menu, menu='audio')
|
||||
span.glyphicon(ng-class="{'glyphicon-volume-off':user.preferences.sound === 'off', 'glyphicon-volume-up':user.preferences.sound!='off'}")
|
||||
div(ng-show='_expandedMenu.menu === "audio"',style='min-width:150px', data-close-menu)
|
||||
h4=env.t('audioTheme')
|
||||
div
|
||||
ul.toolbar-submenu
|
||||
// Using [{k,v}] instead of {k:v,k:v} to maintain order ('off' at top)
|
||||
for theme in ['off','danielTheBard', 'wattsTheme', 'gokulTheme']
|
||||
li
|
||||
a(ng-class="{'bg-primary':user.preferences.sound=='#{theme}'}", ng-click="set({'preferences.sound':'#{theme}'})")=env.t('audioTheme_'+theme)
|
||||
a(ng-class="{'bg-primary':user.preferences.sound === '# {theme}'}", ng-click="set({'preferences.sound':'#{theme}'})")=env.t('audioTheme_'+theme)
|
||||
ul.toolbar-controls
|
||||
li.toolbar-controls-button
|
||||
a(data-close-menu)=env.t('close')
|
||||
@@ -229,9 +229,9 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
a(ng-click='User.sync()', popover=env.t('sync'),popover-placement='bottom',popover-trigger='mouseenter')
|
||||
span.glyphicon.glyphicon-refresh
|
||||
li.toolbar-settings
|
||||
a(data-expand-menu, menu="settings")
|
||||
a(data-expand-menu, menu='settings')
|
||||
span.glyphicon.glyphicon-cog
|
||||
div(ng-show='_expandedMenu=="settings"', data-close-menu)
|
||||
div(ng-show='_expandedMenu.menu === "settings"', data-close-menu)
|
||||
h4=env.t('settings')
|
||||
div
|
||||
ul.toolbar-submenu
|
||||
@@ -252,9 +252,9 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
a(ui-sref='options.settings.notifications')=env.t('notifications')
|
||||
ul.toolbar-submenu
|
||||
li
|
||||
a(href="http://habitica.wikia.com/wiki/FAQ", target='_blank')=env.t('FAQ')
|
||||
a(href='http://habitica.wikia.com/wiki/FAQ', target='_blank')=env.t('FAQ')
|
||||
li
|
||||
a(href="https://vimeo.com/57654086", target='_blank')=env.t('tutorials')
|
||||
a(href='https://vimeo.com/57654086', target='_blank')=env.t('tutorials')
|
||||
ul.toolbar-controls
|
||||
li.toolbar-controls-button
|
||||
a(data-close-menu)=env.t('close')
|
||||
@@ -271,10 +271,10 @@ nav.toolbar(ng-controller='MenuCtrl')
|
||||
span.shop_silver
|
||||
span {{Shared.silver(user.stats.gp)}}
|
||||
|
||||
ul.toolbar-bailey(ng-class='{inactive: !_expandedMenu}')
|
||||
ul.toolbar-bailey(ng-class='{inactive: !_expandedMenu.menu}')
|
||||
li.toolbar-bailey-container(ng-if='user.flags.tour.intro!=-2')
|
||||
.npc_justin_head.npc_bailey_head(popover="Continue Tour", popover-trigger='mouseenter', popover-placement='bottom', ng-click='Guide.goto("intro", user.flags.tour.intro, true)')
|
||||
.npc_justin_head.npc_bailey_head(popover='Continue Tour', popover-trigger='mouseenter', popover-placement='bottom', ng-click='Guide.goto("intro", user.flags.tour.intro, true)')
|
||||
|
||||
ul.toolbar-bailey(ng-class='{inactive: !_expandedMenu}')
|
||||
ul.toolbar-bailey(ng-class='{inactive: !_expandedMenu.menu}')
|
||||
li.toolbar-bailey-container(ng-if='user.flags.newStuff')
|
||||
.npc_bailey.npc_bailey_head(popover=env.t('psst'), popover-trigger='mouseenter', popover-placement='right', ng-click='openModal("newStuff",{size:"lg"})')
|
||||
|
||||
@@ -7,7 +7,7 @@ script(type='text/ng-template', id='modals/member.html')
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-6
|
||||
img.image-rendering-auto(ng-show='::profile.profile.imageUrl', ng-src='{{::profile.profile.imageUrl}}')
|
||||
img.img-rendering-auto(ng-show='::profile.profile.imageUrl', ng-src='{{::profile.profile.imageUrl}}')
|
||||
markdown(ng-show='::profile.profile.blurb', text='::profile.profile.blurb')
|
||||
ul.muted.list-unstyled(ng-if='::profile.auth.timestamps')
|
||||
li {{profile._id}}
|
||||
@@ -47,7 +47,7 @@ script(type='text/ng-template', id='modals/private-message.html')
|
||||
.modal-header
|
||||
h4=env.t('pmHeading', {name: "{{profile.profile.name}}"})
|
||||
.modal-body
|
||||
textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message', focus-me)
|
||||
textarea.form-control(type='text',rows='5',ui-keydown='{"meta-enter":"sendPrivateMessage(profile._id, _message)"}',placeholder=env.t('needsTextPlaceholder'),ng-model='_message', focus-element='true')
|
||||
include ../formatting-help
|
||||
.modal-footer
|
||||
//- Due to a quirk in Bootstrap UI, we need to wrap this so the tooltip can
|
||||
|
||||
@@ -1,17 +1,50 @@
|
||||
h5 8/27/2015 - OFFICIAL BACK TO SCHOOL ADVICE CHALLENGE
|
||||
h5 NEW ITEMS IN THE ENCHANTED ARMOIRE AND SEPTEMBER BACKGROUNDS!
|
||||
hr
|
||||
tr
|
||||
td
|
||||
.promo_backtoschool.pull-right
|
||||
h5 Official Back to School Advice Challenge!
|
||||
p We've launched another Official Challenge: the Back To School Advice Challenge! Use social media to tell us how you use Habitica to improve study habits, share stories of scholarly success with the app, or just give us your advice on using Habitica to be the best you can be.
|
||||
.background_tavern.pull-right
|
||||
h5 September Backgrounds Revealed
|
||||
p There are three new avatar backgrounds in the <a href='/#/options/profile/backgrounds'>Background Shop</a>! Now your avatar can visit the Habitica Tavern, shop in the Habitica Market, or ride mounts in the Habitica Stable!
|
||||
tr
|
||||
td
|
||||
.promo_enchanted_armoire_201509.pull-right
|
||||
h5 New Items in the Enchanted Armoire!
|
||||
p There is new equipment in the Enchanted Armoire, a 100 GP Reward in the Rewards Column which unlocks after you've attained Ultimate Gear!
|
||||
br
|
||||
p The contest ends on September 27th, and the 10 winners will each get 30 Gems! For the full rules, <a href='/#/options/groups/challenges/533cac3f-f431-424f-9eaa-4d509f015a75'>check out the challenge here</a>.
|
||||
p Click on the Enchanted Armoire for a random chance at special Equipment, including the Yellow Hairbow, Red Floppy Hat, Gold Winged Staff, and the Plague Doctor Item Set! It may also give you random XP or food items. We'll be adding new equipment to it during the first week of each month, but even when you've exhausted the current supply, you can keep clicking for a chance at food and XP.
|
||||
br
|
||||
p Now go spend all that accumulated gold! May the Random Number Generator smile upon you...
|
||||
p.small.muted by Lemoness and SabreCat
|
||||
p.small.muted Art by Starsystemic and Kiwibot
|
||||
|
||||
hr
|
||||
a(href='/static/old-news', target='_blank') Read older news
|
||||
|
||||
mixin oldNews
|
||||
h5 LAST CHANCE FOR CHEETAH COSTUME! COSTUME CHALLENGE ANNOUNCED!
|
||||
tr
|
||||
td
|
||||
.promo_mystery_201508.pull-right
|
||||
h5 Last Chance for Cheetah Costume Set
|
||||
p Reminder: this is the final day to <a href='/#/options/settings/subscription'>subscribe</a> and receive the Cheetah Costume Item Set! If you want the Cheetah Hat or the Cheetah Costume, now's the time. Thanks so much for your support - it's your generosity that keeps Habitica alive.
|
||||
tr
|
||||
td
|
||||
h5 Get Ready for the Community Costume Challenge!
|
||||
p On October 1st, we will launch the second annual Community Costume Challenge! Dress up in real-life versions of your avatar's armor to receive a special badge. (No, just wearing a colored shirt doesn't count. Where's the fun in that?)
|
||||
br
|
||||
p We're announcing the Challenge early so that people will have time to prepare costumes. You can see some of the excellent costumes from last year <a href='http://blog.habitrpg.com/tagged/cosplay' target='_blank'>here</a>.
|
||||
br
|
||||
p Instructions on how to take part in the CCC will be posted on October 1st. We can't wait to see your costumes!
|
||||
|
||||
h5 8/27/2015 - OFFICIAL BACK TO SCHOOL ADVICE CHALLENGE
|
||||
hr
|
||||
tr
|
||||
td
|
||||
.promo_backtoschool.pull-right
|
||||
h5 Official Back to School Advice Challenge!
|
||||
p We've launched another Official Challenge: the Back To School Advice Challenge! Use social media to tell us how you use Habitica to improve study habits, share stories of scholarly success with the app, or just give us your advice on using Habitica to be the best you can be.
|
||||
br
|
||||
p The contest ends on September 27th, and the 10 winners will each get 30 Gems! For the full rules, <a href='/#/options/groups/challenges/533cac3f-f431-424f-9eaa-4d509f015a75'>check out the challenge here</a>.
|
||||
h5 8/24/2015 - AUGUST SUBSCRIBER ITEM SET: CHEETAH COSTUME!
|
||||
tr
|
||||
td
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
form.task-add(name='new{{list.type}}form', ng-hide='obj._locked', ng-submit='addTask(obj[list.type+"s"],list)', novalidate)
|
||||
textarea(rows='6', task-focus='list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolderBulk}}', ng-if='list.bulk', ui-keydown='{"meta-enter ctrl-enter":"addTask(obj[list.type+\'s\'],list)"}', required)
|
||||
input(type='text', task-focus='!list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolder}}', ng-if='!list.bulk', required)
|
||||
textarea(rows='6', focus-element='list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolderBulk}}', ng-if='list.bulk', ui-keydown='{"meta-enter ctrl-enter":"addTask(obj[list.type+\'s\'],list)"}', required)
|
||||
input(type='text', focus-element='!list.bulk && list.focus', ng-model='list.newTask', placeholder='{{list.placeHolder}}', ng-if='!list.bulk', required)
|
||||
button(type='submit', ng-disabled='new{{list.type}}form.$invalid')
|
||||
div.empty-task-notification( ng-show='new{{list.type}}form.$invalid', tooltip=env.t("emptyTask") )
|
||||
span.glyphicon.glyphicon-plus
|
||||
|
||||
@@ -15,16 +15,16 @@ block content
|
||||
.row
|
||||
.col-md-6
|
||||
a.gallery(href='/marketing/screenshot.png', title=env.t('marketing1Header'))
|
||||
img.image-rendering-auto(src='/marketing/screenshot.png')
|
||||
img.img-rendering-auto(src='/marketing/screenshot.png')
|
||||
p.lead=env.t('marketing1Lead1')
|
||||
.col-md-6
|
||||
|
||||
a.gallery(href='/marketing/gear.png', title=env.t('marketing1Lead2Title'))
|
||||
img.image-rendering-auto(src='/marketing/gear.png')
|
||||
img.img-rendering-auto(src='/marketing/gear.png')
|
||||
p.lead!=env.t('marketing1Lead2')
|
||||
|
||||
a.gallery(href='/marketing/drops.png', title=env.t('marketing1Lead3Title'))
|
||||
img.image-rendering-auto(src='/marketing/drops.png',style='max-height:200px')
|
||||
img.img-rendering-auto(src='/marketing/drops.png',style='max-height:200px')
|
||||
p.lead!=env.t('marketing1Lead3')
|
||||
|
||||
// TODO achievements
|
||||
@@ -35,7 +35,7 @@ block content
|
||||
.row
|
||||
.col-md-6
|
||||
a.gallery(href='/marketing/guild.png', title=env.t('marketing2Header'))
|
||||
img.image-rendering-auto(src='/marketing/guild.png')
|
||||
img.img-rendering-auto(src='/marketing/guild.png')
|
||||
p.lead=env.t('marketing2Lead1')
|
||||
|
||||
a.gallery(href='/common/img/sprites/spritesmith/quests/quest_vice3.png', title=env.t('marketing2Lead2Title'))
|
||||
@@ -43,7 +43,7 @@ block content
|
||||
p.lead!=env.t('marketing2Lead2')
|
||||
.col-md-6
|
||||
a.gallery(href='/marketing/challenge.png', title=env.t('challenges'))
|
||||
img.image-rendering-auto(src='/marketing/challenge.png')
|
||||
img.img-rendering-auto(src='/marketing/challenge.png')
|
||||
p.lead!=env.t('marketing2Lead3')
|
||||
|
||||
hr.clearfix
|
||||
@@ -52,11 +52,11 @@ block content
|
||||
.row
|
||||
.col-md-6
|
||||
a.gallery(href='/marketing/android_iphone.png', title=env.t('marketing3LeadTitle'))
|
||||
img.image-rendering-auto(src='/marketing/android_iphone.png',style='box-shadow:none;')
|
||||
img.img-rendering-auto(src='/marketing/android_iphone.png',style='box-shadow:none;')
|
||||
p.lead!=env.t('marketing3Lead1')
|
||||
.col-md-6
|
||||
a.gallery(href='/marketing/integration.png', title=env.t('marketing3LeadTitle'))
|
||||
img.image-rendering-auto(src='/marketing/integration.png')
|
||||
img.img-rendering-auto(src='/marketing/integration.png')
|
||||
p.lead!=env.t('marketing3Lead2')
|
||||
|
||||
hr.clearfix
|
||||
@@ -74,7 +74,7 @@ block content
|
||||
.row
|
||||
.col-md-6.col-md-offset-3
|
||||
h3=env.t('marketing4Lead3Title')
|
||||
img.image-rendering-auto(src='/marketing/lefnire.png')
|
||||
img.img-rendering-auto(src='/marketing/lefnire.png')
|
||||
p.lead
|
||||
=env.t('marketing4Lead3-1')
|
||||
|
|
||||
|
||||
@@ -51,7 +51,7 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
span.icon-bar
|
||||
span.icon-bar
|
||||
a.navbar-brand(href='#')
|
||||
img.image-rendering-auto(src='https://d2afqr2xdmyzvu.cloudfront.net/assets/habitica_lockup2_desat.png')
|
||||
img.img-rendering-auto(src='https://d2afqr2xdmyzvu.cloudfront.net/assets/habitica_lockup2_desat.png')
|
||||
// Collect the nav links, forms, and other content for toggling
|
||||
#bs-example-navbar-collapse-1.collapse.navbar-collapse
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
@@ -69,7 +69,7 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
button#header-play-button.btn.btn-primary.navbar-btn.navbar-right(ng-click='playButtonClick()')= env.t('playButtonFull')
|
||||
#intro
|
||||
h1=env.t('motivate1')
|
||||
img.image-rendering-auto.center-block.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/intro.png')
|
||||
img.img-rendering-auto.center-block.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/intro.png')
|
||||
// insert intro images
|
||||
.introcall.bg-success
|
||||
h4= env.t('joinOthers')
|
||||
@@ -103,13 +103,13 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
// Bottom Carousel Indicators
|
||||
ol.carousel-indicators
|
||||
li.active(data-target='#quote-carousel', data-slide-to='0')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/Drag0nsilver.png', alt='')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/Drag0nsilver.png', alt='')
|
||||
li(data-target='#quote-carousel', data-slide-to='1')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/frabjabulous.png', alt='')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/frabjabulous.png', alt='')
|
||||
li(data-target='#quote-carousel', data-slide-to='2')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/AndeeLiao.png', alt='')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/AndeeLiao.png', alt='')
|
||||
li(data-target='#quote-carousel', data-slide-to='3')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/AlexandraSo.png', alt='')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/AlexandraSo.png', alt='')
|
||||
// Carousel Slides / Quotes
|
||||
.carousel-inner.text-center
|
||||
// Quote 1
|
||||
@@ -430,7 +430,7 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
br
|
||||
= env.t('rewardByline2')
|
||||
.scrolltweet.hidden-xs.hidden-sm
|
||||
img.image-rendering-auto.scrolltweet-image(data-toggle='tooltip', data-placement='top', title='Elmi', src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/Elmi.png')
|
||||
img.img-rendering-auto.scrolltweet-image(data-toggle='tooltip', data-placement='top', title='Elmi', src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/Elmi.png')
|
||||
.tweet.popover.right.pull-right
|
||||
.arrow
|
||||
.popover-content= env.t('elmiQuote')
|
||||
@@ -442,10 +442,10 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
span.glyphicon.glyphicon-arrow-down
|
||||
img.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/misc/shop_gold.png')
|
||||
img.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/misc/shop_gold.png')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/misc/shop_gold.png')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/misc/shop_gold.png')
|
||||
h2
|
||||
span.glyphicon.glyphicon-arrow-down
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/TVreward.png')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/TVreward.png')
|
||||
button.btn.btn-primary.btn-lg.fixedcta.gamifybutton(ng-click='playButtonClick()')= env.t('gamifyButton')
|
||||
section#levels.container-fluid
|
||||
.row
|
||||
@@ -459,7 +459,7 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
br
|
||||
= env.t('unlockByline2')
|
||||
.scrolltweet.hidden-xs.hidden-sm
|
||||
img.image-rendering-auto.scrolltweet-image(data-toggle='tooltip', data-placement='top', title='16bitFil', src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/16bitFil.png')
|
||||
img.img-rendering-auto.scrolltweet-image(data-toggle='tooltip', data-placement='top', title='16bitFil', src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/testimonials/16bitFil.png')
|
||||
.tweet.popover.right.pull-right
|
||||
.arrow
|
||||
.popover-content
|
||||
@@ -558,8 +558,8 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
= env.t('featurePetByline')
|
||||
.col-md-4.col-sm-6
|
||||
.feature-img.center-block
|
||||
img.image-rendering-auto(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/achievement-triadbingo.png')
|
||||
img.image-rendering-auto(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/achievement-perfect.png')
|
||||
img.img-rendering-auto(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/achievement-triadbingo.png')
|
||||
img.img-rendering-auto(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/achievement-perfect.png')
|
||||
.featuretext
|
||||
h4= env.t('featureAchievementHeading')
|
||||
p= env.t('featureAchievementByline')
|
||||
@@ -573,7 +573,7 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
= env.t('featureEquipByline')
|
||||
.col-md-4.col-sm-6
|
||||
.feature-img
|
||||
img.image-rendering-auto.center-block.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/Party-Header.png')
|
||||
img.img-rendering-auto.center-block.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/Party-Header.png')
|
||||
.featuretext
|
||||
h4= env.t('featureSocialHeading')
|
||||
p
|
||||
@@ -593,19 +593,19 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
.row
|
||||
.col-lg-2.col-md-2.col-md-offset-1.col-sm-4.col-sm-offset-1.col-xs-6.col-xs-offset-1
|
||||
a(href='http://ionicframework.com/')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/ionic-logo-horizontal-transparent.png')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/ionic-logo-horizontal-transparent.png')
|
||||
.col-lg-2.col-lg-offset-0.col-md-2.col-md-offset-0.col-sm-4.col-sm-offset-1.col-xs-6.col-xs-offset-1
|
||||
a(href='https://www.jetbrains.com/webstorm/')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/logo_webstorm.png')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/logo_webstorm.png')
|
||||
.col-lg-2.col-lg-offset-0.col-md-2.col-md-offset-0.col-sm-4.col-sm-offset-1.col-xs-6.col-xs-offset-1
|
||||
a(href='http://github.com/')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/GitHub_Logo.png')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/GitHub_Logo.png')
|
||||
.col-lg-2.col-lg-offset-0.col-md-2.col-md-offset-0.col-sm-4.col-sm-offset-1.col-xs-6.col-xs-offset-1
|
||||
a(href='https://trello.com/')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/trello-logo-blue.png')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/trello-logo-blue.png')
|
||||
.col-lg-2.col-lg-offset-0.col-md-2.col-md-offset-0.col-sm-4.col-sm-offset-1.col-xs-6.col-xs-offset-1
|
||||
a(href='https://slack.com/')
|
||||
img.image-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/landing_slack_hash_wordmark_logo.png')
|
||||
img.img-rendering-auto.img-responsive(src='https://d2afqr2xdmyzvu.cloudfront.net/front/images/presslogos/landing_slack_hash_wordmark_logo.png')
|
||||
|
||||
.row.footer-content
|
||||
include ../shared/footer
|
||||
|
||||
@@ -40,4 +40,4 @@ block content
|
||||
ul.list-unstyled
|
||||
each img in imgs
|
||||
li
|
||||
img.image-rendering-auto.press-img(src="/presskit/#{img}.png")
|
||||
img.img-rendering-auto.press-img(src="/presskit/#{img}.png")
|
||||
|
||||
Reference in New Issue
Block a user