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:
Sabe Jones
2015-09-01 13:40:20 -05:00
405 changed files with 6844 additions and 6816 deletions
@@ -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()
});
}
@@ -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();
});
});
}
}
}
}());
+1 -2
View File
@@ -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",
+1 -1
View File
@@ -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();
};
+1 -1
View File
@@ -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')
|  -
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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')
+1 -1
View File
@@ -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
+47 -47
View File
@@ -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"})')
+2 -2
View File
@@ -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
+38 -5
View File
@@ -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
+8 -8
View File
@@ -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')
|&nbsp;
+18 -18
View File
@@ -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
+1 -1
View File
@@ -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")