diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2019-05-14 02:57:04 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-05-14 02:57:04 +0900 |
| commit | 7c03d37caa3107c4e21f60563a6f19979d0a509b (patch) | |
| tree | e3861d7d057c5458091df9739fb1e5d11b6d1e16 /src | |
| parent | Fix: user menu (#4845) (#4920) (diff) | |
| download | sharkey-7c03d37caa3107c4e21f60563a6f19979d0a509b.tar.gz sharkey-7c03d37caa3107c4e21f60563a6f19979d0a509b.tar.bz2 sharkey-7c03d37caa3107c4e21f60563a6f19979d0a509b.zip | |
Add ToSUrl, repositoryUrl, feedbackUrl (#4921)
* Add ToSUrl, repositoryUrl, feedbackUrl
* modify nodeinfo
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/app/admin/views/instance.vue | 12 | ||||
| -rw-r--r-- | src/client/app/common/views/components/nav.vue | 17 | ||||
| -rw-r--r-- | src/client/app/common/views/components/signup.vue | 10 | ||||
| -rw-r--r-- | src/models/entities/meta.ts | 20 | ||||
| -rw-r--r-- | src/server/api/endpoints/admin/update-meta.ts | 33 | ||||
| -rw-r--r-- | src/server/api/endpoints/meta.ts | 3 | ||||
| -rw-r--r-- | src/server/nodeinfo.ts | 6 |
7 files changed, 97 insertions, 4 deletions
diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue index d81edc8fe6..3bbe6579d3 100644 --- a/src/client/app/admin/views/instance.vue +++ b/src/client/app/admin/views/instance.vue @@ -10,6 +10,9 @@ <ui-input v-model="mascotImageUrl"><template #icon><fa icon="link"/></template>{{ $t('logo-url') }}</ui-input> <ui-input v-model="bannerUrl"><template #icon><fa icon="link"/></template>{{ $t('banner-url') }}</ui-input> <ui-input v-model="errorImageUrl"><template #icon><fa icon="link"/></template>{{ $t('error-image-url') }}</ui-input> + <ui-input v-model="ToSUrl"><template #icon><fa icon="link"/></template>{{ $t('tos-url') }}</ui-input> + <ui-input v-model="repositoryUrl"><template #icon><fa icon="link"/></template>{{ $t('repository-url') }}</ui-input> + <ui-input v-model="feedbackUrl"><template #icon><fa icon="link"/></template>{{ $t('feedback-url') }}</ui-input> <ui-input v-model="languages"><template #icon><fa icon="language"/></template>{{ $t('languages') }}<template #desc>{{ $t('languages-desc') }}</template></ui-input> </section> <section class="fit-bottom"> @@ -156,6 +159,9 @@ export default Vue.extend({ host: toUnicode(host), maintainerName: null, maintainerEmail: null, + ToSUrl: null, + repositoryUrl: "https://github.com/syuilo/misskey", + feedbackUrl: null, disableRegistration: false, disableLocalTimeline: false, disableGlobalTimeline: false, @@ -207,6 +213,9 @@ export default Vue.extend({ this.$root.getMeta(true).then(meta => { this.maintainerName = meta.maintainerName; this.maintainerEmail = meta.maintainerEmail; + this.ToSUrl = meta.ToSUrl; + this.repositoryUrl = meta.repositoryUrl; + this.feedbackUrl = meta.feedbackUrl; this.disableRegistration = meta.disableRegistration; this.disableLocalTimeline = meta.disableLocalTimeline; this.disableGlobalTimeline = meta.disableGlobalTimeline; @@ -268,6 +277,9 @@ export default Vue.extend({ this.$root.api('admin/update-meta', { maintainerName: this.maintainerName, maintainerEmail: this.maintainerEmail, + ToSUrl: this.ToSUrl, + repositoryUrl: this.repositoryUrl, + feedbackUrl: this.feedbackUrl, disableRegistration: this.disableRegistration, disableLocalTimeline: this.disableLocalTimeline, disableGlobalTimeline: this.disableGlobalTimeline, diff --git a/src/client/app/common/views/components/nav.vue b/src/client/app/common/views/components/nav.vue index 9d4e7091b5..da26fd1b8e 100644 --- a/src/client/app/common/views/components/nav.vue +++ b/src/client/app/common/views/components/nav.vue @@ -1,12 +1,16 @@ <template> <span class="mk-nav"> <a :href="aboutUrl">{{ $t('about') }}</a> + <template v-if="ToSUrl !== null"> + <i>・</i> + <a :href="ToSUrl" target="_blank">{{ $t('tos') }}</a> + </template> <i>・</i> <a :href="repositoryUrl" rel="noopener" target="_blank">{{ $t('repository') }}</a> <i>・</i> <a :href="feedbackUrl" rel="noopener" target="_blank">{{ $t('feedback') }}</a> <i>・</i> - <a href="/dev">{{ $t('develop') }}</a> + <a href="/dev" target="_blank">{{ $t('develop') }}</a> </span> </template> @@ -21,8 +25,17 @@ export default Vue.extend({ return { aboutUrl: `/docs/${lang}/about`, repositoryUrl: 'https://github.com/syuilo/misskey', - feedbackUrl: 'https://github.com/syuilo/misskey/issues/new' + feedbackUrl: 'https://github.com/syuilo/misskey/issues/new', + ToSUrl: null } + }, + + mounted() { + this.$root.getMeta(true).then(meta => { + this.repositoryUrl = meta.repositoryUrl; + this.feedbackUrl = meta.feedbackUrl; + this.ToSUrl = meta.ToSUrl; + }) } }); </script> diff --git a/src/client/app/common/views/components/signup.vue b/src/client/app/common/views/components/signup.vue index 9b1df79771..bf8e5d25b8 100644 --- a/src/client/app/common/views/components/signup.vue +++ b/src/client/app/common/views/components/signup.vue @@ -37,8 +37,13 @@ <p v-if="passwordRetypeState == 'not-match'" style="color:#FF1161"><fa icon="exclamation-triangle" fixed-width/> {{ $t('password-not-matched') }}</p> </template> </ui-input> + <ui-switch v-model="ToSAgreement" v-if="meta.ToSUrl"> + <i18n path="agree-to"> + <a :href="meta.ToSUrl" target="_blank">{{ $t('tos') }}</a> + </i18n> + </ui-switch> <div v-if="meta.enableRecaptcha" class="g-recaptcha" :data-sitekey="meta.recaptchaSiteKey" style="margin: 16px 0;"></div> - <ui-button type="submit">{{ $t('create') }}</ui-button> + <ui-button type="submit" :disabled="!(meta.ToSUrl ? ToSAgreement : true)">{{ $t('create') }}</ui-button> </template> </form> </template> @@ -64,7 +69,8 @@ export default Vue.extend({ usernameState: null, passwordStrength: '', passwordRetypeState: null, - meta: null + meta: {}, + ToSAgreement: false } }, diff --git a/src/models/entities/meta.ts b/src/models/entities/meta.ts index 2c36b8333f..c3797a9ed6 100644 --- a/src/models/entities/meta.ts +++ b/src/models/entities/meta.ts @@ -268,4 +268,24 @@ export class Meta { nullable: true }) public discordClientSecret: string | null; + + @Column('varchar', { + length: 512, + nullable: true + }) + public ToSUrl: string | null; + + @Column('varchar', { + length: 512, + default: 'https://github.com/syuilo/misskey', + nullable: false + }) + public repositoryUrl: string; + + @Column('varchar', { + length: 512, + default: 'https://github.com/syuilo/misskey/issues/new', + nullable: true + }) + public feedbackUrl: string | null; } diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index 8a2019fcc1..e34840e907 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -330,6 +330,27 @@ export const meta = { 'ja-JP': 'ServiceWorkerのVAPIDキーペアの秘密鍵' } }, + + ToSUrl: { + validator: $.optional.nullable.str, + desc: { + 'ja-JP': '利用規約のURL' + } + }, + + repositoryUrl: { + validator: $.optional.str, + desc: { + 'ja-JP': 'リポジトリのURL' + } + }, + + feedbackUrl: { + validator: $.optional.str, + desc: { + 'ja-JP': 'フィードバックのURL' + } + } } }; @@ -516,6 +537,18 @@ export default define(meta, async (ps) => { set.swPrivateKey = ps.swPrivateKey; } + if (ps.ToSUrl !== undefined) { + set.ToSUrl = ps.ToSUrl; + } + + if (ps.repositoryUrl !== undefined) { + set.repositoryUrl = ps.repositoryUrl; + } + + if (ps.feedbackUrl !== undefined) { + set.feedbackUrl = ps.feedbackUrl; + } + await getConnection().transaction(async transactionalEntityManager => { const meta = await transactionalEntityManager.findOne(Meta, { order: { diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index 5667e7fbb4..e29edae266 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -106,6 +106,9 @@ export default define(meta, async (ps, me) => { uri: config.url, description: instance.description, langs: instance.langs, + ToSUrl: instance.ToSUrl, + repositoryUrl: instance.repositoryUrl, + feedbackUrl: instance.feedbackUrl, secure: config.https != null, machine: os.hostname(), diff --git a/src/server/nodeinfo.ts b/src/server/nodeinfo.ts index d3ad90fab5..da1e4e7b5e 100644 --- a/src/server/nodeinfo.ts +++ b/src/server/nodeinfo.ts @@ -26,6 +26,9 @@ const nodeinfo2 = async () => { maintainerName, maintainerEmail, langs, + ToSUrl, + repositoryUrl, + feedbackUrl, announcements, disableRegistration, disableLocalTimeline, @@ -77,6 +80,9 @@ const nodeinfo2 = async () => { email: maintainerEmail }, langs, + ToSUrl, + repositoryUrl, + feedbackUrl, announcements, disableRegistration, disableLocalTimeline, |