Contact form links (#10187)

* Added links to contact form

* Fixed encoding link. Added link to tavern. Updated copy

* Converted link to cookie link

* Updated domain format

* Updated links

* Added apikey to cookie
This commit is contained in:
Keith Holliday
2018-03-26 14:02:32 -05:00
committed by GitHub
parent f537e8142f
commit e937d1722e
6 changed files with 79 additions and 13 deletions

View File

@@ -133,6 +133,8 @@
.svg-icon(v-html="icons.downIcon") .svg-icon(v-html="icons.downIcon")
.section.row(v-if="sections.helpfulLinks") .section.row(v-if="sections.helpfulLinks")
ul ul
li
a(href='', @click.prevent='modForm()') {{ $t('contactForm') }}
li li
router-link(to='/static/community-guidelines', v-once) {{ $t('communityGuidelinesLink') }} router-link(to='/static/community-guidelines', v-once) {{ $t('communityGuidelinesLink') }}
li li
@@ -510,12 +512,12 @@
padding: 1em; padding: 1em;
cursor: pointer; cursor: pointer;
} }
</style> </style>
<script> <script>
import debounce from 'lodash/debounce'; import debounce from 'lodash/debounce';
import { mapState } from 'client/libs/store'; import { mapState } from 'client/libs/store';
import { goToModForm } from 'client/libs/modform';
import { TAVERN_ID } from '../../../common/script/constants'; import { TAVERN_ID } from '../../../common/script/constants';
import chatMessage from '../chat/chatMessages'; import chatMessage from '../chat/chatMessages';
@@ -705,6 +707,9 @@ export default {
this.group = await this.$store.dispatch('guilds:getGroup', {groupId: TAVERN_ID}); this.group = await this.$store.dispatch('guilds:getGroup', {groupId: TAVERN_ID});
}, },
methods: { methods: {
modForm () {
goToModForm(this.user);
},
// https://medium.com/@_jh3y/how-to-where-s-the-caret-getting-the-xy-position-of-the-caret-a24ba372990a // https://medium.com/@_jh3y/how-to-where-s-the-caret-getting-the-xy-position-of-the-caret-a24ba372990a
getCoord (e, text) { getCoord (e, text) {
let carPos = text.selectionEnd; let carPos = text.selectionEnd;

View File

@@ -55,6 +55,7 @@ div
a.dropdown-item(href="https://trello.com/c/odmhIqyW/440-read-first-table-of-contents", target='_blank') {{ $t('requestAF') }} a.dropdown-item(href="https://trello.com/c/odmhIqyW/440-read-first-table-of-contents", target='_blank') {{ $t('requestAF') }}
a.dropdown-item(href="http://habitica.wikia.com/wiki/Contributing_to_Habitica", target='_blank') {{ $t('contributing') }} a.dropdown-item(href="http://habitica.wikia.com/wiki/Contributing_to_Habitica", target='_blank') {{ $t('contributing') }}
a.dropdown-item(href="http://habitica.wikia.com/wiki/Habitica_Wiki", target='_blank') {{ $t('wiki') }} a.dropdown-item(href="http://habitica.wikia.com/wiki/Habitica_Wiki", target='_blank') {{ $t('wiki') }}
a.dropdown-item(@click='modForm()') {{ $t('contactForm') }}
.user-menu.d-flex.align-items-center .user-menu.d-flex.align-items-center
.item-with-icon(v-if="userHourglasses > 0") .item-with-icon(v-if="userHourglasses > 0")
.top-menu-icon.svg-icon(v-html="icons.hourglasses", v-b-tooltip.hover.bottom="$t('mysticHourglassesTooltip')") .top-menu-icon.svg-icon(v-html="icons.hourglasses", v-b-tooltip.hover.bottom="$t('mysticHourglassesTooltip')")
@@ -283,11 +284,14 @@ div
<script> <script>
import { mapState, mapGetters } from 'client/libs/store'; import { mapState, mapGetters } from 'client/libs/store';
import * as Analytics from 'client/libs/analytics'; import * as Analytics from 'client/libs/analytics';
import { goToModForm } from 'client/libs/modform';
import gemIcon from 'assets/svg/gem.svg'; import gemIcon from 'assets/svg/gem.svg';
import goldIcon from 'assets/svg/gold.svg'; import goldIcon from 'assets/svg/gold.svg';
import syncIcon from 'assets/svg/sync.svg'; import syncIcon from 'assets/svg/sync.svg';
import svgHourglasses from 'assets/svg/hourglass.svg'; import svgHourglasses from 'assets/svg/hourglass.svg';
import logo from 'assets/svg/logo.svg'; import logo from 'assets/svg/logo.svg';
import InboxModal from '../userMenu/inbox.vue'; import InboxModal from '../userMenu/inbox.vue';
import notificationMenu from './notificationsDropdown'; import notificationMenu from './notificationsDropdown';
import creatorIntro from '../creatorIntro'; import creatorIntro from '../creatorIntro';
@@ -328,6 +332,9 @@ export default {
this.getUserGroupPlans(); this.getUserGroupPlans();
}, },
methods: { methods: {
modForm () {
goToModForm(this.user);
},
toggleUserDropdown () { toggleUserDropdown () {
this.isUserDropdownOpen = !this.isUserDropdownOpen; this.isUserDropdownOpen = !this.isUserDropdownOpen;
}, },

View File

@@ -14,10 +14,11 @@
a(target='_blank', href='/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac') Report a Bug guild a(target='_blank', href='/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac') Report a Bug guild
| &nbsp;or&nbsp; | &nbsp;or&nbsp;
a(target='_blank', href='https://github.com/HabitRPG/habitica/issues?q=is%3Aopen') GitHub a(target='_blank', href='https://github.com/HabitRPG/habitica/issues?q=is%3Aopen') GitHub
br span(v-if='this.user')
| {{ $t('reportCommunityIssues') }} br
| &colon;&nbsp; | {{ $t('reportCommunityIssues') }}
a(href='mailto:leslie@habitica.com') leslie&commat;habitica&period;com | &colon;&nbsp;
a(@click.prevent='modForm()', href='') {{ $t('contactForm') }}
br br
| {{ $t('subscriptionPaymentIssues') }} | {{ $t('subscriptionPaymentIssues') }}
| &colon;&nbsp; | &colon;&nbsp;
@@ -29,13 +30,27 @@
br br
| {{ $t('businessInquiries') }} | {{ $t('businessInquiries') }}
| &colon;&nbsp; | &colon;&nbsp;
a(href='mailto:vicky@habitica.com') vicky&commat;habitica&period;com a(href='mailto:admin@habitica.com') admin@habitica.com
br br
| {{ $t('merchandiseInquiries') }} | {{ $t('merchandiseInquiries') }}
| &colon;&nbsp; | &colon;&nbsp;
a(href='mailto:store@habitica.com') store&commat;habitica&period;com a(href='mailto:admin@habitica.com') admin&commat;habitica&period;com
br
| {{ $t('marketingInquiries') }}
| &colon;&nbsp;
a(href='mailto:leslie@habitica.com') leslie&commat;habitica&period;com
</template> </template>
<script>
import { mapState } from 'client/libs/store';
import { goToModForm } from 'client/libs/modform';
export default {
computed: {
...mapState({
user: 'user.data',
}),
},
methods: {
modForm () {
goToModForm(this.user);
},
},
};
</script>

View File

@@ -0,0 +1,38 @@
// @TODO: I have abstracted this in another PR. Use that function when merged
function getApiKey () {
let AUTH_SETTINGS = localStorage.getItem('habit-mobile-settings');
if (AUTH_SETTINGS) {
AUTH_SETTINGS = JSON.parse(AUTH_SETTINGS);
if (AUTH_SETTINGS.auth && AUTH_SETTINGS.auth.apiId && AUTH_SETTINGS.auth.apiToken) {
return AUTH_SETTINGS.auth.apiToken;
}
}
}
export function goToModForm (user) {
if (!user) return;
const apiKey = getApiKey();
if (!apiKey) return;
const tenMins = 10 * 60 * 1000;
let dateTime;
dateTime = new Date();
dateTime.setTime(dateTime.getTime() + tenMins);
const expires = `expires=${dateTime.toGMTString()}`;
const email = encodeURIComponent(user.auth.local.email);
const userData = {
email,
profileName: user.profile.name,
uuid: user._id,
apiKey,
};
document.cookie = `habiticauserdata=${JSON.stringify(userData)};${expires};domain=.habitica.com;path=/`;
window.location.href = 'http://contact.habitica.com';
}

View File

@@ -221,7 +221,7 @@
"reportCommunityIssues": "Report Community Issues", "reportCommunityIssues": "Report Community Issues",
"subscriptionPaymentIssues": "Subscription and Payment Issues", "subscriptionPaymentIssues": "Subscription and Payment Issues",
"generalQuestionsSite": "General Questions about the Site", "generalQuestionsSite": "General Questions about the Site",
"businessInquiries": "Business Inquiries", "businessInquiries": "Business/Marketing Inquiries",
"merchandiseInquiries": "Physical Merchandise (T-Shirts, Stickers) Inquiries", "merchandiseInquiries": "Physical Merchandise (T-Shirts, Stickers) Inquiries",
"marketingInquiries": "Marketing/Social Media Inquiries", "marketingInquiries": "Marketing/Social Media Inquiries",
"tweet": "Tweet", "tweet": "Tweet",

View File

@@ -293,5 +293,6 @@
"letsgo": "Let's Go!", "letsgo": "Let's Go!",
"selected": "Selected", "selected": "Selected",
"howManyToBuy": "How many would you like to buy?", "howManyToBuy": "How many would you like to buy?",
"habiticaHasUpdated": "There is a new Habitica update. Refresh to get the latest version!" "habiticaHasUpdated": "There is a new Habitica update. Refresh to get the latest version!",
"contactForm": "Contact the Moderation Team"
} }