mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-04-14 19:56:23 +00:00
html format other components
This commit is contained in:
parent
7b4671fbf9
commit
f99e3fab8b
180 changed files with 6536 additions and 2894 deletions
|
|
@ -9,31 +9,49 @@
|
|||
<svg
|
||||
id="melior"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewbox="0 0 61.91 64"
|
||||
><path
|
||||
d="M61.82,64H51.59c-3.08,0-3.72.37-3.67-1,0.07-1.87.67-1.94,2.63-2.49,1.63-.45,1-3.35-0.8-5.88-1.28-1.76-3.89-3.81-7.31-2.22a10.75,10.75,0,0,0-4.56,3.52c-1.68,2.33-1.59,4.54,1,4.54s5.39-1.5,6.23.64c1,2.64.33,2.89-.18,2.89H28.55v0C19.77,64,11,63.93,9,58.38c-2.82-7.68,7.43-10.64,7.75-15.46,0.13-2-1-2.85-2.34-2.85h-6V36.41H4.7v-11H8.36V29.1H12v3.65h3.65v5.08a5.76,5.76,0,0,1,3.07,5.05c-0.17,5.51-9.5,8.57-7.79,14.35,1.56,5.29,13.37,4,13,.74L23.7,56.1c-0.06-2.62-.47-6.12.08-9.22C24.64,42,27.67,37.78,33,37.74c1,0,1.78-.21,1.78-1s-1.55-.84-2.64-0.95a23.35,23.35,0,0,1-12.56-5c-2.43-2-6.21-8.3-3.74-7.83a21.74,21.74,0,0,0,4.06.4c1.24,0,4.44-.35,4.44-1.11,0-1-1.85-.42-4.57-0.68C16.48,21.22,9.6,19.83,6,9.35,4.71,5.43,3.83-1.91,6,.46c12.46,13.7,16.69,11.47,23.84,16.16,3.15,2.06,5.19,7,7,6.58,1.2-.27.46-1.37,0.64-3.93C37.66,17,38.75,16.48,36,15.79c-3.26-.81-6.52-4.38-4.39-4.33a11.89,11.89,0,0,0,5.53-.76c1.87-.81,6.43-4.28,9.18-2.89s5.08-.6,6.94-0.25c2.71,0.51,3.41,4.24,3.05,6.42-0.22,1.38-.22,1.38-2,1.28-3.61-.21-4.53,2.67-2,4.25,3.87,2.42,5.51,4.23,6.56,9.58,0.51,2.6.1,3.2-.76,2.72s-2.34-.72-0.29,4-1.29,10.28-2.39,10.9a1.3,1.3,0,0,0-.91,1.34c0,11.42,0,12.27,1.92,12.48,2.9,0.31,4.14-1.44,5.27.06C63.29,62.73,63.41,64,61.82,64ZM4.7,21.28H1v3.65H4.7V21.28Z"
|
||||
transform="translate(-1.05)"
|
||||
fill="#fff"
|
||||
></path></svg>
|
||||
</div><div class="col-12 text-center">
|
||||
<h2>{{ $t('tipTitle', {tipNumber: currentTipNumber}) }}</h2><p>{{ currentTip }}</p>
|
||||
viewBox="0 0 61.91 64"
|
||||
>
|
||||
<path
|
||||
d="M61.82,64H51.59c-3.08,0-3.72.37-3.67-1,0.07-1.87.67-1.94,2.63-2.49,1.63-.45,1-3.35-0.8-5.88-1.28-1.76-3.89-3.81-7.31-2.22a10.75,10.75,0,0,0-4.56,3.52c-1.68,2.33-1.59,4.54,1,4.54s5.39-1.5,6.23.64c1,2.64.33,2.89-.18,2.89H28.55v0C19.77,64,11,63.93,9,58.38c-2.82-7.68,7.43-10.64,7.75-15.46,0.13-2-1-2.85-2.34-2.85h-6V36.41H4.7v-11H8.36V29.1H12v3.65h3.65v5.08a5.76,5.76,0,0,1,3.07,5.05c-0.17,5.51-9.5,8.57-7.79,14.35,1.56,5.29,13.37,4,13,.74L23.7,56.1c-0.06-2.62-.47-6.12.08-9.22C24.64,42,27.67,37.78,33,37.74c1,0,1.78-.21,1.78-1s-1.55-.84-2.64-0.95a23.35,23.35,0,0,1-12.56-5c-2.43-2-6.21-8.3-3.74-7.83a21.74,21.74,0,0,0,4.06.4c1.24,0,4.44-.35,4.44-1.11,0-1-1.85-.42-4.57-0.68C16.48,21.22,9.6,19.83,6,9.35,4.71,5.43,3.83-1.91,6,.46c12.46,13.7,16.69,11.47,23.84,16.16,3.15,2.06,5.19,7,7,6.58,1.2-.27.46-1.37,0.64-3.93C37.66,17,38.75,16.48,36,15.79c-3.26-.81-6.52-4.38-4.39-4.33a11.89,11.89,0,0,0,5.53-.76c1.87-.81,6.43-4.28,9.18-2.89s5.08-.6,6.94-0.25c2.71,0.51,3.41,4.24,3.05,6.42-0.22,1.38-.22,1.38-2,1.28-3.61-.21-4.53,2.67-2,4.25,3.87,2.42,5.51,4.23,6.56,9.58,0.51,2.6.1,3.2-.76,2.72s-2.34-.72-0.29,4-1.29,10.28-2.39,10.9a1.3,1.3,0,0,0-.91,1.34c0,11.42,0,12.27,1.92,12.48,2.9,0.31,4.14-1.44,5.27.06C63.29,62.73,63.41,64,61.82,64ZM4.7,21.28H1v3.65H4.7V21.28Z"
|
||||
transform="translate(-1.05)"
|
||||
fill="#fff"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="col-12 text-center">
|
||||
<h2>{{ $t('tipTitle', {tipNumber: currentTipNumber}) }}</h2>
|
||||
<p>{{ currentTip }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
id="app"
|
||||
:class="{'casting-spell': castingSpell}"
|
||||
>
|
||||
<banned-account-modal /><amazon-payments-modal v-if="!isStaticPage" /><payments-success-modal /><sub-cancel-modal-confirm v-if="isUserLoaded" /><sub-canceled-modal v-if="isUserLoaded" /><snackbars /><router-view v-if="!isUserLoggedIn || isStaticPage" /><template v-else>
|
||||
<banned-account-modal />
|
||||
<amazon-payments-modal v-if="!isStaticPage" />
|
||||
<payments-success-modal />
|
||||
<sub-cancel-modal-confirm v-if="isUserLoaded" />
|
||||
<sub-canceled-modal v-if="isUserLoaded" />
|
||||
<snackbars />
|
||||
<router-view v-if="!isUserLoggedIn || isStaticPage" />
|
||||
<template v-else>
|
||||
<template v-if="isUserLoaded">
|
||||
<div
|
||||
v-show="showRestingBanner"
|
||||
ref="restingBanner"
|
||||
class="resting-banner"
|
||||
>
|
||||
<span class="content"><span class="label d-inline d-sm-none">{{ $t('innCheckOutBannerShort') }}</span><span class="label d-none d-sm-inline">{{ $t('innCheckOutBanner') }}</span><span class="separator"> |</span><span
|
||||
class="resume"
|
||||
@click="resumeDamage()"
|
||||
>{{ $t('resumeDamage') }}</span></span><div
|
||||
<span class="content">
|
||||
<span class="label d-inline d-sm-none">{{ $t('innCheckOutBannerShort') }}</span>
|
||||
<span class="label d-none d-sm-inline">{{ $t('innCheckOutBanner') }}</span>
|
||||
<span class="separator">|</span>
|
||||
<span
|
||||
class="resume"
|
||||
@click="resumeDamage()"
|
||||
>{{ $t('resumeDamage') }}</span>
|
||||
</span>
|
||||
<div
|
||||
class="closepadding"
|
||||
@click="hideBanner()"
|
||||
>
|
||||
|
|
@ -43,20 +61,28 @@
|
|||
v-html="icons.close"
|
||||
></span>
|
||||
</div>
|
||||
</div><notifications-display /><app-menu /><div class="container-fluid">
|
||||
<app-header /><buyModal
|
||||
</div>
|
||||
<notifications-display />
|
||||
<app-menu />
|
||||
<div class="container-fluid">
|
||||
<app-header />
|
||||
<buyModal
|
||||
:item="selectedItemToBuy || {}"
|
||||
:with-pin="true"
|
||||
:generic-purchase="genericPurchase(selectedItemToBuy)"
|
||||
@buyPressed="customPurchase($event)"
|
||||
/><selectMembersModal
|
||||
/>
|
||||
<selectMembersModal
|
||||
:item="selectedSpellToBuy || {}"
|
||||
:group="user.party"
|
||||
@memberSelected="memberSelected($event)"
|
||||
/><div :class="{sticky: user.preferences.stickyHeader}">
|
||||
/>
|
||||
<div :class="{sticky: user.preferences.stickyHeader}">
|
||||
<router-view />
|
||||
</div>
|
||||
</div><app-footer /><audio
|
||||
</div>
|
||||
<app-footer />
|
||||
<audio
|
||||
id="sound"
|
||||
ref="sound"
|
||||
autoplay="autoplay"
|
||||
|
|
|
|||
|
|
@ -1,17 +1,23 @@
|
|||
<template>
|
||||
<div class="row">
|
||||
<div class="col-12 text-center">
|
||||
<!-- @TODO i18n. How to setup the strings with the router-link inside?--><img
|
||||
<!-- @TODO i18n. How to setup the strings with the router-link inside?-->
|
||||
<img
|
||||
class="not-found-img"
|
||||
src="~@/assets/images/404.png"
|
||||
><h1 class="not-found">
|
||||
>
|
||||
<h1 class="not-found">
|
||||
Sometimes even the bravest adventurer gets lost.
|
||||
</h1><h2 class="not-found">
|
||||
</h1>
|
||||
<h2 class="not-found">
|
||||
Looks like this link is broken or the page may have moved, sorry!
|
||||
</h2><h2 class="not-found">
|
||||
Head back to the<router-link to="/">
|
||||
</h2>
|
||||
<h2 class="not-found">
|
||||
Head back to the
|
||||
<router-link to="/">
|
||||
Homepage
|
||||
</router-link>or<router-link :to="contactUsLink">
|
||||
</router-link>or
|
||||
<router-link :to="contactUsLink">
|
||||
Contact Us
|
||||
</router-link>about the issue.
|
||||
</h2>
|
||||
|
|
|
|||
|
|
@ -8,52 +8,77 @@
|
|||
>
|
||||
<div class="modal-header">
|
||||
<h4>{{ $t('questInvitation') }} {{ quests[user.party.quest.key].text() }}</h4>
|
||||
</div><div class="modal-body">
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="pull-right-sm text-center">
|
||||
<div
|
||||
class="col-centered"
|
||||
:class="`quest_${quests[user.party.quest.key].key}`"
|
||||
></div><div ng-if="quests[user.party.quest.key].boss">
|
||||
<h4>{{ quests[user.party.quest.key].boss.name() }}</h4><p><strong>{{ $t('bossHP') }} + ': '</strong>{{ quests[user.party.quest.key].boss.hp }}</p><p><strong>{{ $t('bossStrength') }} + ': '</strong>{{ quests[user.party.quest.key].boss.str }}</p>
|
||||
</div><div ng-if="quests[user.party.quest.key].collect">
|
||||
<p ng-repeat="(k,v) in quests[user.party.quest.key].collect">
|
||||
<strong>{{ $t('collect') }} + ': '</strong>{{ quests[user.party.quest.key].collect[k].count }} {{ quests[user.party.quest.key].collect[k].text() }}
|
||||
></div>
|
||||
<div ng-if="quests[user.party.quest.key].boss">
|
||||
<h4>{{ quests[user.party.quest.key].boss.name() }}</h4>
|
||||
<p>
|
||||
<strong>{{ $t('bossHP') }} + ': '</strong>
|
||||
{{ quests[user.party.quest.key].boss.hp }}
|
||||
</p>
|
||||
<p>
|
||||
<strong>{{ $t('bossStrength') }} + ': '</strong>
|
||||
{{ quests[user.party.quest.key].boss.str }}
|
||||
</p>
|
||||
</div>
|
||||
</div><div ng-bind-html="quests[user.party.quest.key].notes()"></div><div
|
||||
<div ng-if="quests[user.party.quest.key].collect">
|
||||
<p ng-repeat="(k,v) in quests[user.party.quest.key].collect">
|
||||
<strong>{{ $t('collect') }} + ': '</strong>
|
||||
{{ quests[user.party.quest.key].collect[k].count }} {{ quests[user.party.quest.key].collect[k].text() }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-bind-html="quests[user.party.quest.key].notes()"></div>
|
||||
<div
|
||||
:key="user.party.quest.key"
|
||||
class="quest-rewards"
|
||||
header-participant="$t('rewardsAllParticipants')"
|
||||
header-quest-owner="$t('rewardsQuestOwner')"
|
||||
></div><hr><h5>{{ headerParticipant }}</h5><table class="table table-striped">
|
||||
></div>
|
||||
<hr>
|
||||
<h5>{{ headerParticipant }}</h5>
|
||||
<table class="table table-striped">
|
||||
<tr ng-repeat="drop in _.reject(quest.drop.items, 'onlyOwner')">
|
||||
<td>{{ drop.text() }}</td>
|
||||
</tr><tr ng-if="quest.drop.exp > 0">
|
||||
</tr>
|
||||
<tr ng-if="quest.drop.exp > 0">
|
||||
<td>{{ quest.drop.exp }} {{ $t('experience') }}</td>
|
||||
</tr><tr ng-if="quest.drop.gp > 0">
|
||||
</tr>
|
||||
<tr ng-if="quest.drop.gp > 0">
|
||||
<td>{{ quest.drop.gp }} {{ $t('gold') }}</td>
|
||||
</tr><tr ng-if="quest.drop.unlock()">
|
||||
</tr>
|
||||
<tr ng-if="quest.drop.unlock()">
|
||||
<td>{{ quest.drop.unlock() }}</td>
|
||||
</tr>
|
||||
</table><div ng-if="getQuestOwnerRewards(quest).length > 0">
|
||||
<h5>{{ headerQuestOwner }}</h5><table class="table table-striped">
|
||||
</table>
|
||||
<div ng-if="getQuestOwnerRewards(quest).length > 0">
|
||||
<h5>{{ headerQuestOwner }}</h5>
|
||||
<table class="table table-striped">
|
||||
<tr ng-repeat="drop in getQuestOwnerRewards(quest)">
|
||||
<td>{{ drop.text() }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div><div class="modal-footer">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
ng-click="questHold = true; $close()"
|
||||
>
|
||||
{{ $t('askLater') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
ng-click="questReject(); $close()"
|
||||
>
|
||||
{{ $t('reject') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
ng-click="questAccept(); $close()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
<template>
|
||||
<div class="row footer-row">
|
||||
<buy-gems-modal v-if="user" /><!--modify-inventory(v-if="isUserLoaded")--><footer class="col-12 expanded">
|
||||
<buy-gems-modal v-if="user" />
|
||||
<!--modify-inventory(v-if="isUserLoaded")-->
|
||||
<footer class="col-12 expanded">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-2">
|
||||
<h3>
|
||||
|
|
@ -8,134 +10,171 @@
|
|||
href="https://itunes.apple.com/us/app/habitica/id994882113?ls=1&mt=8"
|
||||
target="_blank"
|
||||
>{{ $t('mobileIOS') }}</a>
|
||||
</h3><h3>
|
||||
</h3>
|
||||
<h3>
|
||||
<a
|
||||
href="https://play.google.com/store/apps/details?id=com.habitrpg.android.habitica"
|
||||
target="_blank"
|
||||
>{{ $t('mobileAndroid') }}</a>
|
||||
</h3>
|
||||
</div><div class="col-12 col-md-2">
|
||||
<h3>{{ $t('footerCompany') }}</h3><ul>
|
||||
</div>
|
||||
<div class="col-12 col-md-2">
|
||||
<h3>{{ $t('footerCompany') }}</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<router-link to="/static/features">
|
||||
{{ $t('companyAbout') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://habitica.wordpress.com/"
|
||||
target="_blank"
|
||||
>{{ $t('companyBlog') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="http://blog.habitrpg.com/"
|
||||
target="_blank"
|
||||
>{{ $t('tumblr') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<router-link to="/static/faq">
|
||||
{{ $t('FAQ') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="http://habitica.fandom.com/wiki/Whats_New"
|
||||
target="_blank"
|
||||
>{{ $t('oldNews') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<router-link to="/static/merch">
|
||||
{{ $t('merch') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<router-link to="/static/press-kit">
|
||||
{{ $t('presskit') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<router-link to="/static/contact">
|
||||
{{ $t('contactUs') }}
|
||||
</router-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div><div class="col-12 col-md-2">
|
||||
<h3>{{ $t('footerCommunity') }}</h3><ul>
|
||||
</div>
|
||||
<div class="col-12 col-md-2">
|
||||
<h3>{{ $t('footerCommunity') }}</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
target="_blanck"
|
||||
href="/static/community-guidelines"
|
||||
>{{ $t('communityGuidelines') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<router-link to="/hall/contributors">
|
||||
{{ $t('hall') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
<router-link to="/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac">
|
||||
</li>
|
||||
<li>
|
||||
<router-link
|
||||
to="/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac"
|
||||
>
|
||||
{{ $t('reportBug') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://trello.com/c/odmhIqyW/440-read-first-table-of-contents"
|
||||
target="_blank"
|
||||
>{{ $t('requestFeature') }}</a>
|
||||
</li><li v-html="$t('communityExtensions')"></li><li v-html="$t('communityForum')"></li><li>
|
||||
</li>
|
||||
<li v-html="$t('communityExtensions')"></li>
|
||||
<li v-html="$t('communityForum')"></li>
|
||||
<li>
|
||||
<a
|
||||
href="https://www.facebook.com/Habitica"
|
||||
target="_blank"
|
||||
>{{ $t('communityFacebook') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://www.instagram.com/habitica"
|
||||
target="_blank"
|
||||
>{{ $t('communityInstagram') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><div class="col-12 col-md-6">
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<h3>{{ $t('footerDevs') }}</h3><ul>
|
||||
<h3>{{ $t('footerDevs') }}</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
href="/apidoc"
|
||||
target="_blank"
|
||||
>{{ $t('APIv3') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
:href="getDataDisplayToolUrl"
|
||||
target="_blank"
|
||||
>{{ $t('dataDisplayTool') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="http://habitica.fandom.com/wiki/Guidance_for_Blacksmiths"
|
||||
target="_blank"
|
||||
>{{ $t('guidanceForBlacksmiths') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><div class="col-6 social">
|
||||
<h3>{{ $t('footerSocial') }}</h3><div class="icons">
|
||||
</div>
|
||||
<div class="col-6 social">
|
||||
<h3>{{ $t('footerSocial') }}</h3>
|
||||
<div class="icons">
|
||||
<a
|
||||
class="social-circle"
|
||||
href="https://twitter.com/habitica"
|
||||
target="_blank"
|
||||
><div
|
||||
class="social-icon svg-icon"
|
||||
v-html="icons.twitter"
|
||||
></div></a><a
|
||||
>
|
||||
<div
|
||||
class="social-icon svg-icon"
|
||||
v-html="icons.twitter"
|
||||
></div>
|
||||
</a>
|
||||
<a
|
||||
class="social-circle"
|
||||
href="https://www.instagram.com/habitica/"
|
||||
target="_blank"
|
||||
><div
|
||||
class="social-icon svg-icon instagram"
|
||||
v-html="icons.instagram"
|
||||
></div></a><a
|
||||
>
|
||||
<div
|
||||
class="social-icon svg-icon instagram"
|
||||
v-html="icons.instagram"
|
||||
></div>
|
||||
</a>
|
||||
<a
|
||||
class="social-circle"
|
||||
href="https://www.facebook.com/Habitica"
|
||||
target="_blank"
|
||||
><div
|
||||
class="social-icon facebook svg-icon"
|
||||
v-html="icons.facebook"
|
||||
></div></a>
|
||||
>
|
||||
<div
|
||||
class="social-icon facebook svg-icon"
|
||||
v-html="icons.facebook"
|
||||
></div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-8">
|
||||
{{ $t('donateText3') }}
|
||||
</div><div class="col-12 col-md-4">
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<button
|
||||
v-if="user"
|
||||
class="btn btn-contribute btn-flat"
|
||||
|
|
@ -144,31 +183,39 @@
|
|||
<div
|
||||
class="svg-icon heart"
|
||||
v-html="icons.heart"
|
||||
></div><div class="text">
|
||||
></div>
|
||||
<div class="text">
|
||||
{{ $t('companyDonate') }}
|
||||
</div>
|
||||
</button><div
|
||||
</button>
|
||||
<div
|
||||
v-else
|
||||
class="btn btn-contribute btn-flat"
|
||||
>
|
||||
<a
|
||||
href="http://habitica.fandom.com/wiki/Contributing_to_Habitica"
|
||||
target="_blank"
|
||||
><div
|
||||
class="svg-icon heart"
|
||||
v-html="icons.heart"
|
||||
></div><div class="text">{{ $t('companyContribute') }}</div></a>
|
||||
>
|
||||
<div
|
||||
class="svg-icon heart"
|
||||
v-html="icons.heart"
|
||||
></div>
|
||||
<div class="text">{{ $t('companyContribute') }}</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-5">
|
||||
© 2019 Habitica. All rights reserved.<div
|
||||
© 2019 Habitica. All rights reserved.
|
||||
<div
|
||||
v-if="!IS_PRODUCTION && isUserLoaded"
|
||||
class="debug float-left"
|
||||
>
|
||||
|
|
@ -177,75 +224,98 @@
|
|||
@click="debugMenuShown = !debugMenuShown"
|
||||
>
|
||||
Toggle Debug Menu
|
||||
</button><div
|
||||
</button>
|
||||
<div
|
||||
v-if="debugMenuShown"
|
||||
class="debug-group"
|
||||
>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="setHealthLow()"
|
||||
>Health = 1</a><a
|
||||
>Health = 1</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addMissedDay(1)"
|
||||
>+1 Missed Day</a><a
|
||||
>+1 Missed Day</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addMissedDay(2)"
|
||||
>+2 Missed Days</a><a
|
||||
>+2 Missed Days</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addMissedDay(8)"
|
||||
>+8 Missed Days</a><a
|
||||
>+8 Missed Days</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addMissedDay(32)"
|
||||
>+32 Missed Days</a><a
|
||||
>+32 Missed Days</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addTenGems()"
|
||||
>+10 Gems</a><a
|
||||
>+10 Gems</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addHourglass()"
|
||||
>+1 Mystic Hourglass</a><a
|
||||
>+1 Mystic Hourglass</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addGold()"
|
||||
>+500GP</a><a
|
||||
>+500GP</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="plusTenHealth()"
|
||||
>+ 10HP</a><a
|
||||
>+ 10HP</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addMana()"
|
||||
>+MP</a><a
|
||||
>+MP</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addLevelsAndGold()"
|
||||
>+Exp +GP +MP</a><a
|
||||
>+Exp +GP +MP</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addExp()"
|
||||
>+Exp</a><a
|
||||
>+Exp</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="addOneLevel()"
|
||||
>+1 Level</a><a
|
||||
>+1 Level</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
tooltip="+1000 to boss quests. 300 items to collection quests"
|
||||
@click="addQuestProgress()"
|
||||
>Quest Progress Up</a><a
|
||||
>Quest Progress Up</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="makeAdmin()"
|
||||
>Make Admin</a><a
|
||||
>Make Admin</a>
|
||||
<a
|
||||
class="btn btn-secondary"
|
||||
@click="openModifyInventoryModal()"
|
||||
>Modify Inventory</a>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-12 col-md-2 text-center">
|
||||
</div>
|
||||
<div class="col-12 col-md-2 text-center">
|
||||
<div
|
||||
class="logo svg-icon"
|
||||
v-html="icons.gryphon"
|
||||
></div>
|
||||
</div><div class="col-12 col-md-5 text-right">
|
||||
<span class="ml-4"><a
|
||||
target="_blanck"
|
||||
href="/static/privacy"
|
||||
>{{ $t('privacy') }}</a></span><span class="ml-4"><a
|
||||
target="_blanck"
|
||||
href="/static/terms"
|
||||
>{{ $t('terms') }}</a></span>
|
||||
</div>
|
||||
<div class="col-12 col-md-5 text-right">
|
||||
<span class="ml-4">
|
||||
<a
|
||||
target="_blanck"
|
||||
href="/static/privacy"
|
||||
>{{ $t('privacy') }}</a>
|
||||
</span>
|
||||
<span class="ml-4">
|
||||
<a
|
||||
target="_blanck"
|
||||
href="/static/terms"
|
||||
>{{ $t('terms') }}</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
|||
|
|
@ -9,9 +9,11 @@
|
|||
<div
|
||||
class="svg-icon social-icon"
|
||||
v-html="icons.facebookIcon"
|
||||
></div><span>{{ registering ? $t('signUpWithSocial', {social: 'Facebook'}) : $t('loginWithSocial', {social: 'Facebook'}) }}</span>
|
||||
></div>
|
||||
<span>{{ registering ? $t('signUpWithSocial', {social: 'Facebook'}) : $t('loginWithSocial', {social: 'Facebook'}) }}</span>
|
||||
</div>
|
||||
</div><div class="col-12 col-md-6">
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<div
|
||||
class="btn btn-secondary social-button"
|
||||
@click="socialAuth('google')"
|
||||
|
|
@ -19,17 +21,20 @@
|
|||
<div
|
||||
class="svg-icon social-icon"
|
||||
v-html="icons.googleIcon"
|
||||
></div><span>{{ registering ? $t('signUpWithSocial', {social: 'Google'}) : $t('loginWithSocial', {social: 'Google'}) }}</span>
|
||||
></div>
|
||||
<span>{{ registering ? $t('signUpWithSocial', {social: 'Google'}) : $t('loginWithSocial', {social: 'Google'}) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="usernameInput"
|
||||
>{{ $t('username') }}</label><input
|
||||
>{{ $t('username') }}</label>
|
||||
<input
|
||||
id="usernameInput"
|
||||
v-model="username"
|
||||
class="form-control"
|
||||
|
|
@ -37,28 +42,32 @@
|
|||
:placeholder="$t('usernamePlaceholder')"
|
||||
:class="{'input-valid': usernameValid, 'input-invalid': usernameInvalid}"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="usernameInput"
|
||||
>{{ $t('emailOrUsername') }}</label><input
|
||||
>{{ $t('emailOrUsername') }}</label>
|
||||
<input
|
||||
id="usernameInput"
|
||||
v-model="username"
|
||||
class="form-control"
|
||||
type="text"
|
||||
:placeholder="$t('emailOrUsername')"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="emailInput"
|
||||
>{{ $t('email') }}</label><input
|
||||
>{{ $t('email') }}</label>
|
||||
<input
|
||||
id="emailInput"
|
||||
v-model="email"
|
||||
class="form-control"
|
||||
|
|
@ -66,42 +75,49 @@
|
|||
:placeholder="$t('emailPlaceholder')"
|
||||
:class="{'input-invalid': emailInvalid, 'input-valid': emailValid}"
|
||||
>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label
|
||||
v-once
|
||||
for="passwordInput"
|
||||
>{{ $t('password') }}</label><a
|
||||
>{{ $t('password') }}</label>
|
||||
<a
|
||||
v-if="!registering"
|
||||
v-once
|
||||
class="float-right forgot-password"
|
||||
@click="forgotPassword = true"
|
||||
>{{ $t('forgotPassword') }}</a><input
|
||||
>{{ $t('forgotPassword') }}</a>
|
||||
<input
|
||||
id="passwordInput"
|
||||
v-model="password"
|
||||
class="form-control"
|
||||
type="password"
|
||||
:placeholder="$t(registering ? 'passwordPlaceholder' : 'password')"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="confirmPasswordInput"
|
||||
>{{ $t('confirmPassword') }}</label><input
|
||||
>{{ $t('confirmPassword') }}</label>
|
||||
<input
|
||||
id="confirmPasswordInput"
|
||||
v-model="passwordConfirm"
|
||||
class="form-control"
|
||||
type="password"
|
||||
:placeholder="$t('confirmPasswordPlaceholder')"
|
||||
:class="{'input-invalid': passwordConfirmInvalid, 'input-valid': passwordConfirmValid}"
|
||||
><small
|
||||
>
|
||||
<small
|
||||
v-once
|
||||
class="form-text"
|
||||
v-html="$t('termsAndAgreement')"
|
||||
></small>
|
||||
</div><div class="text-center">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div
|
||||
v-if="registering"
|
||||
v-once
|
||||
|
|
@ -109,7 +125,8 @@
|
|||
@click="register()"
|
||||
>
|
||||
{{ $t('joinHabitica') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!registering"
|
||||
v-once
|
||||
class="btn btn-info"
|
||||
|
|
|
|||
|
|
@ -2,20 +2,25 @@
|
|||
<div class="form-wrapper">
|
||||
<div id="top-background">
|
||||
<div class="seamless_stars_varied_opacity_repeat"></div>
|
||||
</div><form
|
||||
</div>
|
||||
<form
|
||||
v-if="!forgotPassword && !resetPasswordSetNewOne"
|
||||
id="login-form"
|
||||
@submit.prevent="handleSubmit"
|
||||
@keyup.enter="handleSubmit"
|
||||
>
|
||||
<div class="text-center">
|
||||
<div><div class="svg-icon gryphon"></div></div><div>
|
||||
<div>
|
||||
<div class="svg-icon gryphon"></div>
|
||||
</div>
|
||||
<div>
|
||||
<div
|
||||
class="svg-icon habitica-logo"
|
||||
v-html="icons.habiticaIcon"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="form-group row text-center">
|
||||
</div>
|
||||
<div class="form-group row text-center">
|
||||
<div class="col-12 col-md-6">
|
||||
<div
|
||||
class="btn btn-secondary social-button"
|
||||
|
|
@ -24,11 +29,15 @@
|
|||
<div
|
||||
class="svg-icon social-icon"
|
||||
v-html="icons.facebookIcon"
|
||||
></div><div class="text">
|
||||
></div>
|
||||
<div
|
||||
class="text"
|
||||
>
|
||||
{{ registering ? $t('signUpWithSocial', {social: 'Facebook'}) : $t('loginWithSocial', {social: 'Facebook'}) }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-12 col-md-6">
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<div
|
||||
class="btn btn-secondary social-button"
|
||||
@click="socialAuth('google')"
|
||||
|
|
@ -36,53 +45,63 @@
|
|||
<div
|
||||
class="svg-icon social-icon"
|
||||
v-html="icons.googleIcon"
|
||||
></div><div class="text">
|
||||
></div>
|
||||
<div
|
||||
class="text"
|
||||
>
|
||||
{{ registering ? $t('signUpWithSocial', {social: 'Google'}) : $t('loginWithSocial', {social: 'Google'}) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="usernameInput"
|
||||
>{{ $t('username') }}</label><input
|
||||
>{{ $t('username') }}</label>
|
||||
<input
|
||||
id="usernameInput"
|
||||
v-model="username"
|
||||
class="form-control"
|
||||
type="text"
|
||||
:placeholder="$t('usernamePlaceholder')"
|
||||
:class="{'input-valid': usernameValid, 'input-invalid': usernameInvalid}"
|
||||
><div
|
||||
>
|
||||
<div
|
||||
v-for="issue in usernameIssues"
|
||||
class="input-error"
|
||||
>
|
||||
{{ issue }}
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="usernameInput"
|
||||
>{{ $t('emailOrUsername') }}</label><input
|
||||
>{{ $t('emailOrUsername') }}</label>
|
||||
<input
|
||||
id="usernameInput"
|
||||
v-model="username"
|
||||
class="form-control"
|
||||
type="text"
|
||||
:placeholder="$t('emailOrUsername')"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="emailInput"
|
||||
>{{ $t('email') }}</label><input
|
||||
>{{ $t('email') }}</label>
|
||||
<input
|
||||
id="emailInput"
|
||||
v-model="email"
|
||||
class="form-control"
|
||||
|
|
@ -90,42 +109,49 @@
|
|||
:placeholder="$t('emailPlaceholder')"
|
||||
:class="{'input-invalid': emailInvalid, 'input-valid': emailValid}"
|
||||
>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label
|
||||
v-once
|
||||
for="passwordInput"
|
||||
>{{ $t('password') }}</label><a
|
||||
>{{ $t('password') }}</label>
|
||||
<a
|
||||
v-if="!registering"
|
||||
v-once
|
||||
class="float-right forgot-password"
|
||||
@click="forgotPassword = true"
|
||||
>{{ $t('forgotPassword') }}</a><input
|
||||
>{{ $t('forgotPassword') }}</a>
|
||||
<input
|
||||
id="passwordInput"
|
||||
v-model="password"
|
||||
class="form-control"
|
||||
type="password"
|
||||
:placeholder="$t(registering ? 'passwordPlaceholder' : 'password')"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="registering"
|
||||
class="form-group"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
for="confirmPasswordInput"
|
||||
>{{ $t('confirmPassword') }}</label><input
|
||||
>{{ $t('confirmPassword') }}</label>
|
||||
<input
|
||||
id="confirmPasswordInput"
|
||||
v-model="passwordConfirm"
|
||||
class="form-control"
|
||||
type="password"
|
||||
:placeholder="$t('confirmPasswordPlaceholder')"
|
||||
:class="{'input-invalid': passwordConfirmInvalid, 'input-valid': passwordConfirmValid}"
|
||||
><small
|
||||
>
|
||||
<small
|
||||
v-once
|
||||
class="form-text"
|
||||
v-html="$t('termsAndAgreement')"
|
||||
></small>
|
||||
</div><div class="text-center">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div
|
||||
v-if="registering"
|
||||
v-once
|
||||
|
|
@ -133,14 +159,16 @@
|
|||
@click="register()"
|
||||
>
|
||||
{{ $t('joinHabitica') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!registering"
|
||||
v-once
|
||||
class="btn btn-info"
|
||||
@click="login()"
|
||||
>
|
||||
{{ $t('login') }}
|
||||
</div><div class="toggle-links">
|
||||
</div>
|
||||
<div class="toggle-links">
|
||||
<router-link
|
||||
v-if="registering"
|
||||
:to="{name: 'login'}"
|
||||
|
|
@ -151,7 +179,8 @@
|
|||
class="toggle-link"
|
||||
v-html="$t('alreadyHaveAccountLogin')"
|
||||
></a>
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
v-if="!registering"
|
||||
:to="{name: 'register'}"
|
||||
exact="exact"
|
||||
|
|
@ -164,37 +193,46 @@
|
|||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
</form><form
|
||||
</form>
|
||||
<form
|
||||
v-if="forgotPassword"
|
||||
id="forgot-form"
|
||||
@submit.prevent="handleSubmit"
|
||||
@keyup.enter="handleSubmit"
|
||||
>
|
||||
<div class="text-center">
|
||||
<div><div class="svg-icon gryphon"></div></div><div>
|
||||
<div>
|
||||
<div class="svg-icon gryphon"></div>
|
||||
</div>
|
||||
<div>
|
||||
<div
|
||||
class="svg-icon habitica-logo"
|
||||
v-html="icons.habiticaIcon"
|
||||
></div>
|
||||
</div><div class="header">
|
||||
</div>
|
||||
<div class="header">
|
||||
<h2 v-once>
|
||||
{{ $t('emailNewPass') }}
|
||||
</h2><p v-once>
|
||||
</h2>
|
||||
<p v-once>
|
||||
{{ $t('forgotPasswordSteps') }}
|
||||
</p>
|
||||
</div>
|
||||
</div><div class="form-group row text-center">
|
||||
</div>
|
||||
<div class="form-group row text-center">
|
||||
<label
|
||||
v-once
|
||||
for="usernameInput"
|
||||
>{{ $t('email') }}</label><input
|
||||
>{{ $t('email') }}</label>
|
||||
<input
|
||||
id="usernameInput"
|
||||
v-model="username"
|
||||
class="form-control"
|
||||
type="text"
|
||||
:placeholder="$t('emailPlaceholder')"
|
||||
>
|
||||
</div><div class="text-center">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div
|
||||
v-once
|
||||
class="btn btn-info"
|
||||
|
|
@ -203,44 +241,54 @@
|
|||
{{ $t('sendLink') }}
|
||||
</div>
|
||||
</div>
|
||||
</form><form
|
||||
</form>
|
||||
<form
|
||||
v-if="resetPasswordSetNewOne"
|
||||
id="reset-password-set-new-one-form"
|
||||
@submit.prevent="handleSubmit"
|
||||
@keyup.enter="handleSubmit"
|
||||
>
|
||||
<div class="text-center">
|
||||
<div><div class="svg-icon gryphon"></div></div><div>
|
||||
<div>
|
||||
<div class="svg-icon gryphon"></div>
|
||||
</div>
|
||||
<div>
|
||||
<div
|
||||
class="svg-icon habitica-logo"
|
||||
v-html="icons.habiticaIcon"
|
||||
></div>
|
||||
</div><div class="header">
|
||||
</div>
|
||||
<div class="header">
|
||||
<h2>{{ $t('passwordResetPage') }}</h2>
|
||||
</div>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label
|
||||
v-once
|
||||
for="passwordInput"
|
||||
>{{ $t('newPass') }}</label><input
|
||||
>{{ $t('newPass') }}</label>
|
||||
<input
|
||||
id="passwordInput"
|
||||
v-model="password"
|
||||
class="form-control"
|
||||
type="password"
|
||||
:placeholder="$t('password')"
|
||||
>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label
|
||||
v-once
|
||||
for="confirmPasswordInput"
|
||||
>{{ $t('confirmPass') }}</label><input
|
||||
>{{ $t('confirmPass') }}</label>
|
||||
<input
|
||||
id="confirmPasswordInput"
|
||||
v-model="passwordConfirm"
|
||||
class="form-control"
|
||||
type="password"
|
||||
:placeholder="$t('confirmPasswordPlaceholder')"
|
||||
>
|
||||
</div><div class="text-center">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div
|
||||
class="btn btn-info"
|
||||
:enabled="!resetPasswordSetNewOneData.hasError"
|
||||
|
|
@ -249,12 +297,14 @@
|
|||
{{ $t('setNewPass') }}
|
||||
</div>
|
||||
</div>
|
||||
</form><div
|
||||
</form>
|
||||
<div
|
||||
id="bottom-wrap"
|
||||
:class="`bottom-wrap-${!registering ? 'login' : 'register'}`"
|
||||
>
|
||||
<div id="bottom-background">
|
||||
<div class="seamless_mountains_demo_repeat"></div><div class="midground_foreground_extended2"></div>
|
||||
<div class="seamless_mountains_demo_repeat"></div>
|
||||
<div class="midground_foreground_extended2"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -10,39 +10,73 @@
|
|||
:style="{margin: spritesMargin}"
|
||||
>
|
||||
<template v-if="!avatarOnly">
|
||||
<!-- Mount Body--><span
|
||||
<!-- Mount Body-->
|
||||
<span
|
||||
v-if="member.items.currentMount"
|
||||
:class="'Mount_Body_' + member.items.currentMount"
|
||||
></span>
|
||||
</template><!-- Buffs that cause visual changes to avatar: Snowman, Ghost, Flower, etc--><template v-for="(klass, item) in visualBuffs">
|
||||
</template>
|
||||
<!-- Buffs that cause visual changes to avatar: Snowman, Ghost, Flower, etc-->
|
||||
<template v-for="(klass, item) in visualBuffs">
|
||||
<span
|
||||
v-if="member.stats.buffs[item] && showVisualBuffs"
|
||||
:class="klass"
|
||||
></span>
|
||||
</template><!-- Show flower ALL THE TIME!!!--><!-- See https://github.com/HabitRPG/habitica/issues/7133--><span :class="'hair_flower_' + member.preferences.hair.flower"></span><!-- Show avatar only if not currently affected by visual buff--><template v-if="showAvatar()">
|
||||
<span :class="['chair_' + member.preferences.chair, specialMountClass]"></span><span :class="[getGearClass('back'), specialMountClass]"></span><span :class="[skinClass, specialMountClass]"></span><span :class="[member.preferences.size + '_shirt_' + member.preferences.shirt, specialMountClass]"></span><span :class="['head_0', specialMountClass]"></span><span :class="[member.preferences.size + '_' + getGearClass('armor'), specialMountClass]"></span><span :class="[getGearClass('back_collar'), specialMountClass]"></span><template v-for="type in ['bangs', 'base', 'mustache', 'beard']">
|
||||
<!-- eslint-disable-next-line max-len--><span :class="['hair_' + type + '_' + member.preferences.hair[type] + '_' + member.preferences.hair.color, specialMountClass]"></span>
|
||||
</template><span :class="[getGearClass('body'), specialMountClass]"></span><span :class="[getGearClass('eyewear'), specialMountClass]"></span><span :class="[getGearClass('head'), specialMountClass]"></span><span :class="[getGearClass('headAccessory'), specialMountClass]"></span><span :class="['hair_flower_' + member.preferences.hair.flower, specialMountClass]"></span><span
|
||||
</template>
|
||||
<!-- Show flower ALL THE TIME!!!-->
|
||||
<!-- See https://github.com/HabitRPG/habitica/issues/7133-->
|
||||
<span :class="'hair_flower_' + member.preferences.hair.flower"></span>
|
||||
<!-- Show avatar only if not currently affected by visual buff-->
|
||||
<template v-if="showAvatar()">
|
||||
<span :class="['chair_' + member.preferences.chair, specialMountClass]"></span>
|
||||
<span :class="[getGearClass('back'), specialMountClass]"></span>
|
||||
<span :class="[skinClass, specialMountClass]"></span>
|
||||
<span
|
||||
:class="[member.preferences.size + '_shirt_' + member.preferences.shirt, specialMountClass]"
|
||||
></span>
|
||||
<span :class="['head_0', specialMountClass]"></span>
|
||||
<span :class="[member.preferences.size + '_' + getGearClass('armor'), specialMountClass]"></span>
|
||||
<span :class="[getGearClass('back_collar'), specialMountClass]"></span>
|
||||
<template v-for="type in ['bangs', 'base', 'mustache', 'beard']">
|
||||
<!-- eslint-disable-next-line max-len-->
|
||||
<span
|
||||
:class="['hair_' + type + '_' + member.preferences.hair[type] + '_' + member.preferences.hair.color, specialMountClass]"
|
||||
></span>
|
||||
</template>
|
||||
<span :class="[getGearClass('body'), specialMountClass]"></span>
|
||||
<span :class="[getGearClass('eyewear'), specialMountClass]"></span>
|
||||
<span :class="[getGearClass('head'), specialMountClass]"></span>
|
||||
<span :class="[getGearClass('headAccessory'), specialMountClass]"></span>
|
||||
<span :class="['hair_flower_' + member.preferences.hair.flower, specialMountClass]"></span>
|
||||
<span
|
||||
v-if="!hideGear('shield')"
|
||||
:class="[getGearClass('shield'), specialMountClass]"
|
||||
></span><span
|
||||
></span>
|
||||
<span
|
||||
v-if="!hideGear('weapon')"
|
||||
:class="[getGearClass('weapon'), specialMountClass]"
|
||||
></span>
|
||||
</template><!-- Resting--><span
|
||||
</template>
|
||||
<!-- Resting-->
|
||||
<span
|
||||
v-if="member.preferences.sleep"
|
||||
class="zzz"
|
||||
></span><template v-if="!avatarOnly">
|
||||
<!-- Mount Head--><span
|
||||
></span>
|
||||
<template v-if="!avatarOnly">
|
||||
<!-- Mount Head-->
|
||||
<span
|
||||
v-if="member.items.currentMount"
|
||||
:class="'Mount_Head_' + member.items.currentMount"
|
||||
></span><!-- Pet--><span
|
||||
></span>
|
||||
<!-- Pet-->
|
||||
<span
|
||||
v-if="member.items.currentPet"
|
||||
class="current-pet"
|
||||
:class="'Pet-' + member.items.currentPet"
|
||||
></span>
|
||||
</template>
|
||||
</div><class-badge
|
||||
</div>
|
||||
<class-badge
|
||||
v-if="hasClass && !hideClassBadge"
|
||||
class="under-avatar"
|
||||
:member-class="member.stats.class"
|
||||
|
|
|
|||
|
|
@ -8,16 +8,19 @@
|
|||
:items="items"
|
||||
:active-sub-page="activeSubPage"
|
||||
@changeSubPage="changeSubPage($event)"
|
||||
/><div v-if="activeSubPage === 'size'">
|
||||
/>
|
||||
<div v-if="activeSubPage === 'size'">
|
||||
<customize-options
|
||||
:items="sizes"
|
||||
:current-value="user.preferences.size"
|
||||
/>
|
||||
</div><div v-if="activeSubPage === 'shirt'">
|
||||
</div>
|
||||
<div v-if="activeSubPage === 'shirt'">
|
||||
<customize-options
|
||||
:items="freeShirts"
|
||||
:current-value="user.preferences.shirt"
|
||||
/><customize-options
|
||||
/>
|
||||
<customize-options
|
||||
v-if="editing"
|
||||
:items="specialShirts"
|
||||
:current-value="user.preferences.shirt"
|
||||
|
|
|
|||
|
|
@ -22,32 +22,39 @@
|
|||
<div class="redline"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="option.gemLocked"
|
||||
class="gem-lock"
|
||||
>
|
||||
<div
|
||||
class="svg-icon gem"
|
||||
v-html="icons.gem"
|
||||
></div><span>{{ option.gem }}</span>
|
||||
</div><div
|
||||
></div>
|
||||
<span>{{ option.gem }}</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="option.goldLocked"
|
||||
class="gold-lock"
|
||||
>
|
||||
<div
|
||||
class="svg-icon gold"
|
||||
v-html="icons.gold"
|
||||
></div><span>{{ option.gold }}</span>
|
||||
></div>
|
||||
<span>{{ option.gold }}</span>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="fullSet"
|
||||
class="purchase-set"
|
||||
@click="unlock()"
|
||||
>
|
||||
<span class="label">{{ $t('purchaseAll') }}</span><div
|
||||
<span class="label">{{ $t('purchaseAll') }}</span>
|
||||
<div
|
||||
class="svg-icon gem"
|
||||
v-html="icons.gem"
|
||||
></div><span class="price">5</span>
|
||||
></div>
|
||||
<span class="price">5</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -8,12 +8,14 @@
|
|||
:items="extraSubMenuItems"
|
||||
:active-sub-page="activeSubPage"
|
||||
@changeSubPage="changeSubPage($event)"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-if="activeSubPage === 'glasses'"
|
||||
id="hair-color"
|
||||
>
|
||||
<customize-options :items="eyewear" />
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'ears'"
|
||||
id="animal-ears"
|
||||
>
|
||||
|
|
@ -22,7 +24,8 @@
|
|||
:full-set="!animalItemsOwned('headAccessory')"
|
||||
@unlock="unlock(animalItemsUnlockString('headAccessory'))"
|
||||
/>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'tails'"
|
||||
id="animal-tails"
|
||||
>
|
||||
|
|
@ -31,17 +34,20 @@
|
|||
:full-set="!animalItemsOwned('back')"
|
||||
@unlock="unlock(animalItemsUnlockString('back'))"
|
||||
/>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'headband'"
|
||||
id="headband"
|
||||
>
|
||||
<customize-options :items="headbands" />
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'wheelchair'"
|
||||
id="wheelchairs"
|
||||
>
|
||||
<customize-options :items="chairs" />
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'flower'"
|
||||
id="flowers"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -8,14 +8,16 @@
|
|||
:items="hairSubMenuItems"
|
||||
:active-sub-page="activeSubPage"
|
||||
@changeSubPage="changeSubPage($event)"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-if="activeSubPage === 'color'"
|
||||
id="hair-color"
|
||||
>
|
||||
<customize-options
|
||||
:items="freeHairColors"
|
||||
:current-value="user.preferences.hair.color"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-for="set in seasonalHairColors"
|
||||
v-if="editing && set.key !== 'undefined'"
|
||||
>
|
||||
|
|
@ -26,7 +28,8 @@
|
|||
@unlock="unlock(`hair.color.${set.keys.join(',hair.color.')}`)"
|
||||
/>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'style'"
|
||||
id="style"
|
||||
>
|
||||
|
|
@ -37,7 +40,8 @@
|
|||
@unlock="set.unlock()"
|
||||
/>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'bangs'"
|
||||
id="bangs"
|
||||
>
|
||||
|
|
@ -45,14 +49,16 @@
|
|||
:items="hairBangs"
|
||||
:current-value="user.preferences.hair.bangs"
|
||||
/>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activeSubPage === 'facialhair'"
|
||||
id="facialhair"
|
||||
>
|
||||
<customize-options
|
||||
v-if="editing"
|
||||
:items="mustacheList"
|
||||
/><customize-options
|
||||
/>
|
||||
<customize-options
|
||||
v-if="editing"
|
||||
:items="beardList"
|
||||
:full-set="isPurchaseAllNeeded('hair', ['baseHair5', 'baseHair6'], ['mustache', 'beard'])"
|
||||
|
|
|
|||
|
|
@ -8,10 +8,12 @@
|
|||
:items="skinSubMenuItems"
|
||||
:active-sub-page="activeSubPage"
|
||||
@changeSubPage="changeSubPage($event)"
|
||||
/><customize-options
|
||||
/>
|
||||
<customize-options
|
||||
:items="freeSkins"
|
||||
:current-value="user.preferences.skin"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-for="set in seasonalSkins"
|
||||
v-if="editing && set.key !== 'undefined'"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@
|
|||
<p v-markdown="bannedMessage"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="modal-footer">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="col-12 text-center">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
|
|
|
|||
|
|
@ -3,14 +3,17 @@
|
|||
<span
|
||||
v-if="owner"
|
||||
class="category-label category-label-blue"
|
||||
>{{ $t('owned') }}</span><span
|
||||
>{{ $t('owned') }}</span>
|
||||
<span
|
||||
v-if="member"
|
||||
class="category-label category-label-green"
|
||||
>{{ $t('joined') }}</span><span
|
||||
>{{ $t('joined') }}</span>
|
||||
<span
|
||||
v-for="category in categories"
|
||||
class="category-label"
|
||||
:class="{'category-label-purple':isOfficial(category)}"
|
||||
>{{ $t(category.name) }}</span><slot></slot>
|
||||
>{{ $t(category.name) }}</span>
|
||||
<slot></slot>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,32 +1,49 @@
|
|||
<template>
|
||||
<div class="row">
|
||||
<challenge-modal @updatedChallenge="updatedChallenge" /><leave-challenge-modal :challenge-id="challenge._id" /><close-challenge-modal
|
||||
<challenge-modal @updatedChallenge="updatedChallenge" />
|
||||
<leave-challenge-modal :challenge-id="challenge._id" />
|
||||
<close-challenge-modal
|
||||
:members="members"
|
||||
:challenge-id="challenge._id"
|
||||
:prize="challenge.prize"
|
||||
/><challenge-member-progress-modal :challenge-id="challenge._id" /><div class="col-12 col-md-8 standard-page">
|
||||
/>
|
||||
<challenge-member-progress-modal :challenge-id="challenge._id" />
|
||||
<div class="col-12 col-md-8 standard-page">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
<h1 v-markdown="challenge.name"></h1><div>
|
||||
<span class="mr-1 ml-0 d-block"><strong v-once>{{ $t('createdBy') }}:</strong><user-link
|
||||
class="mx-1"
|
||||
:user="challenge.leader"
|
||||
/></span><span
|
||||
<h1 v-markdown="challenge.name"></h1>
|
||||
<div>
|
||||
<span class="mr-1 ml-0 d-block">
|
||||
<strong v-once>{{ $t('createdBy') }}:</strong>
|
||||
<user-link
|
||||
class="mx-1"
|
||||
:user="challenge.leader"
|
||||
/>
|
||||
</span>
|
||||
<span
|
||||
v-if="challenge.group && challenge.group.name !== 'Tavern'"
|
||||
class="mr-1 ml-0 d-block"
|
||||
><strong v-once>{{ $t(challenge.group.type) }}:</strong><group-link
|
||||
class="mx-1"
|
||||
:group="challenge.group"
|
||||
/></span><!-- @TODO: make challenge.author a variable inside the createdBy string (helps with RTL languages)--><!-- @TODO: Implement in V2 strong.margin-left(v-once).svg-icon.calendar-icon(v-html="icons.calendarIcon")
|
||||
>
|
||||
<strong v-once>{{ $t(challenge.group.type) }}:</strong>
|
||||
<group-link
|
||||
class="mx-1"
|
||||
:group="challenge.group"
|
||||
/>
|
||||
</span>
|
||||
<!-- @TODO: make challenge.author a variable inside the createdBy string (helps with RTL languages)-->
|
||||
<!-- @TODO: Implement in V2 strong.margin-left(v-once).svg-icon.calendar-icon(v-html="icons.calendarIcon")
|
||||
| {{$t('endDate')}}
|
||||
// "endDate": "End Date: <% endDate %>",--><!-- span {{challenge.endDate}}-->
|
||||
</div><div class="tags">
|
||||
// "endDate": "End Date: <% endDate %>",-->
|
||||
<!-- span {{challenge.endDate}}-->
|
||||
</div>
|
||||
<div class="tags">
|
||||
<span
|
||||
v-for="tag in challenge.tags"
|
||||
class="tag"
|
||||
>{{ tag }}</span>
|
||||
</div>
|
||||
</div><div class="col-12 col-md-6 text-right">
|
||||
</div>
|
||||
<div class="col-12 col-md-6 text-right">
|
||||
<div
|
||||
class="box"
|
||||
@click="showMemberModal()"
|
||||
|
|
@ -34,17 +51,22 @@
|
|||
<div
|
||||
class="svg-icon member-icon"
|
||||
v-html="icons.memberIcon"
|
||||
></div>{{ challenge.memberCount }}<div
|
||||
></div>
|
||||
{{ challenge.memberCount }}
|
||||
<div
|
||||
v-once
|
||||
class="details"
|
||||
>
|
||||
{{ $t('participantsTitle') }}
|
||||
</div>
|
||||
</div><div class="box">
|
||||
</div>
|
||||
<div class="box">
|
||||
<div
|
||||
class="svg-icon gem-icon"
|
||||
v-html="icons.gemIcon"
|
||||
></div>{{ challenge.prize }}<div
|
||||
></div>
|
||||
{{ challenge.prize }}
|
||||
<div
|
||||
v-once
|
||||
class="details"
|
||||
>
|
||||
|
|
@ -52,35 +74,44 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row challenge-actions">
|
||||
</div>
|
||||
<div class="row challenge-actions">
|
||||
<div class="col-12 col-md-6">
|
||||
<strong class="view-progress">{{ $t('viewProgressOf') }}</strong><member-search-dropdown
|
||||
<strong class="view-progress">{{ $t('viewProgressOf') }}</strong>
|
||||
<member-search-dropdown
|
||||
:text="$t('selectParticipant')"
|
||||
:members="members"
|
||||
:challenge-id="challengeId"
|
||||
@member-selected="openMemberProgressModal"
|
||||
/>
|
||||
</div><div class="col-12 col-md-6 text-right">
|
||||
<span v-if="isLeader || isAdmin"><b-dropdown
|
||||
class="create-dropdown"
|
||||
:text="$t('addTaskToChallenge')"
|
||||
:variant="'success'"
|
||||
><b-dropdown-item
|
||||
v-for="type in columns"
|
||||
:key="type"
|
||||
@click="createTask(type)"
|
||||
>{{ $t(type) }}</b-dropdown-item></b-dropdown><task-modal
|
||||
ref="taskModal"
|
||||
:task="workingTask"
|
||||
:purpose="taskFormPurpose"
|
||||
:challenge-id="challengeId"
|
||||
@cancel="cancelTaskModal()"
|
||||
@taskCreated="taskCreated"
|
||||
@taskEdited="taskEdited"
|
||||
@taskDestroyed="taskDestroyed"
|
||||
/></span>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-12 col-md-6 text-right">
|
||||
<span v-if="isLeader || isAdmin">
|
||||
<b-dropdown
|
||||
class="create-dropdown"
|
||||
:text="$t('addTaskToChallenge')"
|
||||
:variant="'success'"
|
||||
>
|
||||
<b-dropdown-item
|
||||
v-for="type in columns"
|
||||
:key="type"
|
||||
@click="createTask(type)"
|
||||
>{{ $t(type) }}</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
<task-modal
|
||||
ref="taskModal"
|
||||
:task="workingTask"
|
||||
:purpose="taskFormPurpose"
|
||||
:challenge-id="challengeId"
|
||||
@cancel="cancelTaskModal()"
|
||||
@taskCreated="taskCreated"
|
||||
@taskEdited="taskEdited"
|
||||
@taskDestroyed="taskDestroyed"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<task-column
|
||||
v-for="column in columns"
|
||||
v-if="tasksByType[column].length > 0"
|
||||
|
|
@ -90,10 +121,11 @@
|
|||
:task-list-override="tasksByType[column]"
|
||||
:show-options="showOptions"
|
||||
@editTask="editTask"
|
||||
@taskDestroyed="taskDestroyed"
|
||||
@taskDestroyed="taskDestroyed"
|
||||
/>
|
||||
</div>
|
||||
</div><div class="col-12 col-md-4 sidebar standard-page">
|
||||
</div>
|
||||
<div class="col-12 col-md-4 sidebar standard-page">
|
||||
<div
|
||||
v-if="canJoin"
|
||||
class="button-container"
|
||||
|
|
@ -105,7 +137,8 @@
|
|||
>
|
||||
{{ $t('joinChallenge') }}
|
||||
</button>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="isLeader || isAdmin"
|
||||
class="button-container"
|
||||
>
|
||||
|
|
@ -116,7 +149,8 @@
|
|||
>
|
||||
{{ $t('editChallenge') }}
|
||||
</button>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="isLeader || isAdmin"
|
||||
class="button-container"
|
||||
>
|
||||
|
|
@ -127,7 +161,8 @@
|
|||
>
|
||||
{{ $t('clone') }}
|
||||
</button>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="isLeader || isAdmin"
|
||||
class="button-container"
|
||||
>
|
||||
|
|
@ -138,7 +173,8 @@
|
|||
>
|
||||
{{ $t('exportChallengeCsv') }}
|
||||
</button>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="isLeader || isAdmin"
|
||||
class="button-container"
|
||||
>
|
||||
|
|
@ -149,13 +185,16 @@
|
|||
>
|
||||
{{ $t('endChallenge') }}
|
||||
</button>
|
||||
</div><div>
|
||||
</div>
|
||||
<div>
|
||||
<sidebar-section :title="$t('challengeSummary')">
|
||||
<p v-markdown="challenge.summary"></p>
|
||||
</sidebar-section><sidebar-section :title="$t('challengeDescription')">
|
||||
</sidebar-section>
|
||||
<sidebar-section :title="$t('challengeDescription')">
|
||||
<p v-markdown="challenge.description"></p>
|
||||
</sidebar-section>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="isMember"
|
||||
class="text-center"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -5,23 +5,30 @@
|
|||
<span
|
||||
class="svg-icon"
|
||||
v-html="icons.gemIcon"
|
||||
></span><span class="value">{{ challenge.prize }}</span>
|
||||
</div><div class="label">
|
||||
></span>
|
||||
<span class="value">{{ challenge.prize }}</span>
|
||||
</div>
|
||||
<div class="label">
|
||||
{{ $t('prize') }}
|
||||
</div>
|
||||
</div><div class="challenge-header">
|
||||
</div>
|
||||
<div class="challenge-header">
|
||||
<router-link :to="{ name: 'challenge', params: { challengeId: challenge._id } }">
|
||||
<h3
|
||||
v-markdown="challenge.name"
|
||||
class="challenge-title"
|
||||
></h3>
|
||||
</router-link><div class="meta-info">
|
||||
</router-link>
|
||||
<div class="meta-info">
|
||||
<div class="member-count">
|
||||
<div
|
||||
class="svg-icon user-icon"
|
||||
v-html="icons.memberIcon"
|
||||
></div><span class="count-label">{{ challenge.memberCount }}</span>
|
||||
</div><div class="divider"></div><div
|
||||
></div>
|
||||
<span class="count-label">{{ challenge.memberCount }}</span>
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<div
|
||||
v-if="isOfficial"
|
||||
class="official"
|
||||
>
|
||||
|
|
@ -29,35 +36,42 @@
|
|||
class="svg-icon user-icon"
|
||||
v-html="icons.officialIcon"
|
||||
></div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="fullLayout"
|
||||
class="owner"
|
||||
>
|
||||
<div class="owner-item">
|
||||
<strong>{{ $t('createdBy') }}:</strong><user-link
|
||||
<strong>{{ $t('createdBy') }}:</strong>
|
||||
<user-link
|
||||
class="mx-1"
|
||||
:user="challenge.leader"
|
||||
/>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="challenge.group && !isTavern(challenge.group)"
|
||||
class="owner-item"
|
||||
>
|
||||
<strong>{{ $t(challenge.group.type) }}:</strong><group-link
|
||||
<strong>{{ $t(challenge.group.type) }}:</strong>
|
||||
<group-link
|
||||
class="mx-1"
|
||||
:group="challenge.group"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><category-tags
|
||||
</div>
|
||||
<category-tags
|
||||
class="challenge-categories"
|
||||
:categories="challenge.categories"
|
||||
:owner="isOwner"
|
||||
:member="isMember"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-markdown="challenge.summary"
|
||||
class="challenge-description"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="fullLayout"
|
||||
class="well-wrapper"
|
||||
>
|
||||
|
|
@ -71,8 +85,10 @@
|
|||
class="svg-icon"
|
||||
:class="task.label + '-icon'"
|
||||
v-html="task.icon"
|
||||
></div><span class="value">{{ task.value }}</span>
|
||||
</div><div class="label">
|
||||
></div>
|
||||
<span class="value">{{ task.value }}</span>
|
||||
</div>
|
||||
<div class="label">
|
||||
{{ $t(task.label) }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@
|
|||
{{ $t('awardWinners') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<task-column
|
||||
v-for="column in columns"
|
||||
:key="column"
|
||||
|
|
|
|||
|
|
@ -7,39 +7,62 @@
|
|||
>
|
||||
<div class="form">
|
||||
<div class="form-group">
|
||||
<label><strong v-once>{{ $t('name') }} *</strong></label><b-form-input
|
||||
<label>
|
||||
<strong v-once>{{ $t('name') }} *</strong>
|
||||
</label>
|
||||
<b-form-input
|
||||
v-model="workingChallenge.name"
|
||||
type="text"
|
||||
:placeholder="$t('challengeNamePlaceholder')"
|
||||
/>
|
||||
</div><div class="form-group">
|
||||
<label><strong v-once>{{ $t('shortName') }} *</strong></label><b-form-input
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<strong v-once>{{ $t('shortName') }} *</strong>
|
||||
</label>
|
||||
<b-form-input
|
||||
v-model="workingChallenge.shortName"
|
||||
type="text"
|
||||
:placeholder="$t('shortNamePlaceholder')"
|
||||
/>
|
||||
</div><div class="form-group">
|
||||
<label><strong v-once>{{ $t('challengeSummary') }} *</strong></label><div class="summary-count">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<strong v-once>{{ $t('challengeSummary') }} *</strong>
|
||||
</label>
|
||||
<div
|
||||
class="summary-count"
|
||||
>
|
||||
{{ $t('charactersRemaining', {characters: charactersRemaining}) }}
|
||||
</div><textarea
|
||||
</div>
|
||||
<textarea
|
||||
v-model="workingChallenge.summary"
|
||||
class="summary-textarea form-control"
|
||||
:placeholder="$t('challengeSummaryPlaceholder')"
|
||||
></textarea>
|
||||
</div><div class="form-group">
|
||||
<label><strong v-once>{{ $t('challengeDescription') }} *</strong></label><a
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<strong v-once>{{ $t('challengeDescription') }} *</strong>
|
||||
</label>
|
||||
<a
|
||||
v-markdown="$t('markdownFormattingHelp')"
|
||||
class="float-right"
|
||||
></a><textarea
|
||||
></a>
|
||||
<textarea
|
||||
v-model="workingChallenge.description"
|
||||
class="description-textarea form-control"
|
||||
:placeholder="$t('challengeDescriptionPlaceholder')"
|
||||
></textarea>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="creating"
|
||||
class="form-group"
|
||||
>
|
||||
<label><strong v-once>{{ $t('challengeGuild') }} *</strong></label><select
|
||||
<label>
|
||||
<strong v-once>{{ $t('challengeGuild') }} *</strong>
|
||||
</label>
|
||||
<select
|
||||
v-model="workingChallenge.group"
|
||||
class="form-control"
|
||||
>
|
||||
|
|
@ -50,24 +73,30 @@
|
|||
{{ group.name }}
|
||||
</option>
|
||||
</select>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="workingChallenge.categories"
|
||||
class="form-group"
|
||||
>
|
||||
<label><strong v-once>{{ $t('categories') }} *</strong></label><div
|
||||
<label>
|
||||
<strong v-once>{{ $t('categories') }} *</strong>
|
||||
</label>
|
||||
<div
|
||||
class="category-wrap"
|
||||
@click.prevent="toggleCategorySelect"
|
||||
>
|
||||
<span
|
||||
v-if="workingChallenge.categories.length === 0"
|
||||
class="category-select"
|
||||
>{{ $t('none') }}</span><div
|
||||
>{{ $t('none') }}</span>
|
||||
<div
|
||||
v-for="category in workingChallenge.categories"
|
||||
class="category-label"
|
||||
>
|
||||
{{ $t(categoriesHashByKey[category]) }}
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="showCategorySelect && creating"
|
||||
class="category-box"
|
||||
>
|
||||
|
|
@ -84,46 +113,58 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="`challenge-modal-cat-${group.key}`"
|
||||
>{{ $t(group.label) }}</label>
|
||||
</div>
|
||||
</div><button
|
||||
</div>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click.prevent="toggleCategorySelect"
|
||||
>
|
||||
{{ $t('close') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><!-- @TODO: Implement in V2 .form-grouplabel
|
||||
</div>
|
||||
<!-- @TODO: Implement in V2 .form-grouplabel
|
||||
strong(v-once) {{$t('endDate')}}
|
||||
b-form-input.end-date-input--><div
|
||||
v-if="creating"
|
||||
class="form-group"
|
||||
>
|
||||
<label><strong v-once>{{ $t('prize') }}</strong></label><input
|
||||
v-model="workingChallenge.prize"
|
||||
type="number"
|
||||
:min="minPrize"
|
||||
:max="maxPrize"
|
||||
>
|
||||
</div><div class="row footer-wrap">
|
||||
b-form-input.end-date-input-->
|
||||
<div
|
||||
v-if="creating"
|
||||
class="form-group"
|
||||
>
|
||||
<label>
|
||||
<strong v-once>{{ $t('prize') }}</strong>
|
||||
</label>
|
||||
<input
|
||||
v-model="workingChallenge.prize"
|
||||
type="number"
|
||||
:min="minPrize"
|
||||
:max="maxPrize"
|
||||
>
|
||||
</div>
|
||||
<div class="row footer-wrap">
|
||||
<div class="col-12 text-center submit-button-wrapper">
|
||||
<div
|
||||
v-if="insufficientGemsForTavernChallenge"
|
||||
class="alert alert-warning"
|
||||
>
|
||||
You do not have enough gems to create a Tavern challenge
|
||||
</div><!-- @TODO if buy gems button is added, add analytics tracking to it--><!-- see https://github.com/HabitRPG/habitica/blob/develop/website/views/options/social/challenges.jade#L134--><button
|
||||
</div>
|
||||
<!-- @TODO if buy gems button is added, add analytics tracking to it-->
|
||||
<!-- see https://github.com/HabitRPG/habitica/blob/develop/website/views/options/social/challenges.jade#L134-->
|
||||
<button
|
||||
v-if="creating && !cloning"
|
||||
class="btn btn-primary"
|
||||
:disabled="loading"
|
||||
@click="createChallenge()"
|
||||
>
|
||||
{{ $t('createChallengeAddTasks') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
v-if="cloning"
|
||||
v-once
|
||||
class="btn btn-primary"
|
||||
|
|
@ -131,7 +172,8 @@ type="number"
|
|||
@click="createChallenge()"
|
||||
>
|
||||
{{ $t('createChallengeCloneTasks') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
v-if="!creating && !cloning"
|
||||
v-once
|
||||
class="btn btn-primary"
|
||||
|
|
@ -139,7 +181,8 @@ type="number"
|
|||
>
|
||||
{{ $t('updateChallenge') }}
|
||||
</button>
|
||||
</div><div class="col-12 text-center">
|
||||
</div>
|
||||
<div class="col-12 text-center">
|
||||
<p v-once>
|
||||
{{ $t('challengeMinimum') }}
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -15,21 +15,25 @@
|
|||
>
|
||||
{{ $t('endChallenge') }}
|
||||
</h2>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col-12">
|
||||
<div class="support-habitica">
|
||||
<!-- @TODO: Add challenge achievement badge here-->
|
||||
<!-- @TODO: Add challenge achievement badge here-->
|
||||
</div>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<strong v-once>{{ $t('selectChallengeWinnersDescription') }}</strong>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<member-search-dropdown
|
||||
:text="winnerText"
|
||||
:members="members"
|
||||
:challenge-id="challengeId"
|
||||
@member-selected="selectMember"
|
||||
/>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-primary"
|
||||
|
|
@ -37,13 +41,17 @@
|
|||
>
|
||||
{{ $t('awardWinners') }}
|
||||
</button>
|
||||
</div><div class="col-12">
|
||||
<hr><div class="or">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<div class="or">
|
||||
{{ $t('or') }}
|
||||
</div>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<strong v-once>{{ $t('doYouWantedToDeleteChallenge') }}</strong>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-danger"
|
||||
|
|
@ -52,7 +60,8 @@
|
|||
{{ $t('deleteChallenge') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
slot="modal-footer"
|
||||
class="footer-wrap"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,33 @@
|
|||
<template>
|
||||
<div class="row">
|
||||
<challenge-modal @createChallenge="challengeCreated" /><sidebar
|
||||
<challenge-modal @createChallenge="challengeCreated" />
|
||||
<sidebar
|
||||
@search="updateSearch"
|
||||
@filter="updateFilters"
|
||||
/><div class="col-12 col-md-10 standard-page">
|
||||
/>
|
||||
<div class="col-12 col-md-10 standard-page">
|
||||
<div class="row header-row">
|
||||
<div class="col-md-8 text-left">
|
||||
<h1 v-once>
|
||||
{{ $t('findChallenges') }}
|
||||
</h1>
|
||||
</div><div class="col-md-4">
|
||||
<!-- @TODO: implement sorting span.dropdown-label {{ $t('sortBy') }}b-dropdown(:text="$t('sort')", right=true)
|
||||
b-dropdown-item(v-for='sortOption in sortOptions', :key="sortOption.value", @click='sort(sortOption.value)') {{sortOption.text}}--><button
|
||||
class="btn btn-secondary create-challenge-button float-right"
|
||||
@click="createChallenge()"
|
||||
>
|
||||
<div
|
||||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div><span v-once>{{ $t('createChallenge') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-md-4">
|
||||
<!-- @TODO: implement sorting span.dropdown-label {{ $t('sortBy') }}b-dropdown(:text="$t('sort')", right=true)
|
||||
b-dropdown-item(v-for='sortOption in sortOptions', :key="sortOption.value", @click='sort(sortOption.value)') {{sortOption.text}}-->
|
||||
<button
|
||||
class="btn btn-secondary create-challenge-button float-right"
|
||||
@click="createChallenge()"
|
||||
>
|
||||
<div
|
||||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div>
|
||||
<span v-once>{{ $t('createChallenge') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="!loading && filteredChallenges.length === 0"
|
||||
class="no-challenges text-center col-md-6 offset-3"
|
||||
|
|
@ -30,13 +36,15 @@ v-html="icons.positiveIcon"
|
|||
{{ $t('noChallengeMatchFilters') }}
|
||||
</h2>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-for="challenge in filteredChallenges"
|
||||
class="col-12 col-md-6"
|
||||
>
|
||||
<challenge-item :challenge="challenge" />
|
||||
</div><mugen-scroll
|
||||
</div>
|
||||
<mugen-scroll
|
||||
v-show="loading"
|
||||
:handler="infiniteScrollTrigger"
|
||||
:should-handle="!loading && canLoadMore"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
<challenge-modal
|
||||
:group-id="groupId"
|
||||
@createChallenge="challengeCreated"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-if="challenges.length === 0"
|
||||
class="row no-quest-section"
|
||||
>
|
||||
|
|
@ -11,24 +12,29 @@
|
|||
<div
|
||||
class="svg-icon challenge-icon"
|
||||
v-html="icons.challengeIcon"
|
||||
></div><h4 v-once>
|
||||
></div>
|
||||
<h4 v-once>
|
||||
{{ $t('haveNoChallenges') }}
|
||||
</h4><p v-once>
|
||||
</h4>
|
||||
<p v-once>
|
||||
{{ $t('challengeDetails') }}
|
||||
</p><button
|
||||
</p>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="createChallenge()"
|
||||
>
|
||||
{{ $t('createChallenge') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><template v-else>
|
||||
</div>
|
||||
<template v-else>
|
||||
<challenge-item
|
||||
v-for="challenge in challenges"
|
||||
:key="challenge._id"
|
||||
:challenge="challenge"
|
||||
:full-layout="false"
|
||||
/><div class="col-12 text-center">
|
||||
/>
|
||||
<div class="col-12 text-center">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="createChallenge()"
|
||||
|
|
|
|||
|
|
@ -7,14 +7,16 @@
|
|||
:class="{'active': $route.name === 'myChallenges'}"
|
||||
>
|
||||
{{ $t('myChallenges') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'findChallenges'}"
|
||||
:class="{'active': $route.name === 'findChallenges'}"
|
||||
>
|
||||
{{ $t('findChallenges') }}
|
||||
</router-link>
|
||||
</secondary-menu><div class="col-12">
|
||||
</secondary-menu>
|
||||
<div class="col-12">
|
||||
<router-view />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,15 @@
|
|||
:hide-footer="true"
|
||||
>
|
||||
<div class="modal-body">
|
||||
<h2>{{ $t('confirmKeepChallengeTasks') }}</h2><div>
|
||||
<h2>{{ $t('confirmKeepChallengeTasks') }}</h2>
|
||||
<div>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="leaveChallenge('keep')"
|
||||
>
|
||||
{{ $t('keepThem') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-danger"
|
||||
@click="leaveChallenge('remove-all')"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,33 @@
|
|||
<template>
|
||||
<div class="row">
|
||||
<challenge-modal @createChallenge="challengeCreated" /><sidebar
|
||||
<challenge-modal @createChallenge="challengeCreated" />
|
||||
<sidebar
|
||||
@search="updateSearch"
|
||||
@filter="updateFilters"
|
||||
/><div class="col-10 standard-page">
|
||||
/>
|
||||
<div class="col-10 standard-page">
|
||||
<div class="row header-row">
|
||||
<div class="col-md-8 text-left">
|
||||
<h1 v-once>
|
||||
{{ $t('myChallenges') }}
|
||||
</h1>
|
||||
</div><div class="col-md-4">
|
||||
<!-- @TODO: implement sorting span.dropdown-label {{ $t('sortBy') }}b-dropdown(:text="$t('sort')", right=true)
|
||||
b-dropdown-item(v-for='sortOption in sortOptions', :key="sortOption.value", @click='sort(sortOption.value)') {{sortOption.text}}--><button
|
||||
class="btn btn-secondary create-challenge-button float-right"
|
||||
@click="createChallenge()"
|
||||
>
|
||||
<div
|
||||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div><span v-once>{{ $t('createChallenge') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-md-4">
|
||||
<!-- @TODO: implement sorting span.dropdown-label {{ $t('sortBy') }}b-dropdown(:text="$t('sort')", right=true)
|
||||
b-dropdown-item(v-for='sortOption in sortOptions', :key="sortOption.value", @click='sort(sortOption.value)') {{sortOption.text}}-->
|
||||
<button
|
||||
class="btn btn-secondary create-challenge-button float-right"
|
||||
@click="createChallenge()"
|
||||
>
|
||||
<div
|
||||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div>
|
||||
<span v-once>{{ $t('createChallenge') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="!loading && challenges.length === 0"
|
||||
class="no-challenges text-center col-md-6 offset-3"
|
||||
|
|
@ -29,15 +35,19 @@ v-html="icons.positiveIcon"
|
|||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.challengeIcon"
|
||||
></div><h2 v-once>
|
||||
></div>
|
||||
<h2 v-once>
|
||||
{{ $t('noChallengeTitle') }}
|
||||
</h2><p v-once>
|
||||
</h2>
|
||||
<p v-once>
|
||||
{{ $t('challengeDescription1') }}
|
||||
</p><p v-once>
|
||||
</p>
|
||||
<p v-once>
|
||||
{{ $t('challengeDescription2') }}
|
||||
</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="!loading && challenges.length > 0 && filteredChallenges.length === 0"
|
||||
class="no-challenges text-center col-md-6 offset-3"
|
||||
|
|
@ -46,13 +56,15 @@ v-html="icons.positiveIcon"
|
|||
{{ $t('noChallengeMatchFilters') }}
|
||||
</h2>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-for="challenge in filteredChallenges"
|
||||
class="col-12 col-md-6"
|
||||
>
|
||||
<challenge-item :challenge="challenge" />
|
||||
</div><mugen-scroll
|
||||
</div>
|
||||
<mugen-scroll
|
||||
v-show="loading"
|
||||
:handler="infiniteScrollTrigger"
|
||||
:should-handle="!loading && canLoadMore"
|
||||
|
|
|
|||
|
|
@ -7,11 +7,14 @@
|
|||
type="text"
|
||||
:placeholder="$t('search')"
|
||||
>
|
||||
</div><form>
|
||||
</div>
|
||||
<form>
|
||||
<h2 v-once>
|
||||
{{ $t('filter') }}
|
||||
</h2><div class="form-group">
|
||||
<h3>{{ $t('category') }}</h3><div
|
||||
</h2>
|
||||
<div class="form-group">
|
||||
<h3>{{ $t('category') }}</h3>
|
||||
<div
|
||||
v-for="group in categoryOptions"
|
||||
:key="group.key"
|
||||
class="form-check"
|
||||
|
|
@ -23,18 +26,21 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="group.key"
|
||||
>{{ $t(group.label) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="$route.name !== 'findChallenges'"
|
||||
class="form-group"
|
||||
>
|
||||
<h3>{{ $t('membership') }}</h3><div
|
||||
<h3>{{ $t('membership') }}</h3>
|
||||
<div
|
||||
v-for="group in roleOptions"
|
||||
:key="group.key"
|
||||
class="form-check"
|
||||
|
|
@ -46,15 +52,18 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="group.key"
|
||||
>{{ $t(group.label) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="form-group">
|
||||
<h3>{{ $t('ownership') }}</h3><div
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<h3>{{ $t('ownership') }}</h3>
|
||||
<div
|
||||
v-for="group in ownershipOptions"
|
||||
:key="group.key"
|
||||
class="form-check"
|
||||
|
|
@ -66,7 +75,8 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="group.key"
|
||||
|
|
|
|||
|
|
@ -12,14 +12,18 @@
|
|||
@mouseenter="setHover(result)"
|
||||
@mouseleave="resetSelection()"
|
||||
>
|
||||
<span><h3
|
||||
class="profile-name"
|
||||
:class="userLevelStyle(result.msg)"
|
||||
>{{ result.displayName }}</h3><div
|
||||
v-if="showTierStyle(result.msg)"
|
||||
class="svg-icon"
|
||||
v-html="tierIcon(result.msg)"
|
||||
></div></span><span
|
||||
<span>
|
||||
<h3
|
||||
class="profile-name"
|
||||
:class="userLevelStyle(result.msg)"
|
||||
>{{ result.displayName }}</h3>
|
||||
<div
|
||||
v-if="showTierStyle(result.msg)"
|
||||
class="svg-icon"
|
||||
v-html="tierIcon(result.msg)"
|
||||
></div>
|
||||
</span>
|
||||
<span
|
||||
v-if="result.username"
|
||||
class="username ml-2"
|
||||
:class="{'hover-foreground': result.hover}"
|
||||
|
|
|
|||
|
|
@ -3,37 +3,49 @@
|
|||
<div
|
||||
v-if="isUserMentioned"
|
||||
class="mentioned-icon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="!inbox && user.contributor.admin && msg.flagCount"
|
||||
class="message-hidden"
|
||||
>
|
||||
{{ flagCountDescription }}
|
||||
</div><div class="card-body">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<user-link
|
||||
:user-id="msg.uuid"
|
||||
:name="msg.user"
|
||||
:backer="msg.backer"
|
||||
:contributor="msg.contributor"
|
||||
/><p class="time">
|
||||
/>
|
||||
<p class="time">
|
||||
<span
|
||||
v-if="msg.username"
|
||||
class="mr-1"
|
||||
>@{{ msg.username }}</span><span
|
||||
>@{{ msg.username }}</span>
|
||||
<span
|
||||
v-if="msg.username"
|
||||
class="mr-1"
|
||||
>•</span><span
|
||||
v-b-tooltip=""
|
||||
>•</span>
|
||||
<span
|
||||
v-b-tooltip
|
||||
:title="msg.timestamp | date"
|
||||
>{{ msg.timestamp | timeAgo }} </span><span v-if="msg.client && user.contributor.level >= 4"> ({{ msg.client }})</span>
|
||||
</p><div
|
||||
>{{ msg.timestamp | timeAgo }} </span>
|
||||
<span v-if="msg.client && user.contributor.level >= 4">({{ msg.client }})</span>
|
||||
</p>
|
||||
<div
|
||||
class="text"
|
||||
v-html="atHighlight(parseMarkdown(msg.text))"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="isMessageReported && (inbox === true)"
|
||||
class="reported"
|
||||
>
|
||||
<span v-once>{{ $t('reportedMessage') }}</span><br><span v-once>{{ $t('canDeleteNow') }}</span>
|
||||
</div><hr><div
|
||||
<span v-once>{{ $t('reportedMessage') }}</span>
|
||||
<br>
|
||||
<span v-once>{{ $t('canDeleteNow') }}</span>
|
||||
</div>
|
||||
<hr>
|
||||
<div
|
||||
v-if="msg.id"
|
||||
class="d-flex"
|
||||
>
|
||||
|
|
@ -45,8 +57,10 @@
|
|||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.copy"
|
||||
></div><div>{{ $t('copyAsTodo') }}</div>
|
||||
</div><div
|
||||
></div>
|
||||
<div>{{ $t('copyAsTodo') }}</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="(inbox || (user.flags.communityGuidelinesAccepted && msg.uuid !== 'system')) && (!isMessageReported || user.contributor.admin)"
|
||||
class="action d-flex align-items-center"
|
||||
@click="report(msg)"
|
||||
|
|
@ -55,10 +69,12 @@
|
|||
v-once
|
||||
class="svg-icon"
|
||||
v-html="icons.report"
|
||||
></div><div v-once>
|
||||
></div>
|
||||
<div v-once>
|
||||
{{ $t('report') }}
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="msg.uuid === user._id || inbox || user.contributor.admin"
|
||||
class="action d-flex align-items-center"
|
||||
@click="remove()"
|
||||
|
|
@ -67,10 +83,12 @@
|
|||
v-once
|
||||
class="svg-icon"
|
||||
v-html="icons.delete"
|
||||
></div><div v-once>
|
||||
></div>
|
||||
<div v-once>
|
||||
{{ $t('delete') }}
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!inbox"
|
||||
v-b-tooltip="{title: likeTooltip(msg.likes[user._id])}"
|
||||
class="ml-auto d-flex"
|
||||
|
|
@ -85,8 +103,10 @@
|
|||
class="svg-icon"
|
||||
:title="$t('liked')"
|
||||
v-html="icons.liked"
|
||||
></div>+{{ likeCount }}
|
||||
</div><div
|
||||
></div>
|
||||
+{{ likeCount }}
|
||||
</div>
|
||||
<div
|
||||
v-if="likeCount === 0"
|
||||
class="action d-flex align-items-center mr-0"
|
||||
:class="{activeLike: msg.likes[user._id]}"
|
||||
|
|
@ -98,7 +118,8 @@
|
|||
v-html="icons.like"
|
||||
></div>
|
||||
</div>
|
||||
</div><span v-if="!msg.likes[user._id] && !inbox">{{ $t('like') }}</span>
|
||||
</div>
|
||||
<span v-if="!msg.likes[user._id] && !inbox">{{ $t('like') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -11,21 +11,26 @@
|
|||
:group-id="groupId"
|
||||
/>
|
||||
</div>
|
||||
</div><div class="row loadmore">
|
||||
</div>
|
||||
<div class="row loadmore">
|
||||
<div v-if="canLoadMore">
|
||||
<div class="loadmore-divider"></div><button
|
||||
<div class="loadmore-divider"></div>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="triggerLoad()"
|
||||
>
|
||||
{{ $t('loadEarlierMessages') }}
|
||||
</button><div class="loadmore-divider"></div>
|
||||
</div><h2
|
||||
</button>
|
||||
<div class="loadmore-divider"></div>
|
||||
</div>
|
||||
<h2
|
||||
v-show="isLoading"
|
||||
class="col-12 loading"
|
||||
>
|
||||
{{ $t('loading') }}
|
||||
</h2>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-for="(msg, index) in messages"
|
||||
v-if="chat && canViewFlag(msg)"
|
||||
:class="{row: inbox}"
|
||||
|
|
@ -44,7 +49,8 @@
|
|||
:hide-class-badge="true"
|
||||
:class="{'inbox-avatar-left': inbox}"
|
||||
@click.native="showMemberModal(msg.uuid)"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
class="card"
|
||||
:class="{'col-10': inbox}"
|
||||
>
|
||||
|
|
@ -58,7 +64,8 @@
|
|||
@chat-card-mounted="itemWasMounted"
|
||||
/>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="user._id === msg.uuid"
|
||||
class="d-flex"
|
||||
:class="{'flex-grow-1': inbox}"
|
||||
|
|
@ -76,7 +83,8 @@
|
|||
@show-member-modal="showMemberModal"
|
||||
@chat-card-mounted="itemWasMounted"
|
||||
/>
|
||||
</div><avatar
|
||||
</div>
|
||||
<avatar
|
||||
v-if="msg.userStyles || (cachedProfileData[msg.uuid] && !cachedProfileData[msg.uuid].rejected)"
|
||||
:member="msg.userStyles || cachedProfileData[msg.uuid]"
|
||||
:avatar-only="true"
|
||||
|
|
|
|||
|
|
@ -11,24 +11,29 @@
|
|||
class="form-control"
|
||||
type="text"
|
||||
>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea
|
||||
v-model="task.notes"
|
||||
class="form-control"
|
||||
rows="5"
|
||||
focus-element="true"
|
||||
></textarea>
|
||||
</div><hr><task
|
||||
</div>
|
||||
<hr>
|
||||
<task
|
||||
v-if="task._id"
|
||||
:is-user="isUser"
|
||||
:task="task"
|
||||
/><div class="modal-footer">
|
||||
/>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="close()"
|
||||
>
|
||||
{{ $t('close') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="saveTodo()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -6,24 +6,34 @@
|
|||
:hide-footer="true"
|
||||
>
|
||||
<div class="modal-body">
|
||||
<strong v-html="$t('abuseFlagModalHeading', reportData)"></strong><blockquote><div v-markdown="abuseObject.text"></div></blockquote><div>
|
||||
<strong>{{ $t('whyReportingPost') }}</strong><span class="optional">{{ $t('optional') }}</span><textarea
|
||||
<strong v-html="$t('abuseFlagModalHeading', reportData)"></strong>
|
||||
<blockquote>
|
||||
<div v-markdown="abuseObject.text"></div>
|
||||
</blockquote>
|
||||
<div>
|
||||
<strong>{{ $t('whyReportingPost') }}</strong>
|
||||
<span class="optional">{{ $t('optional') }}</span>
|
||||
<textarea
|
||||
v-model="reportComment"
|
||||
class="form-control"
|
||||
:placeholder="$t('whyReportingPostPlaceholder')"
|
||||
></textarea>
|
||||
</div><small v-html="$t('abuseFlagModalBody', abuseFlagModalBody)"></small>
|
||||
</div><div class="footer text-center">
|
||||
</div>
|
||||
<small v-html="$t('abuseFlagModalBody', abuseFlagModalBody)"></small>
|
||||
</div>
|
||||
<div class="footer text-center">
|
||||
<button
|
||||
v-if="user.contributor.admin && abuseObject.flagCount > 0"
|
||||
class="pull-left btn btn-danger"
|
||||
@click="clearFlagCount()"
|
||||
>
|
||||
Reset Flag Count
|
||||
</button><a
|
||||
</button>
|
||||
<a
|
||||
class="cancel-link"
|
||||
@click.prevent="close()"
|
||||
>{{ $t('cancel') }}</a><button
|
||||
>{{ $t('cancel') }}</a>
|
||||
<button
|
||||
class="btn btn-danger"
|
||||
@click="reportAbuse()"
|
||||
>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,3 +1,4 @@
|
|||
<template>
|
||||
<!-- Container component used when you only need an empty view to support children routes--><router-view />
|
||||
<!-- Container component used when you only need an empty view to support children routes-->
|
||||
<router-view />
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -7,38 +7,56 @@
|
|||
<table class="table alert alert-info">
|
||||
<tr v-if="group.purchased.plan.dateTerminated">
|
||||
<td class="alert alert-warning">
|
||||
<span class="noninteractive-button btn-danger">{{ $t('canceledGroupPlan') }}</span><i class="glyphicon glyphicon-time">{{ $t('groupPlanCanceled') }}</i><strong>{{ dateTerminated }}</strong>
|
||||
<span class="noninteractive-button btn-danger">{{ $t('canceledGroupPlan') }}</span>
|
||||
<i class="glyphicon glyphicon-time">{{ $t('groupPlanCanceled') }}</i>
|
||||
<strong>{{ dateTerminated }}</strong>
|
||||
</td>
|
||||
</tr><tr v-if="!group.purchased.plan.dateTerminated">
|
||||
</tr>
|
||||
<tr v-if="!group.purchased.plan.dateTerminated">
|
||||
<td>
|
||||
<h3>{{ $t('paymentDetails') }}</h3><p v-if="group.purchased.plan.planId">
|
||||
<h3>{{ $t('paymentDetails') }}</h3>
|
||||
<p v-if="group.purchased.plan.planId">
|
||||
{{ $t('groupSubscriptionPrice') }}
|
||||
</p>
|
||||
</td>
|
||||
</tr><tr v-if="group.purchased.plan.extraMonths">
|
||||
<td><span class="glyphicon glyphicon-credit-card"></span>{{ $t('purchasedGroupPlanPlanExtraMonths', purchasedGroupPlanPlanExtraMonths) }}</td>
|
||||
</tr><tr v-if="group.purchased.plan.consecutive.count || group.purchased.plan.consecutive.offset">
|
||||
</tr>
|
||||
<tr v-if="group.purchased.plan.extraMonths">
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-forward"></span>{{ $t('consecutiveSubscription') }}<ul class="list-unstyled">
|
||||
<li>{{ $t('consecutiveMonths') }} {{ group.purchased.plan.consecutive.count + group.purchased.plan.consecutive.offset }}</li><li>{{ $t('gemCapExtra') }} {{ group.purchased.plan.consecutive.gemCapExtra }}</li><li>{{ $t('mysticHourglasses') }} {{ group.purchased.plan.consecutive.trinkets }}</li></li>
|
||||
<span class="glyphicon glyphicon-credit-card"></span>
|
||||
{{ $t('purchasedGroupPlanPlanExtraMonths', purchasedGroupPlanPlanExtraMonths) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr
|
||||
v-if="group.purchased.plan.consecutive.count || group.purchased.plan.consecutive.offset"
|
||||
>
|
||||
<td>
|
||||
<span class="glyphicon glyphicon-forward"></span>
|
||||
{{ $t('consecutiveSubscription') }}
|
||||
<ul class="list-unstyled">
|
||||
<li>{{ $t('consecutiveMonths') }} {{ group.purchased.plan.consecutive.count + group.purchased.plan.consecutive.offset }}</li>
|
||||
<li>{{ $t('gemCapExtra') }} {{ group.purchased.plan.consecutive.gemCapExtra }}</li>
|
||||
<li>{{ $t('mysticHourglasses') }} {{ group.purchased.plan.consecutive.trinkets }}</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="col-12 col-md-6 offset-md-3">
|
||||
</div>
|
||||
<div class="col-12 col-md-6 offset-md-3">
|
||||
<button
|
||||
v-if="group.purchased.plan.dateTerminated"
|
||||
class="btn btn-success btn-success"
|
||||
@click="upgradeGroup()"
|
||||
>
|
||||
{{ $t('upgrade') }}
|
||||
</button><div
|
||||
</button>
|
||||
<div
|
||||
v-if="!group.purchased.plan.dateTerminated && group.purchased.plan.paymentMethod === 'Stripe'"
|
||||
class="btn btn-primary"
|
||||
@click="showStripeEdit({groupId: group.id})"
|
||||
>
|
||||
{{ $t('subUpdateCard') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!group.purchased.plan.dateTerminated"
|
||||
class="btn btn-sm btn-danger"
|
||||
@click="cancelSubscriptionConfirm({group: group})"
|
||||
|
|
|
|||
|
|
@ -4,11 +4,13 @@
|
|||
v-if="activePage === PAGES.CREATE_GROUP"
|
||||
class="col-12"
|
||||
>
|
||||
<h2>{{ $t('nameYourGroup') }}</h2><div class="form-group">
|
||||
<h2>{{ $t('nameYourGroup') }}</h2>
|
||||
<div class="form-group">
|
||||
<label
|
||||
class="control-label"
|
||||
for="new-group-name"
|
||||
>{{ $t('name') }}</label><input
|
||||
>{{ $t('name') }}</label>
|
||||
<input
|
||||
id="new-group-name"
|
||||
v-model="newGroup.name"
|
||||
class="form-control input-medium option-content"
|
||||
|
|
@ -16,15 +18,18 @@
|
|||
type="text"
|
||||
:placeholder="$t('exampleGroupName')"
|
||||
>
|
||||
</div><div class="form-group">
|
||||
<label for="new-group-description">{{ $t('description') }}</label><textarea
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="new-group-description">{{ $t('description') }}</label>
|
||||
<textarea
|
||||
id="new-group-description"
|
||||
v-model="newGroup.description"
|
||||
class="form-control option-content"
|
||||
cols="3"
|
||||
:placeholder="$t('exampleGroupDesc')"
|
||||
></textarea>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="newGroup.type === 'guild'"
|
||||
class="form-group text-left"
|
||||
>
|
||||
|
|
@ -35,21 +40,25 @@
|
|||
type="radio"
|
||||
name="new-group-privacy"
|
||||
value="private"
|
||||
><label class="custom-control-label">{{ $t('thisGroupInviteOnly') }}</label>
|
||||
>
|
||||
<label class="custom-control-label">{{ $t('thisGroupInviteOnly') }}</label>
|
||||
</div>
|
||||
</div><div class="form-group text-left">
|
||||
</div>
|
||||
<div class="form-group text-left">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input
|
||||
id="create-group-leaderOnlyChallenges-checkbox"
|
||||
v-model="newGroup.leaderOnly.challenges"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
class="custom-control-label"
|
||||
for="create-group-leaderOnlyChallenges-checkbox"
|
||||
>{{ $t('leaderOnlyChallenges') }}</label>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="newGroup.type === 'party'"
|
||||
class="form-group"
|
||||
>
|
||||
|
|
@ -58,7 +67,8 @@
|
|||
:value="$t('createGroupPlan')"
|
||||
@click="createGroup()"
|
||||
></button>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button
|
||||
class="btn btn-primary btn-lg btn-block"
|
||||
:disabled="!newGroupIsReady"
|
||||
|
|
@ -67,11 +77,13 @@
|
|||
{{ $t('createGroupPlan') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activePage === PAGES.PAY"
|
||||
class="col-12"
|
||||
>
|
||||
<h2>{{ $t('choosePaymentMethod') }}</h2><div class="payments-column">
|
||||
<h2>{{ $t('choosePaymentMethod') }}</h2>
|
||||
<div class="payments-column">
|
||||
<button
|
||||
class="purchase btn btn-primary payment-button payment-item"
|
||||
@click="pay(PAYMENTS.STRIPE)"
|
||||
|
|
@ -79,8 +91,10 @@
|
|||
<div
|
||||
class="svg-icon credit-card-icon"
|
||||
v-html="icons.creditCardIcon"
|
||||
></div>{{ $t('card') }}
|
||||
</button><amazon-button
|
||||
></div>
|
||||
{{ $t('card') }}
|
||||
</button>
|
||||
<amazon-button
|
||||
class="payment-item"
|
||||
:amazon-data="pay(PAYMENTS.AMAZON)"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -12,10 +12,12 @@
|
|||
>
|
||||
<h2 v-once>
|
||||
{{ $t('gettingStarted') }}
|
||||
</h2><p v-once>
|
||||
</h2>
|
||||
<p v-once>
|
||||
{{ $t('congratsOnGroupPlan') }}
|
||||
</p>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div
|
||||
class="card"
|
||||
|
|
@ -24,9 +26,11 @@
|
|||
<div class="question-head">
|
||||
<div class="q">
|
||||
Q.
|
||||
</div><div class="title">
|
||||
</div>
|
||||
<div class="title">
|
||||
{{ $t('whatsIncludedGroup') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="arrow float-right"
|
||||
@click="toggle('question1')"
|
||||
>
|
||||
|
|
@ -34,20 +38,23 @@
|
|||
v-if="expandedQuestions.question1"
|
||||
class="svg-icon"
|
||||
v-html="icons.upIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-else
|
||||
class="svg-icon"
|
||||
v-html="icons.downIcon"
|
||||
></div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="expandedQuestions.question1"
|
||||
class="question-body"
|
||||
>
|
||||
<p>{{ $t('whatsIncludedGroupDesc') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div
|
||||
class="card"
|
||||
:class="{expanded: expandedQuestions.question2}"
|
||||
|
|
@ -55,9 +62,11 @@
|
|||
<div class="question-head">
|
||||
<div class="q">
|
||||
Q.
|
||||
</div><div class="title">
|
||||
</div>
|
||||
<div class="title">
|
||||
{{ $t('howDoesBillingWork') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="arrow float-right"
|
||||
@click="toggle('question2')"
|
||||
>
|
||||
|
|
@ -65,20 +74,23 @@
|
|||
v-if="expandedQuestions.question2"
|
||||
class="svg-icon"
|
||||
v-html="icons.upIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-else
|
||||
class="svg-icon"
|
||||
v-html="icons.downIcon"
|
||||
></div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="expandedQuestions.question2"
|
||||
class="question-body"
|
||||
>
|
||||
<p>{{ $t('howDoesBillingWorkDesc') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div
|
||||
class="card"
|
||||
:class="{expanded: expandedQuestions.question3}"
|
||||
|
|
@ -86,9 +98,11 @@
|
|||
<div class="question-head">
|
||||
<div class="q">
|
||||
Q.
|
||||
</div><div class="title">
|
||||
</div>
|
||||
<div class="title">
|
||||
{{ $t('howToAssignTask') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="arrow float-right"
|
||||
@click="toggle('question3')"
|
||||
>
|
||||
|
|
@ -96,20 +110,24 @@
|
|||
v-if="expandedQuestions.question3"
|
||||
class="svg-icon"
|
||||
v-html="icons.upIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-else
|
||||
class="svg-icon"
|
||||
v-html="icons.downIcon"
|
||||
></div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="expandedQuestions.question3"
|
||||
class="question-body"
|
||||
>
|
||||
<p>{{ $t('howToAssignTaskDesc') }}</p><div class="assign-tasks image-example"></div>
|
||||
<p>{{ $t('howToAssignTaskDesc') }}</p>
|
||||
<div class="assign-tasks image-example"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div
|
||||
class="card"
|
||||
:class="{expanded: expandedQuestions.question4}"
|
||||
|
|
@ -117,9 +135,11 @@
|
|||
<div class="question-head">
|
||||
<div class="q">
|
||||
Q.
|
||||
</div><div class="title">
|
||||
</div>
|
||||
<div class="title">
|
||||
{{ $t('howToRequireApproval') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="arrow float-right"
|
||||
@click="toggle('question4')"
|
||||
>
|
||||
|
|
@ -127,20 +147,26 @@
|
|||
v-if="expandedQuestions.question4"
|
||||
class="svg-icon"
|
||||
v-html="icons.upIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-else
|
||||
class="svg-icon"
|
||||
v-html="icons.downIcon"
|
||||
></div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="expandedQuestions.question4"
|
||||
class="question-body"
|
||||
>
|
||||
<p>{{ $t('howToRequireApprovalDesc') }}</p><div class="requires-approval image-example"></div><p>{{ $t('howToRequireApprovalDesc2') }}</p><div class="approval-requested image-example"></div>
|
||||
<p>{{ $t('howToRequireApprovalDesc') }}</p>
|
||||
<div class="requires-approval image-example"></div>
|
||||
<p>{{ $t('howToRequireApprovalDesc2') }}</p>
|
||||
<div class="approval-requested image-example"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-12">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div
|
||||
class="card"
|
||||
:class="{expanded: expandedQuestions.question5}"
|
||||
|
|
@ -148,9 +174,11 @@
|
|||
<div class="question-head">
|
||||
<div class="q">
|
||||
Q.
|
||||
</div><div class="title">
|
||||
</div>
|
||||
<div class="title">
|
||||
{{ $t('whatIsGroupManager') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="arrow float-right"
|
||||
@click="toggle('question5')"
|
||||
>
|
||||
|
|
@ -158,20 +186,24 @@
|
|||
v-if="expandedQuestions.question5"
|
||||
class="svg-icon"
|
||||
v-html="icons.upIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-else
|
||||
class="svg-icon"
|
||||
v-html="icons.downIcon"
|
||||
></div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="expandedQuestions.question5"
|
||||
class="question-body"
|
||||
>
|
||||
<p>{{ $t('whatIsGroupManagerDesc') }}</p><div class="promote-leader image-example"></div>
|
||||
<p>{{ $t('whatIsGroupManagerDesc') }}</p>
|
||||
<div class="promote-leader image-example"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-12 text-center">
|
||||
</div>
|
||||
<div class="col-12 text-center">
|
||||
<button
|
||||
class="btn btn-primary close-button"
|
||||
@click="close()"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<div class="row">
|
||||
<group-form-modal /><secondary-menu class="col-12">
|
||||
<group-form-modal />
|
||||
<secondary-menu class="col-12">
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'groupPlanDetailTaskInformation', params: {groupId}}"
|
||||
|
|
@ -8,14 +9,16 @@
|
|||
:class="{'active': $route.name === 'groupPlanDetailTaskInformation'}"
|
||||
>
|
||||
{{ $t('groupTaskBoard') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'groupPlanDetailInformation', params: {groupId}}"
|
||||
exact="exact"
|
||||
:class="{'active': $route.name === 'groupPlanDetailInformation'}"
|
||||
>
|
||||
{{ $t('groupInformation') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
v-if="isLeader"
|
||||
class="nav-link"
|
||||
:to="{name: 'groupPlanBilling', params: {groupId}}"
|
||||
|
|
@ -24,7 +27,8 @@
|
|||
>
|
||||
{{ $t('groupBilling') }}
|
||||
</router-link>
|
||||
</secondary-menu><div class="col-12">
|
||||
</secondary-menu>
|
||||
<div class="col-12">
|
||||
<router-view />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<div class="standard-page">
|
||||
<group-plan-overview-modal /><task-modal
|
||||
<group-plan-overview-modal />
|
||||
<task-modal
|
||||
ref="taskModal"
|
||||
:task="workingTask"
|
||||
:purpose="taskFormPurpose"
|
||||
|
|
@ -9,17 +10,21 @@
|
|||
@taskCreated="taskCreated"
|
||||
@taskEdited="taskEdited"
|
||||
@taskDestroyed="taskDestroyed"
|
||||
/><div class="row tasks-navigation">
|
||||
/>
|
||||
<div class="row tasks-navigation">
|
||||
<div class="col-12 col-md-4">
|
||||
<h1>{{ $t('groupTasksTitle') }}</h1>
|
||||
</div><!-- @TODO: Abstract to component!--><div class="col-12 col-md-4">
|
||||
</div>
|
||||
<!-- @TODO: Abstract to component!-->
|
||||
<div class="col-12 col-md-4">
|
||||
<input
|
||||
v-model="searchText"
|
||||
class="form-control input-search"
|
||||
type="text"
|
||||
:placeholder="$t('search')"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="canCreateTasks"
|
||||
class="create-task-area d-flex"
|
||||
>
|
||||
|
|
@ -42,7 +47,8 @@
|
|||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</transition><div
|
||||
</transition>
|
||||
<div
|
||||
id="create-task-btn"
|
||||
class="create-btn diamond-btn btn btn-success"
|
||||
:class="{open: openCreateBtn}"
|
||||
|
|
@ -52,7 +58,8 @@
|
|||
class="svg-icon"
|
||||
v-html="icons.positive"
|
||||
></div>
|
||||
</div><b-tooltip
|
||||
</div>
|
||||
<b-tooltip
|
||||
v-if="!openCreateBtn"
|
||||
target="create-task-btn"
|
||||
placement="bottom"
|
||||
|
|
@ -60,7 +67,8 @@
|
|||
{{ $t('addTaskToGroupPlan') }}
|
||||
</b-tooltip>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<task-column
|
||||
v-for="column in columns"
|
||||
:key="column"
|
||||
|
|
@ -71,7 +79,8 @@
|
|||
:group="group"
|
||||
:search-text="searchText"
|
||||
@editTask="editTask"
|
||||
@loadGroupCompletedTodos="loadGroupCompletedTodos" @taskDestroyed="taskDestroyed"
|
||||
@loadGroupCompletedTodos="loadGroupCompletedTodos"
|
||||
@taskDestroyed="taskDestroyed"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,10 +6,12 @@
|
|||
:class="{accepted: communityGuidelinesAccepted }"
|
||||
>
|
||||
{{ label }}
|
||||
</h3><div
|
||||
</h3>
|
||||
<div
|
||||
v-markdown="$t('markdownFormattingHelp')"
|
||||
class="float-right"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="communityGuidelinesAccepted"
|
||||
class="row"
|
||||
>
|
||||
|
|
@ -22,8 +24,14 @@
|
|||
@keydown="updateCarretPosition"
|
||||
@keyup.ctrl.enter="sendMessageShortcut()"
|
||||
@keydown.tab="handleTab($event)"
|
||||
@keydown.up="selectPreviousAutocomplete($event)" @keydown.down="selectNextAutocomplete($event)" @keydown.enter="selectAutocomplete($event)" @keydown.esc="handleEscape($event)" @paste="disableMessageSendShortcut()"
|
||||
></textarea><span>{{ currentLength }} / 3000</span><autocomplete
|
||||
@keydown.up="selectPreviousAutocomplete($event)"
|
||||
@keydown.down="selectNextAutocomplete($event)"
|
||||
@keydown.enter="selectAutocomplete($event)"
|
||||
@keydown.esc="handleEscape($event)"
|
||||
@paste="disableMessageSendShortcut()"
|
||||
></textarea>
|
||||
<span>{{ currentLength }} / 3000</span>
|
||||
<autocomplete
|
||||
ref="autocomplete"
|
||||
:text="newMessage"
|
||||
:textbox="textbox"
|
||||
|
|
@ -32,7 +40,9 @@
|
|||
:chat="group.chat"
|
||||
@select="selectedAutocomplete"
|
||||
/>
|
||||
</div><community-guidelines /><div class="row chat-actions">
|
||||
</div>
|
||||
<community-guidelines />
|
||||
<div class="row chat-actions">
|
||||
<div class="col-6 chat-receive-actions">
|
||||
<button
|
||||
v-once
|
||||
|
|
@ -40,14 +50,16 @@
|
|||
@click="fetchRecentMessages()"
|
||||
>
|
||||
{{ $t('fetchRecentMessages') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-secondary float-left"
|
||||
@click="reverseChat()"
|
||||
>
|
||||
{{ $t('reverseChat') }}
|
||||
</button>
|
||||
</div><div class="col-6 chat-send-actions">
|
||||
</div>
|
||||
<div class="col-6 chat-send-actions">
|
||||
<button
|
||||
class="btn btn-primary send-chat float-right"
|
||||
:disabled="!communityGuidelinesAccepted"
|
||||
|
|
@ -56,8 +68,11 @@
|
|||
{{ $t('send') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><slot name="additionRow"></slot><div class="row">
|
||||
<div class="hr col-12"></div><chat-message
|
||||
</div>
|
||||
<slot name="additionRow"></slot>
|
||||
<div class="row">
|
||||
<div class="hr col-12"></div>
|
||||
<chat-message
|
||||
:chat.sync="group.chat"
|
||||
:group-type="group.type"
|
||||
:group-id="group._id"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
v-once
|
||||
class="col col-sm-12 col-xl-8"
|
||||
v-html="$t('communityGuidelinesIntro')"
|
||||
></div><div class="col-md-auto col-md-12 col-xl-4">
|
||||
></div>
|
||||
<div class="col-md-auto col-md-12 col-xl-4">
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-info btn-follow-guidelines"
|
||||
|
|
|
|||
|
|
@ -8,16 +8,19 @@
|
|||
slot="modal-header"
|
||||
class="header-wrap"
|
||||
>
|
||||
<div class="quest_screen"></div><div class="row heading">
|
||||
<div class="quest_screen"></div>
|
||||
<div class="row heading">
|
||||
<div class="col-12 text-center pr-5 pl-5">
|
||||
<h2 v-once>
|
||||
{{ $t('playInPartyTitle') }}
|
||||
</h2><p
|
||||
</h2>
|
||||
<p
|
||||
v-once
|
||||
class="mb-4"
|
||||
>
|
||||
{{ $t('playInPartyDescription') }}
|
||||
</p><button
|
||||
</p>
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-primary"
|
||||
@click="createParty()"
|
||||
|
|
@ -26,11 +29,15 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row grey-row">
|
||||
</div>
|
||||
<div class="row grey-row">
|
||||
<div class="col-12 text-center">
|
||||
<div class="join-party"></div><h2 v-once>
|
||||
<div class="join-party"></div>
|
||||
<h2 v-once>
|
||||
{{ $t('wantToJoinPartyTitle') }}
|
||||
</h2><p v-html="$t('wantToJoinPartyDescription')"></p><div
|
||||
</h2>
|
||||
<p v-html="$t('wantToJoinPartyDescription')"></p>
|
||||
<div
|
||||
class="form-group"
|
||||
@click="copyUsername"
|
||||
>
|
||||
|
|
@ -38,14 +45,18 @@
|
|||
<label
|
||||
v-once
|
||||
class="mr-3"
|
||||
>{{ $t('username') }}</label><div class="flex-grow-1">
|
||||
>{{ $t('username') }}</label>
|
||||
<div class="flex-grow-1">
|
||||
<div class="input-group-prepend input-group-text">
|
||||
@<div class="text">
|
||||
@
|
||||
<div class="text">
|
||||
{{ user.auth.local.username }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="svg-icon copy-icon"
|
||||
v-html="icons.copy"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-once
|
||||
class="small"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
<sidebar
|
||||
@search="updateSearch"
|
||||
@filter="updateFilters"
|
||||
/><div class="standard-page">
|
||||
/>
|
||||
<div class="standard-page">
|
||||
<div class="header row">
|
||||
<div class="col-8">
|
||||
<h1
|
||||
|
|
@ -12,20 +13,24 @@
|
|||
>
|
||||
{{ $t('publicGuilds') }}
|
||||
</h1>
|
||||
</div><div class="col-4">
|
||||
<!-- @TODO: Add when we implement recent activity .float-rightspan.dropdown-label {{ $t('sortBy') }}
|
||||
b-dropdown(:text="$t('sort')", right=true)
|
||||
b-dropdown-item(v-for='sortOption in sortOptions', :key="sortOption.value", @click='sort(sortOption.value)') {{sortOption.text}}--><button
|
||||
class="btn btn-secondary create-group-button float-right"
|
||||
@click="createGroup()"
|
||||
>
|
||||
<div
|
||||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div><span v-once>{{ $t('createGuild2') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-4">
|
||||
<!-- @TODO: Add when we implement recent activity .float-rightspan.dropdown-label {{ $t('sortBy') }}
|
||||
b-dropdown(:text="$t('sort')", right=true)
|
||||
b-dropdown-item(v-for='sortOption in sortOptions', :key="sortOption.value", @click='sort(sortOption.value)') {{sortOption.text}}-->
|
||||
<button
|
||||
class="btn btn-secondary create-group-button float-right"
|
||||
@click="createGroup()"
|
||||
>
|
||||
<div
|
||||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div>
|
||||
<span v-once>{{ $t('createGuild2') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="!loading && filteredGuilds.length === 0"
|
||||
class="no-guilds text-center col-md-6 offset-md-3"
|
||||
|
|
@ -34,14 +39,16 @@ v-html="icons.positiveIcon"
|
|||
{{ $t('noGuildsMatchFilters') }}
|
||||
</h2>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<public-guild-item
|
||||
v-for="guild in filteredGuilds"
|
||||
:key="guild._id"
|
||||
:guild="guild"
|
||||
:display-leave="true"
|
||||
/><mugen-scroll
|
||||
/>
|
||||
<mugen-scroll
|
||||
v-show="loading"
|
||||
:handler="fetchGuilds"
|
||||
:should-handle="!loading && !this.hasLoadedAllGuilds"
|
||||
|
|
|
|||
|
|
@ -3,16 +3,26 @@
|
|||
v-if="group._id"
|
||||
class="row"
|
||||
>
|
||||
<group-form-modal v-if="isParty" /><start-quest-modal :group="this.group" /><quest-details-modal :group="this.group" /><participant-list-modal :group="this.group" /><group-gems-modal /><div class="col-12 col-sm-8 standard-page">
|
||||
<group-form-modal v-if="isParty" />
|
||||
<start-quest-modal :group="this.group" />
|
||||
<quest-details-modal :group="this.group" />
|
||||
<participant-list-modal :group="this.group" />
|
||||
<group-gems-modal />
|
||||
<div class="col-12 col-sm-8 standard-page">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6 title-details">
|
||||
<h1>{{ group.name }}</h1><div>
|
||||
<span class="mr-1 ml-0"><strong v-once>{{ $t('groupLeader') }}:</strong><user-link
|
||||
class="mx-1"
|
||||
:user="group.leader"
|
||||
/></span>
|
||||
<h1>{{ group.name }}</h1>
|
||||
<div>
|
||||
<span class="mr-1 ml-0">
|
||||
<strong v-once>{{ $t('groupLeader') }}:</strong>
|
||||
<user-link
|
||||
class="mx-1"
|
||||
:user="group.leader"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
</div><div class="col-12 col-md-6">
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<div class="row icon-row">
|
||||
<div
|
||||
class="col-4 offset-4"
|
||||
|
|
@ -26,22 +36,27 @@
|
|||
v-if="group.memberCount > 1000"
|
||||
class="svg-icon shield"
|
||||
v-html="icons.goldGuildBadgeIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="group.memberCount > 100 && group.memberCount < 999"
|
||||
class="svg-icon shield"
|
||||
v-html="icons.silverGuildBadgeIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="group.memberCount < 100"
|
||||
class="svg-icon shield"
|
||||
v-html="icons.bronzeGuildBadgeIcon"
|
||||
></div><span class="number">{{ group.memberCount | abbrNum }}</span><div
|
||||
></div>
|
||||
<span class="number">{{ group.memberCount | abbrNum }}</span>
|
||||
<div
|
||||
v-once
|
||||
class="member-list label"
|
||||
>
|
||||
{{ $t('memberList') }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!isParty"
|
||||
class="col-4"
|
||||
>
|
||||
|
|
@ -52,7 +67,9 @@
|
|||
<div
|
||||
class="svg-icon gem"
|
||||
v-html="icons.gem"
|
||||
></div><span class="number">{{ group.balance * 4 }}</span><div
|
||||
></div>
|
||||
<span class="number">{{ group.balance * 4 }}</span>
|
||||
<div
|
||||
v-once
|
||||
class="label"
|
||||
>
|
||||
|
|
@ -62,7 +79,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><chat
|
||||
</div>
|
||||
<chat
|
||||
:label="$t('chat')"
|
||||
:group="group"
|
||||
:placeholder="!isParty ? $t('chatPlaceholder') : $t('partyChatPlaceholder')"
|
||||
|
|
@ -79,7 +97,8 @@
|
|||
</div>
|
||||
</template>
|
||||
</chat>
|
||||
</div><div class="col-12 col-sm-4 sidebar">
|
||||
</div>
|
||||
<div class="col-12 col-sm-4 sidebar">
|
||||
<div
|
||||
class="row"
|
||||
:class="{'guild-background': !isParty}"
|
||||
|
|
@ -93,7 +112,8 @@
|
|||
>
|
||||
{{ $t('upgrade') }}
|
||||
</button>
|
||||
</div><div class="button-container">
|
||||
</div>
|
||||
<div class="button-container">
|
||||
<button
|
||||
v-if="isLeader || isAdmin"
|
||||
v-once
|
||||
|
|
@ -103,7 +123,8 @@
|
|||
>
|
||||
{{ $t('edit') }}
|
||||
</button>
|
||||
</div><div class="button-container">
|
||||
</div>
|
||||
<div class="button-container">
|
||||
<button
|
||||
v-if="!isMember"
|
||||
class="btn btn-success btn-success"
|
||||
|
|
@ -111,38 +132,47 @@
|
|||
>
|
||||
{{ $t('join') }}
|
||||
</button>
|
||||
</div><div class="button-container">
|
||||
</div>
|
||||
<div class="button-container">
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-primary"
|
||||
@click="showInviteModal()"
|
||||
>
|
||||
{{ $t('invite') }}
|
||||
</button><!-- @TODO: hide the invitation button if there's an active group plan and the player is not the leader-->
|
||||
</div><div class="button-container">
|
||||
</button>
|
||||
<!-- @TODO: hide the invitation button if there's an active group plan and the player is not the leader-->
|
||||
</div>
|
||||
<div class="button-container">
|
||||
<!-- @TODO: V2 button.btn.btn-primary(v-once, v-if='!isLeader') {{$t('messageGuildLeader')}} // Suggest making the button visible to the leader too - useful for them to test how the feature works or to send a note to themself. -- Alys-->
|
||||
</div><div class="button-container">
|
||||
</div>
|
||||
<div class="button-container">
|
||||
<!-- @TODO: V2 button.btn.btn-primary(v-once, v-if='isMember && !isParty') {{$t('donateGems')}} // Suggest removing the isMember restriction - it's okay if non-members donate to a public guild. Also probably allow it for parties if parties can buy imagery. -- Alys-->
|
||||
</div>
|
||||
</div>
|
||||
</div><div>
|
||||
</div>
|
||||
<div>
|
||||
<quest-sidebar-section
|
||||
v-if="isParty"
|
||||
:group="group"
|
||||
/><sidebar-section
|
||||
/>
|
||||
<sidebar-section
|
||||
v-if="!isParty"
|
||||
:title="$t('guildSummary')"
|
||||
>
|
||||
<p v-markdown="group.summary"></p>
|
||||
</sidebar-section><sidebar-section :title="$t('groupDescription')">
|
||||
</sidebar-section>
|
||||
<sidebar-section :title="$t('groupDescription')">
|
||||
<p v-markdown="group.description"></p>
|
||||
</sidebar-section><sidebar-section
|
||||
</sidebar-section>
|
||||
<sidebar-section
|
||||
:title="$t('challenges')"
|
||||
:tooltip="$t('challengeDetails')"
|
||||
>
|
||||
<group-challenges :group-id="searchId" />
|
||||
</sidebar-section>
|
||||
</div><div class="text-center">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button
|
||||
v-if="isMember"
|
||||
class="btn btn-danger"
|
||||
|
|
|
|||
|
|
@ -7,23 +7,33 @@
|
|||
>
|
||||
<form @submit.stop.prevent="submit">
|
||||
<div class="form-group">
|
||||
<label><strong v-once>{{ $t('name') }} *</strong></label><b-form-input
|
||||
<label>
|
||||
<strong v-once>{{ $t('name') }} *</strong>
|
||||
</label>
|
||||
<b-form-input
|
||||
v-model="workingGroup.name"
|
||||
type="text"
|
||||
:placeholder="$t('newGuildPlaceholder')"
|
||||
/>
|
||||
</div><div class="form-group">
|
||||
<label><strong v-once>{{ $t('privacySettings') }} *</strong></label><br><div class="custom-control custom-checkbox">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<strong v-once>{{ $t('privacySettings') }} *</strong>
|
||||
</label>
|
||||
<br>
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input
|
||||
id="onlyLeaderCreatesChallenges"
|
||||
v-model="workingGroup.onlyLeaderCreatesChallenges"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
for="onlyLeaderCreatesChallenges"
|
||||
>{{ $t('onlyLeaderCreatesChallenges') }}</label><div
|
||||
>{{ $t('onlyLeaderCreatesChallenges') }}</label>
|
||||
<div
|
||||
id="groupPrivateDescription1"
|
||||
class="icon"
|
||||
:title="$t('privateDescription')"
|
||||
|
|
@ -32,93 +42,125 @@
|
|||
class="svg-icon"
|
||||
v-html="icons.information"
|
||||
></div>
|
||||
</div><b-tooltip
|
||||
</div>
|
||||
<b-tooltip
|
||||
:title="$t('onlyLeaderCreatesChallengesDetail')"
|
||||
target="groupPrivateDescription1"
|
||||
/>
|
||||
</div><!-- br--><!-- @TODO Implement in V2 .custom-control.custom-checkboxinput.custom-control-input(type="checkbox", v-model="workingGroup.guildLeaderCantBeMessaged")
|
||||
</div>
|
||||
<!-- br-->
|
||||
<!-- @TODO Implement in V2 .custom-control.custom-checkboxinput.custom-control-input(type="checkbox", v-model="workingGroup.guildLeaderCantBeMessaged")
|
||||
label.custom-control-label(v-once) {{ $t('guildLeaderCantBeMessaged') }}
|
||||
// "guildLeaderCantBeMessaged": "Leader can not be messaged directly",
|
||||
// @TODO discuss the impact of this with moderators before implementing
|
||||
--><br><div
|
||||
v-if="!isParty && !this.workingGroup.id"
|
||||
class="custom-control custom-checkbox"
|
||||
>
|
||||
<input
|
||||
id="privateGuild"
|
||||
v-model="workingGroup.privateGuild"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
><label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
for="privateGuild"
|
||||
>{{ $t('privateGuild') }}</label><div
|
||||
id="groupPrivateDescription2"
|
||||
class="icon"
|
||||
:title="$t('privateDescription')"
|
||||
>
|
||||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.information"
|
||||
></div>
|
||||
</div><b-tooltip
|
||||
:title="$t('privateDescription')"
|
||||
target="groupPrivateDescription2"
|
||||
/>
|
||||
</div><!-- br--><!-- @TODO: Implement in v2 .custom-control.custom-checkbox(v-if='!creatingParty')input.custom-control-input(type="checkbox", v-model="workingGroup.allowGuildInvitationsFromNonMembers")
|
||||
-->
|
||||
<br>
|
||||
<div
|
||||
v-if="!isParty && !this.workingGroup.id"
|
||||
class="custom-control custom-checkbox"
|
||||
>
|
||||
<input
|
||||
id="privateGuild"
|
||||
v-model="workingGroup.privateGuild"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
for="privateGuild"
|
||||
>{{ $t('privateGuild') }}</label>
|
||||
<div
|
||||
id="groupPrivateDescription2"
|
||||
class="icon"
|
||||
:title="$t('privateDescription')"
|
||||
>
|
||||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.information"
|
||||
></div>
|
||||
</div>
|
||||
<b-tooltip
|
||||
:title="$t('privateDescription')"
|
||||
target="groupPrivateDescription2"
|
||||
/>
|
||||
</div>
|
||||
<!-- br-->
|
||||
<!-- @TODO: Implement in v2 .custom-control.custom-checkbox(v-if='!creatingParty')input.custom-control-input(type="checkbox", v-model="workingGroup.allowGuildInvitationsFromNonMembers")
|
||||
label.custom-control-label(v-once) {{ $t('allowGuildInvitationsFromNonMembers') }}
|
||||
// "allowGuildInvitationsFromNonMembers": "Allow Guild invitations from non-members",
|
||||
-->
|
||||
</div><div
|
||||
-->
|
||||
</div>
|
||||
<div
|
||||
v-if="!isParty"
|
||||
class="form-group"
|
||||
>
|
||||
<label><strong v-once>{{ $t('guildSummary') }} *</strong></label><div class="summary-count">
|
||||
<label>
|
||||
<strong v-once>{{ $t('guildSummary') }} *</strong>
|
||||
</label>
|
||||
<div
|
||||
class="summary-count"
|
||||
>
|
||||
{{ $t('charactersRemaining', {characters: charactersRemaining}) }}
|
||||
</div><textarea
|
||||
</div>
|
||||
<textarea
|
||||
v-model="workingGroup.summary"
|
||||
class="form-control summary-textarea"
|
||||
:placeholder="isParty ? $t('partyDescriptionPlaceholder') : $t('guildSummaryPlaceholder')"
|
||||
></textarea><!-- @TODO: need summary only for PUBLIC GUILDS, not for tavern, private guilds, or party-->
|
||||
</div><div class="form-group">
|
||||
<label><strong v-once>{{ $t('groupDescription') }} *</strong></label><a
|
||||
></textarea>
|
||||
<!-- @TODO: need summary only for PUBLIC GUILDS, not for tavern, private guilds, or party-->
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<strong v-once>{{ $t('groupDescription') }} *</strong>
|
||||
</label>
|
||||
<a
|
||||
v-markdown="$t('markdownFormattingHelp')"
|
||||
class="float-right"
|
||||
></a><textarea
|
||||
></a>
|
||||
<textarea
|
||||
v-model="workingGroup.description"
|
||||
class="form-control description-textarea"
|
||||
type="text"
|
||||
textarea="textarea"
|
||||
:placeholder="isParty ? $t('partyDescriptionPlaceholder') : $t('guildDescriptionPlaceholder')"
|
||||
></textarea>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="creatingParty && !workingGroup.id"
|
||||
class="form-group"
|
||||
>
|
||||
<span><toggleSwitch
|
||||
v-model="inviteMembers"
|
||||
:label="$t('inviteMembersNow')"
|
||||
/></span>
|
||||
</div><div
|
||||
<span>
|
||||
<toggleSwitch
|
||||
v-model="inviteMembers"
|
||||
:label="$t('inviteMembersNow')"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="!creatingParty && !isParty"
|
||||
class="form-group"
|
||||
style="position: relative;"
|
||||
>
|
||||
<label><strong v-once>{{ $t('categories') }} *</strong></label><div
|
||||
<label>
|
||||
<strong v-once>{{ $t('categories') }} *</strong>
|
||||
</label>
|
||||
<div
|
||||
class="category-wrap"
|
||||
@click.prevent="toggleCategorySelect"
|
||||
>
|
||||
<span
|
||||
v-if="workingGroup.categories.length === 0"
|
||||
class="category-select"
|
||||
>{{ $t('none') }}</span><div
|
||||
>{{ $t('none') }}</span>
|
||||
<div
|
||||
v-for="category in workingGroup.categories"
|
||||
class="category-label"
|
||||
>
|
||||
{{ $t(categoriesHashByKey[category]) }}
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="showCategorySelect"
|
||||
class="category-box"
|
||||
>
|
||||
|
|
@ -135,42 +177,54 @@ label.custom-control-label(v-once) {{ $t('allowGuildInvitationsFromNonMembers')
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="`category-${group.key}`"
|
||||
>{{ $t(group.label) }}</label>
|
||||
</div>
|
||||
</div><button
|
||||
</div>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click.prevent="toggleCategorySelect"
|
||||
>
|
||||
{{ $t('close') }}
|
||||
</button>
|
||||
</div><!-- @TODO: need categories only for PUBLIC GUILDS, not for tavern, private guilds, or party-->
|
||||
</div><div
|
||||
</div>
|
||||
<!-- @TODO: need categories only for PUBLIC GUILDS, not for tavern, private guilds, or party-->
|
||||
</div>
|
||||
<div
|
||||
v-if="inviteMembers && !workingGroup.id"
|
||||
class="form-group"
|
||||
>
|
||||
<label><strong v-once>Invite via Email or User ID</strong><p v-once>{{ $t('inviteMembersHowTo') }} *</p></label><div>
|
||||
<label>
|
||||
<strong v-once>Invite via Email or User ID</strong>
|
||||
<p v-once>{{ $t('inviteMembersHowTo') }} *</p>
|
||||
</label>
|
||||
<div>
|
||||
<div v-for="(member, index) in membersToInvite">
|
||||
<input
|
||||
v-model="member.value"
|
||||
type="text"
|
||||
><button @click.prevent="removeMemberToInvite(index)">
|
||||
>
|
||||
<button @click.prevent="removeMemberToInvite(index)">
|
||||
Remove
|
||||
</button>
|
||||
</div><div>
|
||||
</div>
|
||||
<div>
|
||||
<input
|
||||
v-model="newMemberToInvite.value"
|
||||
type="text"
|
||||
placeholder="Email address or User ID"
|
||||
><button @click.prevent="addMemberToInvite()">
|
||||
>
|
||||
<button @click.prevent="addMemberToInvite()">
|
||||
Add
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="form-group text-center">
|
||||
</div>
|
||||
<div class="form-group text-center">
|
||||
<div
|
||||
v-if="!this.workingGroup.id"
|
||||
class="item-with-icon"
|
||||
|
|
@ -178,20 +232,24 @@ label.custom-control-label(v-once) {{ $t('allowGuildInvitationsFromNonMembers')
|
|||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.gem"
|
||||
></div><span class="count">4</span>
|
||||
</div><button
|
||||
></div>
|
||||
<span class="count">4</span>
|
||||
</div>
|
||||
<button
|
||||
v-if="!workingGroup.id"
|
||||
class="btn btn-primary btn-md"
|
||||
:disabled="!workingGroup.name || !workingGroup.description"
|
||||
>
|
||||
{{ creatingParty ? $t('createParty') : $t('createGuild') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
v-if="workingGroup.id"
|
||||
class="btn btn-primary btn-md"
|
||||
:disabled="!workingGroup.name || !workingGroup.description"
|
||||
>
|
||||
{{ isParty ? $t('updateParty') : $t('updateGuild') }}
|
||||
</button><div
|
||||
</button>
|
||||
<div
|
||||
v-if="!this.workingGroup.id"
|
||||
v-once
|
||||
class="gem-description"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@
|
|||
<h3>{{ $t('groupGemsDesc') }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="modal-footer">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="col-12 text-center">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
|
|
|
|||
|
|
@ -1,75 +1,99 @@
|
|||
<template>
|
||||
<!-- @TODO: Move to group plans folder--><div>
|
||||
<!-- @TODO: Move to group plans folder-->
|
||||
<div>
|
||||
<div>
|
||||
<div class="header">
|
||||
<h1 class="text-center">
|
||||
Need more for your Group?
|
||||
</h1><div class="row">
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-8 offset-2 text-center">
|
||||
<h2 class="sub-text">
|
||||
{{ $t('groupBenefitsDescription') }}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="container benefits">
|
||||
</div>
|
||||
<div class="container benefits">
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<div class="box">
|
||||
<img
|
||||
class="box1"
|
||||
src="~@/assets/images/group-plans/group-14@3x.png"
|
||||
><hr><h2>{{ $t('teamBasedTasks') }}</h2><p>Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!</p>
|
||||
>
|
||||
<hr>
|
||||
<h2>{{ $t('teamBasedTasks') }}</h2>
|
||||
<p>Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!</p>
|
||||
</div>
|
||||
</div><div class="col-4">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="box">
|
||||
<img
|
||||
class="box2"
|
||||
src="~@/assets/images/group-plans/group-12@3x.png"
|
||||
><hr><h2>Group Management Controls</h2><p>Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.</p>
|
||||
>
|
||||
<hr>
|
||||
<h2>Group Management Controls</h2>
|
||||
<p>Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.</p>
|
||||
</div>
|
||||
</div><div class="col-4">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="box">
|
||||
<img
|
||||
class="box3"
|
||||
src="~@/assets/images/group-plans/group-13@3x.png"
|
||||
><hr><h2>In-Game Benefits</h2><p>Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.</p>
|
||||
>
|
||||
<hr>
|
||||
<h2>In-Game Benefits</h2>
|
||||
<p>Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="upgradingGroup._id"
|
||||
id="upgrading-group"
|
||||
class="container payment-options"
|
||||
>
|
||||
<h1 class="text-center purple-header">
|
||||
Are you ready to upgrade?
|
||||
</h1><div class="row">
|
||||
</h1>
|
||||
<div class="row">
|
||||
<div class="col-12 text-center">
|
||||
<div class="purple-box">
|
||||
<div class="amount-section">
|
||||
<div class="dollar">
|
||||
$
|
||||
</div><div class="number">
|
||||
</div>
|
||||
<div class="number">
|
||||
9
|
||||
</div><div class="name">
|
||||
</div>
|
||||
<div class="name">
|
||||
Group Owner Subscription
|
||||
</div>
|
||||
</div><div class="plus">
|
||||
</div>
|
||||
<div class="plus">
|
||||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div>
|
||||
</div><div class="amount-section">
|
||||
</div>
|
||||
<div class="amount-section">
|
||||
<div class="dollar">
|
||||
$
|
||||
</div><div class="number">
|
||||
</div>
|
||||
<div class="number">
|
||||
3
|
||||
</div><div class="name">
|
||||
</div>
|
||||
<div class="name">
|
||||
Each Individual Group Member
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="box payment-providers">
|
||||
<h3>Choose your payment method</h3><div class="payments-column">
|
||||
</div>
|
||||
<div class="box payment-providers">
|
||||
<h3>Choose your payment method</h3>
|
||||
<div class="payments-column">
|
||||
<button
|
||||
class="purchase btn btn-primary payment-button payment-item"
|
||||
@click="pay(PAYMENTS.STRIPE)"
|
||||
|
|
@ -77,8 +101,10 @@
|
|||
<div
|
||||
class="svg-icon credit-card-icon"
|
||||
v-html="icons.creditCardIcon"
|
||||
></div>{{ $t('card') }}
|
||||
</button><amazon-button
|
||||
></div>
|
||||
{{ $t('card') }}
|
||||
</button>
|
||||
<amazon-button
|
||||
class="payment-item"
|
||||
:amazon-data="pay(PAYMENTS.AMAZON)"
|
||||
/>
|
||||
|
|
@ -86,7 +112,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!upgradingGroup._id"
|
||||
class="container col-6 offset-3 create-option"
|
||||
>
|
||||
|
|
@ -94,7 +121,8 @@
|
|||
<h1 class="col-12 text-center purple-header">
|
||||
Create your Group today!
|
||||
</h1>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 text-center">
|
||||
<button
|
||||
class="btn btn-primary create-group"
|
||||
|
|
@ -103,31 +131,41 @@
|
|||
Create Your New Group
|
||||
</button>
|
||||
</div>
|
||||
</div><div class="row pricing">
|
||||
</div>
|
||||
<div class="row pricing">
|
||||
<div class="col-5">
|
||||
<div class="dollar">
|
||||
$
|
||||
</div><div class="number">
|
||||
9
|
||||
</div><div class="name">
|
||||
<div>Group Owner</div><div>Subscription</div>
|
||||
</div>
|
||||
</div><div class="col-1">
|
||||
<div class="number">
|
||||
9
|
||||
</div>
|
||||
<div class="name">
|
||||
<div>Group Owner</div>
|
||||
<div>Subscription</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1">
|
||||
<div class="plus">
|
||||
+
|
||||
</div>
|
||||
</div><div class="col-6">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="dollar">
|
||||
$
|
||||
</div><div class="number">
|
||||
</div>
|
||||
<div class="number">
|
||||
3
|
||||
</div><div class="name">
|
||||
<div>Each Additional</div><div>Member</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
<div>Each Additional</div>
|
||||
<div>Member</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><b-modal
|
||||
</div>
|
||||
<b-modal
|
||||
id="group-plan-modal"
|
||||
title="Select Payment"
|
||||
size="md"
|
||||
|
|
@ -141,7 +179,8 @@
|
|||
<label
|
||||
class="control-label"
|
||||
for="new-group-name"
|
||||
>Name</label><input
|
||||
>Name</label>
|
||||
<input
|
||||
id="new-group-name"
|
||||
v-model="newGroup.name"
|
||||
class="form-control input-medium option-content"
|
||||
|
|
@ -149,15 +188,18 @@
|
|||
type="text"
|
||||
placeholder="Name"
|
||||
>
|
||||
</div><div class="form-group">
|
||||
<label for="new-group-description">{{ $t('description') }}</label><textarea
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="new-group-description">{{ $t('description') }}</label>
|
||||
<textarea
|
||||
id="new-group-description"
|
||||
v-model="newGroup.description"
|
||||
class="form-control option-content"
|
||||
cols="3"
|
||||
:placeholder="$t('description')"
|
||||
></textarea>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="type === 'guild'"
|
||||
class="form-group"
|
||||
>
|
||||
|
|
@ -168,21 +210,25 @@
|
|||
type="radio"
|
||||
name="new-group-privacy"
|
||||
value="private"
|
||||
><label class="custom-control-label">{{ $t('inviteOnly') }}</label>
|
||||
>
|
||||
<label class="custom-control-label">{{ $t('inviteOnly') }}</label>
|
||||
</div>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input
|
||||
id="create-group-leaderOnlyChallenges-checkbox"
|
||||
v-model="newGroup.leaderOnly.challenges"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
class="custom-control-label"
|
||||
for="create-group-leaderOnlyChallenges-checkbox"
|
||||
>{{ $t('leaderOnlyChallenges') }}</label>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="type === 'party'"
|
||||
class="form-group"
|
||||
>
|
||||
|
|
@ -191,7 +237,8 @@
|
|||
:value="$t('createGroupPlan')"
|
||||
@click="createGroup()"
|
||||
></button>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button
|
||||
class="btn btn-primary btn-lg btn-block"
|
||||
:disabled="!newGroupIsReady"
|
||||
|
|
@ -200,12 +247,14 @@
|
|||
{{ $t('createGroupPlan') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="activePage === PAGES.PAY"
|
||||
class="col-12"
|
||||
>
|
||||
<div class="text-center">
|
||||
<h3>Choose your payment method</h3><div class="payments-column mx-auto">
|
||||
<h3>Choose your payment method</h3>
|
||||
<div class="payments-column mx-auto">
|
||||
<button
|
||||
class="purchase btn btn-primary payment-button payment-item"
|
||||
@click="pay(PAYMENTS.STRIPE)"
|
||||
|
|
@ -213,8 +262,10 @@
|
|||
<div
|
||||
class="svg-icon credit-card-icon"
|
||||
v-html="icons.creditCardIcon"
|
||||
></div>{{ $t('card') }}
|
||||
</button><amazon-button
|
||||
></div>
|
||||
{{ $t('card') }}
|
||||
</button>
|
||||
<amazon-button
|
||||
class="payment-item"
|
||||
:amazon-data="pay(PAYMENTS.AMAZON)"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -8,22 +8,26 @@
|
|||
:class="{'active': $route.name === 'tavern'}"
|
||||
>
|
||||
{{ $t('tavern') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'myGuilds'}"
|
||||
:class="{'active': $route.name === 'myGuilds'}"
|
||||
>
|
||||
{{ $t('myGuilds') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'guildsDiscovery'}"
|
||||
:class="{'active': $route.name === 'guildsDiscovery'}"
|
||||
>
|
||||
{{ $t('guildsDiscovery') }}
|
||||
</router-link>
|
||||
</secondary-menu><div class="col-12">
|
||||
</secondary-menu>
|
||||
<div class="col-12">
|
||||
<router-view />
|
||||
</div><group-form-modal />
|
||||
</div>
|
||||
<group-form-modal />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,11 @@
|
|||
:hide-footer="true"
|
||||
>
|
||||
<div>
|
||||
<strong>{{ $t('inviteEmailUsername') }}</strong><div class="small">
|
||||
<strong>{{ $t('inviteEmailUsername') }}</strong>
|
||||
<div class="small">
|
||||
{{ $t('inviteEmailUsernameInfo') }}
|
||||
</div><div v-for="(invite, index) in invites">
|
||||
</div>
|
||||
<div v-for="(invite, index) in invites">
|
||||
<div class="input-group">
|
||||
<div
|
||||
v-if="index === invites.length - 1 && invite.text.length === 0"
|
||||
|
|
@ -17,7 +19,8 @@
|
|||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div>
|
||||
</div><input
|
||||
</div>
|
||||
<input
|
||||
v-model="invite.text"
|
||||
class="form-control"
|
||||
type="text"
|
||||
|
|
@ -26,18 +29,21 @@
|
|||
@keyup="expandInviteList"
|
||||
@change="checkInviteList"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="invite.error"
|
||||
class="input-error text-center mt-2"
|
||||
>
|
||||
{{ invite.error }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="modal-footer d-flex justify-content-center">
|
||||
</div>
|
||||
<div class="modal-footer d-flex justify-content-center">
|
||||
<a
|
||||
class="mr-3"
|
||||
@click="close()"
|
||||
>{{ $t('cancel') }}</a><button
|
||||
>{{ $t('cancel') }}</a>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
:class="{disabled: cannotSubmit}"
|
||||
:disabled="cannotSubmit"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
<template>
|
||||
<!-- @TODO: Move this to a member directory--><div>
|
||||
<!-- @TODO: Move this to a member directory-->
|
||||
<div>
|
||||
<remove-member-modal
|
||||
:member-to-remove="memberToRemove"
|
||||
:group-id="this.groupId"
|
||||
@member-removed="memberRemoved"
|
||||
/><b-modal
|
||||
/>
|
||||
<b-modal
|
||||
id="members-modal"
|
||||
:title="$t('createGuild')"
|
||||
size="md"
|
||||
|
|
@ -19,7 +21,8 @@
|
|||
<h1 v-once>
|
||||
{{ $t('members') }}
|
||||
</h1>
|
||||
</div><div class="col-6">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button
|
||||
class="close"
|
||||
type="button"
|
||||
|
|
@ -29,7 +32,8 @@
|
|||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
</div><div class="row d-flex align-items-center">
|
||||
</div>
|
||||
<div class="row d-flex align-items-center">
|
||||
<div class="col-4">
|
||||
<input
|
||||
v-model="searchTerm"
|
||||
|
|
@ -37,7 +41,8 @@
|
|||
type="text"
|
||||
:placeholder="$t('search')"
|
||||
>
|
||||
</div><div class="col">
|
||||
</div>
|
||||
<div class="col">
|
||||
<select
|
||||
class="form-control"
|
||||
@change="changeSortOption($event)"
|
||||
|
|
@ -49,7 +54,8 @@
|
|||
{{ sortOption.text }}
|
||||
</option>
|
||||
</select>
|
||||
</div><div class="col-3">
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<select
|
||||
class="form-control"
|
||||
@change="changeSortDirection($event)"
|
||||
|
|
@ -63,12 +69,14 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="sortDirty && group.type === 'party'"
|
||||
class="row apply-options d-flex justify-content-center"
|
||||
>
|
||||
<a @click="applySortOptions()">{{ $t('applySortToHeader') }}</a>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="invites.length > 0"
|
||||
class="row"
|
||||
>
|
||||
|
|
@ -79,7 +87,8 @@
|
|||
@click="viewMembers()"
|
||||
>
|
||||
{{ $t('members') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="nav-item"
|
||||
:class="{active: selectedPage === 'invites'}"
|
||||
@click="viewInvites()"
|
||||
|
|
@ -87,65 +96,91 @@
|
|||
{{ $t('invites') }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div v-if="selectedPage === 'members'">
|
||||
</div>
|
||||
<div v-if="selectedPage === 'members'">
|
||||
<div
|
||||
v-for="(member, index) in sortedMembers"
|
||||
class="row"
|
||||
>
|
||||
<div class="col-11 no-padding-left">
|
||||
<member-details :member="member" />
|
||||
</div><div class="col-1 actions">
|
||||
</div>
|
||||
<div class="col-1 actions">
|
||||
<b-dropdown right="right">
|
||||
<div
|
||||
slot="button-content"
|
||||
class="svg-icon inline dots"
|
||||
v-html="icons.dots"
|
||||
></div><b-dropdown-item @click="sendMessage(member)">
|
||||
<span class="dropdown-icon-item"><div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.messageIcon"
|
||||
></div><span class="text">{{ $t('sendMessage') }}</span></span>
|
||||
</b-dropdown-item><b-dropdown-item
|
||||
></div>
|
||||
<b-dropdown-item @click="sendMessage(member)">
|
||||
<span class="dropdown-icon-item">
|
||||
<div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.messageIcon"
|
||||
></div>
|
||||
<span class="text">{{ $t('sendMessage') }}</span>
|
||||
</span>
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
v-if="shouldShowLeaderFunctions(member._id)"
|
||||
@click="promoteToLeader(member)"
|
||||
>
|
||||
<span class="dropdown-icon-item"><div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.starIcon"
|
||||
></div><span class="text">{{ $t('promoteToLeader') }}</span></span>
|
||||
</b-dropdown-item><b-dropdown-item
|
||||
<span class="dropdown-icon-item">
|
||||
<div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.starIcon"
|
||||
></div>
|
||||
<span class="text">{{ $t('promoteToLeader') }}</span>
|
||||
</span>
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
v-if="shouldShowAddManager(member._id)"
|
||||
@click="addManager(member._id)"
|
||||
>
|
||||
<span class="dropdown-icon-item"><div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.starIcon"
|
||||
></div><span class="text">{{ $t('addManager') }}</span></span>
|
||||
</b-dropdown-item><b-dropdown-item
|
||||
<span class="dropdown-icon-item">
|
||||
<div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.starIcon"
|
||||
></div>
|
||||
<span class="text">{{ $t('addManager') }}</span>
|
||||
</span>
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
v-if="shouldShowRemoveManager(member._id)"
|
||||
@click="removeManager(member._id)"
|
||||
>
|
||||
<span class="dropdown-icon-item"><div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.removeIcon"
|
||||
></div><span class="text">{{ $t('removeManager2') }}</span></span>
|
||||
</b-dropdown-item><b-dropdown-item
|
||||
<span class="dropdown-icon-item">
|
||||
<div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.removeIcon"
|
||||
></div>
|
||||
<span class="text">{{ $t('removeManager2') }}</span>
|
||||
</span>
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
v-if="challengeId"
|
||||
@click="viewProgress(member)"
|
||||
>
|
||||
<span class="dropdown-icon-item"><span class="text">{{ $t('viewProgress') }}</span></span>
|
||||
</b-dropdown-item><b-dropdown-item
|
||||
<span class="dropdown-icon-item">
|
||||
<span class="text">{{ $t('viewProgress') }}</span>
|
||||
</span>
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
v-if="shouldShowLeaderFunctions(member._id)"
|
||||
@click="removeMember(member, index)"
|
||||
>
|
||||
<span class="dropdown-icon-item"><div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.removeIcon"
|
||||
></div><span class="text">{{ $t('removeMember') }}</span></span>
|
||||
<span class="dropdown-icon-item">
|
||||
<div
|
||||
class="svg-icon inline"
|
||||
v-html="icons.removeIcon"
|
||||
></div>
|
||||
<span class="text">{{ $t('removeMember') }}</span>
|
||||
</span>
|
||||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="isLoadMoreAvailable"
|
||||
class="row"
|
||||
>
|
||||
|
|
@ -157,37 +192,45 @@
|
|||
{{ $t('loadMore') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="members.length > 3"
|
||||
class="row gradient"
|
||||
></div>
|
||||
</div><div v-if="selectedPage === 'invites'">
|
||||
</div>
|
||||
<div v-if="selectedPage === 'invites'">
|
||||
<div
|
||||
v-for="(member, index) in invites"
|
||||
class="row"
|
||||
>
|
||||
<div class="col-11 no-padding-left">
|
||||
<member-details :member="member" />
|
||||
</div><div class="col-1 actions">
|
||||
</div>
|
||||
<div class="col-1 actions">
|
||||
<b-dropdown right="right">
|
||||
<div
|
||||
slot="button-content"
|
||||
class="svg-icon inline dots"
|
||||
v-html="icons.dots"
|
||||
></div><b-dropdown-item
|
||||
></div>
|
||||
<b-dropdown-item
|
||||
v-if="isLeader"
|
||||
@click="removeInvite(member, index)"
|
||||
>
|
||||
<span class="dropdown-icon-item"><div
|
||||
v-if="isLeader"
|
||||
class="svg-icon inline"
|
||||
v-html="icons.removeIcon"
|
||||
></div><span class="text">{{ $t('removeInvite') }}</span></span>
|
||||
<span class="dropdown-icon-item">
|
||||
<div
|
||||
v-if="isLeader"
|
||||
class="svg-icon inline"
|
||||
v-html="icons.removeIcon"
|
||||
></div>
|
||||
<span class="text">{{ $t('removeInvite') }}</span>
|
||||
</span>
|
||||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="modal-footer">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="close()"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
<sidebar
|
||||
@search="updateSearch"
|
||||
@filter="updateFilters"
|
||||
/><div class="standard-page">
|
||||
/>
|
||||
<div class="standard-page">
|
||||
<div class="row">
|
||||
<div class="col-md-8 text-left">
|
||||
<h1
|
||||
|
|
@ -11,10 +12,12 @@
|
|||
class="page-header"
|
||||
>
|
||||
{{ $t('myGuilds') }}
|
||||
</h1><h2 v-if="loading && guilds.length === 0">
|
||||
</h1>
|
||||
<h2 v-if="loading && guilds.length === 0">
|
||||
{{ $t('loading') }}
|
||||
</h2>
|
||||
</div><div class="col-4">
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<button
|
||||
class="btn btn-secondary create-group-button float-right"
|
||||
@click="createGroup()"
|
||||
|
|
@ -22,13 +25,16 @@
|
|||
<div
|
||||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div><span v-once>{{ $t('createGuild2') }}</span>
|
||||
</button><!-- @TODO: Add when we implement recent activity .float-rightspan.dropdown-label {{ $t('sortBy') }}
|
||||
></div>
|
||||
<span v-once>{{ $t('createGuild2') }}</span>
|
||||
</button>
|
||||
<!-- @TODO: Add when we implement recent activity .float-rightspan.dropdown-label {{ $t('sortBy') }}
|
||||
b-dropdown(:text="$t('sort')", right=true)
|
||||
b-dropdown-item(v-for='sortOption in sortOptions', :key="sortOption.value", @click='sort(sortOption.value)') {{sortOption.text}}
|
||||
-->
|
||||
-->
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="!loading && guilds.length === 0"
|
||||
class="no-guilds text-center col-md-6 offset-md-3"
|
||||
|
|
@ -36,15 +42,19 @@ b-dropdown(:text="$t('sort')", right=true)
|
|||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.greyBadge"
|
||||
></div><h2 v-once>
|
||||
></div>
|
||||
<h2 v-once>
|
||||
{{ $t('noGuildsTitle') }}
|
||||
</h2><p v-once>
|
||||
</h2>
|
||||
<p v-once>
|
||||
{{ $t('noGuildsParagraph1') }}
|
||||
</p><p v-once>
|
||||
</p>
|
||||
<p v-once>
|
||||
{{ $t('noGuildsParagraph2') }}
|
||||
</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="!loading && guilds.length > 0 && filteredGuilds.length === 0"
|
||||
class="no-guilds text-center col-md-6 offset-md-3"
|
||||
|
|
@ -53,7 +63,8 @@ b-dropdown(:text="$t('sort')", right=true)
|
|||
{{ $t('noGuildsMatchFilters') }}
|
||||
</h2>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<public-guild-item
|
||||
v-for="guild in filteredGuilds"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@
|
|||
<h1 v-once>
|
||||
{{ $t('participantsTitle') }}
|
||||
</h1>
|
||||
</div><div class="col-6">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button
|
||||
class="close"
|
||||
type="button"
|
||||
|
|
@ -24,14 +25,16 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-for="member in participants"
|
||||
class="row"
|
||||
>
|
||||
<div class="col-12 no-padding-left">
|
||||
<member-details :member="member" />
|
||||
</div>
|
||||
</div><div class="modal-footer">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="close()"
|
||||
|
|
|
|||
|
|
@ -15,35 +15,42 @@
|
|||
v-if="guild.memberCount >= 1000"
|
||||
class="svg-icon shield"
|
||||
v-html="icons.goldGuildBadge"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="guild.memberCount >= 100 && guild.memberCount < 1000"
|
||||
class="svg-icon shield"
|
||||
v-html="icons.silverGuildBadgeIcon"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="guild.memberCount < 100"
|
||||
class="svg-icon shield"
|
||||
v-html="icons.bronzeGuildBadgeIcon"
|
||||
></div><div class="member-count">
|
||||
></div>
|
||||
<div class="member-count">
|
||||
{{ guild.memberCount | abbrNum }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col-md-10">
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<router-link :to="{ name: 'guild', params: { groupId: guild._id } }">
|
||||
<h3>{{ guild.name }}</h3>
|
||||
</router-link><p
|
||||
</router-link>
|
||||
<p
|
||||
v-if="guild.summary"
|
||||
class="summary"
|
||||
>
|
||||
{{ guild.summary.substr(0, MAX_SUMMARY_SIZE_FOR_GUILDS) }}
|
||||
</p><p
|
||||
</p>
|
||||
<p
|
||||
v-else
|
||||
class="summary"
|
||||
>
|
||||
{{ guild.name }}
|
||||
</p>
|
||||
</div><div class="col-md-2 cta-container">
|
||||
</div>
|
||||
<div class="col-md-2 cta-container">
|
||||
<button
|
||||
v-if="isMember && displayLeave"
|
||||
v-once
|
||||
|
|
@ -51,22 +58,26 @@
|
|||
@click.prevent="leave()"
|
||||
>
|
||||
{{ $t('leave') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
v-if="!isMember"
|
||||
v-once
|
||||
class="btn btn-success"
|
||||
@click="join()"
|
||||
>
|
||||
{{ $t('join') }}
|
||||
</button><div
|
||||
</button>
|
||||
<div
|
||||
v-if="displayGemBank"
|
||||
class="item-with-icon gem-bank"
|
||||
>
|
||||
<div
|
||||
class="svg-icon gem"
|
||||
v-html="icons.gem"
|
||||
></div><span class="count">{{ guild.balance * 4 }}</span>
|
||||
</div><div
|
||||
></div>
|
||||
<span class="count">{{ guild.balance * 4 }}</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="displayGemBank"
|
||||
v-once
|
||||
class="guild-bank"
|
||||
|
|
@ -74,7 +85,8 @@
|
|||
{{ $t('guildBank') }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<category-tags
|
||||
v-once
|
||||
class="col-md-12"
|
||||
|
|
@ -84,7 +96,7 @@
|
|||
<span
|
||||
v-if="showSuggested(guild._id)"
|
||||
class="recommend-text"
|
||||
> {{ $t('suggestedGroup') }}</span>
|
||||
>{{ $t('suggestedGroup') }}</span>
|
||||
</category-tags>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -9,29 +9,34 @@
|
|||
<div class="left-panel content">
|
||||
<h3 class="text-center">
|
||||
{{ $t('participantsTitle') }}
|
||||
</h3><div class="row">
|
||||
</h3>
|
||||
<div class="row">
|
||||
<div class="col-10 offset-1 text-center">
|
||||
<span
|
||||
v-once
|
||||
class="description"
|
||||
>{{ $t('participantDesc') }}</span>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-for="member in members"
|
||||
class="col-12 member"
|
||||
>
|
||||
<strong :class="{'declined-name': member.accepted === false}">{{ member.name }}</strong><div
|
||||
<strong :class="{'declined-name': member.accepted === false}">{{ member.name }}</strong>
|
||||
<div
|
||||
v-if="member.accepted === true"
|
||||
class="accepted float-right"
|
||||
>
|
||||
{{ $t('accepted') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="member.accepted === false"
|
||||
class="declined float-right"
|
||||
>
|
||||
{{ $t('declined') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="member.accepted === null"
|
||||
class="pending float-right"
|
||||
>
|
||||
|
|
@ -39,9 +44,11 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div v-if="questData">
|
||||
</div>
|
||||
<div v-if="questData">
|
||||
<questDialogContent :item="questData" />
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="canEditQuest"
|
||||
class="text-center actions"
|
||||
>
|
||||
|
|
@ -52,8 +59,10 @@
|
|||
@click="questConfirm()"
|
||||
>
|
||||
{{ $t('begin') }}
|
||||
</button><!-- @TODO don't allow the party leader to start the quest until the leader has accepted or rejected the invitation (users get confused and think "begin" means "join quest")-->
|
||||
</div><div>
|
||||
</button>
|
||||
<!-- @TODO don't allow the party leader to start the quest until the leader has accepted or rejected the invitation (users get confused and think "begin" means "join quest")-->
|
||||
</div>
|
||||
<div>
|
||||
<div
|
||||
v-once
|
||||
class="cancel"
|
||||
|
|
@ -62,7 +71,8 @@
|
|||
{{ $t('cancel') }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="questData"
|
||||
class="side-panel"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,14 @@
|
|||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.questIcon"
|
||||
></div><h4 v-once>
|
||||
></div>
|
||||
<h4 v-once>
|
||||
{{ $t('youAreNotOnQuest') }}
|
||||
</h4><p v-once>
|
||||
</h4>
|
||||
<p v-once>
|
||||
{{ $t('questDescription') }}
|
||||
</p><button
|
||||
</p>
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-secondary"
|
||||
@click="openStartQuestModal()"
|
||||
|
|
@ -20,7 +23,8 @@
|
|||
{{ $t('startAQuest') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="onPendingQuest && !onActiveQuest"
|
||||
class="row quest-active-section"
|
||||
>
|
||||
|
|
@ -29,9 +33,12 @@
|
|||
class="quest"
|
||||
:class="`inventory_quest_scroll_${questData.key}`"
|
||||
></div>
|
||||
</div><div class="col-6 titles">
|
||||
<strong>{{ questData.text() }}</strong><p>{{ acceptedCount }} / {{ group.memberCount }}</p>
|
||||
</div><div class="col-4">
|
||||
</div>
|
||||
<div class="col-6 titles">
|
||||
<strong>{{ questData.text() }}</strong>
|
||||
<p>{{ acceptedCount }} / {{ group.memberCount }}</p>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="openQuestDetails()"
|
||||
|
|
@ -39,22 +46,26 @@
|
|||
{{ $t('details') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="user.party.quest && user.party.quest.RSVPNeeded"
|
||||
class="row quest-active-section quest-invite"
|
||||
>
|
||||
<span>{{ $t('wouldYouParticipate') }}</span><button
|
||||
<span>{{ $t('wouldYouParticipate') }}</span>
|
||||
<button
|
||||
class="btn btn-primary accept"
|
||||
@click="questAccept(group._id)"
|
||||
>
|
||||
{{ $t('accept') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-primary reject"
|
||||
@click="questReject(group._id)"
|
||||
>
|
||||
{{ $t('reject') }}
|
||||
</button>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="!onPendingQuest && onActiveQuest"
|
||||
class="row quest-active-section"
|
||||
>
|
||||
|
|
@ -62,9 +73,11 @@
|
|||
<div
|
||||
class="quest-boss"
|
||||
:class="'quest_' + questData.key"
|
||||
></div><h3 v-once>
|
||||
></div>
|
||||
<h3 v-once>
|
||||
{{ questData.text() }}
|
||||
</h3><div class="quest-box">
|
||||
</h3>
|
||||
<div class="quest-box">
|
||||
<div
|
||||
v-if="questData.collect"
|
||||
class="collect-info"
|
||||
|
|
@ -76,27 +89,33 @@
|
|||
@click="openParticipantList()"
|
||||
>{{ $t('participantsTitle') }}</a>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-for="(value, key) in questData.collect"
|
||||
class="row"
|
||||
>
|
||||
<div class="col-2">
|
||||
<div :class="'quest_' + questData.key + '_' + key"></div>
|
||||
</div><div class="col-10">
|
||||
<strong>{{ value.text() }}</strong><div class="grey-progress-bar">
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<strong>{{ value.text() }}</strong>
|
||||
<div class="grey-progress-bar">
|
||||
<div
|
||||
class="collect-progress-bar"
|
||||
:style="{width: (group.quest.progress.collect[key] / value.count) * 100 + '%'}"
|
||||
></div>
|
||||
</div><strong>{{ group.quest.progress.collect[key] }} / {{ value.count }}</strong>
|
||||
</div>
|
||||
<strong>{{ group.quest.progress.collect[key] }} / {{ value.count }}</strong>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="userIsOnQuest"
|
||||
class="text-right"
|
||||
>
|
||||
{{ parseFloat(user.party.quest.progress.collectedItems) || 0 }} items found
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="questData.boss"
|
||||
class="boss-info"
|
||||
>
|
||||
|
|
@ -108,13 +127,15 @@
|
|||
>
|
||||
{{ questData.boss.name() }}
|
||||
</h4>
|
||||
</div><div class="col-6">
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<a
|
||||
class="float-right"
|
||||
@click="openParticipantList()"
|
||||
>{{ $t('participantsTitle') }}</a>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="grey-progress-bar">
|
||||
<div
|
||||
|
|
@ -123,16 +144,26 @@
|
|||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row boss-details">
|
||||
</div>
|
||||
<div class="row boss-details">
|
||||
<div class="col-6">
|
||||
<span class="float-left">{{ Math.ceil(parseFloat(group.quest.progress.hp) * 100) / 100 }} / {{ parseFloat(questData.boss.hp).toFixed(2) }}<!-- current boss hp uses ceil so you don't underestimate damage needed to end quest--></span>
|
||||
</div><div
|
||||
<span class="float-left">
|
||||
{{ Math.ceil(parseFloat(group.quest.progress.hp) * 100) / 100 }} / {{ parseFloat(questData.boss.hp).toFixed(2) }}
|
||||
<!-- current boss hp uses ceil so you don't underestimate damage needed to end quest-->
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="userIsOnQuest"
|
||||
class="col-6"
|
||||
>
|
||||
<!-- @TODO: Why do we not sync quest progress on the group doc? Each user could have different progress.--><span class="float-right">{{ user.party.quest.progress.up | floor(10) }} {{ $t('pendingDamageLabel') }}</span><!-- player's pending damage uses floor so you don't overestimate damage you've already done-->
|
||||
<!-- @TODO: Why do we not sync quest progress on the group doc? Each user could have different progress.-->
|
||||
<span
|
||||
class="float-right"
|
||||
>{{ user.party.quest.progress.up | floor(10) }} {{ $t('pendingDamageLabel') }}</span>
|
||||
<!-- player's pending damage uses floor so you don't overestimate damage you've already done-->
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="questData.boss.rage"
|
||||
class="row rage-bar-row"
|
||||
>
|
||||
|
|
@ -144,16 +175,20 @@
|
|||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="questData.boss.rage"
|
||||
class="row boss-details rage-details"
|
||||
>
|
||||
<div class="col-6">
|
||||
<span class="float-left">{{ $t('rage') }} {{ parseFloat(group.quest.progress.rage).toFixed(2) }} / {{ questData.boss.rage.value }}</span>
|
||||
<span
|
||||
class="float-left"
|
||||
>{{ $t('rage') }} {{ parseFloat(group.quest.progress.rage).toFixed(2) }} / {{ questData.boss.rage.value }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><button
|
||||
</div>
|
||||
<button
|
||||
v-if="canEditQuest"
|
||||
v-once
|
||||
class="btn btn-secondary"
|
||||
|
|
|
|||
|
|
@ -7,11 +7,14 @@
|
|||
type="text"
|
||||
:placeholder="$t('search')"
|
||||
>
|
||||
</div><form>
|
||||
</div>
|
||||
<form>
|
||||
<h2 v-once>
|
||||
{{ $t('filter') }}
|
||||
</h2><div class="form-group">
|
||||
<h3>{{ $t('category') }}</h3><div
|
||||
</h2>
|
||||
<div class="form-group">
|
||||
<h3>{{ $t('category') }}</h3>
|
||||
<div
|
||||
v-for="group in categoryOptions"
|
||||
:key="group.key"
|
||||
class="form-check"
|
||||
|
|
@ -23,15 +26,18 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="group.key"
|
||||
>{{ $t(group.label) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="form-group">
|
||||
<h3>{{ $t('role') }}</h3><div
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<h3>{{ $t('role') }}</h3>
|
||||
<div
|
||||
v-for="group in roleOptions"
|
||||
:key="group.key"
|
||||
class="form-check"
|
||||
|
|
@ -43,15 +49,18 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="group.key"
|
||||
>{{ $t(group.label) }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="form-group">
|
||||
<h3>{{ $t('guildSize') }}</h3><div
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<h3>{{ $t('guildSize') }}</h3>
|
||||
<div
|
||||
v-for="group in guildSizeOptions"
|
||||
:key="group.key"
|
||||
class="form-check"
|
||||
|
|
@ -63,7 +72,8 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:value="group.key"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="group.key"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
<div class="left-panel content">
|
||||
<h3 class="text-center">
|
||||
Quests
|
||||
</h3><div class="row">
|
||||
</h3>
|
||||
<div class="row">
|
||||
<div
|
||||
v-for="(value, key, index) in user.items.quests"
|
||||
v-if="value > 0"
|
||||
|
|
@ -25,15 +26,18 @@
|
|||
>
|
||||
<h4 class="popover-content-title">
|
||||
{{ quests.quests[key].text() }}
|
||||
</h4><questInfo :quest="quests.quests[key]" />
|
||||
</b-popover><div
|
||||
</h4>
|
||||
<questInfo :quest="quests.quests[key]" />
|
||||
</b-popover>
|
||||
<div
|
||||
:id="`inventory_quest_scroll_${key}`"
|
||||
class="quest"
|
||||
:class="`inventory_quest_scroll_${key}`"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-10 offset-1 text-center">
|
||||
<span
|
||||
v-once
|
||||
|
|
@ -41,9 +45,11 @@
|
|||
>{{ $t('noQuestToStart') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><div v-if="questData">
|
||||
</div>
|
||||
<div v-if="questData">
|
||||
<questDialogContent :item="questData" />
|
||||
</div><div class="text-center">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
:disabled="!Boolean(selectedQuest) || loading"
|
||||
|
|
@ -51,9 +57,11 @@
|
|||
>
|
||||
{{ $t('inviteToPartyOrQuest') }}
|
||||
</button>
|
||||
</div><div class="text-center">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<p>{{ $t('inviteInformation') }}</p>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="questData"
|
||||
class="side-panel"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,23 +1,28 @@
|
|||
<template>
|
||||
<div class="row">
|
||||
<world-boss-info-modal /><world-boss-rage-modal /><div class="col-12 col-sm-8 clearfix standard-page">
|
||||
<world-boss-info-modal />
|
||||
<world-boss-rage-modal />
|
||||
<div class="col-12 col-sm-8 clearfix standard-page">
|
||||
<div class="row">
|
||||
<div class="col-6 title-details">
|
||||
<h1 v-once>
|
||||
{{ $t('welcomeToTavern') }}
|
||||
</h1>
|
||||
</div>
|
||||
</div><chat
|
||||
</div>
|
||||
<chat
|
||||
:label="$t('tavernChat')"
|
||||
:group="group"
|
||||
:placeholder="$t('tavernCommunityGuidelinesPlaceholder')"
|
||||
@fetchRecentMessages="fetchRecentMessages()"
|
||||
/>
|
||||
</div><div class="col-12 col-sm-4 sidebar">
|
||||
</div>
|
||||
<div class="col-12 col-sm-4 sidebar">
|
||||
<div class="section">
|
||||
<div class="grassy-meadow-backdrop">
|
||||
<div class="daniel_front"></div>
|
||||
</div><div class="boss-section">
|
||||
</div>
|
||||
<div class="boss-section">
|
||||
<div
|
||||
v-if="group && group.quest && group.quest.active"
|
||||
class="world-boss"
|
||||
|
|
@ -26,78 +31,111 @@
|
|||
<div
|
||||
class="corner-decoration"
|
||||
:style="{top: '-2px', right: '-2px'}"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
class="corner-decoration"
|
||||
:style="{top: '-2px', left: '-2px'}"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
class="corner-decoration"
|
||||
:style="{bottom: '-2px', right: '-2px'}"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
class="corner-decoration"
|
||||
:style="{bottom: '-2px', left: '-2px'}"
|
||||
></div><div class="text-center float-bar d-flex align-items-center">
|
||||
<span class="diamond"></span><span
|
||||
></div>
|
||||
<div class="text-center float-bar d-flex align-items-center">
|
||||
<span class="diamond"></span>
|
||||
<span
|
||||
class="strong reduce"
|
||||
:style="{background: questData.colors.dark}"
|
||||
>{{ $t('worldBossEvent') }}</span><span class="diamond"></span>
|
||||
</div><div class="boss-gradient pb-3 pt-3">
|
||||
>{{ $t('worldBossEvent') }}</span>
|
||||
<span class="diamond"></span>
|
||||
</div>
|
||||
<div class="boss-gradient pb-3 pt-3">
|
||||
<p
|
||||
class="text-center reduce"
|
||||
:style="{color: questData.colors.extralight}"
|
||||
>
|
||||
{{ $t(`${questData.key}ArtCredit`) }}
|
||||
</p><div
|
||||
</p>
|
||||
<div
|
||||
class="quest-boss"
|
||||
:class="'background_' + questData.key"
|
||||
>
|
||||
<div
|
||||
class="quest-boss"
|
||||
:class="'quest_' + questData.key"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
class="quest-boss"
|
||||
:class="'phobia_' + questData.key"
|
||||
:style="{display: 'none'}"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="p-3">
|
||||
</div>
|
||||
<div class="p-3">
|
||||
<div class="row d-flex align-items-center mb-2">
|
||||
<div class="col-sm-6">
|
||||
<strong class="float-left">{{ questData.boss.name() }}</strong>
|
||||
</div><div class="col-sm-6">
|
||||
<span class="d-flex float-right"><div
|
||||
class="svg-icon boss-icon"
|
||||
v-html="icons.swordIcon"
|
||||
></div><span
|
||||
class="ml-1 reduce"
|
||||
:style="{color: questData.colors.extralight}"
|
||||
>{{ $t('pendingDamage', {damage: pendingDamage()}) }}</span></span>
|
||||
</div>
|
||||
</div><div class="grey-progress-bar mb-1">
|
||||
<div class="col-sm-6">
|
||||
<span class="d-flex float-right">
|
||||
<div
|
||||
class="svg-icon boss-icon"
|
||||
v-html="icons.swordIcon"
|
||||
></div>
|
||||
<span
|
||||
class="ml-1 reduce"
|
||||
:style="{color: questData.colors.extralight}"
|
||||
>{{ $t('pendingDamage', {damage: pendingDamage()}) }}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grey-progress-bar mb-1">
|
||||
<div
|
||||
class="boss-health-bar"
|
||||
:style="{width: (group.quest.progress.hp / questData.boss.hp) * 100 + '%'}"
|
||||
></div>
|
||||
</div><span class="d-flex align-items-center"><div
|
||||
class="svg-icon boss-icon"
|
||||
v-html="icons.healthIcon"
|
||||
></div><span class="reduce ml-1 pt-1">{{ $t('bossHealth', {currentHealth: bossCurrentHealth(), maxHealth: questData.boss.hp.toLocaleString()}) }}</span></span><div class="mt-3 mb-2">
|
||||
<strong class="mr-1">{{ $t('rageAttack') }}</strong><span>{{ questData.boss.rage.title() }}</span>
|
||||
</div><div class="grey-progress-bar mb-1">
|
||||
</div>
|
||||
<span class="d-flex align-items-center">
|
||||
<div
|
||||
class="svg-icon boss-icon"
|
||||
v-html="icons.healthIcon"
|
||||
></div>
|
||||
<span
|
||||
class="reduce ml-1 pt-1"
|
||||
>{{ $t('bossHealth', {currentHealth: bossCurrentHealth(), maxHealth: questData.boss.hp.toLocaleString()}) }}</span>
|
||||
</span>
|
||||
<div class="mt-3 mb-2">
|
||||
<strong class="mr-1">{{ $t('rageAttack') }}</strong>
|
||||
<span>{{ questData.boss.rage.title() }}</span>
|
||||
</div>
|
||||
<div class="grey-progress-bar mb-1">
|
||||
<div
|
||||
class="boss-health-bar rage-bar"
|
||||
:style="{width: (group.quest.progress.rage / questData.boss.rage.value) * 100 + '%'}"
|
||||
></div>
|
||||
</div><span class="d-flex align-items-center"><div
|
||||
class="svg-icon boss-icon"
|
||||
v-html="icons.rageIcon"
|
||||
></div><span class="reduce ml-1 pt-1">{{ $t('bossRage', {currentRage: bossCurrentRage(), maxRage: questData.boss.rage.value.toLocaleString()}) }}</span></span><div class="row d-flex align-items-center mb-2 mt-2">
|
||||
</div>
|
||||
<span class="d-flex align-items-center">
|
||||
<div
|
||||
class="svg-icon boss-icon"
|
||||
v-html="icons.rageIcon"
|
||||
></div>
|
||||
<span
|
||||
class="reduce ml-1 pt-1"
|
||||
>{{ $t('bossRage', {currentRage: bossCurrentRage(), maxRage: questData.boss.rage.value.toLocaleString()}) }}</span>
|
||||
</span>
|
||||
<div class="row d-flex align-items-center mb-2 mt-2">
|
||||
<div class="col-sm-4 d-flex">
|
||||
<strong class="mr-2">{{ $t('rageStrikes') }}</strong><div
|
||||
<strong class="mr-2">{{ $t('rageStrikes') }}</strong>
|
||||
<div
|
||||
v-b-tooltip.hover.top="questData.boss.rage.description()"
|
||||
class="svg-icon boss-icon information-icon m-auto"
|
||||
v-html="icons.informationIcon"
|
||||
></div>
|
||||
</div><div class="col-sm-8 d-flex align-items-center justify-content-center">
|
||||
</div>
|
||||
<div class="col-sm-8 d-flex align-items-center justify-content-center">
|
||||
<div
|
||||
class="m-auto"
|
||||
@click="showWorldBossRage('seasonalShop')"
|
||||
|
|
@ -106,12 +144,14 @@
|
|||
v-if="!group.quest.extra.worldDmg.seasonalShop"
|
||||
class="rage-strike"
|
||||
src="~@/assets/images/world-boss/rage_strike@2x.png"
|
||||
><img
|
||||
>
|
||||
<img
|
||||
v-if="group.quest.extra.worldDmg.seasonalShop"
|
||||
class="rage-strike-active"
|
||||
src="~@/assets/images/world-boss/rage_strike-seasonalShop@2x.png"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="m-auto"
|
||||
@click="showWorldBossRage('market')"
|
||||
>
|
||||
|
|
@ -119,12 +159,14 @@
|
|||
v-if="!group.quest.extra.worldDmg.market"
|
||||
class="rage-strike"
|
||||
src="~@/assets/images/world-boss/rage_strike@2x.png"
|
||||
><img
|
||||
>
|
||||
<img
|
||||
v-if="group.quest.extra.worldDmg.market"
|
||||
class="rage-strike-active"
|
||||
src="~@/assets/images/world-boss/rage_strike-market@2x.png"
|
||||
>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="m-auto"
|
||||
@click="showWorldBossRage('quests')"
|
||||
>
|
||||
|
|
@ -132,19 +174,22 @@
|
|||
v-if="!group.quest.extra.worldDmg.quests"
|
||||
class="rage-strike"
|
||||
src="~@/assets/images/world-boss/rage_strike@2x.png"
|
||||
><img
|
||||
>
|
||||
<img
|
||||
v-if="group.quest.extra.worldDmg.quests"
|
||||
class="rage-strike-active"
|
||||
src="~@/assets/images/world-boss/rage_strike-quests@2x.png"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="boss-description p-3"
|
||||
:style="{'border-color': questData.colors.extralight}"
|
||||
@click="sections.worldBoss = !sections.worldBoss"
|
||||
>
|
||||
<strong class="float-left">{{ $t('worldBossDescription') }}</strong><div class="float-right">
|
||||
<strong class="float-left">{{ $t('worldBossDescription') }}</strong>
|
||||
<div class="float-right">
|
||||
<div
|
||||
v-if="!sections.worldBoss"
|
||||
class="toggle-down"
|
||||
|
|
@ -153,7 +198,8 @@
|
|||
class="svg-icon boss-icon"
|
||||
v-html="icons.chevronIcon"
|
||||
></div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="sections.worldBoss"
|
||||
class="toggle-up"
|
||||
>
|
||||
|
|
@ -163,33 +209,42 @@
|
|||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="sections.worldBoss"
|
||||
class="mt-3"
|
||||
v-html="questData.notes()"
|
||||
></div>
|
||||
</div>
|
||||
</div><!-- .text-center.mt-4.world-boss-info-button(@click="showWorldBossInfo()") {{$t('whatIsWorldBoss') }}
|
||||
-->
|
||||
</div><div class="sleep below-header-sections">
|
||||
<strong v-once>{{ $t('sleepDescription') }}</strong><ul>
|
||||
</div>
|
||||
<!-- .text-center.mt-4.world-boss-info-button(@click="showWorldBossInfo()") {{$t('whatIsWorldBoss') }}
|
||||
-->
|
||||
</div>
|
||||
<div class="sleep below-header-sections">
|
||||
<strong v-once>{{ $t('sleepDescription') }}</strong>
|
||||
<ul>
|
||||
<li v-once>
|
||||
{{ $t('sleepBullet1') }}
|
||||
</li><li v-once>
|
||||
</li>
|
||||
<li v-once>
|
||||
{{ $t('sleepBullet2') }}
|
||||
</li><li v-once>
|
||||
</li>
|
||||
<li v-once>
|
||||
{{ $t('sleepBullet3') }}
|
||||
</li><li v-once>
|
||||
</li>
|
||||
<li v-once>
|
||||
{{ $t('sleepBullet4') }}
|
||||
</li>
|
||||
</ul><button
|
||||
</ul>
|
||||
<button
|
||||
v-if="!user.preferences.sleep"
|
||||
v-once
|
||||
class="btn btn-secondary pause-button"
|
||||
@click="toggleSleep()"
|
||||
>
|
||||
{{ $t('pauseDailies') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
v-if="user.preferences.sleep"
|
||||
v-once
|
||||
class="btn btn-secondary pause-button"
|
||||
|
|
@ -198,7 +253,8 @@
|
|||
{{ $t('unpauseDailies') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div class="px-3">
|
||||
</div>
|
||||
<div class="px-3">
|
||||
<sidebar-section :title="$t('staffAndModerators')">
|
||||
<div class="row">
|
||||
<div
|
||||
|
|
@ -212,170 +268,212 @@
|
|||
:to="{'name': 'userProfile', 'params': {'userId': user.uuid}}"
|
||||
>
|
||||
{{ user.name }}
|
||||
</router-link><div
|
||||
</router-link>
|
||||
<div
|
||||
v-if="user.type === 'Staff'"
|
||||
class="svg-icon staff-icon"
|
||||
v-html="icons.tierStaff"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="user.type === 'Moderator' && user.name !== 'It's Bailey'"
|
||||
class="svg-icon mod-icon"
|
||||
v-html="icons.tierMod"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
v-if="user.name === 'It's Bailey'"
|
||||
class="svg-icon npc-icon"
|
||||
v-html="icons.tierNPC"
|
||||
></div>
|
||||
</div><div class="type">
|
||||
</div>
|
||||
<div class="type">
|
||||
{{ user.type }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</sidebar-section><sidebar-section :title="$t('helpfulLinks')">
|
||||
</sidebar-section>
|
||||
<sidebar-section :title="$t('helpfulLinks')">
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
href=""
|
||||
href
|
||||
@click.prevent="modForm()"
|
||||
>{{ $t('contactForm') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<router-link
|
||||
v-once
|
||||
to="/static/community-guidelines"
|
||||
>
|
||||
{{ $t('communityGuidelinesLink') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
<router-link to="/groups/guild/f2db2a7f-13c5-454d-b3ee-ea1f5089e601">
|
||||
</li>
|
||||
<li>
|
||||
<router-link
|
||||
to="/groups/guild/f2db2a7f-13c5-454d-b3ee-ea1f5089e601"
|
||||
>
|
||||
{{ $t('lookingForGroup') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<router-link
|
||||
v-once
|
||||
to="/static/faq"
|
||||
>
|
||||
{{ $t('faq') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href=""
|
||||
href
|
||||
v-html="$t('glossary')"
|
||||
></a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
v-once
|
||||
href="http://habitica.fandom.com/wiki/Habitica_Wiki"
|
||||
target="_blank"
|
||||
>{{ $t('wiki') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
v-once
|
||||
href="https://oldgods.net/habitrpg/habitrpg_user_data_display.html"
|
||||
target="_blank"
|
||||
>{{ $t('dataDisplayTool') }}</a>
|
||||
</li><li>
|
||||
<router-link to="/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac">
|
||||
</li>
|
||||
<li>
|
||||
<router-link
|
||||
to="/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac"
|
||||
>
|
||||
{{ $t('reportProblem') }}
|
||||
</router-link>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
v-once
|
||||
href="https://trello.com/c/odmhIqyW/440-read-first-table-of-contents"
|
||||
target="_blank"
|
||||
>{{ $t('requestFeature') }}</a>
|
||||
</li><li>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href=""
|
||||
href
|
||||
v-html="$t('communityForum')"
|
||||
></a>
|
||||
</li><li>
|
||||
<router-link to="/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a">
|
||||
</li>
|
||||
<li>
|
||||
<router-link
|
||||
to="/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a"
|
||||
>
|
||||
{{ $t('askQuestionGuild') }}
|
||||
</router-link>
|
||||
</li>
|
||||
</ul>
|
||||
</sidebar-section><sidebar-section :title="$t('playerTiers')">
|
||||
</sidebar-section>
|
||||
<sidebar-section :title="$t('playerTiers')">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<p v-once>
|
||||
{{ $t('playerTiersDesc') }}
|
||||
</p><ul class="tier-list">
|
||||
</p>
|
||||
<ul class="tier-list">
|
||||
<li
|
||||
v-once
|
||||
class="tier1"
|
||||
>
|
||||
{{ $t('tier1') }}<div
|
||||
{{ $t('tier1') }}
|
||||
<div
|
||||
class="svg-icon tier1-icon"
|
||||
v-html="icons.tier1"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="tier2"
|
||||
>
|
||||
{{ $t('tier2') }}<div
|
||||
{{ $t('tier2') }}
|
||||
<div
|
||||
class="svg-icon tier2-icon"
|
||||
v-html="icons.tier2"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="tier3"
|
||||
>
|
||||
{{ $t('tier3') }}<div
|
||||
{{ $t('tier3') }}
|
||||
<div
|
||||
class="svg-icon tier3-icon"
|
||||
v-html="icons.tier3"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="tier4"
|
||||
>
|
||||
{{ $t('tier4') }}<div
|
||||
{{ $t('tier4') }}
|
||||
<div
|
||||
class="svg-icon tier4-icon"
|
||||
v-html="icons.tier4"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="tier5"
|
||||
>
|
||||
{{ $t('tier5') }}<div
|
||||
{{ $t('tier5') }}
|
||||
<div
|
||||
class="svg-icon tier5-icon"
|
||||
v-html="icons.tier5"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="tier6"
|
||||
>
|
||||
{{ $t('tier6') }}<div
|
||||
{{ $t('tier6') }}
|
||||
<div
|
||||
class="svg-icon tier6-icon"
|
||||
v-html="icons.tier6"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="tier7"
|
||||
>
|
||||
{{ $t('tier7') }}<div
|
||||
{{ $t('tier7') }}
|
||||
<div
|
||||
class="svg-icon tier7-icon"
|
||||
v-html="icons.tier7"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="moderator"
|
||||
>
|
||||
{{ $t('tierModerator') }}<div
|
||||
{{ $t('tierModerator') }}
|
||||
<div
|
||||
class="svg-icon mod-icon"
|
||||
v-html="icons.tierMod"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="staff"
|
||||
>
|
||||
{{ $t('tierStaff') }}<div
|
||||
{{ $t('tierStaff') }}
|
||||
<div
|
||||
class="svg-icon staff-icon"
|
||||
v-html="icons.tierStaff"
|
||||
></div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
v-once
|
||||
class="npc"
|
||||
>
|
||||
{{ $t('tierNPC') }}<div
|
||||
{{ $t('tierNPC') }}
|
||||
<div
|
||||
class="svg-icon npc-icon"
|
||||
v-html="icons.tierNPC"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -3,9 +3,11 @@
|
|||
<small
|
||||
class="muted"
|
||||
v-html="$t('blurbHallContributors')"
|
||||
></small><div class="well">
|
||||
></small>
|
||||
<div class="well">
|
||||
<div v-if="user.contributor.admin">
|
||||
<h2>Reward User</h2><div class="row">
|
||||
<h2>Reward User</h2>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="!hero.profile"
|
||||
class="form col-6"
|
||||
|
|
@ -17,7 +19,8 @@
|
|||
type="text"
|
||||
:placeholder="'User ID or Username'"
|
||||
>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="loadHero(heroID)"
|
||||
|
|
@ -26,7 +29,8 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
v-if="hero && hero.profile"
|
||||
class="form col-6"
|
||||
|
|
@ -34,38 +38,62 @@
|
|||
>
|
||||
<router-link :to="{'name': 'userProfile', 'params': {'userId': hero._id}}">
|
||||
<h3>@{{ hero.auth.local.username }} / {{ hero.profile.name }}</h3>
|
||||
</router-link><div class="form-group">
|
||||
<label>Contributor Title</label><input
|
||||
</router-link>
|
||||
<div class="form-group">
|
||||
<label>Contributor Title</label>
|
||||
<input
|
||||
v-model="hero.contributor.text"
|
||||
class="form-control"
|
||||
type="text"
|
||||
><small>Common titles: <strong>Ambassador, Artisan, Bard, Blacksmith, Challenger, Comrade, Fletcher, Linguist, Linguistic Scribe, Scribe, Socialite, Storyteller</strong>. Rare titles: Advisor, Chamberlain, Designer, Mathematician, Shirtster, Spokesperson, Statistician, Tinker, Transcriber, Troubadour.</small>
|
||||
</div><div class="form-group">
|
||||
<label>Contributor Tier</label><input
|
||||
>
|
||||
<small>
|
||||
Common titles:
|
||||
<strong>Ambassador, Artisan, Bard, Blacksmith, Challenger, Comrade, Fletcher, Linguist, Linguistic Scribe, Scribe, Socialite, Storyteller</strong>. Rare titles: Advisor, Chamberlain, Designer, Mathematician, Shirtster, Spokesperson, Statistician, Tinker, Transcriber, Troubadour.
|
||||
</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Contributor Tier</label>
|
||||
<input
|
||||
v-model="hero.contributor.level"
|
||||
class="form-control"
|
||||
type="number"
|
||||
><small>1-7 for normal contributors, 8 for moderators, 9 for staff. This determines which items, pets, and mounts are available, and name-tag coloring. Tiers 8 and 9 are automatically given admin status. <a
|
||||
target="_blank"
|
||||
href="https://trello.com/c/wkFzONhE/277-contributor-gear"
|
||||
>More details (1-7)</a>, <a
|
||||
target="_blank"
|
||||
href="https://github.com/HabitRPG/habitica/issues/3801"
|
||||
>more details (8-9)</a></small>
|
||||
</div><div class="form-group">
|
||||
<label>Contributions</label><textarea
|
||||
>
|
||||
<small>
|
||||
1-7 for normal contributors, 8 for moderators, 9 for staff. This determines which items, pets, and mounts are available, and name-tag coloring. Tiers 8 and 9 are automatically given admin status.
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://trello.com/c/wkFzONhE/277-contributor-gear"
|
||||
>More details (1-7)</a>,
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://github.com/HabitRPG/habitica/issues/3801"
|
||||
>more details (8-9)</a>
|
||||
</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Contributions</label>
|
||||
<textarea
|
||||
v-model="hero.contributor.contributions"
|
||||
class="form-control"
|
||||
cols="5"
|
||||
></textarea>
|
||||
</div><div class="form-group">
|
||||
<label>Balance</label><input
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Balance</label>
|
||||
<input
|
||||
v-model="hero.balance"
|
||||
class="form-control"
|
||||
type="number"
|
||||
step="any"
|
||||
><small><span>'{{ hero.balance }}' is in USD, <em>not</em> in Gems. E.g., if this number is 1, it means 4 Gems. Only use this option when manually granting Gems to players, don't use it when granting contributor tiers. Contrib tiers will automatically add Gems.</span></small>
|
||||
</div><div class="accordion">
|
||||
>
|
||||
<small>
|
||||
<span>
|
||||
'{{ hero.balance }}' is in USD,
|
||||
<em>not</em> in Gems. E.g., if this number is 1, it means 4 Gems. Only use this option when manually granting Gems to players, don't use it when granting contributor tiers. Contrib tiers will automatically add Gems.
|
||||
</span>
|
||||
</small>
|
||||
</div>
|
||||
<div class="accordion">
|
||||
<div
|
||||
class="accordion-group"
|
||||
heading="Items"
|
||||
|
|
@ -76,7 +104,8 @@
|
|||
@click="expandItems = !expandItems"
|
||||
>
|
||||
Update Item
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
v-if="expandItems"
|
||||
class="form-group well"
|
||||
>
|
||||
|
|
@ -85,18 +114,36 @@
|
|||
class="form-control"
|
||||
type="text"
|
||||
placeholder="Path (eg, items.pets.BearCub-Base)"
|
||||
><small class="muted">Enter the <strong>item path</strong>. E.g., <code>items.pets.BearCub-Zombie</code> or <code>items.gear.owned.head_special_0</code> or <code>items.gear.equipped.head</code>. You can find all the item paths below.</small><br><input
|
||||
>
|
||||
<small class="muted">
|
||||
Enter the
|
||||
<strong>item path</strong>. E.g.,
|
||||
<code>items.pets.BearCub-Zombie</code> or
|
||||
<code>items.gear.owned.head_special_0</code> or
|
||||
<code>items.gear.equipped.head</code>. You can find all the item paths below.
|
||||
</small>
|
||||
<br>
|
||||
<input
|
||||
v-model="hero.itemVal"
|
||||
class="form-control"
|
||||
type="text"
|
||||
placeholder="Value (eg, 5)"
|
||||
><small class="muted">Enter the <strong>item value</strong>. E.g., <code>5</code> or <code>false</code> or <code>head_warrior_3</code>. All values are listed in the All Item Paths section below.</small><div class="accordion">
|
||||
>
|
||||
<small class="muted">
|
||||
Enter the
|
||||
<strong>item value</strong>. E.g.,
|
||||
<code>5</code> or
|
||||
<code>false</code> or
|
||||
<code>head_warrior_3</code>. All values are listed in the All Item Paths section below.
|
||||
</small>
|
||||
<div class="accordion">
|
||||
<div
|
||||
class="accordion-group"
|
||||
heading="All Item Paths"
|
||||
>
|
||||
<pre>{{ allItemPaths }}</pre>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="accordion-group"
|
||||
heading="Current Items"
|
||||
>
|
||||
|
|
@ -104,7 +151,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="accordion-group"
|
||||
heading="Auth"
|
||||
>
|
||||
|
|
@ -114,34 +162,49 @@
|
|||
@click="expandAuth = !expandAuth"
|
||||
>
|
||||
Auth
|
||||
</h4><div v-if="expandAuth">
|
||||
<pre>{{ hero.auth }}</pre><div class="form-group">
|
||||
</h4>
|
||||
<div v-if="expandAuth">
|
||||
<pre>{{ hero.auth }}</pre>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<label><input
|
||||
v-if="hero.flags"
|
||||
v-model="hero.flags.chatShadowMuted"
|
||||
type="checkbox"
|
||||
><strong>Chat Shadow Muting On</strong></label>
|
||||
<label>
|
||||
<input
|
||||
v-if="hero.flags"
|
||||
v-model="hero.flags.chatShadowMuted"
|
||||
type="checkbox"
|
||||
>
|
||||
<strong>Chat Shadow Muting On</strong>
|
||||
</label>
|
||||
</div>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<label><input
|
||||
v-if="hero.flags"
|
||||
v-model="hero.flags.chatRevoked"
|
||||
type="checkbox"
|
||||
><strong>Chat Privileges Revoked</strong></label>
|
||||
<label>
|
||||
<input
|
||||
v-if="hero.flags"
|
||||
v-model="hero.flags.chatRevoked"
|
||||
type="checkbox"
|
||||
>
|
||||
<strong>Chat Privileges Revoked</strong>
|
||||
</label>
|
||||
</div>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<label><input
|
||||
v-model="hero.auth.blocked"
|
||||
type="checkbox"
|
||||
>Blocked</label>
|
||||
<label>
|
||||
<input
|
||||
v-model="hero.auth.blocked"
|
||||
type="checkbox"
|
||||
>Blocked
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- h4 Backer Status--><!-- Add backer stuff like tier, disable adds, etcs--><div class="form-group">
|
||||
</div>
|
||||
<!-- h4 Backer Status-->
|
||||
<!-- Add backer stuff like tier, disable adds, etcs-->
|
||||
<div class="form-group">
|
||||
<button
|
||||
class="form-control btn btn-primary"
|
||||
@click="saveHero()"
|
||||
|
|
@ -151,15 +214,21 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="table-responsive">
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ $t('name') }}</th><th v-if="user.contributor && user.contributor.admin">
|
||||
<th>{{ $t('name') }}</th>
|
||||
<th v-if="user.contributor && user.contributor.admin">
|
||||
{{ $t('UUID') }}
|
||||
</th><th>{{ $t('contribLevel') }}</th><th>{{ $t('title') }}</th><th>{{ $t('contributions') }}</th>
|
||||
</th>
|
||||
<th>{{ $t('contribLevel') }}</th>
|
||||
<th>{{ $t('title') }}</th>
|
||||
<th>{{ $t('contributions') }}</th>
|
||||
</tr>
|
||||
</thead><tbody>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(hero, index) in heroes">
|
||||
<td>
|
||||
<user-link
|
||||
|
|
@ -168,17 +237,22 @@
|
|||
:popover="$t('gamemaster')"
|
||||
popover-trigger="mouseenter"
|
||||
popover-placement="right"
|
||||
/><user-link
|
||||
/>
|
||||
<user-link
|
||||
v-if="!hero.contributor || !hero.contributor.admin"
|
||||
:user="hero"
|
||||
/>
|
||||
</td><td
|
||||
</td>
|
||||
<td
|
||||
v-if="user.contributor.admin"
|
||||
class="btn-link"
|
||||
@click="populateContributorInput(hero._id, index)"
|
||||
>
|
||||
{{ hero._id }}
|
||||
</td><td>{{ hero.contributor.level }}</td><td>{{ hero.contributor.text }}</td><td>
|
||||
</td>
|
||||
<td>{{ hero.contributor.level }}</td>
|
||||
<td>{{ hero.contributor.text }}</td>
|
||||
<td>
|
||||
<div
|
||||
v-markdown="hero.contributor.contributions"
|
||||
target="_blank"
|
||||
|
|
|
|||
|
|
@ -8,14 +8,16 @@
|
|||
:class="{'active': $route.name === 'contributors'}"
|
||||
>
|
||||
{{ $t('hallContributors') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'patrons'}"
|
||||
:class="{'active': $route.name === 'patrons'}"
|
||||
>
|
||||
{{ $t('hallPatrons') }}
|
||||
</router-link>
|
||||
</secondary-menu><div class="col-12">
|
||||
</secondary-menu>
|
||||
<div class="col-12">
|
||||
<router-view />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,34 @@
|
|||
<template>
|
||||
<div class="row">
|
||||
<small class="muted">{{ $t('blurbHallPatrons') }}</small><div class="table-responsive">
|
||||
<small class="muted">{{ $t('blurbHallPatrons') }}</small>
|
||||
<div class="table-responsive">
|
||||
<table
|
||||
class="table table-striped"
|
||||
infinite-scroll="loadMore()"
|
||||
>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ $t('name') }}</th><th v-if="user.contributor.admin">
|
||||
<th>{{ $t('name') }}</th>
|
||||
<th v-if="user.contributor.admin">
|
||||
{{ $t('UUID') }}
|
||||
</th><th>{{ $t('backerTier') }}</th>
|
||||
</th>
|
||||
<th>{{ $t('backerTier') }}</th>
|
||||
</tr>
|
||||
</thead><tbody>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="patron in patrons">
|
||||
<td>
|
||||
<a
|
||||
v-class="userLevelStyle(patron)"
|
||||
class="label label-default"
|
||||
@click="clickMember(patron._id, true)"
|
||||
></a>{{ patron.profile.name }}
|
||||
</td><td v-if="user.contributor.admin">
|
||||
></a>
|
||||
{{ patron.profile.name }}
|
||||
</td>
|
||||
<td v-if="user.contributor.admin">
|
||||
{{ patron._id }}
|
||||
</td><td>{{ patron.backer.tier }}</td>
|
||||
</td>
|
||||
<td>{{ patron.backer.tier }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -3,16 +3,20 @@
|
|||
<invite-modal
|
||||
:group="inviteModalGroup"
|
||||
:group-type="inviteModalGroupType"
|
||||
/><create-party-modal /><div
|
||||
/>
|
||||
<create-party-modal />
|
||||
<div
|
||||
id="app-header"
|
||||
class="row"
|
||||
:class="{'hide-header': $route.name === 'groupPlan'}"
|
||||
>
|
||||
<members-modal :hide-badge="true" /><member-details
|
||||
<members-modal :hide-badge="true" />
|
||||
<member-details
|
||||
:member="user"
|
||||
:class-badge-position="'next-to-name'"
|
||||
:is-header="true"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-if="hasParty"
|
||||
class="view-party d-flex align-items-center"
|
||||
>
|
||||
|
|
@ -22,7 +26,8 @@
|
|||
>
|
||||
{{ $t('viewParty') }}
|
||||
</button>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="hasParty"
|
||||
v-resize="1500"
|
||||
class="party-members d-flex"
|
||||
|
|
@ -39,15 +44,19 @@
|
|||
:class-badge-position="'hidden'"
|
||||
@onHover="expandMember(member._id)"
|
||||
/>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-else
|
||||
class="no-party d-flex justify-content-center text-center"
|
||||
>
|
||||
<div class="align-self-center">
|
||||
<h3>{{ $t('battleWithFriends') }}</h3><span
|
||||
<h3>{{ $t('battleWithFriends') }}</h3>
|
||||
<span
|
||||
class="small-text"
|
||||
v-html="$t('inviteFriendsParty')"
|
||||
></span><br><button
|
||||
></span>
|
||||
<br>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="createOrInviteParty()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
<template>
|
||||
<div>
|
||||
<inbox-modal /><creator-intro /><profileModal /><report-flag-modal /><send-gems-modal /><b-navbar
|
||||
<inbox-modal />
|
||||
<creator-intro />
|
||||
<profileModal />
|
||||
<report-flag-modal />
|
||||
<send-gems-modal />
|
||||
<b-navbar
|
||||
class="topbar navbar-inverse static-top"
|
||||
toggleable="lg"
|
||||
type="dark"
|
||||
|
|
@ -13,21 +18,29 @@
|
|||
<div
|
||||
class="logo svg-icon d-none d-xl-block"
|
||||
v-html="icons.logo"
|
||||
></div><div class="svg-icon gryphon d-xs-block d-xl-none"></div>
|
||||
</b-navbar-brand><b-navbar-toggle
|
||||
></div>
|
||||
<div class="svg-icon gryphon d-xs-block d-xl-none"></div>
|
||||
</b-navbar-brand>
|
||||
<b-navbar-toggle
|
||||
class="menu-toggle"
|
||||
target="menu_collapse"
|
||||
/><div class="quick-menu mobile-only form-inline">
|
||||
/>
|
||||
<div class="quick-menu mobile-only form-inline">
|
||||
<a
|
||||
v-b-tooltip.hover.bottom="$t('sync')"
|
||||
class="item-with-icon"
|
||||
:aria-label="$t('sync')"
|
||||
@click="sync"
|
||||
><div
|
||||
class="top-menu-icon svg-icon"
|
||||
v-html="icons.sync"
|
||||
></div></a><notification-menu class="item-with-icon" /><user-dropdown class="item-with-icon" />
|
||||
</div><b-collapse
|
||||
>
|
||||
<div
|
||||
class="top-menu-icon svg-icon"
|
||||
v-html="icons.sync"
|
||||
></div>
|
||||
</a>
|
||||
<notification-menu class="item-with-icon" />
|
||||
<user-dropdown class="item-with-icon" />
|
||||
</div>
|
||||
<b-collapse
|
||||
id="menu_collapse"
|
||||
v-model="menuIsOpen"
|
||||
class="collapse navbar-collapse"
|
||||
|
|
@ -41,7 +54,8 @@
|
|||
exact="exact"
|
||||
>
|
||||
{{ $t('tasks') }}
|
||||
</b-nav-item><li
|
||||
</b-nav-item>
|
||||
<li
|
||||
class="topbar-item droppable"
|
||||
:class="{'active': $route.path.startsWith('/inventory'), 'down': $route.path.startsWith('/inventory') && this.isDesktop()}"
|
||||
>
|
||||
|
|
@ -54,31 +68,36 @@
|
|||
class="chevron-icon-down"
|
||||
v-html="icons.chevronDown"
|
||||
></div>
|
||||
</div><router-link
|
||||
</div>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'items'}"
|
||||
>
|
||||
{{ $t('inventory') }}
|
||||
</router-link><div class="topbar-dropdown">
|
||||
</router-link>
|
||||
<div class="topbar-dropdown">
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'items'}"
|
||||
exact="exact"
|
||||
>
|
||||
{{ $t('items') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'equipment'}"
|
||||
>
|
||||
{{ $t('equipment') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'stable'}"
|
||||
>
|
||||
{{ $t('stable') }}
|
||||
</router-link>
|
||||
</div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
class="topbar-item droppable"
|
||||
:class="{'active': $route.path.startsWith('/shop'), 'down': $route.path.startsWith('/shop') && this.isDesktop()}"
|
||||
>
|
||||
|
|
@ -91,36 +110,42 @@
|
|||
class="chevron-icon-down"
|
||||
v-html="icons.chevronDown"
|
||||
></div>
|
||||
</div><router-link
|
||||
</div>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'market'}"
|
||||
>
|
||||
{{ $t('shops') }}
|
||||
</router-link><div class="topbar-dropdown">
|
||||
</router-link>
|
||||
<div class="topbar-dropdown">
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'market'}"
|
||||
exact="exact"
|
||||
>
|
||||
{{ $t('market') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'quests'}"
|
||||
>
|
||||
{{ $t('quests') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'seasonal'}"
|
||||
>
|
||||
{{ $t('titleSeasonalShop') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'time'}"
|
||||
>
|
||||
{{ $t('titleTimeTravelers') }}
|
||||
</router-link>
|
||||
</div>
|
||||
</li><b-nav-item
|
||||
</li>
|
||||
<b-nav-item
|
||||
v-if="this.user.party._id"
|
||||
class="topbar-item"
|
||||
:class="{'active': $route.path.startsWith('/party')}"
|
||||
|
|
@ -128,14 +153,16 @@
|
|||
:to="{name: 'party'}"
|
||||
>
|
||||
{{ $t('party') }}
|
||||
</b-nav-item><b-nav-item
|
||||
</b-nav-item>
|
||||
<b-nav-item
|
||||
v-if="!this.user.party._id"
|
||||
class="topbar-item"
|
||||
:class="{'active': $route.path.startsWith('/party')}"
|
||||
@click="openPartyModal()"
|
||||
>
|
||||
{{ $t('party') }}
|
||||
</b-nav-item><li
|
||||
</b-nav-item>
|
||||
<li
|
||||
class="topbar-item droppable"
|
||||
:class="{'active': $route.path.startsWith('/groups'), 'down': $route.path.startsWith('/groups') && this.isDesktop()}"
|
||||
>
|
||||
|
|
@ -148,30 +175,35 @@
|
|||
class="chevron-icon-down"
|
||||
v-html="icons.chevronDown"
|
||||
></div>
|
||||
</div><router-link
|
||||
</div>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'tavern'}"
|
||||
>
|
||||
{{ $t('guilds') }}
|
||||
</router-link><div class="topbar-dropdown">
|
||||
</router-link>
|
||||
<div class="topbar-dropdown">
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'tavern'}"
|
||||
>
|
||||
{{ $t('tavern') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'myGuilds'}"
|
||||
>
|
||||
{{ $t('myGuilds') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'guildsDiscovery'}"
|
||||
>
|
||||
{{ $t('guildsDiscovery') }}
|
||||
</router-link>
|
||||
</div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
class="topbar-item droppable"
|
||||
:class="{'active': $route.path.startsWith('/group-plans'), 'down': $route.path.startsWith('/group-plans') && this.isDesktop()}"
|
||||
>
|
||||
|
|
@ -185,12 +217,14 @@
|
|||
class="chevron-icon-down"
|
||||
v-html="icons.chevronDown"
|
||||
></div>
|
||||
</div><router-link
|
||||
</div>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'groupPlan'}"
|
||||
>
|
||||
{{ $t('group') }}
|
||||
</router-link><div class="topbar-dropdown">
|
||||
</router-link>
|
||||
<div class="topbar-dropdown">
|
||||
<router-link
|
||||
v-for="group in groupPlans"
|
||||
:key="group._id"
|
||||
|
|
@ -200,7 +234,8 @@
|
|||
{{ group.name }}
|
||||
</router-link>
|
||||
</div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
class="topbar-item droppable"
|
||||
:class="{'active': $route.path.startsWith('/challenges'), 'down': $route.path.startsWith('/challenges') && this.isDesktop()}"
|
||||
>
|
||||
|
|
@ -213,25 +248,29 @@
|
|||
class="chevron-icon-down"
|
||||
v-html="icons.chevronDown"
|
||||
></div>
|
||||
</div><router-link
|
||||
</div>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'myChallenges'}"
|
||||
>
|
||||
{{ $t('challenges') }}
|
||||
</router-link><div class="topbar-dropdown">
|
||||
</router-link>
|
||||
<div class="topbar-dropdown">
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'myChallenges'}"
|
||||
>
|
||||
{{ $t('myChallenges') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'findChallenges'}"
|
||||
>
|
||||
{{ $t('findChallenges') }}
|
||||
</router-link>
|
||||
</div>
|
||||
</li><li
|
||||
</li>
|
||||
<li
|
||||
class="topbar-item droppable"
|
||||
:class="{'active': $route.path.startsWith('/help'), 'down': $route.path.startsWith('/help') && this.isDesktop()}"
|
||||
>
|
||||
|
|
@ -244,51 +283,61 @@
|
|||
class="chevron-icon-down"
|
||||
v-html="icons.chevronDown"
|
||||
></div>
|
||||
</div><router-link
|
||||
</div>
|
||||
<router-link
|
||||
class="nav-link"
|
||||
:to="{name: 'faq'}"
|
||||
>
|
||||
{{ $t('help') }}
|
||||
</router-link><div class="topbar-dropdown">
|
||||
</router-link>
|
||||
<div class="topbar-dropdown">
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'faq'}"
|
||||
>
|
||||
{{ $t('faq') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
:to="{name: 'overview'}"
|
||||
>
|
||||
{{ $t('overview') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
to="/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac"
|
||||
>
|
||||
{{ $t('reportBug') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
to="/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a"
|
||||
>
|
||||
{{ $t('askAQuestion') }}
|
||||
</router-link><a
|
||||
</router-link>
|
||||
<a
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
href="https://trello.com/c/odmhIqyW/440-read-first-table-of-contents"
|
||||
target="_blank"
|
||||
>{{ $t('requestAF') }}</a><a
|
||||
>{{ $t('requestAF') }}</a>
|
||||
<a
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
href="http://habitica.fandom.com/wiki/Contributing_to_Habitica"
|
||||
target="_blank"
|
||||
>{{ $t('contributing') }}</a><a
|
||||
>{{ $t('contributing') }}</a>
|
||||
<a
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
href="http://habitica.fandom.com/wiki/Habitica_Wiki"
|
||||
target="_blank"
|
||||
>{{ $t('wiki') }}</a><a
|
||||
>{{ $t('wiki') }}</a>
|
||||
<a
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
@click="modForm()"
|
||||
>{{ $t('contactForm') }}</a>
|
||||
</div>
|
||||
</li>
|
||||
</b-navbar-nav><div class="currency-tray form-inline">
|
||||
</b-navbar-nav>
|
||||
<div class="currency-tray form-inline">
|
||||
<div
|
||||
v-if="userHourglasses > 0"
|
||||
class="item-with-icon"
|
||||
|
|
@ -297,8 +346,10 @@
|
|||
v-b-tooltip.hover.bottom="$t('mysticHourglassesTooltip')"
|
||||
class="top-menu-icon svg-icon"
|
||||
v-html="icons.hourglasses"
|
||||
></div><span>{{ userHourglasses }}</span>
|
||||
</div><div class="item-with-icon">
|
||||
></div>
|
||||
<span>{{ userHourglasses }}</span>
|
||||
</div>
|
||||
<div class="item-with-icon">
|
||||
<a
|
||||
v-b-tooltip.hover.bottom="$t('gems')"
|
||||
class="top-menu-icon svg-icon gem"
|
||||
|
|
@ -306,28 +357,36 @@
|
|||
href="#buy-gems"
|
||||
@click.prevent="showBuyGemsModal('gems')"
|
||||
v-html="icons.gem"
|
||||
></a><span>{{ userGems }}</span>
|
||||
</div><div class="item-with-icon gold">
|
||||
></a>
|
||||
<span>{{ userGems }}</span>
|
||||
</div>
|
||||
<div class="item-with-icon gold">
|
||||
<div
|
||||
v-b-tooltip.hover.bottom="$t('gold')"
|
||||
class="top-menu-icon svg-icon"
|
||||
:aria-label="$t('gold')"
|
||||
v-html="icons.gold"
|
||||
></div><span>{{ Math.floor(user.stats.gp * 100) / 100 }}</span>
|
||||
></div>
|
||||
<span>{{ Math.floor(user.stats.gp * 100) / 100 }}</span>
|
||||
</div>
|
||||
</div><div class="form-inline desktop-only">
|
||||
</div>
|
||||
<div class="form-inline desktop-only">
|
||||
<a
|
||||
class="item-with-icon"
|
||||
v-b-tooltip.hover.bottom="$t('sync')"
|
||||
class="item-with-icon"
|
||||
role="link"
|
||||
:aria-label="$t('sync')"
|
||||
tabindex="0"
|
||||
@click="sync"
|
||||
@keyup.enter="sync"
|
||||
><div
|
||||
class="top-menu-icon svg-icon"
|
||||
v-html="icons.sync"
|
||||
></div></a><notification-menu class="item-with-icon" /><user-dropdown class="item-with-icon" />
|
||||
>
|
||||
<div
|
||||
class="top-menu-icon svg-icon"
|
||||
v-html="icons.sync"
|
||||
></div>
|
||||
</a>
|
||||
<notification-menu class="item-with-icon" />
|
||||
<user-dropdown class="item-with-icon" />
|
||||
</div>
|
||||
</b-collapse>
|
||||
</b-navbar>
|
||||
|
|
|
|||
|
|
@ -9,9 +9,11 @@
|
|||
:class="{'is-not-bailey': isNotBailey}"
|
||||
>
|
||||
<slot name="icon"></slot>
|
||||
</div><div class="notification-content">
|
||||
</div>
|
||||
<div class="notification-content">
|
||||
<slot name="content"></slot>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="notification-remove"
|
||||
@click.stop="canRemove ? remove() : null"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
<div
|
||||
slot="content"
|
||||
v-html="$t('cardReceived', {card: cardString})"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
slot="icon"
|
||||
:class="cardClass"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,15 @@
|
|||
@click="action"
|
||||
>
|
||||
<div slot="content">
|
||||
<div v-html="notification.data.message"></div><div class="notifications-buttons">
|
||||
<div v-html="notification.data.message"></div>
|
||||
<div class="notifications-buttons">
|
||||
<div
|
||||
class="btn btn-small btn-success"
|
||||
@click.stop="approve()"
|
||||
>
|
||||
{{ $t('approve') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="btn btn-small btn-warning"
|
||||
@click.stop="needsWork()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,15 @@
|
|||
@click="action"
|
||||
>
|
||||
<div slot="content">
|
||||
<div v-html="textString"></div><div class="notifications-buttons">
|
||||
<div v-html="textString"></div>
|
||||
<div class="notifications-buttons">
|
||||
<div
|
||||
class="btn btn-small btn-success"
|
||||
@click.stop="accept()"
|
||||
>
|
||||
{{ $t('accept') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="btn btn-small btn-danger"
|
||||
@click.stop="reject()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<template>
|
||||
<!-- Read automatically from the group page mounted hook--><base-notification
|
||||
<!-- Read automatically from the group page mounted hook-->
|
||||
<base-notification
|
||||
:can-remove="canRemove"
|
||||
:has-icon="false"
|
||||
:notification="notification"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
@click="action"
|
||||
>
|
||||
<div slot="content">
|
||||
<span v-html="$t('userSentMessage', {user: notification.data.sender.name})"></span><div class="notification-small notification-ellipses">
|
||||
<span v-html="$t('userSentMessage', {user: notification.data.sender.name})"></span>
|
||||
<div class="notification-small notification-ellipses">
|
||||
{{ notification.data.excerpt }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
<div
|
||||
slot="content"
|
||||
v-html="$t('newSubscriberItem')"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
slot="icon"
|
||||
:class="mysteryClass"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -9,8 +9,10 @@
|
|||
<div slot="content">
|
||||
<div class="notification-bold-purple">
|
||||
{{ $t('newBaileyUpdate') }}
|
||||
</div><div>{{ notification.data.title }}</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div>{{ notification.data.title }}</div>
|
||||
</div>
|
||||
<div
|
||||
slot="icon"
|
||||
class="npc_bailey"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -5,13 +5,15 @@
|
|||
:notification="notification"
|
||||
>
|
||||
<div slot="content">
|
||||
<div v-html="$t('invitedToParty', {party: notification.data.name})"></div><div class="notifications-buttons">
|
||||
<div v-html="$t('invitedToParty', {party: notification.data.name})"></div>
|
||||
<div class="notifications-buttons">
|
||||
<div
|
||||
class="btn btn-small btn-success"
|
||||
@click.stop="accept()"
|
||||
>
|
||||
{{ $t('accept') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="btn btn-small btn-danger"
|
||||
@click.stop="reject()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -9,16 +9,19 @@
|
|||
<div
|
||||
class="message"
|
||||
v-html="$t('invitedToQuest', {quest: questName})"
|
||||
></div><quest-info
|
||||
></div>
|
||||
<quest-info
|
||||
:quest="questData"
|
||||
:small-version="true"
|
||||
/><div class="notifications-buttons">
|
||||
/>
|
||||
<div class="notifications-buttons">
|
||||
<div
|
||||
class="btn btn-small btn-success"
|
||||
@click.stop="questAccept()"
|
||||
>
|
||||
{{ $t('accept') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="btn btn-small btn-danger"
|
||||
@click.stop="questReject()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
<div
|
||||
slot="content"
|
||||
v-html="$t('unallocatedStatsPoints', {points: notification.data.points})"
|
||||
></div><div
|
||||
></div>
|
||||
<div
|
||||
slot="icon"
|
||||
class="svg-icon"
|
||||
v-html="icons.sparkles"
|
||||
|
|
|
|||
|
|
@ -12,9 +12,14 @@
|
|||
>
|
||||
<div class="username-notification-title">
|
||||
{{ $t('setUsernameNotificationTitle') }}
|
||||
</div><div>{{ $t('setUsernameNotificationBody') }}</div><div class="current-username-container mx-auto">
|
||||
<label class="font-weight-bold">{{ $t('currentUsername') + " " }}</label><label>@</label><label>{{ user.auth.local.username }}</label>
|
||||
</div><div class="notifications-buttons">
|
||||
</div>
|
||||
<div>{{ $t('setUsernameNotificationBody') }}</div>
|
||||
<div class="current-username-container mx-auto">
|
||||
<label class="font-weight-bold">{{ $t('currentUsername') + " " }}</label>
|
||||
<label>@</label>
|
||||
<label>{{ user.auth.local.username }}</label>
|
||||
</div>
|
||||
<div class="notifications-buttons">
|
||||
<div
|
||||
class="btn btn-small btn-secondary"
|
||||
@click.stop="changeUsername()"
|
||||
|
|
|
|||
|
|
@ -13,27 +13,37 @@
|
|||
<div class="text">
|
||||
<div class="title">
|
||||
{{ $t('worldBoss') }}
|
||||
</div><div class="sub-title">
|
||||
</div>
|
||||
<div class="sub-title">
|
||||
{{ $t('questDysheartenerText') }}
|
||||
</div>
|
||||
</div><div class="d-flex align-items-center justify-content-left">
|
||||
<div><div class="left-hearts"></div></div><div class="float-right">
|
||||
<div class="quest_dysheartener_notification"></div><div class="phobia_dysheartener_notification"></div>
|
||||
</div>
|
||||
<div class="d-flex align-items-center justify-content-left">
|
||||
<div>
|
||||
<div class="left-hearts"></div>
|
||||
</div>
|
||||
</div><div class="health-bar d-flex align-items-center justify-content-center">
|
||||
<div class="float-right">
|
||||
<div class="quest_dysheartener_notification"></div>
|
||||
<div class="phobia_dysheartener_notification"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="health-bar d-flex align-items-center justify-content-center">
|
||||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.health"
|
||||
></div><div class="boss-health-wrap">
|
||||
></div>
|
||||
<div class="boss-health-wrap">
|
||||
<div
|
||||
class="boss-health-bar"
|
||||
:style="{width: (parseInt(bossHp) / questData.boss.hp) * 100 + '%'}"
|
||||
></div>
|
||||
</div><div class="pending-damage">
|
||||
</div>
|
||||
<div class="pending-damage">
|
||||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.sword"
|
||||
></div><span>+{{ parseInt(user.party.quest.progress.up) || 0 }}</span>
|
||||
></div>
|
||||
<span>+{{ parseInt(user.party.quest.progress.up) || 0 }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -15,40 +15,48 @@
|
|||
:count="notificationsCount"
|
||||
:top="true"
|
||||
:gray="!hasUnseenNotifications"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
class="top-menu-icon svg-icon notifications"
|
||||
v-html="icons.notifications"
|
||||
></div>
|
||||
</div>
|
||||
</div><div slot="dropdown-content">
|
||||
</div>
|
||||
<div slot="dropdown-content">
|
||||
<div
|
||||
class="dropdown-item dropdown-separated d-flex justify-content-between dropdown-inactive align-items-center"
|
||||
@click.stop=""
|
||||
@click.stop
|
||||
>
|
||||
<h4
|
||||
v-once
|
||||
class="dropdown-title"
|
||||
>
|
||||
{{ $t('notifications') }}
|
||||
</h4><a
|
||||
</h4>
|
||||
<a
|
||||
class="small-link standard-link"
|
||||
:disabled="notificationsCount === 0"
|
||||
@click="dismissAll"
|
||||
>{{ $t('dismissAll') }}</a>
|
||||
</div><world-boss /><component
|
||||
</div>
|
||||
<world-boss />
|
||||
<component
|
||||
:is="notification.type"
|
||||
v-for="notification in notifications"
|
||||
:key="notification.id"
|
||||
:notification="notification"
|
||||
:can-remove="!isActionable(notification)"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
v-if="notificationsCount === 0"
|
||||
class="dropdown-item dropdown-separated d-flex justify-content-center dropdown-inactive no-notifications flex-column"
|
||||
>
|
||||
<div
|
||||
class="svg-icon"
|
||||
v-html="icons.success"
|
||||
></div><h2>{{ $t('noNotifications') }}</h2><p>{{ $t('noNotificationsText') }}</p>
|
||||
></div>
|
||||
<h2>{{ $t('noNotifications') }}</h2>
|
||||
<p>{{ $t('noNotificationsText') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</menu-dropdown>
|
||||
|
|
|
|||
|
|
@ -12,58 +12,77 @@
|
|||
v-if="user.inbox.newMessages > 0"
|
||||
:count="user.inbox.newMessages"
|
||||
:top="true"
|
||||
/><div
|
||||
/>
|
||||
<div
|
||||
class="top-menu-icon svg-icon user"
|
||||
v-html="icons.user"
|
||||
></div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
slot="dropdown-content"
|
||||
class="user-dropdown"
|
||||
>
|
||||
<a
|
||||
class="dropdown-item edit-avatar dropdown-separated"
|
||||
@click="showAvatar('body', 'size')"
|
||||
><h3>{{ user.profile.name }}</h3><span class="small-text">{{ $t('editAvatar') }}</span></a><a
|
||||
>
|
||||
<h3>{{ user.profile.name }}</h3>
|
||||
<span class="small-text">{{ $t('editAvatar') }}</span>
|
||||
</a>
|
||||
<a
|
||||
class="nav-link dropdown-item dropdown-separated d-flex justify-content-between align-items-center"
|
||||
@click.prevent="showInbox()"
|
||||
><div>{{ $t('messages') }}</div><message-count
|
||||
v-if="user.inbox.newMessages > 0"
|
||||
:count="user.inbox.newMessages"
|
||||
/></a><a
|
||||
>
|
||||
<div>{{ $t('messages') }}</div>
|
||||
<message-count
|
||||
v-if="user.inbox.newMessages > 0"
|
||||
:count="user.inbox.newMessages"
|
||||
/>
|
||||
</a>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
@click="showAvatar('backgrounds', '2019')"
|
||||
>{{ $t('backgrounds') }}</a><a
|
||||
>{{ $t('backgrounds') }}</a>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
@click="showProfile('stats')"
|
||||
>{{ $t('stats') }}</a><a
|
||||
>{{ $t('stats') }}</a>
|
||||
<a
|
||||
class="dropdown-item"
|
||||
@click="showProfile('achievements')"
|
||||
>{{ $t('achievements') }}</a><a
|
||||
>{{ $t('achievements') }}</a>
|
||||
<a
|
||||
class="dropdown-item dropdown-separated"
|
||||
@click="showProfile('profile')"
|
||||
>{{ $t('profile') }}</a><router-link
|
||||
>{{ $t('profile') }}</a>
|
||||
<router-link
|
||||
class="dropdown-item"
|
||||
:to="{name: 'site'}"
|
||||
>
|
||||
{{ $t('settings') }}
|
||||
</router-link><router-link
|
||||
</router-link>
|
||||
<router-link
|
||||
class="dropdown-item dropdown-separated"
|
||||
:to="{name: 'subscription'}"
|
||||
>
|
||||
{{ $t('subscription') }}
|
||||
</router-link><a
|
||||
</router-link>
|
||||
<a
|
||||
class="nav-link dropdown-item dropdown-separated"
|
||||
@click.prevent="logout()"
|
||||
>{{ $t('logout') }}</a><li
|
||||
>{{ $t('logout') }}</a>
|
||||
<li
|
||||
v-if="!this.user.purchased.plan.customerId"
|
||||
@click="showBuyGemsModal('subscribe')"
|
||||
>
|
||||
<div class="dropdown-item text-center">
|
||||
<h3 class="purple">
|
||||
{{ $t('needMoreGems') }}
|
||||
</h3><span class="small-text">{{ $t('needMoreGemsInfo') }}</span>
|
||||
</div><div class="learn-background py-2 text-center">
|
||||
</h3>
|
||||
<span class="small-text">{{ $t('needMoreGemsInfo') }}</span>
|
||||
</div>
|
||||
<div class="learn-background py-2 text-center">
|
||||
<button class="btn btn-primary btn-lg learn-button">
|
||||
{{ $t('learnMore') }}
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -9,19 +9,24 @@
|
|||
<span
|
||||
class="popover-content-attr-cell key"
|
||||
:class="{'hasValue': hasSumValue(attr) }"
|
||||
>{{ `${$t(attr)}: ` }}</span><span
|
||||
>{{ `${$t(attr)}: ` }}</span>
|
||||
<span
|
||||
class="popover-content-attr-cell label value"
|
||||
:class="{'green': hasSumValue(attr) }"
|
||||
>{{ `${stats.sum[attr]}` }}</span><span
|
||||
>{{ `${stats.sum[attr]}` }}</span>
|
||||
<span
|
||||
class="popover-content-attr-cell label bold"
|
||||
:class="{'hasValue': hasGearValue(attr) }"
|
||||
>{{ $t('gear') }}:</span><span
|
||||
>{{ $t('gear') }}:</span>
|
||||
<span
|
||||
class="popover-content-attr-cell label"
|
||||
:class="{'hasValue': hasGearValue(attr) }"
|
||||
>{{ stats.gear[attr] }}</span><span
|
||||
>{{ stats.gear[attr] }}</span>
|
||||
<span
|
||||
class="popover-content-attr-cell label bold"
|
||||
:class="{'hasValue': hasClassBonus(attr) }"
|
||||
>{{ $t('classEquipBonus') }}:</span><span
|
||||
>{{ $t('classEquipBonus') }}:</span>
|
||||
<span
|
||||
class="popover-content-attr-cell label"
|
||||
:class="{'hasValue': hasClassBonus(attr) }"
|
||||
>{{ `${stats.classBonus[attr]}` }}</span>
|
||||
|
|
|
|||
|
|
@ -3,23 +3,29 @@
|
|||
<div v-if="item.locked">
|
||||
<h4 class="popover-content-title">
|
||||
{{ `${$t('lockedItem')}` }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
v-if="item.specialClass"
|
||||
class="popover-content-text"
|
||||
>
|
||||
{{ `${$t('classLockedItem')}` }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-else
|
||||
class="popover-content-text"
|
||||
>
|
||||
{{ `${$t('tierLockedItem')}` }}
|
||||
</div><p></p>
|
||||
</div><div v-else>
|
||||
</div>
|
||||
<p></p>
|
||||
</div>
|
||||
<div v-else>
|
||||
<h4 class="popover-content-title">
|
||||
{{ itemText }}
|
||||
</h4><div class="popover-content-text">
|
||||
</h4>
|
||||
<div class="popover-content-text">
|
||||
{{ itemNotes }}
|
||||
</div><attributesGrid
|
||||
</div>
|
||||
<attributesGrid
|
||||
:user="user"
|
||||
:item="item"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@
|
|||
@click="hideDialog()"
|
||||
v-html="icons.close"
|
||||
></span>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="item != null"
|
||||
class="content"
|
||||
>
|
||||
|
|
@ -25,33 +26,42 @@
|
|||
:override-avatar-gear="memberOverrideAvatarGear(item)"
|
||||
:sprites-margin="'0px auto auto -1px'"
|
||||
:show-visual-buffs="false"
|
||||
/><h4 class="title">
|
||||
/>
|
||||
<h4 class="title">
|
||||
{{ itemText }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
class="text"
|
||||
v-html="itemNotes"
|
||||
></div><span
|
||||
></div>
|
||||
<span
|
||||
v-if="showClassTag"
|
||||
class="classTag"
|
||||
><span
|
||||
class="svg-icon inline icon-24"
|
||||
v-html="icons[itemClass]"
|
||||
></span><span
|
||||
class="className textCondensed"
|
||||
:class="itemClass"
|
||||
>{{ getClassName(itemClass) }}</span></span><attributesGrid
|
||||
>
|
||||
<span
|
||||
class="svg-icon inline icon-24"
|
||||
v-html="icons[itemClass]"
|
||||
></span>
|
||||
<span
|
||||
class="className textCondensed"
|
||||
:class="itemClass"
|
||||
>{{ getClassName(itemClass) }}</span>
|
||||
</span>
|
||||
<attributesGrid
|
||||
v-if="attributesGridVisible"
|
||||
class="attributesGrid"
|
||||
:user="user"
|
||||
:item="item"
|
||||
/><button
|
||||
/>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="equipItem()"
|
||||
>
|
||||
{{ $t(isEquipped ? 'unequip' : 'equip') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
slot="modal-footer"
|
||||
class="clearfix"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -8,10 +8,13 @@
|
|||
type="text"
|
||||
:placeholder="$t('search')"
|
||||
>
|
||||
</div><div class="form">
|
||||
</div>
|
||||
<div class="form">
|
||||
<h2 v-once>
|
||||
{{ $t('filter') }}
|
||||
</h2><h3>{{ this.groupBy === 'type' ? $t('equipmentType') : $t('class') }}</h3><div class="form-group">
|
||||
</h2>
|
||||
<h3>{{ this.groupBy === 'type' ? $t('equipmentType') : $t('class') }}</h3>
|
||||
<div class="form-group">
|
||||
<div
|
||||
v-for="group in itemsGroups"
|
||||
:key="group.key"
|
||||
|
|
@ -23,7 +26,8 @@
|
|||
v-model="viewOptions[group.key].selected"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="groupBy + group.key"
|
||||
|
|
@ -32,15 +36,18 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="standard-page">
|
||||
</div>
|
||||
<div class="standard-page">
|
||||
<div class="clearfix">
|
||||
<h1
|
||||
v-once
|
||||
class="float-left mb-4 page-header"
|
||||
>
|
||||
{{ $t('equipment') }}
|
||||
</h1><div class="float-right">
|
||||
<span class="dropdown-label">{{ $t('sortBy') }}</span><b-dropdown
|
||||
</h1>
|
||||
<div class="float-right">
|
||||
<span class="dropdown-label">{{ $t('sortBy') }}</span>
|
||||
<b-dropdown
|
||||
:text="$t(selectedSortGearBy)"
|
||||
right="right"
|
||||
>
|
||||
|
|
@ -52,7 +59,9 @@
|
|||
>
|
||||
{{ $t(sort) }}
|
||||
</b-dropdown-item>
|
||||
</b-dropdown><span class="dropdown-label">{{ $t('groupBy2') }}</span><b-dropdown
|
||||
</b-dropdown>
|
||||
<span class="dropdown-label">{{ $t('groupBy2') }}</span>
|
||||
<b-dropdown
|
||||
:text="$t(groupBy === 'type' ? 'equipmentType' : 'class')"
|
||||
right="right"
|
||||
>
|
||||
|
|
@ -61,7 +70,8 @@
|
|||
@click="groupBy = 'type'"
|
||||
>
|
||||
{{ $t('equipmentType') }}
|
||||
</b-dropdown-item><b-dropdown-item
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
:active="groupBy === 'class'"
|
||||
@click="groupBy = 'class'"
|
||||
>
|
||||
|
|
@ -69,7 +79,8 @@
|
|||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
</div><drawer
|
||||
</div>
|
||||
<drawer
|
||||
:title="$t('equipment')"
|
||||
:error-message="(costumeMode && !user.preferences.costume) ? $t('costumeDisabled') : null"
|
||||
:open-status="openStatus"
|
||||
|
|
@ -83,14 +94,16 @@
|
|||
:class="{'drawer-tab-text-active': !costumeMode}"
|
||||
@click="selectDrawerTab('equipment')"
|
||||
>{{ $t('equipment') }}</a>
|
||||
</div><div class="clearfix">
|
||||
</div>
|
||||
<div class="clearfix">
|
||||
<div class="drawer-tab float-left">
|
||||
<a
|
||||
class="drawer-tab-text"
|
||||
:class="{'drawer-tab-text-active': costumeMode}"
|
||||
@click="selectDrawerTab('costume')"
|
||||
>{{ $t('costume') }}</a>
|
||||
</div><toggle-switch
|
||||
</div>
|
||||
<toggle-switch
|
||||
class="float-right align-with-tab"
|
||||
:label="$t(costumeMode ? 'useCostume' : 'autoEquipBattleGear')"
|
||||
:checked="user.preferences[drawerPreference]"
|
||||
|
|
@ -99,7 +112,8 @@
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
slot="drawer-slider"
|
||||
class="items items-one-line"
|
||||
>
|
||||
|
|
@ -113,14 +127,15 @@
|
|||
:label="label"
|
||||
:popover-position="'top'"
|
||||
:show-popover="flatGear[activeItems[group]] && Boolean(flatGear[activeItems[group]].text)"
|
||||
@click="equipItem(flatGear[activeItems[group]])"
|
||||
@click="equipItem(flatGear[activeItems[group]])"
|
||||
>
|
||||
<template
|
||||
slot="popoverContent"
|
||||
slot-scope="context"
|
||||
>
|
||||
<equipmentAttributesPopover :item="context.item" />
|
||||
</template><template
|
||||
</template>
|
||||
<template
|
||||
slot="itemBadge"
|
||||
slot-scope="context"
|
||||
>
|
||||
|
|
@ -132,7 +147,8 @@
|
|||
</template>
|
||||
</item>
|
||||
</div>
|
||||
</drawer><div
|
||||
</drawer>
|
||||
<div
|
||||
v-for="group in itemsGroups"
|
||||
v-if="!anyFilterSelected || viewOptions[group.key].selected"
|
||||
:key="group.key"
|
||||
|
|
@ -140,8 +156,11 @@
|
|||
>
|
||||
<h2 class="mb-3">
|
||||
{{ group.label }}
|
||||
<span class="badge badge-pill badge-default">{{ items[group.key].length }}</span>
|
||||
</h2><itemRows
|
||||
<span
|
||||
class="badge badge-pill badge-default"
|
||||
>{{ items[group.key].length }}</span>
|
||||
</h2>
|
||||
<itemRows
|
||||
:items="sortItems(items[group.key], selectedSortGearBy)"
|
||||
:item-width="94"
|
||||
:item-margin="24"
|
||||
|
|
@ -168,7 +187,8 @@
|
|||
:show="!costumeMode || user.preferences.costume"
|
||||
@click="equipItem(context.item)"
|
||||
/>
|
||||
</template><template
|
||||
</template>
|
||||
<template
|
||||
slot="popoverContent"
|
||||
slot-scope="context"
|
||||
>
|
||||
|
|
@ -178,7 +198,8 @@
|
|||
</template>
|
||||
</itemRows>
|
||||
</div>
|
||||
</div><equipGearModal
|
||||
</div>
|
||||
<equipGearModal
|
||||
:item="gearToEquip"
|
||||
:costume-mode="costumeMode"
|
||||
:is-equipped="gearToEquip == null ? false : activeItems[gearToEquip.type] === gearToEquip.key"
|
||||
|
|
|
|||
|
|
@ -9,13 +9,19 @@
|
|||
<div
|
||||
class="pull-right"
|
||||
:class="`inventory_special_${cardType}`"
|
||||
></div><h4>{{ $t(cardType + 'Card') }}</h4>
|
||||
</div><div class="modal-body">
|
||||
></div>
|
||||
<h4>{{ $t(cardType + 'Card') }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div style="padding:10px">
|
||||
<p>{{ $t('toAndFromCard', { toName: user.profile.name, fromName}) }}</p><hr><div v-markdown="cardMessage"></div>
|
||||
<p>{{ $t('toAndFromCard', { toName: user.profile.name, fromName}) }}</p>
|
||||
<hr>
|
||||
<div v-markdown="cardMessage"></div>
|
||||
</div>
|
||||
</div><div class="modal-footer">
|
||||
<small class="pull-left">{{ $t(cardType + 'CardExplanation') }}</small><button
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<small class="pull-left">{{ $t(cardType + 'CardExplanation') }}</small>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="readCard()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -12,12 +12,15 @@
|
|||
type="text"
|
||||
:placeholder="$t('search')"
|
||||
>
|
||||
</div><div class="form">
|
||||
</div>
|
||||
<div class="form">
|
||||
<h2 v-once>
|
||||
{{ $t('filter') }}
|
||||
</h2><h3 v-once>
|
||||
</h2>
|
||||
<h3 v-once>
|
||||
{{ $t('equipmentType') }}
|
||||
</h3><div class="form-group">
|
||||
</h3>
|
||||
<div class="form-group">
|
||||
<div
|
||||
v-for="group in groups"
|
||||
:key="group.key"
|
||||
|
|
@ -29,7 +32,8 @@
|
|||
v-model="group.selected"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="group.key"
|
||||
|
|
@ -38,15 +42,18 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="standard-page">
|
||||
</div>
|
||||
<div class="standard-page">
|
||||
<div class="clearfix">
|
||||
<h1
|
||||
v-once
|
||||
class="float-left mb-4 page-header"
|
||||
>
|
||||
{{ $t('items') }}
|
||||
</h1><div class="float-right">
|
||||
<span class="dropdown-label">{{ $t('sortBy') }}</span><b-dropdown
|
||||
</h1>
|
||||
<div class="float-right">
|
||||
<span class="dropdown-label">{{ $t('sortBy') }}</span>
|
||||
<b-dropdown
|
||||
:text="$t(sortBy)"
|
||||
right="right"
|
||||
>
|
||||
|
|
@ -55,7 +62,8 @@
|
|||
@click="sortBy = 'quantity'"
|
||||
>
|
||||
{{ $t('quantity') }}
|
||||
</b-dropdown-item><b-dropdown-item
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
:active="sortBy === 'AZ'"
|
||||
@click="sortBy = 'AZ'"
|
||||
>
|
||||
|
|
@ -63,7 +71,8 @@
|
|||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-for="group in groups"
|
||||
v-if="!anyFilterSelected || group.selected"
|
||||
:key="group.key"
|
||||
|
|
@ -74,7 +83,8 @@
|
|||
v-if="group.key != 'special'"
|
||||
class="badge badge-pill badge-default"
|
||||
>{{ group.quantity }}</span>
|
||||
</h2><itemRows
|
||||
</h2>
|
||||
<itemRows
|
||||
v-if="group.key === 'eggs'"
|
||||
:items="items[group.key]"
|
||||
:item-width="94"
|
||||
|
|
@ -95,7 +105,9 @@
|
|||
:active="currentDraggingEgg == context.item"
|
||||
:highlight-border="isHatchable(currentDraggingPotion, context.item)"
|
||||
@itemDragOver="onDragOver($event, context.item)"
|
||||
@itemDropped="onDrop($event, context.item)" @itemDragLeave="onDragLeave()" @click="onEggClicked($event, context.item)"
|
||||
@itemDropped="onDrop($event, context.item)"
|
||||
@itemDragLeave="onDragLeave()"
|
||||
@click="onEggClicked($event, context.item)"
|
||||
>
|
||||
<template
|
||||
slot="popoverContent"
|
||||
|
|
@ -103,13 +115,15 @@
|
|||
>
|
||||
<h4 class="popover-content-title">
|
||||
{{ context.item.text }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
v-if="currentDraggingPotion == null"
|
||||
class="popover-content-text"
|
||||
>
|
||||
{{ context.item.notes }}
|
||||
</div>
|
||||
</template><template
|
||||
</template>
|
||||
<template
|
||||
slot="itemBadge"
|
||||
slot-scope="context"
|
||||
>
|
||||
|
|
@ -120,7 +134,8 @@
|
|||
</template>
|
||||
</item>
|
||||
</template>
|
||||
</itemRows><itemRows
|
||||
</itemRows>
|
||||
<itemRows
|
||||
v-else-if="group.key === 'hatchingPotions'"
|
||||
:items="items[group.key]"
|
||||
:item-width="94"
|
||||
|
|
@ -141,7 +156,8 @@
|
|||
:active="currentDraggingPotion == context.item"
|
||||
:highlight-border="isHatchable(context.item, currentDraggingEgg)"
|
||||
@itemDragEnd="onDragEnd($event, context.item)"
|
||||
@itemDragStart="onDragStart($event, context.item)" @click="onPotionClicked($event, context.item)"
|
||||
@itemDragStart="onDragStart($event, context.item)"
|
||||
@click="onPotionClicked($event, context.item)"
|
||||
>
|
||||
<template
|
||||
slot="popoverContent"
|
||||
|
|
@ -149,10 +165,12 @@
|
|||
>
|
||||
<h4 class="popover-content-title">
|
||||
{{ context.item.text }}
|
||||
</h4><div class="popover-content-text">
|
||||
</h4>
|
||||
<div class="popover-content-text">
|
||||
{{ context.item.notes }}
|
||||
</div>
|
||||
</template><template
|
||||
</template>
|
||||
<template
|
||||
slot="itemBadge"
|
||||
slot-scope="context"
|
||||
>
|
||||
|
|
@ -163,7 +181,8 @@
|
|||
</template>
|
||||
</item>
|
||||
</template>
|
||||
</itemRows><itemRows
|
||||
</itemRows>
|
||||
<itemRows
|
||||
v-else
|
||||
:items="items[group.key]"
|
||||
:item-width="94"
|
||||
|
|
@ -192,16 +211,20 @@
|
|||
>
|
||||
<h4 class="popover-content-title">
|
||||
{{ context.item.text }}
|
||||
</h4><questInfo :quest="context.item" />
|
||||
</div><div v-else>
|
||||
</h4>
|
||||
<questInfo :quest="context.item" />
|
||||
</div>
|
||||
<div v-else>
|
||||
<h4 class="popover-content-title">
|
||||
{{ context.item.text }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
class="popover-content-text"
|
||||
v-html="context.item.notes"
|
||||
></div>
|
||||
</div>
|
||||
</template><template
|
||||
</template>
|
||||
<template
|
||||
slot="itemBadge"
|
||||
slot-scope="context"
|
||||
>
|
||||
|
|
@ -214,7 +237,9 @@
|
|||
</template>
|
||||
</itemRows>
|
||||
</div>
|
||||
</div><hatchedPetDialog /><div
|
||||
</div>
|
||||
<hatchedPetDialog />
|
||||
<div
|
||||
ref="draggingEggInfo"
|
||||
class="eggInfo"
|
||||
>
|
||||
|
|
@ -222,13 +247,15 @@
|
|||
<div
|
||||
class="potion-icon"
|
||||
:class="'Pet_Egg_'+currentDraggingEgg.key"
|
||||
></div><div class="popover">
|
||||
></div>
|
||||
<div class="popover">
|
||||
<div class="popover-content">
|
||||
{{ $t('dragThisEgg', {eggName: currentDraggingEgg.text }) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="eggClickMode"
|
||||
ref="clickEggInfo"
|
||||
class="eggInfo mouse"
|
||||
|
|
@ -237,13 +264,17 @@
|
|||
<div
|
||||
class="potion-icon"
|
||||
:class="'Pet_Egg_'+currentDraggingEgg.key"
|
||||
></div><div class="popover">
|
||||
<div class="popover-content">
|
||||
></div>
|
||||
<div class="popover">
|
||||
<div
|
||||
class="popover-content"
|
||||
>
|
||||
{{ $t('clickOnPotionToHatch', {eggName: currentDraggingEgg.text }) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
ref="draggingPotionInfo"
|
||||
class="hatchingPotionInfo"
|
||||
>
|
||||
|
|
@ -251,13 +282,17 @@
|
|||
<div
|
||||
class="potion-icon"
|
||||
:class="'Pet_HatchingPotion_'+currentDraggingPotion.key"
|
||||
></div><div class="popover">
|
||||
<div class="popover-content">
|
||||
></div>
|
||||
<div class="popover">
|
||||
<div
|
||||
class="popover-content"
|
||||
>
|
||||
{{ $t('dragThisPotion', {potionName: currentDraggingPotion.text }) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="potionClickMode"
|
||||
ref="clickPotionInfo"
|
||||
class="hatchingPotionInfo mouse"
|
||||
|
|
@ -266,13 +301,18 @@
|
|||
<div
|
||||
class="potion-icon"
|
||||
:class="'Pet_HatchingPotion_'+currentDraggingPotion.key"
|
||||
></div><div class="popover">
|
||||
<div class="popover-content">
|
||||
></div>
|
||||
<div class="popover">
|
||||
<div
|
||||
class="popover-content"
|
||||
>
|
||||
{{ $t('clickOnEggToHatch', {potionName: currentDraggingPotion.text }) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><startQuestModal :group="user.party" /><cards-modal :card-options="cardOptions" />
|
||||
</div>
|
||||
<startQuestModal :group="user.party" />
|
||||
<cards-modal :card-options="cardOptions" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
<countBadge
|
||||
:show="true"
|
||||
:count="itemCount"
|
||||
/><span
|
||||
/>
|
||||
<span
|
||||
v-drag.food="item.key"
|
||||
class="item-content"
|
||||
:class="'Pet_Food_'+item.key"
|
||||
|
|
@ -20,14 +21,16 @@
|
|||
@itemDragStart="dragstart($event)"
|
||||
></span>
|
||||
</div>
|
||||
</div><b-popover
|
||||
</div>
|
||||
<b-popover
|
||||
:target="itemId"
|
||||
triggers="hover"
|
||||
placement="top"
|
||||
>
|
||||
<h4 class="popover-content-title">
|
||||
{{ itemName || item.text() }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
class="popover-content-text"
|
||||
v-html="item.notes()"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -12,23 +12,28 @@
|
|||
class="dialog-header title"
|
||||
>
|
||||
{{ $t('hatchedPetGeneric') }}
|
||||
</div><div class="inner-content">
|
||||
</div>
|
||||
<div class="inner-content">
|
||||
<div class="pet-background">
|
||||
<div :class="pet.class"></div>
|
||||
</div><h4 class="title">
|
||||
</div>
|
||||
<h4 class="title">
|
||||
{{ pet.name }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
v-if="!hideText"
|
||||
v-markdown="$t('hatchedPetHowToUse', { stableUrl: '/inventory/stable' })"
|
||||
class="text"
|
||||
></div><button
|
||||
></div>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="close()"
|
||||
>
|
||||
{{ $t('onward') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
slot="modal-footer"
|
||||
class="clearfix"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -7,27 +7,33 @@
|
|||
<div class="potionEggGroup">
|
||||
<div class="potionEggBackground">
|
||||
<div :class="'Pet_HatchingPotion_'+hatchablePet.potionKey"></div>
|
||||
</div><div class="potionEggBackground">
|
||||
</div>
|
||||
<div class="potionEggBackground">
|
||||
<div :class="'Pet_Egg_'+hatchablePet.eggKey"></div>
|
||||
</div>
|
||||
</div><h4 class="title">
|
||||
</div>
|
||||
<h4 class="title">
|
||||
{{ hatchablePet.name }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
class="text"
|
||||
v-html="$t('hatchDialogText', { potionName: hatchablePet.potionName, eggName: hatchablePet.eggName, petName: hatchablePet.name })"
|
||||
></div>
|
||||
</div><span
|
||||
</div>
|
||||
<span
|
||||
slot="modal-header"
|
||||
class="svg-icon icon-10"
|
||||
@click="closeHatchPetDialog()"
|
||||
v-html="icons.close"
|
||||
></span><div slot="modal-footer">
|
||||
></span>
|
||||
<div slot="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="hatchPet(hatchablePet)"
|
||||
>
|
||||
{{ $t('hatch') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary btn-flat"
|
||||
@click="closeHatchPetDialog()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
<div
|
||||
id="npmMattStable"
|
||||
class="npc_matt"
|
||||
></div><b-popover
|
||||
></div>
|
||||
<b-popover
|
||||
triggers="hover"
|
||||
placement="right"
|
||||
target="npmMattStable"
|
||||
|
|
@ -19,26 +20,31 @@
|
|||
class="popover-content-title"
|
||||
>
|
||||
{{ $t('mattBoch') }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
v-once
|
||||
class="popover-content-text"
|
||||
>
|
||||
{{ $t('mattBochText1') }}
|
||||
</div>
|
||||
</b-popover>
|
||||
</div><div class="form-group">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input
|
||||
v-model="searchText"
|
||||
class="form-control input-search"
|
||||
type="text"
|
||||
:placeholder="$t('search')"
|
||||
>
|
||||
</div><div class="form">
|
||||
</div>
|
||||
<div class="form">
|
||||
<h2 v-once>
|
||||
{{ $t('filter') }}
|
||||
</h2><h3 v-once>
|
||||
</h2>
|
||||
<h3 v-once>
|
||||
{{ $t('pets') }}
|
||||
</h3><div class="form-group">
|
||||
</h3>
|
||||
<div class="form-group">
|
||||
<div
|
||||
v-for="petGroup in petGroups"
|
||||
:key="petGroup.key"
|
||||
|
|
@ -51,16 +57,19 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:disabled="viewOptions[petGroup.key].animalCount == 0"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="petGroup.key"
|
||||
>{{ petGroup.label }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div><h3 v-once>
|
||||
</div>
|
||||
<h3 v-once>
|
||||
{{ $t('mounts') }}
|
||||
</h3><div class="form-group">
|
||||
</h3>
|
||||
<div class="form-group">
|
||||
<div
|
||||
v-for="mountGroup in mountGroups"
|
||||
:key="mountGroup.key"
|
||||
|
|
@ -73,32 +82,38 @@
|
|||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
:disabled="viewOptions[mountGroup.key].animalCount == 0"
|
||||
><label
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
:for="mountGroup.key"
|
||||
>{{ mountGroup.label }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="form-group clearfix">
|
||||
</div>
|
||||
<div class="form-group clearfix">
|
||||
<h3 class="float-left">
|
||||
{{ $t('hideMissing') }}
|
||||
</h3><toggle-switch
|
||||
</h3>
|
||||
<toggle-switch
|
||||
class="float-right"
|
||||
:checked="hideMissing"
|
||||
@change="updateHideMissing"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="standard-page">
|
||||
</div>
|
||||
<div class="standard-page">
|
||||
<div class="clearfix">
|
||||
<h1
|
||||
v-once
|
||||
class="float-left mb-4 page-header"
|
||||
>
|
||||
{{ $t('stable') }}
|
||||
</h1><div class="float-right">
|
||||
<span class="dropdown-label">{{ $t('sortBy') }}</span><b-dropdown
|
||||
</h1>
|
||||
<div class="float-right">
|
||||
<span class="dropdown-label">{{ $t('sortBy') }}</span>
|
||||
<b-dropdown
|
||||
:text="$t(selectedSortBy)"
|
||||
right="right"
|
||||
>
|
||||
|
|
@ -112,17 +127,22 @@
|
|||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
</div><h2 class="mb-3">
|
||||
</div>
|
||||
<h2 class="mb-3">
|
||||
{{ $t('pets') }}
|
||||
<span class="badge badge-pill badge-default">{{ countOwnedAnimals(petGroups[0], 'pet') }}</span>
|
||||
</h2><div
|
||||
<span
|
||||
class="badge badge-pill badge-default"
|
||||
>{{ countOwnedAnimals(petGroups[0], 'pet') }}</span>
|
||||
</h2>
|
||||
<div
|
||||
v-for="(petGroup, index) in petGroups"
|
||||
v-if="!anyFilterSelected || viewOptions[petGroup.key].selected"
|
||||
:key="petGroup.key"
|
||||
>
|
||||
<h4 v-if="viewOptions[petGroup.key].animalCount !== 0">
|
||||
{{ petGroup.label }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
v-for="(group, key, index) in pets(petGroup, hideMissing, selectedSortBy, searchTextThrottled)"
|
||||
v-if="index === 0 || $_openedItemRows_isToggled(petGroup.key)"
|
||||
class="pet-row d-flex"
|
||||
|
|
@ -155,24 +175,30 @@
|
|||
</template>
|
||||
</petItem>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="petGroup.key !== 'specialPets' && petGroup.key !== 'wackyPets'"
|
||||
class="btn btn-flat btn-show-more"
|
||||
@click="setShowMore(petGroup.key)"
|
||||
>
|
||||
{{ $_openedItemRows_isToggled(petGroup.key) ? $t('showLess') : $t('showMore') }}
|
||||
</div>
|
||||
</div><h2>
|
||||
</div>
|
||||
<h2>
|
||||
{{ $t('mounts') }}
|
||||
<span class="badge badge-pill badge-default">{{ countOwnedAnimals(mountGroups[0], 'mount') }}</span>
|
||||
</h2><div
|
||||
<span
|
||||
class="badge badge-pill badge-default"
|
||||
>{{ countOwnedAnimals(mountGroups[0], 'mount') }}</span>
|
||||
</h2>
|
||||
<div
|
||||
v-for="mountGroup in mountGroups"
|
||||
v-if="!anyFilterSelected || viewOptions[mountGroup.key].selected"
|
||||
:key="mountGroup.key"
|
||||
>
|
||||
<h4 v-if="viewOptions[mountGroup.key].animalCount != 0">
|
||||
{{ mountGroup.label }}
|
||||
</h4><div
|
||||
</h4>
|
||||
<div
|
||||
v-for="(group, key, index) in mounts(mountGroup, hideMissing, selectedSortBy, searchTextThrottled)"
|
||||
v-if="index === 0 || $_openedItemRows_isToggled(mountGroup.key)"
|
||||
class="pet-row d-flex"
|
||||
|
|
@ -188,7 +214,10 @@
|
|||
:show-popover="true"
|
||||
@click="selectMount(item)"
|
||||
>
|
||||
<span slot="popoverContent"><h4 class="popover-content-title">{{ item.name }}</h4></span><template
|
||||
<span slot="popoverContent">
|
||||
<h4 class="popover-content-title">{{ item.name }}</h4>
|
||||
</span>
|
||||
<template
|
||||
slot="itemBadge"
|
||||
slot-scope="context"
|
||||
>
|
||||
|
|
@ -200,14 +229,16 @@
|
|||
</template>
|
||||
</mountItem>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="mountGroup.key !== 'specialMounts'"
|
||||
class="btn btn-flat btn-show-more"
|
||||
@click="setShowMore(mountGroup.key)"
|
||||
>
|
||||
{{ $_openedItemRows_isToggled(mountGroup.key) ? $t('showLess') : $t('showMore') }}
|
||||
</div>
|
||||
</div><inventoryDrawer>
|
||||
</div>
|
||||
<inventoryDrawer>
|
||||
<template
|
||||
slot="item"
|
||||
slot-scope="ctx"
|
||||
|
|
@ -223,7 +254,9 @@
|
|||
/>
|
||||
</template>
|
||||
</inventoryDrawer>
|
||||
</div><hatchedPetDialog :hide-text="true" /><div
|
||||
</div>
|
||||
<hatchedPetDialog :hide-text="true" />
|
||||
<div
|
||||
ref="dragginFoodInfo"
|
||||
class="foodInfo"
|
||||
>
|
||||
|
|
@ -231,13 +264,17 @@
|
|||
<div
|
||||
class="food-icon"
|
||||
:class="'Pet_Food_'+currentDraggingFood.key"
|
||||
></div><div class="popover">
|
||||
<div class="popover-content">
|
||||
></div>
|
||||
<div class="popover">
|
||||
<div
|
||||
class="popover-content"
|
||||
>
|
||||
{{ $t('dragThisFood', {foodName: currentDraggingFood.text() }) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="foodClickMode"
|
||||
ref="clickFoodInfo"
|
||||
class="foodInfo mouse"
|
||||
|
|
@ -246,13 +283,19 @@
|
|||
<div
|
||||
class="food-icon"
|
||||
:class="'Pet_Food_'+currentDraggingFood.key"
|
||||
></div><div class="popover">
|
||||
<div class="popover-content">
|
||||
></div>
|
||||
<div class="popover">
|
||||
<div
|
||||
class="popover-content"
|
||||
>
|
||||
{{ $t('clickOnPetToFeed', {foodName: currentDraggingFood.text() }) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><mount-raised-modal /><welcome-modal /><hatching-modal :hatchable-pet.sync="hatchablePet" />
|
||||
</div>
|
||||
<mount-raised-modal />
|
||||
<welcome-modal />
|
||||
<hatching-modal :hatchable-pet.sync="hatchablePet" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -12,12 +12,14 @@
|
|||
<slot
|
||||
name="itemBadge"
|
||||
:item="item"
|
||||
></slot><span
|
||||
></slot>
|
||||
<span
|
||||
class="item-content"
|
||||
:class="itemClass()"
|
||||
></span>
|
||||
</div>
|
||||
</div><b-popover
|
||||
</div>
|
||||
<b-popover
|
||||
v-if="showPopover"
|
||||
:target="itemId"
|
||||
triggers="hover"
|
||||
|
|
|
|||
|
|
@ -9,22 +9,26 @@
|
|||
>
|
||||
<div class="dialog-header title">
|
||||
{{ $t('raisedPet', {pet: mount.text()}) }}
|
||||
</div><div class="inner-content">
|
||||
</div>
|
||||
<div class="inner-content">
|
||||
<div class="pet-background">
|
||||
<div
|
||||
class="mount"
|
||||
:class="`Mount_Icon_${mount.key}`"
|
||||
></div>
|
||||
</div><h4 class="title">
|
||||
</div>
|
||||
<h4 class="title">
|
||||
{{ mount.text() }}
|
||||
</h4><button
|
||||
</h4>
|
||||
<button
|
||||
class="btn btn-primary onward"
|
||||
@click="close()"
|
||||
>
|
||||
{{ $t('onward') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
slot="modal-footer"
|
||||
class="clearfix"
|
||||
></div>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
@mouseover.native="$emit('onHover')"
|
||||
@mouseout.native="$emit('onHover')"
|
||||
/>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="member-stats"
|
||||
:class="{'col-8': !expanded && !isHeader}"
|
||||
>
|
||||
|
|
@ -20,9 +21,11 @@
|
|||
<class-badge
|
||||
v-if="classBadgePosition === 'next-to-name'"
|
||||
:member-class="member.stats.class"
|
||||
/><div class="d-flex flex-column profile-name-character">
|
||||
/>
|
||||
<div class="d-flex flex-column profile-name-character">
|
||||
<h3 class="character-name">
|
||||
{{ member.profile.name }}<div
|
||||
{{ member.profile.name }}
|
||||
<div
|
||||
v-if="isBuffed"
|
||||
v-b-tooltip.hover.bottom="$t('buffed')"
|
||||
class="is-buffed"
|
||||
|
|
@ -32,31 +35,37 @@
|
|||
v-html="icons.buff"
|
||||
></div>
|
||||
</div>
|
||||
</h3><div class="small-text character-level">
|
||||
</h3>
|
||||
<div class="small-text character-level">
|
||||
<span
|
||||
v-if="member.auth && member.auth.local && member.auth.local.username"
|
||||
class="mr-1"
|
||||
>@{{ member.auth.local.username }}</span><span
|
||||
>@{{ member.auth.local.username }}</span>
|
||||
<span
|
||||
v-if="member.auth && member.auth.local && member.auth.local.username"
|
||||
class="mr-1"
|
||||
>•</span><span>{{ characterLevel }}</span>
|
||||
>•</span>
|
||||
<span>{{ characterLevel }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><stats-bar
|
||||
</div>
|
||||
<stats-bar
|
||||
:icon="icons.health"
|
||||
:value="member.stats.hp"
|
||||
:max-value="MAX_HEALTH"
|
||||
:tooltip="$t('health')"
|
||||
progress-class="bg-health"
|
||||
:condensed="condensed"
|
||||
/><stats-bar
|
||||
/>
|
||||
<stats-bar
|
||||
:icon="icons.experience"
|
||||
:value="member.stats.exp"
|
||||
:max-value="toNextLevel"
|
||||
:tooltip="$t('experience')"
|
||||
progress-class="bg-experience"
|
||||
:condensed="condensed"
|
||||
/><stats-bar
|
||||
/>
|
||||
<stats-bar
|
||||
v-if="hasClass"
|
||||
:icon="icons.mana"
|
||||
:value="member.stats.mp"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
v-model="searchTerm"
|
||||
class="form-control"
|
||||
type="text"
|
||||
><b-dropdown-item
|
||||
>
|
||||
<b-dropdown-item
|
||||
v-for="member in memberResults"
|
||||
:key="member._id"
|
||||
@click="selectMember(member)"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@
|
|||
class="form-control"
|
||||
type="text"
|
||||
>
|
||||
</b-dropdown-form><b-dropdown-item
|
||||
</b-dropdown-form>
|
||||
<b-dropdown-item
|
||||
v-for="member in memberResults"
|
||||
:key="member._id"
|
||||
@click="selectMember(member)"
|
||||
|
|
|
|||
|
|
@ -8,13 +8,15 @@
|
|||
<div class="text-center">
|
||||
<h2 class="col-12">
|
||||
{{ $t('sureKick') }}
|
||||
</h2><div
|
||||
</h2>
|
||||
<div
|
||||
v-if="memberToRemove.profile"
|
||||
class="col-12 removing-member"
|
||||
>
|
||||
{{ memberToRemove.profile.name }}
|
||||
</div>
|
||||
</div><div class="modal-body">
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<textarea
|
||||
v-model="removeMessage"
|
||||
class="form-control"
|
||||
|
|
@ -22,13 +24,15 @@
|
|||
rows="5"
|
||||
:placeholder="$t('optionalMessage')"
|
||||
></textarea>
|
||||
</div><div class="modal-footer">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="pull-left btn btn-danger"
|
||||
@click="confirmRemoveMember()"
|
||||
>
|
||||
{{ $t('yesRemove') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="close()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@
|
|||
>
|
||||
<div class="modal-header">
|
||||
<h4>Modify Inventory for {{ user.profile.name }}</h4>
|
||||
</div><div class="modal-body">
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
|
|
@ -18,29 +19,36 @@
|
|||
@click="showInv.gear = true"
|
||||
>
|
||||
Show Gear
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.gear"
|
||||
@click="showInv.gear = false"
|
||||
>
|
||||
Hide Gear
|
||||
</button><h4>Gear</h4><div ng-if="showInv.gear">
|
||||
</button>
|
||||
<h4>Gear</h4>
|
||||
<div ng-if="showInv.gear">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('gear', true)"
|
||||
>
|
||||
Own All
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('gear', false)"
|
||||
>
|
||||
Previously Own All
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('gear', undefined)"
|
||||
>
|
||||
Never Own All
|
||||
</button><hr><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="item in content.gear.flat"
|
||||
class="list-group-item"
|
||||
|
|
@ -50,29 +58,41 @@
|
|||
class="pull-left"
|
||||
:class="'shop_' + item.key"
|
||||
style="margin-right: 10px"
|
||||
></div>{{ item.text() }}<div class="clearfix">
|
||||
<label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'gear-' + item.key"
|
||||
ng-model="inv.gear[item.key]"
|
||||
ng-value="true"
|
||||
>Owned</label><label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'gear-' + item.key"
|
||||
ng-model="inv.gear[item.key]"
|
||||
ng-value="false"
|
||||
>Previously Owned</label><label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'gear-' + item.key"
|
||||
ng-model="inv.gear[item.key]"
|
||||
ng-value="undefined"
|
||||
>Never Owned</label>
|
||||
></div>
|
||||
{{ item.text() }}
|
||||
<div class="clearfix">
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'gear-' + item.key"
|
||||
ng-model="inv.gear[item.key]"
|
||||
ng-value="true"
|
||||
>Owned
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'gear-' + item.key"
|
||||
ng-model="inv.gear[item.key]"
|
||||
ng-value="false"
|
||||
>Previously Owned
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'gear-' + item.key"
|
||||
ng-model="inv.gear[item.key]"
|
||||
ng-value="undefined"
|
||||
>Never Owned
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><hr><div class="row">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
|
|
@ -80,29 +100,36 @@
|
|||
@click="showInv.special = true"
|
||||
>
|
||||
Show Special Items
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.special"
|
||||
@click="showInv.special = false"
|
||||
>
|
||||
Hide Special Items
|
||||
</button><h4>Special Items</h4><div ng-if="showInv.special">
|
||||
</button>
|
||||
<h4>Special Items</h4>
|
||||
<div ng-if="showInv.special">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('special', 999)"
|
||||
>
|
||||
Set All to 999
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('special', 0)"
|
||||
>
|
||||
Set All to 0
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('special', undefined)"
|
||||
>
|
||||
Set All to undefined
|
||||
</button><hr><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="item in content.special"
|
||||
class="list-group-item"
|
||||
|
|
@ -114,7 +141,9 @@
|
|||
class="pull-left"
|
||||
:class="'inventory_special_' + item.key"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ item.text() }}</p><input
|
||||
></div>
|
||||
<p>{{ item.text() }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.special[item.key]"
|
||||
|
|
@ -124,7 +153,9 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><hr><div class="row">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
|
|
@ -132,34 +163,43 @@
|
|||
@click="showInv.pets = true"
|
||||
>
|
||||
Show Pets
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.pets"
|
||||
@click="showInv.pets = false"
|
||||
>
|
||||
Hide Pets
|
||||
</button><h4>Pets</h4><div ng-if="showInv.pets">
|
||||
</button>
|
||||
<h4>Pets</h4>
|
||||
<div ng-if="showInv.pets">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('pets', 45)"
|
||||
>
|
||||
Set All to 45
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('pets', 0)"
|
||||
>
|
||||
Set All to 0
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('pets', -1)"
|
||||
>
|
||||
Set All to -1
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('pets', undefined)"
|
||||
>
|
||||
Set All to undefined
|
||||
</button><hr><h5>Drop Pets</h5><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<h5>Drop Pets</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(pet, value) in content.pets"
|
||||
class="list-group-item"
|
||||
|
|
@ -170,14 +210,18 @@
|
|||
class="pull-left"
|
||||
:class="'Pet-' + pet"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ pet }}</p><input
|
||||
></div>
|
||||
<p>{{ pet }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.pets[pet]"
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
</ul><h5>Quest Pets</h5><ul class="list-group">
|
||||
</ul>
|
||||
<h5>Quest Pets</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(pet, value) in content.questPets"
|
||||
class="list-group-item"
|
||||
|
|
@ -188,14 +232,18 @@
|
|||
class="pull-left"
|
||||
:class="'Pet-' + pet"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ pet }}</p><input
|
||||
></div>
|
||||
<p>{{ pet }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.pets[pet]"
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
</ul><h5>Special Pets</h5><ul class="list-group">
|
||||
</ul>
|
||||
<h5>Special Pets</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(pet, value) in content.specialPets"
|
||||
class="list-group-item"
|
||||
|
|
@ -206,14 +254,18 @@
|
|||
class="pull-left"
|
||||
:class="'Pet-' + pet"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ pet }}</p><input
|
||||
></div>
|
||||
<p>{{ pet }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.pets[pet]"
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
</ul><h5>Premium Pets</h5><ul class="list-group">
|
||||
</ul>
|
||||
<h5>Premium Pets</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(pet, value) in content.premiumPets"
|
||||
class="list-group-item"
|
||||
|
|
@ -224,7 +276,9 @@
|
|||
class="pull-left"
|
||||
:class="'Pet-' + pet"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ pet }}</p><input
|
||||
></div>
|
||||
<p>{{ pet }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.pets[pet]"
|
||||
|
|
@ -234,7 +288,9 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><hr><div class="row">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
|
|
@ -242,24 +298,31 @@
|
|||
@click="showInv.mounts = true"
|
||||
>
|
||||
Show Mounts
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.mounts"
|
||||
@click="showInv.mounts = false"
|
||||
>
|
||||
Hide Mounts
|
||||
</button><h4>Mounts</h4><div ng-if="showInv.mounts">
|
||||
</button>
|
||||
<h4>Mounts</h4>
|
||||
<div ng-if="showInv.mounts">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('mounts', true)"
|
||||
>
|
||||
Set all to Owned
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('mounts', undefined)"
|
||||
>
|
||||
Set all to Not Owned
|
||||
</button><hr><h5>Drop Mounts</h5><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<h5>Drop Mounts</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(mount, value) in content.mounts"
|
||||
class="list-group-item"
|
||||
|
|
@ -269,21 +332,30 @@
|
|||
class="pull-left"
|
||||
:class="'Mount_Icon_' + mount"
|
||||
style="margin-right: 10px"
|
||||
></div>{{ mount }}<div class="clearfix">
|
||||
<label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned</label><label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned</label>
|
||||
></div>
|
||||
{{ mount }}
|
||||
<div class="clearfix">
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
</ul><h5>Quest Mounts</h5><ul class="list-group">
|
||||
</ul>
|
||||
<h5>Quest Mounts</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(mount, value) in content.questMounts"
|
||||
class="list-group-item"
|
||||
|
|
@ -293,21 +365,30 @@
|
|||
class="pull-left"
|
||||
:class="'Mount_Icon_' + mount"
|
||||
style="margin-right: 10px"
|
||||
></div>{{ mount }}<div class="clearfix">
|
||||
<label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned</label><label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned</label>
|
||||
></div>
|
||||
{{ mount }}
|
||||
<div class="clearfix">
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
</ul><h5>Special Mounts</h5><ul class="list-group">
|
||||
</ul>
|
||||
<h5>Special Mounts</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(mount, value) in content.specialMounts"
|
||||
class="list-group-item"
|
||||
|
|
@ -317,21 +398,30 @@
|
|||
class="pull-left"
|
||||
:class="'Mount_Icon_' + mount"
|
||||
style="margin-right: 10px"
|
||||
></div>{{ mount }}<div class="clearfix">
|
||||
<label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned</label><label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned</label>
|
||||
></div>
|
||||
{{ mount }}
|
||||
<div class="clearfix">
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
</ul><h5>Premium Mounts</h5><ul class="list-group">
|
||||
</ul>
|
||||
<h5>Premium Mounts</h5>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="(mount, value) in content.premiumMounts"
|
||||
class="list-group-item"
|
||||
|
|
@ -341,24 +431,33 @@
|
|||
class="pull-left"
|
||||
:class="'Mount_Icon_' + mount"
|
||||
style="margin-right: 10px"
|
||||
></div>{{ mount }}<div class="clearfix">
|
||||
<label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned</label><label class="radio-inline"><input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned</label>
|
||||
></div>
|
||||
{{ mount }}
|
||||
<div class="clearfix">
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="true"
|
||||
>Owned
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input
|
||||
type="radio"
|
||||
:name="'mounts-' + mount"
|
||||
ng-model="inv.mounts[mount]"
|
||||
ng-value="undefined"
|
||||
>Not Owned
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><hr><div class="row">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
|
|
@ -366,29 +465,36 @@
|
|||
@click="showInv.hatchingPotions = true"
|
||||
>
|
||||
Show Hatching Potions
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.hatchingPotions"
|
||||
@click="showInv.hatchingPotions = false"
|
||||
>
|
||||
Hide Hatching Potions
|
||||
</button><h4>Hatching Potions</h4><div ng-if="showInv.hatchingPotions">
|
||||
</button>
|
||||
<h4>Hatching Potions</h4>
|
||||
<div ng-if="showInv.hatchingPotions">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('hatchingPotions', 999)"
|
||||
>
|
||||
Set All to 999
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('hatchingPotions', 0)"
|
||||
>
|
||||
Set All to 0
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('hatchingPotions', undefined)"
|
||||
>
|
||||
Set All to undefined
|
||||
</button><hr><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="item in content.hatchingPotions"
|
||||
class="list-group-item"
|
||||
|
|
@ -399,7 +505,9 @@
|
|||
class="pull-left"
|
||||
:class="'Pet_HatchingPotion_' + item.key"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ item.text() }}</p><input
|
||||
></div>
|
||||
<p>{{ item.text() }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.hatchingPotions[item.key]"
|
||||
|
|
@ -409,7 +517,9 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><hr><div class="row">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
|
|
@ -417,29 +527,36 @@
|
|||
@click="showInv.eggs = true"
|
||||
>
|
||||
Show Eggs
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.eggs"
|
||||
@click="showInv.eggs = false"
|
||||
>
|
||||
Hide Eggs
|
||||
</button><h4>Eggs</h4><div ng-if="showInv.eggs">
|
||||
</button>
|
||||
<h4>Eggs</h4>
|
||||
<div ng-if="showInv.eggs">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('eggs', 999)"
|
||||
>
|
||||
Set All to 999
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('eggs', 0)"
|
||||
>
|
||||
Set All to 0
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('eggs', undefined)"
|
||||
>
|
||||
Set All to undefined
|
||||
</button><hr><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="item in content.eggs"
|
||||
class="list-group-item"
|
||||
|
|
@ -450,7 +567,9 @@
|
|||
class="pull-left"
|
||||
:class="'Pet_Egg_' + item.key"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ item.text() }}</p><input
|
||||
></div>
|
||||
<p>{{ item.text() }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.eggs[item.key]"
|
||||
|
|
@ -460,7 +579,9 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><hr><div class="row">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
|
|
@ -468,29 +589,36 @@
|
|||
@click="showInv.food = true"
|
||||
>
|
||||
Show Food
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.food"
|
||||
@click="showInv.food = false"
|
||||
>
|
||||
Hide Food
|
||||
</button><h4>Food</h4><div ng-if="showInv.food">
|
||||
</button>
|
||||
<h4>Food</h4>
|
||||
<div ng-if="showInv.food">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('food', 999)"
|
||||
>
|
||||
Set All to 999
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('food', 0)"
|
||||
>
|
||||
Set All to 0
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('food', undefined)"
|
||||
>
|
||||
Set All to undefined
|
||||
</button><hr><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="item in content.food"
|
||||
class="list-group-item"
|
||||
|
|
@ -501,7 +629,9 @@
|
|||
class="pull-left"
|
||||
:class="'Pet_Food_' + item.key"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ item.text() }}</p><input
|
||||
></div>
|
||||
<p>{{ item.text() }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.food[item.key]"
|
||||
|
|
@ -511,7 +641,9 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div><hr><div class="row">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
|
|
@ -519,29 +651,36 @@
|
|||
@click="showInv.quests = true"
|
||||
>
|
||||
Show Quests
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary pull-right"
|
||||
ng-if="showInv.quests"
|
||||
@click="showInv.quests = false"
|
||||
>
|
||||
Hide Quests
|
||||
</button><h4>Quests</h4><div ng-if="showInv.quests">
|
||||
</button>
|
||||
<h4>Quests</h4>
|
||||
<div ng-if="showInv.quests">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('quests', 999)"
|
||||
>
|
||||
Set All to 999
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('quests', 0)"
|
||||
>
|
||||
Set All to 0
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="setAllItems('quests', undefined)"
|
||||
>
|
||||
Set All to undefined
|
||||
</button><hr><ul class="list-group">
|
||||
</button>
|
||||
<hr>
|
||||
<ul class="list-group">
|
||||
<li
|
||||
v-for="item in content.quests"
|
||||
class="list-group-item"
|
||||
|
|
@ -553,7 +692,9 @@
|
|||
class="pull-left"
|
||||
:class="'inventory_quest_scroll_' + item.key"
|
||||
style="margin-right: 10px"
|
||||
></div><p>{{ item.text() }}</p><input
|
||||
></div>
|
||||
<p>{{ item.text() }}</p>
|
||||
<input
|
||||
class="form-control"
|
||||
type="number"
|
||||
ng-model="inv.quests[item.key]"
|
||||
|
|
@ -565,13 +706,15 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="modal-footer">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="close()"
|
||||
>
|
||||
{{ $t('close') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="close();modifyInventory()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,33 @@
|
|||
<yesterdaily-modal
|
||||
:yester-dailies="yesterDailies"
|
||||
@run-cron="runYesterDailiesAction()"
|
||||
/><armoire-empty /><new-stuff /><death /><low-health /><level-up /><choose-class /><testing /><testingletiant /><rebirth-enabled /><drops-enabled /><contributor /><won-challenge /><ultimate-gear /><streak /><rebirth /><joined-guild /><joined-challenge /><invited-friend /><login-incentives :data="notificationData" /><quest-completed /><quest-invitation /><verify-username /><generic-achievement :data="notificationData" /><just-add-water /><lost-masterclasser /><mind-over-matter />
|
||||
/>
|
||||
<armoire-empty />
|
||||
<new-stuff />
|
||||
<death />
|
||||
<low-health />
|
||||
<level-up />
|
||||
<choose-class />
|
||||
<testing />
|
||||
<testingletiant />
|
||||
<rebirth-enabled />
|
||||
<drops-enabled />
|
||||
<contributor />
|
||||
<won-challenge />
|
||||
<ultimate-gear />
|
||||
<streak />
|
||||
<rebirth />
|
||||
<joined-guild />
|
||||
<joined-challenge />
|
||||
<invited-friend />
|
||||
<login-incentives :data="notificationData" />
|
||||
<quest-completed />
|
||||
<quest-invitation />
|
||||
<verify-username />
|
||||
<generic-achievement :data="notificationData" />
|
||||
<just-add-water />
|
||||
<lost-masterclasser />
|
||||
<mind-over-matter />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,16 +7,21 @@
|
|||
>
|
||||
<h2 class="text-center">
|
||||
Continue with Amazon
|
||||
</h2><div
|
||||
</h2>
|
||||
<div
|
||||
v-if="amazonPayments.loggedIn"
|
||||
id="AmazonPayWallet"
|
||||
style="width: 400px; height: 228px;"
|
||||
></div><template v-if="amazonPayments.loggedIn && amazonPayments.type === 'subscription'">
|
||||
<br><p v-html="$t('amazonPaymentsRecurring')"></p><div
|
||||
></div>
|
||||
<template v-if="amazonPayments.loggedIn && amazonPayments.type === 'subscription'">
|
||||
<br>
|
||||
<p v-html="$t('amazonPaymentsRecurring')"></p>
|
||||
<div
|
||||
id="AmazonPayRecurring"
|
||||
style="width: 400px; height: 140px;"
|
||||
></div>
|
||||
</template><div class="modal-footer">
|
||||
</template>
|
||||
<div class="modal-footer">
|
||||
<div class="text-center">
|
||||
<button
|
||||
v-if="amazonPaymentsCanCheckout"
|
||||
|
|
|
|||
|
|
@ -14,43 +14,50 @@
|
|||
<h2 class="header-invert mx-auto">
|
||||
{{ $t('support') }}
|
||||
</h2>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div
|
||||
class="logo svg-icon mx-auto"
|
||||
v-html="icons.logo"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="d-flex nav justify-content-center">
|
||||
</div>
|
||||
<div class="d-flex nav justify-content-center">
|
||||
<div
|
||||
class="nav-item text-center"
|
||||
:class="{active: selectedPage === 'subscribe'}"
|
||||
@click="selectedPage = 'subscribe'"
|
||||
>
|
||||
{{ $t('subscribe') }}
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="nav-item text-center"
|
||||
:class="{active: selectedPage === 'gems'}"
|
||||
@click="selectedPage = 'gems'"
|
||||
>
|
||||
{{ $t('buyGems') }}
|
||||
</div>
|
||||
</div><div v-show="selectedPage === 'gems'">
|
||||
</div>
|
||||
<div v-show="selectedPage === 'gems'">
|
||||
<div v-if="hasSubscription">
|
||||
<div class="row text-center">
|
||||
<h2 class="mx-auto text-leadin">
|
||||
{{ $t('subscriptionAlreadySubscribedLeadIn') }}
|
||||
</h2>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col-6 offset-3">
|
||||
<p>{{ $t("gemsPurchaseNote") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<h2 class="mx-auto text-leadin">
|
||||
{{ $t('gemBenefitLeadin') }}
|
||||
</h2>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
|
|
@ -60,22 +67,11 @@
|
|||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('gemBenefit1') }}</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
class="svg-icon check mx-auto"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('gemBenefit2') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col">
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
|
|
@ -84,10 +80,14 @@
|
|||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('gemBenefit3') }}</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('gemBenefit2') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
|
|
@ -95,12 +95,27 @@
|
|||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('gemBenefit3') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
class="svg-icon check mx-auto"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('gemBenefit4') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="card-deck gem-deck">
|
||||
</div>
|
||||
<div class="card-deck gem-deck">
|
||||
<div
|
||||
class="card text-center col-3"
|
||||
:class="{active: gemAmount === 20 }"
|
||||
|
|
@ -111,12 +126,16 @@
|
|||
style="'height: 55px; width: 47.5px; margin-top: 1.85em;'"
|
||||
v-html="icons.twentyOneGems"
|
||||
></div>
|
||||
</div><div class="card-body">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="gem-count">
|
||||
20
|
||||
</div><div class="gem-text">
|
||||
</div>
|
||||
<div class="gem-text">
|
||||
{{ $t('gems') }}
|
||||
</div><div class="divider"></div><button
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="gemAmount === 20 ? gemAmount = 0 : gemAmount = 20"
|
||||
>
|
||||
|
|
@ -124,11 +143,13 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<h2 class="mx-auto text-payment">
|
||||
{{ $t('choosePaymentMethod') }}
|
||||
</h2>
|
||||
</div><div class="payments-column">
|
||||
</div>
|
||||
<div class="payments-column">
|
||||
<button
|
||||
class="purchase btn btn-primary payment-button payment-item"
|
||||
@click="showStripe({})"
|
||||
|
|
@ -136,47 +157,57 @@
|
|||
<div
|
||||
class="svg-icon credit-card-icon"
|
||||
v-html="icons.creditCardIcon"
|
||||
></div>{{ $t('card') }}
|
||||
</button><button
|
||||
></div>
|
||||
{{ $t('card') }}
|
||||
</button>
|
||||
<button
|
||||
class="btn payment-item paypal-checkout payment-button"
|
||||
@click="openPaypal(paypalCheckoutLink, 'gems')"
|
||||
>
|
||||
<img
|
||||
|
||||
<img
|
||||
src="~@/assets/images/paypal-checkout.png"
|
||||
:alt="$t('paypal')"
|
||||
>
|
||||
</button><amazon-button
|
||||
</button>
|
||||
<amazon-button
|
||||
class="payment-item"
|
||||
:amazon-data="{type: 'single'}"
|
||||
/>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div
|
||||
class="svg-icon mx-auto"
|
||||
style="'height: 24px; width: 24px;'"
|
||||
v-html="icons.heart"
|
||||
></div>
|
||||
</div><div class="row text-center text-outtro">
|
||||
</div>
|
||||
<div class="row text-center text-outtro">
|
||||
<div class="col-6 offset-3">
|
||||
{{ $t('buyGemsSupportsDevs') }}
|
||||
</div>
|
||||
</div>
|
||||
</div><div v-show="selectedPage === 'subscribe'">
|
||||
</div>
|
||||
<div v-show="selectedPage === 'subscribe'">
|
||||
<div v-if="hasSubscription">
|
||||
<div class="row text-center">
|
||||
<h2 class="mx-auto text-leadin">
|
||||
{{ $t('subscriptionAlreadySubscribedLeadIn') }}
|
||||
</h2>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col-10 offset-1">
|
||||
<p v-html="$t('subscriptionAlreadySubscribed1')"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div v-if="!hasSubscription">
|
||||
</div>
|
||||
<div v-if="!hasSubscription">
|
||||
<div class="row text-center">
|
||||
<h2 class="mx-auto text-leadin">
|
||||
{{ $t('subscriptionBenefitLeadin') }}
|
||||
</h2>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
|
|
@ -186,33 +217,11 @@
|
|||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit1') }}</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
class="svg-icon check mx-auto"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit2') }}</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
class="svg-icon check mx-auto"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit3') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="col">
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
|
|
@ -221,10 +230,40 @@
|
|||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit2') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
class="svg-icon check mx-auto"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit3') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
class="svg-icon check mx-auto"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit4') }}</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
|
|
@ -232,10 +271,12 @@
|
|||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit5') }}</p>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2 offset-1">
|
||||
<div class="d-flex bubble justify-content-center align-items-center">
|
||||
<div
|
||||
|
|
@ -243,103 +284,136 @@
|
|||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="col-md-8 align-self-center">
|
||||
</div>
|
||||
<div class="col-md-8 align-self-center">
|
||||
<p>{{ $t('subscriptionBenefit6') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="card-deck">
|
||||
</div>
|
||||
<div class="card-deck">
|
||||
<div
|
||||
class="card text-center"
|
||||
:class="{active: subscriptionPlan === 'basic_earned'}"
|
||||
>
|
||||
<div class="card-body">
|
||||
<div class="subscription-price">
|
||||
<span class="superscript">$</span><span>5</span><span class="superscript muted">.00</span>
|
||||
</div><div
|
||||
<span class="superscript">$</span>
|
||||
<span>5</span>
|
||||
<span class="superscript muted">.00</span>
|
||||
</div>
|
||||
<div
|
||||
v-once
|
||||
class="small"
|
||||
>
|
||||
{{ $t('everyMonth') }}
|
||||
</div><div class="divider"></div><p
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<p
|
||||
v-markdown="$t('earnGemsMonthly', {cap:25})"
|
||||
class="benefits"
|
||||
></p><div class="spacer"></div><button
|
||||
></p>
|
||||
<div class="spacer"></div>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="subscriptionPlan = 'basic_earned'"
|
||||
>
|
||||
{{ subscriptionPlan === "basic_earned" ? $t('selected') : $t('select') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="card text-center"
|
||||
:class="{active: subscriptionPlan === 'basic_3mo'}"
|
||||
>
|
||||
<div class="card-body">
|
||||
<div class="subscription-price">
|
||||
<span class="superscript">$</span><span>15</span><span class="superscript muted">.00</span>
|
||||
</div><div
|
||||
<span class="superscript">$</span>
|
||||
<span>15</span>
|
||||
<span class="superscript muted">.00</span>
|
||||
</div>
|
||||
<div
|
||||
v-once
|
||||
class="small"
|
||||
>
|
||||
{{ $t('everyXMonths', {interval: 3}) }}
|
||||
</div><div class="divider"></div><p
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<p
|
||||
v-markdown="$t('earnGemsMonthly', {cap:30})"
|
||||
class="benefits"
|
||||
></p><p
|
||||
></p>
|
||||
<p
|
||||
v-markdown="$t('receiveMysticHourglass')"
|
||||
class="benefits"
|
||||
></p><button
|
||||
></p>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="subscriptionPlan = 'basic_3mo'"
|
||||
>
|
||||
{{ subscriptionPlan === "basic_3mo" ? $t('selected') : $t('select') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="card text-center"
|
||||
:class="{active: subscriptionPlan === 'basic_6mo'}"
|
||||
>
|
||||
<div class="card-body">
|
||||
<div class="subscription-price">
|
||||
<span class="superscript">$</span><span>30</span><span class="superscript muted">.00</span>
|
||||
</div><div
|
||||
<span class="superscript">$</span>
|
||||
<span>30</span>
|
||||
<span class="superscript muted">.00</span>
|
||||
</div>
|
||||
<div
|
||||
v-once
|
||||
class="small"
|
||||
>
|
||||
{{ $t('everyXMonths', {interval: 6}) }}
|
||||
</div><div class="divider"></div><p
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<p
|
||||
v-markdown="$t('earnGemsMonthly', {cap:35})"
|
||||
class="benefits"
|
||||
></p><p
|
||||
></p>
|
||||
<p
|
||||
v-markdown="$t('receiveMysticHourglasses', {amount:2})"
|
||||
class="benefits"
|
||||
></p><button
|
||||
></p>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="subscriptionPlan = 'basic_6mo'"
|
||||
>
|
||||
{{ subscriptionPlan === "basic_6mo" ? $t('selected') : $t('select') }}
|
||||
</button>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="card text-center"
|
||||
:class="{active: subscriptionPlan === 'basic_12mo'}"
|
||||
>
|
||||
<div class="card-body">
|
||||
<div class="subscription-price">
|
||||
<span class="superscript">$</span><span>48</span><span class="superscript muted">.00</span>
|
||||
</div><div
|
||||
<span class="superscript">$</span>
|
||||
<span>48</span>
|
||||
<span class="superscript muted">.00</span>
|
||||
</div>
|
||||
<div
|
||||
v-once
|
||||
class="small"
|
||||
>
|
||||
{{ $t('everyYear') }}
|
||||
</div><div class="divider"></div><p
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<p
|
||||
v-markdown="$t('earnGemsMonthly', {cap:45})"
|
||||
class="benefits"
|
||||
></p><p
|
||||
></p>
|
||||
<p
|
||||
v-markdown="$t('receiveMysticHourglasses', {amount:4})"
|
||||
class="benefits"
|
||||
></p><button
|
||||
></p>
|
||||
<button
|
||||
class="btn btn-primary"
|
||||
@click="subscriptionPlan = 'basic_12mo'"
|
||||
>
|
||||
|
|
@ -347,7 +421,8 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="subscriptionPlan"
|
||||
class="row text-center"
|
||||
>
|
||||
|
|
@ -357,12 +432,14 @@
|
|||
>
|
||||
{{ $t('choosePaymentMethod') }}
|
||||
</h2>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<a
|
||||
v-once
|
||||
class="mx-auto"
|
||||
>{{ $t('haveCouponCode') }}</a>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
v-if="subscriptionPlan"
|
||||
class="payments-column"
|
||||
>
|
||||
|
|
@ -373,26 +450,32 @@
|
|||
<div
|
||||
class="svg-icon credit-card-icon"
|
||||
v-html="icons.creditCardIcon"
|
||||
></div>{{ $t('card') }}
|
||||
</button><button
|
||||
></div>
|
||||
{{ $t('card') }}
|
||||
</button>
|
||||
<button
|
||||
class="btn payment-item paypal-checkout payment-button"
|
||||
@click="openPaypal(paypalSubscriptionLink, 'subscription')"
|
||||
>
|
||||
<img
|
||||
|
||||
<img
|
||||
src="~@/assets/images/paypal-checkout.png"
|
||||
:alt="$t('paypal')"
|
||||
>
|
||||
</button><amazon-button
|
||||
</button>
|
||||
<amazon-button
|
||||
class="payment-item"
|
||||
:amazon-data="{type: 'subscription', subscription: subscriptionPlan}"
|
||||
/>
|
||||
</div><div class="row text-center">
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div
|
||||
class="svg-icon mx-auto"
|
||||
style="'height: 24px; width: 24px;'"
|
||||
v-html="icons.heart"
|
||||
></div>
|
||||
</div><div class="row text-center text-outtro">
|
||||
</div>
|
||||
<div class="row text-center text-outtro">
|
||||
<div class="col-6 offset-3">
|
||||
{{ $t('subscribeSupportsDevs') }}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,22 +6,30 @@
|
|||
:modal-class="['modal-hidden-footer']"
|
||||
>
|
||||
<div slot="modal-header">
|
||||
<div class="icon-container warning-container d-flex align-items-center justify-content-center">
|
||||
<div
|
||||
class="icon-container warning-container d-flex align-items-center justify-content-center"
|
||||
>
|
||||
<div
|
||||
v-once
|
||||
class="svg-icon warning"
|
||||
v-html="icons.warning"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 modal-body-col">
|
||||
<h2>{{ config && config.group ? $t('cancelGroupSub') : $t('cancelSub') }}</h2><span class="cancel-text">{{ config && config.group ? $t('confirmCancelGroupPlan') : $t('confirmCancelSub') }}</span><button
|
||||
<h2>{{ config && config.group ? $t('cancelGroupSub') : $t('cancelSub') }}</h2>
|
||||
<span
|
||||
class="cancel-text"
|
||||
>{{ config && config.group ? $t('confirmCancelGroupPlan') : $t('confirmCancelSub') }}</span>
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-danger mt-4 mb-3"
|
||||
@click="close(); cancelSubscription(config)"
|
||||
>
|
||||
{{ $t('cancelSub') }}
|
||||
</button><a
|
||||
</button>
|
||||
<a
|
||||
v-once
|
||||
class="standard-link"
|
||||
@click="close()"
|
||||
|
|
|
|||
|
|
@ -11,18 +11,26 @@
|
|||
class="svg-icon close"
|
||||
@click="close()"
|
||||
v-html="icons.close"
|
||||
></div><div class="icon-container check-container d-flex align-items-center justify-content-center">
|
||||
></div>
|
||||
<div class="icon-container check-container d-flex align-items-center justify-content-center">
|
||||
<div
|
||||
v-once
|
||||
class="svg-icon check"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 modal-body-col">
|
||||
<h2>{{ $t(isGroup ? 'canceledGroupPlan' : 'subCanceledTitle') }}</h2><div class="details-block">
|
||||
<span>{{ $t('subWillBecomeInactive') }}<br><strong>{{ isGroup ? groupDateTerminated : dateTerminated }}</strong></span>
|
||||
</div><span
|
||||
<h2>{{ $t(isGroup ? 'canceledGroupPlan' : 'subCanceledTitle') }}</h2>
|
||||
<div class="details-block">
|
||||
<span>
|
||||
{{ $t('subWillBecomeInactive') }}
|
||||
<br>
|
||||
<strong>{{ isGroup ? groupDateTerminated : dateTerminated }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
<span
|
||||
v-once
|
||||
class="auto-renew small-text"
|
||||
>{{ $t('paymentCanceledDisputes') }}</span>
|
||||
|
|
|
|||
|
|
@ -14,9 +14,16 @@
|
|||
>
|
||||
<h3 class="panel-heading clearfix">
|
||||
<div class="float-right">
|
||||
<span v-if="gift.gems.fromBalance">{{ $t('sendGiftGemsBalance', {number: userLoggedIn.balance * 4}) }}</span><span v-if="!gift.gems.fromBalance">{{ $t('sendGiftCost', {cost: gift.gems.amount / 4}) }}</span>
|
||||
</div>{{ $t('gemsPopoverTitle') }}
|
||||
</h3><div class="panel-body">
|
||||
<span
|
||||
v-if="gift.gems.fromBalance"
|
||||
>{{ $t('sendGiftGemsBalance', {number: userLoggedIn.balance * 4}) }}</span>
|
||||
<span
|
||||
v-if="!gift.gems.fromBalance"
|
||||
>{{ $t('sendGiftCost', {cost: gift.gems.amount / 4}) }}</span>
|
||||
</div>
|
||||
{{ $t('gemsPopoverTitle') }}
|
||||
</h3>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
|
|
@ -29,7 +36,8 @@
|
|||
:max="gift.gems.fromBalance ? userLoggedIn.balance * 4 : 9999"
|
||||
>
|
||||
</div>
|
||||
</div><div class="col-md-6">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="btn-group">
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
|
|
@ -37,7 +45,8 @@
|
|||
@click="gift.gems.fromBalance = true"
|
||||
>
|
||||
{{ $t('sendGiftFromBalance') }}
|
||||
</button><button
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
:class="{active: !gift.gems.fromBalance}"
|
||||
@click="gift.gems.fromBalance = false"
|
||||
|
|
@ -46,7 +55,8 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p
|
||||
class="small"
|
||||
|
|
@ -55,14 +65,16 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div
|
||||
</div>
|
||||
<div
|
||||
class="panel panel-default"
|
||||
:class="gift.type=='subscription' ? 'panel-primary' : 'transparent'"
|
||||
@click="gift.type = 'subscription'"
|
||||
>
|
||||
<h3 class="panel-heading">
|
||||
{{ $t('subscription') }}
|
||||
</h3><div class="panel-body">
|
||||
</h3>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
|
|
@ -71,24 +83,30 @@
|
|||
v-if="block.target !== 'group' && block.canSubscribe === true"
|
||||
class="radio"
|
||||
>
|
||||
<label><input
|
||||
v-model="gift.subscription.key"
|
||||
type="radio"
|
||||
name="subRadio"
|
||||
:value="block.key"
|
||||
>{{ $t('sendGiftSubscription', {price: block.price, months: block.months}) }}</label>
|
||||
<label>
|
||||
<input
|
||||
v-model="gift.subscription.key"
|
||||
type="radio"
|
||||
name="subRadio"
|
||||
:value="block.key"
|
||||
>
|
||||
{{ $t('sendGiftSubscription', {price: block.price, months: block.months}) }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><textarea
|
||||
</div>
|
||||
<textarea
|
||||
v-model="gift.message"
|
||||
class="form-control"
|
||||
rows="3"
|
||||
:placeholder="$t('sendGiftMessagePlaceholder')"
|
||||
></textarea><!--include ../formatting-help-->
|
||||
</div><div class="modal-footer">
|
||||
></textarea>
|
||||
<!--include ../formatting-help-->
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
v-if="fromBal"
|
||||
class="btn btn-primary"
|
||||
|
|
@ -96,7 +114,8 @@
|
|||
@click="sendGift()"
|
||||
>
|
||||
{{ $t("send") }}
|
||||
</button><div
|
||||
</button>
|
||||
<div
|
||||
v-else
|
||||
class="payments-column mx-auto"
|
||||
:class="{'payments-disabled': !gift.subscription.key && gift.gems.amount < 1}"
|
||||
|
|
@ -109,17 +128,21 @@
|
|||
<div
|
||||
class="svg-icon credit-card-icon"
|
||||
v-html="icons.creditCardIcon"
|
||||
></div>{{ $t('card') }}
|
||||
</button><button
|
||||
></div>
|
||||
{{ $t('card') }}
|
||||
</button>
|
||||
<button
|
||||
class="btn payment-item paypal-checkout payment-button"
|
||||
:disabled="!gift.subscription.key && gift.gems.amount < 1"
|
||||
@click="openPaypalGift({gift: gift, giftedTo: userReceivingGems._id, receiverName})"
|
||||
>
|
||||
<img
|
||||
|
||||
<img
|
||||
src="~@/assets/images/paypal-checkout.png"
|
||||
:alt="$t('paypal')"
|
||||
>
|
||||
</button><amazon-button
|
||||
</button>
|
||||
<amazon-button
|
||||
class="payment-item mb-0"
|
||||
:amazon-data="{type: 'single', gift, giftedTo: userReceivingGems._id, receiverName}"
|
||||
:amazon-disabled="!gift.subscription.key && gift.gems.amount < 1"
|
||||
|
|
|
|||
|
|
@ -13,48 +13,75 @@
|
|||
class="svg-icon check"
|
||||
v-html="icons.check"
|
||||
></div>
|
||||
</div><h2>{{ $t(isFromBalance ? 'success' : 'paymentSuccessful') }}</h2>
|
||||
</div><div slot="modal-footer">
|
||||
</div>
|
||||
<h2>{{ $t(isFromBalance ? 'success' : 'paymentSuccessful') }}</h2>
|
||||
</div>
|
||||
<div slot="modal-footer">
|
||||
<div
|
||||
v-once
|
||||
class="small-text"
|
||||
>
|
||||
{{ $t('giftSubscriptionText4') }}
|
||||
</div>
|
||||
</div><div class="row">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12 modal-body-col">
|
||||
<template v-if="paymentData.paymentType === 'gems'">
|
||||
<strong v-once>{{ $t('paymentYouReceived') }}</strong><div class="details-block gems">
|
||||
<strong v-once>{{ $t('paymentYouReceived') }}</strong>
|
||||
<div class="details-block gems">
|
||||
<div
|
||||
v-once
|
||||
class="svg-icon"
|
||||
v-html="icons.gem"
|
||||
></div><span>20</span>
|
||||
></div>
|
||||
<span>20</span>
|
||||
</div>
|
||||
</template><template v-if="paymentData.paymentType === 'gift-gems' || paymentData.paymentType === 'gift-gems-balance'">
|
||||
<span v-html="$t('paymentYouSentGems', {name: paymentData.giftReceiver})"></span><div class="details-block gems">
|
||||
</template>
|
||||
<template
|
||||
v-if="paymentData.paymentType === 'gift-gems' || paymentData.paymentType === 'gift-gems-balance'"
|
||||
>
|
||||
<span v-html="$t('paymentYouSentGems', {name: paymentData.giftReceiver})"></span>
|
||||
<div class="details-block gems">
|
||||
<div
|
||||
v-once
|
||||
class="svg-icon"
|
||||
v-html="icons.gem"
|
||||
></div><span>{{ paymentData.gift.gems.amount }}</span>
|
||||
></div>
|
||||
<span>{{ paymentData.gift.gems.amount }}</span>
|
||||
</div>
|
||||
</template><template v-if="paymentData.paymentType === 'gift-subscription'">
|
||||
<span v-html="$t('paymentYouSentSubscription', {name: paymentData.giftReceiver, months: paymentData.subscription.months})"></span>
|
||||
</template><template v-if="paymentData.paymentType === 'subscription'">
|
||||
<strong v-once>{{ $t('nowSubscribed') }}</strong><div class="details-block">
|
||||
<span v-html="$t('paymentSubBilling', {amount: paymentData.subscription.price, months: paymentData.subscription.months})"></span>
|
||||
</template>
|
||||
<template v-if="paymentData.paymentType === 'gift-subscription'">
|
||||
<span
|
||||
v-html="$t('paymentYouSentSubscription', {name: paymentData.giftReceiver, months: paymentData.subscription.months})"
|
||||
></span>
|
||||
</template>
|
||||
<template v-if="paymentData.paymentType === 'subscription'">
|
||||
<strong v-once>{{ $t('nowSubscribed') }}</strong>
|
||||
<div class="details-block">
|
||||
<span
|
||||
v-html="$t('paymentSubBilling', {amount: paymentData.subscription.price, months: paymentData.subscription.months})"
|
||||
></span>
|
||||
</div>
|
||||
</template><template v-if="paymentData.paymentType === 'groupPlan'">
|
||||
<span v-html="$t(paymentData.newGroup ? 'groupPlanCreated' : 'groupPlanUpgraded', {groupName: paymentData.group.name})"></span><div class="details-block">
|
||||
<span v-html="$t('paymentSubBilling', {amount: groupPlanCost, months: paymentData.subscription.months})"></span>
|
||||
</template>
|
||||
<template v-if="paymentData.paymentType === 'groupPlan'">
|
||||
<span
|
||||
v-html="$t(paymentData.newGroup ? 'groupPlanCreated' : 'groupPlanUpgraded', {groupName: paymentData.group.name})"
|
||||
></span>
|
||||
<div class="details-block">
|
||||
<span
|
||||
v-html="$t('paymentSubBilling', {amount: groupPlanCost, months: paymentData.subscription.months})"
|
||||
></span>
|
||||
</div>
|
||||
</template><template v-if="paymentData.paymentType === 'groupPlan' || paymentData.paymentType === 'subscription'">
|
||||
</template>
|
||||
<template
|
||||
v-if="paymentData.paymentType === 'groupPlan' || paymentData.paymentType === 'subscription'"
|
||||
>
|
||||
<span
|
||||
v-once
|
||||
class="small-text auto-renew"
|
||||
>{{ $t('paymentAutoRenew') }}</span>
|
||||
</template><button
|
||||
</template>
|
||||
<button
|
||||
v-once
|
||||
class="btn btn-primary"
|
||||
@click="close()"
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue