enhance(frontend): add contact page
This commit is contained in:
parent
8c5e564066
commit
ef630df443
4
locales/index.d.ts
vendored
4
locales/index.d.ts
vendored
|
@ -4952,6 +4952,10 @@ export interface Locale extends ILocale {
|
||||||
* フォローの際常に確認する
|
* フォローの際常に確認する
|
||||||
*/
|
*/
|
||||||
"alwaysConfirmFollow": string;
|
"alwaysConfirmFollow": string;
|
||||||
|
/**
|
||||||
|
* お問い合わせ
|
||||||
|
*/
|
||||||
|
"inquiry": string;
|
||||||
"_bubbleGame": {
|
"_bubbleGame": {
|
||||||
/**
|
/**
|
||||||
* 遊び方
|
* 遊び方
|
||||||
|
|
|
@ -1234,6 +1234,7 @@ keepOriginalFilename: "オリジナルのファイル名を保持"
|
||||||
keepOriginalFilenameDescription: "この設定をオフにすると、アップロード時にファイル名が自動でランダム文字列に置き換えられます。"
|
keepOriginalFilenameDescription: "この設定をオフにすると、アップロード時にファイル名が自動でランダム文字列に置き換えられます。"
|
||||||
noDescription: "説明文はありません"
|
noDescription: "説明文はありません"
|
||||||
alwaysConfirmFollow: "フォローの際常に確認する"
|
alwaysConfirmFollow: "フォローの際常に確認する"
|
||||||
|
inquiry: "お問い合わせ"
|
||||||
|
|
||||||
_bubbleGame:
|
_bubbleGame:
|
||||||
howToPlay: "遊び方"
|
howToPlay: "遊び方"
|
||||||
|
|
|
@ -65,6 +65,7 @@ import { i18n } from '@/i18n.js';
|
||||||
import { instance } from '@/instance.js';
|
import { instance } from '@/instance.js';
|
||||||
import MkNumber from '@/components/MkNumber.vue';
|
import MkNumber from '@/components/MkNumber.vue';
|
||||||
import XActiveUsersChart from '@/components/MkVisitorDashboard.ActiveUsersChart.vue';
|
import XActiveUsersChart from '@/components/MkVisitorDashboard.ActiveUsersChart.vue';
|
||||||
|
import { openInstanceMenu } from '@/ui/_common_/common';
|
||||||
|
|
||||||
const stats = ref<Misskey.entities.StatsResponse | null>(null);
|
const stats = ref<Misskey.entities.StatsResponse | null>(null);
|
||||||
|
|
||||||
|
@ -85,43 +86,7 @@ function signup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function showMenu(ev) {
|
function showMenu(ev) {
|
||||||
os.popupMenu([{
|
openInstanceMenu(ev);
|
||||||
text: i18n.ts.instanceInfo,
|
|
||||||
icon: 'ti ti-info-circle',
|
|
||||||
action: () => {
|
|
||||||
os.pageWindow('/about');
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
text: i18n.ts.aboutMisskey,
|
|
||||||
icon: 'ti ti-info-circle',
|
|
||||||
action: () => {
|
|
||||||
os.pageWindow('/about-misskey');
|
|
||||||
},
|
|
||||||
}, { type: 'divider' }, (instance.impressumUrl) ? {
|
|
||||||
text: i18n.ts.impressum,
|
|
||||||
icon: 'ti ti-file-invoice',
|
|
||||||
action: () => {
|
|
||||||
window.open(instance.impressumUrl!, '_blank', 'noopener');
|
|
||||||
},
|
|
||||||
} : undefined, (instance.tosUrl) ? {
|
|
||||||
text: i18n.ts.termsOfService,
|
|
||||||
icon: 'ti ti-notebook',
|
|
||||||
action: () => {
|
|
||||||
window.open(instance.tosUrl!, '_blank', 'noopener');
|
|
||||||
},
|
|
||||||
} : undefined, (instance.privacyPolicyUrl) ? {
|
|
||||||
text: i18n.ts.privacyPolicy,
|
|
||||||
icon: 'ti ti-shield-lock',
|
|
||||||
action: () => {
|
|
||||||
window.open(instance.privacyPolicyUrl!, '_blank', 'noopener');
|
|
||||||
},
|
|
||||||
} : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : { type: 'divider' }, {
|
|
||||||
text: i18n.ts.help,
|
|
||||||
icon: 'ti ti-help-circle',
|
|
||||||
action: () => {
|
|
||||||
window.open('https://misskey-hub.net/docs/for-users/', '_blank', 'noopener');
|
|
||||||
},
|
|
||||||
}], ev.currentTarget ?? ev.target);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function exploreOtherServers() {
|
function exploreOtherServers() {
|
||||||
|
|
24
packages/frontend/src/pages/contact.vue
Normal file
24
packages/frontend/src/pages/contact.vue
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: syuilo and misskey-project
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<MkStickyContainer>
|
||||||
|
<template #header><MkPageHeader/></template>
|
||||||
|
<MkSpacer :contentMax="600" :marginMin="20">
|
||||||
|
<div>{{ instance.maintainerEmail }}</div>
|
||||||
|
</MkSpacer>
|
||||||
|
</MkStickyContainer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { i18n } from '@/i18n.js';
|
||||||
|
import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||||
|
import { instance } from '@/instance.js';
|
||||||
|
|
||||||
|
definePageMetadata(() => ({
|
||||||
|
title: i18n.ts.inquiry,
|
||||||
|
icon: 'ti ti-help-circle',
|
||||||
|
}));
|
||||||
|
</script>
|
|
@ -197,6 +197,9 @@ const routes: RouteDef[] = [{
|
||||||
path: '/about',
|
path: '/about',
|
||||||
component: page(() => import('@/pages/about.vue')),
|
component: page(() => import('@/pages/about.vue')),
|
||||||
hash: 'initialTab',
|
hash: 'initialTab',
|
||||||
|
}, {
|
||||||
|
path: '/contact',
|
||||||
|
component: page(() => import('@/pages/contact.vue')),
|
||||||
}, {
|
}, {
|
||||||
path: '/about-misskey',
|
path: '/about-misskey',
|
||||||
component: page(() => import('@/pages/about-misskey.vue')),
|
component: page(() => import('@/pages/about-misskey.vue')),
|
||||||
|
|
|
@ -79,7 +79,12 @@ export function openInstanceMenu(ev: MouseEvent) {
|
||||||
text: i18n.ts.tools,
|
text: i18n.ts.tools,
|
||||||
icon: 'ti ti-tool',
|
icon: 'ti ti-tool',
|
||||||
children: toolsMenuItems(),
|
children: toolsMenuItems(),
|
||||||
}, { type: 'divider' }, (instance.impressumUrl) ? {
|
}, { type: 'divider' }, {
|
||||||
|
type: 'link',
|
||||||
|
text: i18n.ts.inquiry,
|
||||||
|
icon: 'ti ti-help-circle',
|
||||||
|
to: '/contact',
|
||||||
|
}, (instance.impressumUrl) ? {
|
||||||
text: i18n.ts.impressum,
|
text: i18n.ts.impressum,
|
||||||
icon: 'ti ti-file-invoice',
|
icon: 'ti ti-file-invoice',
|
||||||
action: () => {
|
action: () => {
|
||||||
|
@ -98,8 +103,8 @@ export function openInstanceMenu(ev: MouseEvent) {
|
||||||
window.open(instance.privacyPolicyUrl, '_blank', 'noopener');
|
window.open(instance.privacyPolicyUrl, '_blank', 'noopener');
|
||||||
},
|
},
|
||||||
} : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : { type: 'divider' }, {
|
} : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : { type: 'divider' }, {
|
||||||
text: i18n.ts.help,
|
text: i18n.ts.document,
|
||||||
icon: 'ti ti-help-circle',
|
icon: 'ti ti-bulb',
|
||||||
action: () => {
|
action: () => {
|
||||||
window.open('https://misskey-hub.net/docs/for-users/', '_blank', 'noopener');
|
window.open('https://misskey-hub.net/docs/for-users/', '_blank', 'noopener');
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue