mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-07-13 23:42:12 +00:00
feat(quests): allow html in quest notes
This commit is contained in:
parent
89443bb970
commit
800231cf64
5 changed files with 16 additions and 8 deletions
|
|
@ -8,4 +8,9 @@ angular.module('habitrpg')
|
|||
return function (gp) {
|
||||
return Math.floor((gp - Math.floor(gp))*100);
|
||||
}
|
||||
})
|
||||
.filter('htmlDecode',function(){
|
||||
return function(html){
|
||||
return $('<div/>').html(html).text();
|
||||
}
|
||||
})
|
||||
|
|
@ -539,7 +539,9 @@ api.questAccept = function(req, res) {
|
|||
|
||||
// If ?key=xxx is provided, we're starting a new quest and inviting the party. Otherwise, we're a party member accepting the invitation
|
||||
if (key) {
|
||||
if (!shared.content.quests[key]) return res.json(404,{err:'Quest ' + key + ' not found'});
|
||||
var quest = shared.content.quests[key];
|
||||
if (!quest) return res.json(404,{err:'Quest ' + key + ' not found'});
|
||||
if (quest.lvl && user.stats.lvl < quest.lvl) return res.json(400, {err: "You must be level "+quest.lvl+" to being this quest."});
|
||||
if (group.quest.key) return res.json(400, {err: 'Party already on a quest (and only have one quest at a time)'});
|
||||
if (!user.items.quests[key]) return res.json(401, {err: "You don't own that quest scroll"});
|
||||
group.quest.key = key;
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
|||
p.muted(ng-show='questCount < 1')=env.t('noScrolls')
|
||||
p.muted!=env.t('scrollsText1') + ' <a href="/#/options/groups/party">' + env.t('scrollsText2') + '</a>'
|
||||
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}}", 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]}')
|
||||
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
|
||||
|
|
@ -110,7 +110,7 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html')
|
|||
menu.pets-menu(label=env.t('quests'))
|
||||
p.muted!=env.t('scrollsText1') + ' <a href="/#/options/groups/party">' + env.t('scrollsText2') + '</a>'
|
||||
div(ng-repeat='quest in Content.quests')
|
||||
button.customize-option(popover="{{quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes}}", 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]}')
|
||||
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
|
||||
|
|
|
|||
|
|
@ -47,11 +47,12 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild
|
|||
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(class='quest_{{group.quest.key}}_{{k}}') {{Content.quests[group.quest.key].collect[k].text}}
|
||||
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}}
|
||||
|
||||
p {{Content.quests[group.quest.key].notes}}
|
||||
div(ng-bind-html='Content.quests[group.quest.key].notes')
|
||||
hr
|
||||
h5=env.t('participants')
|
||||
table.table.table-striped
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ div(modal='modals.showQuest', ng-controller='InventoryCtrl')
|
|||
h3 {{selectedQuest.text}}
|
||||
.modal-body
|
||||
.pull-right(class='quest_{{selectedQuest.key}}')
|
||||
p {{selectedQuest.notes}}
|
||||
div(ng-bind-html='selectedQuest.notes')
|
||||
quest-rewards(key='{{selectedQuest.key}}')
|
||||
hr
|
||||
div(style='clear:left;clear:right')
|
||||
|
|
@ -41,7 +41,7 @@ div(modal='modals.buyQuest', ng-controller='InventoryCtrl')
|
|||
h3 {{selectedQuest.text}}
|
||||
.modal-body
|
||||
.pull-right(class='quest_{{selectedQuest.key}}')
|
||||
p {{selectedQuest.notes}}
|
||||
div(ng-bind-html='selectedQuest.notes')
|
||||
quest-rewards(key='{{selectedQuest.key}}')
|
||||
.modal-footer
|
||||
button.btn.btn-large.cancel(ng-click='closeQuest()')=env.t('neverMind')
|
||||
|
|
@ -52,7 +52,7 @@ div(modal='party.quest.key && !party.quest.active && !questHold && party.quest.m
|
|||
h3=env.t('questInvitation')
|
||||
| {{Content.quests[party.quest.key].text}}
|
||||
.modal-body
|
||||
p {{Content.quests[party.quest.key].notes}}
|
||||
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')
|
||||
|
|
|
|||
Loading…
Reference in a new issue