* Update ja-JP.yml * Create 404.vue * Update script.ts * Update script.ts * Update script.ts * Update script.ts * Update script.ts * Update script.ts * Update 404.vue * Update meta.ts * Update instance.vue * Update update-meta.ts
This commit is contained in:
parent
638d81b66e
commit
08142ead67
11 changed files with 91 additions and 2 deletions
|
@ -580,6 +580,9 @@ common/views/widgets/tips.vue:
|
||||||
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
tips-line24: "Misskeyは2014年にサービスを開始しました"
|
||||||
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
|
||||||
|
|
||||||
|
common/views/pages/404.vue:
|
||||||
|
page-not-found: "ページが見つかりませんでした"
|
||||||
|
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "{}としてサインイン中"
|
signed-in-as: "{}としてサインイン中"
|
||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
|
|
|
@ -9,6 +9,7 @@ import './style.styl';
|
||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
|
import NotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
init(launch => {
|
init(launch => {
|
||||||
document.title = 'Admin';
|
document.title = 'Admin';
|
||||||
|
@ -19,6 +20,7 @@ init(launch => {
|
||||||
base: '/admin/',
|
base: '/admin/',
|
||||||
routes: [
|
routes: [
|
||||||
{ path: '/', component: Index },
|
{ path: '/', component: Index },
|
||||||
|
{ path: '*', component: NotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
|
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
|
||||||
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
|
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
|
||||||
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
|
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
|
||||||
|
<ui-input v-model="errorImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('error-image-url') }}</ui-input>
|
||||||
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
||||||
</section>
|
</section>
|
||||||
<section class="fit-bottom">
|
<section class="fit-bottom">
|
||||||
|
@ -132,6 +133,7 @@ export default Vue.extend({
|
||||||
disableRegistration: false,
|
disableRegistration: false,
|
||||||
disableLocalTimeline: false,
|
disableLocalTimeline: false,
|
||||||
bannerUrl: null,
|
bannerUrl: null,
|
||||||
|
errorImageUrl: null,
|
||||||
name: null,
|
name: null,
|
||||||
description: null,
|
description: null,
|
||||||
languages: null,
|
languages: null,
|
||||||
|
@ -175,6 +177,7 @@ export default Vue.extend({
|
||||||
this.disableRegistration = meta.disableRegistration;
|
this.disableRegistration = meta.disableRegistration;
|
||||||
this.disableLocalTimeline = meta.disableLocalTimeline;
|
this.disableLocalTimeline = meta.disableLocalTimeline;
|
||||||
this.bannerUrl = meta.bannerUrl;
|
this.bannerUrl = meta.bannerUrl;
|
||||||
|
this.errorImageUrl = meta.errorImageUrl;
|
||||||
this.name = meta.name;
|
this.name = meta.name;
|
||||||
this.description = meta.description;
|
this.description = meta.description;
|
||||||
this.languages = meta.langs.join(' ');
|
this.languages = meta.langs.join(' ');
|
||||||
|
@ -228,6 +231,7 @@ export default Vue.extend({
|
||||||
disableRegistration: this.disableRegistration,
|
disableRegistration: this.disableRegistration,
|
||||||
disableLocalTimeline: this.disableLocalTimeline,
|
disableLocalTimeline: this.disableLocalTimeline,
|
||||||
bannerUrl: this.bannerUrl,
|
bannerUrl: this.bannerUrl,
|
||||||
|
errorImageUrl: this.errorImageUrl,
|
||||||
name: this.name,
|
name: this.name,
|
||||||
description: this.description,
|
description: this.description,
|
||||||
langs: this.languages.split(' '),
|
langs: this.languages.split(' '),
|
||||||
|
|
|
@ -9,6 +9,7 @@ import './style.styl';
|
||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
|
import NotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init
|
* init
|
||||||
|
@ -20,6 +21,7 @@ init(launch => {
|
||||||
base: '/auth/',
|
base: '/auth/',
|
||||||
routes: [
|
routes: [
|
||||||
{ path: '/:token', component: Index },
|
{ path: '/:token', component: Index },
|
||||||
|
{ path: '*', component: NotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
62
src/client/app/common/views/pages/404.vue
Normal file
62
src/client/app/common/views/pages/404.vue
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
<template>
|
||||||
|
<figure>
|
||||||
|
<img :src="src" alt="">
|
||||||
|
<figcaption>
|
||||||
|
<h1><span>404</span></h1>
|
||||||
|
<p><span>{{ $t('page-not-found') }}</span></p>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue'
|
||||||
|
import i18n from '../../../i18n';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
i18n: i18n('common/views/pages/404.vue'),
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
src: '/assets/error.jpg'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.$root.getMeta().then(meta => {
|
||||||
|
if (meta.errorImageUrl)
|
||||||
|
this.src = meta.errorImageUrl;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
figure
|
||||||
|
align-items center
|
||||||
|
bottom 0
|
||||||
|
display flex
|
||||||
|
justify-content center
|
||||||
|
left 0
|
||||||
|
margin auto
|
||||||
|
position fixed
|
||||||
|
right 0
|
||||||
|
top 0
|
||||||
|
|
||||||
|
figcaption
|
||||||
|
margin 8px
|
||||||
|
|
||||||
|
h1,
|
||||||
|
p
|
||||||
|
color var(--text)
|
||||||
|
display flex
|
||||||
|
flex-flow column
|
||||||
|
|
||||||
|
*
|
||||||
|
position relative
|
||||||
|
width 100%
|
||||||
|
|
||||||
|
@media (max-width: 767px)
|
||||||
|
figure
|
||||||
|
flex-flow column
|
||||||
|
|
||||||
|
figcaption
|
||||||
|
text-align center
|
||||||
|
</style>
|
|
@ -28,6 +28,7 @@ import MkTag from './views/pages/tag.vue';
|
||||||
import MkReversi from './views/pages/games/reversi.vue';
|
import MkReversi from './views/pages/games/reversi.vue';
|
||||||
import MkShare from './views/pages/share.vue';
|
import MkShare from './views/pages/share.vue';
|
||||||
import MkFollow from '../common/views/pages/follow.vue';
|
import MkFollow from '../common/views/pages/follow.vue';
|
||||||
|
import MkNotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
import Ctx from './views/components/context-menu.vue';
|
import Ctx from './views/components/context-menu.vue';
|
||||||
import PostFormWindow from './views/components/post-form-window.vue';
|
import PostFormWindow from './views/components/post-form-window.vue';
|
||||||
|
@ -148,7 +149,8 @@ init(async (launch) => {
|
||||||
{ path: '/@:user/following', name: 'userFollowing', component: MkUserFollowingOrFollowers },
|
{ path: '/@:user/following', name: 'userFollowing', component: MkUserFollowingOrFollowers },
|
||||||
{ path: '/@:user/followers', name: 'userFollowers', component: MkUserFollowingOrFollowers },
|
{ path: '/@:user/followers', name: 'userFollowers', component: MkUserFollowingOrFollowers },
|
||||||
{ path: '/notes/:note', name: 'note', component: MkNote },
|
{ path: '/notes/:note', name: 'note', component: MkNote },
|
||||||
{ path: '/authorize-follow', component: MkFollow }
|
{ path: '/authorize-follow', component: MkFollow },
|
||||||
|
{ path: '*', component: MkNotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ import Apps from './views/apps.vue';
|
||||||
import AppNew from './views/new-app.vue';
|
import AppNew from './views/new-app.vue';
|
||||||
import App from './views/app.vue';
|
import App from './views/app.vue';
|
||||||
import ui from './views/ui.vue';
|
import ui from './views/ui.vue';
|
||||||
|
import NotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
Vue.use(BootstrapVue);
|
Vue.use(BootstrapVue);
|
||||||
|
|
||||||
|
@ -36,6 +37,7 @@ init(launch => {
|
||||||
{ path: '/apps', component: Apps },
|
{ path: '/apps', component: Apps },
|
||||||
{ path: '/app/new', component: AppNew },
|
{ path: '/app/new', component: AppNew },
|
||||||
{ path: '/app/:id', component: App },
|
{ path: '/app/:id', component: App },
|
||||||
|
{ path: '*', component: NotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ import MkReversi from './views/pages/games/reversi.vue';
|
||||||
import MkTag from './views/pages/tag.vue';
|
import MkTag from './views/pages/tag.vue';
|
||||||
import MkShare from './views/pages/share.vue';
|
import MkShare from './views/pages/share.vue';
|
||||||
import MkFollow from '../common/views/pages/follow.vue';
|
import MkFollow from '../common/views/pages/follow.vue';
|
||||||
|
import MkNotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
import PostForm from './views/components/post-form-dialog.vue';
|
import PostForm from './views/components/post-form-dialog.vue';
|
||||||
import FileChooser from './views/components/drive-file-chooser.vue';
|
import FileChooser from './views/components/drive-file-chooser.vue';
|
||||||
|
@ -138,7 +139,8 @@ init((launch) => {
|
||||||
{ path: '/@:user/followers', component: MkFollowers },
|
{ path: '/@:user/followers', component: MkFollowers },
|
||||||
{ path: '/@:user/following', component: MkFollowing },
|
{ path: '/@:user/following', component: MkFollowing },
|
||||||
{ path: '/notes/:note', component: MkNote },
|
{ path: '/notes/:note', component: MkNote },
|
||||||
{ path: '/authorize-follow', component: MkFollow }
|
{ path: '/authorize-follow', component: MkFollow },
|
||||||
|
{ path: '*', component: MkNotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import './style.styl';
|
||||||
|
|
||||||
import init from '../init';
|
import init from '../init';
|
||||||
import Index from './views/index.vue';
|
import Index from './views/index.vue';
|
||||||
|
import NotFound from '../common/views/pages/404.vue';
|
||||||
|
|
||||||
init(launch => {
|
init(launch => {
|
||||||
document.title = 'Misskey';
|
document.title = 'Misskey';
|
||||||
|
@ -15,6 +16,7 @@ init(launch => {
|
||||||
base: '/test/',
|
base: '/test/',
|
||||||
routes: [
|
routes: [
|
||||||
{ path: '/', component: Index },
|
{ path: '/', component: Index },
|
||||||
|
{ path: '*', component: NotFound }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,7 @@ export type IMeta = {
|
||||||
disableLocalTimeline?: boolean;
|
disableLocalTimeline?: boolean;
|
||||||
hidedTags?: string[];
|
hidedTags?: string[];
|
||||||
bannerUrl?: string;
|
bannerUrl?: string;
|
||||||
|
errorImageUrl?: string;
|
||||||
|
|
||||||
cacheRemoteFiles?: boolean;
|
cacheRemoteFiles?: boolean;
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,13 @@ export const meta = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
errorImageUrl: {
|
||||||
|
validator: $.str.optional.nullable,
|
||||||
|
desc: {
|
||||||
|
'ja-JP': 'インスタンスのエラー画像URL'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
name: {
|
name: {
|
||||||
validator: $.str.optional.nullable,
|
validator: $.str.optional.nullable,
|
||||||
desc: {
|
desc: {
|
||||||
|
|
Loading…
Reference in a new issue