mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-03 08:21:07 +00:00
Merge branch 'develop' of github.com:HabitRPG/habitrpg into add-flag-to-chat
This commit is contained in:
commit
0cf7bba822
11 changed files with 96 additions and 74 deletions
|
|
@ -9,6 +9,10 @@ ul.challenge-accordion-header-specs
|
|||
&.bg-transparent
|
||||
background-color: transparent;
|
||||
|
||||
.glyphicon
|
||||
color: white;
|
||||
margin-right: 5px;
|
||||
|
||||
#create-challenge-btn
|
||||
margin-bottom: 10px
|
||||
|
||||
|
|
|
|||
BIN
public/emails/images/subscription-begins-time-travelers-v1.png
Normal file
BIN
public/emails/images/subscription-begins-time-travelers-v1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
|
|
@ -206,16 +206,16 @@ api.resetPassword = function(req, res, next){
|
|||
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;
|
||||
utils.sendEmail({
|
||||
from: "HabitRPG <admin@habitrpg.com>",
|
||||
to: email,
|
||||
subject: "Password Reset for HabitRPG",
|
||||
text: "Password for " + user.auth.local.username + " has been reset to " + newPassword + ". Log in at " + nconf.get('BASE_URL'),
|
||||
html: "Password for <strong>" + user.auth.local.username + "</strong> has been reset to <strong>" + newPassword + "</strong>. Log in at " + nconf.get('BASE_URL')
|
||||
utils.txnEmail(user, 'reset-password', [
|
||||
{name: "NEW_PASSWORD", content: newPassword},
|
||||
{name: "URL", content: nconf.get('BASE_URL')},
|
||||
{name: "USERNAME", content: user.auth.local.username}
|
||||
]);
|
||||
user.save(function(err){
|
||||
if(err) return next(err);
|
||||
res.send('New password sent to '+ email);
|
||||
email = salt = newPassword = hashed_password = null;
|
||||
});
|
||||
user.save();
|
||||
res.send('New password sent to '+ email);
|
||||
email = salt = newPassword = hashed_password = null;
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ script(id='partials/options.html', type="text/ng-template")
|
|||
.container-fluid
|
||||
.row
|
||||
.col-md-12
|
||||
.tab-content
|
||||
.tab-content.row
|
||||
.tab-pane.active
|
||||
div(ui-view)
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
|||
| {{::egg.value}}
|
||||
span.Pet_Currency_Gem1x.inline-gems
|
||||
//- buyable quest eggs
|
||||
each egg,quest in {gryphon:'Gryphon',hedgehog:'Hedgehog',ghost_stag:'Deer',rat:'Rat',octopus:'Octopus',dilatory_derby:'Seahorse',harpy:'Parrot',rooster:'Rooster',spider:'Spider',owl:'Owl'}
|
||||
each egg,quest in {gryphon:'Gryphon',hedgehog:'Hedgehog',ghost_stag:'Deer',rat:'Rat',octopus:'Octopus',dilatory_derby:'Seahorse',harpy:'Parrot',rooster:'Rooster',spider:'Spider',owl:'Owl',penguin:'Penguin'}
|
||||
div(ng-show='user.achievements.quests.#{quest} > 1')
|
||||
button.customize-option(popover='{{::Content.eggs.#{egg}.notes()}}', popover-title!=env.t("egg", {eggType: "{{::Content.eggs.#{egg}.text()}}"}), popover-trigger='mouseenter', popover-placement='top', ng-click='purchase("eggs", Content.eggs.#{egg})', class='Pet_Egg_#{egg}')
|
||||
p
|
||||
|
|
|
|||
|
|
@ -66,30 +66,31 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.ht
|
|||
script(type='text/ng-template', id='partials/options.social.challenges.html')
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-2.well#challenges-filters
|
||||
h3=env.t('filter') + ':'
|
||||
h4=env.t('groups')
|
||||
ul.list-unstyled
|
||||
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
|
||||
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-2
|
||||
.well#challenges-filters
|
||||
h3=env.t('filter') + ':'
|
||||
h4=env.t('groups')
|
||||
ul.list-unstyled
|
||||
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
|
||||
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')
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ mixin chatMessages(inbox)
|
|||
span(ng-if='::message.user')
|
||||
a.label.label-default.chat-message.hidden-label
|
||||
span.glyphicon.glyphicon-arrow-right(ng-if='::message.sent')
|
||||
|
|
||||
span {{::message.user}}
|
||||
span(ng-class='userAdminGlyphiconStyleFromLevel(message.contributor.level)')
|
||||
// this invisible username label is here to push the message text far enough right that the visible label can be floated to this point without covering up any of the text
|
||||
|
|
@ -30,5 +31,6 @@ mixin chatMessages(inbox)
|
|||
span.float-label
|
||||
a.label.label-default.chat-message(ng-if=':: message.user', ng-class='::userLevelStyleFromLevel(message.contributor.level, message.backer.npc, style)', ng-click='clickMember(message.uuid, true)')
|
||||
span.glyphicon.glyphicon-arrow-right(ng-if='::message.sent')
|
||||
|
|
||||
span(tooltip='{{::contribText(message.contributor, message.backer)}}') {{::message.user}}
|
||||
span(ng-class='::userAdminGlyphiconStyleFromLevel(message.contributor.level)')
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter', popover-title=env.t('guildBankPop1'), popover=env.t('guildBankPop2'), popover-placement='left', popover-html='true')
|
||||
a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter', popover-title=env.t('guildBankPop1'), popover=env.t('guildBankPop2'), popover-placement='left')
|
||||
// <span class="task-action-btn tile flush bright add-gems-btn">+</span>
|
||||
span.task-action-btn.tile.flush.neutral
|
||||
.Pet_Currency_Gem2x.Gems
|
||||
|
|
@ -52,10 +52,9 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter
|
|||
=env.t('members')
|
||||
button.pull-right.btn.btn-primary(ng-click="openModal('invite-friends', {controller:'GroupsCtrl'})", ng-if='::group.type=="party"') Invite Friends
|
||||
.panel-body.modal-fixed-height
|
||||
div(ng-if='::group.type=="party"')
|
||||
div.form-group(ng-if='::group.type=="party"')
|
||||
=env.t('partyList')
|
||||
br
|
||||
select#partyOrder(
|
||||
select.form-control#partyOrder(
|
||||
ng-model='user.party.order',
|
||||
ng-controller='ChatCtrl',
|
||||
ng-options='k as v for (k , v) in partyOrderChoices',
|
||||
|
|
@ -91,10 +90,10 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter
|
|||
.panel-footer(ng-if='::group.type!="party"')
|
||||
form.form-inline(ng-submit='invite(group)')
|
||||
//.alert.alert-danger(ng-show='_groupError') {{_groupError}}
|
||||
.form-group
|
||||
.input-group
|
||||
input.form-control(type='text', placeholder=env.t('userId'), ng-model='group.invitee')
|
||||
|
|
||||
input.btn.btn-default(type='submit', value=env.t('invite'))
|
||||
span.input-group-btn
|
||||
input.btn.btn-default(type='submit', value=env.t('invite'))
|
||||
|
||||
|
||||
a.btn.btn-danger(data-id='{{group.id}}', ng-click='clickLeave(group, $event)')=env.t('leave')
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ script(type='text/ng-template', id='partials/options.social.inbox.html')
|
|||
.checkbox
|
||||
label
|
||||
input(type='checkbox', ng-model='user.inbox.optOut', ng-change='set({"inbox.optOut": user.inbox.optOut?true: false})')
|
||||
|
|
||||
span.hint(popover-trigger='mouseenter', popover-placement='right', popover=env.t('optOutPopover'))=env.t('optOut')
|
||||
|
||||
script(type='text/ng-template', id='partials/options.social.tavern.html')
|
||||
|
|
@ -44,7 +45,7 @@ script(type='text/ng-template', id='partials/options.social.party.html')
|
|||
include ./create-group
|
||||
|
||||
script(type='text/ng-template', id='partials/options.social.guilds.public.html')
|
||||
div(ng-repeat='invitation in user.invitations.guilds')
|
||||
div.col-xs-12(ng-repeat='invitation in user.invitations.guilds' style='margin-bottom: 1.5em')
|
||||
h3=env.t('invitedTo', {name: '{{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')
|
||||
|
|
@ -57,7 +58,7 @@ script(type='text/ng-template', id='partials/options.social.guilds.public.html')
|
|||
ul.pull-right.challenge-accordion-header-specs
|
||||
li='{{::group.memberCount}} ' + env.t('members')
|
||||
// join / leave
|
||||
li
|
||||
li.bg-transparent
|
||||
a.btn.btn-sm.btn-danger(ng-if="::group._isMember", ng-click='clickLeave(group, $event)')
|
||||
span.glyphicon.glyphicon-ban-circle
|
||||
=env.t('leave')
|
||||
|
|
@ -71,7 +72,8 @@ script(type='text/ng-template', id='partials/options.social.guilds.detail.html')
|
|||
include ./group
|
||||
|
||||
script(type='text/ng-template', id='partials/options.social.guilds.create.html')
|
||||
include ./create-group
|
||||
div.col-xs-12
|
||||
include ./create-group
|
||||
|
||||
script(type='text/ng-template', id='partials/options.social.guilds.html')
|
||||
ul.options-submenu
|
||||
|
|
@ -93,7 +95,8 @@ script(type='text/ng-template', id='partials/options.social.html')
|
|||
ul.options-menu
|
||||
li(ng-class="{ active: $state.includes('options.social.inbox') }")
|
||||
a(ui-sref='options.social.inbox')
|
||||
| Inbox
|
||||
=env.t("inbox")
|
||||
|
|
||||
span.badge.badge-danger(ng-if='user.inbox.newMessages') {{user.inbox.newMessages}}
|
||||
li(ng-class="{ active: $state.includes('options.social.tavern') }")
|
||||
a(ui-sref='options.social.tavern')
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ nav.toolbar(ng-controller='AuthCtrl', ng-class='{active: isToolbarHidden}')
|
|||
ul.toolbar-submenu
|
||||
li
|
||||
a(ui-sref='options.social.inbox')
|
||||
| Inbox
|
||||
=env.t("inbox")
|
||||
|
|
||||
span.badge.badge-danger(ng-if='user.inbox.newMessages') {{user.inbox.newMessages}}
|
||||
li
|
||||
a(ui-sref='options.social.tavern')=env.t('tavern')
|
||||
|
|
@ -101,7 +102,8 @@ nav.toolbar(ng-controller='AuthCtrl', ng-class='{active: isToolbarHidden}')
|
|||
ul.toolbar-submenu(ng-click='expandMenu(null)')
|
||||
li
|
||||
a(ui-sref='options.social.inbox')
|
||||
| Inbox
|
||||
=env.t("inbox")
|
||||
|
|
||||
span.badge.badge-danger(ng-if='user.inbox.newMessages') {{user.inbox.newMessages}}
|
||||
li
|
||||
a(ui-sref='options.social.tavern')=env.t('tavern')
|
||||
|
|
|
|||
|
|
@ -1,38 +1,49 @@
|
|||
h5 Gifting Subscriptions And Gems, New Subscription Benefits, Mysterious Time Travelers, Steampunk Item Sets, And Block Subscriptions!
|
||||
table.table.table-striped
|
||||
h5 PENGUIN PET QUEST AND WINTER PLOT-LINE
|
||||
tr
|
||||
td
|
||||
h5 Gifting Subscriptions And Gems
|
||||
p You can now gift subscriptions and gems to other people (bottom-left in a user's profile window)! If you need holiday present ideas for the awesome Habiticans in your life, or just want to do something nice for someone, consider getting them a subscription to our fair site or tossing a few gems their way. They'll thank you, and so will we <3
|
||||
p.small.muted by Lefnire
|
||||
h5 Penguin Pet Quest
|
||||
.quest_penguin.pull-right
|
||||
p Habiticans wanted to go ice-skating, but instead, a giant penguin is freezing everything in sight! All we wanted was to go ice-skating... Can you get this penguin to chill out? If so, you'll be rewarded with some penguins of your own!
|
||||
p.small.muted by Melynnrose, Breadstrings, Rattify, Painter de Cluster, Daniel the Bard, and Leephon
|
||||
tr
|
||||
td
|
||||
h5 New Subscription Benefits!
|
||||
p We've added new benefits for long-term subscribers! Now for every 3 months that you are subscribed consecutively, your monthly gold-to-gem conversion cap will increase by 5, up to a total of 50 gems per month! Plus, for each three months of consecutive subscription, you will receive 1 Mystic Hourglass. What does that do? Read on!
|
||||
p.small.muted by Lefnire
|
||||
tr
|
||||
td
|
||||
h5 Mysterious Time Travelers
|
||||
.npc_timetravelers.pull-right
|
||||
p If you've received a Mystic Hourglass for being subscribed for 3 consecutive months, you can now summon the <a href='/#/options/inventory/timetravelers' target='_blank'>Mysterious Time Travelers</a> to get you one Mystery Item Set from the past! Being subscribed for multiple consecutive months is the only way to get these past items if you missed them. They will never be available to non-subscribers.
|
||||
p.small.muted by Lemoness, Megan, Lefnire
|
||||
tr
|
||||
td
|
||||
h5 Steampunk Item Sets
|
||||
.promo_mystery_3014.pull-right
|
||||
p The Mysterious Time Travelers are also offering two brand-new Item Sets - the Steampunk Standard Item Set and the Steampunk Accessory Item Set! These Item Sets can only be obtained if you have a Mystic Hourglass.
|
||||
p.small.muted by Megan
|
||||
tr
|
||||
td
|
||||
h5 Block Subscriptions
|
||||
p Don't want to wait for your consecutive months to stack up? You can now subscribe in a fixed block period of 1 month, 3 months, 6 months, or 1 year! If you subscribe for a block period of 1 year, you get a 20% discount. PLUS, you'll instantly get all the benefits of consecutive subscription for that time period (e.g. getting a block subscription for 6 months will instantly raise your monthly gold-to-gem cap by 10)!
|
||||
p.small.muted by Lefnire
|
||||
|
||||
h5 Winter Plot-Line
|
||||
p Lemoness enters the Tavern with worrying news from the far north of Habitica. "Nobody's heard from the Stoïkalm Steppes for over a week," she says. "It's hard to imagine anything troubling the citizens there, since it's such a placid part of the continent... But just in case, maybe I should pay a visit." Sounds like a good plan to us!
|
||||
|
||||
hr
|
||||
a(href='/static/old-news', target='_blank') Read older news
|
||||
|
||||
mixin oldNews
|
||||
h5 12/3/2014 - Gifting Subscriptions And Gems, New Subscription Benefits, Mysterious Time Travelers, Steampunk Item Sets, And Block Subscriptions!
|
||||
table.table.table-striped
|
||||
tr
|
||||
td
|
||||
h5 Gifting Subscriptions And Gems
|
||||
p You can now gift subscriptions and gems to other people (bottom-left in a user's profile window)! If you need holiday present ideas for the awesome Habiticans in your life, or just want to do something nice for someone, consider getting them a subscription to our fair site or tossing a few gems their way. They'll thank you, and so will we <3
|
||||
p.small.muted by Lefnire
|
||||
tr
|
||||
td
|
||||
h5 New Subscription Benefits!
|
||||
p We've added new benefits for long-term subscribers! Now for every 3 months that you are subscribed consecutively, your monthly gold-to-gem conversion cap will increase by 5, up to a total of 50 gems per month! Plus, for each three months of consecutive subscription, you will receive 1 Mystic Hourglass. What does that do? Read on!
|
||||
p.small.muted by Lefnire
|
||||
tr
|
||||
td
|
||||
h5 Mysterious Time Travelers
|
||||
.npc_timetravelers.pull-right
|
||||
p If you've received a Mystic Hourglass for being subscribed for 3 consecutive months, you can now summon the <a href='/#/options/inventory/timetravelers' target='_blank'>Mysterious Time Travelers</a> to get you one Mystery Item Set from the past! Being subscribed for multiple consecutive months is the only way to get these past items if you missed them. They will never be available to non-subscribers.
|
||||
p.small.muted by Lemoness, Megan, Lefnire
|
||||
tr
|
||||
td
|
||||
h5 Steampunk Item Sets
|
||||
.promo_mystery_3014.pull-right
|
||||
p The Mysterious Time Travelers are also offering two brand-new Item Sets - the Steampunk Standard Item Set and the Steampunk Accessory Item Set! These Item Sets can only be obtained if you have a Mystic Hourglass.
|
||||
p.small.muted by Megan
|
||||
tr
|
||||
td
|
||||
h5 Block Subscriptions
|
||||
p Don't want to wait for your consecutive months to stack up? You can now subscribe in a fixed block period of 1 month, 3 months, 6 months, or 1 year! If you subscribe for a block period of 1 year, you get a 20% discount. PLUS, you'll instantly get all the benefits of consecutive subscription for that time period (e.g. getting a block subscription for 6 months will instantly raise your monthly gold-to-gem cap by 10)!
|
||||
p.small.muted by Lefnire
|
||||
|
||||
h5 12/1/2014 - SITE OUTAGE EXPLANATION, DECEMBER BACKGROUNDS, AND DECEMBER MYSTERY ITEM SET
|
||||
table.table.table-striped
|
||||
tr
|
||||
|
|
|
|||
Loading…
Reference in a new issue